ロボットの名前

パイルドライバー。そうです、建築現場で杭を打ってるアレです。ペンの上げ下げする姿が似ているのです。…実際のところかっこよさそうだったからつけただけですがね。

4.JPG

苦労したところ 

ペンの上げ下げの機構は比較的早く一時間ほどでできました。できるだけシンプルにする思想は美的にも強度的に間違っていないと思います。一方でプログラム面ではかなり苦労しました。ペンがロボットの回転の中心からずれているので、プログラムを書く前にズレを計測し、紙にロボットの動きと命令すべき動作を何度も書きました。さらに、キャタピラは動きが不正確という性質のため急遽タイヤ型への修正を迫られました。しかしそれでもサブルーチンを使ったおかげでプログラムの修正作業をいくらか楽にすることができました。ただ、今後はコメントも使用し、さらにプログラムを見やすくする必要があると感じました。

2.JPG

書いた漢字

名古屋の『古』と、兵庫を『兵』を書きました。直線ばかりで簡単だとかいう指摘はご遠慮ください。直角に何度も直角に曲げたり、きちっと交わらせたりするのがよりシビアなのです。

作ったプログラム

『古』のプログラム

定義

#define A 150
#define B 170
#define TURN_TIME 97

サブルーチン

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);
}

本体

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);
}  

(画数は実際の画数でなく、ロボットの書く数です。)

『兵』のプログラム

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);
}

" 時間がなくて適当になってすみません。"

結果

机の上と木に張られた紙では走り方が異なるためベストではありませんでしたが、なんとか合格点を出せるレベルにはなったと思います。

cimg0264_Small.jpg
cimg0265_Small.jpg

感想

最初は絶対できなさそうだと思っていましたが実際やってみると意外にもできるものなのだと感じました。これからはロボットもプログラムもよけいなものを使わずシンプルで美しいものにしようと思いました。

コメントをどうぞ



添付ファイル: file2.JPG 155件 [詳細] file4.JPG 183件 [詳細]

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