- 履歴一覧
- ソース を表示
- 2005/A5/学習ノート Marbled Rockfish/ラインをトレースするプログラム『鬼ごっこ』 は削除されています。
- 追加された行はこの色です。
- 削除された行はこの色です。
***[[学習ノート Marbled Rockfish>2005/A5/学習ノート Marbled Rockfish]] [#p6425e03]
***課題3:ラインをトレースするロボット[[課題3右>2005/A5/課題3右]] [#s9f82292]
*ラインをトレースするプログラム『鬼ごっこ』 [#ua688a78]
作成者:Marbled Rockfish
**ラインをトレースしながら前進し(追いかけ)、前後のタッチセンサーにぶつかったら(捕まえたら)反転し、またトレースしながら前進するプログラムです。 [#he7f897c]
#define go_straight OnFwd(OUT_A+OUT_C); //前進
#define turn_right SetPower(OUT_C,6);OnFwd(OUT_A);OnRev(OUT_C); //モーターパワーC=6,右旋回
#define turn_left SetPower(OUT_A,6);OnFwd(OUT_C);OnRev(OUT_A); //モーターパワーA=6,左旋回
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT); //センサー1:光センサー
SetSensor(SENSOR_2, SENSOR_TOUCH); //センサー2:タッチセンサー
SetSensor(SENSOR_3, SENSOR_LIGHT); //センサー3:光センサー
while (true)
{
if (SENSOR_2>=1)
{ //センサー2がONなら
{ //センサー2がONなら
Off(OUT_A+OUT_C);Wait(100); //1秒停止
turn_right;Wait(65); //180°右旋回
}
if (SENSOR_1<40)
{turn_left;} //センサー1が黒なら左旋回
if (SENSOR_3<40)
{turn_right;} //センサー3が黒なら右旋回
if ((SENSOR_1>40)&&(SENSOR_3>40))
{go_straight;} //センサー1,3が白なら前進
if ((SENSOR_1<40)&&(SENSOR_3<40))
{ //センサー1,3が黒なら
Off(OUT_A+OUT_C);Wait(100); //1秒停止
go_straight;Wait(15); //前進
}
}
}
''反省''
-普通にラインをトレースするだけではつまらないので、前後にタッチセンサーを付けて触れると反転して進むようにしました。
-コースのメインイメージは教習所で、クランクや一旦停止、縦列駐車(のつもり)を入れ、さらに松本をイメージして道幅を狭くし、難易度を上げました。
-センサーの取り付け位置は、本体の回転軸に近い方がいいと思いましたが、逆に誤作動するのである程度距離を置きました。(赤矢印)
-クランクが最大の難関で、センサー同士を離し、低速で進めるとうまくいきますが、道幅が狭いためセンサーを近づけるわけにもいかず、遅くては話になりません。これを克服するため旋回する時に、旋回する側のモーターのトルクを6に落とし、位置がずれるのを防ぎ、旋回速度を上げました。
#ref(robo3.JPG);
#comment