2021年9月20日月曜日

MAVSDKとMavLink

 今日わかった大切なことを記録しておく。

PX4というのは、複雑なシステムで、例えば https://slideplayer.com/slide/17893046/ からお借りした図を貼り付けると、



こんな感じになるようだが、ぱっと見わかりにくい。フライトコントローラーをどうやってコンピュータから制御するのかというのがポイントだが、QGroundControllerからでも一部できたりするし、MAVSDKにはより詳しいコマンドが掲載されている。しかし、今日わかったのは、MAVSDKとかQGroundControllerよりも基礎的なコマンドシステムになっているということだ。

今日までは、まあ、詳しいリファレンスのあるシステムである、MAVSDKで必要なプログラムを書こうとしていた。まあ、実際書くことはできる。しかし、たとえば、フライトモードの変更は、MAVSDKではできないと思う。散々調べてもできそうになかった。

フライトモードの変更は、PixHawkを使う上ではとても大事だ。もちろん、プロポやQGroundContoroller(以下QGCと略す)を使えば、簡単にできるのだが、それでは納得いかないのだ。QGCを使うためには、その間、PixHawkとUSB接続しておかなければならない(Wi-fiでもできるものもあるのだろうが)。プロポを使わなくてもいいシステムを考えているので、これもだめだ。そうなると、いまのフライトモードがなんであり、別のフライトモードにセットするのはどうしてやりのだということになる。QGCができるということは、どこかにそのコマンドがあるはずなのだ。QGCのソースを調べればその辺りはわかるのだと思うがそれはやっていない。

それで、今日調べたら、また、MavLinkでそれができるのだ。というか、MavLinkでは、PixHawkにMAVSDK以上に、詳細なコマンドを送ることができるのだ。それは、

https://mavlink.io/en/mavgen_c/example_c_uart.html

ここにあるサンプルを見てわかった。これは、実際に、PixHawkにUSBのシリアルポートを通してつながっているRaspberryPIでコンパイルできて、PixHawkにコマンドを送ることができたのだ。

Mavlinkライブラリというのは、ヘッダーファイルしかないという一見変なものなのだが、それは、整数値を持つコマンドが定義されていて、それを使ってすぐにコマンドをシリアルポート経由で送ることができるということなのだ。

それがわかって、なるほどと思った。MAVSDKを使うのはやめて、MavLinkでシステムを作ろうということになったわけだ。

0 件のコメント:

コメントを投稿

920MHz帯無線通信モジュールTY92SS-E2730を使う

 先にも書いたが、ドローン2号機上のコントローラーはラズパイ4で、それとのやりとりをもともとWIFI経由で予定していたが、機体がアルミパイプであるために通信が不安定で使い物にならなかった。そこで、プロポに変えた。プロポの信号取り出しもなんとか安定できるようになったが、そのシステム...