La fotocamera è in una scatola

Android Camera Image Test Suite (ITS) fa parte di Android Compatibility Test Suite (CTS) Verifier e include test che verificano il contenuto dell'immagine. CTS Verifier supporta l'automazione dei test ITS con Camera ITS-in-a-box; il supporto per i test manuali copre tutti i fattori di forma dei dispositivi Android.

ITS-in-a-box include i seguenti vantaggi:

  • Automazione. Non è necessario alcun intervento umano durante il test.
  • Facile risoluzione dei problemi. La coerenza dell'ambiente di test porta a meno errori di configurazione e aumenta la riproducibilità.
  • Efficienza. La possibilità di riprovare per una singola telecamera/scena migliora l'efficienza di esecuzione del test.

Iniziare

ITS-in-a-box è costituito da una scatola di plastica tagliata al laser da disegni CAD (Computer Aided Design), una tavoletta cartografica e un dispositivo in prova (DUT). È possibile utilizzare l'ITS-in-a-box con campo visivo ampio (WFoV), in grado di testare sia le telecamere WFoV (FoV > 90 gradi) che RFoV (FoV < 90 gradi), oppure il campo di vista normale -view (RFoV) ITS-in-a-box.

Per iniziare con la fotocamera ITS-in-a-box:

  1. Acquista o costruisci un WFoV o RFoV ITS-in-a-box.
  2. Configura un tablet con il software Camera ITS.
  3. Esegui dei test .
  4. Ottieni risultati dal DUT.

Configura la tavoletta

Questa sezione fornisce istruzioni dettagliate per la configurazione di un tablet da utilizzare con i test Camera ITS situati nella directory CameraITS . In queste istruzioni viene utilizzato un Pixel C come tablet di esempio. Per visualizzare l'elenco completo dei tablet consentiti, consulta Lista consentita dei tablet .

Nota: gli script Python di Camera ITS impostano automaticamente le seguenti opzioni sul tablet:
Impostazioni > Display > Sospensione > Dopo 30 minuti di inattività
Luminosità adattiva > OFF

  1. Carica il tablet e accendilo. Se viene richiesto di configurare un account, saltalo (La fotocamera ITS non richiede alcun account associato al tablet).
  2. Aggiorna il tablet ad Android 7.0 o versioni successive. Android 6.x e versioni precedenti non supportano Camera ITS.
  3. Abilita la modalità sviluppatore .
  4. Torna alle Impostazioni e seleziona Opzioni sviluppatore.
    Abilita opzioni
    • SU
    • Stai sveglio
    • Debug USB (consente all'host di eseguire il tablet in modalità debug. Quando si collega il tablet all'host per la prima volta, il tablet richiede Consenti debug USB? Se il tablet non visualizza la richiesta di debug, disconnettersi e ricollegare il tavoletta.)
    Disabilita opzioni
    • Aggiornamenti automatici del sistema
    • Verifica le app tramite USB
  5. Determina il DUT e gli ID della carta eseguendo $ adb devices per elencare i dispositivi disponibili. Per determinare device_id e chart_id , collega e scollega i dispositivi e osserva i dispositivi che si connettono e si disconnettono.
  6. Eseguire tre esecuzioni di prova per eliminare suggerimenti e richieste utente che potrebbero oscurare i grafici sullo schermo del tablet.
    1. Posiziona il tablet a faccia in su su un tavolo (non attaccare il tablet al pannello posteriore della scatola).
    2. Esegui il comando seguente:
      python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
      
      Le scene 2 e 3 richiedono che il tablet visualizzi un'immagine, quindi il tablet richiede Consenti a Drive di accedere a foto, contenuti multimediali e file sul tuo dispositivo? . Cancellare questo messaggio (e impedire messaggi futuri) premendo Consenti.
    3. Esegui nuovamente il comando. Il tablet richiede Conservare una copia di questo file? e suggerisce Google Drive. Cancella questo messaggio (e impedisci messaggi futuri) premendo l'icona Drive, quindi Annulla per caricare su Drive.
    4. Infine, esegui tools/run_all_tests.py e conferma che le scene cambiano automaticamente mentre lo script scorre attraverso scene diverse. Anche se la maggior parte dei test fallisce (poiché la fotocamera non è puntata verso la carta), è possibile verificare che il tablet scorra correttamente tra le scene senza visualizzare alcun messaggio o altri popup sullo schermo.

