Aparat ITS-in-a-Box

Pakiet Android Camera Image Test Suite (ITS) jest częścią pakietu Android Compatibility Test Suite (CTS) Verifier i zawiera testy weryfikujące zawartość obrazu. CTS Verifier obsługuje automatyzację testów ITS za pomocą kamery ITS-in-a-box; obsługa testów ręcznych obejmuje wszystkie urządzenia z systemem Android.

Rozwiązanie ITS-in-a-box obejmuje następujące korzyści:

  • Automatyzacja. Podczas testu nie jest wymagana żadna interwencja człowieka.
  • Łatwe rozwiązywanie problemów. Spójność środowiska testowego prowadzi do mniejszej liczby błędów konfiguracji i zwiększa powtarzalność.
  • Efektywność. Możliwość ponawiania prób dla poszczególnych kamer/sceny poprawia efektywność wykonywania testów.

Zaczynaj

ITS-in-a-box składa się z plastikowego pudełka wyciętego laserowo z rysunków wspomaganych komputerowo (CAD), tabletu z wykresami i testowanego urządzenia (DUT). Można użyć kamery ITS-in-a-box o szerokim polu widzenia (WFoV), która umożliwia testowanie zarówno kamer WFoV (FoV > 90 stopni), jak i RFoV (FoV < 90 stopni), lub zwykłego -view (RFoV) ITS-in-a-box.

Aby rozpocząć pracę z kamerą ITS-in-a-box:

  1. Kup lub zbuduj moduł ITS WFoV lub RFoV .
  2. Skonfiguruj tablet za pomocą oprogramowania Camera ITS.
  3. Uruchom testy .
  4. Uzyskaj wyniki z DUT.

Skonfiguruj tablet

W tej sekcji znajdują się instrukcje krok po kroku dotyczące konfigurowania tabletu do użytku z testami Camera ITS znajdującymi się w katalogu CameraITS . W tych instrukcjach wykorzystano Pixel C jako przykładowy tablet. Aby zobaczyć pełną listę dozwolonych tabletów, zobacz Lista dozwolonych tabletów .

Uwaga: skrypty Pythona Camera ITS automatycznie ustawiają na tablecie następujące opcje:
Ustawienia > Wyświetlacz > Uśpienie > Po 30 minutach bezczynności
Jasność adaptacyjna > WYŁ

  1. Naładuj tablet i włącz go. Jeśli pojawi się monit o założenie konta, pomiń go (Camera ITS nie wymaga żadnego konta sparowanego z tabletem).
  2. Zaktualizuj tablet do Androida 7.0 lub nowszego. Android 6.x i starsze wersje nie obsługują Camera ITS.
  3. Włącz tryb programisty .
  4. Wróć do Ustawień i wybierz Opcje programisty.
    Włącz opcje
    • NA
    • Nie zasypiaj
    • Debugowanie USB (umożliwia to hostowi uruchomienie tabletu w trybie debugowania. Po podłączeniu tabletu do hosta po raz pierwszy na tablecie zostanie wyświetlony monit Zezwól na debugowanie USB? Jeśli na tablecie nie zostanie wyświetlony monit o debugowanie, odłącz, a następnie podłącz ponownie tablet.)
    Wyłącz opcje
    • Automatyczne aktualizacje systemu
    • Sprawdź aplikacje przez USB
  5. Określ identyfikatory DUT i wykresów, uruchamiając $ adb devices w celu wyświetlenia listy dostępnych urządzeń. Aby określić device_id i chart_id , podłącz i odłącz urządzenia i obserwuj, które urządzenia się łączą i odłączają.
  6. Wykonaj trzy przebiegi testowe, aby ukryć wskazówki i monity użytkownika, które mogą zasłaniać wykresy na ekranie tabletu.
    1. Połóż tablet ekranem do góry na stole (nie mocuj tabletu do tylnego panelu pudełka).
    2. Uruchom następujące polecenie:
      python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
      
      Sceny 2 i 3 wymagają, aby tablet wyświetlał obraz, więc tablet wyświetli monit Zezwolić Dyskowi na dostęp do zdjęć, multimediów i plików na Twoim urządzeniu? . Wyczyść ten monit (i zapobiegnij pojawianiu się kolejnych monitów), naciskając Zezwalaj.
    3. Uruchom polecenie ponownie. Tablet wyświetli monit Zachować kopię tego pliku? i sugeruje Dysk Google. Usuń ten monit (i zapobiegnij pojawianiu się w przyszłości), naciskając ikonę Dysku, a następnie Anuluj , aby przesłać na dysk.
    4. Na koniec uruchom tools/run_all_tests.py i potwierdź, że sceny zmieniają się automatycznie w miarę przełączania się skryptu pomiędzy różnymi scenami. Chociaż większość testów kończy się niepowodzeniem (ponieważ kamera nie jest skierowana na wykres), możesz sprawdzić, czy tablet prawidłowo przełącza sceny, nie wyświetlając żadnych podpowiedzi ani innych wyskakujących okienek na ekranie.

Uruchom testy

Przed uruchomieniem rozwiązania ITS-in-a-box upewnij się, że konfiguracja testowa obejmuje następujący sprzęt i oprogramowanie:

  • Jeden (1) zestaw ITS w pudełku
  • Jeden (1) tablet na liście dozwolonych tabletów do wyświetlania scen, nr seryjny: 5811000011
  • Jeden (1) testowany tester z zainstalowaną aplikacją CTS Verifier 7.0_8+. Przykład DUT:
    • Jeden (1) piksel NOF26W do testowania tylnej kamery (0), S/N: FA6BM0305016. Aby zainstalować aplikację CTS Verifier, rozpakuj plik android-cts-verifier.zip , a następnie uruchom
      adb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
      

Uruchamiaj sceny na tablecie

Aby uruchomić sceny od 0 do 4, 6 i zmianę sceny w tylnej kamerze:

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

Przykład:

Kamera 0 S/N: FA6BM0305016
Rysunek 1. Numer seryjny kamery 0: FA6BM0305016

Spróbuj ponownie scen

Możesz ponowić próbę scen dla pojedynczej kamery:

  • Aby ponowić próbę scen w pojedynczej kamerze:
    python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
    

Uruchom scenę 5

Scena 5 wymaga specjalnej konfiguracji z określonym oświetleniem (więcej szczegółów można znaleźć w CameraITS.pdf w CTS Verifier, który można pobrać ze strony Compatibility Test Suite Downloads ). Scenę 5 należy uruchomić osobno (poza pudełkiem).

scena z kamery 5
Rysunek 2. Scena z kamery 5

Aby uruchomić scenę 5 dla kamery przedniej i tylnej na jednym urządzeniu:

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

Uzyskać rezultaty

Możesz przeglądać wyniki podczas testowania i zapisywać ukończone wyniki w postaci raportu.

  • Pokaż wyniki. Aby zapisać wyniki Camera ITS jako raport:
    1. Naciśnij opcję Pass i zapisz raport.
      Raport ITS z kamery
      Rysunek 3. Raport ITS z kamery
    2. Pobierz raporty z urządzenia:
      adb -s FA6BM0305016 pull /sdcard/verifierReports
      
    3. Rozpakuj plik raportu i wyświetl plik test_result.xml .
      raporty ITS z kamery
      Rysunek 4. Raporty ITS z kamery

Lista dozwolonych tabletów

Tablety na liście wybierane są na podstawie następujących kryteriów:

  • Rozmiar wyświetlacza około 10 cali przy rozdzielczości ekranu większej niż 1920 x 1200 pikseli
  • Nie może wykazywać żadnego mierzonego migotania spowodowanego przyciemnianiem ekranu sterowanym modulacją szerokości impulsu (PWM).
  • Potrafi wykonywać polecenia adb wysyłane przez testy ITS i wyświetlać obrazy wykresów z określoną jasnością ekranu
Wartość brightness należy ustawić w config.yml zgodnie z modelem tabletu. Poniższa tabela zawiera listę tabletów dozwolonych do testowania ITS wraz z wersjami systemu Android dla testowanego urządzenia, z którym współpracują tablety.

