Cámara ITS-in-a-Box

Android Camera Image Test Suite (ITS) es parte del Verificador de Android Compatibility Test Suite (CTS) e incluye pruebas que verifican el contenido de la imagen. CTS Verifier admite la automatización de pruebas ITS con Camera ITS-in-a-box; La compatibilidad con pruebas manuales cubre todos los factores de forma de dispositivos Android.

ITS-in-a-box incluye los siguientes beneficios:

  • Automatización. No se necesita intervención humana durante la prueba.
  • Fácil solución de problemas. La coherencia del entorno de prueba genera menos errores de configuración y aumenta la reproducibilidad.
  • Eficiencia. La capacidad de reintentar para una cámara/escena individual mejora la eficiencia de la ejecución de la prueba.

Empezar

ITS-in-a-box consta de una caja de plástico cortada con láser a partir de dibujos de diseño asistido por computadora (CAD), una tableta gráfica y un dispositivo bajo prueba (DUT). Puede utilizar el ITS-in-a-box de campo de visión amplio (WFoV), que es capaz de probar cámaras WFoV (FoV > 90 grados) y RFoV (FoV < 90 grados), o el campo de visión normal. -ver (RFoV) ITS-in-a-box.

Para comenzar con la cámara ITS-in-a-box:

  1. Compre o cree un ITS-in-a-box WFoV o RFoV .
  2. Configurar una tableta con el software Camera ITS.
  3. Ejecutar pruebas .
  4. Obtenga resultados del DUT.

Configurar la tableta

Esta sección proporciona instrucciones paso a paso para configurar una tableta para usar con las pruebas Camera ITS ubicadas en el directorio CameraITS . Estas instrucciones utilizan un Pixel C como tableta de ejemplo. Para obtener información sobre los requisitos y recomendaciones de la tableta, consulte Requisitos de la tableta .

Nota: Los scripts de Camera ITS Python configuran automáticamente las siguientes opciones en la tableta:
Configuración > Pantalla > Dormir > Después de 30 minutos de inactividad
Brillo adaptativo > APAGADO

  1. Cargue la tableta y enciéndala. Si se le solicita que configure una cuenta, omítala (La cámara ITS no requiere ninguna cuenta vinculada con la tableta).
  2. Actualice la tableta a Android 7.0 o superior. Android 6.x y versiones inferiores no son compatibles con Camera ITS.
  3. Habilitar el modo desarrollador .
  4. Regrese a Configuración y seleccione Opciones de desarrollador.
    Habilitar opciones
    • En
    • Mantente despierto
    • Depuración de USB (esto permite que el host ejecute la tableta en modo de depuración. Cuando conecta la tableta al host por primera vez, la tableta indica ¿Permitir depuración de USB? Si la tableta no muestra el mensaje de depuración, desconecte y vuelva a conectar el tableta.)
    Deshabilitar opciones
    • Actualizaciones automáticas del sistema
    • Verificar aplicaciones a través de USB
  5. Determine los DUT y los ID del gráfico ejecutando $ adb devices para enumerar los dispositivos disponibles. Para determinar device_id y chart_id , conecte y desconecte dispositivos y observe los dispositivos que se conectan y desconectan.
  6. Realice tres ejecuciones de prueba para suprimir sugerencias y mensajes de usuario que pueden oscurecer los gráficos en la pantalla de la tableta.
    1. Coloque la tableta boca arriba sobre una mesa (no coloque la tableta en el panel posterior de la caja).
    2. Ejecute el siguiente comando:
      python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
      
      Las escenas 2 y 3 requieren que la tableta muestre una imagen, por lo que la tableta le pregunta ¿Permitir que Drive acceda a fotos, medios y archivos en su dispositivo? . Borre este mensaje (y evite mensajes futuros) presionando Permitir.
    3. Ejecute el comando nuevamente. La tableta le pregunta ¿Conservar una copia de este archivo? y sugiere Google Drive. Borre este mensaje (y evite mensajes futuros) presionando el ícono de Drive y luego Cancelar para cargarlo en Drive.
    4. Finalmente, ejecute tools/run_all_tests.py y confirme que las escenas cambian automáticamente a medida que el script recorre diferentes escenas. Si bien la mayoría de las pruebas fallan (ya que la cámara no apunta al gráfico), puede verificar que la tableta recorre correctamente las escenas sin mostrar ningún mensaje u otras ventanas emergentes en la pantalla.

