1軸 姿勢制御モジュール 倒立精度の向上 ーリアクションホイールへの道11ー
前回は起き上がり動作からの倒立の手法を模索し、
まだ成功確率は低いですが物理ブレーキなしでの起き上がり倒立の方法を確立できました。
ここでは リアクションホイールへの道7 で宿題となっておりました、
モータ制御のパラメータ整理と倒立精度の向上を目指しました。
目次
制御パラメータ整理
モータのトルクが流れる電流に比例し、電流はモータ制御PWM信号のデューティに比例することから
SHISEIGYO-1 は以下の式にもとづいて制御しています。
$$T_m ∝ I ∝Duty ∝-K_{d1}・θ_b-K_{d2}・\dotθ_b-K_{d3}・\dotθ_w$$
モジュールの姿勢角($θ_b$) とその角速度($\dotθ_b$) とモータの回転速度($\dotθ_w$) をセンシングしてモータに入力するべきPWM信号のデューティ比を導き出しています。
さらにこれまでは以下のパラメータも追加して制御しておりました。
- 傾きオフセット補正
SHISEIGYO-1の物理的偏りやセンサのオフセットを数値で補正します。
- モータ初速
モータの電気的抵抗や物理的摩擦による抵抗を打ち消すためのオフセット値
- ブレーキ範囲
倒立する姿勢角でモータがきっちり止まるためにブレーキをかけるデューティ値の範囲を指定します。
パラメータ整理
だいぶ SHISEIGYO-1 と私の距離も縮まってきており、
実験当初に勘で追加したパラメータは除去したい気持ちがございました。
- 傾きオフセット補正
こちらは上式の3項目のモータの回転速度で打ち消せることがわかりました。
詳細はトラ技 2020年 06 月号の p.127 コラムBに記載あります。
実際に倒立の床を傾けるとモータが等速回転して倒立を維持しようとします。
- モータ初速
こちらは除去しませんでした。
以下はモータに入力するPWM信号のデューティ比と電流をプロットしたものです(電源 12V)。
ほぼ比例関係にあります。
モータ初速パラメータつまりモータ回転最小デューティ値はこの線形近似の切片を表してると言えます。
物理的にはモータのまわり始めの摩擦や電気抵抗を打ち消すものと理解できます。
- ブレーキ範囲
こちらはモータ初速パラメータとマージできるので除去しました。
モータ回転最小デューティ値以下ではブレーキをかけるようにしたので、改めてパラメータを設ける必要はありません。
倒立パラメータ
最終的に SHISEIGYO-1 は以下の4つのパラメータを調整して倒立を実現しております。
- 姿勢角 ($θ_b$) の係数
- 姿勢角速度 ($\dotθ_b$) の係数
- モータの回転速度 ($\dotθ_w$) の係数
- モータ初速パラメータ (モータ回転最小デューティ値)
参考
その他の変更
リアクションホイールへの道7 からのその他の変更は以下の通りです。
- PWM信号分解能:9bit → 10bit
モータへのPWM信号のデューティをきめ細かく指定したかったので分解能を上げました。
- 慣性センサのフルスケールレンジを狭めました
加速度:±4 g → ±2 g
ジャイロ(角速度):±500 deg/sec → ±250 deg/sec
- MPU6886サンプルレート:166Hz → 1kHz
これは効果は大きくない感じでしたが以下ライブラリの設定を見ると、
加速度センサとジャイロセンサのLPFがそれぞれ218Hz、176Hzとなっており気になったので変更しました。
https://github.com/m5stack/M5Atom/blob/master/src/utility/MPU6886.cpp
動作
改めて4つのパラメータを調整して倒立動作の向上を実現しました。
もっと行けるはずだけど、3Dプリンタによる筐体では 軽いし滑る。。。
しかし安定度は格段に上昇しました!!
おわりに
宿題であったモータ制御のパラメータ整理と倒立精度の向上が実現致しました。
次回はまた起き上がり倒立の確度向上に戻りたいと思います!
それではまた次の道でお会いしましょう!