目次
#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


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