Ejecutar pruebas

Antes de ejecutar ITS-in-a-box, asegúrese de que su configuración de prueba incluya el siguiente hardware y software:

  • Un (1) ITS en una caja
  • Una (1) tableta de 10" de alta resolución para visualización de escenas, S/N: 5811000011
  • Un (1) DUT que tenga instalada la aplicación CTS Verifier 7.0_8+. Ejemplo de DUT:
    • Un (1) Pixel NOF26W para la prueba de la cámara trasera(0), S/N: FA6BM0305016. Para instalar la aplicación CTS Verifier, descomprima android-cts-verifier.zip y luego ejecute
      adb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
      

Ejecute escenas basadas en tabletas

Para ejecutar las escenas 0 a 4, 6 y scene_change en la cámara trasera:

cd android-cts-verifier/CameraITS
. build/envsetup.sh
python tools/run_all_tests.py camera=0

Ejemplo:

Cámara 0 S/N: FA6BM0305016
Figura 1. Cámara 0 S/N: FA6BM0305016

Reintentar escenas

Puedes volver a intentar escenas para una sola cámara:

  • Para reintentar escenas en una sola cámara:
    python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
    

Ejecutar escena 5

La escena 5 requiere una configuración especial con iluminación específica (para obtener más detalles, consulte CameraITS.pdf en CTS Verifier, que puede descargar en Descargas del conjunto de pruebas de compatibilidad ). Debes ejecutar la escena 5 por separado (fuera del cuadro).

escena de cámara 5
Figura 2. Escena de cámara 5

Para ejecutar la escena 5 para las cámaras frontal y trasera en un solo dispositivo:

python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=5
python tools/run_all_tests.py device=FA6BM0305016 camera=1 scenes=5

Tener resultados

Puede ver los resultados durante las pruebas y guardar los resultados completos como un informe.

  • Ver resultados. Para guardar los resultados de Camera ITS como un informe:
    1. Presione Pasar y guarde el informe.
      informe de cámara ITS
      Figura 3. Informe ITS de la cámara
    2. Extraer informes del dispositivo:
      adb -s FA6BM0305016 pull /sdcard/verifierReports
      
    3. Descomprima el archivo del informe y vea test_result.xml .
      cámara ITS informes
      Figura 4. Informes ITS de la cámara

Requisitos de la tableta

Las tabletas deben tener un tamaño de pantalla de aproximadamente 10 pulgadas con una resolución de pantalla superior a 1920 x 1200 píxeles. La tableta no debe utilizar modulación de ancho de pulso (PWM) para configurar el nivel de brillo. El valor brightness se debe configurar en config.yml según el modelo de tableta. La siguiente tabla enumera las tabletas recomendadas para pruebas ITS junto con las versiones de lanzamiento de Android para el DUT con el que funcionan las tabletas.

Dispositivo Tamaño de la pantalla
(pulgadas)
Tamaño de la pantalla
(píxeles)
Dimensiones de la tableta
(pulgadas)
Mostrar
brillo
Mostrar
bits
Soportado
SO DUT
Soportado
sistema operativo de la tableta
Samsung
Galaxy Tab A8
10.5 1920 x 1200 9,72 x 6,37 x 0,27 192 8 Androide 13+ androide 11+
Xiaomi
Almohadilla 5
11 2560 x 1600 10,03 x 6,55 x 0,27 1024 11 Androide 12+ Sólo Android 11
lenovo
Pestaña M10 Plus
10.3 1920 x 1200 9,61 x 6,03 x 0,32 192 8 Androide 12+ Android 9+
Samsung
Galaxy Tab A7
10.4 2000 x 1200 9,75 x 6,2 x 0,28 192 8 Androide 12+ androide 10+
Chuwi
Hola9 aire 10.1
10.1 2560 x 1600 9,52 x 6,77 x 0,31 192 8 Androide 7+ Android 8+
Asus
ZenPad 3
9.7 2048 x 1536 9,47 x 6,44 x 0,28 192 8 Androide 7+ Androide 6+
Huawei
MediaPad m5
10.8 2560 x 1600 10,18 x 6,76 x 0,29 192 8 Androide 7+ Android 8+
Google
Píxel C
10.2 2560 x 1800 9,53 x 7,05 x 0,28 96 8 Androide 7+ Androide 6+
sony
Xperia Z4
10.1 2560 x 1600 10x6,57x0,24 192 8 Androide 7+ Androide 5+

