製作者 小川泰史、藤巻祐輝
タッチセンサーを2つと光センサーを1つをつけなければならないので苦労した。特に、光センサーを前方につけるのに苦労した。タッチセンサーよりも後ろだが、ボディよりは前にならなければならないので・・・。悩みに悩んでようやくとりつける事ができた。強度の心配が大きかったので改善するのに時間がかかった。 まぁ、割とコンパクトにまとめられたと思う。今度も頑張りたい。 小川泰史
ロボットの製作方針として「シンプルなものにしよう」ということに決まった。シンプル故に難しい。一番苦労した点は、タッチセンサーと光センサーの共存であった。相当な時間をこの共存問題に費やした。解決策として今まで目を向けていなかった、ロボットのコアの部分をいじってみた。できた。しかし、脆かった。なんてったって、触っただけで崩れてしまったのだから。そして補強をしてみた。シンプルではなくなってしまった。しかし、完成というのはあっけなくて、ひょんなことから丈夫でシンプルなロボットができてしまった。うーんこれも今までの失敗があったからこそだと思う。実際このロボットのシンプルさには、ほれぼれしてしまう。 藤巻祐輝
作成者:坂口優也
task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); //センサ−1をタッチセンサーにする SetSensor(SENSOR_3,SENSOR_TOUCH); //センサ−3をタッチセンサーにする SetSensor(SENSOR_2, SENSOR_LIGHT); //センサ−2を光センサーにする while(true) //条件が真のとき { if((SENSOR_1 == 0)&&(SENSOR_3 == 0)) //センサー1と3が両方押されていないとき { if (SENSOR_2 < 40) //光センサーが黒と判断したら右旋回 { OnFwd(OUT_A); Off(OUT_C); } else //光センサーが白と判断したら左旋回 { Off(OUT_A); OnFwd(OUT_C); } } else { Off(OUT_A+OUT_C) ; //止まれ Wait(60); OnFwd(OUT_A); //反転 OnRev(OUT_C); Wait(155); Off(OUT_A+OUT_C); {if (SENSOR_2 < 40) { OnFwd(OUT_C); OnRev(OUT_A); } else { OnRev(OUT_C); OnFwd(OUT_A); } } } }}
task main()
{ SetSensor(SENSOR_1,SENSOR_TOUCH); //センサー1をタッチセンサーとする SetSensor(SENSOR_3,SENSOR_TOUCH); //センサ−3をタッチセンサーとする SetSensor(SENSOR_2,SENSOR_LIGHT); //センサ−2を光センサーとする while(true) //条件式が真のときひたすら繰り返す { if((SENSOR_1==0)&&(SENSOR_3==0)) //タッチセンサー1と3に何も触れていないとき { if(SENSOR_2<40) //光センサーが黒と判断したら { OnFwd(OUT_A); //左旋回 Off(OUT_C); } else //光センサーが白と判断したとき { Off(OUT_A); //右旋回 OnFwd(OUT_C); } } else //タッチセンサー1と3のいずれかにでも触れたとき { Off(OUT_A+OUT_C) ; //止まれ Wait(60); OnRev(OUT_A+OUT_C); //下がれ Wait(80); OnFwd(OUT_A); //90度右旋回 OnRev(OUT_C); Wait(75); repeat(2) //2回繰り返せ { OnFwd(OUT_A+OUT_C); //直進 Wait(120); OnFwd(OUT_C); //90度左旋回 OnRev(OUT_A); Wait(75); } OnFwd(OUT_A+OUT_C); //タッチセンサーが黒と判断するまで直進 until(SENSOR_2<40); // OnFwd(OUT_A); //多少右旋回 OnRev(OUT_C); Wait(60); } } }
まずはタッチセンサーだけのプログラムと光センサーだけのプログラムを作るところから始めた。各々だけならば作動する。しかし、両方を組み合わせたプログラムでは片方しか機能してくれない。原因はwhile(true)の使い方であった。そこを先生に指摘してもらい、ようやく動くようになった。あとは微調整である。 タッチセンサーに当たったときにすり抜けるプログラムにおいて お互いにマシンの大きさが異なるためにすぐに曲がって避けることはできない。だから、当たったらまずバックして十分な間をあける。避けるときは直角に曲がる。これならお互いに接触しないだろう。 このマシンは他のマシンに比べてスピードが遅いから迫力に欠けると思う。ギアを換えずにプログラムだけで速くする方法はわからなかった。 反転するプログラムにおいて、左回りは線に沿って移動するのだが、コースの曲がり方が急なために右回りではプログラムを何回変えてもコースから外れてしまった。だから、妥協策としてコースを太くなだらかにした。 坂口優也