Caméra ITS-in-a-Box

Android Camera Image Test Suite (ITS) fait partie du vérificateur Android Compatibility Test Suite (CTS) et comprend des tests qui vérifient le contenu de l'image. CTS Verifier prend en charge l'automatisation des tests ITS avec la caméra ITS-in-a-box ; la prise en charge des tests manuels couvre tous les facteurs de forme des appareils Android.

ITS-in-a-box comprend les avantages suivants :

  • Automatisation. Aucune intervention humaine n’est nécessaire pendant le test.
  • Dépannage facile. La cohérence de l'environnement de test entraîne moins d'erreurs de configuration et augmente la reproductibilité.
  • Efficacité. La possibilité de réessayer pour une caméra/scène individuelle améliore l’efficacité de l’exécution des tests.

Commencer

ITS-in-a-box se compose d'une boîte en plastique découpée au laser à partir de dessins de conception assistée par ordinateur (CAO), d'une tablette graphique et d'un appareil sous test (DUT). Vous pouvez utiliser l'ITS-in-a-box à large champ de vision (WFoV), capable de tester à la fois les caméras WFoV (FoV > 90 degrés) et RFoV (FoV < 90 degrés), ou le champ de vision standard. -view (RFoV) ITS-in-a-box.

Pour démarrer avec la caméra ITS-in-a-box :

  1. Achetez ou construisez un ITS-in-a-box WFoV ou RFoV .
  2. Configurez une tablette avec le logiciel Camera ITS.
  3. Exécutez des tests .
  4. Obtenez les résultats du DUT.

Configurer la tablette

Cette section fournit des instructions étape par étape pour configurer une tablette à utiliser avec les tests Camera ITS situés dans le répertoire CameraITS . Ces instructions utilisent une tablette Pixel C comme exemple. Pour plus d'informations sur les exigences et les recommandations relatives aux tablettes, consultez Exigences relatives aux tablettes .