Preguntas frecuentes

P1: ¿Cómo puedo determinar qué bancos de prueba necesito para mi dispositivo?

La revisión 1 de RFoV ITS-in-a-box prueba las cámaras RFoV para las pruebas de escena 0 a escena 4 en el directorio CameraITS/tests . RFoV se define como 60° < FoV < 90° . Para cámaras FoV más grandes, las luces pueden aparecer en las imágenes o los gráficos pueden cubrir un área demasiado pequeña en el FoV, lo que afecta los resultados de las pruebas.

La revisión 2 de WFoV ITS-in-a-box prueba las cámaras WFoV para las pruebas de escena 0 a escena 4 en el directorio CameraITS/tests . WFoV se define como FoV >= 90° . Es funcionalmente idéntico a la revisión 1, pero más grande. El equipo de prueba de revisión 2 puede probar cámaras RFoV y WFoV en Android 9 y versiones posteriores.

La caja de fusión de sensores prueba la compensación de tiempo de la cámara/giroscopio y la sincronización de fotogramas de los sistemas multicámara con pruebas en scenes=sensor_fusion . Se requiere una compensación de sincronización de cámara/giroscopio de menos de 1 ms para el indicador de función REALTIME .

Los dispositivos multicámara se pueden probar con un solo equipo para pruebas ITS estáticas y un equipo de fusión de sensores si la cámara tiene el indicador de función REALTIME .

En la siguiente tabla se proporciona un conjunto de configuraciones de ejemplo.

Ejemplo FoV de la cámara ¿TIEMPO REAL? Equipos recomendados Notas
1 75° No Rev 1 o 2 Android 7.0 o superior
2 75° Rev 1 o 2 + fusión de sensores Android 9 o superior
3 75° + 95° Rev 2 + fusión de sensores Android 9 o superior

P2: ¿Cómo designo qué banco de pruebas está en uso?

Para designar el banco de pruebas correcto, asegúrese de que el parámetro de distancia del gráfico sea correcto. El banco de pruebas rev1 (RFoV) tiene una distancia de gráfico de 31 cm y el equipo rev2 (WFoV) tiene una distancia de gráfico de 22 cm. De forma predeterminada, la distancia del gráfico está establecida en 31 cm.

Android 10 a Android 11

Para identificar el equipo de prueba correcto en Android 10 a 11, agregue la bandera dist en la línea de comando. El valor predeterminado para dist es 31 . Ejecute el siguiente comando para cambiar el parámetro chart_distance .
python tools/run_all_tests.py ... chart=# dist=22

androide 12

Para identificar el equipo de prueba correcto en Android 12, puede editar el archivo config.yml para cambiar el parámetro chart_distance .
edit config.yml
chart_distance: 31.0 → chart_distance: 22.0

P3: ¿Cómo controlo el brillo de la tableta?

De forma predeterminada, el brillo de la tableta está configurado en 96.

Para cambiar el brillo en tabletas con Android 7.0 a Android 9, ejecute:

edit tools/wake_up_screen.py
DISPLAY_LEVEL=96 → DISPLAY_LEVEL=192

Para cambiar el brillo en tabletas con Android 10 a 11, el valor se puede cambiar en la línea de comando agregando la bandera brightness :

python tools/run_all_tests.py device=# camera=# chart=# brightness=192

Para cambiar el brillo en tabletas con Android 12, ejecute:

edit config.yml
brightness: 96 → brightness: 192

P4: ¿Cómo depuro una sola prueba?

Las pruebas se pueden ejecutar individualmente con fines de depuración, pero los resultados no se informan a CtsVerifier.apk a menos que se ejecute toda la escena.

