2006a/C2/課題1右


〜『木』を作る書道ロボット〜

製作者:伊藤 糸島 堀 (五十音順)
カウンタ2563
ロボティクス入門ゼミ
2006a/C2

マシンの紹介

全体図とアーム拡大図
全体図アーム
ペンのブレをなくす機構 ペンありとペンなしの図
機構説明1→ペンをとりますと→機構説明2

実際に木を「作る」ロボットのプログラム(改良済み)

我が班は木を書くのではなく、木を「作る」にこだわります(謎)

以下に、とりあえずのプログラムを載せます。

とりあえずと言ったのは、直前などに調整を行う可能性があるからです。

下記のプログラムは、当初予定していた地道なプログラムを全面改良したものである。

モーターA:ペンを上下に動かす機構に関わる 順回転でペンをおろす
モーターB:左側の動力に関わる 順回転で前進
モーターC:右側の動力に関わる 順回転で前進
int turn_time   ;

#define FF OUT_B+OUT_C     //for straight 前進あるいは後退
#define FL OUT_B          //for turning left 左に曲がる
#define FR OUT_C           //for turning right 右に曲がる
#define FA OUT_A           //for raising and lowering the arm ペンの上下

#define BASETIME 170       //for the main straight 基本的な長さ
#define WHOLETIME 382      //for turning *本番直前に1回転に要する時間を計測し、この値を調整する。



void joint()           // JOINT WAIT 移動によるマシンのぶれをなくす
{   Wait(100);         }


void age()           // AGE ペンを上げる
{   OnRev(FA); Wait(24);  
    Off(FA);       }

void sage()           // SAGE ペンを下げる
{   OnFwd(FA); Wait(10);  
   Off(FA);       }


void go_straight(int t)      // GO STRAIGHT - t/100sec t秒間直進
{   OnFwd(FF); Wait(t);  
    Off(FF);        }

void go_back(int t)         // GO BACK - t/100sec t秒間後退
{   OnRev(FF); Wait(t);  
    Off(FF);       }


sub turn_left_05()           // TURN LEFT - 0.5 左に180°回転
{   turn_time = WHOLETIME ;
    turn_time /= 2 ;
    OnFwd(FF); Rev(FL); Wait(turn_time); 
    Off(FF);         }

sub turn_left_025()           // TURN LEFT - 0.25 左に90°回転
{   turn_time = WHOLETIME ;
    turn_time /= 4 ;
    OnFwd(FF); Rev(FL); Wait(turn_time); 
    Off(FF);           }

sub turn_left_0125()           // TURN LEFT - 0.125 左に45°回転
{   turn_time = WHOLETIME ;
    turn_time /= 8 ;
    OnFwd(FF); Rev(FL); Wait(turn_time); 
    Off(FF);              }


sub turn_right_05()           // TURN RIGHT - 0.5 右に180°回転
{   turn_time = WHOLETIME ;
    turn_time /= 2 ;
    OnFwd(FF); Rev(FR); Wait(turn_time); 
    Off(FF);              }

sub turn_right_025()           // TURN RIGHT - 0.25 右に180°回転
{   turn_time = WHOLETIME ;
    turn_time /= 4 ;
    OnFwd(FF); Rev(FR); Wait(turn_time); 
    Off(FF);              }

sub turn_right_0125()           // TURN RIGHT - 0.125 右に180°回転
{   turn_time = WHOLETIME ;
    turn_time /= 8 ;
    OnFwd(FF); Rev(FR); Wait(turn_time); 
    Off(FF);             }



task main()

