ライントレースロボットを作ってみよう

インストール及びプログラムの実行の方法

ここではVS-WRC003というCPU基板を用います。これはヴイストンという会社が開発販売しているCPU基板です。CPUにはルネサスエレクトロニクス社の製品で、36064という型番のものを採用しています。ソフトウェアの開発にはHigh Performance Enbedded Workshopというアプリケーションを用います。ここでは、基本的なC言語で開発します。
ロボカップJr2010

ロボットを動かす開発言語はC言語を用います。
インストール及びプログラムの実行の方法

二つ目のプロジェクト(新しいプロジェクト)を作る方法

モーターを動かしロボットを前進させる

モーターを動かしロボットを前進させる

センサーの値を読む

ラインセンサーはライントレースを行う時に必須のもので、白と黒を判別するためのものです。
半田面センサー側

GNDはグラウンド(0V, ゼロV)、VCCは5Vに繋ぐのが当然ですが、3.3Vでも動作するようなので、ADコンバーター入力コネクタにある電源につなげます。OUTはADコンバーター入力につなげます。これはビスとナットを用いて配線します。
配線は隣とか異なるところに接触しないように絶縁テープなどで絶縁を必ずします。手を抜いて、裸の線をブラブラさせておくと、壊れます。
このセンサーからの信号は電圧で送られてきます。センサーの種類によって、白が大きい値だったり、黒が大きい値だったりしますから、それはプログラム側で判断しなければなりません。
A/Dコンバーターの値を読む

簡単なライントレースを行う

ラインセンサーを2つ用い、楕円のコースを回ります。

簡単なライントレースをスムースに行う

厳密な意味では自動制御に用いるPID制御ではありませんが、それらしい制御をしてみます。

ラインセンサーを2つ用い、比例制御で動かします。
ラインセンサーを2つ用い、微分制御を加えます。
ラインセンサーを2つ用い、積分制御を加えます。

難しいライントレースに挑戦する

ラインセンサーを4つ用い、コースの先行予測を行い周回するようにする。
基本的にライントレースは中心の2つのセンサーだけでできます。脇に置く2つのセンサーは事前にどのようなことが起こるか先行的にデータを検出するのが目的です。ですから、脇の2つのセンサーは中心の2つのセンサーより前に位置していなければ意味がありません。同じ位置でも、それなりに機能しますが、後ろだったらほとんど意味がありません。
また、旋回の時の終了条件を中心のセンサーを用いるとおかしくなるので、脇のセンサーを用いる必要があるかもしれません。
最近、付いていればなんとかなると考えているか、格好よくするためと考えているのかは分かりませんが、おかしな付け方をする人がいます。その場合は自己責任でプログラムを作ってください。少なくとも、中心の2つのプログラムが正常ならば、それなりに動きますから。
アルゴリズム

雑感

 以前に正しく動いたのに、急にうまく動作しなくなったので、ラインセンサーの値を色々と変えている人が多いかと思います。これは考え方が間違っています。頭を使わなければいけません。何故動作しなくなったのか。以前と今では何が異なるのか考えてみます。天気が異なるのかもしれないし、温度も異なるかもしれない。ロボットの位置が異なるのかもしれないし、そもそもコースが異なるのかもしれない。従って、どんなコースでも対応出来るようにプログラムすべきなのです。まず第一に、天気、蛍光灯の光の強さなどでセンサーの値が異なることがあります。コースに用いられている紙質によっても反射率が異なります。異なる条件であるにもかかわらず、いつも同じ値を用いるのは間違いであることに気付いてください。
  では、どうするか

すでに講義は終わっているので

これは例にすぎません。もっと超高速で回ったのもあります。
普通の駄円のコース

難しいコース。これは数年間で一人か二人しか一周できていない。



余りに出来ないので、ちょいとプログラムを作ってみたらすぐに出来た。
難しいコース