Kamera ITS-in-a-Box

Die Android Camera Image Test Suite (ITS) ist Teil des Android Compatibility Test Suite (CTS) Verifier und umfasst Tests zur Überprüfung von Bildinhalten. CTS Verifier unterstützt ITS-Testautomatisierung mit Camera ITS-in-a-box; Die Unterstützung für manuelle Tests deckt alle Formfaktoren von Android-Geräten ab.

ITS-in-a-box beinhaltet die folgenden Vorteile:

  • Automatisierung. Während des Tests ist kein menschliches Eingreifen erforderlich.
  • Einfache Fehlerbehebung. Die Konsistenz der Testumgebung führt zu weniger Einrichtungsfehlern und erhöht die Reproduzierbarkeit.
  • Effizienz. Die Möglichkeit, es für einzelne Kameras/Szenen erneut zu versuchen, verbessert die Effizienz der Testausführung.

Einstieg

ITS-in-a-box besteht aus einer Kunststoffbox, die aus CAD-Zeichnungen (Computer-Aided Design) lasergeschnitten wird, einem Diagrammtablett und einem zu testenden Gerät (DUT). Sie können das Wide Field of View (WFoV) ITS-in-a-Box verwenden, das sowohl WFoV (FoV > 90 Grad) als auch RFoV (FoV < 90 Grad) Kameras oder das reguläre Field-of testen kann -View (RFoV) ITS-in-a-Box.

Erste Schritte mit dem Camera ITS-in-a-Box:

  1. Kaufen oder bauen Sie ein WFoV- oder RFoV -ITS-in-a-Box.
  2. Konfigurieren Sie ein Tablet mit der Camera ITS-Software.
  3. Führen Sie Tests durch .
  4. Erhalten Sie Ergebnisse vom DUT.

Konfigurieren des Tablets

Dieser Abschnitt enthält Schritt-für-Schritt-Anleitungen zum Einrichten eines Tablets für die Verwendung mit den Camera ITS-Tests im CameraITS Verzeichnis. In dieser Anleitung wird ein Pixel C als Beispiel-Tablet verwendet. Informationen zu Tablet-Anforderungen und Empfehlungen finden Sie unter Tablet-Anforderungen .

Hinweis: Die Kamera-ITS-Python-Skripte stellen automatisch die folgenden Optionen auf dem Tablett für Sie ein:
Einstellungen > Anzeige > Ruhemodus > Nach 30 Minuten Inaktivität
Adaptive Helligkeit > AUS

  1. Laden Sie das Tablet auf und schalten Sie es ein. Wenn Sie aufgefordert werden, ein Konto einzurichten, überspringen Sie es (für Camera ITS ist kein mit dem Tablet gekoppeltes Konto erforderlich).
  2. Aktualisieren Sie das Tablet auf Android 7.0 oder höher. Android 6.x und niedrigere Versionen unterstützen Camera ITS nicht.
  3. Entwicklermodus aktivieren .
  4. Kehren Sie zu den Einstellungen zurück und wählen Sie Entwickleroptionen.
    Optionen aktivieren
    • An
    • Wach bleiben
    • USB-Debugging (Dies ermöglicht dem Host, das Tablet im Debug-Modus auszuführen. Wenn Sie das Tablet zum ersten Mal mit dem Host verbinden, fordert das Tablet USB-Debugging zulassen auf? Tablette.)
    Optionen deaktivieren
    • Automatische Systemupdates
    • Überprüfen Sie Apps über USB
  5. Bestimmen Sie DUT- und Diagramm-IDs, indem $ adb devices um verfügbare Geräte aufzulisten. Um device_id und chart_id zu bestimmen, stecken Sie Geräte ein und aus und beobachten Sie die Geräte, die verbunden und getrennt werden.
  6. Führen Sie drei Testläufe durch, um Hinweise und Benutzeraufforderungen zu unterdrücken, die Diagramme auf dem Tablet-Bildschirm verdecken können.
    1. Legen Sie das Tablet mit der Vorderseite nach oben auf einen Tisch (befestigen Sie das Tablet nicht an der Rückwand der Schachtel).
    2. Führen Sie den folgenden Befehl aus:
      python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
      
      Die Szenen 2 und 3 erfordern, dass das Tablet ein Bild anzeigt, sodass das Tablet Sie auffordert: Allow Drive to access photos, media, and files on your device? . Löschen Sie diese Eingabeaufforderung (und verhindern Sie zukünftige Eingabeaufforderungen), indem Sie auf Zulassen klicken.
    3. Führen Sie den Befehl erneut aus. Das Tablet fordert Sie auf, eine Kopie dieser Datei zu behalten? und schlägt Google Drive vor. Löschen Sie diese Eingabeaufforderung (und verhindern Sie zukünftige Eingabeaufforderungen), indem Sie auf das Laufwerksymbol und dann auf Abbrechen für das Hochladen auf das Laufwerk drücken.
    4. Führen Sie schließlich tools/run_all_tests.py und bestätigen Sie, dass sich Szenen automatisch ändern, wenn das Skript verschiedene Szenen durchläuft. Während die meisten Tests fehlschlagen (da die Kamera nicht auf das Diagramm gerichtet ist), können Sie überprüfen, ob das Tablet die Szenen korrekt durchläuft, ohne dass Eingabeaufforderungen oder andere Popups auf dem Bildschirm angezeigt werden.

