*ロボットの名前 [#v798b9fb]
パイルドライバー。そうです、建築現場で杭を打ってるアレです。ペンの上げ下げする姿が似ているのです。…実際のところかっこよさそうだったからつけただけですがね。
#ref(2007a/A5/4.JPG,40%)
*苦労したところ  [#a7a722aa]
ペンの上げ下げの機構は比較的早く一時間ほどでできました。できるだけシンプルにする思想は美的にも強度的に間違っていないと思います。一方でプログラム面ではかなり苦労しました。ペンがロボットの回転の中心からずれているので、プログラムを書く前にズレを計測し、紙にロボットの動きと命令すべき動作を何度も書きました。さらに、キャタピラは動きが不正確という性質のため急遽タイヤ型への修正を迫られました。しかしそれでもサブルーチンを使ったおかげでプログラムの修正作業をいくらか楽にすることができました。ただ、今後はコメントも使用し、さらにプログラムを見やすくする必要があると感じました。
#ref(2007a/A5/2.JPG,40%)
*書いた漢字 [#kf578ad1]
名古屋の『古』と、兵庫を『兵』を書きました。直線ばかりで簡単だとかいう指摘はご遠慮ください。直角に何度も直角に曲げたり、きちっと交わらせたりするのがよりシビアなのです。
*作ったプログラム [#v691ed75]
**『古』のプログラム [#g0fa15ec]

***定義 [#rf1e6535]
 #define A 150
 #define B 170
 #define TURN_TIME 97
***サブルーチン [#e47e8398]
 sub TURN_RIGHT()
 {       
   OnFwd(OUT_B);
   Wait(A);
   
   OnFwd(OUT_B);
   OnFwd(OUT_A+OUT_C);
   Wait(45);
   
   Off(OUT_A+OUT_C);           
 }

 sub DROW15()
 {
      OnRev(OUT_B);
      Wait(A);
      
      OnRev(OUT_B);
      OnRev(OUT_A+OUT_C);
      Wait(100); 
      
      Off(OUT_A+OUT_C);
 }

 sub DROW9()
 {
      OnRev(OUT_B);
      Wait(A);
      
      OnRev(OUT_B);
      OnRev(OUT_A+OUT_C);
      Wait(60); 
      
      Off(OUT_A+OUT_C);
 }
***本体 [#ofa762b7]
 task main()
 {   "一画目"
        SetPower(OUT_B,1);
        
        OnRev(OUT_B);
        Wait(A);       
        
        OnRev(OUT_B);
        OnFwd(OUT_A+OUT_C);
        Wait(150);
        
        Off(OUT_A+OUT_C);
        
        OnFwd(OUT_B);
        Wait(A);       
        
        OnFwd(OUT_B);
        OnRev(OUT_A);
        OnFwd(OUT_C);
        Wait(TURN_TIME);
        
        Off(OUT_A+OUT_C);
        "二画目"
        OnRev(OUT_B);
        Wait(A);
      
        OnRev(OUT_B);
        OnRev(OUT_A+OUT_C);
        Wait(100); 
      
        Off(OUT_A+OUT_C);
        
        OnFwd(OUT_B);
        Wait(A); 
        
        OnFwd(OUT_B);
        OnFwd(OUT_A+OUT_C);
        Wait(90);
        
        OnFwd(OUT_B);
        OnRev(OUT_A);
        OnFwd(OUT_C);
        Wait(99);
        
        Off(OUT_A+OUT_C);
        
        OnFwd(OUT_B);
        OnFwd(OUT_A+OUT_C);
        Wait(20);
        Off(OUT_A+OUT_C);
        "三画目"
        DROW15();
        
        TURN_RIGHT();
       "四画目"
        DROW9();
        
        TURN_RIGHT();
        "五画目"
        DROW15();
        
        TURN_RIGHT();
        "六画目"
        DROW9();
        
        Off(OUT_A+OUT_B+OUT_C);
 }  
(画数は実際の画数でなく、ロボットの書く数です。)
**『兵』のプログラム [#w538a186]
*** [#g6aa3114]
 task main() 
 {
"一画目~"
 OnRev(OUT_A+OUT_C+OUT_B);
 Wait(90);
 OnFwd(OUT_C+OUT_B);
 Wait(130);
 OnRev(OUT_C);
 Wait(90);
 OnFwd(OUT_A);
 Wait(60);
 OnFwd(OUT_C);
 Wait(50);
”二画目~”
 OnRev(OUT_A+OUT_C+OUT_B);
 Wait(75);
 OnFwd(OUT_A+OUT_C+OUT_B);
 Wait(162);
 OnRev(OUT_A);
 Wait(108);
 OnRev(OUT_A+OUT_C);
 Wait(33);
”三画目~”
 OnRev(OUT_B);
 Wait(130);
 OnFwd(OUT_A+OUT_B+OUT_C);
 Wait(90);
 OnRev(OUT_C);
 Wait(115);
 OnRev(OUT_A);
 Wait(90);
”四画目~”
 OnRev(OUT_B);
 Wait(70);
 OnFwd(OUT_A+OUT_B+OUT_C);
 Wait(100);
 OnRev(OUT_A);
 Wait(115);
 OnFwd(OUT_A);
 Wait(90);
”五画目~”
 OnRev(OUT_A+OUT_B+OUT_C);
 Wait(180);
 OnFwd(OUT_A+OUT_B+OUT_C);
 Wait(140);
 OnRev(OUT_C);
 Wait(150);
 OnRev(OUT_A);
 Wait(140);
”六画目~”
 OnRev(OUT_B);
 Wait(35);
 OnFwd(OUT_A+OUT_B+OUT_C);
 Wait(200);
 OnRev(OUT_A);
 Wait(70);
 OnRev(OUT_C);
 Wait(130);
”七画目~”
 OnRev(OUT_B);
 Wait(20);
 Float(OUT_A+OUT_C);
 }
" 時間がなくて適当になってすみません。"

*結果 [#q14ca62a]
机の上と木に張られた紙では走り方が異なるためベストではありませんでしたが、なんとか合格点を出せるレベルにはなったと思います。
#ref(http://yakushi.shinshu-u.ac.jp/robotics-photo/2007a/2007-05-24/cimg0264_Small.jpg)
#ref(http://yakushi.shinshu-u.ac.jp/robotics-photo/2007a/2007-05-24/cimg0265_Small.jpg)
*感想 [#qec2715c]
最初は絶対できなさそうだと思っていましたが実際やってみると意外にもできるものなのだと感じました。これからはロボットもプログラムもよけいなものを使わずシンプルで美しいものにしようと思いました。



コメントをどうぞ
-ページの体裁をもう少し整えるとベターだと思います。 -- [[ヒロヤ]] &new{2007-05-24 (木) 00:52:30};
-プログラム以外で整形済みテキストを使用するのはできる限り避けましょう。セクションの表題や各段落などの文書の要素を一つ一つ吟味して、レポートとしての文書全体の構成をよく考えましょう。 -- [[松本]] &new{2007-05-24 (木) 08:35:59};
-なかなかよいでしょう。イラストも使えるとさらによいかもしれません。 -- [[ヒロヤ]] &new{2007-06-06 (水) 22:11:23};

#comment

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