🫣

Ardupilot Autoモードミッション飛行でのしくじり

2024/06/18に公開

はじめに

Pixhawk 2.4.8というヤバそうなフライトコントローラーを搭載したマルチコプターを使ってドローンの仕組みを勉強しています。(EKF3が木が多い場所でレーン変更を発生させる危険があるので流石にこれ以降は変えています)

その中で、ミッション飛行にチャレンジした時のしくじりや学びをまとめて紹介したいと思います。

Autoモードからモードを変更して再度Autoモードにしたら速度がバグった

実際にはバグった訳ではなく、Autoモードがどのような仕組みで速度をセットしているのかをしっかり理解していないがための勘違いであります。

具体的に説明すると、WP1とWP2の間でDO_CHANGE_SPEEDを5m/sと定義していました。これは、それ以降もこの速度で飛行できる初期化定義だと勘違いしていたためです。しかし、実際にはWP2を通過してWP3との間でモード切り替え後にAutoモードを再開すると最短距離のWP2から再開するため速度は10m/sになってしまいました。これは、DO_CHANGE_SPEEDはWP1から始まった時だけに発火するコマンド定義になっており、モードがリセットされるとWPNAV_SPEEDが参照されてしまいWPNAV_SPEEDに設定されていた10m/sで飛行されるということになります。

なので、フライトプランが全てのWP間で一定の速度で飛行する場合はフルパラメーターリストのWPNAV_SPEEDにその速度を指定しておく必要がありました。

システムアーキテクチャーに興味がある場合は、この図を目に通してコードを読んでみるとわかります。
主に、AC_WPNAV.cppとAC_PosControl.cppがAutoモードの速度設定に関係してきます。
Mode変更をするとInit(初期化)が走ってしまうんですよね。
https://ardupilot.org/dev/docs/apmcopter-code-overview.html

おわりに

今回は、実際に飛行して発見した問題になりますが、これは本来シュミレーション時にAuto Modeでモード切り替えをしても確認できるし確認すべきことだったと思いました。

Discussion