[[2019a/Member]] uno dos try *ロボットの概要 [#n71effc0] 今回の課題を行う上で文字を書くのに必要な要素は水平方向に縦と横への動きとペンを上げ下げする垂直方向の三次元的な動作が必要であったため三つのモーターを使ってこれらの動きを実現することを考えた。 画像 *動作域解説 [#d43a9dda] -縦軸 LargeMotorを使用。タイヤを利用して本体ごと移動することで縦軸の移動を可能にした。本体を支える土台となる部分なのでモーターに取り付けたタイヤ2つに加え小タイヤ2つを付け、4輪車にして強度を高めた。 -横軸 LargeMotor使用。写真のようなスライド式にした。設計上、スライド時に引っかかることが多かったため、長めのパーツを使って対策した。 -垂直 MIdiumMotorを使用。ペンの固定には小タイヤのゴム部分を使用し、輪ゴムはいっさい使っていない。ペンは斜めに固定し、45°程度回転させて上げ下げを行った。本体の重心から離れた位置であることや、可動部設置しているため、非常にぶれやすい部分であったが、できる限り固定をしたので比較的きれいな直線絵を描くことができた。 -その他の工夫 全体の重心を意識してEV3本体は可動部の反対につけた。 可動域に配線が絡まないよう、接続位置に注意した。 *プログラム解説 [#rede844e] #!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep l = LargeMotor('outC') m = LargeMotor('outB') n = MediumMotor('outA') def motor_hakusi():#リセットは関数にしてまとめて行うこととした l.reset() m.reset() n.reset() def move_tate(a,b):#縦軸の動きの関数。微調整のため、変数を置いた。 l.run_forever(speed_sp=a, stop_action='hold') sleep(b) l.stop() def yoko_right(c,d): m.run_forever(speed_sp=c, stop_action='hold') sleep(d) m.stop() def yoko_left(g):#共に横軸の関数。縦軸同様変数を設定した。 m.run_forever(speed_sp=-100, stop_action='hold') sleep(g) m.stop() def fude_age():#ペンを上げる動作 n.run_to_rel_pos(position_sp=-45, speed_sp=200, stop_action='brake') sleep(1) def fude_sage():#ペンを下げる動作 n.run_to_rel_pos(position_sp=45, speed_sp=200, stop_action='brake') sleep(1) def kuchi(e,f):#口の字を書く関数。先に定義した関数を使ってまとめた。 fude_sage() yoko_right(100,e) move_tate(-80,1) yoko_left(f) move_tate(80,1) fude_age() def hidari_shita(x):#川の左の動きを設定した。縦軸を動かしながら横軸を左右にずらして手書き感を出そうと試行錯誤した。 l.run_forever(speed_sp=-130,stop_action='brake') m.run_forever(speed_sp=60,stop_action='brake') sleep(x) m.stop() sleep(2*x) m.run_forever(speed_sp=-75,stop_action='brake') sleep(3*x) m.stop() l.stop()