2014a/Member 目次
須賀健太 坂川航平 松本善和
図のようなコースを作成し、次のような動作をするロボットを作成せよ。
1.スタート地点から出発し、黒い線に沿って動く。
2.一つ目の十字の交差点と二つ目の十字の交差点の間におかれたピンポン玉をつかむ。
3.さらに黒線に沿って進みゴールへ向かう。
4.ゴールに向けてピンポン玉をシュートする。
ただしT字路では、直進、右折、左折を正しく判断させること。また二人一組で同じロボットを使用し、互いにスタートとゴールを入れ替えること。
・ドライブベースに関しては一番初めの授業で作成したドライブベースをそのまま利用した。 このドライブベースを使用したことでスムーズな動きを実現することができた。さらにこのドライブベースはライントレースをするには小型なのでミスなくできた。ただプログラムが上手くできずドライブベースをうまく生かすことができなかった。
・センサーに関してはトレースのミスを最小限にするためセンサーをロボット本体に近づけて装着した。それによりライントレースをする際に間違えることが少なくさせることができた。
・アームに関しては最初はしっかりピンポン玉をつかむアームを作成していたが、途中で挫折してシンプルでプログラムをつくる際に簡単な棒を2本だけつけるというアームにした。それにしたことによりピンポン玉をうまくキャッチできずにアームの外へ出てしまうことが多く、なかなかゴールまでピンポン玉を運べなくなってしまった。これが最大の失敗の要因だと思う。ただなるべくピンポン玉への衝撃を減らすようにアームを下につけた。
#define BLACK 40 //黒と白の明るさの境界線が40 #define usetsu OnFwd(OUT_A);OnRev(OUT_C); //右折 #define sasetsu OnFwd(OUT_C);OnRev(OUT_A); //左折 #define right_time 20 //白を感知したら黒を探すために0.2秒右折」
黒い線と白い部分の明るさの値を測ってそれでセンサーに感知させてライントレースします。
sub go() { if(SENSOR_2 < BLACK) { OnFwd(OUT_AC); } //もし明るさの値が40以下(黒)なら直進 else if (SENSOR_2 > BLACK) { //もし明るさの値が40以上(白)なら右折して usetsu; 明るさの値が40以下(黒)を探す ClearTimer(1); while(FastTimer(1) <= right_time){ //ある程度右に回って明るさの値40以下(黒) if (SENSOR_2 < BLACK){ がなかったら停止する Wait(15); Off(OUT_AC); } } sasetsu; until (SENSOR_2 < BLACK); //右に回って見つからなかった明るさの値40(黒) Float(OUT_AC); を左回りして黒を探す }
ゴールに行きつくまでの時間を測ってその時間となったらシュートするというプログラムにしました。
ClearTimer(1); while (FastTimer(1) <= MOVETIME){ //シュートまでの時間を計り20秒とセットしてお OnFwd(OUT_AC); き20秒たつと前進してシュート Wait(200); Off(OUT_AC);} }
・ピンポン玉をキャッチした後になるべく外に出ていかないようにアームの位置を下げた。そうすることによりピンポン玉にアームが当たる部分が低くなり多少安定した。
・シュートを秒数でやってしまったことにより毎回やるたびにずれたりしてしまったのでタッチセンサーや光センサーを使いピンポン玉をとったあとから秒数を測ったり、またカーブを把握させてゴールに一番近いカーブをとおりすぎてからそこから秒数を測ってシュートさせたりしたほうが最初から秒数をはかるよりは誤差がなくなったと思う。
・プログラムのライントレースをする際に明るさの値を3つに分けるだけでなく5つほどにわけたらもっと正確でスムーズなライントレースとなっていたと思う。
・交差点ではもともと黒線の真ん中を通るようなプログラムをつくればスムーズに交差点も前に進み、普段のライントレースもいけたと思う。そして自分たちはライントレースをプログラムを作ることができず秒数を数えて交差点にきたら直進するというようにしてしまいバッテリーの減少やスタート地点の場所の違いなどでぐちゃぐちゃになってしまいなかなか交差点をクリアすることができなかった。
・ライントレースの際に白にいってしまったときに最初は0.2秒以上黒を探すために右折していたが何度か値を変えてやってみると0.2秒が一番ベストで無駄なくできるとわかった。
・ライントレースの際に黒をさがしてなかったとき静止するまでの秒数もプログラムに書いた秒数よりも多いとうまくトレースできなかったのであの秒数はベストであった。
今回は期限以内に終わらせることができなかった。要因としては、自分たちのプログラムの理解の悪さ、ロボットを複雑にさせようとしすぎて自分たちが追いつくことができなかったことなど要因を絞りだしたらたくさんでてきます。
ドライブベースはあのようなシンプルなままやってトレースが多少安定的にできていたと思うのでドライブベースはあのままの形でよかったと思うが、成功しなかった問題はアームとプログラムに問題があると思う。アームに関してはただ2本の棒があるだけではピンポン玉がアームから出てしまったり、うまくピンポン玉をキャッチすることができなかったり、シュートをする際にロボットがいったんバックする際にピンポン玉がおいてけぼりになってしまいその時にピンポン玉が動いてシュートをすかしたり、シュートの方向が定まらなかったりといろいろな面で安定性に欠けていてやはりしっかりとピンポン玉をしっかりつかんでキャッチするというアームにするべきであった。プログラムに関しては急カーブの際にロボットがトレースをし誤って逆方向に動いたりしてしまったのでもっと細部の値を細かに調べ調節する必要があった。また交差点では交差点だとロボットに理解させるプログラムを作るのに非常に手こずり自分たちは黒線が続いたら直進するようなプログラムを作ったのですが交差点だと感知してくれず交差点だと感知してくれるプログラムを作ることができなかった。
このようなアームとプログラムに欠点があったため今回は成功することができなかった。次回の課題までに今まで授業でやったことなどをしっかり復習して成功させるようにしたい。