〜これまで住んだことのある都道府県名、市町村名、地区名などの中から2文字以上のものを選び、それをA4の紙を書くロボットを製作せよ〜
RCX本体は動かず、ブロックで作ったレールのみを動かして、X,Y方向へのペンの移動をさせるようにしている。
ロボットを作っている時の自分のイメージは、UFOキャッチャーのような造りを目指していた。 レールは、タイヤが回転することで動くようになっている。図を以下に示す。
ロボットの写真に見える、上部についているタイヤは、ペンが傾いたり、タイヤとレールが触れずに空回りしてしまうのを防止するために、重りの役目として取り付けている。
ペンの上げ下げの動作に関しては、以下の写真のようにギアを組み、少しだけ回転させることで、
2つの差し込んだ部品の幅を変えずにZ軸移動をさせることができた。
#define yoko Wait(50);OnFwd(OUT_B);Wait(30);Off(OUT_B);Wait(50); /*横棒の定義*/ #define tate Wait(50);OnFwd(OUT_A);Wait(30);Off(OUT_A);Wait(50); /*縦棒の定義*/ #define pen_up OnFwd(OUT_C);Wait(50);Off(OUT_C);Wait(100); /*ペン上げ動作の定義*/ #define pen_down OnRev(OUT_C);Wait(5); /*ペン下げの定義*/ #define interval_B Off(OUT_B);Wait(100); /*動作のあいだに間を入れる*/ #define interval_A Off(OUT_A);Wait(100); /*動作のあいだに間を入れる*/
task main(){
yoko; /*玉 一画目を書く*/ pen_up
int YOKO=0; for(YOKO=0;YOKO<2;YOKO++){ /*玉 二、三画目へ移動*/ OnFwd(OUT_A); Wait(20); interval_A; OnRev(OUT_B); Wait(25); interval_B;
pen_down; /*玉 二、三画目の横棒を書く*/ yoko; pen_up; }
OnRev(OUT_B); /*玉 四画目へ移動*/ Wait(15); interval_B; OnRev(OUT_A); Wait(30); interval_A;
pen_down; /*玉 四画目の縦棒を書く*/ tate; pen_up;
OnFwd(OUT_B); /*玉 五画目へ移動*/ Wait(8); interval_B; OnRev(OUT_A); Wait(8); interval_A;
pen_down; /*五画目 点を書く*/ pen_up;
OnRev(OUT_B); /*川 一画目へ移動*/ Wait(15); interval_B; OnFwd(OUT_A); Wait(30); interval_A;
int TATE=0; for(TATE=0;TATE<2;TATE++){ pen_down; /*川 一、二画目の縦棒を書く*/ tate; pen_up; OnRev(OUT_A); /*二、三画目へ移動*/ Wait(30); interval_A; OnFwd(OUT_B); Wait(10); interval_B; }
pen_down; /*川 三画目の縦棒を書く*/ OnFwd(OUT_A); Wait(45); interval_A; pen_up; /*玉川 完成*/
}
X,Y軸の移動に関しては、思い付きでもなんとかなる感じがしたが、ペンの上げ下げの動作に関しては、そもそもどうやらせるのかやパーツの不足などでかなり時間を使わされ、同じグループの一人が作っていたものを参考にしてどうにか完成させた。
また、ロボット自体は大きいわりに、レールの可動範囲が小さく、小さな字しか書けなくなってしまった。はらいや斜めの部分も書けるようにはなっているが、その部分を活かせなかったのは残念だったと思う。
このロボットにはある程度線の太さがでる筆ペンを持たせて書かせたが、はじめはペンの動きが早すぎてぐちゃぐちゃになってしまった。そこで、動作の合間合間に時間を挟むことで、書道のように一画一画を丁寧に書くような動作をさせるプログラムを組むようにしなくてはいけなかった。