画像処理をして考えて飛ぶような賢い自律飛行ドローンを作りたい…
とてつもなく長い道のりの気がするが、やったことをメモしていきます。
ドローンのシステム構成
ドローンのシステムは、NVIDIAの画像処理を使ったナビゲーションで動くロボットに関するRedtail Projectサイトにあるドローンの情報を参考に、ざっとこのような構成を考えた。
フライトコントローラにはOSSで色々と公開されているPixhawkを選択。
ドローン界の巨人:DJIのものはあえて使わない。
Pixhawkは、ドローンの飛行に必要な加速度センサ、ジャイロセンサ、地磁気(方位)センサ、気圧(高度)センサを内蔵したフライトコントローラで、PX4という規格に対応したものを選ぶ。このPixhawkとその中で動くソフトウェアの関係は、ドローンのossプロジェクトの政治的な理由で非常に複雑なことになっている。詳しくは@akachochinさんがこちらで詳しく解説されている。
かんたんな解説だとこちら。
とりあえずPX4/autopilotを使う方針としてすすめる。(だめとわかったらArdupilotにでも変える…上記NVIDIA Redtail ProjectはArdupilotのようだ…これは悩ましい。実際に画像処理をして飛ばしているという情報が公開されている例は非常に少ないので、少しでも確実なものを選ぶほうが良いのかも。)
さて、PX4の2020/07/30現在での最新安定版はV.1.10.1で、ベータ版はV.1.11.0Beta2のようだ。
PX4のソフトウェア概要を読むと、PX4はドローンなどを自動で動かすためのオープンソースのフライトコントロールソフトウェアで、開発者がドローンアプリケーションを開発するための、標準的なハードのサポートやソフトウェアスタックを提供するのが目的だそうだ。
PX4はDronecodeの一部で、Linux Foundationが管理しているということで、GCSのQGroundControlや、通信規格MAVLinkとSDKもホストしているとのこと。
ということで、管制塔というか地上の管理用のPCにはGCS(Ground Control System)としておのずとQGroundControlを選択することになる。
QGroundControlのインストール
まずはこのQGroundControlをubutu 18.04とROS melodicをインストール済みのPCに入れてみる。
DroncodeのページにQGroundControlのダウンロードとインストールを解説したページがあるので、ubuntu linuxのところの手順に従ってやってみる。
まずシリアル通信を妨げるモデムマネージャを削除
($USERはシェル変数でユーザー名をかえす)
$ sudo usermod -a -G dialout $USER
$ sudo apt-get remove modemmanager -y
QGroundControlが使うパッケージをインストール
$ sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
ユーザパーミッションの変更を反映するため一度再起動。
$ sudo shutdown -r now
QGroundControl.AppImageをダウンロード
適当な場所に保存して、実行権限をつける
$ chmod +x ./QGroundControl.AppImage
実行
$ ./QGroundControl.AppImage
地図が描かれたアプリケーションが立ち上がればQGCのインストールは成功。
PixhawkにPX4をインストール
PixhawkにPX4をインストールするにはQGroundControl(QGC)を使う。
QGCの歯車のようなアイコン→Firmwareと選択して、USBケーブルでPCとPixhawkを接続、ウィンドウの右側にPX4かArduPilotのどちらを選ぶかがでてくるので、PX4を選択、Advanced settingsはStandard Version(stable)にしておいて、OKする。
書き込みが成功すると、ウィンドウ右上にPX4とアイコンが出て、音声合成が「manual flight mode」とか喋りだす。
ひとまずここまでで最初の一歩は踏み出せたか?