***[[学習ノート Hypodytes rubripinnis>2005/A5/学習ノート Hypodytes rubripinnis]] [#a6156c61] ***課題3:光を追いかけるプログラム[[課題4右>2005/A5/課題4右]] [#k8e692f9] *光を追いかけるプログラム &size(30){&color(red){'''movie'''''↓''};}; [#u005afe1] 作成者:Hypodytes rubripinnis 最終更新日:12/12 #define go_straight OnFwd(OUT_A+OUT_C); //直進 #define turn_right OnFwd(OUT_A);OnRev(OUT_C); //右旋回 #define turn_left OnFwd(OUT_C);OnRev(OUT_A); //左旋回 #define minus 15 //マイナス int max; //maxを定義 int time; //timeを定義 task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー2:光センサー max=SENSOR_2; //センサー2をmaxに指定 time=Timer(0); //timeをタイマー0に指定 ClearTimer(0); //タイマー0をリセット while(Timer(0)<=14) //タイマー0が14以下の時 { turn_right //右旋回 if(SENSOR_2>max) //センサー2が最大値以上なら { ClearTimer(1); //タイマー1をリセット max=SENSOR_2 ; //センサー2を最大値に指定 } else //そうでなければ { max=max; //maxをそのまま time=Timer(1); //timeをタイマー1に指定 } } ClearTimer(1); //タイマー1をリセット while(Timer(1)<=time) //timeがタイマー以下の時 {turn_left} //左旋回 while(true) { if(SENSOR_2>=max-minus) //センサー2が最大値-minus以上の時 {go_straight} //直進 if(SENSOR_2<max-minus) //センサー2が最大値-minus未満の時 { turn_right //右旋回 ClearTimer(2); //タイマー2をリセット until((SENSOR_2>=max-minus)||(Timer(2)==5)); //センサー2が最大値-minus以上、またはタイマー2が5まで } if(SENSOR_2<max-minus) //まだセンサー2が最大値-minus未満の時 { turn_left //左旋回 until(SENSOR_2>=max-minus); //センサー2が最大値-minus以上まで } } } ''仕組み&工夫したところ'' -まず本体については、センサーの角度を斜めにして感度を良くしたところです(赤矢印)。 -プログラムでこだわったのは、決められた値以上の光に向かって行くのではなく、最大値を探し出し、その光源に向かって行くようにしたところです。 -難しかったところは、1周して光の最大値を見つけ出すところでした。最終的には簡単でシンプルなプログラムでスムーズに見つけ出すことが出来るようになりました。 -光の方向に向かって軌道修正する時は、きっちり最大値を入力してしまうとうまく動かないので、minusを引くことで、数値に幅を持たせました。 -光源の方向に旋回する時は、右に少し旋回して、その後左に旋回するようにすると効率よく光源を見つけることが出来ました。 &size(30){☆[['''movie1''':http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&pcmd=open&file=robo5.wmv&refer=2005%2FA5%2F%B3%D8%BD%AC%A5%CE%A1%BC%A5%C8%20Hypodytes%20rubripinnis%2F%B8%F7%A4%F2%C4%C9%A4%A4%A4%AB%A4%B1%A4%EB%A5%ED%A5%DC%A5%C3%A5%C8]]}; &size(30){☆[['''movie2''':http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&pcmd=open&file=robo5-2.wmv&refer=2005%2FA5%2F%B3%D8%BD%AC%A5%CE%A1%BC%A5%C8%20Hypodytes%20rubripinnis%2F%B8%F7%A4%F2%C4%C9%A4%A4%A4%AB%A4%B1%A4%EB%A5%ED%A5%DC%A5%C3%A5%C8]]}; &ref(2005/A5/学習ノート Hypodytes rubripinnis/光を追いかけるロボット/robo5-2.JPG,30%); &ref(2005/A5/学習ノート Hypodytes rubripinnis/光を追いかけるロボット/robo5.JPG,30%); #comment