'''&size(50){もくじ};'''


#contents

*メンバー[#f44996f5]
-風魔tk
-小太郎hy

*今回の課題 [#db9c756b]
各チームで作成したコースを1周するロボットを製作せよ。交差点以外のコース上に350mlの空の空き缶を2個以上おき、空き缶にぶつかった時には次のような動作するプログラムを作成せよ。(他のメンバーと重ならないように一人一つのプログラムを作成する)

   1. 空き缶をコース上に戻して再びコースに戻って進む
   2. 空き缶を次の交差点まで運んで行き、その交差点に空き缶を残してさらにコースに沿って進む
   3. 奇数回目に空き缶に遭遇したら、その場で反転して進み、偶数回目に遭遇したら、空き缶を押しのけて進む

ただし、

    * 速さと正確さを追求すること
    * コースを1周したら自動的に止まること
    * 交差点では一時停止すること

*コース紹介 [#nef8554c]
単調なコースだったので改良したら裏目に出た気が・・・
&ref(2010a/A6/課題2左/100624_1616~01.jpg);

*作ったロボット [#a6cb101f]


&ref(2010a/A6/課題2左/100624_1440~01.jpg,100%);
&ref(2010a/A6/課題2左/100624_1441~01.jpg,100%);

広範囲に受け止めることができるバンパーを製作しました

センサーの接触加減の調節が大変でした

&ref(2010a/A6/課題2左/100624_1440~02.jpg,100%);
&ref(2010a/A6/課題2左/SH370016.JPG,25%);

光センサーは挟み込みを採用することで正確さをあげました 右の写真は改良によりセンサーの間を狭くしました

&ref(2010a/A6/課題2左/100624_1442~01.jpg,100%);
&ref(2010a/A6/課題2左/100624_1442~02.jpg,100%);

車体は小回りがきくようになるべくコンパクトにまとめました


&ref(2010a/A6/課題2左/100624_1441~02.jpg,100%);

軸車輪をつけることにより本体と回転の動作に安定性が増しました



ここからは改良Ver.の説明です

&ref(2010a/A6/課題2左/SH370015.JPG,23%);
&ref(2010a/A6/課題2左/SH370014.JPG,23%);
&ref(2010a/A6/課題2左/SH370013.JPG,23%);
&ref(2010a/A6/課題2左/SH370012.JPG,23%);

タッチセンサーはアームからバンパーにかえました

缶を支えるアームは長く幅を意識してつくりました
*プログラム [#xc5a8458]
**風魔tkのプログラム [#l4b71110]
 #define THRESHOLD 40                                                   //闘値を40に設定
 #define go_back(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);        //後退
 #define t_left(t)  OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C); //左旋回

 task main(){
 SetSensor(SENSOR_1,SENSOR_LIGHT);
 SetSensor(SENSOR_2,SENSOR_TOUCH);
 SetSensor(SENSOR_3,SENSOR_LIGHT);
 int move_time=0;    
    
 while(move_time <5);{
    if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){                     //光センサが2個とも白なら、直進
                OnFwd(OUT_A+OUT_C);
    }
    if (SENSOR_1>THRESHOLD){                                     //左だけ白なら、右にターン
                    OnFwd(OUT_A);
                    OnRev(OUT_C);
    } 
    if (SENSOR_3>THRESHOLD){                                     //右だけ白なら、左にターン
                    OnFwd(OUT_C);
                    OnRev(OUT_A);
    } 
    if ((SENSOR_1<THRESHOLD)&&(SENSOR_3<THRESHOLD)){                 //両方線上にあるとき、1秒止まり前進する
                    Off(OUT_A+OUT_C);
                    Wait(100);
                    OnFwd(OUT_A+OUT_C);
                    move_time++;
    }
    if (SENSOR_2 == 1){                                              //タッチセンサーが押された場合
                    t_left(90);                                         //左に180度旋回
                    go_back(100);                                       //1秒下がり、空き缶を離す
                    t_left(90);                                         //左に180度旋回
                    Off(OUT_A+OUT_C);                  
      }
    }
   } 
**小太郎hyのプログラム [#ueed402e]
 交差点まで障害物を運ぶ
 #define turn_ba OnFwd(OUT_C);OnRev(OUT_A);Wait(61);Off(OUT_A+OUT_C);  //90°回転
 #define turn OnFwd(OUT_A);OnRev(OUT_C);Wait(61);Off(OUT_A+OUT_C);  //90°回転
 #define go OnFwd(OUT_A+OUT_C);  //直進
 #define ba OnRev(OUT_A+OUT_C);  //後退
 #define THRESHOLD 40  //闘値を40に設定

 task main ()
 {
  SetSensor(SENSOR_1,SENSOR_LIGHT);  //光センサーを1にセット
  SetSensor(SENSOR_2,SENSOR_TOUCH);  //タッチセンサーを2にセット
  SetSensor(SENSOR_3,SENSOR_LIGHT);  //光センサーを3にセット

 start line_trace;
 while (true) {
              start line_trace;          //ライントレースを始める
              }
             }
 task line_trace()
 {go;
  while (true) { if((SENSOR_1<THRESHOLD)&&( SENSOR_3<THRESHOLD))//センサ−1と3が黒線上にきたら1.0秒まってから直進する
 {Off(OUT_A+OUT_C);Wait(100);turn;go;Wait(100);ba;Wait(100);turn_ba;go;Wait(100);}                
                if(SENSOR_1<THRESHOLD)//センサー1が黒線上にきたら
                 {OnFwd(OUT_C);OnRev(OUT_A);//左へ曲がる
                 } 
                if(SENSOR_3<THRESHOLD)//センサー3が黒線上にきたら
                 {OnFwd(OUT_A);OnRev(OUT_C);}//右へ曲がる
                if((SENSOR_1>THRESHOLD)&&( SENSOR_3>THRESHOLD))
                 {go;}
 }
 }
*工夫した点、苦労した点[#fbabbad0]

 カーブをスムーズに曲がるために後輪をひとつにした。
チームでの連携が上手くいかなかったためライントレースができずほとんどぶっつけ本番状態だった。 

*工夫した点(プログラム) [#fbabbad0]

***風魔tk [#je1efb0c]
 長々と書くのも大変だったので、とにかく簡単にまとめてみました。空き缶を線の上に戻すために180度ロボを回転させなくてはいけなかったがその調整が大変で苦労した。
***小太郎hy [#j99def39]
 なるべく簡単にまとめるようにしました。闘値が左右で微妙に違ったので何度か調整したけど結局両方一緒でうまくいきました。交差点では必ず障害物をどける作業を行ってしまいます。

*改良後の改善点[#fbabbad0]
 改良前のアームでは空き缶を掴むには広すぎて旋回時に外に出てしまったり、旋回後に線の上に上手く戻せなかったためアームの幅を狭め確実に収まるようにした。
その結果失敗はなくなった。
*感想 [#b0c2d829]
***風魔tk [#t9a47786]
時間的余裕はあったが、前回に比べプログラムが結構難しくて大変だった。
***小太郎hy [#gd865bff]
慣れないプログラムの作業だったので時間が足りませんでした。
 

*コメント [#z236ac0a]
コメントをどうぞ!!
- ロボットを改良した理由、改善した点などをあげてみてください。工夫した点は、プログラムについても書いてみるとよいと思います -- [[TAKA]] &new{2010-07-09 (金) 17:00:56};
- 工夫した点を充実させてください。二人目に関してはどの課題を選択したのでしょうか? -- [[FI]] &new{2010-07-12 (月) 18:17:05};
- 二人目のプログラムでは缶や交差点の処理が一切ない気がします。また、line_traceというtaskをつくった意味が今のままではあまりないような気がします。mainの4行目とline_traceの1行目は必要なのでしょうか? -- [[FI]] &new{2010-07-29 (木) 09:49:37};

#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS