目次

課題の説明

半径1m以内にある空き缶を探し、25cmの距離からボールを空き缶に当てるロボットを作成せよ。
ただし最初に空き缶が25cm以内の距離にある場合は、30cmまで離れてボールを当てよ。

ロボットの説明

本体

写真 2 (1).JPG

これが今回私たちのチームが制作したロボットである。
アームでボールを囲み、空き缶の前まで運ぶ。

アーム

アーム1

image.jpeg

本体の下部にあり、ボールが外に出ないようにする役割をもつ。

アーム2

写真 4.JPG

本体の上部にある。
ボールを囲み、空き缶の手前まで運ぶためのもの。
空き缶にボールを当てるときに開く。

コンセプト

NX.png

まず超音波センサーで周囲360°をサーチし、最短距離にあるものの場所を記録しておく。
サーチ終了後最短距離にあるものの方向を向き、距離に応じて移動する。
最後にシュートして終了する。

プログラム

プログラムは以下の通りである。
今回は配布資料と課題2を参考に、少し手を加えた。

マクロ

#define speed 50
#define speed_slow 30
#define down OnFwd(OUT_A,40);Wait(500);Off(OUT_A);Wait(300);//アーム2を下げる
#define up OnRev(OUT_A,40);Wait(500);Off(OUT_A);Wait(300);  //アーム2を上げる
#define goal OnRev(OUT_BC,50);Wait(500);Off(OUT_BC);Wait(500);\
 up;OnFwd(OUT_BC,80);Wait(300);Off(OUT_BC);                 //ボールを発射する

サブルーチン・関数

const float diameter = 5.45;//タイヤの直径
const float track = 12.35; //タイヤ間の距離
const float pi = 3.1415;//π

void fwdDist(float d){//引数dの分だけ前進
    long angle;
    angle = d/(diameter*pi)*360.0;//d進むために必要な数angleを計算
    RotateMotorEx(OUT_BC,speed_slow,angle,0,true,true);//左右のタイヤを同期させてより正確に前進
} 

int searchDirection(long ang) [//最も近い物体を探す
    long angle,tacho_min=0;
    int d_min;

    d_min=300;//仮の最小値を設定
 
    angle = (track/diameter)*ang; //引数からモーターの回転角度を計算
    ResetTachoCount(OUT_BC); //角度のカウントをリセット

    while(MotorTachoCount(OUT_B)<=angle){//angの範囲内での最小値の探索
        RotateMotorEx(OUT_BC,speed_slow,1,-100,true,true);//1°左旋回
        if(SensorUS(S1)<d_min){//それまでの最小値より近いなら
            d_min=SensorUS(S1);//最小値を更新
            tacho_min=MotorTachoCount(OUT_B);//最小値を記録した位置を記憶しておく
        }
    }
    RotateMotorEx(OUT_BC,speed_slow,angle-tacho_min,100,true,true);//最も近い物体の方を向く
    return d_min;//最小値を返す
}

メイン

task main(){ 
    SetSensorLowspeed(S1);//超音波センサ
    int d=searchDirection(360);
 
    if(d>25){//物体が25cmより離れた距離にある場合
        fwdDist(d-25.0);//25cm手前まで移動;
    }
    if(d<=25){//物体が25cm以内の距離にある場合
        fwdDist(d-30.0);//30cm手前まで移動;
    }
    goal;
}

結果

無事に空き缶にボールを当てることができた。

苦労したところ・反省点

苦労したこと

配布資料に書いていないものが使われていたため、サンプルプログラムの理解に苦労した。
今回はサンプルプログラムが配布されたため、プログラミングにはそこまで苦労はなかった。
またロボットについても課題2のものを流用しているため、特に苦労はなかった。

反省点

ロボットの重心がかなり前にあるのだが、時間に追われて改善できなかった。
プログラミングについては、サンプルプログラムをベースにしているためほとんど個性が出せなかった。


添付ファイル: fileNX.png 181件 [詳細] fileimage.jpeg 266件 [詳細] file写真 4.JPG 212件 [詳細] file写真 2 (1).JPG 205件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-07-31 (金) 16:58:13