カメラITS-in-a-Box

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Android Camera Image Test Suite (ITS) は、Android Compatibility Test Suite (CTS) Verifier の一部であり、画像コンテンツを検証するテストが含まれています。 CTS Verifier は、Camera ITS-in-a-box による ITS テストの自動化をサポートします。手動テストのサポートは、すべての Android デバイスのフォーム ファクターをカバーします。

ITS-in-a-box には次の利点があります。

  • オートメーション。テスト中に人間の介入は必要ありません。
  • 簡単なトラブルシューティング。テスト環境の一貫性により、セットアップ エラーが減少し、再現性が向上します。
  • 効率。カメラ/シーンごとにリトライできるため、テストの実行効率が向上します。

入門

ITS-in-a-box は、コンピューター支援設計 (CAD) 図面からレーザー カットされたプラスチック ボックス、チャート タブレット、および被試験デバイス (DUT) で構成されます。 WFoV (FoV > 90 度) カメラと RFoV (FoV < 90 度) カメラの両方をテストできる、広視野 (WFoV) ITS-in-a-box を使用できます。 -view (RFoV) ITS-in-a-box。

Camera ITS-in-a-box の使用を開始するには:

  1. WFoVまたはRFoV ITS-in-a-box を購入または構築します。
  2. Camera ITS ソフトウェアでタブレットを構成します。
  3. テストを実行します
  4. DUT から結果を取得します。

タブレットの設定

このセクションでは、 CameraITSディレクトリにあるCamera ITS テストで使用するタブレットをセットアップするための手順を順を追って説明します。これらの手順では、Pixel C をタブレットの例として使用します。タブレットの要件と推奨事項については、「タブレットの要件」を参照してください。

注: Camera ITS Python スクリプトは、タブレットに次のオプションを自動的に設定します。
設定 > ディスプレイ > スリープ > 30 分間非アクティブ状態になった後
適応輝度 > オフ

  1. タブレットを充電して電源を入れます。アカウントのセットアップを求められた場合は、スキップしてください (カメラ ITS では、タブレットとペアリングされたアカウントは必要ありません)。
  2. タブレットを Android 7.0 以降にアップデートします。 Android 6.x 以前のバージョンは、カメラ ITS をサポートしていません。
  3. 開発者モードを有効にします。
  4. [設定] に戻り、[開発者向けオプション]を選択します。
    オプションを有効にする
    • の上
    • 起きている
    • USB デバッグ (これにより、ホストはタブレットをデバッグ モードで実行できます。タブレットをホストに初めて接続すると、タブレットは「USB デバッグを許可しますか?」というプロンプトを出します。タブレット。)
    オプションを無効にする
    • 自動システム更新
    • USB 経由でアプリを確認する
  5. $ adb devicesを実行して使用可能なデバイスを一覧表示し、DUT とチャート ID を特定します。 device_idchart_idを特定するには、デバイスを接続および取り外し、接続および切断するデバイスを観察します。
  6. 3 回のテスト実行を実行して、タブレット画面のグラフをわかりにくくする可能性のあるヒントとユーザー プロンプトを抑制します。
    1. タブレットを表を上にしてテーブルに置きます (タブレットを箱の背面パネルに取り付けないでください)。
    2. 次のコマンドを実行します:
      python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
      
      シーン 2 と 3 ではタブレットに画像を表示する必要があるため、タブレットは[ドライブがデバイス上の写真、メディア、ファイルにアクセスすることを許可しますか?] を要求します。 . [許可] を押して、このプロンプトをクリアします (および今後のプロンプトを防止します)。
    3. コマンドを再実行してください。タブレットは、このファイルのコピーを保持しますか? というプロンプトを表示します。 Google ドライブを提案します。 [ドライブ] アイコンを押してから、[ドライブへのアップロードをキャンセル] を押して、このプロンプトをクリア (および今後のプロンプトを防止) します。
    4. 最後に、 tools/run_all_tests.pyを実行し、スクリプトがさまざまなシーンを循環するときにシーンが自動的に変更されることを確認します。ほとんどのテストは失敗しますが (カメラがチャートに向けられていないため)、プロンプトやその他のポップアップを画面に表示することなく、タブレットがシーンを正しく循環することを確認できます。

テストの実行

