目標位置前なら前進,行き過ぎたら後退

2021.9.25 Coskx Lab  

1 目標位置前なら前進,行き過ぎたら後退(3値制御)

アイディアの明確化
単純な「目標位置前なら前進,行き過ぎたら後退」の制御則では,前後往復動(振動)が止まらないことがわかりました。
そこで「目標位置手前ならモータ指令値=-100,目標位置を越えたらモータ指令値=100にする。ただし,目標位置前後aの範囲ではモータ指令値0にする。」という考え方を導入します。
この考え方では,目標位置で往復を繰り返してしまう極端な振動は緩和されそうです。
この考え方を現在位置\(x\),モータ指令値\(y\)として図示すると次のようになるでしょう。(目標位置付近で何もしない領域のことは不感帯と呼ばれます。)


現在位置\(x\),モータ指令値\(y\)として,制御則を式で表現すると次のようになるでしょう。モータ指令値の範囲は-100から+100としています。
$$y=\left \{ \begin{array}{cr} 100 & (x<r-a) \\ 0 & (r-a\leqq x<r+a) \\ -100 & (r+a\leqq x) \\ \end{array}\right.$$ \(a\)の値をどれくらいにするかは,実験で決めていきます。(都合の良い値は見つからないかもしれません。)
モータ指令値が3つになりました,階段制御の入り口です。

micro:bitで制御されたカートでの実験
走行フィールドの座標は次のようになっています。
座標原点に壁があります。



実験ではモータ指令値を-60から+60の範囲に制限しています。
3値制御則でカートを走行させた様子を実験グラフに示します。目標位置\(r\)は-500mmで,\(a\)は90mmです。
目標停止位置の前後で,モータ指令値が-60と60で交互に切り替わりますが,途中にモータ指令値0の区間が挟まっているのが(B)でわかります。
(A)ではカートが前後に振動していますが,しばらくすると止まります。しかし目標停止位置からは少し離れたところで止まっています。運が良ければ,もう少し目標停止位置に近いところに止まるかもしれません。

(A) カート位置のグラフ

(B) モータ指令値(茶)とカートの速度(青)


次の動画は,3値制御則でカートを走行させた様子です。目標位置は-500mm(黒のスケールの左辺の延長上にカート前輪の中心を止めようとします)です。
グラフデータ採取と動画撮影は異なる走行です。前後に振動しながら次第に止まる様子は再現性があります。しかし,停止位置は摩擦などに影響されるため,再現性は期待できません。


2 目標位置前なら前進,行き過ぎたら後退(5値制御)

アイディアの明確化
「1」では,モータ指令値が常に100ずつ変化しています。50ずつ変化させたら,目標位置で往復を繰り返してしまう振動が穏やかになるはずです。
「目標位置手前ならモータ指令値=-100,目標位置を越えたらモータ指令値=-100にする。ただし,目標位置前後\(2a\)の範囲ではモータ指令値を50または-50にし,さらに目標位置前後\(a\)の範囲ではモータ指令値を0にする。」
言葉で書くより図で示した方がよくわかる考え方です。早めの減速が可能になるため,目標位置で往復を繰り返してしまう振動がさらに緩和されそうです。
この考え方を現在位置\(x\),モータ指令値\(y\)として図示すると図のようになるでしょう。

現在位置\(x\),モータ指令値\(y\)として制御則を式で表現すると次のようになるでしょう。
$$y=\left \{ \begin{array}{cr} 100 & (x<r-2a) \\ 50 & (r-2a\leqq x<r-a) \\ 0 & (r-a\leqq x<r+a) \\ -50 & (r+a\leqq x<r+2a) \\ -100 & (r+2a\leqq x) \\ \end{array}\right.$$ \(a\)の値をどれくらいにするかは,実験で決めていきます。(都合の良い値は見つからないかもしれません。)

micro:bitで制御されたカートでの実験
5値制御則でカートを走行させた様子を実験グラフに示します。目標位置\(r\)は-500mmで,\(a\)は60mmです。
モータ指令値には-60,-30,0,30,60が使われています。(B)ではカートの位置によりこれらが交互に切り替わっているのがわかります。
(A)では,カートが前後に振動していますが,しばらくすると止まります。振動が少なくなりましたがそれほど,良くなったとは実感できません。
目標停止位置からは少し離れたところで止まっています。運が良ければ,もう少し目標停止位置に近いところに止まるかもしれません。

(A) カート位置のグラフ

(B) モータ指令値(茶)とカートの速度(青)


次の動画は,5値制御則でカートを走行させた様子です。
グラフデータ採取と動画撮影は異なる走行です。前後に振動しながら次第に止まる様子は再現性があります。しかし,停止位置は摩擦などに影響されるため,再現性はあまり期待できません。


3 目標位置前なら前進,行き過ぎたら後退(9値制御)

アイディアの明確化
モータ指令値を片側4段階にする考えはよりスムーズなモータ指令値変化になります。
この考え方を現在位置\(x\),モータ指令値\(y\)として図示すると図のようになるでしょう。

現在位置\(x\),モータ指令値\(y\)として制御則を式で表現すると次のようになるでしょう。
$$y=\left \{ \begin{array}{cr} 100 & (x<r-4a) \\ 50 & (r-4a\leqq x<r-3a) \\ 50 & (r-3a\leqq x<r-2a) \\ 50 & (r-2a\leqq x<r-a) \\ 0 & (r-a\leqq x<r+a) \\ -50 & (r+a\leqq x<r+2a) \\ -50 & (r+2a\leqq x<r+3a) \\ -50 & (r+3a\leqq x<r+4a) \\ -100 & (r+4a\leqq x) \\ \end{array}\right.$$ \(a\)の値をどれくらいにするかは,実験で決めていきます。(都合の良い値は見つからないかもしれません。)

micro:bitで制御されたカートでの実験
9値制御則でカートを走行させた様子を実験グラフに示します。
モータ指令値には-60,-45,-30,-15,0,15,30,45,60が使われています。
(B)ではカートの位置によりこれらが交互に切り替わっているのがわかります。モータ指令値がきめ細かく指示されています。
(A)では,カートが前後に振動していますが,しばらくすると止まります。振動が少なくなりましたがそれほど,良くなったとは実感できません。
前の方法と比較すると,目標停止位置の近くに止まっています。しかし,運が良かっただけかもしれません。

(A) カート位置のグラフ

(B) モータ指令値(茶)とカートの速度(青)


次の動画は,9値制御則でカートを走行させた様子です。目標位置\(r\)は-500mmで,\(a\)は30mmです。
グラフデータ採取と動画撮影は異なる走行です。前後に振動しながら次第に止まる様子は再現性があります。しかし,停止位置は摩擦などに影響されるため,再現性はあまり期待できません。


リンク

(0)表紙ページ フィードバック制御はじめの一歩
(1)ある位置に到達したらモータを止める
(2)目標位置前なら前進,行き過ぎたら後退(このページ)
(比例制御)
(3)目標までの距離に比例したモータ指令値を作る
(比例微分制御)
(4)目標までの距離と速度からモータ指令値を作る