SLEIPNIR-ZERO の機体にはエルロンがありません。動かせるのはエレベータ(ピッチ)・ラダー(ヨー)・スロットルの3つです。この記事では、この機体のための飛行制御の設計を解説します。制御則は実装済みですが、現段階では計算結果をテレメトリに載せるだけで、まだ舵は駆動していません。
この機体の難しさ
設計上、素直でない点が2つありました(うち1つは機体側の改善で解消済みです)。
- 舵の効きがスロットルで変わる。プロペラと動翼が近く、動翼に当たる気流の大半はプロペラ後流です。つまりスロットルを絞ると舵が効かなくなり、開けると効きすぎます。
- (解消済み)初期の機体はピッチが静的に不安定でした。空力中心が重心より前にあり、放っておくと機首上げが加速する特性で、常に当て舵が必要でした。現在は機体側の見直しで静安定を確保しています。制御則は不安定な機体でも成立するように設計してあり(運動モデルに不安定項を持つ)、安定化後もそのまま使えます。
設計方針
効きの正規化。軸ごとの舵の効きをスロットル指令の関数 k(スロットル) としてテーブルで持ち、制御出力を k で割ってから舵に渡します。これでループ全体の利得がスロットルに依らず一定になり、ゲイン調整が1組で済みます。ピッチ側では、後流がエレベータを直撃することによるスロットル起因の機首外乱も前置きで打ち消します。
軸ごとのループ構成。ピッチは姿勢一定の PD 制御(静的不安定だった初期機体を能動安定化するために組んだ構成で、静安定を確保した現在の機体では姿勢保持として働きます)、ヨーは方位保持の PD、高度は外側ループとしてスロットルの PI で保ちます。対気速度を測るピトー管が無いので、本来の「速度保持」の代わりに「スロットル→高度」の関係で代用しています。
状態量はどう作るか
制御に使う高度と上下速度は、気圧計と加速度計の相補フィルタで融合します。気圧高度は室内の気流やドアの開閉、プロペラ後流で数十 cm 単位のノイズが乗るため、短期は加速度の積分を信じ、長期のドリフトだけを気圧で引き戻す配分です。
水平速度は位置の基準(GPS など)が無いため、加速度の積分だけではドリフトが止まりません。そこでリーク付きの積分で値を有界化しています。将来的には、外部カメラトラッキングの位置推定がこの「無い基準」を埋める計画です。
これから:同定
現在入っている k テーブルと各ゲインは同定前の仮の値です。実機のステップ応答を計測して舵の効きを同定し、ゲインを差し替えるのが次のステップです。テレメトリが 50 Hz で姿勢と制御指令を記録しているのは、まさにこの同定のためでもあります。
実装は danfunc/flight_robocon_telemetory_sender の FLIGHT_CONTROLLER にあります。
コメントを残す