ページ

2018年12月29日土曜日

ドローンにJetson TX2を載せて自律制御する (ハードウェア準備編)

Project C.G.S.では、現在次期大会に向けてドローンの機体制作を行っています。


※残念ながらドローンの開発とUnityは特に関係ありません

MBZIRC 2017に参加した機体ではコンパニオンコンピュータにHardkernelのOdroid XU4を使用していたのですが、計算資源に余裕がなく、あまり複雑な認識処理を行うことができなかったので、MBZIRC 2020に向けて制作している機体ではNVIDIAのJetson TX2を使用することにしました。

※最近、NVIDIAからはJetson TX2iやAGX Xavierなどの新しいボードが出ていますが、(キャンペーンで開発キットが定価の半額で購入できる)Jetson TX2もコスパという意味では負けていません。

Jetson TX2をドローンに搭載しようと思った際に問題になるのが、どのキャリアボードを使用するかだと思います。AGX Xavierなどは純正のキャリアボード十分小さいのでそのまま乗せれば良いのですが、Jetson TX2の純正キャリアボードは拡張性が高い代わりに非常に大きく(Mini-ITXサイズ)、そのままでは到底ドローンに搭載することはできません。



そこで、各社から発売されているキャリアボードにJetson TX2を載せ替える必要があるのですが、様々な会社が多種多様なキャリアボードを出しており、用途に合わせて選定するのがけっこう大変です…

Project C.G.S.では、今回の用途に合わせて、
  • ドローンに載せられるサイズである
  • MIPI CSIインターフェースでカメラを接続することができる
  • mSATAかm2でSSDを接続することができる
という3つの条件でボードを選定しました。

Jetson TX2は組み込みビジョン用途を非常に強く意識しているのか、なんとMIPI CSIを6本まで入れることができるようになっています。USB経由でカメラを接続するよりも、MIPI CSIの内蔵ハードウェアブロックを使ったほうがオーバーヘッドが少ないですし、JetsonにはもともとUSBポートが少ないので、カメラを多数積むのであればMIPI CSIインターフェースは必須です。また、自律制御アルゴリズムの開発時には実際に飛ばしながらカメラ画像をロギングする必要があるのですが、Jetson TX2のmicroSDインターフェースはUHS-Iにしか対応しておらず、カメラ画を記録するのは書き込み速度的に非常に難しいです。なので、ログを書き込むためのSSDを接続する必要があります。

※ただし、Jetson TX2はSATA2にしか対応していないので、SSDを接続した場合でも書き込み速度には上限があります。もし、更に高速にログを書き込む必要であれば、PCIeにNVMeのSSDを接続する必要があるかもしれません。

--

前提を踏まえてボードを列挙すると、現時点では


メーカー型番ボードのサイズ[mm]MIPI CSImSATA/PCIe値段
Connect TechSpacely Carrier125x95x6(IPEX 30pin)mSATA x1、miniPCIe x1¥156,750(日本代理店)
Colorado EngineeringX-Carrier87x71x6(純正カメラコネクタ*1)mSATA x1、x4 PCIe x1$399
AetinaACE-N310-A87x70x6(純正カメラコネクタ*2)mSATA x1$240

*1 Jetson純正の開発ボードと同じカメラ用のコネクタが搭載されています。
*2 Jetson純正の開発ボードと同じカメラ用のコネクタが搭載されていますが、サイズが小さいボードしか接続できず、固定用の穴位置も異なります。

あたりが候補に登ります。Spacelyは流石に高すぎて(Jetson TX2開発キットの定価の2倍)腹が立ったので候補から外しました。次にX-CarrierとACE-N310-Aで検討していたのですが、X-Carrierが在庫切れで納期が遅かったので、結局Aetina ACE-N310-Aを購入しました。

--

Aetina ACE-N310-Aを購入したのは良いのですが、すでに購入していたLeopard ImagingのMIPI CSIカメラボード(LI-JTX1-MIPI-ADPT-6CAM)を取り付けようとしたところ、実はACE-N310-Aのカメラコネクタに接続できるボードのサイズに制約があることがわかりました。


これ、カメラボードを接続しようとするとヒートシンクと基板が干渉してしまって取り付けられません… そもそも穴位置も合わないですし、このコネクタは基本的にAetinaがオプション別売りで出している"6 x MIPI CSI-II Camera Board"を取り付ける前提で設計されているようです。
※ただしこのCamera BoardのコネクタはFPCなので、これに手持ちのLeopard Imagingのカメラ(IPEX 30pin)を接続することはできません。

購入前にAetinaのサポートにJetson TX2開発キットのカメラコネクタと互換があることは確認していたのですが、こんな罠があるとは… 

そこで、なんとかカメラコネクタにボードを取り付けるべく、下駄基板を自作しました。


この基板を使うことで、Leopard Imagingのカメラボードをオフセットして取り付けることができ、無事に接続することができました。



--

以上、ドローンにJetson TX2を載せて自動制御する (ハードウェア準備編)でした。
後日、Jetson TX2にROSをセットアップする、ソフトウェア準備編を公開予定です。

--

備考1: rosbag書き込み速度の実測値

Jetson TX2を純正のキャリアボードに接続して、rosbagに画像を記録した実測値は以下のようになりました。テスト用にRealSense D435のcolor、infra1、infra2、depthのVGA画像4つをrosbagに保存し、rosbagに記録できたサイズを時間で割ったものです。


ストレージインターフェース書き込み速度
microSD Samsung PRO Plus 64GBUHS-I18.1 MB/s
SATA SSD CSSD-S6T128NHG5Q 128GBSATA236.9 MB/s
※どちらの場合も全データを保存できておらず、ストレージ書き込み速度で頭打ちになっています。

RGBのVGAで30FPSだと約27MB/sなので、rawで保存した場合microSDでは書き込みが間に合わないです。2カメラ以上保存する場合にはSSDでも間に合わないので、圧縮して保存する必要がありそうです。

備考2: MIPI CSIカメラについて

MIPI CSIは通信の規格を定めているだけで、コネクタについては規定がありません。そのため、各社が独自にいろんなコネクタのモジュールを作っており、互換性が全くありません。Jetson用のキャリアボードも当然各社が独自に様々なコネクタのボードを作っているので、一般的に他社の別のボードのカメラを流用することは難しいです。

流石にこれはまずいと思ったのか、比較的新しいキャリアボードはJetson純正の開発ボードが採用しているカメラコネクタをキャリアボードに搭載し、Jetson純正開発ボード向けのMIPIカメラを流用できるような設計になっています。また、AGX Xavierも同じコネクタを搭載しているので、このコネクタが搭載されているMIPIカメラを使用しておけば、TX2からXavierに乗り換えてもカメラを使い回すことができます。

0 件のコメント:

コメントを投稿