調整項目たち

調整がつらい

アドベントカレンダーでも書いた気がするのだが、何がどの規模で辛いかを伝えてなかったので、紹介したい。

調整項目の種類

項目は大きく4種類

  1. フィードフォワード制御で使用する物理的で自明、または計算により導出可能な数値
    • スラロームなどのターンパラメータの計算可能なモノについてもここ
  2. フィードフォワード制御で使用する、実測により導く数値
    • 計測が難しい摩擦、慣性モーメントはここ
  3. フィードバック制御で使用する、シミュレータなどを利用して当てはめ可能な数値
    • matlab大好き勢や最適制御大好き勢に任せます。知らない。
  4. フィードバック制御で使用する、実測により調整する数値
    • スラロームの前距離・後ろ距離でスリップを考慮しても導出しきれないもの
    • 魔界。諸悪の根源。バグの温床。負の歴史。

おおよそ、新しい機体が完成した後に、数字の順番でパラメータが決定されると思います。

1. FFが自明

例えばモーターなど、カタログスペックを参考に、

  • トルク定数
  • 回転定数
  • 逆機電量定数
  • 電機的時定数/機械的時定数
  • 抵抗値
  • 質量
  • ギア比

などの数値を使用し、出力トルクを導出、その後、電圧へと変換しそれをDutyとして扱うと思います。

2. FFが自明でない

1とは異なり、

  • 慣性モーメント
  • タイヤのグリップ力

などは、個人での計測は難しいため、繰り返しによる調整が必要になる。 例えば、FBの項をなしにした状態での動きを確認した場合の追従具合を見る。 FFが適切ならば、原理上応答が遅くなるFBの項はゲインを低く設定できる。これはロバスト性の向上にもつながる。

類似として、光センサーから距離を導出際に用いる、パラメータの決定もこれにあたる。

3.FBが自明

知らん。次。

4. FBが自明でない

一番つらい。

具体例として、

  • モーターのゲイン(PID)
  • ジャイロの値から角速度へのゲイン(左右それぞれ)
  • 角速度追従のゲイン(PID)
  • 光センサーを使った制御のゲイン(PID)
  • 光センサーを使った制御のゲイン(斜め走行時)(PID)
  • 区画の真ん中を走るために、
    • 左右の中央時(通常時+斜め時)
  • 壁切れ制御の閾値(有無の判定含め)
  • 探索時の壁の有無の判別する閾値
  • 壁切れ補正を時の直進距離
  • 前壁制御の要求値・閾値
  • スラローム時の前距離・後ろ距離
    • 左右・斜め進入時で1つのターンで最大8項目×ターンの数だけ

調整に必要なもの

  • 時間的余裕
  • パラメータの管理能力
  • 壊れない精神力

最後に

文章にしてしまうとなんて事の無い、と思うじゃないですか。。。調整パラメータが100を超えるのは意外と簡単です。 パラメータ管理を正しく行うことで、次回作以降の調整スピードにも大きく影響を及ぼしますので、管理方法も考えましょう。

また、調整に際してはバイナリへの書き込み回数を減らせるようにシステムを構築するとよいです。 例えば、「シリアル通信から、フラッシュ領域への書き込み」など。コレだけで、ビルド+書き込みの時間を大幅に削減可能です。