2005/A1

壁伝いロボ

051125_1602~0001.jpg

 作成者 Harada (コンパス 今井)

机の脚に沿って進むロボットのプログラム 

//制作 harada
#define back    20 	//転回時に後退する時間
#define rotate  60	//転回時の回転時間

task main ()
{
        SetSensor(SENSOR_1, SENSOR_TOUCH);	//センサ種別指定(左タッチセンサ)
        SetSensor(SENSOR_3, SENSOR_TOUCH);	//センサ種別指定(右タッチセンサ)

        OnFwd(OUT_A+OUT_C);			//壁に接触するまで前進
        until(SENSOR_1 == 1);

        while(true)				//無限ループ
       {
       if(SENSOR_3 == 0)			
                         {
                          if(SENSOR_1 == 1)		//壁から離れたとき
                                     {
                                      OnFwd(OUT_A+OUT_C);				
                                      until ((SENSOR_1 == 0) || (SENSOR_3 == 1)) ;		
                                     }
                                     
                          else			//壁に当たったとき
                                     {
                                      OnFwd (OUT_C);Float(OUT_A);
                                      until ((SENSOR_1 == 1) || (SENSOR_3 == 1)) ;
                                     }
                         }
       else					//足の部分など、回転するとき
                     {
                      OnRev (OUT_A+OUT_C); Wait(back);		
                      Off (OUT_A+OUT_C);
                      OnFwd (OUT_A); OnRev (OUT_C); Wait(rotate);
                     }
                     
        }
}

感想(解説)

バンパーを高い所と低い所の両方に対応できるように二重にして、スムーズに進むようにローラーも付けました。プログラムでは、常に壁に当たっているようにしたいため、二つにタッチセンサーを使うことにより、全く当たってない時、片方当たっているとき、両方当たっている時とで条件を設定しました。壁に引っかかったり、曲がりすぎてしまったりして苦労しました。



添付ファイル: file051125_1602~0001.jpg 288件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-02-16 (木) 12:14:01