[[2005/B5/課題2]] 目次 #contents *ロボ写真 [#t79e3aae] #ref(2005/B5/課題2左/dscn2315_Medium.jpg,) *プログラム [#fea61d19] 作成日:11月26日 作成者:Dezz #define turn_TIME 104 //ターン時間 sub turn_left() //左90°ターン { OnRev(OUT_A);OnFwd(OUT_C); Wait(turn_TIME); Off(OUT_A+OUT_C);Wait(50); } task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); //センサー1はタッチ SetSensor(SENSOR_3,SENSOR_TOUCH); //センサー2はタッチ while(true) { if (( SENSOR_1 == 0)&&( SENSOR_3 == 1 )) //右壁に当たると { Off (OUT_A+OUT_C); //停止 OnFwd(OUT_C);Wait(10); //0.1秒左折 Off (OUT_A+OUT_C); //停止 OnFwd(OUT_C+OUT_A); //前進 } if ( SENSOR_1 == 1 ) //前壁に当たると { Off (OUT_A+OUT_C); //停止 OnRev(OUT_A+OUT_C); //後退0.3秒 Wait (30) ;turn_left(); //左90°ターン OnFwd(OUT_A);Wait(20); //右折0.2秒 OnFwd(OUT_C+OUT_A); //前進 until(SENSOR_3 == 1); //右壁にあたるまで } if (( SENSOR_3 == 0 ) && ( SENSOR_1 == 0 )) //何も触れてない時 { Off (OUT_A+OUT_C); //停止 OnFwd(OUT_A); //右折 } } } *ロボについて [#bf024f4a] 特徴はバンパーについた左右のタイヤとキャタピラ。これらは壁に接触した際にタッチセンサーが反応しやすいようにつけたものです。 このロボットは右側のタッチセンサーが作動している時は少し左を向いて前進をします。そして、もし右側のタッチセンサーが壁から離れた時、右に動くようになっています。左のタッチセンサーは前に壁が来たときに反応をして左に曲がるようになっています。この時、キャタピラがあるおかげで高い位置にしかない壁でもタッチセンサーが作動しやすくなっています。 *プログラムについて [#l8519bc5] -苦労した点 --プログラムの理想どうりロボが動かなかった所 -工夫した点 --コンマ1秒からロボの動きを制御し絶妙な動きを実現しました -まとめ --実際に動かしてみないとうまくいくかどうか全く分からないので大変苦労しました。 --プログラムは改善の余地が多々あると思います *コメントをどうぞ [#d733d293] -SENSOR_1==0 の場合をさらに場合分けして if ブロックの中にさらに if ブロックを使うこともできますね。 -- [[松本(教員)]] &new{2005-11-29 (火) 19:47:17}; -プログラムがどのように動作して、壁をつたっていくのかロボットの説明を含めて書いてみましょう。 -- [[まいける(TA)]] &new{2005-12-02 (金) 16:56:32}; #comment