{
    go_straight(BASETIME);      //1 1画目開始 
            joint();      *ペンは最初から紙に付いています。
      age();          1画目終了、ペンを上げる
            joint();
    go_back(28);                 //2 2画目開始位置に移動開始
            joint();
    turn_left_025();             //3 中心まで戻りターンする
            joint();
    go_back(29);                 //4 移動完了
            joint();
      sage();           ペンを下ろす
            joint();
    go_back(BASETIME);           //5 2画目開始
            joint();        
      age();           2画目終了、ペンを上げる
            joint();
    go_straight(194);             //6 3画目の開始位置に移動開始
            joint();
    turn_right_0125();            //7
            joint();
    go_back(66);                 //7.5 マシン位置を微調整
            joint();       *さらっと書いてますがここでとても苦労しました
      sage();           ペンを下ろして、3画目開始
            joint();
   
OnRev(FF);                     //8
SetPower(OUT_B,2);        3画目の微曲線のためのモーター回転数調整
Wait(137);
Off(FF);

            joint();
      age();           3画目終了、ペンを上げる
            joint();

OnFwd(FF);                   //9 4画目開始位置に移動
SetPower(OUT_B,2);
Wait(137);
Off(FF);
   
           joint();
   go_straight(66);          //9.5 マシン位置の微調整
           joint();
   turn_left_025();         //10
           joint();
   go_back(66);             //10.5 マシン位置の微調整
           joint();
      sage();         ペンをさげる
            joint();

OnRev(FF);                 //11 4画目開始
SetPower(OUT_C,1);     4画目の微曲線のためのモーター回転数調整
Wait(120);
Off(FF);          4画目完了

           joint();
      age();         最後にペンをあげる
  
 //FINISHED         『木』の完成です。ご熟読ありがとう!

}

変身! マシンの主な改良点

プログラムだけでなくマシンも進化してるんですよ!
旧型新型
img_1310_2_Medium.jpg→変身→dscn2586_Medium.jpg

プログラム及びマシンの開発日誌


プログラム作成において苦労した点


おまけ

結果

Suimoku_C2R.jpg 哀れ なんと こんなにも3画目と4画目がずれています。
本番直前に書かせてみたらうまくいったのになぁ・・・・ 練習のときもうまくいったのになぁ

推測されるこの失敗の原因はやはりモーターコンディション。モーターについていろいろ計ってみると、ある程度運動させた後のモーターは、運動させていないモーターよりも、よく回転していました。このことは、1回転にかかる時間を何回か続けて計測したときに明らかになりました。これによりマシンが1回転するのにかかる時間が微妙に変化したためだと思われます。


このレポートについて

このレポートを作成するにあたって注意したことがあります。それは、「読む人を飽きさせないこと」です。飽きさせないために例えば、「プログラム及びマシンの開発日誌」という項目を設けました。これにより、楽しく我々のマシンの作製過程や問題の発生とその解決 苦労した点、工夫した点が分かってもらえたと思います。 また、レポートのデザインにも気を配りました。最初のマシンの紹介の項目やマシンの改良点を説明する項目ではただ写真を貼り付けるだけではなく、bgcolorやセンタリングするコマンドを使用したり、写真を枠にも入れて、枠のサイズの調整も行ってみました。 プログラムの解説も流れを重視して書きましたので、分かりやすくなっていると自負しております。


最後になりましたが、ここまで素晴らしいプログラムとマシンを作れたのは、忙しい中無理をして作業を行ってくれたみんなの努力と、的確なアドバイスを下さった先生方のおかげです。 そして画面の前の皆様、ここまで読んでいただきありがとうございました。

                   製作者より

反省点 次に生かしたいこと 分かったこと


先生やTAの方々のコメント



ロボティクス入門ゼミ
2006a/C2

*1 この特徴的なアームのおかげで、ペンと紙の接地に関する問題から解放され、スムーズに作業を進めることが出来きました。
*2 実際、我々は本番直前にかすれたペンから、おニューのぺンへと交換しています。

添付ファイル: fileSuimoku_C2R.jpg 343件 [詳細] fileimg_1311_2_Medium.jpg 165件 [詳細] fileimg_1310_2_Medium.jpg 363件 [詳細] filedscn2590_Medium.jpg 360件 [詳細] filedscn2588_Medium.jpg 328件 [詳細] filedscn2587_Medium.jpg 341件 [詳細] filedscn2586_Medium.jpg 353件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-06-14 (水) 18:22:45