ITS-in-a-box を実行する前に、テストのセットアップに次のハードウェアとソフトウェアが含まれていることを確認してください。

  • 1 つの ITS-in-a-box
  • シーン表示用の高解像度 10 インチ タブレット 1 台、S/N: 5811000011
  • CTS Verifier 7.0_8+ アプリがインストールされた 1 つの DUT。サンプル DUT:
    • 背面カメラ (0) テスト用の Pixel NOF26W 1 台、S/N: FA6BM0305016。 CTS Verifier アプリをインストールするには、 android-cts-verifier.zipを解凍し、
      adb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
      
      を実行します。

タブレットベースのシーンの実行

背面カメラでシーン 0 ~ 4、6、および scene_change を実行するには:

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

例:

カメラ 0 S/N: FA6BM0305016
図 1.カメラ 0 S/N: FA6BM0305016

シーンの再試行

1 つのカメラのシーンを再試行できます。

  • 1 台のカメラでシーンを再試行するには:
    python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
    

ランニングシーン5

シーン 5 には、特定の照明を使用した特別なセットアップが必要です (詳細については、 Compatibility Test Suite Downloadsでダウンロードできる CTS Verifier のCameraITS.pdfを参照してください)。シーン 5 は個別に (ボックスの外で) 実行する必要があります。

カメラ シーン 5
図 2.カメラ シーン 5

単一のデバイスで前面カメラと背面カメラのシーン 5 を実行するには:

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

結果の取得

テスト中に結果を表示し、完了した結果をレポートとして保存できます。

  • 結果を表示します。カメラ ITS の結果をレポートとして保存するには:
    1. Passを押して、レポートを保存します。
      カメラITSレポート
      図 3.カメラ ITS レポート
    2. デバイスからレポートをプル:
      adb -s FA6BM0305016 pull /sdcard/verifierReports
      
    3. レポート ファイルを解凍し、 test_result.xmlを表示します。
      カメラ ITS レポート
      図 4.カメラ ITS レポート

タブレットの要件

タブレットのディスプレイ サイズは約 10 インチで、画面解像度は 1920 x 1200 ピクセル以上である必要があります。タブレットのモデルに応じて、 brightnessの値をconfig.ymlに設定する必要があります。以下の表は、ITS テストに推奨されるタブレットと、タブレットが動作する DUT の Android リリース バージョンを示しています。

デバイスディスプレイサイズ
(インチ)
ディスプレイサイズ
(ピクセル)
タブレットの寸法
(インチ)
画面
輝度
対応DUT
OS
サムスン ギャラクシー タブ A8 10.5 1920×1200 9.72×6.37×0.27 192アンドロイド 13+
小米科技パッド5 11 2560×1600 10.03×6.55×0.27 192アンドロイド 12+
レノボ タブ M10 プラス10.3 1920×1200 9.61×6.03×0.32 192アンドロイド 12+
サムスン ギャラクシー タブ A7 10.4 2000×1200 9.75×6.2×0.28 192アンドロイド 12+
チューウィ Hi9 Air 10.1 10.1 2560×1600 9.52×6.77×0.31 192アンドロイド 7+
Asus ゼンパッド 3 9.7 2048×1536 9.47×6.44×0.28 192アンドロイド 7+
ファーウェイ メディアパッド m5 10.8 2560×1600 10.18×6.76×0.29 192アンドロイド 7+
ピクセル C 10.2 2560×1800 9.53×7.05×0.28 96アンドロイド 7+
ソニー Xperia Z4 10.1 2560×1600 10×6.57×0.24 192アンドロイド 7+

よくある質問 (FAQ)

Q1: デバイスに必要なテスト リグはどのように判断すればよいですか?

RFoV ITS-in-a-box リビジョン 1は、 CameraITS/testsディレクトリにあるシーン 0 からシーン 4 までの RFoV カメラをテストします。 RFoV は60° < FoV < 90°として定義されます。より大きな FoV カメラの場合、ライトが画像に表示されたり、チャートが FoV の小さすぎる領域をカバーしたりして、テスト結果に影響を与える可能性があります。

WFoV ITS-in-a-box リビジョン 2は、 CameraITS/testsディレクトリ内のシーン 0 からシーン 4 のテストについて、WFoV カメラをテストします。 WFoV はFoV >= 90°として定義されます。機能的にはリビジョン 1 と同じですが、より大きくなっています。リビジョン 2 テスト リグは、Android 9 以降の RFoV カメラと WFoV カメラの両方をテストできます。

