Dronecode Devマニュアル抜粋&翻訳 - Companion Computer

#この記事は
Dronecode本家サイトの[Companion Computer](https://dev.px4.io/master/en/companion_computer/pixhawk_companion.html)ページの抜粋・翻訳です。


# Companion Computer for Pixhawk Series
Raspberry Pi、Odroid、Tegra K1などのコンパニオンコンピュータとPixhawkファミリのボードのインターフェースは必ず以下のようになっていま：

- コンパニオンコンピュータとのインターフェースにはシリアルポートTELEM 2ポート使用します。
- メッセージ形式はMAVLinkです。

## Pixhawk Setup
[構成可能なシリアルポート](https://docs.px4.io/master/en/peripherals/serial_configuration.html)でMAVLinkを有効にします。

> コンパニオンコンピュータ用には`TELEM 2`ポートを利用するのが一般的です。

`TELEM 2`にデフォルトのコンパニオンコンピューターメッセージストリームを設定するには、次のパラメーターを設定します：

- [MAV_1_CONFIG](https://dev.px4.io/master/en/advanced/parameter_reference.html#MAV_1_CONFIG) = `TELEM 2` (`MAV_1_CONFIG`は大抵`TELEM 2`ポートにマップされてます。)
- [MAV_1_MODE](https://dev.px4.io/master/en/advanced/parameter_reference.html#MAV_1_MODE) = `Onboard`
- [SER_TEL2_BAUD](https://dev.px4.io/master/en/advanced/parameter_reference.html#SER_TEL2_BAUD) = 921600 (ログストリーミングやFastRTPSのためには921600かそれ以上が推奨。)

さらなる詳細は[MAVLink Peripherals (GCS/OSD/Companion)](https://docs.px4.io/master/en/peripherals/mavlink_peripherals.html)を参照

## Companion Computer Setup
MAVLinkを受信するには、コンパニオンコンピューターがシリアルポートと通信するソフトウェアを実行する必要があります。最も一般的な選択肢は：

- [MAVROS](https://dev.px4.io/master/en/ros/mavros_installation.html)ROSノードと通信する
- [C/C++のサンプルコード](https://github.com/mavlink/c_uart_interface_example)
- [MAVLink Router](https://github.com/intel/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
```