2019a/Member

課題について

課題のコース

A地点から出発 → M → K(直進) → L(ピンポン玉をつかむ) → K(右折) → J(一時停止の後、左折) → I(直進) → H(直進) → G(左折) → F → E → D(一時停止の後、直進) → C(直進) → B(一時停止) → シュート→ A地点に入る(ゴール)

交差点では1秒間停止し、丁字路では直角方向に進入する時のみ一時停止すること。

ロボの構造について

まずできる限り小型化した4輪の車を作った

  1. ロボの前部について

ロボの前部

上図のように車の前部に光センサーを取り付けた

  1. ロボの後部について

ピンポン玉をつかむ部位

上図のように4つの歯車をと2本のL字棒を使って、ピンポン玉を捕まえる

これを下図のように、車の後部に取り付けた

ロボの後部

なお、光センサーとピンポン玉を捕まえる部分の両方を前部に用いると感知する光が低くなるため、前部と後部に分けた。

サブルーチンと関数について

Fast Timerの時間設定を変えるため関数を定義した

int z;

K〜G間で交差点を認識してから、交差点をわたり、そして車体を線に近づけるように以下のサブルーチンを定義した

sub migikaiten()                         
{
OnFwd(OUT_AC);                //交差点を渡る
Wait(20);
Off(OUT_AC);
OnFwd(OUT_A);                 //右回転する
OnRev(OUT_C);
Wait(40);
Off(OUT_AC);
OnFwd(OUT_AC);                //線に近づける
Wait(20);
Off(OUT_AC);
}

なお、交差点では黒部分の時間が長くなるため、上記の右側または左側トレースのサブルーチンが終了する。終了した場所に交差点があると判断し、

 OnFwd(OUT_AC);               
 Wait(20);
 Off(OUT_AC); 

で交差点の黒い部分を渡ることにした

プログラムについて

task main()
{
 SetSensor(SENSOR_2, SENSOR_LIGHT);

ピンポン玉は車体の後部で捕まえるため、ここで半回転する

 OnFwd(OUT_AC);        //K地点を渡る
 Wait(20);
 Off(OUT_AC);  
 OnFwd(OUT_A);OnRev(OUT_C);    //半回転
 Wait(160);
 Off(OUT_AC);
 OnRev(OUT_AC);                //車体の調整
 Wait(30);
 Off(OUT_AC);
 Wait(100);
 z=20;
 back_follow_left();          //半回転したため、左トレースながら後進する
 Off(OUT_AC);                 //k地点で停止
 OnRev(OUT_AC);               //KからLに進む
 Wait(30);
 Off(OUT_AC);
 OnRev(OUT_B);                //ピンポン玉を捕まえる
 Wait(10);
 Off(OUT_B);

感想・反省

ピンポン玉を捕まえるところまではうまくできた。J〜G間が毎回動きが異なり、うまく円の部分を1周できなかった。この問題を改善するには、円上の交差点の渡り方とトレースの仕方を改善する必要がある。できなかったことがかなり悔しさの残る結果となった。


添付ファイル: file2019a-mission2.png 151件 [詳細] file851472E2-7F0A-4DF1-BA67-F49996158D35 (1).jpeg 251件 [詳細] file97E41B26-0FE4-43A1-AB73-B5AFBFE89D21 (1).jpeg 262件 [詳細] file8D9382E4-3497-4F37-9FD8-45181E9E8672.jpeg 153件 [詳細] file851472E2-7F0A-4DF1-BA67-F49996158D35.jpeg 89件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-14 (水) 23:12:55