Esegui dei test

Prima di eseguire ITS-in-a-box, assicurati che la configurazione del test includa i seguenti hardware e software:

  • Un (1) ITS-in-a-box
  • Un (1) tablet nella lista consentita dei tablet per la visualizzazione delle scene, S/N: 5811000011
  • Un (1) DUT su cui è installata l'app CTS Verifier 7.0_8+. Esempio DUT:
    • Un (1) Pixel NOF26W per il test della fotocamera posteriore(0), S/N: FA6BM0305016. Per installare l'app CTS Verifier, decomprimi android-cts-verifier.zip quindi esegui
      adb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
      

Esegui scene basate su tablet

Per eseguire le scene da 0 a 4, 6 e scene_change sulla fotocamera posteriore:

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

Esempio:

S/N della fotocamera 0: FA6BM0305016
Figura 1. S/N della telecamera 0: FA6BM0305016

Riprovare le scene

Puoi riprovare le scene per una singola telecamera:

  • Per riprovare le scene su una singola telecamera:
    python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
    

Esegui la scena 5

La scena 5 richiede una configurazione speciale con illuminazione specifica (per i dettagli, fare riferimento a CameraITS.pdf in CTS Verifier, che è possibile scaricare da Download di Compatibility Test Suite ). È necessario eseguire la scena 5 separatamente (fuori dalla scatola).

scena della telecamera 5
Figura 2. Scena della telecamera 5

Per eseguire la scena 5 per le fotocamere anteriore e posteriore su un singolo 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

Ottieni risultati

È possibile visualizzare i risultati durante il test e salvare i risultati completati come report.

  • Vedi i risultati. Per salvare i risultati ITS della fotocamera come rapporto:
    1. Premi Pass e salva il report.
      rapporto ITS della fotocamera
      Figura 3. Rapporto ITS della telecamera
    2. Estrai report dal dispositivo:
      adb -s FA6BM0305016 pull /sdcard/verifierReports
      
    3. Decomprimere il file del report e visualizzare test_result.xml .
      rapporti ITS della telecamera
      Figura 4. Rapporti ITS della telecamera

Lista consentita per tablet

I tablet nell'elenco vengono scelti in base ai seguenti criteri:

  • Dimensioni del display di circa 10 pollici con una risoluzione dello schermo superiore a 1920 x 1200 pixel
  • Non deve essere presente alcuno sfarfallio misurato causato dall'oscuramento dello schermo controllato dalla modulazione di larghezza di impulso (PWM).
  • In grado di eseguire comandi adb inviati dai test ITS e visualizzare immagini cartografiche con luminosità dello schermo impostata
Il valore brightness deve essere impostato in config.yml in base al modello di tablet. La tabella seguente elenca i tablet consentiti per i test ITS insieme alle versioni di rilascio Android per il DUT con cui funzionano i tablet.

