2015a/MemberOnly

光に向かってボールを打つロボット

課題について

・今回の課題は、半径1m以内にある光を探し、そこにボールを打つというものである。

ロボットについて

本体

・ロボット本体は課題2と同じである(以下のURL参照)。ただし、光センサーは前向きに取り付けてある。

http://yakushi.shinshu-u.ac.jp/robotics/?2015a%2FMember%2Friesteria%2FMission2

アーム

・アームの部分はロボコンに使うように改良した。こちらのロボットは縦に動くアーム,相手側のロボットは横に動くアームである。

・アームの上げ下げは、ギアを組み合わせ、ギアで行う。

・アームにギアを用いたのは、組み換えが簡単であるため、アームの上げ下げにかかる時間がプログラムだけでは調節しきれないとわかった時に、すぐに組み換えることができるからである。

new_IMG_0313.jpg new_IMG_0312.jpg

・ボールを打ち出す仕組みは、アームを上げることにより、下部分に取り付けたパーツでボールを押し出すというものである。なお、外側の二本のレールにより、まっすぐボールを打ち出すことができるようになっている。

new_IMG_0315.jpg

プログラム

#define turn_right OnFwd(OUT_A); OnRev(OUT_C); Wait(200);//右に回転
#define turn_left OnFwd(OUT_C); OnRev(OUT_A); Wait(FastTimer(1)); Off(OUT_AC);//左に回転
#define batting OnRev(OUT_B); Wait(100); Off(OUT_B);//ボールを打ち出す 
#define Search 200//一周する時間
task main(){ 
    SetSensor(SENSOR_2,SENSOR_LIGHT);
    int lightmax=0;//仮の光の最高値を定める
    ClearTimer(0);//一周するのにかかる時間を計り始める
    ClearTimer(1);//一周を終えた場所から光が最大な場所まで戻るための時間を計り始める
    while(FastTimer(0)<=Search){
        if(lightmax<SENSOR_2){//仮の光の最高値がセンサーの値より小さいならば
        lightmax=SENSOR_2;//そのセンサーの値を代入
        ClearTimer(1);//一周を終えた場所から光が最大な場所まで戻るための時間を計り始める
        } 
        turn_right;//2秒間(一周するまでの時間)周り、光が最大なところを見つける
     }
    turn_left;//光が最大なところを向くまで逆回転する
    batting;//ボールを光に向かって打つ
}

反省と感想

・ロボコンに備えロボットのアームを改良した。

・なかなか集まる時間が取れず、レポートがギリギリになってしまった。

・プログラム自体は、説明してもらっていたので、難しいものではなかった。

・もっと速くボールを打ち出せるように、アームやプログラムを工夫したい。


添付ファイル: filenew_IMG_0315.jpg 223件 [詳細] filenew_IMG_0312.jpg 223件 [詳細] filenew_IMG_0313.jpg 218件 [詳細]

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