Laufende Tests

Stellen Sie vor dem Ausführen des ITS-in-a-Box sicher, dass Ihr Testaufbau die folgende Hardware und Software enthält:

  • Ein (1) ITS-in-a-Box
  • Ein (1) hochauflösendes 10-Zoll-Tablet zum Anzeigen von Szenen, S/N: 5811000011
  • Ein (1) DUT, auf dem die App CTS Verifier 7.0_8+ installiert ist. Beispiel DUT:
    • Ein (1) Pixel NOF26W zum Testen der Rückkamera (0), S/N: FA6BM0305016. Um die CTS Verifier-App zu installieren, entpacken android-cts-verifier.zip und führen Sie dann
      adb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
      
      aus

Ausführen von Tablet-basierten Szenen

So führen Sie die Szenen 0 bis 4, 6 und scene_change auf der Rückkamera aus:

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

Beispiel:

Kamera 0 Seriennummer: FA6BM0305016
Abbildung 1. Kamera 0 S/N: FA6BM0305016

Wiederholung von Szenen

Sie können Szenen für eine einzelne Kamera wiederholen:

  • So wiederholen Sie Szenen auf einer einzelnen Kamera:
    python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
    

Laufszene 5

Szene 5 erfordert ein spezielles Setup mit spezifischer Beleuchtung (Einzelheiten finden Sie in CameraITS.pdf in CTS Verifier, das Sie unter Compatibility Test Suite Downloads herunterladen können). Sie müssen Szene 5 separat ausführen (außerhalb der Box).

Kameraszene 5
Abbildung 2. Kameraszene 5

So führen Sie Szene 5 für Front- und Rückkameras auf einem einzigen Gerät aus:

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

Ergebnisse erzielen

Sie können die Ergebnisse während des Tests anzeigen und die fertigen Ergebnisse als Bericht speichern.

  • Ergebnisse anzeigen. So speichern Sie Kamera-ITS-Ergebnisse als Bericht:
    1. Drücken Sie Pass und speichern Sie den Bericht.
      Kamera ITS-Bericht
      Abbildung 3. Kamera-ITS-Bericht
    2. Berichte vom Gerät abrufen:
      adb -s FA6BM0305016 pull /sdcard/verifierReports
      
    3. Entpacken Sie die Berichtsdatei und test_result.xml .
      Kamera ITS meldet
      Abbildung 4. Kamera-ITS-Berichte

Tablet-Anforderungen

Tablets müssen eine Displaygröße von etwa 10 Zoll mit einer Bildschirmauflösung von mehr als 1920 x 1200 Pixel haben. Der brightness muss entsprechend dem Tablet-Modell in der config.yml eingestellt werden. Die folgende Tabelle listet die empfohlenen Tablets für ITS-Tests zusammen mit den Android-Release-Versionen für das DUT auf, mit dem die Tablets funktionieren.

