2011a

2011a/A6/課題3右?

課題3の内容

課題2のコース上にランダムに置かれたテニスボールをロータリーのランプに一人は蹴って、もう一方は本体ごと運ぶ

目次

メンバー紹介

Ku☆ra 様&mika

コース

コースについては課題2の際に使用したものなので

そちらを参考にしてください。

ロボット

名前:HD650     

タッチセンサー部分

タッチ.JPG

実際にテニスボールが当たるところよりも結構上方に設置。

テニスボールとタッチセンサーの間には仲介として可動式の

板をはさんだ。てこの原理もあって軽く触れただけで

センサーが反応するようになっている。

光センサー部分

光ー進.JPG

本体推進部よりもやや前方、アームに近い位置に設置。

今回の光センサーの目的はライントレースではなく

テニスボールを見つけることなのでできるだけ

アームがライン上にあるようにとこの位置にした。

光ーランプ.JPG

シンプルに本体に設置。先生の助言通り

センサーの周りを覆って余計な光を遮断するようにした。

遮断するしないの違いは思ってたよりも大きかった。

土台

全体ー上.JPG全体ー横.JPG 土台は前回の課題の推進部を利用。

タイヤの大きさが前後で違うがこれはこれは

アームを本体側に傾けるためである。

アームが可動式でありその影響と電池の重さで本体が

後方に倒れることがあったので後輪の後ろに

さらに補助輪を二つ追加した。

アーム

アーム.JPG

アームは本体と分かれておりアーム部全体が

動く仕組みになっている(ちなみにタッチセンサーも)。

本体内部に設置したモーターで前後に可動するようになっている。

後ろに引いた時に本体にぶつかりアームが閉じボールをつか無

前に出した時も同様にぶつかって放す仕組みになっている。

しかしながら、完璧にはアームは開かない。

タイヤによる本体の傾きは完璧に開かせるためである

アームー開.JPG アームー閉.JPG

またこのアームはアームが開いてボールを放す位置よりも

前にアーム部を押し出せるようになっている。

これはボールをける際に本体の動作だけでは力が不十分で

それを補うためのシリンダーの役割も担っているためである。

プログラミング

Ku☆ra 様

#define THRESHOLD 40 int L_MAX = 0; // ランプ用の光センサーの最高値 int T_MAX = 0; // 計測時間

