'''もくじ'''

メンバー

  • 風魔tk
  • 小太郎hy

今回の課題

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

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

ただし、

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

コース紹介

単調なコースだったので改良したら裏目に出た気が・・・ 100624_1616~01.jpg

作ったロボット

100624_1440~01.jpg 100624_1441~01.jpg

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

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

100624_1440~02.jpg SH370016.JPG

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

100624_1442~01.jpg 100624_1442~02.jpg

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

100624_1441~02.jpg

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

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

SH370015.JPG SH370014.JPG SH370013.JPG SH370012.JPG

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

缶を支えるアームは長く幅を意識してつくりました

プログラム

風魔tkのプログラム

#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のプログラム

交差点まで障害物を運ぶ
#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;}
}
}

工夫した点、苦労した点

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

工夫した点(プログラム)

風魔tk

 長々と書くのも大変だったので、とにかく簡単にまとめてみました。空き缶を線の上に戻すために180度ロボを回転させなくてはいけなかったがその調整が大変で苦労した。

小太郎hy

なるべく簡単にまとめるようにしました。闘値が左右で微妙に違ったので何度か調整したけど結局両方一緒でうまくいきました。交差点では必ず障害物をどける作業を行ってしまいます。

改良後の改善点

 改良前のアームでは空き缶を掴むには広すぎて旋回時に外に出てしまったり、旋回後に線の上に上手く戻せなかったためアームの幅を狭め確実に収まるようにした。 その結果失敗はなくなった。

感想

風魔tk

時間的余裕はあったが、前回に比べプログラムが結構難しくて大変だった。

小太郎hy

慣れないプログラムの作業だったので時間が足りませんでした。  

コメント

コメントをどうぞ!!

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


添付ファイル: fileSH370016.JPG 176件 [詳細] fileSH370015.JPG 128件 [詳細] fileSH370014.JPG 126件 [詳細] fileSH370013.JPG 146件 [詳細] fileSH370012.JPG 126件 [詳細] file100624_1758~01.jpg 78件 [詳細] file100624_1616~01.jpg 163件 [詳細] file100624_1442~02.jpg 132件 [詳細] file100624_1442~01.jpg 193件 [詳細] file100624_1441~01.jpg 149件 [詳細] file100624_1441~02.jpg 149件 [詳細] file100624_1440~02.jpg 166件 [詳細] file100624_1440~01.jpg 132件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-07-29 (木) 09:49:37 (3311d)