Gerät Bildschirmgröße
(Zoll)
Bildschirmgröße
(Pixel)
Tablet-Abmessungen
(Zoll)
Anzeige
Helligkeit
Anzeige
Bits
Unterstützt
DUT-Betriebssystem
Samsung
Galaxy Tab A8
10.5 1920 x 1200 9,72 x 6,37 x 0,27 192 8 Android 13+
Xiaomi
Pad 5
11 2560 x 1600 10,03 x 6,55 x 0,27 1536 11 Android 12+
Lenovo
Registerkarte M10 Plus
10.3 1920 x 1200 9,61 x 6,03 x 0,32 192 8 Android 12+
Samsung
Galaxy Tab A7
10.4 2000 x 1200 9,75 x 6,2 x 0,28 192 8 Android 12+
Chuwi
Hi9 Luft 10.1
10.1 2560 x 1600 9,52 x 6,77 x 0,31 192 8 Android 7+
Asus
Zen Pad 3
9.7 2048 x 1536 9,47 x 6,44 x 0,28 192 8 Android 7+
Huawei
MediaPad m5
10.8 2560 x 1600 10,18 x 6,76 x 0,29 192 8 Android 7+
Google
Pixel C
10.2 2560 x 1800 9,53 x 7,05 x 0,28 96 8 Android 7+
Sony
Xperia Z4
10.1 2560 x 1600 10 x 6,57 x 0,24 192 8 Android 7+

Häufig gestellte Fragen (FAQs)

F1: Wie bestimme ich, welche Prüfstände ich für mein Gerät benötige?

Die RFoV ITS-in-a-Box Revision 1 testet RFoV-Kameras für Szene 0 bis Szene 4 im CameraITS/tests . RFoV ist definiert als 60° < FoV < 90° . Bei größeren FoV-Kameras erscheinen die Lichter möglicherweise in den Bildern oder die Diagramme decken möglicherweise einen zu kleinen Bereich im FoV ab, was die Testergebnisse beeinträchtigt.

Die WFoV ITS-in-a-Box Revision 2 testet WFoV-Kameras für Szene 0 bis Szene 4 im CameraITS/tests . WFoV ist definiert als FoV >= 90° . Es ist funktional identisch mit Revision 1, aber größer. Der Prüfstand der Revision 2 kann sowohl RFoV- als auch WFoV-Kameras in Android 9 und höher testen.

Die Sensorfusionsbox testet den Kamera-/Gyroskop-Timing-Offset und die Frame-Synchronisation mehrerer Kamerasysteme mit Tests in scenes=sensor_fusion . Für das REALTIME -Feature-Flag und VR/AR-Apps ist ein Kamera-/Gyroskop-Timing-Offset von weniger als 1 ms erforderlich.

Geräte mit mehreren Kameras können mit einem einzelnen Rig für statische ITS-Tests und einem Sensorfusions-Rig getestet werden, wenn die Kamera über das REALTIME -Feature-Flag verfügt.

Eine Reihe von Beispielkonfigurationen finden Sie in der folgenden Tabelle.

Beispiel Kamera-FoVs ECHTZEIT? Empfohlene Anlagen Anmerkungen
1 75° NEIN Rev. 1 Android 7.0 oder höher
2 75° Ja Rev 1 + Sensorfusion Android 9 oder höher
3 75° + 95° Ja Rev 2 + Sensorfusion Android 9 oder höher

F2: Wie bestimme ich, welcher Prüfstand verwendet wird?

Um den richtigen Prüfstand zu bestimmen, stellen Sie sicher, dass der Diagrammabstandsparameter korrekt ist. Der Prüfstand rev1 (RFoV) hat einen Diagrammabstand von 31 cm und der Prüfstand rev2 (WFoV) einen Diagrammabstand von 22 cm. Standardmäßig ist der Diagrammabstand auf 31 cm eingestellt.

Android 10 bis Android 11

Um die richtige Test-Rig in Android 10 bis 11 zu identifizieren, fügen Sie das dist -Flag in der Befehlszeile hinzu. Der Standardwert für dist ist 31 . Führen Sie den folgenden Befehl aus, um den Parameter chart_distance zu ändern.
python tools/run_all_tests.py ... chart=# dist=22

Android 12

Um den richtigen Prüfstand in Android 12 zu identifizieren, können Sie die Datei config.yml bearbeiten, um den Parameter chart_distance zu ändern.
edit config.yml
chart_distance: 31.0 → chart_distance: 22.0

F3: Wie steuere ich die Helligkeit des Tablets?

Standardmäßig ist die Helligkeit des Tablets auf 96 eingestellt.

