ドローンのシミュレータ環境構築とMissionPlannerで簡易飛行をしてみる

# はじめに
## 概要
ここ数年で大変身近になってきているドローンですが、本格的なドローンは値段が高くなかなか購入に踏み切れません。
そこで、ドローンをシミュレータで動かし、Linux上で確認する方法をここに残します。
この記事では、最短ルートを提示します。

## 環境
- Ubuntu 18.04

## インストール対象
- Ardupilot SITL
- MissionPlanner

MissionPlannerはWindows版ですが、LinuxのMono上でも動かすことができます。
多少動作が不安定ですが、動作確認には手頃のため、今回はあえてLinux上で使用します。
MissionPlannerを本格運用する際は、Windows版をお勧めします。

# 参考サイト
- https://ardupilot.org/dev/docs/building-setup-linux.html#building-setup-linux
- https://ardupilot.org/dev/docs/setting-up-sitl-on-linux.html#setting-up-sitl-on-linux
- https://discuss.ardupilot.org/t/running-mission-planner-on-linux/19100/13

# 構築手順

## シミュレータ(SITL)インストール
```
$ sudo apt-get update
$ sudo apt-get install git
$ sudo apt-get install gitk git-gui

$ cd ~
$ git clone https://github.com/ArduPilot/ardupilot
$ cd ardupilot
$ git submodule update --init --recursive

$ Tools/environment_install/install-prereqs-ubuntu.sh -y
$ . ~/.profile

~/.bashrcに、パスを追加
$ vi ~/.bashrc
export PATH=$PATH:$HOME/ardupilot/Tools/autotest
export PATH=/usr/lib/ccache:$PATH
```

## シミュレータ起動

```
$ cd ~
$ cd ardupilot/ArduCopter
$ sim_vehicle.py -w --console --map
```

![sim_vhiecle.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/7704f2b7-e3fe-9c84-a82f-ad3f4e053e31.png)



## GCS(MissionPlanner)インストール

```
$ cd ~
$ sudo apt-get install mono-complete
$ wget http://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-latest.zip
$ unzip MissionPlanner-latest.zip -d MissionPlanner
```

## GCS(MissionPlanner)の起動
```
$ ~
$ cd MissionPlanner
$ mono MissionPlanner.exe
```

![missionplanner-startup.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/1c6f4f87-db95-6c06-5096-37d5652d34a9.png)


起動時にメッセージボックスが表示されますが、進んでください。

![warning1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/2bb43e86-3a56-dc5b-388a-82d1bd06f772.png)

OKボタンを押下。

![warning2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/e234f7c0-2b5b-d738-3d49-43881050b9ab.png)

NOボタンを押下。


```Text:Tips
日本語フォントの場合、MissionPlannerの上部アイコンのフォントが見えない場合があります。
その場合は、スパナマーク（Configuration)を押下し、UI Language を English(United States) に変更してください。
```

![config-uichange.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/1b764d71-48d4-9825-adeb-96c3cd3d04c2.png)


# 動作確認

## GCS(MissionPlanner)からSITLへの接続

シミュレータ(SITL)は以下のポートでGCSからアクセスが可能となっています。

- TCP : 127.0.0.1 : port 5762
- UDP : port 14550


### TCPの場合

#### 接続方法の選択

GCS(MissionPlanner)の画面右上にある[接続方法]TCPを選択し、CONNECTアイコンを押下します。

![TCP-001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/30564d95-0266-9ddc-d1b9-0851b4c0b47f.png)


### ホストIPアドレスとport番号の入力

![tcp-urlinbput.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/a81888db-c0d5-5f08-ddb5-acfacca5a0a3.png)

![tcp-portinput.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/f0dae0c8-ab5e-7332-34f7-76ca82eac73b.png)


### UDPの場合

#### 接続方法の選択

GCS(MissionPlanner)の画面右上にある[接続方法]UDPを選択し、CONNECTアイコンを押下します。

![UDP-001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/795abbdf-2c9c-321a-2590-f663a3e4f76f.png)

#### port番号の入力

![udp-portinput.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/08c28d3b-06d6-946f-79d8-ded2b5165db2.png)


## 接続完了後の画面

右上のアイコンが、緑色になれば接続完了です。

![mp-001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/45db730e-e904-0207-cb66-8210bde22870.png)



## MissionPlannerからの動作確認

### 確認の流れ

1. 始動(ARM)
2. 離陸(TAKEOFF) 
3. 移動
4. 着陸(LAND)

#### 1.始動(ARM)

Actionsタブを押下します。
赤い四角部分に、Guidedが表示されていることを確認。
（Guided以外の場合は、SetModeボタンの左側のセレクトボックスからGuidedを選択し、SetModeボタンを押下します）
赤い丸のArm/Disarmボタンを押下後、青い丸を部分に「ARMED」が表示されます。
「ARMED」は、しばらくすると「DISARM」に戻ります。


![arm.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/1d3fc115-7291-47d7-76c0-c778718dc8c1.png)

#### 2.離陸(TAKEOFF)

##### 上昇指示

「ARMED」状態にて、以下を実施。

マップ上にて右クリックを押下し、TakeOffを実行。

![takeoff.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/1c860d75-3f2e-6813-bd34-64f97b77de65.png)

##### 高度を設定

![alt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/58e155db-8ba4-bcdd-eb40-cc63ae0088a8.png)

高度計が、4〜5mとなればOKです。

![alt5m.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/25d71826-e17d-ec37-ed94-089f4a1764b8.png)


#### 3.移動

##### 移動先指定

マップ上にて、移動したい場所で右クリックをし、Fly To Hereを押下。

![move.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/fc5ea955-3785-a84f-7f03-b1b970ef8049.png)

##### 高度指定

高度を指定します。

![alt10m.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/f5a48fc3-cb18-5df0-f14e-5ef2b92583c4.png)


移動が開始されます。

![goto.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/8d7fcb7a-962f-af26-a6de-b7f642b2660f.png)


#### 4.着陸(LAND)

##### モードをLandに設定

赤い丸のセレクトボックスにて、Landを選択後、青い丸のSetModeボタンを押下する。
赤い四角部分がLandの表示になることを確認する。徐々に高度が下がっていく。

![land1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/54071135-ccc1-9cd0-7991-8b05a4024c19.png)

##### 着陸確認

高度が0mになり、DISARMEDの表示になることを確認。

![landed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97875/659513f3-2291-77b5-d0ba-b59e4ebf41e5.png)

以上が、最低限のドローンの飛行確認となります。

もう一度実施する場合は、1.始動(ARM)から実施します。