Urządzenie Rozmiar wyświetlacza
(cale)
Rozmiar wyświetlacza
(piksele)
Wymiary tabletu
(cale)
Wyświetlacz
jasność
Nazwa urządzenia
(ro.produkt
.urządzenie)
Utrzymany
DUT OS
Utrzymany
system operacyjny tabletu
Google
Piksel C
10.2 2560 x 1800 9,53 x 7,05 x 0,28 96 smok Androida 7+ Androida 6+
Honor
Podkładka 8
11 2000 x 1200 10,18 x 6,76 x 0,29 192 HNHEY-Q Androida 14+ Androida 12
Huaweia
MediaPad m5
10.8 2560 x 1600 10,96 x 6,85 x 0,27 192 HWCMR09 Androida 7+ Androida 8+
Lenovo
Zakładka M10 Plus Gen1
10.3 1920x1200 9,61 x 6,03 x 0,32 192 X606F Androida 12+ Androida 9+
SAMSUNG
Galaxy Tab A7
10.4 2000 x 1200 9,75 x 6,2 x 0,28 192 gta4lwifi Androida 12+ Androida 10+
SAMSUNG
Karta Galaxy A8
10,5 1920x1200 9,72 x 6,37 x 0,27 192 gta8wifi Androida 13+ Androida 11+
SAMSUNG
Galaxy Tab A9+
11 1920x1200 10,12 x 6,64 x 0,27 192 gta9pwifi Androida 14+ Androida 13+
Życie
Pad2
12.1 2800x1968 10,47 x 7,54 x 0,26 192 DPD2221 Androida 14+ Androida 13+
Xiaomi
Podkładka 5
11 2560 x 1600 10,03 x 6,55 x 0,27 192 nabu Androida 12+ Androida 13+
Xiaomi
Redmi
Podkładka
10.61 2000 x 1200 9,86 x 6,22 x 0,28 192 Yunluo Androida 14+ Androida 14+
Xiaomi
Redmi
Pad SE
11 2000 x 1200 10,06 x 6,58 x 0,29 192 xun Androida 14+ Androida 13+

Często Zadawane Pytania

P1: Jak określić, jakich stanowisk testowych potrzebuję do mojego urządzenia?

RFoV ITS-in-a-box w wersji 1 testuje kamery RFoV pod kątem testów od scen 0 do scen 4 w katalogu CameraITS/tests . RFoV definiuje się jako 60° < FoV < 90° . W przypadku większych kamer FoV światła mogą pojawić się na obrazach lub wykresy mogą obejmować zbyt mały obszar pola widzenia, co będzie miało wpływ na wyniki testu.

WFoV ITS-in-a-box wersja 2 testuje kamery WFoV pod kątem testów od scen 0 do scen 4 w katalogu CameraITS/tests . WFoV definiuje się jako FoV >= 90° . Jest funkcjonalnie identyczny z wersją 1, ale większy. Stanowisko testowe w wersji 2 może testować zarówno kamery RFoV, jak i WFoV w systemie Android 9 i nowszych wersjach.

Skrzynka łączenia czujników testuje przesunięcie taktowania kamery/żyroskopu i synchronizację klatek w systemach z wieloma kamerami za pomocą testów w scenes=sensor_fusion . Dla flagi funkcji REALTIME wymagane jest przesunięcie taktowania kamery/żyroskopu mniejsze niż 1 ms.

Urządzenia wyposażone w wiele kamer można testować za pomocą jednego urządzenia do testów statycznych ITS oraz zestawu do fuzji czujników, jeśli kamera ma flagę funkcji REALTIME .

Zestaw przykładowych konfiguracji przedstawiono w poniższej tabeli.

Przykład FoV z kamery CZAS RZECZYWISTY? Polecane sprzęty Notatki
1 75° NIE Wersja 1 lub 2 Android 7.0 lub nowszy
2 75° Tak Wersja 1 lub 2 + fuzja czujnika Android 9 lub nowszy
3 75° + 95° Tak Wersja 2 + fuzja czujników Android 9 lub nowszy

P2: Jak określić, które stanowisko testowe jest używane?

Aby wyznaczyć właściwe stanowisko badawcze, należy upewnić się, że parametr odległości mapy jest prawidłowy. Urządzenie testowe Rev1 (RFoV) ma odległość od mapy 31 cm, a urządzenie Rev2 (WFoV) ma odległość od mapy 22 cm. Domyślnie odległość między wykresami jest ustawiona na 31 cm.

Androida 10 na Androida 11

Aby zidentyfikować prawidłowe urządzenie testowe w Androidzie od 10 do 11, dodaj flagę dist w wierszu poleceń. Domyślna wartość dist to 31 . Uruchom następujące polecenie, aby zmienić parametr chart_distance .
python tools/run_all_tests.py ... chart=# dist=22

Androida 12

Aby zidentyfikować prawidłowe urządzenie testowe w systemie Android 12, możesz edytować plik config.yml, zmieniając parametr chart_distance .
edit config.yml
chart_distance: 31.0 → chart_distance: 22.0

P3: Jak kontrolować jasność tabletu?

Domyślnie jasność tabletu jest ustawiona na 192.

Aby zmienić jasność na tabletach z systemem Android 7.0 do Android 9, uruchom:

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

Aby zmienić jasność na tabletach z systemem Android 10 do 11, wartość można zmienić w wierszu poleceń, dodając flagę brightness :

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