センサー フュージョン ボックスは、 scenes=sensor_fusionのテストで、カメラ/ジャイロスコープのタイミング オフセットとマルチカメラ システムのフレーム同期をテストします。 REALTIME機能フラグと VR/AR アプリには、1 ミリ秒未満のカメラ/ジャイロスコープのタイミング オフセットが必要です。

マルチカメラ デバイスは、静的 ITS テスト用の 1 つのリグと、カメラにREALTIME機能フラグがある場合はセンサー フュージョン リグを使用してテストできます。

以下の表に一連の構成例を示します。

カメラの視野リアルタイム?推奨リグノート
1 75°いいえリビジョン 1 Android 7.0 以降
2 75°はいRev 1 + センサー フュージョンAndroid 9 以降
3 75° + 95°はいRev 2 + センサー フュージョンAndroid 9 以降

Q2: 使用中のテスト リグを指定するにはどうすればよいですか?

正しいテスト リグを指定するには、チャート距離パラメーターが正しいことを確認してください。 rev1 テスト装置 (RFoV) のチャート距離は 31 cm、rev2 テスト装置 (WFoV) のチャート距離は 22 cm です。デフォルトでは、チャートの距離は 31 cm に設定されています。

Android 10 から Android 11

Android 10 から 11 で正しいテスト リグを識別するには、コマンド ラインにdistフラグを追加します。 distのデフォルト値は31です。次のコマンドを実行して、 chart_distanceパラメーターを変更します。
python tools/run_all_tests.py ... chart=# dist=22

人造人間12号

Android 12 で正しいテスト リグを特定するには、config.yml ファイルを編集してchart_distanceパラメータを変更します。
edit config.yml
chart_distance: 31.0 → chart_distance: 22.0

Q3: タブレットの明るさを制御するにはどうすればよいですか?

デフォルトでは、タブレットの明るさは 96 に設定されています。

Android 7.0 から Android 9 を実行しているタブレットで明るさを変更するには、次のコマンドを実行します。

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

Android 10 ~ 11 を実行しているタブレットで明るさを変更するには、 brightnessフラグを追加してコマンド ラインで値を変更できます。

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

Android 12 を実行しているタブレットで明るさを変更するには、次を実行します。

edit config.yml
brightness: 96 → brightness: 192

Q4: 単一のテストをデバッグするにはどうすればよいですか?

テストはデバッグ目的で個別に実行できますが、シーン全体が実行されない限り、結果はCtsVerifier.apkに報告されません。

Android 11 以前で個々のシーンを実行するには:

  1. tools/run_all_tests.pyに scene フラグを追加してscenesを読み込みます:
    python tools/run_all_tests.py device=# camera=# chart=# scenes=#
    
  2. シーンがロード済みとしてstdoutに記録された後、 Control+Cを押してテストを停止します。

    正しいシーンがすでに画面に表示されている場合は、画面をウェイクアップします。

    python tools/wake_up_screen.py screen=#
    
  3. 個別のテストを実行します。

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

    次に、プロットがローカル ディレクトリに生成され、 stdoutstderrが画面に出力されます。

    デバッグに関する詳細情報を取得するには、スクリプトにprintステートメントを追加します。デバッグ用のテスト出力を増やすには、 debug=Trueフラグを追加します。

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

tools/run_all_tests.pyを実行すると、結果がローカル画面に出力され、画像が生成された/tmp/tmp###ディレクトリではなくローカル ディレクトリに保存されます。

Android 12 で個々のシーンを実行するには:

  1. config.ymlファイルを編集します。

    edit config.yml
    camera: <camera-id> → camera:  0
    scene: <scene-name> → scene: scene1_1
  2. 個別テストを実行します。

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

結果は/tmp/logs/mobly/TEST_BED_TABLET_SCENES/ディレクトリに実行時間順に出力されます。

Q5: テストを個別に再実行するのではなく、失敗したテストをシーン全体として実行する必要があるのはなぜですか?

テストはデバッグ目的で個別に実行できますが、シーン全体が実行されない限り、結果はCtsVerifier.apkに報告されません。