Remarque : Les scripts Python de Camera ITS définissent automatiquement les options suivantes sur la tablette :
Paramètres > Affichage > Veille > Après 30 minutes d'inactivité
Luminosité adaptative > OFF

  1. Chargez la tablette et allumez-la. Si vous êtes invité à créer un compte, ignorez-le (Camera ITS ne nécessite aucun compte associé à la tablette).
  2. Mettez à jour la tablette vers Android 7.0 ou version ultérieure. Android 6.x et les versions antérieures ne prennent pas en charge Camera ITS.
  3. Activer le mode développeur .
  4. Revenez aux paramètres et sélectionnez les options du développeur.
    Activer les options
    • Sur
    • Rester éveillé
    • Débogage USB (cela permet à l'hôte d'exécuter la tablette en mode débogage. Lorsque vous connectez la tablette à l'hôte pour la première fois, la tablette vous demande Autoriser le débogage USB ? Si la tablette n'affiche pas l'invite de débogage, déconnectez puis reconnectez le tablette.)
    Désactiver les options
    • Mises à jour automatiques du système
    • Vérifier les applications via USB
  5. Déterminez les ID de DUT et de graphique en exécutant $ adb devices pour répertorier les appareils disponibles. Pour déterminer device_id et chart_id , branchez et débranchez les appareils et observez les appareils qui se connectent et se déconnectent.
  6. Effectuez trois tests pour supprimer les astuces et les invites utilisateur susceptibles de masquer les graphiques sur l'écran de la tablette.
    1. Positionnez la tablette face vers le haut sur une table (ne fixez pas la tablette sur le panneau arrière de la boîte).
    2. Exécutez la commande suivante :
      python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
      
      Les scènes 2 et 3 nécessitent que la tablette affiche une image. La tablette vous demande donc Autoriser Drive à accéder aux photos, aux médias et aux fichiers sur votre appareil ? . Effacez cette invite (et évitez les invites futures) en appuyant sur Autoriser.
    3. Exécutez à nouveau la commande. La tablette affiche le message Conserver une copie de ce fichier ? et suggère Google Drive. Effacez cette invite (et évitez les invites futures) en appuyant sur l'icône Lecteur, puis sur Annuler pour le téléchargement sur le lecteur.
    4. Enfin, exécutez tools/run_all_tests.py et confirmez que les scènes changent automatiquement à mesure que le script parcourt différentes scènes. Bien que la plupart des tests échouent (car la caméra n'est pas pointée vers le graphique), vous pouvez vérifier que la tablette parcourt correctement les scènes sans afficher d'invites ou d'autres fenêtres contextuelles à l'écran.

Exécuter des tests

Avant d'exécuter l'ITS-in-a-box, assurez-vous que votre configuration de test inclut le matériel et les logiciels suivants :

  • Un (1) ITS-in-a-box
  • Une (1) tablette 10" haute résolution pour l'affichage de scènes, S/N : 5811000011
  • Un (1) DUT sur lequel l'application CTS Verifier 7.0_8+ est installée. Exemple de DUT :
    • Un (1) Pixel NOF26W pour le test de la caméra arrière (0), S/N : FA6BM0305016. Pour installer l'application CTS Verifier, décompressez android-cts-verifier.zip puis exécutez
      adb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
      

Exécuter des scènes sur tablette

Pour exécuter les scènes 0 à 4, 6 et scene_change sur la caméra arrière :

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

Exemple:

Caméra 0 S/N : FA6BM0305016
Figure 1. Caméra 0 S/N : FA6BM0305016

Réessayer les scènes

Vous pouvez réessayer des scènes pour une seule caméra :

  • Pour réessayer des scènes sur une seule caméra :
    python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
    

Exécuter la scène 5

La scène 5 nécessite une configuration spéciale avec un éclairage spécifique (pour plus de détails, reportez-vous au CameraITS.pdf dans CTS Verifier, que vous pouvez télécharger sur Compatibility Test Suite Downloads ). Vous devez exécuter la scène 5 séparément (en dehors de la boîte).

scène de caméra 5
Figure 2. Scène de caméra 5

Pour exécuter la scène 5 pour les caméras avant et arrière sur un seul appareil :

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

Obtenir des résultats

Vous pouvez afficher les résultats pendant les tests et enregistrer les résultats terminés sous forme de rapport.

  • Voir les résultats. Pour enregistrer les résultats de la caméra ITS sous forme de rapport :
    1. Appuyez sur Passer et enregistrez le rapport.
      rapport ITS de la caméra
      Figure 3. Rapport ITS de la caméra
    2. Extraire les rapports de l'appareil :
      adb -s FA6BM0305016 pull /sdcard/verifierReports
      
    3. Décompressez le fichier de rapport et affichez test_result.xml .
      rapports de caméra ITS
      Figure 4. Rapports ITS de la caméra

Exigences relatives à la tablette

Les tablettes doivent avoir une taille d'affichage d'environ 10 pouces avec une résolution d'écran supérieure à 1920 x 1200 pixels. La valeur brightness doit être définie dans config.yml en fonction du modèle de tablette. Le tableau ci-dessous répertorie les tablettes recommandées pour les tests ITS ainsi que les versions Android pour le DUT avec lequel les tablettes fonctionnent.

Appareil Taille d'affichage
(pouces)
Taille d'affichage
(pixels)
Dimensions de la tablette
(pouces)
Afficher
luminosité
Afficher
morceaux
Prise en charge
OS DUT
Prise en charge
système d'exploitation de la tablette
Samsung
Galaxy Tab A8
10.5 1920 x 1200 9,72 x 6,37 x 0,27 192 8 Android 13+ Android 11+
Xiaomi
Bloc 5
11 2560 x 1600 10,03 x 6,55 x 0,27 1024 11 Android 12+ Uniquement Android 11
Lenovo
Onglet M10 Plus
10.3 1920 x 1200 9,61 x 6,03 x 0,32 192 8 Android 12+ Android 9+
Samsung
Galaxy Tab A7
10.4 2000 x 1200 9,75 x 6,2 x 0,28 192 8 Android 12+ Android 10+
Chuwi
Hi9 Air 10.1
10.1 2560 x 1600 9,52 x 6,77 x 0,31 192 8 Android 7+ Android 8+
Asus
ZenPad 3
9.7 2048 x 1536 9,47 x 6,44 x 0,28 192 8 Android 7+ Android 6+
Huawei
MédiaPad m5
10.8 2560 x 1600 10,18 x 6,76 x 0,29 192 8 Android 7+ Android 8+
Google
Pixel C
10.2 2560 x 1800 9,53 x 7,05 x 0,28 96 8 Android 7+ Android 6+
Sony
Xpéria Z4
10.1 2560 x 1600 10x6,57x0,24 192 8 Android 7+ Android 5+

Questions fréquemment posées

Q1 : Comment puis-je déterminer les bancs de test dont j'ai besoin pour mon appareil ?

Le RFoV ITS-in-a-box révision 1 teste les caméras RFoV pour les tests de scène 0 à scène 4 dans le répertoire CameraITS/tests . RFoV est défini comme 60° < FoV < 90° . Pour les caméras FoV plus grandes, les lumières peuvent apparaître sur les images ou les graphiques peuvent couvrir une zone trop petite du FoV, affectant les résultats des tests.

La révision 2 de WFoV ITS-in-a-box teste les caméras WFoV pour les tests de scène 0 à scène 4 dans le répertoire CameraITS/tests . WFoV est défini comme FoV >= 90° . Il est fonctionnellement identique à la révision 1, mais plus grand. Le banc de test de révision 2 peut tester les caméras RFoV et WFoV sous Android 9 et versions ultérieures.

Le boîtier de fusion de capteurs teste le décalage temporel de la caméra/gyroscope et la synchronisation des images des systèmes multi-caméras avec des tests dans scenes=sensor_fusion . Un décalage temporel caméra/gyroscope inférieur à 1 ms est requis pour l'indicateur de fonctionnalité REALTIME .

Les appareils multi-caméras peuvent être testés avec un seul appareil pour les tests ITS statiques et un appareil de fusion de capteurs si la caméra dispose de l'indicateur de fonctionnalité REALTIME .

Un ensemble d’exemples de configurations est fourni dans le tableau ci-dessous.

Exemple FoV de la caméra TEMPS RÉEL? Appareils recommandés Remarques
1 75° Non Rév 1 ou 2 Android 7.0 ou supérieur
2 75° Oui Rev 1 ou 2 + fusion de capteurs Android 9 ou supérieur
3 75° + 95° Oui Rév 2 + fusion de capteurs Android 9 ou supérieur

Q2 : Comment puis-je désigner le banc d'essai utilisé ?

Pour désigner le bon banc d'essai, assurez-vous que le paramètre de distance du graphique est correct. Le banc d'essai rev1 (RFoV) a une distance graphique de 31 cm et le banc d'essai rev2 (WFoV) a une distance graphique de 22 cm. Par défaut, la distance de la carte est définie sur 31 cm.

Android 10 à Android 11

Pour identifier le bon banc de test dans Android 10 à 11, ajoutez l'indicateur dist sur la ligne de commande. La valeur par défaut pour dist est 31 . Exécutez la commande suivante pour modifier le paramètre chart_distance .
python tools/run_all_tests.py ... chart=# dist=22

Android 12

Pour identifier le bon banc de test dans Android 12, vous pouvez modifier le fichier config.yml pour modifier le paramètre chart_distance .
edit config.yml
chart_distance: 31.0 → chart_distance: 22.0

Q3 : Comment contrôler la luminosité de la tablette ?

Par défaut, la luminosité de la tablette est réglée sur 96.

Pour modifier la luminosité sur les tablettes exécutant Android 7.0 à Android 9, exécutez :

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

Pour modifier la luminosité sur les tablettes fonctionnant sous Android 10 à 11, la valeur peut être modifiée sur la ligne de commande en ajoutant l'indicateur brightness :

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

Pour modifier la luminosité sur les tablettes fonctionnant sous Android 12, exécutez :

edit config.yml
brightness: 96 → brightness: 192

Q4 : Comment déboguer un seul test ?

Les tests peuvent être exécutés individuellement à des fins de débogage, mais les résultats ne sont pas signalés à CtsVerifier.apk à moins que la scène entière ne soit exécutée.

Pour exécuter une scène individuelle sous Android 11 et versions antérieures :

  1. Chargez une scène en ajoutant le drapeau scenes dans tools/run_all_tests.py :
    python tools/run_all_tests.py device=# camera=# chart=# scenes=#
    
  2. Appuyez sur Control+C pour arrêter les tests une fois que la scène est enregistrée comme chargée sur stdout .

    Si la bonne scène est déjà à l'écran, réveillez l'écran :

    python tools/wake_up_screen.py screen=#
    
  3. Exécutez un test individuel.

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

    Les tracés sont ensuite générés dans le répertoire local et stdout et stderr sont imprimés à l'écran.

    Pour obtenir plus d'informations sur le débogage, ajoutez des instructions print au script. Pour augmenter la sortie du test pour le débogage, ajoutez l’indicateur debug=True .

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

Les résultats sont imprimés sur l'écran local et les images sont enregistrées dans le répertoire local au lieu du répertoire /tmp/tmp### généré lors de l'exécution tools/run_all_tests.py .

Pour exécuter une scène individuelle dans Android 12 :

  1. Modifiez le fichier config.yml .

    edit config.yml
    camera: <camera-id> → camera:  0
    scene: <scene-name> → scene: scene1_1
  2. Exécutez le test individuel.

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

Les résultats sont imprimés dans le répertoire /tmp/logs/mobly/TEST_BED_TABLET_SCENES/ triés par temps d'exécution.

Q5 : Pourquoi dois-je exécuter les tests ayant échoué sur une scène entière au lieu de réexécuter les tests individuellement ?

Les tests peuvent être exécutés individuellement à des fins de débogage, mais les résultats ne sont pas signalés à CtsVerifier.apk à moins que la scène entière ne soit exécutée.

Camera ITS garantit que les applications tierces disposent d’une interface de caméra compatible. Semblable à un test unitaire , chaque test met l'accent sur une seule spécification de la caméra. Pour détecter les comportements peu fiables, ces tests doivent être effectués en groupe sur une scène entière. Par exemple, même si un seul test peu fiable peut réussir une réexécution d'une scène entière, il est difficile de réussir plusieurs tests peu fiables.

À titre d'exemple extrême, considérons le cas où il y a 10 tests dans une scène dont chacun a une probabilité de 50 % de renvoyer PASS . En exécutant chaque test individuellement, il y a de fortes chances qu'un opérateur puisse faire en sorte que la caméra réussisse Camera ITS. Cependant, si les tests sont exécutés globalement en tant que scène, il n’y a que 0,1 % de chances que la scène réussisse.

Q6 : Comment puis-je exécuter une seule scène ou réorganiser les scènes exécutées ?

Par défaut, le script tools/run_all_tests.py exécute toutes les scènes dans l'ordre. Cependant, les scènes peuvent être exécutées individuellement ou dans un ordre spécifié et être signalées à CtsVerifier.apk .

Pour exécuter une scène individuelle (par exemple, la scène 2) ou exécuter plusieurs scènes dans un ordre spécifique dans Android 11 ou une version antérieure :

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

Pour exécuter une scène individuelle ou exécuter plusieurs scènes dans un ordre spécifique dans Android 12 :

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

Les paramètres supplémentaires sont définis dans le fichier config.yml .

Q7 : Un certain nombre de tests de scène 1 échouent avec la configuration de la tablette mais réussissent avec un dossier papier. Qu'est-ce qui ne va pas?

Assurez-vous que la tablette et l’environnement de test répondent aux spécifications suivantes.

Spécifications de la tablette

Assurez-vous que la tablette répond aux spécifications suivantes :

  • Taille de l'écran (pouces) : 10 pouces
  • Taille d'affichage (pixels) : supérieure à 1920 x 1200 pixels

Pour plus de détails, consultez Configuration requise pour la tablette .

Luminosité de la tablette

Les tests peuvent ne pas donner de résultats corrects si la luminosité de l'écran de la tablette est trop faible.

Pour plus de détails, consultez Comment contrôler la luminosité de la tablette ?

Niveau d'éclairage de la boîte (nécessite un luxmètre)

Assurez-vous que la valeur lux cible à l’ouverture de la tablette est comprise entre 100 et 300.

Si le niveau de lux est trop élevé, scene1/test_param_flash_mode.py renvoie FAIL . Si le niveau de lux est trop faible, plusieurs tests échouent.

Q8 : Comment déboguer les tests de fusion de capteurs ?

  1. Assurez-vous que vous faites partie d'un groupe dialout .

    groups | egrep ‘dialout'
  2. Assurez-vous que le contrôleur de fusion de capteurs est connecté en déterminant si Microchip Technology est connecté au port USB.

    lsusb
    …
    Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc.
    …
    
  3. Exécutez le test plusieurs fois pour obtenir une répartition des tentatives de test avec les commandes suivantes.

    Sous Android 11 ou version antérieure :

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

    Sous Android 12 :

    python tools/run_sensor_fusion_box.py num_runs=10
    

    Les paramètres supplémentaires sont définis dans le fichier config.yml .

    Les sorties d'exécution se trouvent dans le dossier /tmp/tmp### créé sous les dossiers sensor_fusion_# , où # est le numéro d'exécution. Les raisons courantes d’échec sont :

    1. Le téléphone n'est pas correctement centré.
    2. L'image ne contient pas suffisamment de fonctionnalités (souvent un problème de FoV ou d'éclairage).
    3. Le FAIL renvoyé est valide et le décalage temporel entre la caméra et le gyroscope doit être corrigé.

Q9 : Quelles informations dois-je inclure lorsque je signale un bug de test ?

Lorsque vous signalez un bug de test, incluez les fichiers et images générés pour le test.

  1. Si vous avez exécuté le test via tools/run_all_tests.py , attachez un répertoire /tmp/ compressé au bogue.
  2. Si vous avez exécuté le test seul, attachez toutes les sorties d'écran et les images générées au bogue.

Incluez également un rapport de bug. Après l'échec du test en question, utilisez la commande suivante pour générer un rapport de bogue et joindre le fichier zip généré au bogue.

adb -s device_id bugreport

Q10 : Comment puis-je exécuter une scène de test sensor_fusion avec une caméra dont la distance de mise au point minimale crée des images floues à une distance de 25 cm ?

Si votre appareil photo ne parvient pas à faire la mise au point à une distance de 25 cm, retirez le panneau de montage de la carte du boîtier de fusion du capteur. Placez le graphique à une distance où le DUT peut se concentrer et remplacez chart_distance dans config.yml par la distance mesurée entre le DUT et le graphique. La figure 5 montre un exemple de la façon de mesurer la distance cartographique dans cette situation.

exemple de test sensor_fusion TELE6
Figure 5. Distance du tableau de mesure pour la scène de test de fusion de capteurs
  edit config.yml
chart_distance: 25 → chart_distance: DISTANCE_BETWEEN_DUT_AND_CHART

Q11 : Comment puis-je exécuter des scènes de test sur tablette pour une caméra avec une distance de mise au point minimale qui crée des images floues à une distance de 31 cm ?

Si votre caméra ne peut pas produire des images suffisamment nettes en testant à 31 cm (la profondeur du banc d'essai RFoV), montez votre caméra devant le banc à distance pour permettre à la scène cartographique de remplir environ 60 % du champ de la caméra. vue (FoV) avec des images plus nettes. Cette distance peut être inférieure à la distance minimale de mise au point de la caméra. Laissez la chart_distance dans config.yml à 31 cm. La mise à l'échelle du graphique sur la tablette est déterminée par le FoV de la caméra, comme indiqué dans le tableau suivant :

Champ de vision de la caméra Facteur d'échelle du graphique
60 > Champ de vue > 40 0,67x
40 > Champ de vue > 25 0,5x
FoV < 25 0,33x

Q12 : Avec l'API logique multi-caméras, quels tests sont exécutés sur quelles caméras ?

Si votre caméra utilise REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA , tous les tests ITS pris en charge sont exécutés sur la caméra logique de niveau supérieur. Un sous-ensemble des tests ITS est exécuté sur les sous-caméras physiques, et ces tests sont répertoriés dans tools/run_all_tests.py sous la constante SUB_CAMERA_TESTS .