課題1

書道ロボット

 二人とも同じロボットを使用しました。
 ですが、それぞれのロボットに対するコメントを載せた為に、写真が重複しますがあまり気にしないで下さい。    では、これよりまたたびとサエグサのプログラムを記載します。

『中』の字を書きます (またたび)

書道型つぎはぎ君壱號

  ↑あまりオリジナリティーはないですが普通に動きます。
   最初に作った基礎部分をそのまま運用し、アームの部分は見本を参考にして見よう見まねで作りました。
   シンプルですが、それだけ安定性はあります。
   ただ、アームは右前にある為に、プログラムはそれを意識して微調整の動きが必要になってしまいました。

書道型つぎはぎ君壱號 細部

  ↑これを回転させる事によってペンが上下に動きます。
   この軸の動力を輪ゴムを使って伝達して、アームに伝えます。
   動きが少し速いのでまるでチョップのようになりますが(笑)

/*「中」の字を書く*/
sub pen_down(){
    OnRev(OUT_B);
    Wait(20);
    Float(OUT_B);
    }  
sub pen_up(){
    OnFwd(OUT_B);
    Wait(20);
    Float(OUT_B);
    }

task main(){
    /*一画目*/
    pen_down();  //ペン下げ   
    OnFwd(OUT_A+OUT_C);  //一画目
    Wait(70);    
    pen_up(); //ペン上げ
    Float(OUT_A+OUT_C);
    Wait(30);

    /*微調整*/
    OnRev(OUT_A+OUT_C);  //次の場所へ移動
    Wait(78);
    OnFwd(OUT_C);  //90°ターン
    Wait(90);
    OnRev(OUT_C); //微調整のためにバック
    Wait(60);

    /*二画目*/  
    pen_down();  //ペン下げ
    OnFwd(OUT_A+OUT_C);  //二画目
    Wait(150);
    Off(OUT_A+OUT_C);    
    pen_up();  //ペン上げ
    Wait(10);
    OnFwd(OUT_A+OUT_C); //微調整の為に前進
    Wait(85);
    OnRev(OUT_C);  //90°ターン
    Wait(95);
    OnRev(OUT_A+OUT_C); 微調整の為にバック
    Wait(10);
    pen_down();  //ペン下げ
    OnFwd(OUT_A+OUT_C);
    Wait(70);    
    pen_up();  //ペン上げ
    Float(OUT_A+OUT_C);
    Wait(30);
   
    /*微調整*/
    OnFwd(OUT_A+OUT_C);  //次の場所へ移動
    Wait(65);
    OnRev(OUT_C);  //90°ターン
    Wait(94);
    OnRev(OUT_A+OUT_C); //微調整の為にバック
    Wait(15);
   
    /*三画目*/
    pen_down();  //ペン下げ
    OnFwd(OUT_A+OUT_C);   //三画目
    Wait(150);    
    pen_up();   //ペン上げ
    Float(OUT_A+OUT_C);
    Wait(30);
    
    /*微調整*/
    OnRev(OUT_A+OUT_C); //次の場所へ移動
    Wait(70);
    OnFwd(OUT_C); //90°ターン
    Wait(92);
    OnRev(OUT_C); //次の場所へ移動
    Wait(185);
   
    /*四画目*/
    pen_down();  //ペン下げ
    OnFwd(OUT_A+OUT_C);  //四画目(最後)
    Wait(200);    
    pen_up();  //ペン上げ
    Float(OUT_A+OUT_B+OUT_C);  //終了
    } 
『中』の字

  ↑目を凝らしてみれば見えてきます・・・か?
  蛍光ペンですいません。拡大して見る事を推奨します。
  二画目と三画目の間が少し開いてしまっています。
  それ以外ではしっかりと噛み合って出来ていると思います。

  • 苦労した点
      →曲がり角でうまく噛み合わせるのを苦労しました。
       やはり、ペンが機体の中心にあるどころか中心から最も遠い場所にある為、どうしても微調整が必要になるからです。
  • 工夫した点
      →サブルーチンを使ってペンの上げ下げを短縮した。
       これにより、プログラムは短くなり、さらには見やすくもなりました。
      →一画ごとに動きを止めさせて、動きを分かりやすくした。
       そうする事で、動作の区切れがよく分かるようになった。
  • 感想
      →本番の紙の上では練習よりもうまく出来なかったので残念。
       一回やり直したら、少しだけは良くなったけど、完璧とは言いがたい結果になった。
       ちなみに、上に記載されている写真はやり直した後の写真です。
       せっかく簡単な漢字だったので、もっと正確な字を書きたかった。
       それと、次回からはもっとオリジナリティーのある機体を作っていきたいと思う。
       なにより、今回周りの班の機体を見ていたら皆それぞれに工夫されていてよかったと思ったからです。

『幸』の字を書く (サエグサ)

  • 何の文字をかこうとしたかわかりますか?
    書いた文字
    答え
  • ロボットの特徴
    書道型つぎはぎ君壱號

 「足」可動式だったものを、タイヤに変更しより安定性を持たせました。さらに、ペンの上げ下げにギアとゴム動力を利用することによって、驚くほど機敏な筆運び(上げたり下げたりするだけですが)が可能になりました。