Dispositivo Dimensioni dello schermo
(pollici)
Dimensioni dello schermo
(pixel)
Dimensioni della tavoletta
(pollici)
Schermo
luminosità
Nome del dispositivo
(ro.prodotto
.dispositivo)
Supportato
Sistema operativo DUT
Supportato
sistema operativo del tablet
Google
PixelC
10.2 2560 x 1800 9,53x7,05x0,28 96 Drago Android 7+ Android 6+
Onore
Pad 8
11 2000 x 1200 10,18x6,76x0,29 192 HNHEY-Q Android 14+ Androide 12
Huawei
MediaPad m5
10.8 2560 x 1600 10,96x6,85x0,27 192 HWCMR09 Android 7+ Android 8+
Lenovo
Scheda M10 Plus Gen1
10.3 1920 x 1200 9,61x6,03x0,32 192 X606F Android 12+ Android 9+
SAMSUNG
Galaxy Tab A7
10.4 2000 x 1200 9,75x6,2x0,28 192 gta4lwifi Android 12+ Android 10+
SAMSUNG
Galaxy Tab A8
10.5 1920 x 1200 9,72x6,37x0,27 192 gta8wifi Android 13+ Android 11+
SAMSUNG
Galaxy Tab A9+
11 1920 x 1200 10,12x6,64x0,27 192 gta9pwifi Android 14+ Android 13+
Vivo
Pad2
12.1 2800 x 1968 10,47x7,54x0,26 192 DPD2221 Android 14+ Android 13+
Xiaomi
Pad 5
11 2560 x 1600 10,03x6,55x0,27 192 nabu Android 12+ Android 13+
Xiaomi
Redmi
Pad
10.61 2000 x 1200 9,86x6,22x0,28 192 Yunluo Android 14+ Android 14+
Xiaomi
Redmi
Pad SE
11 2000 x 1200 10,06x6,58x0,29 192 xun Android 14+ Android 13+

Domande frequenti

Q1: Come posso determinare di quali banchi prova ho bisogno per il mio dispositivo?

RFoV ITS-in-a-box revisione 1 testa le telecamere RFoV per i test dalla scena 0 alla scena 4 nella directory CameraITS/tests . RFoV è definito come 60° < FoV < 90° . Per le telecamere FoV più grandi, le luci potrebbero apparire nelle immagini oppure i grafici potrebbero coprire un'area troppo piccola nel FoV, influenzando i risultati dei test.

La revisione 2 di WFoV ITS-in-a-box testa le telecamere WFoV per i test dalla scena 0 alla scena 4 nella directory CameraITS/tests . Il WFoV è definito come FoV >= 90° . Funzionalmente è identico alla revisione 1, ma più grande. Il banco di prova revisione 2 può testare sia le telecamere RFoV che WFoV in Android 9 e versioni successive.

La scatola di fusione dei sensori verifica l'offset temporale della fotocamera/giroscopio e la sincronizzazione dei fotogrammi dei sistemi multi-camera con test in scenes=sensor_fusion . Per il flag di funzione REALTIME è richiesto un offset temporale della telecamera/giroscopio inferiore a 1 ms.

I dispositivi multi-camera possono essere testati con un singolo impianto per test ITS statici e un impianto di fusione dei sensori se la fotocamera ha il flag della funzione REALTIME .

Nella tabella seguente è fornita una serie di configurazioni di esempio.

Esempio FoV della telecamera TEMPO REALE? Impianti consigliati Appunti
1 75° NO Rev 1 o 2 Android 7.0 o versione successiva
2 75° Rev 1 o 2 + fusione del sensore Android 9 o versioni successive
3 75° + 95° Rev 2 + fusione dei sensori Android 9 o versioni successive

Q2: Come posso indicare quale banco di prova è in uso?

Per designare il banco di prova corretto, assicurarsi che il parametro della distanza sulla carta sia corretto. Il banco di prova rev1 (RFoV) ha una distanza della carta di 31 cm, mentre il banco di prova rev2 (WFoV) ha una distanza della carta di 22 cm. Per impostazione predefinita, la distanza della carta è impostata su 31 cm.

Da Android 10 ad Android 11

Per identificare il banco di prova corretto in Android da 10 a 11, aggiungi il flag dist alla riga di comando. Il valore predefinito per dist è 31 . Esegui il comando seguente per modificare il parametro chart_distance .
python tools/run_all_tests.py ... chart=# dist=22

Androide 12

Per identificare il banco di prova corretto in Android 12 puoi modificare il file config.yml per cambiare il parametro chart_distance .
edit config.yml
chart_distance: 31.0 → chart_distance: 22.0

Q3: Come posso controllare la luminosità del tablet?

Per impostazione predefinita, la luminosità del tablet è impostata su 192.

Per modificare la luminosità sui tablet con Android 7.0 fino ad Android 9, esegui:

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

Per modificare la luminosità sui tablet con Android da 10 a 11, il valore può essere modificato dalla riga di comando aggiungendo il flag brightness :

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

