Câmera ITS-in-a-Box

O Android Camera Image Test Suite (ITS) faz parte do Android Compatibility Test Suite (CTS) Verifier e inclui testes que verificam o conteúdo da imagem. O CTS Verifier oferece suporte à automação de testes ITS com Camera ITS-in-a-box; o suporte para testes manuais abrange todos os formatos de dispositivos Android.

ITS-in-a-box inclui os seguintes benefícios:

  • Automação. Nenhuma intervenção humana é necessária durante o teste.
  • Solução de problemas fácil. A consistência do ambiente de teste leva a menos erros de configuração e aumenta a reprodutibilidade.
  • Eficiência. A capacidade de tentar novamente para câmeras/cenas individuais melhora a eficiência da execução do teste.

iniciar

O ITS-in-a-box consiste em uma caixa de plástico cortada a laser a partir de desenhos de design auxiliado por computador (CAD), um tablet gráfico e um dispositivo em teste (DUT). Você pode usar o ITS-in-a-box de amplo campo de visão (WFoV), que é capaz de testar câmeras WFoV (FoV > 90 graus) e RFoV (FoV < 90 graus), ou o campo de visão regular -view (RFoV) ITS-in-a-box.

Para começar com a câmera ITS-in-a-box:

  1. Compre ou construa um ITS-in-a-box WFoV ou RFoV .
  2. Configure um tablet com o software Camera ITS.
  3. Execute testes .
  4. Obtenha resultados do DUT.

Configurar o tablet

Esta seção fornece instruções passo a passo para configurar um tablet para uso com os testes Camera ITS localizados no diretório CameraITS . Estas instruções usam um Pixel C como tablet de exemplo. Para obter informações sobre os requisitos e recomendações do tablet, consulte Requisitos do tablet .

Observação: os scripts Python do Camera ITS definem automaticamente as seguintes opções no tablet para você:
Configurações > Tela > Suspensão > Após 30 minutos de inatividade
Brilho adaptável > DESLIGADO

  1. Carregue o tablet e ligue-o. Se for solicitado a configurar uma conta, ignore-a (o Camera ITS não requer nenhuma conta emparelhada com o tablet).
  2. Atualize o tablet para Android 7.0 ou superior. Android 6.x e versões anteriores não são compatíveis com Camera ITS.
  3. Ative o modo de desenvolvedor .
  4. Volte para Configurações e selecione Opções do desenvolvedor.
    Habilitar opções
    • Sobre
    • Fique acordado
    • Depuração USB (Isso permite que o host execute o tablet no modo de depuração. Quando você conecta o tablet ao host pela primeira vez, o tablet solicita Permitir depuração USB? Se o tablet não exibir o prompt de depuração, desconecte e reconecte o tábua.)
    Desativar opções
    • Atualizações automáticas do sistema
    • Verifique aplicativos por USB
  5. Determine os IDs do DUT e do gráfico executando $ adb devices para listar os dispositivos disponíveis. Para determinar device_id e chart_id , conecte e desconecte dispositivos e observe os dispositivos que se conectam e desconectam.
  6. Execute três testes para suprimir dicas e solicitações do usuário que podem obscurecer os gráficos na tela do tablet.
    1. Posicione o tablet voltado para cima sobre uma mesa (não prenda o tablet no painel traseiro da caixa).
    2. Execute o seguinte comando:
      python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
      
      As cenas 2 e 3 exigem que o tablet exiba uma imagem, então o tablet solicita Permitir que o Drive acesse fotos, mídia e arquivos no seu dispositivo? . Limpe este prompt (e evite avisos futuros) pressionando Permitir.
    3. Execute o comando novamente. O tablet solicita Manter uma cópia deste arquivo? e sugere o Google Drive. Limpe esse prompt (e evite avisos futuros) pressionando o ícone do Drive e depois Cancelar para fazer upload para o drive.
    4. Por fim, execute tools/run_all_tests.py e confirme se as cenas mudam automaticamente conforme o script percorre diferentes cenas. Embora a maioria dos testes falhe (já que a câmera não está apontada para o gráfico), você pode verificar se o tablet percorre as cenas corretamente sem exibir nenhum aviso ou outro pop-up na tela.

Execute testes

Antes de executar o ITS-in-a-box, certifique-se de que sua configuração de teste inclua o seguinte hardware e software:

  • Um (1) ITS-in-a-box
  • Um (1) tablet de 10" de alta resolução para exibição de cenas, S/N: 5811000011
  • Um (1) DUT que tenha o aplicativo CTS Verifier 7.0_8+ instalado. Exemplo DUT:
    • Um (1) Pixel NOF26W para teste da câmera traseira (0), S/N: FA6BM0305016. Para instalar o aplicativo CTS Verifier, descompacte android-cts-verifier.zip e execute
      adb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
      

