Rover製作03 MissionPlannerでardupilotと接続・アップデートする

# 環境
この記事は以下の環境で動いています。

| 項目 | 値 |
|:-:|:-:|
| CPU | Core i5-8250U |
| OS | Windows10 |
| MissionPlanner | v1.3.80 |

| 項目 | 値 |
|:-:|:-:|
| Board| Pixhawk(v2.4.8) |
| Ardupilot | Rover V4.2.3 |

今回使用する機材は以下です。

* WindowsPC
* pixhawk1(v2.8.4)
* USB-microBケーブル

# 概要
またPixhawkにArdupilotを書き込んでして、基本的な機能を確認します。
これらの操作はWindowsPCにインストールしたMissionPlannerから操作をします。
ここでは、ArdupilotのFWアップデートとMissionPlannerからの基本的な操作が出来るようにします。

![03_pixhawk_update.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254442/a7b7685b-905f-5195-adc8-d8aebcc918ad.jpeg)

# 予備知識

ここで出てくる名前として。

|名称|説明|
|:--|:--|
|pixhawk|ドローン用のオープンソースハードウェア|
|ardupilot|pixhawkの上で動くドローン制御ソフトウェア|
|Mission Planner|Windows上で動くプログラムでardupilotと接続して情報の表示や指令を行う|

ここでは一般的に良く売られている以下のようなPixhawkを使います。
物によっては(v2.4.8)と書かれていますが、ボードの種類自体はPixhawkであり、Pixhawk2ではないことに注意して下さい。

![pixhawk.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254442/d3745212-1ffc-b1e8-1b4d-8db444ad1077.png)

ArdupilotはこのPixhawk上で動くソフトウェアです。ただDrone以外にも対応していて、以下の5つのvehicle typeに対応しています。

* Coper：ドローン（マルチコプター）型やヘリコプター型
* Plate：飛行機型
* Rover：地上を走行する物
* Sub：潜水艦型
* AntenaTracker：地上に固定して常に特定のドローンの方向にアンテナを向ける装置

vehicle typeごとにファームウェアが存在します。今回はAGVを作るので、Roverの最新のFWを書き込みます。
pixhawkを購入したときは大抵はCoperのファームウェアが書かれていることが多いです。

MissionPlannerはpixhawk上のardupilotを操作するためのターミナルソフト的な役割です。
PixhawkとはTCP/UDP/シリアル通信を介して接続します。
MissionPlannerから、Ardupilotに対して以下のような操作が行えます。

* ardupilotのテレメトリー情報の表示
* モード変更やARMなどの操作、Missionの実行
* 設定パラメーターの変更
* センサーキャリブレーション
* ファームウェアアップデート

インストール環境の言語設定が引き継がれます。言語を変更したい場合は設定画面から行えます。

# 事前条件

以下の機材が必要です

* WindowsPC
    * インターネット接続が必要
* Pixhawk
* USBA-microBケーブル

# 手順

## WindowsPCへのMissionPlannerのインストール

* WindowsPCで、[公式ページ](https://firmware.ardupilot.org/Tools/MissionPlanner/)から[MissionPlanner-latest.msi](https://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-latest.msi)をダウンロードします。
* 実行するとインストーラーが立ち上がるので、指示に従ってインストールします。
* アプリから「MissionPlanner」を検索して実行します。10秒程度で以下のようなGUIが立ち上がります。
![MissionPlanner1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254442/433c0263-bac7-b34b-9c93-3028d23c6bca.png)

## Pixhawkとの接続

* WindowsPCとPixhawkをUSB-microBケーブルで接続する。
    * この時点でPixhawkにはUSB給電で電源が入り、ランプ類が点灯します。特に事前に設定などしていない場合は黄色の点滅をします（キャリブレーション等のセットアップが終わっていると青く点滅します）。
* PCでMissionPlannerを立ち上げる。
* MissionPlannerの右上のコンボボックスでPixhawkに接続したCOMポートを選択する。
    * Pixhawkが正常に接続されていると自動で「COM1(Pixhawk)」のように表示される。
    * ボーレートはデフォルトだと「57600」です。接続時にボーレートは自動推定されるため、設定しなくてもよい。
* 「接続」ボタンを押す。
    * 接続のダイアログが出てきて10秒ほどで接続になります。
* Pixhawkとの接続の確認をする。
    * Pixhawkを物理的に上下に動かしたり回転させたりすると「フライト・データ」タブの左下の「クイック」ウィンドウで表示されている値が動く。

![MP_setup1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254442/03848562-0eae-9afb-df85-9a4b721c2ec0.gif)
(gifで圧縮しているので色が変ですが、本当はもっときれいな表示です)

* Pixhawkと切断する
    * 右上の「切断」と書かれているボタンを押す。

![MP_setup2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254442/b679dbec-9947-1d34-6b6c-6f502d045b33.png)

## Pixhawkへのファームの書き込み

* WindowsPCとPixhawkをUSBケーブルで接続する。
* MissionPlannerを起動する（まだ「接続」はしない）。
* 「初期設定」タブを開く
* 左のメニューから「ファームウェアインストール」を押す。
* ウィンドウ中の表示から「Rover Vx.x.x OFFICIAL」のタイルを選択する。
    * 「Vx.x.x」では現在の最新バージョンが表示されている。

![MP_setup3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254442/3e1bc2ed-d575-00eb-23fb-62da360da0a5.png)

* 出てくるウィンドウのPlatformで「Pixhawk1」を選択する。
* 「Uploaad Firmware」を押す。

![MP_setup4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254442/c96bceb6-296e-a4db-f343-2c744a3a0364.png)

* 画面に「Update Done」と表示されたらPixhawkの電源を再投入する。

## 接続確認をする

* FWアップデート後のPixhawkをWindowsPCに接続して、MissionPlanenrで「接続」する
* FWの確認をする。
    * 右下の「メッセージ」タブ中の表示で`20XX/XX/XX XX:XX:XX : ArduRover V4.1.5 (3ef2b3f4)`の様なバージョンの表示を確認する。

## BoardTypeの設定

* 「メッセージ」タブで「Config Error: fix problem then reboot」の表示が出ていることを確認する。
    * 出てない場合はこの作業は不要なためスキップする。
* メニューの「設定・調整」を押す。次に「フルパラメーターツリー」を押してパラメーター設定画面を開く
* 「BRD_TYPE」のパラメーターに「2」を設定する。
* 画面右の「パラメーター書き込み」ボタンを押す。
* Pixhawkの電源を再投入する。
* 「メッセージ」タブで「Config Error: fix problem then reboot」の表示が出ないことを確認する。

# 目次ページへのリンク
[ROS講座の目次へのリンク](https://qiita.com/srs/items/5f44440afea0eb616b4a)
[ROS2講座の目次へのリンク](https://qiita.com/srs/items/5f0d765343ca78f524ed)