next up previous contents
Next: おまけ Up: 走行アルゴリズム Previous: ポールをかわす(不採用だったアルゴリズム達)

ポールをかわす(結局採用になったのは…)

首を振りながら、その首の角度を目標にして走るという方法だった。



図の点線を目標としたいとする。カメラは常に画面の中央にポールが来る ようにフィードバック制御がなされている。 仮に点線上を真っ直ぐ走った とすると$\theta_t$はどのように変化していくかというと、図中にできて いる直角三角形に三角比を用いて
\begin{displaymath}
\theta_r = \frac{250}{\pi}arcsin(\frac{L}{d})
 \end{displaymath} (5)
となる。 arcsinの前にかけてある定数は、カメラのサーボモータに直接目標値とし て入力できるように設定した定数であるので深い意味はない。





\includegraphics {algorithm/honban1.eps}



ここで、Lは缶の横はどれくらいの幅でもって通過するかということを設定 する定数。dを求めるためには前節と同様の方法(ポールの画素数から距離 を割り出す)を用いている。
この方法も毎回目標値を計算し直しながら走っているという事になる。
この制御方法をまとめると、

1.
カメラに写っているポールがカメラに対して正面に来るようにカメラ の角度に対してフィードバック制御(PD制御)を行う。
2.
カメラの車体に対する傾きと上の式で算出した目標値との差がなくなる ように車輪に対してフィードバック制御(PD制御)を行う。
という方法を用いていることになる。言うなれば2段フィードバック制御 というところだが、この方法が本当にうまく行くのかという事は甚だ疑問 であった。ちなみに個人的にはきっとうまく行かないだろうと思っていた。 その理由とは。

理由
「条件を満たす経路が非常に多い」ということ。

この方法だと、車体に対するカメラの角度が目標値を決定するためのパラメ ータとなるので、点線で示した経路だけでなく、ポールを中心とした半径L の円の接線ならば全て条件を満たしている事になってしまう。1本ぐらいの ポールならばかわせるだろうとは思ったがきっとすぐに壁にぶつかるだろう というのがプログラム作成前の偽らざる心境であった。

しかし、YosaQは予想に反して非常に良く走った。つくった本人が驚くぐらい に。ポールをかわしたあとにポールを巻き込む動作を見せ、見事なスラロー ムをしていた(青のポールに関しては)。さて、それはなぜか?

ここで、前節でも問題点としてあげられていたポールが画面からはみ出す という問題が関わっているらしいことが判明。



画像からポールがはみ出すために、YosaQはポールが実際より遠くにある と勘違いする。そのため目標がよりポールに近いところに設定され結果と してポールを巻き込むようにスラロームをしているらしいということが分 かった。この思わぬ副産物によりうまく走っていたらしいという事は分か ったが5本も6本もかわしていくにはまだ無理がある。そのための微調整 およびその他周辺のプログラム達をつくっていくことになる。




\includegraphics {algorithm/honban2.eps}



最終的には、Search状態とApproach状態の二つの状態を遷移するような 機構を考え出した。Approach状態では上に書いたアルゴリズムを使い、 Search状態では超音波センサを用いて直進制御をしながらカメラを左右に 振り、ポールを探すという制御を行う。



Takao NAKAI
1999年1月18日