Um die Helligkeit auf Tablets mit Android 7.0 bis Android 9 zu ändern, führen Sie Folgendes aus:

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

Um die Helligkeit auf Tablets mit Android 10 bis 11 zu ändern, kann der Wert in der Befehlszeile geändert werden, indem das brightness -Flag hinzugefügt wird:

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

Um die Helligkeit auf Tablets mit Android 12 zu ändern, führen Sie Folgendes aus:

edit config.yml
brightness: 96 → brightness: 192

F4: Wie debugge ich einen einzelnen Test?

Tests können zu Debugging-Zwecken einzeln ausgeführt werden, aber die Ergebnisse werden nicht an CtsVerifier.apk gemeldet, es sei denn, die gesamte Szene wird ausgeführt.

So führen Sie eine einzelne Szene in Android 11 und niedriger aus:

  1. Laden Sie eine Szene, indem Sie das scenes -Flag in tools/run_all_tests.py :
    python tools/run_all_tests.py device=# camera=# chart=# scenes=#
    
  2. Drücken Sie Strg+C , um die Tests anzuhalten, nachdem die Szene als geladen in stdout protokolliert wurde.

    Wenn die richtige Szene bereits auf dem Bildschirm angezeigt wird, aktivieren Sie den Bildschirm:

    python tools/wake_up_screen.py screen=#
    
  3. Führen Sie einen individuellen Test durch.

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

    Plots werden dann im lokalen Verzeichnis generiert und stdout und stderr werden auf dem Bildschirm ausgegeben.

    Um weitere Informationen zum Debuggen zu erhalten, fügen Sie print zum Skript hinzu. Um die Testausgabe zum Debuggen zu erhöhen, fügen Sie das Flag debug=True hinzu.

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

Beim Ausführen von tools/run_all_tests.py werden Ergebnisse auf dem lokalen Bildschirm ausgegeben und Bilder im lokalen Verzeichnis statt im generierten /tmp/tmp### gespeichert.

So führen Sie eine einzelne Szene in Android 12 aus:

  1. Bearbeiten Sie die Datei config.yml .

    edit config.yml
    camera: <camera-id> → camera:  0
    scene: <scene-name> → scene: scene1_1
  2. Führen Sie den Einzeltest durch.

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

Die Ergebnisse werden im /tmp/logs/mobly/TEST_BED_TABLET_SCENES/ nach Laufzeit sortiert ausgegeben.

F5: Warum muss ich fehlgeschlagene Tests als ganze Szene ausführen, anstatt die Tests einzeln erneut auszuführen?

Tests können zu Debugging-Zwecken einzeln ausgeführt werden, aber die Ergebnisse werden nicht an CtsVerifier.apk gemeldet, es sei denn, die gesamte Szene wird ausgeführt.

Camera ITS stellt sicher, dass Drittanbieter-Apps über eine kompatible Kameraschnittstelle verfügen. Ähnlich wie bei einem Komponententest betont jeder Test eine einzelne Spezifikation in der Kamera. Um unzuverlässiges Verhalten zu erkennen, wird erwartet, dass diese Tests als Gruppe für eine ganze Szene bestanden werden. Obwohl beispielsweise ein einzelner unzuverlässiger Test eine Wiederholung einer ganzen Szene bestehen kann, ist es schwierig, mehrere unzuverlässige Tests zu bestehen.

Betrachten Sie als extremes Beispiel den Fall, in dem es 10 Tests in einer Szene gibt, die jeweils eine Wahrscheinlichkeit von 50 % haben, PASS zurückzugeben. Indem jeder Test einzeln ausgeführt wird, besteht eine hohe Wahrscheinlichkeit, dass ein Bediener die Kamera dazu bringen kann, Camera ITS zu bestehen. Wenn die Tests jedoch insgesamt als Szene ausgeführt werden, besteht nur eine Wahrscheinlichkeit von 0,1 %, dass die Szene bestanden wird.

F6: Wie führe ich eine einzelne Szene aus oder ordne die ausgeführten Szenen neu an?

Standardmäßig führt das Skript tools/run_all_tests.py alle Szenen der Reihe nach aus. Szenen können jedoch einzeln oder in einer bestimmten Reihenfolge ausgeführt und an CtsVerifier.apk gemeldet werden.