Para ejecutar una escena individual en Android 11 y versiones anteriores:

  1. Cargue una escena agregando el indicador scenes en tools/run_all_tests.py :
    python tools/run_all_tests.py device=# camera=# chart=# scenes=#
    
  2. Presione Control+C para detener las pruebas después de que la escena se registre como cargada en stdout .

    Si la escena correcta ya está en la pantalla, active la pantalla:

    python tools/wake_up_screen.py screen=#
    
  3. Ejecute una prueba individual.

    python tests/scene#/test_*.py device=# camera=#

    Luego se generan gráficos en el directorio local y stdout y stderr se imprimen en la pantalla.

    Para obtener más información para la depuración, agregue declaraciones print al script. Para aumentar el resultado de la prueba para la depuración, agregue el indicador debug=True .

    python tests/scene#/test_*.py device=# camera=# debug=True

Los resultados se imprimen en la pantalla local y las imágenes se guardan en el directorio local en lugar del directorio /tmp/tmp### generado cuando se ejecuta tools/run_all_tests.py .

Para ejecutar una escena individual en Android 12:

  1. Edite el archivo config.yml .

    edit config.yml
    camera: <camera-id> → camera:  0
    scene: <scene-name> → scene: scene1_1
  2. Ejecute la prueba individual.

    python tools/run_all_tests.py -c config.yml --test_bed TEST_BED_TABLET_SCENES
    

Los resultados se imprimen en el directorio /tmp/logs/mobly/TEST_BED_TABLET_SCENES/ ordenados por tiempo de ejecución.

P5: ¿Por qué necesito ejecutar las pruebas fallidas como una escena completa en lugar de volver a ejecutar las pruebas individualmente?

Las pruebas se pueden ejecutar individualmente con fines de depuración, pero los resultados no se informan a CtsVerifier.apk a menos que se ejecute toda la escena.

Camera ITS garantiza que las aplicaciones de terceros tengan una interfaz de cámara compatible. De manera similar a una prueba unitaria , cada prueba enfatiza una única especificación en la cámara. Para detectar comportamientos poco confiables, se espera que estas pruebas pasen en grupo durante una escena completa. Por ejemplo, aunque una sola prueba no confiable puede pasar una repetición de una escena completa, es difícil que pasen varias pruebas no confiables.

Como ejemplo extremo, considere el caso en el que hay 10 pruebas en una escena y cada una tiene un 50% de probabilidad de devolver PASS . Al ejecutar cada prueba individualmente, existe una alta probabilidad de que un operador pueda lograr que la cámara pase Camera ITS. Sin embargo, si las pruebas se ejecutan en conjunto como una escena, solo hay un 0,1 % de posibilidades de que la escena pase.

P6: ¿Cómo ejecuto una sola escena o reordeno las escenas en ejecución?

De forma predeterminada, el script tools/run_all_tests.py ejecuta todas las escenas en orden. Sin embargo, las escenas se pueden ejecutar individualmente o en un orden específico y reportarse a CtsVerifier.apk .

Para ejecutar una escena individual (por ejemplo, la escena 2) o ejecutar más de una escena en un orden específico en Android 11 o versiones anteriores:

python tools/run_all_tests.py device=# camera=# chart=# scenes=2
python tools/run_all_tests.py device=# camera=# chart=# scenes=3,2

Para ejecutar una escena individual o ejecutar más de una escena en un orden específico en Android 12:

python tools/run_all_tests.py scenes=2
python tools/run_all_tests.py scenes=3,2

Los parámetros adicionales se establecen en el archivo config.yml .

P7: Varias pruebas de la escena 1 fallan con la configuración de la tableta, pero pasan con un gráfico en papel. ¿Qué ocurre?

Asegúrese de que la tableta y el entorno de prueba cumplan con las siguientes especificaciones.

Especificaciones de la tableta

Asegúrese de que la tableta cumpla con las siguientes especificaciones:

  • Tamaño de pantalla (pulgadas): 10 pulgadas
  • Tamaño de pantalla (píxeles): superior a 1920 x 1200 píxeles

Para obtener más detalles, consulte Requisitos de la tableta .

Brillo de la tableta

Es posible que las pruebas no obtengan resultados correctos si el brillo de la pantalla de la tableta es demasiado bajo.

Para obtener más detalles, consulte ¿Cómo controlo el brillo de la tableta?

Nivel de iluminación de la caja (requiere luxómetro)

