†A4の紙に今年の大学生活を表す漢字一文字を書くロボットを作製せよ。僕は今年たくさん失敗をしてしまい苦い思いをしたので「苦」という字をロボットで書こうと思った。今回のロボットは一番最初に作成した基本のものにペンを上げ下げする部品を取り付けたシンプルな構造になっている。それにより分解するのも簡単になっている。直角に曲がったりするには車輪は二つのほうがプログラミングしやすいと思ったので、基本のものを崩さずに使用した。曲がるときには二つの車輪を逆方向に回転させる方法をとろうとしたが、やってみて難しく感じたので、片方の車輪を軸にしてコンパスが円を描くようにもう片方の車輪を動かす方法をとった。今回は構造を簡単にするために一つのモータとギアでペンを上げ下げするものにした。ペンがロボットの前方の中心にくるようにするとペンの位置のずれをわざわざ計算しなくて済むと思ったのでペンが本体の中心に来るようにブロックをつなげて調節をした。ブロック一つにペンを輪ゴムで止めるような構造にするのではなく二つのブロックで挟むような構造にしたのは、ブロックでペンを挟むことによってペンが完全に固定されないから。ペンが完全に固定されていないとペン先が下を向いたときに若干下に落ちてしまうが、それによって確実に紙にインクが付くようになる。そこまでゆるくなっているわけではないのでペンを上げてもペン先が紙につきっぱなしという事態にはならない。ang;}この関数は、距離dから車輪の回転角を計算してくれるものである。これはかなり正確らしいが、実際に動かすと多少のずれが生じるので、実際に動かして検討してみる必要がある。-30今回は紙が大きく動いたりしないようにスピードを遅めの30に統一する。SPEEDmのmはマイナスの意味である。前進するときはSPEED,後退するときはSPEEDmが入る。始めは、上の車輪の部分で説明したようにやってみたが回転後に位置がずれてしまったので回転する前後にロボットの位置を調節することによりずれを無くした。GetAngle()内の数字は実際に動かしてみて調節しながら決めた。回転角+右または左という変数名にした。実際にアームを動かしてモータの回転角を決めた。前に進む命令には進む距離の次にGoを、後ろに下がる命令にはBackを付ける。少々長くなって面倒に感じるが、プログラムを書いたときに一目でどういう動きをするかが分かる。回転する動作をプログラミングしたときは床の上で行っていたので、いざ紙の上で動かしてみると若干ズレが生じた。紙の上と床の上では摩擦が違うからだ。紙の上で方向を変える時や紙からはみ出し机の上で方向を変える時があるので、ロボットを動かし様子を見ながらロボットの位置を修正するための前後へ移動するプログラムを差し込んだ。書き順は五画までは正しいもので六画目からは、長方形を左上から書くという風にした。d)という関数を用いたが、タイヤと紙の間の摩擦や電池の状態によってかなりの誤差が出てしまい、頭の中で思い描いていたイメージとだいぶ違う動きをしてしまったので、数値を変えて動かすことを何回もくりかえした。プログラミングは最初に頭の中でロボットの動きを想像してすべてのプログラムを書くのではなく、ロボットの動きを見ながら一画一画丁寧に書いていくほうが、確実でエラーが出た時も対処しやすいと感じた。定義する変数が多くなってしまったので、一つ一つの変数名をわかりやすいものにすることは大事だと思った。ペン先を本隊前部の中央に持ってくるのはやはりプログラミングがしやすかった。タイヤが本体の出っ張りに引っかかって左右の車輪の回転角に違いが生じることがあったが、タイヤを浅めに軸に差し込むことで解決した。このように小さな障害を一つ一つ取り除いていくことが肝心だと実感した。