ライン・トレースロボット

チームメンバー及び番号

番号:R3

メンバー

・梅木

・桜井

・藤村

課題の説明

今回の課題は、あらかじめ指定されたコース(以下のURL先にコース画像がある)を黒線で書き、その上をロボットに走らせ、ライン上のボールをゴールまで持っていくというものである。ルートはA→B、B→A、C→Aの3通りあり、各チームのメンバー一人ひとりが別々のルートをロボットに走らせる。なお三叉路Pおよび交差点Qでは2秒間停止しなければならない。今回私はAからBのルートを担当した。 (http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&refer=2015a%2FMission2&openfile=2015a-mission2.png)

ロボット

全体

s_IMG_0299.JPG

完成図

s_IMG_0301.JPG

分解図

このように簡単に分解でき、簡単に箱にしまうことができ、持ち運びも簡単。ただしその分多少もろくなってしまった。

アーム

アーム

アームはモータとギアで回す。アームの両方にギアをつけ、片方のアームのギアをモーターで回すことで、もう片方のアームのギアが反対に回り、アームの開閉が行えるようになっている。

センサー

前方

光センサーは正面向かって左側にある。光センサーは地面ギリギリにすることで色を感知しやすくした。

少し中心よりも左側につけることで、少しだけ光センサーが振れるようになり、ロボットの動きを細かくできる。

プログラム

#define THRESHOLD 42//閾値を42に設定
#define turn_leftA Off(OUT_A); OnFwd(OUT_C);//左に回転
#define turn_leftB OnFwd(OUT_C); OnRev(OUT_A); Wait(20);//その場で左に回転
#define turn_rightA OnFwd(OUT_A); Off(OUT_C);//右に回転
#define turn_rightB OnFwd(OUT_A); OnRev(OUT_C);//その場で右に回転
#define go_foward1 OnFwd(OUT_AC); Wait(8);//少し前に進む
#define go_back1 OnRev(OUT_AC); Wait(10);//少し後ろに進む
#define go_back2 OnRev(OUT_AC); Wait(100);//後ろに進む
#define nMAX1 10//三叉路Pを認識するカウンタの回数
#define nMAX2 50//交差点Qの前で角度調整を行うことを認識するカウンタの回数
#define nMAX3 10//交差点Qを認識するカウンタの回数
#define nMAX4 8//直角カーブを認識するカウンタの回数
#define nMAX5 2//B地点についたことを認識するカウンタの回数
#define BallCatch 120//三叉路Pからボールをキャッチする場所に行ったことを認識するカウンタの回数
#define armopen OnFwd(OUT_B); Wait(7);//
#define armclose OnRev(OUT_B); Wait(7);//

task main(){
    SetSensor(SENSOR_2,SENSOR_LIGHT);
    int nOnline=0;//三叉路Pを認識するカウンタ
    int nOnline1=0;//交差点Qの前で角度調整を行うことを認識するカウンタ
    int nOnline2=0;//交差点Qを認識するカウンタ
    int nOnline3=0;//直角カーブを認識するカウンタ
    int nOnline4=0;//B地点についたことを認識するカウンタ
    int ball=0;//三叉路Pからボールをキャッチする場所に行ったことを認識するカウンタ
    while(nOnline < nMAX1){//三叉路Pまで移動
        if(SENSOR_2 < THRESHOLD){
            turn_leftA;
            nOnline++;
        } else {
            turn_rightA;
            nOnline=0;
        }
        Wait(1);
    } 
    Off(OUT_AC);//三叉路Pで2秒間停止
    Wait(200);
    turn_rightB;//進む角度のズレを調整
    Wait(18);
    go_foward1;//進む角度のズレを調整
    nOnline=0; 
    while(ball < BallCatch){//ボールをキャッチするところまで移動
        if (SENSOR_2 < THRESHOLD) {
            turn_leftA;
            ball++;
        } else {
            turn_rightA; 
            ball++;
        }
        Wait(1);
    }
    Off(OUT_AC);//停止して
    Wait(200);
    armclose;//アームを閉じてボールをキャッチ
    Off(OUT_B);
    while(nOnline1<nMAX2){//ボールをつかんだところから交差点Qの少し前まで移動
        if (SENSOR_2 < THRESHOLD) {
            turn_leftA;
            nOnline1=0;
        } else {
            turn_rightA; 
            nOnline1++;
        }
        Wait(1);
    } 
    go_back1;//交差点Qの直前でロボットの構造上生じたズレを調整
    turn_rightB;
    Wait(20);
    nOnline1=0;
    while(nOnline2<nMAX3){//ズレを修正し終わったところから交差点Qまで移動
        if (SENSOR_2 < THRESHOLD) {
            turn_leftA;
            nOnline2++;
        } else {
            turn_rightA; 
            nOnline2=0;
        }
        Wait(1);
    }
    Off(OUT_AC);//交差点Qで2秒間停止
    Wait(200);
    turn_rightB;//進む角度のズレを調整
    Wait(50);
    go_foward1;
    nOnline2=0;
    while(nOnline3<nMAX4){//交差点Qから直角カーブまで移動
        if (SENSOR_2 < THRESHOLD) {
            turn_leftA;
            nOnline3=0;
        } else {
            turn_rightA;
            nOnline3++; 
        }
        Wait(1);
    }
    turn_rightB;//直角カーブを曲がる
    Wait(90);
    while(nOnline4 < nMAX5){//直角カーブからBまで移動
        if (SENSOR_2 < THRESHOLD) {
            turn_leftA;
            nOnline4=0;
        } else {
            turn_rightA;
            nOnline4++; 
        }
        Wait(1);
    }  
    go_back2;//B地点でゴールの方へ角度を調整
    turn_leftB;
    armopen;//アームを開き、少し後ろに下がったあと少し前に行くことでボールを転がしシュート
    Off(OUT_B);
    go_back2;
    go_foward1;
    Off(OUT_AC);//停止して終了
}

工夫点

・タイヤとタイヤの幅をある程度狭くすることで、小回りが利くようにした。

・光センサーを地面ギリギリに持ってくることで、感知しやすくし、精度を高めた。

・光センサーを向って正面左側につけることで、ロボットの動きが細かくなるようにした。

感想と反省

・割と時間ギリギリまでかかってしまった。予定が合わなかったり、ロボットの設計をミスしたりして、予定よりも時間がかかってしまったためだと思う。次の最終課題では、メンバーが6人になるので、さらに予定を合わせるのが難しくなる。できるだけ授業中にロボットの構成について話し合い、各自が作るパーツを決め、それぞれのパーツを作り、最後にそれらを組み合わせるという形で作っていきたい。

・ロボットがもろくなってしまった。走らせる分には問題ないのだが、少しの衝撃で壊れてしまったり、アームの時間調整を間違えると、外れてしまったりすることもあった。今度のロボットはその点を特に工夫したい。

・アームのギア調整がうまくいかず、小さいギアから大きいギアへ持っていくことができず、時間調節が大変だった。

・いろいろと大変なことがあったが、最後は何とか完成させられた。大変だったがやはりその分できた時の喜びが大きかった。次回の最終課題では、満足のいくものを完成させたい。


添付ファイル: files_IMG_0302.JPG 52件 [詳細] files_IMG_0301.JPG 110件 [詳細] files_IMG_0300.JPG 111件 [詳細] files_IMG_0299.JPG 96件 [詳細] filenew_IMG_0301.jpg 101件 [詳細] file2015a-mission2.png 57件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-08-04 (火) 10:46:01 (1480d)