[[2010b]]

*第三回課題〜ライントレースと砲撃〜 [#u30e76b5]


**課題概要 [#g5b5abab]
1.光センサーを一つだけ用いて、ライントレースして逃げつづける。その際、ロボット後部にはもう一つセンサーをつけ、常に光を発するようにする。


2.前者のロボット後部の光センサーから発せられる光を検出し逃げるロボットを追いかけて、届くところまで着たら弾代わりの黄色いホイールを逃げるロボットめがけて投げつける。


**メンバー紹介 [#e3e6b5a6]
-こっちの松本
-貴トラマンヒロ


**ポイント [#v69213e8]
-ロボットは、移動以外に「弾送り」、「射出」にモーターを使うので、移動にはモーターは1つしか使えないので、ディファレンシャルギアを用いることで、モーターの回転方向を変えて、ロボット左右のタイヤを交互に前進させることで、進む。


-逃げるロボットから発せられる光を検出するには、光の最大値を求めるようなプログラムを入れる。ただし、この時まわりの光は具体的な関数として表すことはできないので、2つの数値を比較することで、最大値を決定する。


つまり、最初に検出した光の強さを仮の最大値とし、ロボットを回転させる、そこで、もし次に検出された光の値が仮の最大値よりも大きかった場合には、最初に決定した仮の最大値を次に出てきた光の強さの値に入れ替える。これを一回転やることで、最大値を決定する。


**ロボット紹介 [#o09cabc8]
***マシン全体 [#f93cd9e6]
#ref(DSCN0470.JPG)
#ref(DSCN0471.JPG)
-色々搭載したらこんなサイズになった。どのチームよりもでかい自信がある。
-何よりカッコよい!!
***弾送り機構 [#bc80ddbe]
#ref(DSCN0459.JPG)
-箱の間にシャフトを噛ませた。
#ref(DSCN0467.JPG)

**コース紹介 [#eea4ff0f]


**プログラミング紹介 [#oa6e8a27]


-逃げる側のプログラミング(ライントレース)


 #define right OnFwd(OUT_A);Wait(search_time);Off(OUT_A);    //右に曲がる動きを定義
 #define left OnRev(OUT_A);Wait(search_time);Off(OUT_A);   //左に曲がる動きを定義
 #define search_time 2           //左右に首を振る時間を0.02秒と定義
 #define THRESHOLD 45            //閾値を45と定義
 
 task_main()
 {
 	SetSensor(SENSOR_1,SENSOR_LIGHT);   //センサー1を光センサーと宣言
 	SetSensor(SENSOR_3,SENSOR_LIGHT);   //センサー2を光センサーと宣言
  	while(true)
 		{
 			if(SENSOR_1<THRESHOLD)   //センサー1の値が閾値より小さい、すなわち黒線上の場合…↓
 				{
 					right;   //右に曲がる
 					until(SNESOR_1>THRESHOLD)  //センサー1が閾値より大きい、すなわち黒線外になったら…↓
 						{
 							left;   //左に曲がる
 						}
 					until(SNESOR_1>THRESHOLD);  //センサー1が閾値より大きい、すなわち黒線外になったら…↓
 					left;   //左に曲がる
 				}
 		}        //これを繰り返す。
 }

-追いかける側のプログラミング


**感想 [#s055577b]


**コメントをお願いします [#ad8dc4f7]
- まだ途中みたいなので、またあとで見ます -- [[FI]] &new{2011-02-08 (火) 01:31:17};

#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS