##目的
Matrice300RTK(M300)とManifold2をUSBケーブルで接続する際に順番やタイミングよってManifold2(ubuntu16.04)内でのUSBデバイス名が想定したものにならないことがあり、DJI Onboard SDK(OSDK)やOSDKを使用したプログラムがエラーになることがあるため、USBデバイス名を固定する。
##使用機器
- DJI Matrice 300 RTK
- Manifold2シリーズ(初期インストール時のubunu16.04を想定。もしくは他Ubuntu16.04を搭載したPC)
- USBシリアル変換ケーブル(UARTをUSBに変換するケーブル。Amazon等で購入)
- デュアルUSBケーブル(A-AタイプUSBケーブル。M300に同梱)
##前準備
OSDKを使用するためにDJIが用意したドキュメントを元に機器同士を接続する
M300とManifold2の接続についての説明(DJIのドキュメントへリンク)
https://developer.dji.com/document/1bb1b2dc-9694-4d6b-ad43-fa69c5a10400
##USBデバイス情報確認
USBシリアル変換ケーブル、デュアルUSBケーブルだけをManifold2を接続した場合下記のように認識される。
- シリアル変換ケーブルデバイス名: /dev/ttyUSB0
- デュアルUSBケーブルデバイス名: /dev/ttyACM0
※順番やタイミング、その他のUSB機器を繋いだ場合、/dev/ttyUSB1や/dev/ttyACM1と認識される
上記のデバイス名で認識している状態で、それぞれのidVendorとidProductを調べる
調べるコマンド
- シリアル変換ケーブル(/dev/ttyUSB0と認識している場合)
udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)
- デュアルUSBケーブル(/dev/ttyACM0と認識している場合)
udevadm info -a -p $(udevadm info -q path -n /dev/ttyACM0)
上記コマンドを実行しlessやgrepで確認
##デバイス名固定用設定ファイル作成
前述したコマンドで確認したidVendorとidProductを元に設定ファイルを作成する
- シリアル変換ケーブル用
KERNEL=="ttyUSB*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="ttyUSBSerial"
- デュアルUSBケーブル用
KERNEL=="ttyACM*", ATTRS{idVendor}=="2ca3", ATTRS{idProduct}=="001f", SYMLINK+="ttyACMDJI"
上記のファイルを作成したあとに該当するUSBを刺すとSYMLINKで指定した名前でシンボリックリンクが張られその名前でUSBデバイス名で使用できるようになる。
- 別パターン(上記の2つのファイルを1つにまとめることも可能)
KERNEL=="ttyUSB*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="ttyUSBSerial"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2ca3", ATTRS{idProduct}=="001f", SYMLINK+="ttyACMDJI"
##(おまけ)OSDKサンプルプログラム用設定およびファイル
####OSDKサンプルプログラム設定ファイル
app_id : abcdefg(DJIから取得したもの)
app_key : abcdefghijkemlasdfoajsdofijsadpofiajsdpfijasdfpiajspofdij(DJIから取得したもの)
device : /dev/ttyUSBSerial
baudrate : 921600 (DJI Assitant2で設定したものと合わせる)
acm_port : /dev/ttyACMDJI
####DJI Assitant2 for Matriceの設定