A4の紙に松本の大学生活を表す漢字一文字を書くロボットを製作せよ。
•7画以上の文字を選ぶこと。
•文字は15cm四方に収まる大きさにすること。
•ひとりにつき一つ以上のプログラムを作成すること。
•ペン以外はキットに含まれる部品を使うこと。
•キットに付属の高価な輪ゴムは切れやすいので切れないように細心の注意を払うこと。
•改良や調整をしやすくするため、ロボット本体だけでなく、プログラムについても可能な限りシンプルにした。
「新」
新しい場所、新しい家、新しい友達、新しいサークルなど、自分にとって新しいことが多かったのでこの漢字にしました。
とにかくコンパクトにシンプルにするために、最初の授業で作ったロボットを使って作成した。そのおかげで持ち運びも楽になったし、壊れても修復しやすかった。また、本体の中心とペン先の位置がズレ過ぎてしまうと、ロボットを回転させた時にペン先のズレが大きくなってしまうので、極力ペンとロボットの距離を近くした。
タイヤでペンを挟み、タイヤを回すことでペンの上げ下げを成功させた。タイヤの数は2つではなく3つにすることで安定性をもたせた。また、毎回微妙に角度が変わってしまったりしたので、ペン先がぐらつかないようにブロックでペンを囲み、固定したことによって同じ角度で動かすことを成功させた。
サブルーチンを使って、プログラミングを極力シンプルにした。 また、漢字も書き順通りにかけるようにした。ペンを出しきれなかったときのことを考えて、ペンを引っ込めるときは0,10秒出すときは0,11秒にした。floatを使って払いを微妙に意識した。
int t=0;//t(時間)を0に定義 sub fwd()//前に進む { OnFwd(OUT_AC); Wait(t); Off(OUT_AC); } sub rev()//後ろに進む { OnRev(OUT_AC); Wait(t); Off(OUT_AC); } sub t_right()//右に曲がる { OnFwd(OUT_A); OnRev(OUT_C); Wait(t); Off(OUT_AC); } sub t_left()//左に曲がる { OnFwd(OUT_C); OnRev(OUT_A); Wait(t); Off(OUT_AC); } sub go()//ペンを出す { OnFwd(OUT_B); Wait(11); Off(OUT_B); } sub back()//ペンを引っ込める { OnRev(OUT_B); Wait(10); Off(OUT_B); } task main() { go();//縦棒 t=20; fwd(); back(); t=89; rev(); t=108; t_left(); t=12; rev(); go();//横棒 t=45; fwd(); back(); t=48; rev(); t=100; t_right(); t=86; fwd(); go();//縦棒 t=25; fwd(); back(); t=43; t_right(); t=23; rev(); t=28; t_left(); go();//縦棒 t=26; fwd(); back(); t=97; rev(); t=120; t_left(); t=26; rev(); go();//横棒 t=45; fwd(); back();//立完成 t=30; t_left(); t=52; rev(); t=30; t_right(); go();//横棒 t=43; fwd(); back(); t=33; rev(); t=105; t_right(); t=71; fwd(); go();//縦棒 t=50; fwd(); back(); t=70; rev(); t=35; t_right(); t=60; fwd(); go();//左払い OnFwd(OUT_AC); Wait(36); Off(OUT_A); Float(OUT_C); back(); t=120; rev(); t=80; t_left(); t=31; fwd(); go();//右払い OnFwd(OUT_AC); Wait(35); Off(OUT_C); Float(OUT_A); back();//木完成 t=60; rev(); t=100; t_right(); t=7; fwd(); go();//左払い OnFwd(OUT_AC); Wait(42); Off(OUT_A); Float(OUT_C); back(); t=83; rev(); t=51; t_left(); =40; fwd(); go();//左払い OnFwd(OUT_AC); Wait(70); Off(OUT_C); Float(OUT_A); back(); t=150; rev(); t=103; t_left(); t=9; fwd(); go();//横棒 t=39; fwd(); back(); t=33; rev(); t=96; t_right(); t=84; fwd(); go();//縦棒 t=55; fwd(); back();新完成 }
・ペンがロボットそのものの後ろに固定してあるため、そのままロボットを回転させるとペン先の位置が弧を描いてずれてしまう点。→一度ロボットを下げてから機体を回すという作業を繰り返し、少しずつ微調整していった。
・XY軸で動くロボットではないため、自分で一画ずつ合わせなければいけなかった点。→一画一画確認しながら、調節していった。
・木の払いの向きがうまくいかなかった点。→根気。
・初め、課題のサイズを間違えていて、半分ぐらいいってから作り直したこと。→根気。
きちんと読める漢字を書くように意識した。もう少し払いや、角度、交差する点などを細かく設定できたらよかったかなと思う。
ロボットについては相方の子がいろいろやってくれたため、そこまで困ることはなかったが、プログラミングがとにかく大変だった。最初にロボットがなかったため一気にプログラミングをやってしまい、実際ロボットに転送して動かしてみたら全然予想通りに動かず、最初から一画一画確認しながらやらなければならなかった。また、サイズが違くてやり直したり、少しずつ微調整したりと、とにかく根気がいる作業が多かった。でも最終的には悔しさは残るが、きちんと読める漢字が完成したのでよかった。