2008a/MemberOnly/進行状況A
2008a/A5
・速さと正確さを追求すること
・交差点で優先側を走っていない場合には、一時停止すること
・前方にあるもう一台のロボットに接触した場合には停止して相手のロボットが行き過ぎる、あるいは距離が離れるのを待つこと
・コースを3周したら自動的に止まること
タッチセンサーと光センサーをロボットの前方に組みんで、光センサーは黒い線を挟み込むように2個用いた。
モーターには車輪をつなげ、正確に走ることができるようにした。
交差点を3つつくった。
#define THRESHOLD 40 //閾値を32に設定 #define go OUT_A+OUT_C #define RUN_TIME 1400 task main() { start line_trace; //ライントレーススタート start check_touch; //衝突の感知のスタート } task line_trace() { SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ1に光センサを定義 SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ3に光センサを定義 ClearTimer(0); while( Timer(0) <= RUN_TIME){ { if(SENSOR_1 > THRESHOLD){ if(SENSOR_3 > THRESHOLD){ //両方のセンサが白を感知 OnFwd(go); //前進する } else{ //左が白、右が黒を感知 OnFwd(OUT_A);OnRev(OUT_C); //右に曲がる } }else{ if(SENSOR_3 > THRESHOLD){ //左が黒、右が白を感知 OnFwd(OUT_C);OnRev(OUT_A); //左に曲がる }else{ //両方のセンサが黒を感知 OnRev(go);Wait (80); //0.8秒間 後進 Off(go);Wait(100); //1秒間停止する OnFwd(go);Wait (230); //2.3秒間前進 } } } } task check_touch() { SetSensor(SENSOR_2,SENSOR_TOUCH); //センサ2にタッチセンサを定義 while(true){ if(SENSOR_2 == 1){ //バンパーが衝撃を感知 stop line_trace; //ライントレース一時停止 OnRev(go); Wait(100); Off(go);Wait(200); //2秒間停止する start line_trace; //ライントレース再開 } }
・一時停止する前に一度バックをして、優先車両が走りやすいようにした。
・光センサーが正しく作動するような位置を考えるのに苦労した。
・機体にもろい部分があり、分解しないように扱わなければいけなかった。
・3周して止めるのに時間を使っていたので、時間を使わないで止める方法を考えたい。
・プログラムをつくるのに時間がかかった。あと面倒だった。
・コースの幅が少し狭かったかもしれない。