目次

課題について

 今回課題は、空き缶を収集し、ゴールに空き缶をなるべく高く積み上げる。
 詳しい課題3についてはこちら

ロボット本体について

 2つのキットを合体させて作り、缶をアームでつかみ持ち上げる為に高さのあるロボットとなった。光センサーが3つついており、ライントレース用に下向きに2つ、缶を判別するために前向きに1つつけられている。

zenntai.jpg

 缶を抑えるため、タイヤを滑り止めとして使い、持ち上げやすくした。

mae.JPG

 黄色い棒により缶をつかんだ時に倒れることを防いでいる。また、アームを持ち上げるためのレールを持ち上げた時に傾かないようギアを上部に使い抑えている。また、通信部分本体を横にすると長いため縦にすることで場所をとらないようにした。

yoko.jpg

工夫した点

 缶をつかむためのアームの下側に缶に引っかるようにギアをつけた。

armsita.JPG

 棒で缶が確実に中心にくるように棒を取り付けた。

armnaka.jpg

プログラムについて

defineについて

 基本的な右左旋回、右左折、直進を定義した。

 #define senkai_left OnRev(OUT_C);OnFwd(OUT_A);//左旋回
 #define senkai_right OnFwd(OUT_C);OnRev(OUT_A); //右旋回
 #define turn_left Off(OUT_C);OnFwd(OUT_A);//左折
 #define turn_right OnFwd(OUT_C);Off(OUT_A);//右折
 #define fwd OnFwd(OUT_AC);//直進

void、サブルーチンについて

 直進するプログラム

void go_fwd(int time)
{
     fwd;
     Wait(time);
     Off(OUT_AC);
}

交差点を右折するプログラム。旋回をすることで小さく曲がれるようにした。

sub usetu()
{
     turn_right;
     Wait(230);
     Off(OUT_C);
     senkai_right;
     Wait(50);
     Off(OUT_AC);
     OnRev(OUT_AC); 
     Wait(30);
     Off(OUT_AC);
}

sub sasetu()
{
     turn_left;
     Wait(190);
     Off(OUT_A);
     senkai_left;
     Wait(40);
     Off(OUT_AC);
}

PQRSの交差点では、90度に曲がるのではないため、時間を調整し斜めに車体を向けるようにした。

sub naname_usetu()
{
     OnFwd(OUT_C);
     Off(OUT_A);
     Wait(200);
     Off(OUT_C);
     OnRev(OUT_AC);
     Wait(40); 
     Off(OUT_AC);
}

缶を置いて離れるためのプログラム

sub owari()
{
     turn_right;
     Wait(70);
     Off(OUT_AC);
     Wait(450);
     OnRev(OUT_AC);
     Wait(200);
     Off(OUT_AC);
}

左右の光センサーが白色の上なら直進、左側の光センサーが黒色に近づいたら左折、右側の光センサーが黒色に近づいたら右折、左側の光センサーが黒線上にきたら左旋回、右側の光センサーが黒線上にきたら右旋回、右側のセンサーが0.11秒黒線上なら交差点だと判断し、止まる。

sub line_trace()
{
     SetSensor(SENSOR_1, SENSOR_LIGHT);   //右
     SetSensor(SENSOR_3, SENSOR_LIGHT);   //左
     ClearTimer(0);

     PlaySound(SOUND_CLICK); 

     while(FastTimer(0)<11){
         if(SENSOR_1>=49&&SENSOR_3>=55){
             fwd;
             ClearTimer(0);
         }else if(SENSOR_3>=50){
             turn_right;
             ClearTimer(0);
         }else if(SENSOR_1>=40){
             turn_left;
             ClearTimer(0);
         }else if(SENSOR_3>=48){
             senkai_right;
             ClearTimer(0);
         }else if(SENSOR_1>=38){
             senkai_left;
             ClearTimer(0); 
         }else if(SENSOR_3>=30){
             Off(OUT_AC);
             PlaySound(SOUND_LOW_BEEP);
         }else{
             fwd;
             Wait(30);
             Off(OUT_AC); 
             }	
     }
     Off(OUT_AC);
     PlaySound(SOUND_CLICK);
}

基本的には上のライントレースと変わらないが、2つ目のタイマーが設定した時間になっても止まるようにした。

void line_trace_2(int time)
{
     SetSensor(SENSOR_1, SENSOR_LIGHT);   //右
     SetSensor(SENSOR_3, SENSOR_LIGHT);   //左
     ClearTimer(0);
     ClearTimer(1);

     PlaySound(SOUND_CLICK); 

     while(FastTimer(0)<11&&FastTimer(1)<time){
         if(SENSOR_1>=49&&SENSOR_3>=55){
             fwd;
             ClearTimer(0);
         }else if(SENSOR_3>=50){
             turn_right;
             ClearTimer(0);
         }else if(SENSOR_1>=40){
             turn_left;
             ClearTimer(0);
         }else if(SENSOR_3>=48){
             senkai_right;
             ClearTimer(0);
         }else if(SENSOR_1>=38){
             senkai_left;
             ClearTimer(0); 
         }else if(SENSOR_1>=30){
             Off(OUT_AC);
             PlaySound(SOUND_LOW_BEEP);
         }else{
             fwd;
             Wait(30);
             Off(OUT_AC);              
             }	
     }
     Off(OUT_AC);
}

タイヤ側のプログラム

定義したもので構成したので短く書くことが出来た。

task main()
{
     go_fwd(50);
     line_trace();
     usetu();
     repeat(2){
         line_trace();
         Wait(50);
         naname_usetu();
         Wait(50);
         }
     line_trace_2(230);
     Wait(500);
     senkai_left;
     Wait(200);
     Off(OUT_AC);
     go_fwd(30);
     line_trace();
     Wait(450);
     sasetu();
     line_trace();
     owari();
}

アーム側のプログラム

 アームのプログラムについてはこちらmisoを見てください。

結果

 順路としてA→E→P→S→G→H→Tを通った。EGHの空き缶を3段積み重ねることができたため、3+6+9=18点となった。

kekka.JPG


実際に積み上げている様子はこちらhttps://www.youtube.com/watch?v=I_fwqzWXyB0

まとめ

 今回の課題はロボット本体、プログラムを作るのも作戦を考えなければならなかったので時間がすごくかかった。缶を3段積み上げることにしてから、どこの缶を取ろうかと考え続けた。時間をもっとかければより多くの点を取れたかもしれないが電池もどんどん消費してしまうので難しいところである。チームメンバーそれぞれ得意なところで力を発揮できたと思う。時間がないなか妥協はあったが、力を合わせ完成できたことはこれからの大きな糧になると思う。

チームメンバーのページ

miso
ejj
sawa


添付ファイル: filezenntai.jpg 68件 [詳細] filemae.JPG 74件 [詳細] fileyoko.jpg 76件 [詳細] filearmsita.JPG 123件 [詳細] filearmnaka.jpg 72件 [詳細] filekekka.JPG 81件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-08-13 (日) 19:09:04 (738d)