Per modificare la luminosità sui tablet con Android 12, esegui:

edit config.yml
brightness: 192 → brightness: 96

Q4: Come posso eseguire il debug di un singolo test?

I test possono essere eseguiti singolarmente a scopo di debug, ma i risultati non vengono segnalati a CtsVerifier.apk a meno che non venga eseguita l'intera scena.

Per eseguire una scena individuale in Android 11 e versioni precedenti:

  1. Carica una scena aggiungendo il flag scenes in tools/run_all_tests.py :
    python tools/run_all_tests.py device=# camera=# chart=# scenes=#
    
  2. Premi Control+C per interrompere i test dopo che la scena è stata registrata come caricata su stdout .

    Se la scena corretta è già sullo schermo, riattiva lo schermo:

    python tools/wake_up_screen.py screen=#
    
  3. Esegui un test individuale.

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

    I grafici vengono quindi generati nella directory locale e stdout e stderr vengono stampati sullo schermo.

    Per ottenere maggiori informazioni per il debug, aggiungere istruzioni print allo script. Per aumentare l'output del test per il debug, aggiungere il flag debug=True .

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

I risultati vengono stampati sullo schermo locale e le immagini vengono salvate nella directory locale anziché nella directory /tmp/tmp### generata durante l'esecuzione tools/run_all_tests.py .

Per eseguire una scena individuale in Android 12:

  1. Modifica il file config.yml .

    edit config.yml
    camera: <camera-id> → camera:  0
    scene: <scene-name> → scene: scene1_1
  2. Esegui il test individuale.

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

I risultati vengono stampati nella directory /tmp/logs/mobly/TEST_BED_TABLET_SCENES/ ordinati in base al tempo di esecuzione.

D5: Perché è necessario eseguire i test non riusciti come un'intera scena invece di rieseguire i test singolarmente?

I test possono essere eseguiti individualmente a scopo di debug, ma i risultati non vengono segnalati a CtsVerifier.apk a meno che non venga eseguita l'intera scena.

Camera ITS garantisce che le app di terze parti dispongano di un'interfaccia fotocamera compatibile. Similmente a un test unitario , ogni test sottolinea una singola specifica nella fotocamera. Per individuare comportamenti inaffidabili, è previsto che questi test vengano superati in gruppo per un'intera scena. Ad esempio, sebbene un singolo test inaffidabile possa superare la ripetizione di un'intera scena, è difficile che più test inaffidabili superino.

Come esempio estremo, si consideri il caso in cui sono presenti 10 test in una scena, ciascuno dei quali ha una probabilità del 50% di restituire PASS . Eseguendo ciascun test individualmente, c'è un'alta probabilità che un operatore riesca a far sì che la telecamera superi Camera ITS. Tuttavia, se i test vengono eseguiti complessivamente come una scena, c'è solo una probabilità dello 0,1% che la scena venga superata.

Q6: Come posso eseguire una singola scena o riordinare le scene eseguite?

Per impostazione predefinita, lo script tools/run_all_tests.py esegue tutte le scene in ordine. Tuttavia, le scene possono essere eseguite individualmente o in un ordine specificato ed essere segnalate a CtsVerifier.apk .

Per eseguire una singola scena (ad esempio, scena 2) o eseguire più di una scena in un ordine specifico in Android 11 o versioni precedenti:

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

Per eseguire una singola scena o eseguire più di una scena in un ordine specifico in Android 12:

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

I parametri aggiuntivi sono impostati nel file config.yml .

D7: Numerosi test della scena 1 falliscono con la configurazione del tablet ma superano con una carta nautica. Cosa c'è che non va?

Assicurarsi che il tablet e l'ambiente di test soddisfino le seguenti specifiche.

Luminosità della tavoletta

I test potrebbero non ottenere risultati corretti se la luminosità del display del tablet è troppo bassa.

Per ulteriori dettagli, vedere Come si controlla la luminosità del tablet?

Livello di illuminazione della scatola (richiede luxmetro)

Assicurati che il valore lux target all'apertura del tablet sia compreso tra 100 e 300.