task main()
{
SetSensor(SENSOR_1, SENSOR_TOUCH);
SetSensor(SENSOR_2, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
repeat(3){      //繰り返し3個分
 while(SENSOR_1 == 0)  //テニスボールを発見するまで
       {    
      if (SENSOR_3 > THRESHOLD)
        {OnFwd(OUT_C);Off(OUT_A);}
      else if (SENSOR_3 < THRESHOLD)   
        {OnFwd(OUT_A);Off(OUT_C);}
       }
         Off(OUT_A+OUT_C);   //発見
         OnRev(OUT_B);Wait(60);  //つかむ
         Off(OUT_B);
	ClearTimer(0); // ランプ検索開始
	while(FastTimer(0) < 450) //360°回転する
             {
           OnRev(OUT_A);OnFwd(OUT_C);
           if(SENSOR_2 > L_MAX)
             {L_MAX = SENSOR_2;T_MAX = FastTimer(0);}  //最大値を探す
             }
       OnFwd(OUT_A);OnRev(OUT_C);Wait(450-T_MAX); // ランプの方に向ける
       Off(OUT_A+OUT_C);
       OnFwd(OUT_B);Wait(60); // ボールを放す
       Off(OUT_B); 
       OnRev(OUT_A+OUT_C);Wait(60); // バックして助走
       Off(OUT_A+OUT_C);
       OnRev(OUT_B);Wait(20); // アームを引っ込める
       Off(OUT_B);
       OnFwd(OUT_A+OUT_C);Wait(90); // 前進突撃
       OnFwd(OUT_B);Wait(40); // アームでどつく
       Off(OUT_A+OUT_B+OUT_C);
       OnRev(OUT_A+OUT_C);Wait(130); 
       Off(OUT_A+OUT_C);
       OnRev(OUT_B);Wait(20);// アームを戻す
       Off(OUT_B);
}
Off(OUT_A+OUT_C);  //三回終了後停止
}

mika

#define THRESHOLD 40 // 閾値
int T=490;   //回転時間
int lmax=0;  //光センサーの最高値
int tmax=0;  //計測時間
task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);//センサー1はタッチセンサーである
SetSensor(SENSOR_2,SENSOR_LIGHT);//センサー2は光センサーである
SetSensor(SENSOR_3,SENSOR_LIGHT);//センサー3は光センサーである
repeat(6){
     while(SENSOR_1 == 0)  
    {if (SENSOR_3 > THRESHOLD)
     {OnFwd(OUT_C);Off(OUT_A);}
    else if (SENSOR_3 < THRESHOLD)   
     {OnFwd(OUT_A);Off(OUT_C);}
     }
      Off(OUT_A+OUT_C); // テニスボール見っけ!!
      OnRev(OUT_B);Wait(60);
       Off(OUT_B);
	 ClearTimer(0); // ランプ見つけるの始める。
	 while(FastTimer(0) < 490) //360°回転
          {
        OnRev(OUT_A);OnFwd(OUT_C);
        if(SENSOR_2 >lmax) {lmax = SENSOR_2;tmax = FastTimer(0);}
          }
        OnFwd(OUT_A);OnRev(OUT_C);Wait(490-tmax); // ランプの方に向く
        OnFwd(OUT_C+OUT_A); // 前進
        until (SENSOR_2 > 50);
          Off(OUT_A+OUT_C);
        OnFwd(OUT_B);Wait(60);//ボールを放す
          Off(OUT_B);
        OnRev(OUT_A+OUT_C);//バックする(黒い線から脱出)
          
        until (SENSOR_3 < THRESHOLD );//元のボールのあった線に到着
         
        Wait(20);//誤差を修正する
        Off(OUT_A+OUT_C);             
         }                             
      Off(OUT_A+OUT_C);
}

感想&反省

Ku☆ra 様

本体設計に関しては使えるモーターの数が限られているなどあってかなり思案した。 本体の推進力として最低二つ。よって残り一個のモーターで 「ボールをつかむ」「ボールを蹴る」の二つの動作をしなければならない。 いくつか候補はあったが結局今回のモデルを採用した。 プログラミングに関しては、初めはどういうプログラミングにすればよいか分からず非常に困惑した。考え方は非常に納得のいくものなのだが、それを行うにはどうやって プログラミングを書けばよいのかまったく分からなかった。過去の授業や先生の助言などを参考にして完成させた。出来上がったプログラムを見ると案外簡単で少々がっかりした。

mika

パートナーにリピートを使うといいよと教えてもらって、やってみるとプログラムの量がめっちゃ小さくなってびっくりした。でもすっきりした感じになったのはとてもよかった。私はテニスボールをつかんでもっていく方だったけど、ロータリーまではこんで、ロータリーとどう感知するか、ロータリーの真ん中においたあとロボットがどう離れていくかのプログラミングがむずかしかった。リピート機能の大切さと一つ一つ動作設定していくことの大切さがわかった。

コメントどーぞ



添付ファイル: file全体ー上.JPG 194件 [詳細] file全体ー横.JPG 181件 [詳細] file光ー進.JPG 165件 [詳細] file光ーランプ.JPG 187件 [詳細] fileタッチ.JPG 220件 [詳細] fileアームー閉.JPG 178件 [詳細] fileアームー開.JPG 171件 [詳細] fileアーム.JPG 173件 [詳細] fileろぼてぃ 005.JPG 114件 [詳細] fileろぼてぃ 004.JPG 117件 [詳細] fileろぼてぃ 003.JPG 116件 [詳細] fileろぼてぃ 002.JPG 117件 [詳細] fileろぼてぃ 001.JPG 119件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-07-21 (木) 15:47:12