[[2008a/A9/課題2左]] *目次 [#o7d81a6e] #contents *課題 [#l89450dc] ~各チームで作成したコースに沿って動くロボットを作成せよ。ただし、 ~・速さと正確さを追求すること ~・交差点で優先側を走っていない場合には、一時停止すること ~・前方にあるもう一台のロボットに接触した場合には停止して相手のロボットが行き過ぎる、あるいは距離が離れるのを待つこと ~・コースを3周したら自動的に止まること ~(練習問題のページより引用) *ロボットのハードウェア部分 [#l587f666] ~今回の課題は、左右のチームのロボを同時に動かすという事で、利便上から左右のロボットは似せた作りとなりました。 ~以下の写真参照(前方のロボットが我がチームの、奥のロボットが右のチームのロボットです) #ref(2008a/A9/課題2左/P2008_0619_163646.JPG,640x480) ~他のロボットに触れた事を認識させるためにタッチセンサーを取り付けてあります。 (上の写真が、タッチセンサーの全景、下の写真がモノに触れた際のタッチセンサーの図です。) #ref(2008a/A9/課題2左/P2008_0619_163725.JPG,320x240) #ref(2008a/A9/課題2左/P2008_0619_163755.JPG,320x240) *コースの説明 [#xca89116] コースの元の設計図は、下の写真です。 #ref(2008a/A9/課題2左/P2008_0619_163936.JPG,640x480) これを元に作られたコースが、下の写真です。 #ref(2008a/A9/課題2左/P2008_0619_173225.JPG,640x480) *ロボットのプログラムについて [#kdba510a] ~プログラム製作 ユウキ アンドウ ~プログラム製作 ユウキ ~ロボットのプログラミングは以下のように作成しました。 #define STOP 4*3 #define LINE1 45 #define LINE3 40 int n=0; task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); while (n<=STOP) { OnFwd(OUT_A+OUT_C) ; if ((SENSOR_1<LINE1 )&&(SENSOR_3>LINE3)) { Off(OUT_A); OnFwd(OUT_C) ; } if ((SENSOR_3<LINE1 )&&(SENSOR_1>LINE3 )) { Off(OUT_C) ; OnFwd(OUT_A); } if (SENSOR_2==0) { OnRev(OUT_A+OUT_C); Wait(50); } if ((SENSOR_1<LINE1) && (SENSOR_3<LINE3) ) { n++; Off(OUT_A+OUT_C); OnRev(OUT_A+OUT_C); Wait(50); Off(OUT_A+OUT_C); Wait(50); OnFwd (OUT_A+OUT_C); Wait(250); } } ~このプログラムは、a9左右のロボット共有です。 ~工夫した点、と言うのかは分かりませんがかなりシンプルな作りになっています。 ~具体的には、ifのみで指定して作り上げている部分。 ~これにより、おかしな動作をした際にどこが間違っているのかを迅速に見つけることが出来ました。 *感想等 [#z08fe703] ~今回の課題では、左右が同時に同じコースを走る、と言うことなので協力して作りました。 ~ロボットのハードウェアの共通部分を増やすとともに、ソフトウェアの共有により同時に動かした際のトラブルを減らしました。 *コメントをどうぞ [#fd6c0af2] #comment 他の班のように、プログラムの各部分で何をしているかの説明を書いてください。 F.I.