Se il livello di lux è troppo alto, scene1/test_param_flash_mode.py restituisce FAIL . Se il livello di lux è troppo basso, più test falliscono.

D8: Come si esegue il debug dei test di fusione dei sensori?

  1. Assicurati di far parte di un gruppo dialout .

    groups | egrep ‘dialout'
  2. Assicurarsi che il controller di fusione dei sensori sia collegato determinando se Microchip Technology è collegata alla porta USB.

    lsusb
    …
    Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc.
    …
    
  3. Esegui il test più volte per ottenere una distribuzione dei tentativi di test con i seguenti comandi.

    In Android 11 o versioni precedenti:

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

    Nell'Android 12:

    python tools/run_sensor_fusion_box.py num_runs=10
    

    I parametri aggiuntivi sono impostati nel file config.yml .

    Gli output della corsa si trovano nella cartella /tmp/tmp### creata nelle cartelle sensor_fusion_# , dove # è il numero della corsa. Le ragioni comuni del fallimento sono:

    1. Il telefono non è centrato correttamente.
    2. Nell'immagine non vengono trovate abbastanza funzionalità (spesso un problema di campo visivo o di illuminazione).
    3. Il FAIL restituito è valido e l'offset temporale tra la fotocamera e il giroscopio deve essere corretto.

Q9: Quali informazioni dovrei includere quando riporto un bug di test?

Quando segnali un bug di test, includi i file e le immagini generati per il test.

  1. Se hai eseguito il test tramite tools/run_all_tests.py , allega una directory /tmp/ compressa al bug.
  2. Se hai eseguito il test da solo, allega al bug tutti gli output dello schermo e le immagini generate.

Includere anche una segnalazione di bug. Dopo che il test in questione fallisce, utilizza il comando seguente per generare una segnalazione di bug e allegare il file zip generato al bug.

adb -s device_id bugreport

Q10: Come posso eseguire una scena di test sensor_fusion con una fotocamera che ha una distanza di messa a fuoco minima che crea immagini sfocate a una distanza sulla carta di 25 cm?

Se la fotocamera non riesce a mettere a fuoco a una distanza di 25 cm, rimuovi il pannello di montaggio della tabella della scatola di fusione dei sensori. Posiziona la carta a una distanza in cui il DUT può concentrarsi e modifica chart_distance in config.yml sulla distanza misurata tra il DUT e la carta. La Figura 5 mostra un esempio di come misurare la distanza della carta in questa situazione.

sensor_fusion TELE test di esempio6
Figura 5. Distanza del grafico di misurazione per la scena del test di fusione dei sensori
  edit config.yml
chart_distance: 25 → chart_distance: DISTANCE_BETWEEN_DUT_AND_CHART

Q11: Come posso eseguire scene di test su tablet per una fotocamera con una distanza di messa a fuoco minima che crea immagini sfocate a una distanza sulla carta di 31 cm?

Se la tua fotocamera non è in grado di produrre immagini sufficientemente nitide testando a 31 cm (la profondità del banco di prova RFoV), monta la fotocamera davanti al banco di prova a una distanza tale da consentire alla scena cartografica di riempire circa il 60% del campo della fotocamera. vista (FoV) con immagini più nitide. Questa distanza può essere inferiore alla distanza minima di messa a fuoco della fotocamera. Lasciare chart_distance in config.yml a 31 cm. Il ridimensionamento del grafico sul tablet è determinato dal FoV della fotocamera, come mostrato nella tabella seguente:

Campo visivo della telecamera Fattore di scala del grafico
60 > Campo visivo > 40 0,67x
40 > FoV > 25 0,5x
FoV < 25 0,33x

D12: Con l'API logica multi-camera, quali test vengono eseguiti su quali fotocamere?

Se la tua fotocamera utilizza REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA , tutti i test ITS supportati vengono eseguiti sulla fotocamera logica di livello superiore. Un sottoinsieme dei test ITS viene eseguito sulle fotocamere secondarie fisiche e questi test sono elencati in tools/run_all_tests.py sotto la costante SUB_CAMERA_TESTS .