課題

IMG_1297.JPG

今回の課題は上の画像のコースをA地点からB地点まで黒い線に沿って走るロボットの作成である。

また画像の黄色の点のピンポン玉をとり、B地点のゴールに入れる。

途中、三叉路と交差点で2秒間停止し直進することが課題となる。

ロボットの説明

IMG_1255.JPG IMG_1275.JPG

車型の本体にツメのついたかごが前方にあるロボットである。

ボールをかごに入れ、回り続けるツメでつかむことでボールを運ぶ。

この時ボールをつかんでもツメは回り続けているので、モーターに負荷をかけないようにギアを輪ゴムにしている。

また、ギアを調節してツメの速さをゆっくりにしたことと、かごの奥行を広くとったことでどのタイミングでボールに近づいてもボールを取り逃がさないようにしてある。

ツメの形を鉤のようにしているのもボールをしっかり掴むための工夫である。

前方に付けるよりもセンサーが正しく反応するのではないかと考え、光センサーを中心あたりに付けた。

プログラム

#define THRESHOLD 45    //ライトセンサーの基準値を45に設定
#define MOVE_TIME 45
#define go_straight OnFwd(OUT_AC);ClearTimer(0);    //直進
#define turn_right OnFwd(OUT_A);OnRev(OUT_C);ClearTimer(0);    //右旋回して軌道修正
#define turn_left OnFwd(OUT_C);OnRev(OUT_A);    //左旋回
#define short_break Off(OUT_AC);Wait(200);ClearTimer(0);    //交差点で小休止
#define cross_line OnFwd(OUT_AC);Wait(30);ClearTimer(0);    //交差点を渡る

task main()
{
    OnFwd(OUT_ABC);    //スタートからラインまで直進しツメを回す
    Wait(100);
    Off(OUT_AC);

    SetSensor(SENSOR_1,SENSOR_LIGHT);    //端子1にライトセンサー
    CiearTimer(0);

    repeat(3){    //以下の{}内を3回繰り返す
        while(FastTimer(0)<=MOVE_TIME){    //左旋回の時間が0.45以下の間繰り返す
            if(SENSOR_2<THRESHOLD-4){    //黒線の時、
                turn_left;               //左に軌道修正
            }else if(SENSOR_2<THRESHOLD){    //境界付近の時、
                go_straight;                 //直進
            }else if(SENSOR_2<THRESHOLD+10){    //白線の時、
                turn_right;                     //右に軌道修正
            }
            Wait(1);    //0.01秒続ける
        }
        short_break;    //小休止し、
        turn_right;     //車体の向きを戻し、
        Wait(MOVE_TIME);
        cross_line;     //交差点を渡る
    }
    Off(OUT_AC);
    OnRev(OUT_AC);    //後退し、
    Wait(50);
    Off(OUT_AC);
    OnRev(OUT_B);     //ツメを逆回転させてボールを出し、
    Wait(100);
    OnFwd(OUT_AC);    //直進してゴールに入れる、
    Wait(50);
    Off(OUT_ABC);
}

カウンターではなくタイマーを使った。

左旋回の時以外はタイマーをリセットするようにしてある。

タイマーがリセットされない時間が0.45秒を超える(左旋回が0.45秒を超える)と交差点と認識して小休止と横断を行う。

交差点判定の左旋回の時間は、交差点とカーブを認識するように調節を重ねた。今回一番大変だった点である。

三叉路と交差点がゴール前を含めて3つあるので、交差点判定を3回繰り返してシュートするプログラムを作った。

色の判定は3段階で問題なくスムーズにいったので5段階は作らなかった。

45をセンサーの基準として41以下は黒線、45以上は白線と認識している。

ツメを逆回転させるだけではうまくシュートできないことがあるので、車体を前進させることで押し込むようにシュートさせている。

まとめ

今回の課題はセンサーの判定によって動くロボットなので、交差点とカーブをいかに正しく判定させるかが難しかった。

車体の入射角度によってはうまく交差点と判断しなかったり、急なカーブを交差点と判断してしまったりと問題が多かった。

そこでカウンターではなくタイマーを使ったところうまくいくようになった。

改善点としてうまくボールを取れないことがあったことがあげられる。

ツメを回すことによりボールを掴むため、ツメが丁度前方にいってしまうとボールに当たって失敗してしまう。

奥行とツメのスピードを抑えたことで成功率を上げたが、失敗を全てカバーできなかったのは改善したい。


添付ファイル: fileIMG_1275.JPG 106件 [詳細] fileIMG_1255.JPG 100件 [詳細] fileIMG_1297.JPG 94件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-08-02 (日) 15:58:12