Execute cenas baseadas em tablet

Para executar as cenas 0 a 4, 6 e scene_change na câmera traseira:

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

Exemplo:

Câmera 0 S/N: FA6BM0305016
Figura 1. Câmera 0 S/N: FA6BM0305016

Tentar cenas novamente

Você pode repetir cenas para uma única câmera:

  • Para repetir cenas em uma única câmera:
    python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
    

Execute a cena 5

A cena 5 requer configuração especial com iluminação específica (para obter detalhes, consulte CameraITS.pdf no CTS Verifier, que você pode baixar em Compatibility Test Suite Downloads ). Você deve executar a cena 5 separadamente (fora da caixa).

cena da câmera 5
Figura 2. Cena da câmera 5

Para executar a cena 5 para câmeras frontal e traseira em um único 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

Obter resultados

Você pode visualizar os resultados durante o teste e salvar os resultados concluídos como um relatório.

  • Ver resultados. Para salvar os resultados do Camera ITS como um relatório:
    1. Pressione Aprovar e salve o relatório.
      relatório ITS da câmera
      Figura 3. Relatório ITS da câmera
    2. Extraia relatórios do dispositivo:
      adb -s FA6BM0305016 pull /sdcard/verifierReports
      
    3. Descompacte o arquivo de relatório e visualize test_result.xml .
      relatórios ITS da câmera
      Figura 4. Relatórios ITS da câmera

Requisitos para tablets

Os tablets devem ter um tamanho de tela de cerca de 10 polegadas com resolução de tela superior a 1920 x 1200 pixels. O tablet não deve usar modulação por largura de pulso (PWM) para definir o nível de brilho. O valor brightness deve ser definido em config.yml de acordo com o modelo do tablet. A tabela abaixo lista os tablets recomendados para testes de ITS, juntamente com as versões de lançamento do Android para o DUT com os quais os tablets funcionam.

Dispositivo Tamanho de exibição
(polegadas)
Tamanho de exibição
(píxeis)
Dimensões do tablet
(polegadas)
Mostrar
brilho
Mostrar
pedaços
Suportado
SO DUT
Suportado
SO para tablet
Samsung
Galaxy Tab A8
10,5 1920 x 1200 9,72 x 6,37 x 0,27 192 8 Android 13+ Android 11+
Xiaomi
Bloco 5
11 2560 x 1600 10,03 x 6,55 x 0,27 1024 11 Android 12+ Apenas Android 11
Lenovo
Guia 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 2.000 x 1.200 9,75 x 6,2 x 0,28 192 8 Android 12+ Android 10+
Chuwi
Hi9 Ar 10.1
10.1 2560 x 1600 9,52 x 6,77 x 0,31 192 8 Android 7+ Android 8+
ASUS
ZenPad3
9.7 2048x1536 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+

Perguntas frequentes

P1: Como determino quais equipamentos de teste preciso para meu dispositivo?

A revisão 1 do RFoV ITS-in-a-box testa câmeras RFoV para testes de cena 0 a cena 4 no diretório CameraITS/tests . RFoV é definido como 60° < FoV < 90° . Para câmeras FoV maiores, as luzes podem aparecer nas imagens ou os gráficos podem cobrir uma área muito pequena no FoV, afetando os resultados dos testes.

A revisão 2 do WFoV ITS-in-a-box testa câmeras WFoV para testes de cena 0 a cena 4 no diretório CameraITS/tests . WFoV é definido como FoV >= 90° . É funcionalmente idêntico à revisão 1, mas maior. O equipamento de teste da revisão 2 pode testar câmeras RFoV e WFoV no Android 9 e superior.

A caixa de fusão de sensores testa o deslocamento de tempo da câmera/giroscópio e a sincronização de quadros dos sistemas multicâmera com testes em scenes=sensor_fusion . Um deslocamento de tempo da câmera/giroscópio inferior a 1 ms é necessário para o sinalizador do recurso REALTIME .

Dispositivos multicâmera podem ser testados com um único equipamento para testes estáticos de ITS e um equipamento de fusão de sensores se a câmera tiver o sinalizador de recurso REALTIME .

Um conjunto de exemplos de configurações é fornecido na tabela abaixo.

Exemplo FoVs da câmera TEMPO REAL? Plataformas recomendadas Notas
1 75° Não Rev 1 ou 2 Android 7.0 ou superior
2 75° Sim Rev 1 ou 2 + fusão de sensores Android 9 ou superior
3 75° + 95° Sim Rev 2 + fusão de sensores Android 9 ou superior

