中から2文字以上のものを選び、それをA4の紙を書くロボットを製作せよ。私たちがろぼっとを作るにあたってまず、モーター1つにつき一方向に動くいわゆるXY式のものを目指しました。調べた結果、2016b/Member/ta.kashi/Mission1が私たちの理想像に近かったため、このページの画像を参考にロボットを作りました。右のロボットが土台となりX軸方向に自由に移動できる。左のロボットが土台のレールにのり、レール上をY軸方向に移動したり、筆ペンを上下に動かす。完成形は上図のようになっています。X方向には無制限に動けますがY方向にはレールの長さ分のみしか動けません。今回はA4の紙に字を書くということで紙の短辺をロボットのY方向にすることで問題を回避しました。†ロボットの安定性を高めるためにタイヤの間隔をひろくとりました。モーターにタイヤを二つ取り付けることで二輪駆動を実現しています。参考サイトに習い、上部の安定性を向上するために、レールの内側と同じ幅で突起を取り付けました。筆ペンの上下機構がレール上からずれていてバランスが悪いために反対側に重りとしてタイヤを付けました。2枚目の画像のようにペンを上下する機構はモーターの回転する動きからウォームギアで上下の動きに変換しています。†プログラムを簡略化し、開発しやすくするためにいくつか定数を定義しました。解説が必要なのは少ないでしょうが、まず上二つが移動用モーターの出力です。AがX軸でBがY軸に対応しています。数値が違うのは特に意味はりません。全力で動かずかつ弱すぎない出力にしました。次の二つはそれぞれの方向で定義した出力で動かした際に10cm進むのにかかる時間(ms)です。電池の消耗とモーターの個性に簡単に対応できるようにするために作りました。最後の定数の「bai」は文字を書く際の倍率です。定数と同様にいくつかサブ関数を定義しました。これにより可読性を高め、他人が見てもわかりやすくなります。Wait(1000);}定義したサブ関数は大きく分けてペンを所定の位置に動かすもの(go_forX、go_backX、go_forY、go_backY、go_XY、go_XY2)とペンを上下するもの(penup、pendown)に分かれます。所定の位置に動かすものは、すべて変数tがモーターの駆動として設定されています。t=1,bai=1の時においてXYどちらも10cm程動くようになっているためtをいくつにするかで進む距離を決定できます。ロボットが動いたとは機体が揺れることを考慮して1秒の待機時間を入れてあります。「go_XY、go_XY2」はペンが斜めに移動する用の関数です斜めに移動して戻ってくるところまでがセットになっています。ペンを上下するものは単純です。モーターを特定の角度だけ回転させる関数でペンの上下をしています。†こうして作ったロボットとプログラムを動かしてみた。倍率を0.8倍にして動かした。その結果のように最後の一画が少しはみ出た。今度は倍率を0.5倍にして動かした。その結果となりはみ出ずに書くことができた。