カメラ ITS は、サードパーティ製アプリが互換性のあるカメラ インターフェイスを備えていることを保証します。単体テストと同様に、各テストはカメラの単一の仕様に重点を置いています。信頼できない動作をキャッチするために、これらのテストはシーン全体のグループとして合格することが期待されます。たとえば、1 つの信頼性の低いテストがシーン全体の再実行に合格する可能性がありますが、複数の信頼性の低いテストに合格することは困難です。

極端な例として、シーンに 10 個のテストがあり、それぞれがPASSを返す確率が 50% である場合を考えてみましょう。各テストを個別に実行することで、オペレーターがカメラをカメラ ITS に合格させる可能性が高くなります。ただし、テストがシーンとして集約されて実行される場合、シーンが合格する可能性は 0.1% しかありません。

Q6: 1 つのシーンを実行したり、実行シーンを並べ替えたりするにはどうすればよいですか?

デフォルトでは、スクリプトtools/run_all_tests.pyはすべてのシーンを順番に実行します。ただし、シーンは個別に実行することも、指定した順序で実行することも、 CtsVerifier.apkに報告することもできます。

Android 11 以前で個々のシーン (シーン 2 など) を実行するか、複数のシーンを特定の順序で実行するには:

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

Android 12 で個々のシーンを実行するか、特定の順序で複数のシーンを実行するには:

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

追加のパラメーターはconfig.ymlファイルで設定されます。

Q7: 多くのシーン 1 のテストは、タブレットのセットアップでは失敗しますが、紙のチャートでは合格します。どうしたの?

タブレットとテスト環境が次の仕様を満たしていることを確認してください。

タブレットの仕様

タブレットが次の仕様を満たしていることを確認してください。

  • ディスプレイサイズ(インチ):10インチ
  • 表示サイズ (ピクセル): 1920 x 1200 ピクセル以上

詳細については、タブレットの要件を参照してください。

タブレットの明るさ

タブレットのディスプレイの輝度が低すぎると、テストで正しい結果が得られない場合があります。

詳細については、タブレットの明るさを制御するにはどうすればよいですか? を参照してください。

ボックスの照明レベル (照度計が必要)

錠剤の開封時の目標ルクス値が 100 ~ 300 であることを確認してください。

ルクス レベルが高すぎる場合、 scene1/test_param_flash_mode.pyFAILを返します。ルクス レベルが低すぎると、複数のテストが失敗します。

Q8: センサー フュージョン テストをデバッグするにはどうすればよいですか?

  1. dialoutグループに属していることを確認します。

    groups | egrep ‘dialout'
  2. Microchip Technology が USB ポートに接続されているかどうかを判断して、センサー フュージョン コントローラーが接続されていることを確認します。

    lsusb
    …
    Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc.
    …
    
  3. 次のコマンドを使用してテストを複数回実行し、テスト試行の分布を取得します。

    Android 11 以前の場合:

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

    Android 12 の場合:

    python tools/run_sensor_fusion_box.py num_runs=10
    

    追加のパラメーターはconfig.ymlファイルで設定されます。

    実行出力は、 sensor_fusion_#フォルダーの下に作成された/tmp/tmp###フォルダーにあります。 #は実行番号です。失敗の一般的な理由は次のとおりです。

    1. 電話が正しく中央に配置されていません。
    2. 画像内に十分な機能が見つかりません (多くの場合、FoV または照明の問題)。
    3. 返されたFAILは有効であり、カメラとジャイロスコープの間のタイミング オフセットを修正する必要があります。

Q9: テスト バグを報告する場合、どのような情報を含める必要がありますか?

テストのバグを報告するときは、テスト用に生成されたファイルと画像を含めてください。

  1. tools/run_all_tests.pyを使用してテストを実行した場合は、圧縮された/tmp/ディレクトリをバグに添付します。
  2. テストを単独で実行した場合は、すべての画面出力と生成された画像をバグに添付してください。

バグレポートも含めます。問題のテストが失敗した後、次のコマンドを使用してバグ レポートを生成し、生成された zip ファイルをバグに添付します。

adb -s device_id bugreport

Q10: 16:10 のタブレットでシーンを覆い隠すナビゲーション バーを削除するにはどうすればよいですか?

縦横比が 16:10 (またはそれ以上) のタブレットの場合、ナビゲーション バーがシーンの一部を覆い隠すことがあります。ナビゲーション バーを非表示にするには、タブレットで次の adb コマンドを使用します。

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