5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ArduPilot SITL + QGroundControlでドローンを飛ばしてみる on Windows

Last updated at Posted at 2020-12-22

ACCESS Advent Calendar 2020 23日目の記事です。

はじめに

ドローンをシミュレータ上で飛ばして遊んでみる内容です。ドローンをシミュレータ上で飛ばすのにも色々方法がありますが、今回は比較的簡単なArduPilot SITLとQGroundControlという構成で行います。

Windowsを対象にしています。MacやLinuxの方はこちらの記事も参考にしてみてください。

ArduPilotとは?

ArduPilotは、ドローンに限らず、ヘリコプター、固定翼航空機、ローバーなどをサポートするオープンソースの自動操縦システムです(詳しくは https://ardupilot.org/dev/index.html) 。似たようなシステムに、PX4というものもあります。

今回使用するのはArduPilotのドローン用ファームウェアであるArduCopter(単にCopterとも言う)を使用します。

SITLとは?

SITLとは、Software in the Loopの略称です。ドローンやファームウェアの挙動を実機を使うことなく、すべてパソコン上でシミュレートして確認するものです。
ArduPilotはSITL simulatorがWindows、Linux、Macで利用可能です。

QGroundControlとは?

QGroundControlは、ドローンの状態監視や、操作、ミッション作成、設定などを行うオープンソースのソフトウェアです。地上局(Ground Control Station, GCS)の一種で、他にMission PlannerやAPM Plannerなどがあります。
QGroundControlはWindowsやLinux、Macだけでなく、AndroidやiOSにも対応しています。

構成

構成はこのようになっています。
Architecture

上図はArduPilotのSITL Architectureからの引用です。上図の右下にあるOther GCSが、今回はQGroundControlになります。
図中のMAVProxyは通信の仲介役、FlightGearは3Dのドローンビューワとして使用します。

インストール

必要なソフトウェアをインストールします。各インストール中に管理者権限を求められた場合は、はいを選択します。

Cygwin

ArduCopterのビルドやSITLの実行に必要なため、Cygwinをインストールします。下記サイトのsetup-x86_64.exeをクリックしてダウンロードだけします(まだ実行しません)。
https://www.cygwin.com/install.html
ダウンロードしたら、Windowsのコマンドプロンプトを開き、下記コマンドを実行します。

cd ダウンロードしたディレクトリ
setup-x86_64.exe -P autoconf,automake,ccache,gcc-g++,git,libtool,make,gawk,libexpat-devel,libxml2-devel,python36,python36-future,python36-lxml,python36-pip,libxslt-devel,python36-devel,procps-ng,zip,gdb,ddd

実行したらCygwinのセットアップが開かれるので、Choose A Download Siteの画面になるまで、次へを選択して進めます。
Choose A Download Siteでは、ftp://ftp.iij.ad.jpを選んで次へを選択します。
あとは全て次へを選択して、Cygwinのインストールは完了です。

MAVProxy

MAVProxyは、今回はArduCopterとQGroundControlが通信をするための中継役として使用されます。
こちらからMAVProxySetup-latest.exeをダウンロードし、インストールします。
https://firmware.ardupilot.org/Tools/MAVProxy/
あとはデフォルトのまま次へを押し続けて進めます。最後のLaunch MAVProxyのチェックは外しておきます(外さなかった場合はその後起動するMAVProxyを閉じます)。

QGroundControl

下記サイトにQGroundControl-installer.exeというリンクがあるので、そこからダウンロードして実行します。
https://docs.qgroundcontrol.com/master/en/getting_started/download_and_install.html
あとはデフォルトのまま次へを押し続けて進めます。

(オプション) FlightGearのインストール

FlightGearはドローンの状態を3Dモデルで確認するために使用します。これがなくてもQGroundControlでドローンの状態を確認できます。が、FlightGearもあると、ドローンの状態が視覚的に分かりやすくなります(プロペラが回っているか、ドローンが傾いているか等)。

下記サイトのDownload FlightGear 2020.3.4 for Windowsをクリックし、ダウンロードします。広告が出てくることがありますので、そのときは右上などにあるXボタンで閉じてください。ダウンロードが自動で始まります(始まらなければ緑色のDownloadボタンをクリック)
https://www.flightgear.org/download/

ダウンロードしたファイルを実行し、デフォルトのままNextを押し続けてインストールしてください。

実行

インストールしたソフトウェアを実行していきます。各ソフトウェアで、起動時にネットワークのアクセス許可を求められた場合は許可をしてください。

初回のみ

Cygwinを起動し、次のコマンドを実行して必要なパッケージをインストールします。

ln -s /usr/bin/python3.6 /usr/bin/python
ln -s /usr/bin/pip3.6 /usr/bin/pip
pip install empy pyserial pymavlink

続いて、次のコマンドでArduPilotのソースコードをcloneします。

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

毎回実行

(オプション)
FlightGearをインストールした方は、Cygwinを新しく起動し、次のコマンドでFlightGearを起動します。

~/ardupilot/Tools/autotest/fg_quad_view.bat

起動すると、このような画面が現れます。これでドローンの状態が3Dモデルで把握できます。
1.png

(共通)
Cygwinで、次のコマンドを実行しSITLを起動します。初回起動時はArduCopterのビルドが実行されるため、時間がかかります。

cd ~/ardupilot/ArduCopter
../Tools/autotest/sim_vehicle.py

mavproxy.exeというウィンドウが開かれれば、SITLが起動しています。

あとは、インストールしておいたQGroundControlを実行します。
QGroundControlが起動して、ウィンドウ右上にArduPilotの文字列が現れれば、SITLとQGroundControlが接続されたことになります。この状態で、SITL上のドローンを飛ばすことが出来ます。
2.png

操作

QGroundControlのウィンドウ左上のQのアイコンを選択し、設定画面を開きます。
下にスクロールしていくとVirtual Joystickという項目があるので、そこにチェックを入れます。
ウィンドウ左上部分の紙飛行機アイコンで先程の画面に戻ると、左右に仮想スティックが表示されます。
3.png
左側スティックの上下でドローンの上昇下降、左右で旋回を操作します。また、右側のスティックでドローンの前後左右移動を操作します。
4 - コピー.png

ドローンを離陸させるには、左側のスティックを、右下いっぱいに入力して数秒待ちます。すると、画面上部の表示がDisarmedからArmedに変化します。Armedになることで、初めてドローンを上昇させることができます。
4 - コピー (2).png4 - コピー (3).png

あとは好きに動かしてみましょう!マップ上のドローンが動き、様々な計器が変化するのを確認できるはずです。FlightGearをインストールした方は、ドローンのプロペラが回り、操作に応じて動く様子が確認できます。

着陸して停止させたいときは、ドローンが地面にいる状態(分かりづらいですが、左側スティックを下げていても右側ウィンドウのAlt (Rel) (m)が変化しない状態)で左側のスティックを左下いっぱいに入力して数秒待つと、Disarmedになってドローンが停止します。

おわりに

ArduPilot SITLとQGroundControlでドローンを飛ばしてみました。
今回は手動飛行だけでしたが、ArduPilotはウェイポイントを指定して自動飛行する機能があり、ウェイポイントをQGroundControlで作成することも可能です。
https://docs.qgroundcontrol.com/master/en/PlanView/PlanView.html

今回はArduPilot SITLとQGroundControlという構成でしたが、ArduPilotをPX4に入れ替える、ということも可能です。それはMavlinkというプロトコルのおかげなのですが、そのあたりの話はまたの機会に出来ればと思います。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?