2018a/Member

目次

課題

課題内容

選んだ文字

今回私が選んだ文字は、一度住んだことがあり、日本の象徴でもある、「富士」である。

ロボットについて

ロボット

今回制作したロボットは、モータを3つ使用し、一つのモータには、ペンの上下運動を行わせ、もう一つのモータは、レールの上を走らせることで、主に字の横書きの左右運動をさせ、最後の一つは、主に字の縦書きとなる前後の動きをさせる。

ペン
ペン2

この3つのモータを利用した理由は、よくある一つのモータで動かすロボットとは違い、字が安定すると思ったからだ。

今回は、EV3には輪ゴムが入っておらず、どうやって固定するかに悩んだ。その結果、この赤い部分のように作り、ペンをしっかり固定することができた。 仕組みとしては単純で、モータの回転によりペンの固定部分が連動し、上へ動いたり、下に動いたりする。

レール

レールについて、四つの足で固定し、尚且つ、タイヤのブレを抑えるため、ちょうど通る道幅にした。

プログラムについて

モジュールのインポートとインスタンスの作成部分

#!/usr/bin/env python3
from ev3dev. ev3 import *
from time import sleep     #timeモジュールをインポート
m = LargeMotor('outB')     #横書きするための横移動をメインとする
LIFT = MediumMotor('outC') #ペンの上下をメインとする
M = LargeMotor('outA')     #縦書きするための縦移動をメインとする

関数の作成部分

def motor_init():  #各モータをリセットする
   m.reset()
   LIFT.reset()
   M.reset()
def lift_up():     #ペンを持ち上げる動作
   LIFT.run_to_rel_pos(position_sp=180, speed_sp=250, stop_action='hold')
   sleep(2)
def move_left(t):  #文字に対し左に移動する
   m.run_to_rel_pos(position_sp=t, speed_sp=150, stop_action='hold')
   sleep(2)
def move_right(r): #文字に対し右に移動する
   m.run_to_rel_pos(position_sp=r, speed_sp=150, stop_action='hold')
   sleep(2)
def move_forward(f): #文字に対し上に移動する
   M.run_to_rel_pos(position_sp=f, speed_sp=100, stop_action='hold')
   sleep(2)
def move_back(b):  #文字に対し下に移動する
   M.run_to_rel_pos(position_sp=b, speed_sp=100, stop_action='hold')
   sleep(2)
def lift_down():   #ペンを下ろす動作
   LIFT.run_to_rel_pos(position_sp=-180, speed_sp=250, stop_action='hold')
   sleep(2)

今回は、秒数でモータの回転を操作すると、多少の誤差が生じることがわかり、モータの回転した角度で制御することにした。

関数について、プログラミングを書くとき自分でも書きやすく見やすいよう、する動作の言葉を用いてみた。例えとして、【move_left】をあげる、これは、左方向に移動するときに使用する。 また、縦書きにしても、横書きにしてもそれぞれ長さが違うため、変数を置いてそれぞれの長さを調整した。

「富」の部分

#一画目                 
lift_down()
move_back(30)
lift_up()
move_left(90)         →二画目の位置に移動
#二画目
lift_down()
move_back(20)
lift_up()
move_forward(-20)    →三画目の位置に移動
#三画目
lift_down()
move_right(-180)
move_back(20)
lift_up()
move_forward(-8)     →四画目の位置に移動
move_left(157.5)
#四画目
lift_down()
move_right(-130)
lift_up()
move_left(130)       →五画目の位置に移動
move_back(15)
#五画目
lift_down()
move_back(15)
lift_up()
move_forward(-15)    →六角目の位置に移動
#六画目
lift_down()
move_right(-130)
move_back(15)
lift_up()
move_left(130)      →七画目の位置に移動 
#七画目
lift_down()
move_right(-130)
lift_up()
move_left(135)     →八画目の位置に移動
move_back(15)
#八画目
lift_down()
move_back(22)
lift_up()
move_forward(-22)  →九画目の位置に移動
#九画目
lift_down()
move_right(90)
move_back(22)
lift_up()
move_forward(-22)  →十画目の位置に移動
move_left(45)
#十画目
lift_down()
move_back(22)
lift_up()
move_forward(-22)  →十一画目の位置に移動
move_left(45)
move_back(11)
#十一画目
lift_down()
move_right(-180)
lift_up()
move_left(180)     →十二画目の位置に移動
move_back(11)
#十二画目
lift_down()
move_right(-180)
lift_up()

富の部分は、画数が多いため、とても長いプログラミングができてしまった。 また、頑張って書き順を意識して書いた。

「士」の部分

move_left(180)     →「富」の十二画目から「士」と一画目に移動
move_back(25)
#一画目
lift_down()   
move_right(-180)
lift_up()
move_left(90)      →二画目の位置に移動
move_forward(-25)
#二画目
lift_down()
move_back(50)
lift_up()
move_left(70)     →三画目の位置に移動
#三画目
lift_down()
move_right(-140)
lift_up()

富の部分が複雑な分、士の部分は画数が少なく短いプログラミングで書くことができた。

今回書けた字

字

この写真のものが一番きれいに書けたと思うものだ。今回作成したロボットでは、字を大きく書いてしまったせいか、ずれが起きることがただあった。 また、一画一画の間隔の取り方も難しかった。

反省

文字を書くロボットにタイヤを使ってしまったことだと思う。摩擦による影響で滑ってしまったりで、思うように動いてくれなかった。また、レールのところも微妙にずれていたりするので、そこも惜しいところ…

感想

初めての課題ということで、かなり試行錯誤したし、組み立てなどの時間、思うように動かすプログラミングを書くのが大変だった。また、ペンの圧力や、残り電池残量によっても、結果がかなり変わってくるのでそこの調整が大変だった。


添付ファイル: fileDSC_0002_9.jpg 148件 [詳細] fileDSC_0185.jpg 183件 [詳細] fileDSC_0194.jpg 170件 [詳細] fileDSC_0191.jpg 204件 [詳細] fileDSC_0183.jpg 147件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-08-13 (月) 08:25:47