#この記事は
Dronecode本家サイトのCompanion Computerページの抜粋・翻訳です。
Companion Computer for Pixhawk Series
Raspberry Pi、Odroid、Tegra K1などのコンパニオンコンピュータとPixhawkファミリのボードのインターフェースは必ず以下のようになっていま:
- コンパニオンコンピュータとのインターフェースにはシリアルポートTELEM 2ポート使用します。
- メッセージ形式はMAVLinkです。
Pixhawk Setup
構成可能なシリアルポートでMAVLinkを有効にします。
コンパニオンコンピュータ用には
TELEM 2
ポートを利用するのが一般的です。
TELEM 2
にデフォルトのコンパニオンコンピューターメッセージストリームを設定するには、次のパラメーターを設定します:
-
MAV_1_CONFIG =
TELEM 2
(MAV_1_CONFIG
は大抵TELEM 2
ポートにマップされてます。) -
MAV_1_MODE =
Onboard
- SER_TEL2_BAUD = 921600 (ログストリーミングやFastRTPSのためには921600かそれ以上が推奨。)
さらなる詳細はMAVLink Peripherals (GCS/OSD/Companion)を参照
Companion Computer Setup
MAVLinkを受信するには、コンパニオンコンピューターがシリアルポートと通信するソフトウェアを実行する必要があります。最も一般的な選択肢は:
- MAVROSROSノードと通信する
- C/C++のサンプルコード
- MAVLink Routerで、シリアル通信とUDP間のMAVLinkルーティングを行う
Hardware setup
以下の開設に従って、シリアルポートを配線します。
なお、すべてのPixhawkのシリアルポートは3.3Vに対応し、5Vにも互換性があります。
多くの最近のコンパニオンコンピュータは1.8Vだけをサポートし、3.3Vだとダメージを受けてしまいます。
そのため、レベルシフターを利用してください。
多くのケースではアクセス可能なハードウェアシリアルポートにはすでにいくつかの機能(モデムまたはコンソール)が関連付けられており、使用する前にLinuxで再構成する必要があります。
FTDI Chip社のUSB-シリアルアダプターボードを以下の配線設定で使用するのが安全です。これは常に機能し、簡単に設定できます。
TELEM2 | FTDI | ||
---|---|---|---|
1 | +5V (red) | DO NOT CONNECT! | |
2 | Tx (out) | 5 | FTDI RX (yellow) (in) |
3 | Rx (in) | 4 | FTDI TX (orange) (out) |
4 | CTS (in) | 6 | FTDI RTS (green) (out) |
5 | RTS (out) | 2 | FTDI CTS (brown) (in) |
6 | GND | 1 | FTDI GND (black) |
Software setup on Linux
LinuxでUSB FTDIのデフォルト名は\dev\ttyUSB0
のようになります。
もしUSBまたはArduinoで2番目のFTDIがリンクされている場合、それは \dev\ttyUSB1
として登録されます。
最初に接続したプラグインと2番目に接続したプラグインの混乱を避けるため、USBデバイスのベンダーと製品IDに応じて、ttyUSBxからわかりやすい名前へのシンボリックリンクを作成することをお勧めします。
lsusb
コマンドで、ベンダーIDと製品IDを取得できます。
$ lsusb
Bus 006 Device 002: ID 0bda:8153 Realtek Semiconductor Corp.
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 05e3:0616 Genesys Logic, Inc.
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 2341:0042 Arduino SA Mega 2560 R3 (CDC ACM)
Bus 003 Device 005: ID 26ac:0011
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
ArduinoはBus 003 Device 004: ID 2341:0042 Arduino SA Mega 2560 R3 (CDC ACM)
PixhawkはBus 003 Device 005: ID 26ac:0011
もしデバイスが見つからない場合は、一回抜いて、
lsusb
を実行し、改めて挿して、lsusb
を再度実行すればきっと見つかります。
そして、次の内容で/etc/udev/rules.d/99-pixhawk.rules
というファイルに新しいUDEVルールを作成し、idVendorとidProductを自分のものに変更できます。
SUBSYSTEM=="tty", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0042", SYMLINK+="ttyArduino"
SUBSYSTEM=="tty", ATTRS{idVendor}=="26ac", ATTRS{idProduct}=="0011", SYMLINK+="ttyPixhawk"
最後に、再起動後、どのデバイスが何であるかを確認し、スクリプトに/dev/ttyUSB0
の代わりに/dev/ttyPixhawk
を置くことができます。
rootとしてスクリプトを実行する必要がないように、
usermod
をつかってtty
グループdialout
グループに自分を追加してください。
usermod -a -G tty ros-user
usermod -a -G dialout ros-user