Android 13 コントローラ

このページでは、センサー フュージョン テスト装置の動作や ITS-in-a-box のライトを制御する Android 13 コントローラを組み立てる方法について説明します。センサー フュージョン テストは、互換性テストスイート(CTS)の中にあるカメラ画像テストスイート(Camera ITS)の一部です。Android 13 コントローラは、以前のコントローラ バージョンよりも組み立てやすく安価になるように設計されています。さらに、電子回路とサーボで電源を分離し、1 台のコントローラから最大 3 つのサーボ、3 つのライトを制御できます。

Android 13 コントローラの概要

テスト装置のサーボとライトの制御

センサー フュージョン テスト装置は、スマートフォンに決まった動きを与え、再現性の高いテストを実現します。スマートフォンがさまざまな位置で画像をキャプチャできるように、スマートフォンをチェッカーボード ターゲットの前で回転させます。test_sensor_fusion の場合、サーボがカメラを中心にしてスマートフォンを 90 度回転させ、約 2 秒以内に元の位置に戻します。test_video_stabilization の場合、サーボがカメラを中心にしてスマートフォンを 10 度回転させ、元の位置に戻します。これを繰り返すことで、歩きながら動画を撮影する際のスマートフォンの動きを模倣します。図 1 は、センサー フュージョン テスト装置内で回転する 2 台のスマートフォンです。図 2 は、センサー フュージョン テスト装置内で回転する 1 台のスマートフォンです。

ITS-in-a-box は一貫性のあるテスト環境であり、テスト タブレットやテスト スマートフォンの距離を一定に保てます。また、外部の光源を使用することなく、照明を一貫した形で当てることができます。test_auto_flash の場合、テスト対象のスマートフォンで自動フラッシュ機能をトリガーするために、照明をオフにして環境を暗くする必要があります。図 3 は、Android 13 コントローラによって ITS-in-a-box のライトがオンおよびオフになる様子を示しています。

テスト装置内でのスマートフォンの動き

図 1. test_sensor_fusion のテスト装置内でのスマートフォンの動き

テスト装置内でのスマートフォンの動き

図 2. test_video_stabilization のテスト装置内でのスマートフォンの動き

ITS-in-a-box でのライトの操作

図 3. test_auto_flash でライトがオンおよびオフになる様子

サーボモーター制御

テスト装置のアナログ サーボモーターは、パルス幅変調(PWM)を使用して位置サーボを制御します。一般的な位置制御の例を図 3 に示します。制御信号の周期は 20 ミリ秒です。パルス幅を最小にすると、モーターは中立の位置に回転し、最大にすると時計回りに 180 度の位置に回転します。

サーボ制御の説明

図 4. 一般的なサーボ制御の説明

動画チュートリアル

これは、Android 13 コントローラのセットアップ方法を紹介する動画チュートリアルです。

変更履歴

次の表に、カメラ ITS WFoV 機器の変更履歴と、プロダクション ファイルの各バージョンへのダウンロード リンクを示します。

日付 リビジョン プロダクション ファイルのダウンロード 変更ログ
2022 年 12 月 1.1
  • 部品実装済みの PCB を EasyEDA から注文できるオプションを追加しました
  • Arduino マイクロコードでサーボが移動した後の不要な遅延を排除しました
  • スタンドオフをメタルからナイロンに変更しました
  • スルーホール MOSFETS を表面実装 MOSFETS に変更しました
  • コンデンサを 10 uF から 1,000 uF に変更しました
2022 年 3 月 1
  • ライト制御機能を追加しました
  • 6 サーボ制御から 3 ライト、3 サーボ制御に変更しました

Android 13 コントローラの実装

ホスト コンピュータからサーボモーターの動きとライトを制御するには、センサー フュージョン テスト装置に USB 接続が必要です。Android 13 コントローラは、USB 接続された Arduino UNO R3 基板を使用します。この基板の上にはカスタム ルーティング基板(シールド)が乗っています。2 層シールドは、オープンソースのオンライン PCB 設計ツールで設計されており、https://oshwlab.com/leslieshaw1023/cameraits_arduino_shield_populated から入手できます。図 5 と図 6 は、それぞれカスタム ルーティング シールドの上面と底面です。

カスタム ルーティング シールド(上面)

図 5. カスタム ルーティング シールド(上面)

カスタム ルーティング シールド(上面)

図 6. カスタム ルーティング シールド(底面)

Android 13 コントローラでは、1 台のホスト コンピュータから最大 3 台のセンサー フュージョン装置と 3 台の ITS-in-a-box を制御できます。上面には、3 ピンのモーター ヘッダーを中央軸に沿って 3 つ実装し、LED 電源ジャックを 3 つ実装するためのシルク印刷があります。底面には、UNO、5 V の電源ジャック、10 uF のバイパス コンデンサとの接続に必要な 4 ピンヘッダーと 8 ピンヘッダーのためのシルク印刷があります。

サーボとライトの電流を分離するために、サーボへの電力は外部 5 V ジャックから供給されます。UNO の電源は、これとは別に USB コネクタから供給されるため、2 枚のボード間で電源の共有はありません。UNO の既存の外部電源ジャックは未使用なため、コントローラに電源を接続するときに混乱しないよう、エンクロージャー設計で隠されています。

ライトの電源と Android 13 コントローラに接続された 12 V の充電器

図 7. ライトと Android 13 コントローラに接続された 12 V 電源

ライト電源のバレルサイズに応じて、適宜アダプターを使用します。

3.5 mm x 1.35 mm プラグ(オス)と 5.5 mm x 2.1 mm ジャック コンバーター(メス)

図 8. ライトの電源とコントローラを接続するアダプター

