2016a/Member

はじめに

■課題

ロボット2台を用いて枠Cと枠Dに置いてある紙コップを交互に重ね合わせ、地点Qの円内に置くことが正規の課題であった。

■当初の計画

これを達成するため、当初は1台に対して2機の本体を設置して紙コップを重ねる役割を充て、残りの1台には紙コップを重ねる際に壁として機能する役割を充てる計画であった。

そこで最初に作成したロボットが以下のようなものである。

ロボット画像1

画像の赤枠で囲った部分に紙コップを掴む機構を取り付け、それを黄枠で囲った歯車で機構ごと鉛直方向に持ち上げたかった。

しかしながら、実際に作動させてみると重心の関係上歯車で機構を上下させることが困難であると分かり、構造とプログラムを全面的に見直す必要があるという結論に至った。

■「3点を狙う」計画

課題としては上に書いた通りであったが、発表中の他チームの完成具合を見ているとロボットを2台使っているチームは僅かであり、また紙コップを重ねられているチームはほぼ皆無であったことから、急遽僕らのチームも「枠Dから紙コップを取って地点Qの円内に置いて3点を取る」ことだけを目標にしたロボットに変更した。

■最終的に仕上がったロボット

本体下部にライントレース用のセンサーを取り付け、さらに前面上部に超音波センサーを取り付けて紙コップを認識できる仕組みとした。

ロボット画像2

プログラミング

#define BLACK 35
#define strait(p,t) OnFwd(OUT_AB,p);Wait(t);Off(OUT_AB);
#define roal RotateMotor(OUT_A,-60,360);RotateMotor(OUT_B,40,300);Off(OUT_AB);
#define turn_migi OnFwd(OUT_B,40);OnRev(OUT_A,20);
#define turn_hidari OnFwd(OUT_A,40);OnRev(OUT_B,20);
#define blecfast Off(OUT_AB);PlaySound(SOUND_UP);Wait(1000);
sub trace() 
{
 SetSensorLight(S4);
   int nOnline=0;
   int k=0;

      while(k==0)
 {
         while (nOnline < 200)  
  {
            if(SENSOR_4 < BLACK)
   {
               turn_migi;
               nOnline++;
   }
            else if (SENSOR_4 < BLACK+15)
   {
               turn_hidari;
               nOnline=0;
   }
            Wait(1);
  }
         
         k++;
         nOnline=0;
 }
}

sub shaja()
{
 roal;
 strait(40,500);
  trace();
   OnFwd(OUT_A,40);
   OnFwd(OUT_B,20);
   Wait(350);
  trace();
}

task main()
{
 shaja(); 
}
#define BLACK  34
#define WHITE 70
#define LEFT OnFwd(OUT_B,60);OnRev(OUT_C,36);
#define RIGHT OnFwd(OUT_C,60);OnRev(OUT_B,36);
#define nMAX 230
#define short_break Off(OUT_BC);Wait(1000);
#define STEP 1
#define GO OnFwd(OUT_BC,40);Wait(400);Off(OUT_BC);
#define GO2 OnFwd(OUT_BC,40);Wait(500);
#define LEFT2 OnFwd(OUT_B,60);OnRev(OUT_C,20);Wait(500); 
sub normal ()
{ 
  SetSensorLight(S2);
  int nOnline=0;
  int k=0;

  while(k==0){
   while(nOnline < nMAX){
   if (SENSOR_2<BLACK) {
     RIGHT;
     nOnline++;
    } else 
   if (SENSOR_2<WHITE) {
     LEFT;
     nOnline=0;
   }
   Wait(STEP);
  }
  short_break;
  k++;
  nOnline=0;
   }
  
}

sub normal2()
{ 
  SetSensorLight(S2);
  int nOnline=0;
  int k=0;

  while(k==0){
   while(nOnline < nMAX){
   if (SENSOR_2<BLACK) {
     LEFT;
   nOnline++;
    } else 
   if (SENSOR_2<WHITE) {
     RIGHT;
     nOnline=0;
   }
   Wait(STEP);
  }
  short_break;
  k++;
  nOnline=0;
   }
  
}


task main()
{
 normal2();
 LEFT2;
 normal();
 LEFT2;
 normal();
 GO2;
}

反省点

上に書いた通り発表ギリギリで計画を変更してしまった為、プログラミングを全てmiyakeiに任せてしまったのが今回のチームワークとしての反省点である。

またライントレースでAからDまで行く間の急カーブ(AとPの間)でラインから離脱してまった点が最も悔やまれる。

これはセンサーで明るさを計測した時の確認不足や、モーターの駆動率を上げ過ぎたことに起因すると考えられる。動作時間が長くなるのを躊躇せず、センサーが1回1回確実に認識することが出来るよう駆動率をもっと下げるべきであった。そうすることでAからDまでは進ませられ、また紙コップを掴む機構も作動させる段階まで持って行けたように思う。


添付ファイル: fileNXT78_00002.JPG 82件 [詳細] fileNXT78_00001.JPG 90件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-08-08 (月) 17:56:44