[[2018b/Member]] 目次 #contents *ロボット [#ved1d432] **ロボット紹介 [#c75ff2b4] **このロボットに至った経緯 [#p7406d78] 一週間しか課題に取り組む時間が無かったことから自動車にペンを取り付けたロボットはプログラミングが間に合わないと思いxy座標が簡単に分かるロボットを作ろうと思った。 まず最初に思い付いたのは写真のような装置である。A4の紙の中心に設置し軸の回転を字の横方向に、ペンの進退を字の縦方向にして丸みを帯びた字を描くように作った。しかし完成したこの装置にLANケーブルを繋いでみたところLANケーブルが思っていたよりも固く、装置に思ってもいない力が働いてしまったため断念した。 一つ目の装置で分かったことは一番長いLANケーブルは一つしか無いためモーター自体が移動する場合、移動するモーターは1つだけの方がいいということである。EV3を装置に乗せることができるのならば今言ったことはあまり考えなくてもいいことだが、EV3は他のパーツに比べて大分重たいため重心を取りづらいというデメリットがあった。これらを考慮した結果、動かすのは装置ではなく紙にすればいいのではないかと思い、プリンタを真似したものを作った。 **製作段階での問題点 [#se6aad95] ***重心 [#nf1cd4b2] プリンタ型を製作するにあたって紙自体を動かすためには紙を動かすタイヤにある程度の重さが乗っかっていないといけない。写真は試作機のものだがこの位置にタイヤのモータを取り付けるとモーターの重さが右の方の支えに乗っかていて、尚且つ左のタイヤに若干上方向の力が掛かってしまい紙を動かしたときに紙が傾いてしまった。 *プログラム [#jda92f59] **はじめに [#l1aaa2f8] この型の装置はモータの角度を変数tとしてtの値をいじることでtの値を入力したとき縦と横のながさを揃えることができる。よってあらかじめ方眼紙に文字を書いておいて方眼紙のマス目の一片の長さをtとして考えればプログラムが簡単になる **各定義 [#lb18ae3f] lift = MediumMotor('outA') belt = LargeMotor('outB') tire = LargeMotor('outC') def motor_init(): for m in [lift,belt,tire]: m.reset() m.speed_sp=100 m.stop_action='hold' def liftup(): lift.run_to_rel_pos(position_sp=-110) sleep(2) def liftdown(): lift.run_to_rel_pos(position_sp=110) sleep(2) def beltmove(t): belt.run_to_rel_pos(position_sp=t) def tiremove(t): tire.run_to_rel_pos(position_sp=-t*0.8) モーターのスピードが100なのはタイヤの動きが速いと2つのタイヤを繋げる棒にねじれが生じるから。 tiremoveの変数に「-」が掛かっているのは装置の開いている部分から見て下方向の動きをプラスとして考えたいから。 tiremoveの変数に「0.8」が掛かっているのは横と縦の単位長さを揃えたいから。 **文字を書くプログラム [#t2f78c72] ***「横」の偏 [#y74ab2f3] def kihen(t): beltmove(t) sleep(2) liftdown() beltmove(t*3) sleep(3) liftup() beltmove(-t) sleep(2) tiremove(-t*3) sleep(3) liftdown() tiremove(t*11) sleep(4) liftup() tiremove(-t*8) sleep(4) liftdown() beltmove(-t*2) tiremove(t*2) sleep(2) liftup() beltmove(t*4) sleep(3) liftdown() beltmove(-t*2) tiremove(-t*2) sleep(2) liftup() tiremove(-t*2) sleep(2) 3画目までは書き順通りに進め、4画目は省略のために右下から左上に進めた。 ***「横」の旁 [#we8ee920] def ki_ue(t): beltmove(t*3) sleep(2) liftdown() beltmove(t*6) sleep(3) liftup() beltmove(-t*7) sleep(4) tiremove(t*2) sleep(2) liftdown() beltmove(t*8) sleep(4) liftup() beltmove(-t*5) sleep(3) liftdown() tiremove(-t*3) sleep(2) liftup() beltmove(t*2) sleep(2) liftdown() tiremove(t*3) sleep(2) liftup() beltmove(-t*3) sleep(2) def ki_naka(t): tiremove(t) sleep(2) liftdown() beltmove(t*4) sleep(3) liftup() tiremove(t*2) sleep(2) liftdown() beltmove(-t*4) sleep(3) liftup() tiremove(t*2) sleep(2) liftdown() beltmove(t*4) sleep(3) tiremove(-t*4) sleep(3) liftup() beltmove(-t*2) sleep(2) liftdown() tiremove(t*4) sleep(3) liftup() beltmove(-t*2) sleep(2) liftdown() tiremove(-t*4) sleep(3) liftup() beltmove(-t) sleep(2) def ki_shita(t): tiremove(t*7) sleep(4) liftdown() beltmove(t*2) tiremove(-t*2) sleep(2) liftup() beltmove(t*2) sleep(2) liftdown() beltmove(t*2) tiremove(t*2) sleep(2) liftup() 「黄」の1〜4画、5〜9画、10〜11画をそれぞれue,naka,shitaと定義した。 5〜9画目は「由」という字のはずが間違えて「田」になっている。これはプログラミングのミスではなく自分のミス。 *文字 [#zd825214]