箱庭ドローンPROのControl LinkArduPilot編
ArduPilotでも、同じ入力で、ほぼ同じ出力を。
ArduCopter 4.6.3 の制御と状態推定(EKF3)を使う Control Link を、PX4編と同じミッションで ArduPilot SITL と比べました。Control Link の仕組みはPX4編をご覧ください。
ArduPilot SITLに近い飛行応答を、
1回あたり約8〜25倍速く出す。
PX4でもArduPilotでも、実機の前にもっと試せる。
1回あたり約8〜25倍速く出す。
PX4でもArduPilotでも、実機の前にもっと試せる。
66 / 72
72指標のうち66項目OK(6項目は要確認)
要確認も許容差の内側(理由を下の表に記録)
NG 0
一致しなかった項目
Control Link 10回(ノイズの乱数を変える)対 ArduPilot SITL 10回の中央値で判定
7.1 秒
Control Link で183秒の飛行を計算
ArduPilot SITL は1回 約60〜170秒(4倍速〜等速、起動を含む)。1回あたり約8〜25倍
73 ms
指令から機体が動き出すまで(ArduPilot SITLの中央値)
Control Link は71〜73 ms(区間ごとの中央値)。各段の遅れを箱庭の時刻で直接測定
同じ動きを、左右に並べて 実測 左:Control Link、右:ArduPilot SITL(各指令の時刻で揃えた記録の再生)
比較動画:x500の同じミッションを、左にControl Link、右にArduPilot SITLとして再生しています。
経路と速さ 実測 同じミッションの結果(x500)
機体の傾き 実測
指令の直後 実測 箱庭コアの時刻で揃えた
状態推定(EKF3)の誤差 実測 推定 − 真値
ばらつきごと比べる 実測 1回ずつの値(点)と中央値(横線)
残っているズレと、その理由 NG ではないが記録しているもの
| ズレ | 理由 | 扱い |
|---|---|---|
| 静止中の高さの推定のばらつきが ArduPilot SITL で約5倍 | SITL は気圧計が2個で、ノイズが一様分布(標準偏差はそろえた)。Control Link は1個・正規分布 | 中央値の差は許容差の内側 |
| 戻り(向きを反転)で速さが半分に達するのが約20 ms遅い | 向きを反転しながら加速する間、速さの立ち上がりが約2%違う | 許容差50 ms以内 |
| 着陸の接地の時刻が ArduPilot SITL で回ごとにばらつく(1回だけ0.3秒早い) | 着陸を始めるときの高さの推定が回ごとに違う | 中央値の差95 ms(許容差150 ms) |
| 受け渡しの往復の遅れの見え方が違う(3 ms 対 1 ms) | 測り方による見え方の違い。指令から動き出すまでの合計は一致 | 許容差5 ms以内 |
| 角速度の追従・動き出しに1〜2 msの差 | 制御の1刻み(3 ms)より小さい差 | 許容差10 ms以内 |
| 姿勢の推定が加速の切り替わりで一瞬へこむ | 推定の内部の細かな違い(0.1度以下) | 判定はすべてOK |
合わせるために直したこと ArduPilot SITL と同じにするまでに分かったこと
| 見つかった違い | 原因 | 対応 |
|---|---|---|
| 指令が常に9 ms遅れて効いていた | SITLの起動時に送り直された指令が受信の箱に9個溜まっていた | 最新だけを使う |
| 機首の向きの推定が0.7度ずれていた | 起動時の偏角が0、SITLだけにジャイロのずれがあった | 偏角を最初から設定し、Control Linkにもジャイロのずれを入れた |
| GPSと気圧計の遅れが二重 | 機体側とArduPilotの両方で遅らせていた | ArduPilot側だけに |
| 離陸・着陸のタイミングが違った | アーム後2秒の待ち、スロットルの上げ方、降下の形 | 同じ手順を再現 |
| 速さが4.8 m/sで頭打ち | 速度の上限のかけ方の違い | ArduPilotと同じに |
| 結果 | 直す前 OK 51 / 要確認 19 / NG 2 | 直した後 OK 66 / 要確認 6 / NG 0 |
この検証で示したのは、軽量な制御シミュレーションを ArduPilot SITL で照合できるという可能性です。制御の安全性や実機適用には、別途SITL・HIL・実機による検証が必要です。
データ:2026年10月12日。機体 x500、ArduCopter 4.6.3。北へ30 m → 向きを反転して戻る → 東へ30 m の自動ミッション(PX4編と同じ)。Control Link はセンサーのノイズの乱数を10通りに変えて10回、ArduPilot SITL は10回(1 msの物理、3 msの制御)。各指標は中央値の差が許容差の内側かで判定。所要時間はこの試験の1回あたりの実測(ArduPilot SITLは起動を含む)。 検証結果は指定条件での実測であり、実機との一致や全条件での等価性を保証するものではありません。
