皆さんライントレースはご存じですか?
ライントレースとは,ロボットがセンサーの情報を駆使しプログラミングだけでラインをたどることを指します。
プログラムの作り方や使うセンサーの種類によってパフォーマンスがとっても変わります。大学の知識を使えばPID制御という方法もありますし,小学生でも作れる簡単なライントレースのプログラムもあります。
今回は一番簡単な方法でライントレースの仕組みを理解するための記事です。
ラインセンサーとはその名の通りラインに対して何か反応するセンサーです。
こちらのイラストをご覧ください。
ラインセンサーは2つLEDのようなものがついています。1つは赤外線を射出するもので,もう1つはその射出された赤外線の反射を読み取るものです。
読み取るとは、どれくらい反射しているかを数値にするということです。
ここで注意してほしいのがラインセンサーはカラーセンサーとは別物ということです。カラーセンサーは物の色まで判別することができるのですが,ラインセンサーは色までは判断できません。
基本的にラインセンサーは黒,白,銀色(キラキラした表面)の3つくらいを判別することができます(センサーによります)。これはなぜかというと,反射した度合いが0~100%でしか表現できないからです。
上の図のように,反射率が黒は1~20%,白は70%くらい,銀は90%以上と,おおざっぱに3分割できます。この数値はセンサーや使っているマイコン(ロボットの本体)によって変わりますが,基本的に反射の値の特徴が顕著なものはこの3つになります。
例えば緑色などは60%くらいの反射率になります。これだと,白の反射率(70%付近)に近く,白との区別があいまいになります。これだと誤作動が起きてしまうので緑をラインセンサーで検出しようとするのはよくありません。
でも安心してください。ライントレースは白い床に黒いテープを張るのが一般的です。白と黒を判別するにはラインセンサーがもってこいなのです。
ラインセンサーを1つだけ使ってライントレースするアルゴリズム(プログラムの考え方)を理解してみましょう。
ラインセンサーが一つの時は少し難しいです。
理由は、ラインセンサーが一つしかないのでラインの右側にズレたのか、左側にずれたのかを判断できないからです。
ここで考えなくてはならないのがどうやったら上側にずれたのか下側にずれたのかを判別できるかです。
いくつか答えはあるのですが、今回は動きを変化させることで判別してみます。
動きを変化させるとは、右に旋回したり左に旋回したりします。下のイラストをどうぞ。
イラストでわかったと思いますが、旋回を交互に行うことでラインを辿ることができるようになります。
右旋回をしている時にラインに当たったら、左に旋回を初め、またラインにあたったら右に旋回を始める。これをずーっと繰り返せばライントレースになりますね。
しかし、これには弱点があります。そう、結構ラインから外れやすいのです。
これを補うにはラインセンサーをカラーセンサーに替えて、もっと細かく数値が見れるようにするか、次紹介するようにラインセンサーを2つにするかです。
ラインセンサーを2つ使ってライントレースするアルゴリズムを理解してみましょう。
はっきり言ってラインセンサーを2つ使うととても簡単です。
まず前提としてラインを挟むようにラインセンサーを設置します。下の図を見てください。
このようにラインを挟んでラインセンサーを使えるようにします。
この時どうやればラインを沿うように動くでしょうか。まず最初に、ロボットが下に寄ってしまった時を考えます。
下のイラストのようになりますね。
イラストの中に書いてあるように、上のラインセンサーが黒を検知します。黒を検知したということは、ロボットが下側に寄っているということですね!この時、下のタイヤの速度をあげて上のタイヤの速度を下げれば上側に曲がってくれます。
こうすれば、またラインセンサーの間にラインがある状態を作ることができます。
では逆に上にロボットが寄ってしまった時はどうしますか?簡単ですね。先程の逆をやればいいのです。
どうでしょうか。ラインセンサーを2つにすると比較的まっすぐ進むことがきます。基本前進をしてライン上を通過した時に反応すればいいだけだからです。
ラインセンサーが2つある時の方が簡単に理解できますね!!
ライントレースのやり方の理解は深まりましたか?
ラインセンサーが1つの時と2つの時では考え方が大きく違ったと思います。
センサーが多いほうがプログラムは楽になるかもしれませんが,多いほどいいとは限りません。センサーが少なくても同じパフォーマンスが出せるように考えることも重要になってきます。
これを機にロボット工作に興味を持っていただけたら幸いです!
[…] ラインセンサーを使ったラ… […]