角速度はシンプル制御:角度はフィードバック制御


ラズパイとPythonで一緒に!センサ・フュージョン入門

角速度は入力で決まる量

図1 制御では,対象,状態,目標,操作が明確に区別される.対象はロボットや装置.状態は姿勢,速度,温度など.目標は望ましい値.操作は入力として与える物理量.画像クリックで動画を見る.または記事を読む.詳細はVOD/Pi KIT/data]ラズパイとPythonで一緒に!カルマン・フィルタ&センサ・フュージョン入門

モータに電圧を加えると回転します.電圧を一定にすると,回転速度も一定に落ち着きやすいです.この性質があるので,角速度の制御は比較的シンプルです.目標の角速度が決まっているなら,その角速度に対応する電圧を与える発想で近づけます.現場では負荷や摩擦でずれますが,角速度は入力との関係を作りやすい量です.

角速度は時間変化の速さそのものです.観測もジャイロで直接得られます.ラズパイとPythonでは,角速度データを周期的に読み取り,指令電圧を更新する流れを組めます.この段階では,角速度の目標値と観測値の差を小さくする設計が中心です.

  1. 角速度は電圧と関係づけやすい量です
  2. 角速度は直接計測しやすい量です
  3. 角速度は応答が読みやすい量です

角度は積分で増えるので扱いが難しいです

角度は角速度を時間に沿って積み上げた量です.角速度が少しずれていると,角度のずれは時間とともに増えます.入力を固定して放置する方式では,目標角度へ止めることが難しいです.角度の制御では,現在の角度がどこにあるかを見て,入力を変え続ける必要があります.

角度の計測も課題です.角度センサが無い構成では,角速度を積分して角度を得ます.この方法はドリフトが溜まりやすいです.加速度センサや地磁気センサの情報を合わせて角度を推定する発想が重要です.ここでセンサ・フュージョンが効きます.

  1. 角度は角速度の積み上げで決まる量です
  2. 小さなずれが時間とともに大きくなる量です
  3. 角度は推定の品質が制御性能に直結する量です

角度制御はフィードバック制御です

角度を狙った値に保つには,目標角度と現在角度の差を使って入力を決めます.この差を誤差とみなし,誤差が小さくなる方向へ電圧を調整します.この構造がフィードバック制御です.誤差が大きいときは強く修正し,誤差が小さいときは穏やかに修正します.結果として,目標角度へ近づき,そこに留まる動作が実現しやすいです.

実験環境では,目標角度を変えると角度が追従して止まる挙動が観察できます.目標角度は操作パネルや変数として与えられます.目標角度を $\theta_{ref}$,現在角度を $\theta$ と置くと,両者の差を基準に操作量が決まる整理です.このとき必要なのは,現在角度 $\theta$ を安定に得ることです.センサ・フュージョンと状態推定は,この $\theta$ を支える基盤です.

  1. 目標角度 $\theta_{ref}$ と現在角度 $\theta$ の差を使う方式です
  2. 誤差が小さくなる方向へ電圧を更新する方式です
  3. 角度推定が安定すると制御も安定しやすい方式です

ラズパイとPythonで意識する実装の観点

ラズパイとPythonで角度制御を扱うときは,周期の安定性と計測の整合性が重要です.周期が揺れると,推定と制御の更新が乱れます.角度推定では,ジャイロ,加速度,地磁気の情報を統合し,角度のドリフトとノイズを抑えます.I$^2$CやSPIの通信遅延も更新周期へ影響します.制御は推定値を前提に動くので,推定と制御を一つの流れとして設計する視点が必要です.

〈ZEPマガジン〉

動画を見る,または記事を読む

参考文献

  1. [VOD/Pi KIT]MATLAB/Simulink×ラズパイで学ぶロボット制御入門,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]MATLAB/Simulink×ラズパイで学ぶロボット制御入門,ZEPエンジニアリング株式会社.
  3. [VOD/Pi400 KIT]SLAMロボット&ラズパイ付き!ROSプログラミング超入門,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]確率・統計処理&真値推定!自動運転時代のカルマン・フィルタ入門,ZEPエンジニアリング株式会社.