2006b/MemberOnly/進行状況A

課題2:黒い線に沿って動くロボット

勉強ノート

プログラム

相手のロボットに接触したら反転して進むプログラム

#define THRESHOLD 40                 //光の閾値を設定
task main()
{
    SetSensor(SENSOR_1,SENSOR_LIGHT);//光センサーのセット
    SetSensor(SENSOR_2,SENSOR_TOUCH);//タッチセンサーのセット
    SetSensor(SENSOR_3,SENSOR_LIGHT);//光センサーのセット
    while(true)
  {
   if(SENSOR_1<THRESHOLD)
   {OnFwd(OUT_C);
    Off(OUT_A);}
   if(SENSOR_3<THRESHOLD)
   {OnFwd(OUT_A);
    Off(OUT_C);}                     //黒い線に沿って運動
   if(SENSOR_2==1)                   //タッチセンサーに触                    れた場合
   {OnRev(OUT_A+OUT_C);              //後退
    Wait(80);
    OnFwd(OUT_C);
    OnRev(OUT_A);
    Wait(50);}                       //回転させる
    until(SENSOR_1 <= THRESHOLD);           //黒い線に戻る
 }
}

相手のロボットに接触したら右側に曲がって、もう一度黒い線に戻って進むプログラム

#define THRESHOLD 40                 //光の閾値を設定
task main()
{
    SetSensor(SENSOR_1,SENSOR_LIGHT);//光センサーのセット
    SetSensor(SENSOR_2,SENSOR_TOUCH);//タッチセンサーのセット
    SetSensor(SENSOR_3,SENSOR_LIGHT);//光センサーのセット
    while(true)
  {
   if(SENSOR_1<THRESHOLD)
   {OnFwd(OUT_C);
    Off(OUT_A);}
   if(SENSOR_3<THRESHOLD)
   {OnFwd(OUT_A);
    Off(OUT_C);}                     //黒い線に沿って運動
   if(SENSOR_2==1)                   //タッチセンサーに触                    れた場合
   {OnRev(OUT_A+OUT_C);              //後退
    Wait(80);
    OnFwd(OUT_A);
    OnRev(OUT_C);
    Wait(90);                        //右に曲がる
    OnFwd(OUT_A+OUT_C);
    Wait(100);                      //前進
    
    OnRev(OUT_A);
    Wait(90);                        //左に曲がる
    OnFwd(OUT_A);
    Wait(100);                      //前進
    OnRev(OUT_A);
    Wait(90);                      //左に曲がる
    OnFwd(OUT_A);                  
    Wait(30);
    OnRev(OUT_C);
    Wait(30);                      //回転させる
    until(SENSOR_1 < 40);          //黒い線に戻る  
     }
  }
}




200611071835000.jpg


まず最初に作ったキャタピラ型。

とりあえず動きに正確性を欠いたので、変更された。






200612221433000.jpg


光センサーでセンサーを二つ使っていたので、センサーを重ねることでひとつになってどうにか使えるようになったタッチセンサー





200612221439000.jpg


コース。。。緩やかにデザインしてもらったが、一箇所まがりにくかった。。。けど、なかなかいいデザインでした。。。







工夫した点~

 バンパーが高さが違うので、最初はうまくあたらなく反応しなかったが、高さを変更し当たるようにしたのでうまくいくようになった。
 あと、すれ違うときにぶつからないように、コースから外れすぎなうように、調整するのに少し工夫した。工夫というのは、ぶつからないように外れすぎないように、一台分よけるのではなく、お互いに一台半分よけるようにして、外れすぎないようにした。
 タッチセンサーが2つ、光センサーが2つの4つだったので、最初どうしようか迷った。光センサー1つでライントレイスをしようかと思ったが、精度を欠いていて線を外れたり、左右にがたがた揺れて、スピードも出なかったので却下した。タッチセンサーを1つのやつを作ろうかと思ったが、センサーは重ねて使えることを聞き、悩み解決。

 

コメントをどうぞ!



添付ファイル: file200612221439000.jpg 297件 [詳細] file200612221433000.jpg 275件 [詳細] file200611071835000.jpg 276件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-02-17 (土) 13:58:31