P2: Como posso designar qual equipamento de teste está em uso?

Para designar o equipamento de teste correto, certifique-se de que o parâmetro de distância do gráfico esteja correto. O equipamento de teste rev1 (RFoV) possui distância de gráfico de 31 cm, e o equipamento de teste rev2 (WFoV) possui distância de gráfico de 22 cm. Por padrão, a distância do gráfico é definida como 31 cm.

Android 10 para Android 11

Para identificar o equipamento de teste correto no Android 10 a 11, adicione o sinalizador dist na linha de comando. O valor padrão para dist é 31 . Execute o seguinte comando para alterar o parâmetro chart_distance .
python tools/run_all_tests.py ... chart=# dist=22

Andróide 12

Para identificar o equipamento de teste correto no Android 12, você pode editar o arquivo config.yml para alterar o parâmetro chart_distance .
edit config.yml
chart_distance: 31.0 → chart_distance: 22.0

Q3: Como posso controlar o brilho do tablet?

Por padrão, o brilho do tablet está definido como 96.

Para alterar o brilho em tablets com Android 7.0 até Android 9, execute:

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

Para alterar o brilho em tablets com Android 10 a 11, o valor pode ser alterado na linha de comando adicionando o sinalizador brightness :

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

Para alterar o brilho em tablets com Android 12, execute:

edit config.yml
brightness: 96 → brightness: 192

Q4: Como depuro um único teste?

Os testes podem ser executados individualmente para fins de depuração, mas os resultados não são relatados ao CtsVerifier.apk a menos que toda a cena seja executada.

Para executar uma cena individual no Android 11 e versões anteriores:

  1. Carregue uma cena adicionando o sinalizador scenes em tools/run_all_tests.py :
    python tools/run_all_tests.py device=# camera=# chart=# scenes=#
    
  2. Pressione Control+C para interromper os testes depois que a cena for registrada como carregada em stdout .

    Se a cena correta já estiver na tela, ative a tela:

    python tools/wake_up_screen.py screen=#
    
  3. Faça um teste individual.

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

    Os gráficos são então gerados no diretório local e stdout e stderr são impressos na tela.

    Para obter mais informações para depuração, adicione instruções print ao script. Para aumentar a saída do teste para depuração, adicione o sinalizador debug=True .

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

Os resultados são impressos na tela local e as imagens são salvas no diretório local em vez do diretório /tmp/tmp### gerado ao executar tools/run_all_tests.py .

Para executar uma cena individual no Android 12:

  1. Edite o arquivo config.yml .

    edit config.yml
    camera: <camera-id> → camera:  0
    scene: <scene-name> → scene: scene1_1
  2. Execute o teste individual.

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

Os resultados são impressos no diretório /tmp/logs/mobly/TEST_BED_TABLET_SCENES/ classificados por tempo de execução.

P5: Por que preciso executar testes com falha como uma cena inteira, em vez de executar novamente os testes individualmente?

Os testes podem ser executados individualmente para fins de depuração, mas os resultados não são relatados ao CtsVerifier.apk a menos que toda a cena seja executada.

Câmera ITS garante que aplicativos de terceiros tenham uma interface de câmera compatível. Semelhante a um teste de unidade , cada teste enfatiza uma única especificação da câmera. Para detectar comportamentos não confiáveis, espera-se que esses testes sejam aprovados em grupo durante uma cena inteira. Por exemplo, embora um único teste não confiável possa passar na repetição de uma cena inteira, é difícil que vários testes não confiáveis ​​sejam aprovados.

Como exemplo extremo, considere o caso em que há 10 testes em uma cena e cada um tem 50% de probabilidade de retornar PASS . Ao executar cada teste individualmente, há uma grande chance de um operador conseguir que a câmera passe no Camera ITS. No entanto, se os testes forem executados de forma agregada como uma cena, há apenas 0,1% de chance de a cena ser aprovada.

P6: Como executo uma única cena ou reordeno as cenas de execução?

Por padrão, o script tools/run_all_tests.py executa todas as cenas em ordem. No entanto, as cenas podem ser executadas individualmente ou em uma ordem especificada e relatadas ao CtsVerifier.apk .

Para executar uma cena individual (por exemplo, cena 2) ou executar mais de uma cena em uma ordem específica no Android 11 ou versões anteriores:

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

Para executar uma cena individual ou mais de uma cena em uma ordem específica no Android 12:

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

Os parâmetros adicionais são definidos no arquivo config.yml .

