2019a/Member

目次

課題1

課題内容 

文字を書くロボットの製作、住んだことのある地名を2文字以上、10画以上でA4紙に書かせる。私は西宮を書かせることにした。地元愛が強めなので失敗は許されない。 

方針 

西宮という文字は四角に動く動作を多めに多様し、出来るだけ移動を少なくした動作をすれば簡易だと予測。前年度の方の記述を見る限り先にプログラミングを書き殴っている印象を受けたが、私は一画ずつ微調整して完成させようという方針を立てた。

制作したロボット 

機体全体像

s_S__68747276_new.jpg 

機構1は本体を前後するため、機構2はペンを上下すなわち書き始め終わりを作る為にラージモーターを使用。機構3はペンを左右に動かすためにミディアムモーターを使用。

モーターの駆動にrun_to_rel_posという決められた角度だけ回すというメソッドを使用、このおかげで変数が1つなので一画ずつ書いていくやり方がマッチしていた。

機構1

ラージモーターで本体を動かすシンプルな機構である。ここの動きがもっともペンの線をまっすぐ引ける。

機構2

s_S__68747277_new.jpg 

ペンを上下すなわち書き始め終わりを作る為にラージモーターを使用、機体3と連動させるために結合部分には気を遣った。支えられるぎりぎりの重さなので重いペンは使用できないだろう。

機構3

s_S__68747272_new.jpg 

ミディアムモーターでペンを左右に揺らす。この際設置したペンを巻き込まないよう注意する必要あり。単純にかっこよいからとキャタピラ及び無限軌道を採用したがここが今回の一番の鬼門だった。理由は後述する。

文字の書き方 

S__68747281.jpg

回転角度と長さの関係が縦180→13僉_360→13僉180や360はrun_to_rel_posのposition_spに入れる値)であることを相方が調べてくれていたが一画一画書いていく方針なのでそこはあまりきにしなかった。根気の作業である。正直ここで書けるほどの記憶はない。徹夜での作業だったのである。とりあえず意識していたのは無駄のない動き、つまりは書き順とプログラムが書きやすいようにピンクの色の線は高さをそろえた。後はひたすら微調整である。

プログラム 

EV3を扱っておりプログラミングにTera TermというソフトからPythonという言語を用いた。

yoko = MediumMotor('outB') 
tate = LargeMotor('outA')
mae = LargeMotor('outD' ) 

モーターに名前をつけていく。

def orosu():
      tate.run_to_rel_pos(position_sp=-90, speed_sp=300, stop_action='brake')
def ageru():
      tate.run_to_rel_pos(position_sp=90, speed_sp=300, stop_action='brake')
def migi(a):
      yoko.run_to_rel_pos(position_sp=-a, speed_sp=300, stop_action='brake')
def hidari(b):
      yoko.run_to_rel_pos(position_sp=b, speed_sp=300, stop_action='brake')
def susumu(c):
      mae.run_to_rel_pos(position_sp=-c, speed_sp=200, stop_action='brake')
def sagaru(d):
      mae.run_to_rel_pos(position_sp=d, speed_sp=200, stop_action='brake') 

定義して調節しやすく、見やすくする。 ここにあとからabcdを代入していく方式である。 

実際に動作させたプログラムは以下である。 

#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep
yoko = MediumMotor('outB')
tate = LargeMotor('outA')
mae = LargeMotor('outD')
def orosu():
       tate.run_to_rel_pos(position_sp=-90, speed_sp=300, stop_action='brake')
def ageru():
       tate.run_to_rel_pos(position_sp=90, speed_sp=300, stop_action='brake')
def migi(a):
       yoko.run_to_rel_pos(position_sp=-a, speed_sp=300, stop_action='brake')
def hidari(b):
       yoko.run_to_rel_pos(position_sp=b, speed_sp=300, stop_action='brake')
def susumu(c):
       mae.run_to_rel_pos(position_sp=c, speed_sp=200, stop_action='brake')
def sagaru(d):
       mae.run_to_rel_pos(position_sp=-d, speed_sp=200, stop_action='brake') 

導入と定義である。

orosu()
sleep(3)
susumu(165)
sleep(3)
migi(180)
sleep(3)
sagaru(165)
sleep(3)
hidari(180)
sleep(3)
ageru()
migi(240)
sleep(3)
orosu()
sleep(3)
susumu(165)
sleep(3)
ageru()
sleep(3)
sagaru(85)
sleep(3)
orosu()
sleep(3)
sagaru(80)
hidari(225)
sleep(3)
ageru()
migi(225)
susumu(95)
sleep(3)
orosu()
sleep(3)
hidari(155)
sleep(3)
susumu(70)
sleep(3)
ageru()
migi(90)
sleep(3) 

ここで西を書き終える。

susumu(30)
sleep(3)
orosu()
sleep(3)
migi(50)
sleep(3)
susumu(175)
sleep(3)
hidari(50)
sagaru(10)
sleep(3)
ageru() 
sagaru(47.5)
sleep(3)
orosu()
sleep(3)
hidari(50)
sleep(3)
sagaru(50)
sleep(3)
migi(50)
sleep(3)
susumu(40)
sleep(3)
ageru()
sagaru(20)
sleep(3)
sleep(3)
orosu()
sleep(3)
migi(40)
sleep(3)
ageru()
sleep(3)
hidari(140)
sleep(3)
orosu()
sleep(3)
sagaru(30)
hidari(20)
sleep(3) 
sagaru(20)
sleep(3)
hidari(110)
sleep(3)
susumu(100)
sleep(3)
migi(110)
sleep(3)
sagaru(100)
sleep(3)
ageru()
 

完成である。

S__68747280.jpg

撮影していたので動画を限定公開する。 https://youtu.be/-clGInIQXc8 

反省 

ペンを持ち上げる力が弱いのか、相方は大丈夫だったがペン先がたるむペンだとうまくペンがあがらなかったりした。キャタピラを用いた部分が非常に不規則すなはちガタガタに動いて鬼門だった。これは少し考えれば予測出来たので反省点としての点は高い。キャタピラの不規則さを制御して綺麗な文字をかくのは非常にきつかった。あときちんとプログラム通りに動かない問題が発生したとき、問題点を発見出来なかったのは反省点である。モーターをつなぎ直すと何故か直った。

感想 

初めてのロボットの設計とプログラミングで、困難は多々あり。それと時間に比例して大きな達成感もあった。この課題を通し機体製作、プログラミングの知識やそれの負担苦悩、それを解決する気持ちよさを少しでも味わえたと感じる。これが将来プログラマーになる糧になっただろう。楽しかった


添付ファイル: fileS__68747280.jpg 2件 [詳細] fileS__68747281.jpg 3件 [詳細] files_S__68747277_new.jpg 6件 [詳細] files_S__68747272_new.jpg 6件 [詳細] files_S__68747276_new.jpg 5件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-06-07 (金) 17:43:41 (44d)