[[2004/C5/ロボコンプログラム]]
 
 本当はタッチセンサー・光センサーを搭載していたのですが、本番直前まで、うまく機能しなかったため、センサーを外し、秒数のみで勝負することにしました。
 本当に急だったため、センサー搭載型のプログラムは残っていません。
 秒単位で細かく動作させるため、subパーツを細かくして時間調整をやりやすくしています。

 本来REPEATの後は、箱を光で感知したら、下半身に停止を通信し、クレーンを下げ、箱を捕らえたということをタッチで認識したら、通信で下半身が箱置場に動くように組んでいました。

  /*udeDX*/
 #define RUN_TIME 500//トレースする時間(単位 1/10 秒)
 
sub tukami1()  //箱を掴む前に手首の状態を整えるプログラム
  {
   Off(OUT_A+OUT_C);
   SetPower(OUT_A,6);
   SetPower(OUT_C,3);
   OnRev(OUT_C);
  }

 sub tukami2() //箱を掴むプログラム
  {
  Off(OUT_A+OUT_C);
  SetPower(OUT_A,6);
  SetPower(OUT_C,4);
  OnRev(OUT_C);
  }

 sub motiage()  //最初に腕の持ち上げを行うプログラム
 {
  Off(OUT_A+OUT_C);
  SetPower(OUT_A,4);
  SetPower(OUT_C,3);
  OnFwd(OUT_A);
 }

 sub motiage4()  //箱を掴んでから重力で下がらないために、引き上げるプログラム
 {
  Off(OUT_A+OUT_C);
  SetPower(OUT_A,0);
  SetPower(OUT_C,0);
  OnFwd(OUT_A);OnRev(OUT_C);
  }
 
 sub motiage3()   //箱を掴んでから引き上げる時のプログラム       
  {
  Off(OUT_A+OUT_C);
  SetPower(OUT_A,6);
  SetPower(OUT_C,2);
  OnFwd(OUT_A);OnRev(OUT_C);
  }

 sub hazusi()    //箱を置く・手のスタート時の状態を維持するプログラム
  {
  Off(OUT_A+OUT_C);
  SetPower(OUT_A,6);
  SetPower(OUT_C,7);
  
  OnFwd(OUT_C);
  }
 
  sub motisage() //腕を下げるプログラム
 {
  Off(OUT_A+OUT_C);
  SetPower(OUT_A,6);
  SetPower(OUT_C,6);
  OnRev(OUT_A);
 }
  
  
  task main()
 {
  SetSensor(SENSOR_1,SENSOR_TOUCH);
  SetSensor(SENSOR_2,SENSOR_LIGHT);//箱掴み確認用
 
  hazusi();Wait(608); //スタート時に手が下がらないように押えておきます
 
  motiage();//腕を持ち上げるように受信
  Wait(310); 
  Off(OUT_A+OUT_C); //腕手、上方で停止  
  Wait(190);  //スタンバイ完了、
  
  repeat(10) //着地後の行動指令です
  {  
     motisage();Wait(100);             //腕を下げる
     tukami2();Wait(100);               //手をげる
     motiage3();Wait(180);             //腕を持ち上げる
          
     Off(OUT_A+OUT_C);Wait(700); //箱置場まで待機
     hazusi();Wait(208);                   //箱を置く
     
     Off(OUT_A+OUT_C);Wait(558);
     
     motisage();Wait(200);               //腕を下げて着地直後の状態に戻す
     Off(OUT_A+OUT_C);Wait(50);
     
     hazusi();Wait(200);                    //地面に引っかからないように手を固定
     motiage();Wait(330);                 //腕を持ち上げるように受信
     Off(OUT_A+OUT_C);Wait(190);  //腕手、上方で停止  
      //再スタンバイ完了
  } 
 }



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