Q7: Vários testes da cena 1 falham com a configuração do tablet, mas são aprovados com um gráfico em papel. O que está errado?

Certifique-se de que o tablet e o ambiente de teste atendam às especificações a seguir.

Especificações do tablet

Certifique-se de que o tablet atenda às seguintes especificações:

  • Tamanho da tela (polegadas): 10 polegadas
  • Tamanho da tela (pixels): maior que 1920 x 1200 pixels

Para obter mais detalhes, consulte Requisitos do tablet .

Brilho do tablet

Os testes podem não obter resultados corretos se o brilho da tela do tablet estiver muito baixo.

Para obter mais detalhes, consulte Como posso controlar o brilho do tablet?

Nível de iluminação da caixa (requer luxímetro)

Certifique-se de que o valor lux alvo na abertura do tablet esteja entre 100 e 300.

Se o nível de lux for muito alto, scene1/test_param_flash_mode.py retornará FAIL . Se o nível de lux for muito baixo, vários testes falharão.

Q8: Como faço para depurar testes de fusão de sensores?

  1. Certifique-se de estar em um grupo dialout .

    groups | egrep ‘dialout'
  2. Certifique-se de que o controlador de fusão de sensores esteja conectado determinando se a Microchip Technology está conectada à porta USB.

    lsusb
    …
    Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc.
    …
    
  3. Execute o teste várias vezes para obter uma distribuição das tentativas de teste com os comandos a seguir.

    No Android 11 ou inferior:

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

    No Android 12:

    python tools/run_sensor_fusion_box.py num_runs=10
    

    Os parâmetros adicionais são definidos no arquivo config.yml .

    As saídas de execução estão na pasta /tmp/tmp### criada nas pastas sensor_fusion_# , onde # é o número da execução. Razões comuns para falha são:

    1. O telefone não está centralizado corretamente.
    2. Não são encontrados recursos suficientes na imagem (geralmente um FoV ou problema de iluminação).
    3. A FAIL retornada é válida e o deslocamento de tempo entre a câmera e o giroscópio deve ser corrigido.

P9: Que informações devo incluir ao relatar um bug de teste?

Ao relatar um bug de teste, inclua os arquivos e imagens gerados para o teste.

  1. Se você executou o teste por meio de tools/run_all_tests.py , anexe um diretório /tmp/ compactado ao bug.
  2. Se você executou o teste sozinho, anexe todas as saídas de tela e imagens geradas ao bug.

Inclua também um relatório de bug. Após a falha do teste em questão, use o seguinte comando para gerar um relatório de bug e anexar o arquivo zip gerado ao bug.

adb -s device_id bugreport

Q10: Como executo uma cena de teste de sensor_fusion com uma câmera que possui uma distância mínima de foco que cria imagens borradas a uma distância de gráfico de 25 cm?

Se a sua câmera não conseguir focar a uma distância de 25 cm, remova o painel de montagem do gráfico da caixa de fusão do sensor. Coloque o gráfico a uma distância onde o DUT possa focar e altere chart_distance em config.yml para a distância medida entre o DUT e o gráfico. A Figura 5 mostra um exemplo de como medir a distância do gráfico nesta situação.

exemplo de teste TELE de sensor_fusion6
Figura 5. Gráfico de medição de distância para cena de teste de fusão de sensores
  edit config.yml
chart_distance: 25 → chart_distance: DISTANCE_BETWEEN_DUT_AND_CHART

Q11: Como executo cenas de teste em tablets para uma câmera com uma distância mínima de foco que cria imagens borradas a uma distância de gráfico de 31 cm?

Se sua câmera não conseguir produzir imagens nítidas o suficiente testando a 31 cm (a profundidade do equipamento de teste RFoV), monte sua câmera na frente do equipamento a uma distância para permitir que a cena do gráfico preencha aproximadamente 60% do campo da câmera. visualização (FoV) com imagens mais nítidas. Essa distância pode ser menor que a distância mínima de foco da câmera. Deixe o chart_distance em config.yml em 31 cm. A escala do gráfico no tablet é determinada pelo FoV da câmera conforme mostrado na tabela a seguir:

FoV da câmera Fator de escala do gráfico
60 > FoV > 40 0,67x
40 > FoV > 25 0,5x
FoV <25 0,33x

P12: Com a API lógica de múltiplas câmeras, quais testes são executados em quais câmeras?

Se sua câmera usar REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA , todos os testes ITS suportados serão executados na câmera lógica de nível superior. Um subconjunto de testes ITS é executado nas subcâmeras físicas e esses testes são listados em tools/run_all_tests.py na constante SUB_CAMERA_TESTS .