Android 13 コントローラの組み立て

部品表(BOM)

数量 説明 品番 / リンク
1 1.6 mm 厚 CameraITS Arduino シールド https://oshwlab.com/leslieshaw1023/cameraits_arduino_shield_populated
1 Arduino UNO R3 https://store.arduino.cc/usa/arduino-uno-rev3
6 2.1x5.5 mm、5 V スルーホール、直角のバレルジャック 101179
2 35 V、10%、10 μF タンタル コンデンサ 2290863
2 50 V、5%、100 pF セラミック 1206 マウント コンデンサ 12065A101JAT2A
3 1 kΩ、表面実装抵抗器 CRCW08051K00FKEAC
3 パワー MOSFET RFP30N06LE
3 1x3x、100 ミル(2.54 mm)ピッチ、スルーホール オスヘッダー 732-5316-ND
1 1x8x、100 ミル(2.54 mm)ピッチ、スルーホール オスヘッダー 732-5321-ND
1 1x4x、100 ミル(2.54 mm)ピッチ、スルーホール オスヘッダー 732-5317-ND
3 11 mm メス - メス ナイロン スタンドオフ(幅 5 mm、M3-0.5 ねじ) 92319a317
4 6 mm オス - メス ナイロン スタンドオフ(幅 5 mm、M3-0.5 ねじ) 95783a004
3 M3-0.5、6 mm なべ小ねじ(ナイロン) 92492A716
4 M3-0.5、8 mm 皿小ねじ XM2510008A20000
2 M3-0.5、6 mm 皿小ねじ XM2510006A20000
6 #4、1/2 インチ、丸板金ねじ 90925A110
1 5 V、15 W、UL リステッド電源、2.1x5.5 mm プラグ(モーター) KSAS0180500300VU-VI
1 12 V、60 W UL リステッド電源、2.1x5.5 mm プラグ(ライト) GSM60A12-P1J

その他の必要なツール

  • はんだごて、はんだ、はんだ吸い取り器
  • フィリップスねじ用小型ドライバー
  • サイズ T10 のトルクス ドライバー

ルーティング基板への部品実装

ルーティング基板の両面に、シルク印刷に合わせて部品を装着します。基板の底面でオスヘッダーの位置合わせをするには、ヘッダーを Arduino 基板の正しい位置に配置し、ルーティング基板をコネクタの上に配置します。次に、1x8 ヘッダーと 1x4 ヘッダーを所定の位置にはんだ付けして、Arduino 基板とルーティング基板の位置がずれないようにします。電源ジャックも同じようにできますが、組み立て後も Arduino に当たらないため、シムを使って密着させる必要があります。バイパス コンデンサをはんだ付けした後、基板の上面にモーター制御用の 1x3 オスヘッダー 6 本を実装します。このとき、ヘッダーは、コネクタのスナップの底面がモーターに向き、モーター マウントに最大限の余裕ができるようにしてください。

すべての部品をはんだ付けしたら、スタンドオフとねじを使ってシステムを組み立てます。Arduino とプラスチック製エンクロージャーの底面とを固定する 4 本のオス - メス 6 mm スタンドオフがあります。一方で、Arduino とカスタム シールドの間には、3 本の 11 mm メス - メス スタンドオフしかありません。これは、Arduino 上の穴の 1 つ(SCL ピン近く)が、Arduino 上のメスヘッダーから近すぎて使用できないためです。3 本のメス - メス スタンドオフを 3 本のオス - メス スタンドオフにねじ止めし、スタンドオフを Arduino に固定してください。 次に、ルーティング基板シールドを 3 本の M3 ねじでスタンドオフに取り付けます。図 9 に、Arduino シールドの概略図を示します。

Arduino シールドの概略図

図 9. Arduino シールドの概略図

コントローラのエンクロージャー

コントローラには、カスタムのエンクロージャーが含まれます。組み立て済みのコントローラは、エンクロージャーの底部プレートを貫通する 4 本の皿ねじで、エンクロージャーに装着されます。エンクロージャーは、組み立て用のなべねじ 6 本と皿ねじ 2 本を使用して組み立てます。サーボや 5 V 外部電源などの関連情報がプラスチックの上面に刻まれています。図 10 は、組み立て済みのエンクロージャーに収めたコントローラの画像です。

エンクロージャー内の組み立て済みのシステム

図 10. 実装済みのシールドと組み立て済みのシステム(エンクロージャー内)

ホストからのソフトウェア制御

マイクロコードを UNO にダウンロードすると、PWM ピンをモーター信号に割り当て、さまざまな角度に対するパルス幅の範囲を定義できます。6 つの HS-755MB モーターのサーボ回転制御用マイクロコードについては、その他のリソースをご覧ください。このセクションには、サーボを回転させる rotator.py という単純なプログラムへのリンクもあります。

Android 13 コントローラの使用

カメラ ITS の使用:

python tools/run_all_tests.py device=device_id camera=0 rot_rig=arduino:1 scenes=sensor_fusion

付属のテスト スクリプトの使用:

python rotator.py --ch 1 --dir ON --debug

以前のコントローラと互換性

図 11 および図 12 に示されている Rev. 2 コントローラと Rev. 1 コントローラには、Android 13 との互換性がありません。また、補正機能およびライトの制御で必要となる微細な動きに対応しないため、test_preview_stabilization、test_video_stabilization、test_auto_flash がサポートされません。

Rev. 2 Arduino コントローラ

図 11. Rev. 2 Arduino コントローラ

エンクロージャー内の組み立て済みのシステム

図 12. Cana キット コントローラ

その他のリソース

機械製図のダウンロード

ソフトウェア制御のダウンロード