Aby zmienić jasność na tabletach z systemem Android 12, uruchom:

edit config.yml
brightness: 192 → brightness: 96

P4: Jak debugować pojedynczy test?

Testy można uruchamiać indywidualnie w celu debugowania, ale wyniki nie są raportowane do CtsVerifier.apk , chyba że zostanie uruchomiona cała scena.

Aby uruchomić pojedynczą scenę w systemie Android 11 i starszym:

  1. Załaduj scenę, dodając flagę scenes w tools/run_all_tests.py :
    python tools/run_all_tests.py device=# camera=# chart=# scenes=#
    
  2. Naciśnij Control+C, aby zatrzymać testy po zarejestrowaniu sceny jako załadowanej na stdout .

    Jeśli właściwa scena jest już na ekranie, wybudź ekran:

    python tools/wake_up_screen.py screen=#
    
  3. Przeprowadź indywidualny test.

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

    Następnie w katalogu lokalnym generowane są wykresy, a na ekranie wyświetlane są stdout i stderr .

    Aby uzyskać więcej informacji na temat debugowania, dodaj do skryptu instrukcje print . Aby zwiększyć wynik testu dla debugowania, dodaj flagę debug=True .

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

Wyniki są drukowane na ekranie lokalnym, a obrazy zapisywane są w katalogu lokalnym zamiast w wygenerowanym katalogu /tmp/tmp### podczas uruchamiania tools/run_all_tests.py .

Aby uruchomić pojedynczą scenę w systemie Android 12:

  1. Edytuj plik config.yml .

    edit config.yml
    camera: <camera-id> → camera:  0
    scene: <scene-name> → scene: scene1_1
  2. Uruchom indywidualny test.

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

Wyniki są drukowane w katalogu /tmp/logs/mobly/TEST_BED_TABLET_SCENES/ posortowane według czasu wykonania.

P5: Dlaczego muszę uruchamiać testy zakończone niepowodzeniem jako całą scenę, zamiast ponownie uruchamiać testy indywidualnie?

Testy można uruchamiać indywidualnie w celu debugowania, ale wyniki nie są raportowane do CtsVerifier.apk , chyba że zostanie uruchomiona cała scena.

Camera ITS zapewnia, że ​​aplikacje innych firm mają kompatybilny interfejs aparatu. Podobnie jak w przypadku testu jednostkowego , każdy test obciąża pojedynczą specyfikację w aparacie. Aby wychwycić niewiarygodne zachowanie, oczekuje się, że testy te przejdą jako grupa dla całej sceny. Na przykład, chociaż pojedynczy zawodny test może przejść pomyślnie powtórkę całej sceny, wiele niewiarygodnych testów może przejść pomyślnie.

Jako skrajny przykład rozważmy przypadek, w którym w scenie znajduje się 10 testów, z których każdy ma 50% prawdopodobieństwa zwrotu PASS . Uruchamiając każdy test indywidualnie, istnieje duża szansa, że ​​operator uda się przekonać kamerę do pozytywnego wyniku testu Camera ITS. Jeśli jednak testy zostaną przeprowadzone łącznie jako scena, prawdopodobieństwo, że scena przejdzie pomyślnie, wynosi tylko 0,1%.

P6: Jak uruchomić pojedynczą scenę lub zmienić kolejność odtwarzanych scen?

Domyślnie skrypt tools/run_all_tests.py uruchamia wszystkie sceny w określonej kolejności. Sceny można jednak uruchamiać pojedynczo lub w określonej kolejności i raportować do CtsVerifier.apk .

Aby uruchomić pojedynczą scenę (na przykład scenę 2) lub uruchomić więcej niż jedną scenę w określonej kolejności w systemie Android 11 lub starszym:

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

Aby uruchomić pojedynczą scenę lub więcej niż jedną scenę w określonej kolejności w systemie Android 12:

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

Dodatkowe parametry ustawiane są w pliku config.yml .

Pytanie 7: Wiele testów sceny 1 kończy się niepowodzeniem w przypadku konfiguracji tabletu, ale przechodzi pomyślnie w przypadku wykresu papierowego. Co jest nie tak?

Upewnij się, że tablet i środowisko testowe spełniają poniższe specyfikacje.

Jasność tabletu

Testy mogą nie dać prawidłowych wyników, jeśli jasność wyświetlacza tabletu jest zbyt niska.

Aby uzyskać więcej informacji, zobacz Jak kontrolować jasność tabletu?

Poziom oświetlenia skrzynki (wymaga luksomierza)