So führen Sie eine einzelne Szene (z. B. Szene 2) oder mehr als eine Szene in einer bestimmten Reihenfolge in Android 11 oder niedriger aus:

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

So führen Sie eine einzelne Szene oder mehr als eine Szene in einer bestimmten Reihenfolge in Android 12 aus:

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

Die zusätzlichen Parameter werden in der Datei config.yml gesetzt.

F7: Eine Reihe von Tests in Szene 1 schlagen mit der Tablet-Einrichtung fehl, bestehen jedoch mit einem Papierdiagramm. Was ist falsch?

Stellen Sie sicher, dass das Tablet und die Testumgebung die folgenden Spezifikationen erfüllen.

Tablet-Spezifikationen

Stellen Sie sicher, dass das Tablet die folgenden Spezifikationen erfüllt:

  • Displaygröße (Zoll): 10 Zoll
  • Anzeigegröße (Pixel): größer als 1920 x 1200 Pixel

Weitere Einzelheiten finden Sie unter Tablet-Anforderungen .

Tablet-Helligkeit

Tests führen möglicherweise nicht zu korrekten Ergebnissen, wenn die Helligkeit des Tablet-Displays zu niedrig ist.

Weitere Einzelheiten finden Sie unter Wie steuere ich die Helligkeit des Tablets?

Box-Beleuchtungsstärke (erfordert Luxmeter)

Stellen Sie sicher, dass der Ziel-Lux-Wert beim Öffnen der Tablette zwischen 100 und 300 liegt.

Wenn der Lux-Pegel zu hoch ist, scene1/test_param_flash_mode.py FAIL zurück. Wenn der Lux-Pegel zu niedrig ist, schlagen mehrere Tests fehl.

F8: Wie debugge ich Sensorfusionstests?

  1. Stellen Sie sicher, dass Sie sich in einer dialout -Gruppe befinden.

    groups | egrep ‘dialout'
  2. Stellen Sie sicher, dass der Sensorfusionscontroller angeschlossen ist, indem Sie feststellen, ob Microchip Technology mit dem USB-Anschluss verbunden ist.

    lsusb
    …
    Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc.
    …
    
  3. Führen Sie den Test mit den folgenden Befehlen mehrmals aus, um eine Verteilung der Testversuche zu erhalten.

    In Android 11 oder niedriger:

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

    Unter Android 12:

    python tools/run_sensor_fusion_box.py num_runs=10
    

    Die zusätzlichen Parameter werden in der Datei config.yml gesetzt.

    Laufausgaben befinden sich im Ordner /tmp/tmp### , der unter den Ordnern sensor_fusion_# erstellt wurde, wobei # die Laufnummer ist. Häufige Gründe für das Scheitern sind:

    1. Das Telefon ist nicht richtig zentriert.
    2. Im Bild werden nicht genügend Merkmale gefunden (häufig ein FoV- oder Beleuchtungsproblem).
    3. Das zurückgegebene FAIL ist gültig und der Zeitversatz zwischen der Kamera und dem Gyroskop muss korrigiert werden.

F9: Welche Informationen sollte ich angeben, wenn ich einen Testfehler melde?

Wenn Sie einen Testfehler melden, fügen Sie die generierten Dateien und Bilder für den Test hinzu.

  1. Wenn Sie den Test über tools/run_all_tests.py haben, hängen Sie ein gezipptes Verzeichnis /tmp/ an den Fehler an.
  2. Wenn Sie den Test selbst ausgeführt haben, hängen Sie alle Bildschirmausgaben und generierten Bilder an den Fehler an.

Fügen Sie auch einen Fehlerbericht hinzu. Nachdem der betreffende Test fehlgeschlagen ist, verwenden Sie den folgenden Befehl, um einen Fehlerbericht zu generieren und die generierte ZIP-Datei an den Fehler anzuhängen.

adb -s device_id bugreport

F10: Wie entferne ich die Navigationsleisten auf 16:10-Tablets, die die Szene verdecken?

Bei Tablets mit einem Seitenverhältnis von 16:10 (oder höher) kann die Navigationsleiste einen Teil der Szene verdecken. Um die Navigationsleiste auszublenden, verwenden Sie den folgenden adb-Befehl für das Tablet.

adb -s device_id shell settings put global policy_control immersive.full=*