C-StyleでOn-Off制御
「テイクテック 第9回目標にあわせる」で紹介されているフィードバック制御をC-Styleで意識してみる。
識者のツッコミを期待します。
スタート時の向きを維持する次のサンプルプログラムをもとにいろいろ試していく。
今回紹介するのは、コンパスセンサの計測値を使い、一定範囲の角度範囲に応じて動きを決めるプログラムで、一般的にはしきい値を元に動きを決めるOn-Off制御と呼ばれるフィードバック制御になる。
モデルのロボットは4輪オムニだが、17行目を
のように指し変えれば2輪でも試せる。
3行目が「Z=30」の場合の動画。
ロボットの下の板を動かすと、ロボットが遅れて向きを直す。
そこで板の動きに遅れないよう、回転速度を上げてみる。
3行目が「Z=90」の場合の動画。
ロボットの下の板を動かすと、ロボットが素早くついてこようとするが、あるタイミングで行ったり来たりするようになり(ハンチングと呼ばれる状態)、決まった方向に止まれなくなる。
これはスピードが早すぎて目標値をまたぐように動いてしまうことが原因で、On-Off制御のまま、素早く精度良く向きを制御することは、結構めんどくさい。
そこでもう少し精度良いフィードバック制御について考えていく。
【次回予告:P制御(比例制御)】