Upewnij się, że docelowa wartość luksów przy otwieraniu tabletu mieści się w przedziale od 100 do 300.

Jeśli poziom luksów jest zbyt wysoki, scene1/test_param_flash_mode.py zwraca FAIL . Jeśli poziom luksów jest zbyt niski, wiele testów kończy się niepowodzeniem.

P8: Jak debugować testy fuzji czujnika?

  1. Upewnij się, że należysz do grupy dialout .

    groups | egrep ‘dialout'
  2. Upewnij się, że kontroler fuzji czujnika jest podłączony, sprawdzając, czy technologia Microchip jest podłączona do portu USB.

    lsusb
    …
    Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc.
    …
    
  3. Uruchom test wiele razy, aby uzyskać rozkład prób testów za pomocą następujących poleceń.

    W systemie Android 11 lub starszym:

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

    W Androidzie 12:

    python tools/run_sensor_fusion_box.py num_runs=10
    

    Dodatkowe parametry ustawiane są w pliku config.yml .

    Wyniki przebiegu znajdują się w folderze /tmp/tmp### utworzonym w folderach sensor_fusion_# , gdzie # jest numerem przebiegu. Najczęstsze przyczyny niepowodzeń to:

    1. Telefon nie jest prawidłowo wyśrodkowany.
    2. Na obrazie nie widać wystarczającej liczby funkcji (często jest to problem z FoV lub oświetleniem).
    3. Zwrócony komunikat FAIL jest prawidłowy i należy skorygować przesunięcie czasowe pomiędzy kamerą a żyroskopem.

P9: Jakie informacje powinienem podać, zgłaszając błąd testowy?

Zgłaszając błąd testowy, dołącz wygenerowane pliki i obrazy do testu.

  1. Jeśli przeprowadziłeś test za pomocą tools/run_all_tests.py , dołącz spakowany katalog /tmp/ do błędu.
  2. Jeśli przeprowadziłeś test samodzielnie, dołącz do błędu wszystkie wyniki ekranu i wygenerowane obrazy.

Dołącz także raport o błędzie. Jeśli dany test zakończy się niepowodzeniem, użyj następującego polecenia, aby wygenerować raport o błędzie i załączyć wygenerowany plik ZIP do błędu.

adb -s device_id bugreport

P10: Jak uruchomić scenę testową sensor_fusion za pomocą aparatu, który ma minimalną odległość ostrzenia, która tworzy rozmyte obrazy przy odległości mapy wynoszącej 25 cm?

Jeśli aparat nie może ustawić ostrości z odległości 25 cm, zdejmij panel montażowy mapy ze skrzynki zgrzewającej czujnik. Umieść wykres w odległości, na której testowane urządzenie może się skupić, i zmień chart_distance w config.yml na zmierzoną odległość pomiędzy testowanym urządzeniem a wykresem. Rysunek 5 pokazuje przykład pomiaru odległości mapy w tej sytuacji.

sensor_fusion Przykład testu TELE6
Rysunek 5. Wykres pomiarowy odległości dla sceny testu fuzji czujnika
  edit config.yml
chart_distance: 25 → chart_distance: DISTANCE_BETWEEN_DUT_AND_CHART

P11: Jak uruchomić sceny testowe na tablecie dla kamery z minimalną odległością ostrzenia, która powoduje rozmycie obrazu przy odległości mapy wynoszącej 31 cm?

Jeśli Twoja kamera nie jest w stanie uzyskać wystarczająco ostrych obrazów, testując na głębokości 31 cm (głębokość stanowiska testowego RFoV), zamontuj kamerę przed platformą w takiej odległości, aby scena mapy wypełniła około 60% pola kamery widok (FoV) z ostrzejszymi obrazami. Odległość ta może być mniejsza niż minimalna odległość ogniskowania aparatu. Pozostaw chart_distance w config.yml na 31 cm. Skalowanie mapy na tablecie zależy od pola widzenia kamery, jak pokazano w poniższej tabeli:

FoV kamery Współczynnik skalowania wykresu
60 > FoV > 40 0,67x
40 > FoV > 25 0,5x
FoV < 25 0,33x

Pytanie 12: Jakie testy przeprowadzane są w przypadku logicznego interfejsu API obsługującego wiele kamer?

Jeśli Twoja kamera korzysta z REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA , wszystkie obsługiwane testy ITS są uruchamiane na kamerze logicznej najwyższego poziomu. Podzbiór testów ITS jest przeprowadzany na fizycznych kamerach podrzędnych, a testy te są wymienione w tools/run_all_tests.py pod stałą SUB_CAMERA_TESTS .