ロボティクス入門ゼミ

機体

  • この機体は、左右にある缶を真ん中に持ってきて、一台目が取れるようにするという目的で製作しました。アームを機体の前後に配置して、それぞれが左用、右用となるように設計しました。さらに、これらのアームがばらばらに動かないように、ギアが連動して回るようになっています。
    D1000023.JPG
    D1000024.JPG

プログラム

  • 下に動き方を簡単にまとめた図があるので見てください。(番号に連動して説明してあります。)
    int t;//変数tを定める
    
    sub line_straight()				//ライントレースのサブルーチンです。
    {
       PlaySound(SOUND_DOUBLE_BEEP);	//確認のために音を鳴らします。
       OnRev(OUT_A+OUT_C)			;//ライトセンサーが線から出るまで少し直進します。 
       Wait(50);
       OnRev(OUT_A+OUT_C);			 //両方のライトセンサーが線にかかるまで直進します。
       while(SENSOR_1>40||SENSOR_2>45)	 //ライントレースをしている間の行動です。
       {
          if(SENSOR_1>40&&SENSOR_2>45)
          {
             OnRev(OUT_A+OUT_C);
          }
          if(SENSOR_1<40&&SENSOR_2>45)
          {
             OnRev(OUT_C);Off(OUT_A);
          } 
          if(SENSOR_1>40&&SENSOR_2<45)
          {
             OnRev(OUT_A);Off(OUT_C);
          }
       }  
       Off(OUT_A+OUT_C);				//停止します。 
       Wait(50);					//少し止まってます。
    }
    
    sub line_back()					//バックのサブルーチンです。
    {
       PlaySound(SOUND_DOUBLE_BEEP) ;	//確認のために音を鳴らします。
       OnFwd(OUT_A+OUT_C);			//両方のライトセンサーが線にかかるまで進みます。 
       until(SENSOR_1>40&&SENSOR_2>45);
       Off(OUT_A+OUT_C);				//停止します。
       Wait(50);					//少し止ってます。
    }
    
    #define turn_right(t)				//旋回するマクロです。(見易さのために改行してあります。) 
    PlaySound(SOUND_UP);			//確認のための音を鳴らします。
    OnRev(OUT_A+OUT_C);Wait(50);		//少し前進します。
    OnFwd(OUT_C);OnRev(OUT_A);Wait(t);		//右に回ります。
    Off(OUT_A+OUT_C);Wait(50);			//止まります。
    
    task main()					//メインプログラムです。 
    {
       SetPower(OUT_A,6);				//パワーを調整します。
       SetPower(OUT_C,10);
       SetSensor (SENSOR_1, SENSOR_LIGHT);	//センサーをセットします。
       SetSensor (SENSOR_3, SENSOR_TOUCH); 
       SetSensor (SENSOR_2, SENSOR_LIGHT); 
       PlaySound(SOUND_LOW_BEEP) ;		//確認のための音を鳴らします。
    //---------------(1)スタート〜待機するまで----------------
       OnRev(OUT_A+OUT_C);			//.薀ぅ肇札鵐機爾線にかかるまで前進します。 
       until(SENSOR_1<40&&SENSOR_2<40); 
       Off(OUT_A+OUT_C);				//少し止まります。 
       Wait(50); 
       line_straight();				//▲薀ぅ鵐肇譟璽垢靴泙后
       turn_right(120);				//右に90度旋回します。 
       line_straight();				//ライントレースします。 
       line_straight();				//い發Π貪戰薀ぅ鵐肇譟璽垢靴泙后
       turn_right(140);				//右に90度旋回します。 
       OnFwd(OUT_A+OUT_C);			//ゥ丱奪します。 
       Wait(130); 
       Off(OUT_A+OUT_C);				//止まります。
       OnFwd(OUT_A);				//機体の向きを整えます。
       Wait(30);
       Off(OUT_A);					//しばらく静止します。
       Wait(3000);
    //-------------(2)壁側の缶を移動する場面--------------- 
       line_straight();				//.薀ぅ鵐肇譟璽垢鬚靴泙后
       line_straight();				//△發Π貪戰薀ぅ鵐肇譟璽垢靴泙后
       OnRev(OUT_B);				//アームを伸ばします。 
       Wait(500); 
       Off(OUT_B);
       OnRev(OUT_A+OUT_C);			//少し前進して、アームを壁際の缶に引っ掛けます。
       Wait(60); 
       Off(OUT_A+OUT_C);
       OnFwd(OUT_B);				//アームを戻します。
       Wait(450); 
       Off(OUT_B);
       OnFwd(OUT_C);				//機体ごと旋回して、さらに缶を真ん中に近づけます。
       OnRev(OUT_A); 
       Wait(180);
       OnFwd(OUT_A);				//機体の向きを直します。
       OnRev(OUT_C);
       Wait(90);
       Off(OUT_A+OUT_C);
       Wait(50);
       OnRev(OUT_B);				//アームを元に戻します。
       Wait(100);
       Off(OUT_B);
       line_back();					//ぅ丱奪します。
       OnFwd(OUT_B);				//アームの長さを調整します。(そのままだと障害物にぶつかるため)
       Wait(100);
       Off(OUT_B);   
       OnFwd(OUT_A+OUT_C);			//ゥ丱奪します。
       Wait(500); 
       Off(OUT_A+OUT_C);				//しばらく静止しています。
       Wait(8000);
    //----------------(3)最後の缶を移動させる場面------------- 
       line_straight();				//.薀ぅ鵐肇譟璽垢鬚靴泙后
       turn_right(240);				//180度回転します。
       OnRev(OUT_B);Wait(350);Off(OUT_B);	//アームを伸ばします。
       OnFwd(OUT_A+OUT_C);			//4未里△詈向に進みます。
       Wait(150);
       Off(OUT_A+OUT_C);
       OnFwd(OUT_B);				//ぅ◆璽爐鯡瓩靴憧未鮨燭鹵罎貌阿します。
       Wait(700);
       OnRev(OUT_B);				//アームの長さを調整します。
       Wait(350);
       line_straight();				//ゥ薀ぅ鵐肇譟璽垢鬚靴泙后
       OnRev(OUT_A+OUT_C);			//κ匹謀たるぎりぎりまで進みます。 
       Wait(300); 
       Off(OUT_A+OUT_C);				//止まります。
    }
  • (1)の場面
    robo.JPG
  • (2)の場面
    robo2.JPG
  • (3)の場面
    robo3.JPG

添付ファイル: filerobo3.JPG 208件 [詳細] filerobo2.JPG 186件 [詳細] filerobo.JPG 199件 [詳細] fileD1000024.JPG 195件 [詳細] fileD1000023.JPG 184件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-08-15 (火) 00:06:51