今回は,前から何となく気にしている,進行方向の速度制御による,角速度系への干渉について.
私の場合,速度制御系はこちらなどで紹介されているとおり,進行方向と角度方向に入力を分け,進行方向は2つのモーターへ同符号の入力,角度方向は逆符号の入力で制御している.
これまでなんとなく思っているのが,(当たり前かもしれないが)2つの入力はそこまで独立しておらず,進行方向の制御は角度方向に干渉しているのではないか?ということ.
例によってPicoで試走調査.今回はフィードバック入力で進行方向の速度を制御している状態を想定し,左右輪の速度差は一定だが(角速度は一定になるはずだが),左右輪の速度の平均値である進行方向の速度を振動させた入力となるようオープンループで走行させログを見てみる.
前回と同じく,直線→右180度ターン→直線のコマンドを実行させる.ターン中の進行方向の速度は,今回は 0.5 + 0.05×sin(wt) [m/s]と,目標値に対して±10%の振れがある場合を想定する.
結果が以下のログ.上が,速度が振動している場合,下は比較のための速度が振動していない場合のログである.左上と右下がそれぞれ左右輪の目標速度,それに比例するステップパルス周波数であり,右上と左下がそれぞれジャイロの角速度と角度を,目標値と共に記したものである.
・進行方向速度:0.5 + 0.05×sin(wt) [m/s] (振動的)のログ
・進行方向速度:0.5 [m/s] (一定)のログ
ものの見事に進行方向の速度の振動が,回転系に伝わっていることがわかる.
程度にもよるんでしょうが,進行方向の速度制御は角速度制御の外乱になると.
あと何個か思いつく限り実験をし,それぞれの影響を定量的に評価できたら,そろそろ自分のハーフマウスの制御も見直しをかけなければ.