- 追加された行はこの色です。
- 削除された行はこの色です。
目次
#contents
*前輪操舵ロボットとは [#e5e871d2]
*前輪操舵とは [#e5e871d2]
一般に,車は前輪の向きを変えることで曲がっています.このように,前輪の向きを変えて曲がる方法を「前輪操舵」といいます.この方法を取り入れたのが,今回制作した前輪操舵ロボットです.
*なぜ前輪操舵か [#ra8f921a]
ライントレースロボットを制作していて,より早く,正確にトレースするためには本体の構造をどうすれば良いか?を考えていたところ,ロボコンの「マイコンカーラリー」という競技を見つけた.これは,黒地に白線の書かれたコースを光センサーを積んだロボットが高速で走り,そのタイムを競うという競技である.
ライントレースロボットを制作していて,より速く,正確にトレースするためには本体の構造をどうすれば良いか?を考えていたところ,ロボコンの「マイコンカーラリー」という競技を見つけました.これは,黒地に白線の書かれたコースを光センサーを積んだロボットが高速で走り,そのタイムを競うという競技です.つまり,「高速ライントレースロボット」と考えてよいと思います.その競技では,全てのロボットが前輪で舵をとること,つまり前輪操舵によって曲がっていました.そこで,この課題でも前輪操舵を取り入れることで速く正確にライントレースできるのではないか?と考え,前輪操舵ロボットを制作しました.
*ロボット紹介 [#x1d1af69]
**外観 [#e0f986b4]
***全体 [#ybb02016]
**全体 [#z91b848e]
#ref(DVC00039.JPG)
#ref(DVC00041.JPG)
**特徴 [#df558096]
***操舵部分 [#qf6d78cf]
#ref(DVC00036.JPG)
#ref(DVC00040.JPG)
**工夫した点 [#w51ac750]
#ref(DVC00035.JPG)
#ref(DVC00023.JPG)
#ref(DVC00024.JPG)
**苦労した点 [#dcce9249]
**課題点 [#ce1cea7d]
*プログラム [#y4b12430]
#define THRESHOLD 40
#define RUD_TIME 50
#define THRESHOLD 40 //閾値
#define RUD_TIME 50 //操舵時間
sub linetreace()
sub linetreace() //ライントレースのプログラム
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ1、センサ3は光センサ
SetSensor(SENSOR_3,SENSOR_LIGHT);
OnFwd(OUT_A);
until((SENSOR_1<THRESHOLD)||(SENSOR_3<THRESHOLD))
if ((SENSOR_1<THRESHOLD)&&(SENSOR_3<THRESHOLD))
{
Off(OUT_A);
Wait(30);
OnFwd(OUT_A);
}
if ((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD))
{
Off(OUT_A);
OnFwd(OUT_C);
Wait(RUD_TIME);
Off(OUT_C);
OnFwd(OUT_A);
until((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD));
if ((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD))
{
OnRev(OUT_C);
Wait(RUD_TIME);
Off(OUT_C);
OnFwd(OUT_A);
}
}
if ((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD))
{
Off(OUT_A);
OnRev(OUT_C);
Wait(RUD_TIME);
Off(OUT_C);
OnFwd(OUT_A);
until((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD));
if ((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD))
{
OnFwd(OUT_C);
Wait(RUD_TIME);
Off(OUT_C);
OnFwd(OUT_A);
}
}
}
task main ()
{
SetSensor(SENSOR_2,SENSOR_TOUCH);
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサ2はタッチセンサ
while(true)
{
if (SENSOR_2 == 0)
if (SENSOR_2 == 0) //センサ2がOFFのとき
{
linetreace();
linetreace(); //ライントレース
} else {
OnRev(OUT_A+OUT_C);
Wait(50);
Off(OUT_A+OUT_C);
Wait(300);
linetreace();
}
}
}
-ロボットの制作は興味本位から順調に進みましたが、プログラムをどうして良いか全く解らず、他チームに手伝ってもらうこととなってしまいました。そのため、プログラムの詳しい説明は書けません。
*全体を通して [#y940295d]
コメントをどうぞ
#comment