Asegúrese de que el valor de lux objetivo al abrir la tableta esté entre 100 y 300.

Si el nivel de lux es demasiado alto, scene1/test_param_flash_mode.py devuelve FAIL . Si el nivel de lux es demasiado bajo, varias pruebas fallan.

P8: ¿Cómo depuro las pruebas de fusión de sensores?

  1. Asegúrate de estar en un grupo dialout .

    groups | egrep ‘dialout'
  2. Asegúrese de que el controlador de fusión del sensor esté conectado determinando si Microchip Technology está conectado al puerto USB.

    lsusb
    …
    Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc.
    …
    
  3. Ejecute la prueba varias veces para obtener una distribución de los intentos de prueba con los siguientes comandos.

    En Android 11 o inferior:

    python tools/run_sensor_fusion_box.py device=A camera=0 num_runs=10 rotator=default
    

    En Android 12:

    python tools/run_sensor_fusion_box.py num_runs=10
    

    Los parámetros adicionales se establecen en el archivo config.yml .

    Las salidas de la ejecución se encuentran en la carpeta /tmp/tmp### creada en las carpetas sensor_fusion_# , donde # es el número de ejecución. Las razones comunes del fracaso son:

    1. El teléfono no está centrado correctamente.
    2. No se encuentran suficientes funciones en la imagen (a menudo un problema de FoV o de iluminación).
    3. El FAIL devuelto es válido y se debe corregir el desplazamiento de tiempo entre la cámara y el giroscopio.

P9: ¿Qué información debo incluir al informar un error de prueba?

Al informar un error de prueba, incluya los archivos e imágenes generados para la prueba.

  1. Si ejecutó la prueba a través de tools/run_all_tests.py , adjunte un directorio comprimido /tmp/ al error.
  2. Si ejecutó la prueba por sí solo, adjunte todos los resultados de la pantalla y las imágenes generadas al error.

También incluya un informe de error. Después de que la prueba en cuestión falle, use el siguiente comando para generar un informe de error y adjunte el archivo zip generado al error.

adb -s device_id bugreport

P10: ¿Cómo ejecuto una escena de prueba de sensor_fusion con una cámara que tiene una distancia de enfoque mínima que crea imágenes borrosas a una distancia del gráfico de 25 cm?

Si su cámara no puede enfocar a una distancia de 25 cm, retire el panel de montaje del gráfico de la caja de fusión del sensor. Coloque el gráfico a una distancia donde el DUT pueda enfocar y cambie chart_distance en config.yml a la distancia medida entre el DUT y el gráfico. La Figura 5 muestra un ejemplo de cómo medir la distancia del gráfico en esta situación.

ejemplo de prueba sensor_fusion TELE6
Figura 5. Tabla de medición de distancia para la escena de prueba de fusión de sensores
  edit config.yml
chart_distance: 25 → chart_distance: DISTANCE_BETWEEN_DUT_AND_CHART

P11: ¿Cómo ejecuto escenas de prueba de tableta para una cámara con una distancia de enfoque mínima que crea imágenes borrosas a una distancia del gráfico de 31 cm?

Si su cámara no puede producir imágenes lo suficientemente nítidas a 31 cm (la profundidad del equipo de prueba RFoV), monte su cámara frente al equipo a una distancia que permita que la escena del mapa llene aproximadamente el 60% del campo de la cámara. Vista (FoV) con imágenes más nítidas. Esta distancia puede ser menor que la distancia mínima de enfoque de la cámara. Deje chart_distance en config.yml a 31 cm. La escala del gráfico en la tableta está determinada por el campo de visión de la cámara, como se muestra en la siguiente tabla:

Campo de visión de la cámara Factor de escala del gráfico
60 > FoV > 40 0,67x
40 > campo de visión > 25 0,5x
FoV < 25 0,33x

P12: Con la API lógica multicámara, ¿qué pruebas se ejecutan en qué cámaras?

Si su cámara usa REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA , todas las pruebas ITS admitidas se ejecutan en la cámara lógica de nivel superior. Un subconjunto de pruebas ITS se ejecuta en las subcámaras físicas y estas pruebas se enumeran en tools/run_all_tests.py bajo la constante SUB_CAMERA_TESTS .