課題については2017a/Mission1を参照。漢字については、大学生活にも深く関わるであろう「図」を選択した。
なるべくロボットはシンプルで、修正点がどこにあるのかすぐわかるような構造にする。
本体は授業で作ったものをそのまま使った。ペンを持つ部分を本体に寄せなかったのは、書いた線が本体に隠れて軌道修正をおこないにくくするからだ。またペンを持つ部分から本体までに隙間を作りペンの上げ下げのタイミングの調整を容易なものとした。写真には写っていないが、本体の後部にバランス調整用のおもりとなるパーツをつけた。ペンをタイヤとパーツで挟んで上げ下げの機構を作った。タイヤが回転するとペンが上がったり下がったりするようになっている。
パーツなくなったと思ったら洗濯物からでてきました。ごめんなさい。
ペンの上げ下げだけを定義した。関数が少なくプログラムが大きくなったのは、走行時の機体バランスのずれにより本体が振動し、プログラム通りに進まないことが度々起こったためプログラムをパターン化できず、一つ一つ調整せざるを得なかったからだ。
#difine PEN_UP OnFwd(OUT_B);Wait(20);Off(OUT_B) #difine PEN_DOWN OnRev(OUT_B);Wait(20);Off(OUT_B)
task main() { OnFwd(OUT_AC); Wait(150); Off(OUT_AC); PEN_DOWN; //1画目
OnFwd(OUT_AC); Wait(50); Off(OUT_AC); OnFwd(OUT_A); Wait(145); Off(OUT_A); PEN_DOWN; OnRev(OUT_AC); Wait(150); Off(OUT_AC); PEN_UP; //2画目 OnFwd(OUT_AC); Wait(190); Off(OUT_AC); OnFwd(OUT_A); Wait(145); Off(OUT_A); PEN_DOWN; OnRev(OUT_AC); Wait(160); Off(OUT_AC); PEN_UP; //3画目
OnFwd(OUT_AC); Wait(220); Off(OUT_AC); OnFwd(OUT_A); Wait(140); Off(OUT_A); PEN_DOWN; OnRev(OUT_AC); Wait(170); Off(OUT_AC); PEN_UP; //4画目
OnFwd(OUT_AC); Wait(135); Off(OUT_AC); OnFwd(OUT_A); Wait(90); Off(OUT_A); PEN_DOWN; OnRev(OUT_AC); Wait(10); Off(OUT_AC); PEN_UP; //5画目
OnRev(OUT_AC); Wait(20); Off(OUT_AC); PEN_DOWN; OnRev(OUT_AC); Wait(60); Off(OUT_AC); PEN_UP(OUT_AC); //6画目
OnFwd(OUT_AC); Wait(80); Off(OUT_AC); OnFwd(OUT_A); Wait(140); Off(OUT_A); OnRev(OUT_AC); Wait(110); Off(OUT_AC); PEN_DOWN; OnRev(OUT_AC); Wait(60); PEN_UP; Off(OUT_AC); 7画目
できた漢字がこちら
これが限界です。
やっぱり、何度やってもは走行時の機体の揺れが直らなかったので、機体バランスをもう少し考えながらロボットを作ればよかった。この構造にしたから仕方のないことだけど、字を書くときにロボットを動かしすぎだと思った。今度こういうロボットを作るときは、もっと効率化を図りたい。
反省点ばかりではなく、最初に掲げた「修正点をわかりやすくする。」という目標は達成できたので結果的にはよくできたと思う。特に「図」の内側の5,6画目で、細かい点を書いたあとちょっと隙間をあけてもう一回細かい点を書くのにすごく役に立った。今回初めてプログラミングを学びたくさん苦戦をしたが、やってよかった。これからも知らないことをもっと学びたい。