七画以上の書きやすくて、大学生活を表す漢字を書くという課題であった。大学で個性を伸ばすということと、僕のチームのロボットは座標型なので斜め線も書けると思ったことから伸の字を選んだ。
使えるモーターが3つだったので、1つでペンの上げ下げ、残り2つで平面的な動きをさせようと考えた。そして僕達の作ったロボットは座標型となっている。コピー機やUFOキャッチャーと同じ原理だ。ギアで速度を落としているので安定的に細かい動きができる。
アームを上げ下げすることでペンを接地させることができる。 歯車をそのままつけると速すぎるのでギアを二段階落としてある。
レールが常に二つの歯車と接しているようにするため工夫した。速度を落とすためウォームギアを採用した。力強さが出てとても良かったが遅くなり過ぎた。
X軸が遅すぎて斜めが書きにくかったのでギアを二段階落としてあるがまだX座標のほうが遅い。
RISの機械では回転速度を変えられない為、決まった角度の斜め線しかこのロボットでは書くことができない。このロボットではY軸の進みがX軸の進みに比べて速い為、にんべんの斜めを書くのに適している。僕の為にこの斜めが書けるようにしてくれた班の皆には感謝している。 ありがとう
座標型のロボットにしただけあってプログラミングは比較的楽であった。
#define arm_right(t) OnRev(OUT_A);Wait(t);Off(OUT_A); //アーム右移動
#define arm_left(t) OnFwd(OUT_A);Wait(t);Off(OUT_A); //アーム左移動
#define arm_go(t) OnRev(OUT_C);Wait(t);Off(OUT_C); //アーム前移動
#define arm_back(t) OnFwd(OUT_C);Wait(t);Off(OUT_C); //アーム後ろ移動
sub arm_down() { OnFwd(OUT_B); Wait(110); Off(OUT_B); }
sub arm_up() { OnRev(OUT_B); Wait(125); Off(OUT_B); }
アームの上げ下げの動作が多いのでsubrutineにした。重力による誤差を修正するために上げる時間と下げる時間は異なっている。
task main() { arm_down(); OnFwd(OUT_AC); Wait(150); Off(OUT_AC); arm_up(); arm_right(110); arm_go(70); arm_down(); arm_back(250); arm_up(); arm_right(250); arm_go(240);
arm_down(); arm_back(130); arm_up(); arm_go(140); arm_down(); arm_right(500); arm_back(140); arm_left(500); arm_up(); arm_go(70); arm_down(); arm_right(500); arm_up(); arm_go(150); arm_left(250); arm_down(); arm_back(370); arm_up(); }
できるだけ少ない画数で書けるように書き順を変えてある。前進しながら線を書こうとするとペンがつっかかってしまうのでその動きは避けてある。左手で字が書きにくいというのと同じ原理だ。
プログラミングの上では端と端がしっかりつながるはずだが、実際は隙間ができてしまった。今の設計ではロボットが縦長になっており横方向に弱く誤差がでてしまったからだ。これを改善するには、アーム部分もっと固定する必要がある。その他にアームのプログラムでは毎回90度動くようになっており無駄な動きが多いところも改善できる。僕がプログラムをさぼったためこのようになってしまった。次回からは細かいプログラムを組み洗練された動きができるよう心掛けようと思う。