書道型つぎはぎ君壱號 細部

 この棒が、モーターで回転させられることによって、(この画像では左側にある)ギアが動き、黄色いワームが上下してペンを動かします。単純ですが、とても効率的な動きをしてくれました。

  • 苦労した点

 一番↑ の画像をみれば分かるように、このロボットはペンを(正面から見ると)左側に持っています。そのため、線を曲げたいときは、線の書き始めが、どこになるかをいちいち計算してプログラムしなければなりませんでした。そのため、画数の多い文字になればなるほど、プログラムが長く複雑になってしまいました。

  • 短所と長所のまとめ

 長所は、ともかく動きが機敏なこと。安定した直線が引けることです・

 短所は、機敏すぎること。線の書き始めを設定するのが難し過ぎる事、そのためプログラムが長すぎる事です。

  • 短所改善のために・・・
    • 実行したこと

 ともかく、サブルーチンやディファイン(define)を用いて、できる限りプログラムが短くなるように努力しました。

  • プログラム
    #define pen_down Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(20);        
    #define pen_up  Off(OUT_A+OUT_C); OnFwd(OUT_B); Wait(20)
    #define LFwd  OnFwd(OUT_A)
    #define  LRev OnRev(OUT_A)
    #define LOff Off(OUT_A)
    #define  RFwd OnFwd(OUT_C)
    #define RRev OnRev(OUT_C)
    #define ROff Off(OUT_C)
    
        task main()
        { 
        // 1
        pen_down;
        LFwd; RFwd;Wait(100);
        pen_up;
       
        LFwd; RFwd;Wait(30);
        LRev;ROff;Wait(195);/*turn1*/
        LFwd; RFwd;Wait(20);
        
        // 2
        pen_down;
        LRev; RRev;Wait(100);
        pen_up;
        
        LFwd; RFwd;Wait(90);
        LRev; ROff;Wait(200);
        LOff;LFwd; RFwd;Wait(40);
        
        // 3
        pen_down;
        LRev; RRev;Wait(150);
        pen_up;
        
        LFwd; RFwd;Wait(215);
        RRev;Wait(45);/*turn3*/
        LRev; RRev;Wait(50);
    
         //4
         pen_down;
         LRev; RRev; Wait(25);
         pen_up;
        
        LFwd; RFwd; Wait(75);
        RFwd; Wait(45);
        LRev; Wait(45);
        LRev; RRev; Wait(200);/*back*/
        RFwd;Wait(20);
        LRev;Wait(20);/*turn4*/
        LRev;RRev;Wait(10);
        
        //5
        pen_down;
        LFwd; RFwd;Wait(35);
        pen_up;
        
        LFwd; RFwd; Wait(80);
        RRev;Wait(50);
        LFwd;RFwd;Wait(0);
    
        //6
        pen_down;
        LRev; RRev;Wait(100);
        LOff; ROff;
        pen_up;
       
        LFwd; RFwd;Wait(50);
        LRev; RFwd; Wait(30);
        LFwd;RFwd;Wait(50);
        LFwd;RRev;Wait(20);
       
        //7
        pen_down;
        LRev; RRev;Wait(80);
        pen_up;
         
        LFwd; RFwd; Wait(100); 
        LFwd; RRev; Wait(100);
        
        //8
        pen_down;
        LRev; RRev; Wait(120);
        pen_up;
        
        Off(OUT_A+ OUT_B+OUT_C);
        }

長い、長過ぎる……。プログラムを組んでいるうちに、自分でも訳が分からなくなりそうでした。いちを、それを防ぐために「//*(このプログラムで実行されること)*//」などを後ろにつける等の工夫をしたのですが、効果のほどはイマイチ……。

  • 反省だらけの感想

 ギア回転の時間を、その場の直感で設定するのではなく、ある程度ルールを決めて設定するべきだったと思いました。文字を書くという事を意識し過ぎたために、分かりやすいプログラムを書くという基本的な事が出来なかったようです。文字を書いている最中にギアの停止を全く挟まなかった事も、書くたびに誤差が生まれる原因となってしまいました。一画書き終わるごとにギアを停止させるなどの工夫をするべきだったと反省しています。また、ロボット設計段階を振り返って、ペンをなるべくロボットの重心に近い位置に来るように設計しておけば、回転にするたびにペンの位置が大きくずれてしまう事を防げたのに、と思いました。今回の課題は、自分としてはあまり満足のいくものが作れませんでしたが、それだけに学んだ事も多かったと思います。この反省を、次回に活かして、今度こそ自分で納得のいくものを作りたいです。

リンク

つぎはぎ工房

サエグサのページ

意見がある場合、こちらにどうぞ

  • プログラム、ロボット共にもうすこし説明を加えてください。 -- ゆき(TA)? 2006-11-24 (金) 13:19:45


添付ファイル: filewritten_yuki.jpg 291件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-11-24 (金) 22:29:16