- 追加された行はこの色です。
- 削除された行はこの色です。
[[2007a/A9/ロボコン]]
#contents
*ライントレースについて [#w8265ecb]
方法としては、以下の通りである。&br;
**方法(それぞれ書いて利点欠点などを書く・・・っと。 [#c520ef10]
**方法 [#c520ef10]
A,2つのセンサーでトレース(黒、黒)&br;
B,2つのセンサーでトレース(白、白)&br;
C,1つのセンサーでトレース(黒)&br;
-''以上から考えた結果、 のセンサー配置およびトレースを選びました。''
-''1つでトレース、一つで箱感知、一つで交差点を認識させることにしました。''
**参考までに。それぞれのプログラム(動作保障はいたしませんが。) [#x5923bcf]
-''Bのプログラム''&br;
[[課題2のページ>2007a/A9/課題2左]]をご覧下さい。
-''Cのプログラム''&br;
#ref(ライントレース.JPG)&br;
#define MOTOR OUT_A+OUT_C
#define THRESHOLD 40 //閾値
int search_dir;
sub turn_left(){ OnRev(OUT_A);OnFwd(OUT_C); }
sub turn_right(){ OnFwd(OUT_A);OnRev(OUT_C); }
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_LIGHT);OnFwd(MOTOR); //最初の動きとして直進させる。
while(true){
if(SENSOR_1<THRESHOLD) //線を見失ったら
{
if(search_dir==0){ //前回の捜索方向が0(左から捜索していた)
turn_right(); Wait(5); //右側から捜索開始
if(SENSOR_1<THRESHOLD){ //線をみつけたのなら直進
OnFwd(MOTOR);
search_dir=1; //右から捜索していたことを記憶
}else{ //見付からないのなら反対側を探す
turn_left(); Wait(10);
if(SENSOR_1<THRESHOLD){ //見付けたのなら直進
OnFwd(MOTOR);
search_dir=0; //左側の捜索で線を見つけたことを記憶
}else{ //どちらも見付からないのなら1秒前進
OnFwd(MOTOR);Wait(100);
search_dir=0; //線を見失ったことになるので、とりあえず前進させる。
}
}
}
if(search_dir==1){ //上と同様。
turn_left(); Wait(5);
if(SENSOR_1<THRESHOLD){
OnFwd(MOTOR);
search_dir=0;
}else{
turn_right(); Wait(10);
if(SENSOR_1<THRESHOLD){
OnFwd(MOTOR);
search_dir=1;
}else{
OnFwd(MOTOR); Wait(100);
search_dir=0;
}
}
}
}
}
Off(OUT_A+OUT_C);
}
**コメントをどうぞ。 [#td6ee9cd]
#comment