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 die 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 bietet folgende 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, für einzelne Kameras/Szenen einen Wiederholungsversuch durchzuführen, verbessert die Effizienz der Testausführung.

Loslegen

ITS-in-a-box besteht aus einer Kunststoffbox, die aus CAD-Zeichnungen (Computer Aided Design) lasergeschnitten wurde, einem Diagrammtablett und einem Prüfling (Device Under Test, DUT). Sie können das Wide Field of View (WFoV) ITS-in-a-box verwenden, mit dem sowohl WFoV-Kameras (FoV > 90 Grad) als auch RFoV-Kameras (FoV < 90 Grad) getestet werden können, oder das reguläre Sichtfeld -view (RFoV) ITS-in-a-box.

So starten Sie mit der Kamera 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 Sie das Tablet

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

Hinweis: Die Camera ITS Python-Skripte legen automatisch die folgenden Optionen auf dem Tablet für Sie fest:
Einstellungen > Anzeige > Ruhezustand > 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 (Camera ITS erfordert kein mit dem Tablet gekoppeltes Konto).
  2. Aktualisieren Sie das Tablet auf Android 7.0 oder höher. Android 6.x und niedrigere Versionen unterstützen Camera ITS nicht.
  3. Aktivieren Sie den Entwicklermodus .
  4. Kehren Sie zu den Einstellungen zurück und wählen Sie Entwickleroptionen.
    Optionen aktivieren
    • An
    • Wach bleiben
    • USB-Debugging (Dadurch kann der Host das Tablet im Debug-Modus ausführen. Wenn Sie das Tablet zum ersten Mal mit dem Host verbinden, werden Sie auf dem Tablet aufgefordert , USB-Debugging zuzulassen? Wenn das Tablet die Debug-Eingabeaufforderung nicht anzeigt, trennen Sie es und schließen Sie es erneut an Tablette.)
    Optionen deaktivieren
    • Automatische Systemaktualisierungen
    • Überprüfen Sie Apps über USB
  5. Bestimmen Sie DUT- und Diagramm-IDs, indem Sie $ adb devices ausführen, um die verfügbaren Geräte aufzulisten. Um device_id und chart_id zu ermitteln, stecken Sie Geräte ein und aus und beobachten Sie die Geräte, die sich verbinden und trennen.
  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ückseite der Verpackung).
    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
      
      In den Szenen 2 und 3 muss das Tablet ein Bild anzeigen. Das Tablet fragt daher : „Drive erlauben, auf Fotos, Medien und Dateien auf Ihrem Gerät zuzugreifen?“ . 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 dazu auf, eine Kopie dieser Datei zu behalten? und schlägt Google Drive vor. Löschen Sie diese Aufforderung (und verhindern Sie zukünftige Aufforderungen), indem Sie zum Hochladen auf das Laufwerk auf das Laufwerkssymbol und dann auf „Abbrechen“ klicken.
    4. Führen Sie abschließend tools/run_all_tests.py aus und bestätigen Sie, dass sich Szenen automatisch ändern, wenn das Skript durch verschiedene Szenen wechselt. 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 Eingabeaufforderungen oder andere Popups auf dem Bildschirm anzuzeigen.

Führen Sie Tests durch

Stellen Sie vor der Ausführung von ITS-in-a-box sicher, dass Ihr Testaufbau die folgende Hardware und Software umfasst:

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

Führen Sie Tablet-basierte Szenen aus

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 S/N: FA6BM0305016
Abbildung 1. Kamera 0 S/N: FA6BM0305016

Szenen wiederholen

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
    

Führen Sie Szene 5 aus

Szene 5 erfordert eine spezielle Einrichtung mit spezifischer Beleuchtung (Einzelheiten finden Sie in CameraITS.pdf im 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 Vorder- und Rückkamera 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 bekommen

Sie können die Ergebnisse während des Tests anzeigen und die abgeschlossenen 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 sehen Sie sich test_result.xml an.
      Kamera ITS-Berichte
      Abbildung 4. Kamera-ITS-Berichte

Tablet-Anforderungen

Tablets müssen eine Displaygröße von etwa 10 Zoll und eine Bildschirmauflösung von mehr als 1920 x 1200 Pixeln haben. Der brightness muss entsprechend dem Tablet-Modell in 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
Unterstützt
Tablet-Betriebssystem
Samsung
Galaxy Tab A8
10.5 1920 x 1200 9,72 x 6,37 x 0,27 192 8 Android 13+ Android 11+
Xiaomi
Block 5
11 2560 x 1600 10,03 x 6,55 x 0,27 1024 11 Android 12+ Nur Android 11
Lenovo
Tab 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
MediaPad 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
Xperia Z4
10.1 2560 x 1600 10 x 6,57 x 0,24 192 8 Android 7+ Android 5+

Häufig gestellte Fragen

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 Tests von Szene 0 bis Szene 4 im Verzeichnis CameraITS/tests . RFoV ist definiert als 60° < FoV < 90° . Bei Kameras mit größerem FoV können die Lichter in den Bildern erscheinen oder die Diagramme decken möglicherweise einen zu kleinen Bereich im FoV ab, was sich auf die Testergebnisse auswirkt.

Die WFoV ITS-in-a-box Revision 2 testet WFoV-Kameras für Tests von Szene 0 bis Szene 4 im Verzeichnis 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 Bildsynchronisierung von Mehrkamerasystemen mit Tests in scenes=sensor_fusion . Für das Feature-Flag REALTIME ist ein Kamera-/Gyroskop-Timing-Offset von weniger als 1 ms erforderlich.

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

Eine Reihe von Beispielkonfigurationen finden Sie in der folgenden Tabelle.

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

F2: Wie bezeichne ich, welcher Prüfstand im Einsatz ist?

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

Android 10 bis Android 11

Um den richtigen Prüfstand 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 Tablet-Helligkeit?

Standardmäßig ist die Tablet-Helligkeit 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 durch Hinzufügen des brightness geändert werden:

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 Debugzwecken einzeln ausgeführt werden, die Ergebnisse werden jedoch 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 hinzufügen:
    python tools/run_all_tests.py device=# camera=# chart=# scenes=#
    
  2. Drücken Sie Strg+C, um die Tests anzuhalten, nachdem die Szene als in stdout geladen 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=#

    Anschließend werden Diagramme im lokalen Verzeichnis erstellt und stdout und stderr auf dem Bildschirm ausgegeben.

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

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

Die Ergebnisse werden auf dem lokalen Bildschirm gedruckt und Bilder werden im lokalen Verzeichnis statt im generierten Verzeichnis /tmp/tmp### gespeichert, wenn tools/run_all_tests.py ausgeführt wird.

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 Verzeichnis /tmp/logs/mobly/TEST_BED_TABLET_SCENES/ gedruckt, sortiert nach Laufzeit.

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

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

Camera ITS stellt sicher, dass Apps von Drittanbietern über eine kompatible Kameraschnittstelle verfügen. Ähnlich wie bei einem Unit-Test 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 gesamte Szene bestanden werden. Obwohl beispielsweise ein einzelner unzuverlässiger Test eine Wiederholung einer gesamten Szene bestehen kann, ist es für mehrere unzuverlässige Tests schwierig, ihn zu bestehen.

Betrachten Sie als extremes Beispiel den Fall, dass es 10 Tests in einer Szene gibt, bei denen jeder eine 50-prozentige Wahrscheinlichkeit hat, PASS zurückzugeben. Wenn jeder Test einzeln ausgeführt wird, besteht eine hohe Chance, dass ein Bediener die Kamera dazu bringt, den Camera ITS zu bestehen. Wenn die Tests jedoch insgesamt als Szene ausgeführt werden, beträgt die Wahrscheinlichkeit, dass die Szene erfolgreich ist, nur 0,1 %.

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 festgelegt.

F7: Eine Reihe von Szenen-1-Tests schlagen mit der Tablet-Einrichtung fehl, bestehen aber mit einer Papierkarte. 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 liefern möglicherweise keine korrekten Ergebnisse, wenn die Helligkeit des Tablet-Displays zu niedrig ist.

Weitere Einzelheiten finden Sie unter Wie steuere ich die Tablet-Helligkeit?

Beleuchtungsniveau der Box (erfordert Luxmeter)

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

Wenn der Lux-Wert zu hoch ist, gibt scene1/test_param_flash_mode.py FAIL zurück. Wenn die Lux-Stufe 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
    

    In Android 12:

    python tools/run_sensor_fusion_box.py num_runs=10
    

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

    Die Laufausgaben befinden sich im Ordner /tmp/tmp### , der unter den sensor_fusion_# Ordnern 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 sind nicht genügend Merkmale vorhanden (oft 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 bei.

  1. Wenn Sie den Test über tools/run_all_tests.py ausgeführt haben, hängen Sie ein komprimiertes /tmp/ -Verzeichnis an den Fehler an.
  2. Wenn Sie den Test alleine 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, erstellen Sie mit dem folgenden Befehl einen Fehlerbericht und hängen Sie die generierte ZIP-Datei an den Fehler an.

adb -s device_id bugreport

F10: Wie führe ich eine Sensor_Fusion-Testszene mit einer Kamera durch, deren minimaler Fokusabstand bei einem Kartenabstand von 25 cm zu verschwommenen Bildern führt?

Wenn Ihre Kamera bei einer Entfernung von 25 cm nicht fokussieren kann, entfernen Sie die Kartenmontageplatte der Sensorfusionsbox. Platzieren Sie das Diagramm in einer Entfernung, auf die das DUT fokussieren kann, und ändern Sie chart_distance in config.yml auf den gemessenen Abstand zwischen dem DUT und dem Diagramm. Abbildung 5 zeigt ein Beispiel für die Messung der Kartenentfernung in dieser Situation.

sensor_fusion TELE-Testbeispiel6
Abbildung 5. Messdiagrammentfernung für die Sensorfusionstestszene
  edit config.yml
chart_distance: 25 → chart_distance: DISTANCE_BETWEEN_DUT_AND_CHART

F11: Wie führe ich Tablet-Testszenen für eine Kamera mit einem minimalen Fokusabstand aus, der bei einem Kartenabstand von 31 cm verschwommene Bilder erzeugt?

Wenn Ihre Kamera bei Tests in 31 cm (der Tiefe des RFoV-Testgeräts) keine ausreichend scharfen Bilder erzeugen kann, montieren Sie Ihre Kamera in einem Abstand vor dem Gerät, damit die Kartenszene etwa 60 % des Kamerafelds ausfüllen kann Ansicht (FoV) mit schärferen Bildern. Dieser Abstand kann geringer sein als der minimale Fokusabstand der Kamera. Belassen Sie den chart_distance in config.yml bei 31 cm. Die Diagrammskalierung auf dem Tablet wird durch das Kamera-FoV bestimmt, wie in der folgenden Tabelle dargestellt:

Kamera-FoV Skalierungsfaktor des Diagramms
60 > FoV > 40 0,67x
40 > FoV > 25 0,5x
FoV < 25 0,33x

F12: Welche Tests werden mit der logischen Multikamera-API auf welchen Kameras ausgeführt?

Wenn Ihre Kamera REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA verwendet, werden alle unterstützten ITS-Tests auf der logischen Kamera der obersten Ebene ausgeführt. Eine Teilmenge der ITS-Tests wird auf den physischen Unterkameras ausgeführt, und diese Tests werden in tools/run_all_tests.py unter der Konstante SUB_CAMERA_TESTS aufgeführt.