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 件のコメント:

コメントを投稿

立ち上がらないraspberrypiのネットワーク

 raspberrypiのネットワークが立ち上がらなくなってしまっていた。差し当たって必要ないのでほっておいたが、今日、いろいろ調べてみた。 結局、raspi-confgで、network Configure をdhcpcdから、networkmanagerに変更したら立ち上がる...