*課題2 黒い線に沿って動くロボット [#pa8f0a88] 黒の線に沿って走るロボットを作成した。 **課題のポイント [#rc682c5a] ●交差点で優先側を走っていない場合には、一時停止し、もう一台のロボットが走り去ってからまた動き出すこと。 ●前方にあるもう一台のロボットに接触した場合、ロボットを停止させ、もう一台のロボットが走り去るのを待つ。 ●ロボットのスピードは速い方がよい。 ●コースには二カ所以上のカーブを入れること。 *コース [#ya525120] &ref(2007a/A6/課題2右/Image0146.jpg,100%,a6); **解説 [#ved43acf] 交差点が二個あるカーブを重視した少し複雑なコースにした。 カーブが急なため、プログラミングが重要である。 *ロボット [#f6c56f53] **製作過程1(タイヤなどの土台) [#g1799d7b] &ref(2007a/A6/課題2右/Image0135.jpg,100%,a6); ***解説 [#p4d70717] タイヤは三輪で後輪に大きなタイヤを置くことによって動きを安定させ、土台は地面に対し平行になるようにした。 前輪にはモーターはついていない。 **製作過程2 (光センサー)[#u8f86c9e] &ref(2007a/A6/課題2右/Image0138.jpg,100%,a6); ***解説 [#a85f237e] 光センサーは、黒線かそうでないかの判断をより早くするため、前の方につけた。 また、光センサーが土台から外れるのを防ぐため輪ゴムで補強した。 **制作過程3(タッチセンサー) [#v09663ad] &ref(2007a/A6/課題2右/Image0133.jpg,100%,a6); ***解説 [#rdfee398] タッチセンサーは一番前につけ、一つだけにすることによってスリムさを出すことにした。 **完成図 [#dcc2dd03] &ref(2007a/A6/課題2右/Image0136.jpg,100%,a6); ***解説 [#y1fd5806] 全体として細長くシンプルな感じになり、難しい感じがなく、非常に使いやすく、いいロボットになった。 *プログラム [#s3c2f3d1] #define Do 523 #define Re 587 #define Mi 659 #define Fa 698 #define Sol 784 #define Ra 440 #define Shi 494 #define DO 1047 task play_music() ドレミの歌 { while (true) { PlayTone(Do,25); Wait(30); PlayTone(Re, 5); Wait(10); PlayTone(Mi,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Mi,10); Wait(15); PlayTone(Do,10); Wait(15); PlayTone(Mi,20); Wait(25); PlayTone(Re,25); Wait(30); PlayTone(Mi, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Mi, 5); Wait(10); PlayTone(Re, 5); Wait(10); PlayTone(Fa,40); Wait(45); PlayTone(Mi,25); Wait(30); PlayTone(Fa, 5); Wait(10); PlayTone(Sol,25); Wait(30); PlayTone(Mi, 5); Wait(10); PlayTone(Sol,10); Wait(15); PlayTone(Mi,10); Wait(15); PlayTone(Sol,20); Wait(25); PlayTone(Fa,25); Wait(30); PlayTone(Sol, 5); Wait(10); PlayTone(Ra, 5); Wait(10); PlayTone(Ra, 5); Wait(10); PlayTone(Sol, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Ra,40); Wait(45); PlayTone(Sol,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Re, 5); Wait(10); PlayTone(Mi, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Sol, 5); Wait(10); PlayTone(Ra,40); Wait(45); PlayTone(Ra,25); Wait(30); PlayTone(Re, 5); Wait(10); PlayTone(Mi, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Sol, 5); Wait(10); PlayTone(Ra, 5); Wait(10); PlayTone(Shi,40); Wait(45); PlayTone(Shi,25); Wait(30); PlayTone(Mi, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Sol, 5); Wait(10); PlayTone(Ra, 5); Wait(10); PlayTone(Shi, 5); Wait(10); PlayTone(DO,40); Wait(45); PlayTone(DO, 5); Wait(10); PlayTone(Shi, 5); Wait(10); PlayTone(Ra,10); Wait(15); PlayTone(Fa,10); Wait(15); PlayTone(Shi,10); Wait(15); PlayTone(Sol,10); Wait(15); PlayTone(DO,40); Wait(45); } } #define THRESHOLD 40 task main() { start play_music ; //ドレミの歌を流す SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーとする SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2をタッチセンサーとする while(true) { while(SENSOR_2==0) //タッチセンサーが触れてないとき { if(SENSOR_1 < THRESHOLD) //黒い線に沿うプログラム { OnFwd(OUT_A); Off(OUT_C); }else{ Off(OUT_A); OnFwd(OUT_C); } } Off(OUT_A+OUT_C); //タッチセンサーが触れてるとき、一時停止するプログラム Wait(100); } } *まとめ [#r2dfc503] **工夫&苦労した点 [#m467f11c] 工夫したところや苦労したところは、タッチセンサーと光センサーをどのように一直線上に置き、使いやすくかつシンプルにするかという点で、レゴをたくさん使って強度を補強すると重くなりタッチセンサーと光センサーの働きもあまりよくないので、考えた結果輪ゴムを使うことにより、強度の補強と機械の軽量化に成功した。 **改善点 [#l7d8d0a1] ロボットのボディのシンプルさを意識するあまり、光センサーを1つだけ使うことにしてしまった。そのため、光センサー1つでは交差点であるかそうでないかの見分けをつけることが出来ず、交差点での一時停止のプログラムをどんなに頑張っても作ることが出来なかった。つまり、ほかの班のように光センサーを二個にし、両方が白線上、片方が白線でもう片方が黒線上、その反対、両方が黒線上、という4パターンにして交差点を判断させるべきであった。 なので、最初から後々のことをよく考えてロボット作成の計画を立てるべきだった。 **感想 [#kcfcb074] 機械のバランスを考えるとうまくいかないことが多く、プログラムを作るときも、ものすごく手間取ってしまったが、出来上がりを見てみるとなかなかよく出来ていてよかったです。今度はもう少し複雑なプログラムにしたいと思いました。 -シンプルに仕上がっていると思います。課題のポイントを説明しているのは良いでしょう。 -- [[ヒロヤ]] &new{2007-06-21 (木) 13:06:45}; -せっかくなので待っている間は音楽をストップ、あるいは別の音楽を演奏、みたいなことをやってみてもおもしろいでしょう。 -- [[松本]] &new{2007-06-22 (金) 08:44:52}; -このプログラムは、交差点で一時停止するのでしょうか・・・? -- [[まいける(TA)]] &new{2007-06-22 (金) 10:56:54}; -写真を見ると交差点の様子が他のチームと違いますが、直進するか左折するかはどのようにして判断するのでしょうか? そのあたりの説明も記述しましょう。 -- [[松本]] &new{2007-06-22 (金) 13:24:50}; #comment