目次 — 知りたいところから読む
前提と読み方
前提知識 座標・速度・センサの基本用語。学習ガイドから前提記事を選べます。
入門 · 原理・構成・判断のための解説です。
ArduPilotは、ドローン専用の「自動操縦アプリ」ではない。飛行機(Plane)、マルチコプター(Copter)、地上車両(Rover)、潜水・ボート(ハイブリッド)まで、センサを読み、状態を推定し、アクチュエータへ指令を出し、異常時に安全状態へ移行する組み込みプラットフォームである。機体を飛ばす前に、推定・制御・通信・電源・地上局を一つの安全ケースとして理解することが重要だ。
自律飛行機の実例画像: Skydio X2D inspecting aircraft(Mauricio Campino, Public domain)、Wikimedia Commons。ArduPilot対応機そのものではなく、機上計算と自律飛行の用途を示す比較対象である。
30秒で分かる結論
- ArduPilotはIMU、GNSS、磁気、気圧、距離センサをEKFで融合し、姿勢・速度・位置・バイアスを推定する。
- Copterは推力配分と姿勢制御、Planeは空力とエネルギー管理、Roverは車輪・操舵と経路追従が中心で、同じパラメータを共有しない。
- 内側の角速度・姿勢ループを高頻度で回し、外側の位置・速度・ミッションループが目標を生成する。PIDの符号と単位を実機で確認する。
- MAVLinkは機体と地上局、コンピュータ、周辺機器を結ぶメッセージプロトコル。通信断、低電圧、GNSS喪失、ジオフェンス逸脱をフェイルセーフで扱う。
- SITL、ログ再生、プロペラを外したベンチ試験、拘束試験、低高度試験を段階的に行う。シミュレーションが成功しても、実機の振動・電磁ノイズ・電源降下は別問題である。
1. アーキテクチャ
図1 — センサをEKFで融合し、内側の姿勢・速度制御からミキサを経てモータ・サーボへ出力する。MAVLinkは地上局や外部コンピュータとの境界になる。
機体のメインループは、センサ取得、推定、制御、出力、通信、ログを一定周期で処理する。IMUの高周波データが姿勢を予測し、GNSSや磁気、気圧、外部ビジョンが低周波の補正を与える。推定品質が悪化したときは、制御器が目標を追い続けるのではなく、ホールド、帰還、着陸などの安全動作へ切り替える。
2. EKFによる状態推定
状態ベクトルの一例は位置p、速度v、姿勢R、ジャイロ・加速度バイアスb_g,b_aである。IMUで予測し、外部観測で更新する。
ここでa_m,\omega_mは測定値、gは重力、[\cdot]_{\times}は外積行列である。EKFは共分散Pを伝播し、観測残差(innovation)が想定範囲を外れたらそのセンサを一時的に拒否する。磁気干渉やマルチパスGNSSをそのまま受け入れないための仕組みだ。
機体振動は加速度計へ高周波成分を加え、推定と制御を不安定にする。フレーム剛性、プロペラのバランス、ダンパ、フィルタ遅延を機械とソフトの両面で調整する。ログの振動スペクトルとEKFのinnovationを同じ時刻で見ると、原因を切り分けやすい。
3. Copter・Plane・Roverの制御
Copter
マルチコプターは、総推力Tと各モータの回転数で姿勢トルクを作る。近似的には
で、ミキサがロール・ピッチ・ヨー・スロットルの要求を各モータへ配分する。姿勢角ループの外側に速度・位置ループがあり、風や積載変化に合わせて推力余裕を監視する。
Plane
固定翼は翼の揚力と抗力、速度、迎角、エネルギー状態を使って飛ぶ。ロール角で旋回し、ピッチで速度・高度を調整するため、マルチコプターのゲインを流用できない。自動着陸は風、滑走路、センサの遅延を含む専用の試験が必要だ。
Rover
Roverは車輪速、操舵角、GNSS、コンパス、LiDARなどを融合し、ウェイポイントと速度を追従する。車輪滑りや坂道でDead Reckoningがずれるため、robotics-dead-reckoningの記事で扱うオドメトリと同様に共分散と再ローカライゼーションを設計する。
4. ミッションとMAVLink
ミッションはウェイポイント、速度、高度、撮影、着陸などのコマンド列である。MAVLinkは小さなバイナリメッセージで、心拍(HEARTBEAT)、位置、姿勢、パラメータ、ミッション、コマンド確認をやり取りする。UDPでSITLと地上局を接続し、実機では無線リンクの遅延・帯域・暗号化・認証を評価する。
ミッションを自動化するときは、コマンド受領を待たずに次へ進めない。ACK、タイムアウト、再送、キャンセル、電源再投入後の再開位置を定義する。地上局が切れても機体が安全に帰還・着陸できるよう、通信は制御の単一障害点にしない。
5. フェイルセーフと安全試験
低電圧、RCリンク断、GNSS品質低下、EKF異常、ジオフェンス逸脱、モータ故障を検出し、機体種別に応じた動作へ遷移する。Copterの「帰還」が安全とは限らず、強風・障害物・ホーム位置未確定なら着陸やホールドの方が適切な場合がある。閾値を設定したら、実際にその閾値を跨ぐ試験を低リスク環境で行う。
試験はSITL→ハードウェアインザループ→プロペラなし→拘束→低高度→運用高度の順で段階化する。電源を急に落とす、GNSSアンテナを遮蔽する、通信を切る、センサを一つ外すといった異常試験をログ付きで実施する。飛行許可、地域の航空法、プライバシー、電波法も技術要件の一部である。
6. パラメータを調整する順序
- センサの向き、キャリブレーション、時刻、電源電圧を確認する。
- 機体を固定し、ジャイロ・加速度・コンパスのバイアスと振動を測る。
- 姿勢内側ループを小さなゲインから調整し、飽和と発振を確認する。
- 速度・位置・高度ループを追加し、風と積載を変えて追従性を評価する。
- ミッション、フェイルセーフ、再起動、ログ取得を通しで試験する。
ゲインの数値を他の機体からコピーしても、プロペラ、慣性モーメント、推力余裕、サンプリング周期が違えば安定しない。ログで目標、実測、出力飽和、innovationを重ね、どのループが遅れを作っているかを確認する。
7. 最新の利用と研究
ArduPilotは、農業散布・測量・災害調査・研究用VTOL・自律ボートなど、機体の種類が多い分野で使われる。外部コンピュータからMAVLinkで目標を送り、ROS 2やコンピュータビジョンの推定を補助観測として取り込む構成もある。研究では、視覚航法、マルチセンサ故障診断、学習ベースの風推定、複数機協調が進むが、最終出力は既存の制限・フェイルセーフを通す設計が望ましい。
まとめ
ArduPilotの本質は、センサ融合、階層制御、ミッション実行、通信、フェイルセーフを組み込みで一体化していることだ。機体を動かすコードを書く前に、推定状態と座標系、制御周期、出力上限、異常時の遷移を仕様化する。SITLとログを活用し、実機では段階的な安全試験を行えば、オープンなソフトウェアを研究から実運用へつなげられる。
自動飛行は経路を入力するだけで成立する?
機体設定、推定、制御、フェイルセーフが連携する必要がある。経路計画と機体が指令を実行できる条件を分けて確認する。
参考資料
現在の項目 · 17 / 18 · ロボティクス入門
コメント
コメントの投稿にはログインが必要です
まだコメントはありません。