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; el soporte para 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 resolución de problemas. La consistencia del entorno de prueba conduce a menos errores de configuración y aumenta la reproducibilidad.
  • Eficiencia. La capacidad de volver a intentar para cámara/escena individual mejora la eficiencia de 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 usar 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 construya un WFoV o RFoV ITS-in-a-box.
  2. Configure 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 su uso 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 Camera ITS Python configuran automáticamente las siguientes opciones en la tableta para usted:
Ajustes > Pantalla > Suspender > 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 (Camera ITS no requiere ninguna cuenta emparejada con la tableta).
  2. Actualice la tableta a Android 7.0 o superior. Android 6.x y versiones anteriores 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 solicita ¿Permitir depuración de USB? Si la tableta no muestra el mensaje de depuración, desconecte y vuelva a conectar la tableta.)
    Deshabilitar opciones
    • Actualizaciones automáticas del sistema
    • Verificar aplicaciones a través de USB
  5. Determine los ID de DUT y gráficos 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 las sugerencias y las indicaciones del usuario que pueden ocultar 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 solicita ¿Permitir que Drive acceda a fotos, medios y archivos en su dispositivo? . Borre este aviso (y evite futuros avisos) presionando Permitir.
    3. Ejecute el comando de nuevo. La tableta le preguntará ¿Guardar una copia de este archivo? y sugiere Google Drive. Borre este aviso (y evite futuros avisos) presionando el ícono de Drive y luego Cancelar para cargar a Drive.
    4. Finalmente, ejecute tools/run_all_tests.py y confirme que las escenas cambian automáticamente a medida que el script pasa por 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 mostrar escenas, S/N: 5811000011
  • Un (1) dispositivo bajo prueba 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
      

Ejecutar 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

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

  • Para volver a intentar 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 información, consulte CameraITS.pdf en CTS Verifier, que puede descargar en Descargas de conjuntos de pruebas de compatibilidad ). Debe ejecutar la escena 5 por separado (fuera de la caja).

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

Para ejecutar la escena 5 para las cámaras delantera 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 Aprobar y guarde el informe.
      informe de ITS de la cámara
      Figura 3. Informe ITS de la cámara
    2. Obtener informes del dispositivo:
      adb -s FA6BM0305016 pull /sdcard/verifierReports
      
    3. Descomprima el archivo del informe y visualice test_result.xml .
      Informes ITS de la cámara
      Figura 4. Informes ITS de la cámara

Requisitos de la tableta

Las tabletas deben tener un tamaño de pantalla de alrededor de 10 pulgadas con una resolución de pantalla superior a 1920 x 1200 píxeles. El valor brightness debe establecerse en config.yml según el modelo de tableta. La siguiente tabla enumera las tabletas recomendadas para las pruebas de 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
pedacitos
Soportado
Sistema operativo bajo prueba
Samsung
Galaxy Tab A8
10.5 1920x1200 9,72x6,37x0,27 192 8 Androide 13+
xiaomi
Almohadilla 5
11 2560x1600 10,03x6,55x0,27 1024 11 Androide 12+
lenovo
Pestaña M10 Más
10.3 1920x1200 9,61x6,03x0,32 192 8 Androide 12+
Samsung
Galaxy Tab A7
10.4 2000x1200 9,75x6,2x0,28 192 8 Androide 12+
Chuwi
Hi9 Aire 10.1
10.1 2560x1600 9,52 x 6,77 x 0,31 192 8 androide 7+
Asus
ZenPad 3
9.7 2048x1536 9,47x6,44x0,28 192 8 androide 7+
huawei
media pad m5
10.8 2560x1600 10,18x6,76x0,29 192 8 androide 7+
Google
Píxel C
10.2 2560x1800 9,53 x 7,05 x 0,28 96 8 androide 7+
sony
Xperia Z4
10.1 2560x1600 10x6,57x0,24 192 8 androide 7+

Preguntas frecuentes

P1: ¿Cómo determino qué equipos 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 la prueba.

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 banco de pruebas de revisión 2 puede probar cámaras RFoV y WFoV en Android 9 y superior.

La caja de fusión del sensor prueba la compensación de tiempo de la cámara/giroscopio y la sincronización de cuadros de los sistemas multicámara con pruebas en scenes=sensor_fusion . Se requiere una compensación de tiempo 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 la marca de función REALTIME .

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

Ejemplo Campos de visión 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 sensor Android 9 o superior
3 75° + 95° Rev 2 + fusión de sensores Android 9 o superior

P2: ¿Cómo designo qué equipo de prueba está en uso?

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

Android 10 a Android 11

Para identificar el equipo de prueba correcto en Android 10 a 11, agregue el indicador 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 el indicador 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 la salida de 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. Similar a una prueba unitaria , cada prueba enfatiza una sola especificación en la cámara. Para detectar un comportamiento poco fiable, se espera que estas pruebas pasen como un grupo para 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 de 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 se pueden informar 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 objetivo de lux 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úrese 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 .

    Los resultados 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 de falla son:

    1. El teléfono no está centrado correctamente.
    2. No se encuentran suficientes características 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 desfase de tiempo entre la cámara y el giroscopio.

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

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

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

Incluya también un informe de error. Después de que falle la prueba en cuestión, 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 de gráfico de 25 cm?

Si su cámara no puede enfocar a una distancia de 25 cm, quite 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. Distancia del gráfico de medición para la escena de prueba de fusión del sensor
  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 de gráfico de 31 cm?

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

campo de visión de la cámara Factor de escala del gráfico
60 > Campo de visión > 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 utiliza 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 las 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 .