懐中電灯に向かってブロックを投げるロボットを作ること。
インストの「top secret」を参考にして、白いホイールを投げるロボットを作成し、以下の動きをするようにプログラムを作成せよ。 (重複しないように一人一つ以上のプログラムを作成すること)
1.全方向から懐中電灯の方向を探しだし、懐中電灯を狙ってブロックを投げる。 方向を定めたのち、懐中電灯の30cm以内に近づかない範囲で必要な距離を移動してもよい。 懐中電灯は動かさないが、いろいろな距離や方向にある懐中電灯に対応できるロボットにすること。
2.懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、 懐中電灯の動きを止めれば一定の距離(懐中電灯から30cm以上離れた距離)まで近づいて 懐中電灯を狙ってブロックを投げる。
3.懐中電灯を動かしたとき懐中電灯に向かって進み、 見失った時には再び全方向から懐中電灯を探しだす。 7秒以上追尾できたら懐中電灯に向かってブロックを投げる。
懐中電灯の代わりに携帯のライトなどを利用してもよい。 モータ、光センサ、タッチセンサはそれぞれ2個まで使用可。 ただし、平面的な方向だけでなく懐中電灯の高さまで含めた方向を探す場合にはモータを3個使用してもよい。
今回のアームは、遠心力をつかってブロックを投げるタイプを採用した。投げる長さの調整が少し難しかった。
少ないパーツで多くの部分を動かすためギアが複雑になったが、きれいに収まった。
タイヤ装着後↓
動かないライトを探し出しブロックを投げる
#define THRESHOLD 60 task main() { SetSensor( SENSOR_1,SENSOR_LIGHT ); //センサー1が光ライトであることを定義 SetSensor( SENSOR_3,SENSOR_LIGHT ); //センサー3が光ライトであることを定義 while( true ){ if ( SENSOR_1 > THRESHOLD ){ //センサー1が光を感知したら左に回る OnFwd(OUT_C); }else{ if ( SENSOR_3 > THRESHOLD ){ //センサー3が光を感知したら左に回る OnRev(OUT_C); }else{ //光を感知しなければ右に回り続ける OnFwd(OUT_C);} if ( (SENSOR_1 > THEREHOLD)&&(SENSOR_3>THEREHOLD)){ //センサー1と3が定義した閾値より大きくなったら少し前進してブロックを投げる Off(OUT_C); Wait(50); OnRev(OUT_C);Wait(20); OnFwd(OUT_C);Wait(20); Off(OUT_C); OnFwd(OUT_A); Wait(100); Off(OUT_C); break; Off(OUT_C+OUT_A); } } }
動く光に向かってブロックを投げる(課題3の2)
#define t 50 //閾値を定義 #define t2 60 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1,3をライトセンサーにセット SetSensor(SENSOR_3,SENSOR_LIGHT); while (true) {//センサー1,3が定義した閾値より大きいとき前進// if((SENSOR_1> t)&&(SENSOR_3> t)){ OnRev(OUT_C);Wait(20); OnFwd(OUT_C);Wait(20); }//センサー1が定義した閾値より大きく、センサー3が定義した閾値より小さいとき左に// if ((SENSOR_1>t)&&(SENSOR_3<t)){ OnRev(OUT_C); }//センサー1が定義した閾値より小さく、センサー3が大きいとき右に// if((SENSOR_1< t)&&(SENSOR_3> t)){ OnFwd(OUT_C); }//センサー1,3が定義した閾値より大きくなったらブロックを投げて止まる// if((SENSOR_1> t2)&&(SENSOR_3> t2)){ Off(OUT_C); Wait(13); OnFwd(OUT_A); Wait(15); OnRev(OUT_A); Wait(5); Off(OUT_A); break; Off(OUT_A+OUT_C); } if((SENSOR_1<t)&&(SENSOR_3<t)){//センサー1,3が定義した閾値より小さいとき右に OnRev(OUT_C); } } }
課題2の応用に頼ったところが多くあった。なので、新しい発見はあまりなかったけれど、このプログラミングをほぼ理解できたと思う。
前回はプログラミングに時間がかかったのに対し、今回はプログラミングが割とはやくた。しかし逆にロボットは、ディファレンシャルギアを使ったり、ロボットの面で工夫しなければならないことが、たくさんあり、その部分を改良するのに、特に時間がかかった。しかし今回の知識は、ロボコンに活かせる知識がたくさんあったのでぜひつぎは、つかってみたい。
コメントをどうぞ