[[2015a/Member]]

*目次 [#k8cd6539]
#contents

*課題 [#z110d2b5]

今回の課題は半径1m以内にある空き缶を探して、25cmの距離からボールを転がし、その空き缶に当てるロボットを製作することです。

ただし25cm以内に空き缶がある場合には、30cmまで離れることが条件となります。


*ロボットについて [#gf73fa8d]

&ref(./1437370259375.jpg,100%);
&ref(./1437370269191.jpg,100%);

ロボットは課題2で使ったものを応用させました。

ショベルの部分に超音波センサーを取り付けたら、かなり重くなり動きが心配だったので
アーム周辺のパーツを取り除き軽量化させました。

また前回の問題点でもあった重量や大きさについても本体に使うパーツを減らして、
一回り小さくさせました。

*プログラムについて [#bb4d0e05]

 #define SPEED 50
 #define SPEED_SLOW 30
 #define down OnFwd(OUT_A,50);Wait(500);Off(OUT_A);Wait(300);
 #define up OnRev(OUT_A,60);Wait(500);Off(OUT_A);Wait(300);
 #define goal OnRev(OUT_BC,50);Wait(500);Off(OUT_BC);Wait(500);\
  up;OnFwd(OUT_BC,100);Wait(300);Off(OUT_BC);
 const float diameter=5.45;
 const float track=10.35;
 const float pi=3.1415;
 void fwdDist(float d)    //距離d兪或
 {
  long angle;
  angle=d/(diameter*pi)*360.0;
  RotateMotorEx(OUT_BC,SPEED_SLOW,angle,0,true,true);
 }
 void turnAng(long ang)   //角度ang度の時計回り旋回
 {
  long angle;
  angle=track/diameter*ang;
  RotateMotorEx(OUT_BC,SPEED_SLOW,angle,100,true,true);
 }
 int searchDirection(long ang)  //現在の方向を中心にang度の範囲で探し障害物までの距離を返す
 {
  long angle,tacho_min=0,
  int d_min;
  d_min=300;  //仮の最小値
  angle=(track/diameter)*ang;   //旋回角度からタイヤの回転を計算
  turnAng(ang/2);                  //指定された角度の半分を旋回
  ResetTachoCount(OUT_BC);         //角度計測をリセット
  OnFwdSync(OUT_BC,SPEED_SLOW,-100);  //反時計回り旋回
  while(MotorTachoCount(OUT_B)<=angle){
     if(SensorUS(S1)<d_min){ //それまでの最小値より低ければ
      d_min=SensorUS(S1);  //仮の最小値を更新
       tacho_min=MotorTachoCount(OUT_B);  //最小値を記録したした位置を記憶しておく
       tacho_min=MotorTachoCount(OUT_B);  //最小値を記録した位置を記憶しておく
     }
   }
  OnFwdSyncEx(OUT_BC,SPEED_SLOW,100,RESET_NONE);
  until(MotorTachoCount(OUT_B)<=tacho_min||SensorUS(S1)<=d_min);
  Wait(14);  //微調整
  Off(OUT_BC);Wait(500);
  return d_min; //最小値を返す
 }
 task main()
 {
  repeat(2){
  SetSensorLowspeed(S1);
  int d=searchDirection(360);
  if(d>10){
     fwdDist(d-10.0);
  goal;
      }
    }
 }

プログラムはもらったプリントをベースに組み立てました。

一回の索敵では正確に目標を探せなかったので二回行うことで精密性を高めました。

さらにロボットの動きが大振りにならないよう、スピードを抑えました。

ゴールのプログラムは前回の課題でも用いたものですが、ショベルに超音波センサーを付けた結果、
アームを下ろす時に勢いが強かったのでパワーを修正しました。

*反省点とまとめ [#de3d4645]

次のロボコンの準備をしなくてはいけなかったのでこの課題に取り組んでいられる時間が少なく、
ロボットを一から組み立てていくことが出来ませんでした。

しかしできる限りの改良を加えて、空き缶にボールをぶつけることが出来たのは、
限られた時間の中でよくできたと思います。

今回はあまりチームで集まれず、協力しづらかったので次のロボコンは
チームで連携して挑みたいです。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS