0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

Matrice300RTKとManifold2のUSB接続時の内部デバイス名の固定化

目的

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)

実行時の一部キャプチャ
image.png

  • デュアルUSBケーブル(/dev/ttyACM0と認識している場合)
udevadm info -a -p $(udevadm info -q path -n /dev/ttyACM0)

実行時の一部キャプチャ
image.png

上記コマンドを実行しlessやgrepで確認

デバイス名固定用設定ファイル作成

前述したコマンドで確認したidVendorとidProductを元に設定ファイルを作成する

  • シリアル変換ケーブル用
/etc/udev/rules.d/98-USBSerial.rules
KERNEL=="ttyUSB*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="ttyUSBSerial"
  • デュアルUSBケーブル用
/etc/udev/rules.d/99-ACMDJI.rules
KERNEL=="ttyACM*", ATTRS{idVendor}=="2ca3", ATTRS{idProduct}=="001f", SYMLINK+="ttyACMDJI"

上記のファイルを作成したあとに該当するUSBを刺すとSYMLINKで指定した名前でシンボリックリンクが張られその名前でUSBデバイス名で使用できるようになる。

  • 別パターン(上記の2つのファイルを1つにまとめることも可能)
/etc/udev/rules.d/99-USBDJI.rules
KERNEL=="ttyUSB*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="ttyUSBSerial"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2ca3", ATTRS{idProduct}=="001f", SYMLINK+="ttyACMDJI"

(おまけ)OSDKサンプルプログラム用設定およびファイル

OSDKサンプルプログラム設定ファイル

Onboard-SDK/build/bin/UserConfig.txt
app_id : abcdefg(DJIから取得したもの)
app_key : abcdefghijkemlasdfoajsdofijsadpofiajsdpfijasdfpiajspofdij(DJIから取得したもの)
device : /dev/ttyUSBSerial
baudrate : 921600 (DJI Assitant2で設定したものと合わせる)
acm_port : /dev/ttyACMDJI

DJI Assitant2 for Matriceの設定

image.png


Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?