[[2017a/Member]] 目次 #contents *課題 [#cd9ddebd] **制約 [#w52c2699] A4サイズの紙に新たに始まる大学生活を漢字一文字で書くロボットの作製しなければなりません。 画数は7画以上にしなければなりません。 文字を15cm四方の紙に収めなければなりません。 ペン以外はキットの部品を使用しなければなりません。 キットの輪ゴムは高価なので扱いに注意しなければなりません。 改良・調整を容易にするため、ロボット本体だけでなく、プログラミングについても可能な部分についてはサブルーチンや関数、マクロなどを使って部品に分けなければなりません。 **選んだ漢字 [#fe7a73c4] 作 大学生活を「作る」、これからの人生を「作る」、新生活を「作る」、に因んで「作」という漢字を選定しました。 *プログラミングの説明 [#n0a3c1d0] 漢字も書き順通りにかけるようにした。ペンを出しきれなかったときのことを考えて、ペンを引っ込めるときは0,10秒出すときは0,11秒にした。floatを使って払いを微妙に意識した。 task main() { OnFwd(OUT_AC); Wait(50); Off(OUT_AC); //一画目 にんべんの斜め線 ペンを射出した状態で0,5秒前進 OnRev(OUT_B); Wait(10); Off(OUT_B); OnRev(OUT_AC); Wait(120); Off(OUT_AC); OnFwd(OUT_C); Wait(100); Off(OUT_C); OnFwd(OUT_B); Wait(11); Off(OUT_B); OnFwd(OUT_AC); Wait(80); Off(OUT_AC); //二画目 にんべんの直線部分 ペンを戻し1,2秒後退し、1,0秒旋回し、ペンを射出し、0,8秒前進 OnRev(OUT_B); Wait(10); Off(OUT_B); OnRev(OUT_AC); Wait(250); Off(OUT_AC); OnFwd(OUT_C); Wait(300); Off(OUT_C); OnRev(OUT_AC); Wait(50); Off(OUT_AC); OnFwd(OUT_B); Wait(11); Off(OUT_B); OnRev(OUT_AC); Wait(60); Off(OUT_AC); //三画目 右側部分の斜め線部分 ペンを戻し 2,5秒後退し、3,0秒旋回し、0,5秒後退し、ペンを射出し、0,6秒前進 OnRev(OUT_B); Wait(10); Off(OUT_B); OnFwd(OUT_AC); Wait(50); Off(OUT_AC); OnRev(OUT_C); Wait(120); Off(OUT_C); OnFwd(OUT_AC); Wait(100); Off(OUT_AC); OnFwd(OUT_B); Wait(11); Off(OUT_B); OnFwd(OUT_AC); Wait(70); Wait(OUT_AC); //四画目 右側部分の一番上の横に直線部分 ペンを戻し、0,5秒前進し、1,2秒旋回し、1,0秒前進し、ペンを射出し、0,7秒前進する OnRev(OUT_B); Wait(10); Off(OUT_B); OnRev(OUT_AC); Wait(100); Off(OUT_AC); OnFwd(OUT_A); OnRev(OUT_C); Wait(100); Off(OUT_AC); OnFwd(OUT_AC); Wait(100); Off(OUT_AC); OnFwd(OUT_B); Wait(11); Off(OUT_B); OnFwd(OUT_AC); Wait(100); Off(OUT_AC); //五画目 右側部分の縦に直線の部分 ペンを戻し、1,0秒後退し、1,0秒旋回し、ペンを射出し、1,0秒前進 OnRev(OUT_B); Wait(10); Off(OUT_B); OnRev(OUT_AC); Wait(100); Off(OUT_AC); OnFwd(OUT_C); OnRev(OUT_A); Wait(100); Off(OUT_AC); OnFwd(OUT_AC); Wait(20); Off(OUT_AC); OnFwd(OUT_B); Wait(11); Off(OUT_B); OnFwd(OUT_AC); Wait(60); Off(OUT_AC); //六画目 右側部分の上から二番目の横に直線部分 ペンを戻し、1,0秒後退し、1,0秒旋回し、0,2秒前進し、ペンを射出し、1,6秒前進 OnRev(OUT_B); Wait(10); Off(OUT_B); OnRev(OUT_AC); Wait(60); Off(OUT_AC); OnFwd(OUT_A); OnRev(OUT_C); Wait(100); Off(OUT_AC); OnRev(OUT_AC); Wait(40); Off(OUT_AC); OnFwd(OUT_C); OnRev(OUT_A); Wait(100); Off(OUT_AC); OnFwd(OUT_B); Wait(11); Off(OUT_B); OnFwd(OUT_AC); Wait(60); Off(OUT_AC); //七画目 右側部分の上から三番目の横に直線部分 ペンを戻し、0,6秒後退し、1,0秒旋回し、0,4秒後退し、1,0秒旋回し、ペンを射出し、0,6秒前進 } 漢字は書き順通りです。ペンの上げる時間よりも下げる時間をほんの少し長くすることによってペンが確実に紙に接触するようにしました。 *ロボットの説明 [#d6dd1a5e] **ペンを上げ下げする構造 [#i2173a45] #ref(./unnamed-3.jpg,50%,a) タイヤでペンを挟み、タイヤを回すことでペンを上げ下げさせます。タイヤの数は2つではなく3つにすることで安定感を出しましらた。また、毎回微妙に角度が変わってしまうことを懸念して、ペン先がぐらつかないようにブロックでペンを囲み、固定したことによって同じ角度で射出できるようにしました。 **ロボットの外観 [#ped3d4ae] #ref(./image11.JPG,50%,a) とにかくコンパクトにシンプルにするために、最初の授業で作ったロボットを使って作成した。そのおかげで持ち運びも楽になったし、壊れても修復しやすかった。また、本体の中心とペン先の位置がズレ過ぎてしまうと、ロボットを回転させた時にペン先のズレが大きくなってしまうので、極力ペンとロボットの距離を近くした。 極力コンパクトかつシンプルにするために、初回の授業で作ったロボットベースに作成しました。その甲斐あって楽に持ち運べるようになり、壊れても修復しやすかったです。また、本体の中心とペン先の位置がズレ過ぎてしまうと、ロボットを回転させた時にペン先のズレが大きくなってしまうので、極力ペンとロボットの距離を近くしました。 *結果 [#r7dbce1a] #ref(./漢字.jpg,10%,a) 上手くいくときとそうでないときがありましたらそうでないときがありました。今回はあまり上手くいきませんでした。特に二画目と四画目の始めが上手くいくかいかないかで全体の出来が決まります。