2018a/Member/mochi/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2018a/Member]]
#contents
*更新履歴 [#y7eb06be]
8月10日ープログラム上の説明を追記
*課題について [#off65039]
**課題内容 [#q4b470e5]
これまでに住んだことのある都道府県名、市町村名、地区名などの中から2文字以上のものを選び、それをA4の紙に書くロボットを制作せよ。
**選んだ文字 [#te2a1eff]
群馬県出身なので「群馬」
*ロボットについて [#o72ea476]
**ロボット [#pb49427b]
#ref(2018a/Member/mochi/Mission1/s_DSC_0190.JPG,50%, )
先駆者さんを参考にさせていただいた。
**横移動 [#v0d6671b]
#ref(2018a/Member/mochi/Mission1/s_DSC_0194.JPG,50%, )
キャタピラを用いて平面の移動をできるようにした。
斜め移動も可。
**縦移動 [#v0546bf1]
#ref(2018a/Member/mochi/Mission1/s_DSC_0191.JPG,50%, )
ミディアムモーターの回転移動を用いて上下移動をできるようにした。
*プログラム概要 [#k2762422]
**モジュールのインポート及びモーターの名前付け [#af119627]
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep
mx = LargeMotor('outA')
my = LargeMotor('outB')
mz = MediumMotor('outC')
time関数をインポート。
名前はx軸方向をmx,y軸方向をmy,z軸方向をmzとした。
**諸々の関数の定義 [#c16e08bd]
def forward (i,j): #同時にx方向にi[cm],y方向にj[cm]進む
if i > 0: #x方向の進行方向を判定
speed_x = -100
else:
i = -i
speed_x = 100
if j > 0: #y方向の進
行方向を判定
speed_y = -100
else:
speed_y = 100
j = -j
mx.run_timed(time_sp = i * 250, speed_sp = speed_x)
my.run_timed(time_sp = j * 250, speed_sp = -speed_y)
i, jを実数とし、
x軸の正の方向にi[cm], y軸の正の方向にj[cm]だけ進みたければ
ベクトル(i, j)を渡すことにより実行できる。
i<0 のときはx軸は負の向きへ、j<0のときはy軸が負の向きへ移動することにより、
向きの指定が符号の違いのみで指定できる。
def up(): #ペンを上げる
mz.run_timed(time_sp = 300, speed_sp = -100)
ペンを上げる。
def down(): #ペンを下げる
mz.run_timed(time_sp = 300, speed_sp = 100)
ペンを下げる
def down_forward_up(i, j):
down()
time.sleep(1)
forward(i, j)
time.sleep(1)
up()
down(), forwarf(i, j), up()の合成。
定義しておくことで入力が少なくできるときがあるため定義。
*実際に描写 [#c19a2a13]
前節で定義した関数を適宜用いて書いていけば良い。
**「群」 [#ic55152e]
down()
time.sleep(1)
forward(2.4, 0) #一画目
time.sleep(1)
forward(0, 2.4)
time.sleep(1)
forward(-2.4, 0) #二画目
time.sleep(1)
up()
time.sleep(1)
forward(0, -1.2) #三画目に移動
time.sleep(1)
down()
time.sleep(1)
forward(2.4, 0) #三画目
time.sleep(1)
up()
time.sleep(1)
forward(-1.2, -1.2) #四画目に移動
time.sleep(1)
down()
time.sleep(1)
forward(0, 2.4) #四画目
time.sleep(1)
forward(-2.4, 2.4) #四画目
time.sleep(1)
up()
time.sleep(1)
forward(1.2, -1.2) #五画目に移動
time.sleep(1)
down()
forward(0, 1.2) #五画目
time.sleep(1)
forward(0, 2.4)
time.sleep(1)
forward(0, -2.4)
time.sleep(1)
forward(-2.4, 0)
time.sleep(1)
up()
time.sleep(1)
forward(1.2, -4.8) #6画目に移動
time.sleep(1)
down_forward_up(0.4, 1.2) #6画目
time.sleep(1)
forward(1.6, -1.2) #7画目に移動
time.sleep(1)
down_forward_up(-0.4, 1.2) #7画目
time.sleep(1)
forward(-1.6, 0.6) #8画目に移動
time.sleep(1)
down_forward_up(2.4, 0) #8画目
time.sleep(1)
forward(-1.6,0.8) #9画目に移動
time.sleep(1)
down_forward_up(1.2, 0) #9画目
time.sleep(1)
forward(-1.6,0.8) #10画目に移動
time.sleep(1)
down_forward_up(2.4, 0) #10画目
time.sleep(1)
forward(-1.2, -2.4) #11画目に移動
time.sleep(1)
down_forward_up(0, 4) #11画目
time.sleep(1)
**「馬」 [#xb28616a]
forward(4, 6) #1画目に移動
time.sleep(1)
down_forward_up(4, 0) #1画目
time.sleep(1)
forward(-4, 0.8) #2画目に移動
time.sleep(1)
down_forward_up(4, 0) #2画目
time.sleep(1)
forward(-4, 0.8) #3画目に移動
time.sleep(1)
down_forward_up(4, 0) #3画目
time.sleep(1)
forward(-4, -1.6) #4画目に移動
time.sleep(1)
down_forward_up(0, 2.4) #4画目
time.sleep(1)
forward(0.8, -2.4) #5画目に移動
time.sleep(1)
down_forward_up(0, 2.4) #5画目
time.sleep(1)
forward(-0.8, 0) #6画目に移動
time.sleep(1)
down()
time.sleep(1)
forward(3.0, 0) #7画目
time.sleep(1)
forward(-0.2, 2.4)
time.sleep(1)
forward(-0.6, 0.2)
time.sleep(1)
up()
time.sleep(1)
forward(-4, -1.6) #8画目に移動
time.sleep(1)
down_forward_up(0, 1.2) #8画目
time.sleep(1)
forward(0.6, -1.2) #9画目に移動
time.sleep(1)
down_forward_up(0, 1.2) #9画目
time.sleep(1)
forward(0.6, -1.2) #10画目に移動
time.sleep(1)
down_forward_up(0, 1.2) #10画目
time.sleep(1)
forward(0.6, -1.2) #11画目に移動
time.sleep(1)
down_forward_up(0, 1.2) #11画目
*実際に書けた文字 [#r961cfb0]
実際にはこのような文字が書けた。
#ref(2018a/Member/mochi/Mission1/s_DSC_0195.JPG,50%, )
とても文字には見えない。
*反省 [#led171a4]
私のプログラムには自身があったが、ロボット自身にいくつか欠陥があった。
致命的なのは全体の剛性の低さで、それゆえにキャタピラの回転がペンの移動に今ひとつ伝わらず、
移動自体が困難な状態であった。また、ペンも筆先がもう少し短いほうが良かったと感じている。
*改善策 [#k6ae1bcc]
ロボットの補強。
筆ペンの再考。
終了行:
[[2018a/Member]]
#contents
*更新履歴 [#y7eb06be]
8月10日ープログラム上の説明を追記
*課題について [#off65039]
**課題内容 [#q4b470e5]
これまでに住んだことのある都道府県名、市町村名、地区名などの中から2文字以上のものを選び、それをA4の紙に書くロボットを制作せよ。
**選んだ文字 [#te2a1eff]
群馬県出身なので「群馬」
*ロボットについて [#o72ea476]
**ロボット [#pb49427b]
#ref(2018a/Member/mochi/Mission1/s_DSC_0190.JPG,50%, )
先駆者さんを参考にさせていただいた。
**横移動 [#v0d6671b]
#ref(2018a/Member/mochi/Mission1/s_DSC_0194.JPG,50%, )
キャタピラを用いて平面の移動をできるようにした。
斜め移動も可。
**縦移動 [#v0546bf1]
#ref(2018a/Member/mochi/Mission1/s_DSC_0191.JPG,50%, )
ミディアムモーターの回転移動を用いて上下移動をできるようにした。
*プログラム概要 [#k2762422]
**モジュールのインポート及びモーターの名前付け [#af119627]
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep
mx = LargeMotor('outA')
my = LargeMotor('outB')
mz = MediumMotor('outC')
time関数をインポート。
名前はx軸方向をmx,y軸方向をmy,z軸方向をmzとした。
**諸々の関数の定義 [#c16e08bd]
def forward (i,j): #同時にx方向にi[cm],y方向にj[cm]進む
if i > 0: #x方向の進行方向を判定
speed_x = -100
else:
i = -i
speed_x = 100
if j > 0: #y方向の進
行方向を判定
speed_y = -100
else:
speed_y = 100
j = -j
mx.run_timed(time_sp = i * 250, speed_sp = speed_x)
my.run_timed(time_sp = j * 250, speed_sp = -speed_y)
i, jを実数とし、
x軸の正の方向にi[cm], y軸の正の方向にj[cm]だけ進みたければ
ベクトル(i, j)を渡すことにより実行できる。
i<0 のときはx軸は負の向きへ、j<0のときはy軸が負の向きへ移動することにより、
向きの指定が符号の違いのみで指定できる。
def up(): #ペンを上げる
mz.run_timed(time_sp = 300, speed_sp = -100)
ペンを上げる。
def down(): #ペンを下げる
mz.run_timed(time_sp = 300, speed_sp = 100)
ペンを下げる
def down_forward_up(i, j):
down()
time.sleep(1)
forward(i, j)
time.sleep(1)
up()
down(), forwarf(i, j), up()の合成。
定義しておくことで入力が少なくできるときがあるため定義。
*実際に描写 [#c19a2a13]
前節で定義した関数を適宜用いて書いていけば良い。
**「群」 [#ic55152e]
down()
time.sleep(1)
forward(2.4, 0) #一画目
time.sleep(1)
forward(0, 2.4)
time.sleep(1)
forward(-2.4, 0) #二画目
time.sleep(1)
up()
time.sleep(1)
forward(0, -1.2) #三画目に移動
time.sleep(1)
down()
time.sleep(1)
forward(2.4, 0) #三画目
time.sleep(1)
up()
time.sleep(1)
forward(-1.2, -1.2) #四画目に移動
time.sleep(1)
down()
time.sleep(1)
forward(0, 2.4) #四画目
time.sleep(1)
forward(-2.4, 2.4) #四画目
time.sleep(1)
up()
time.sleep(1)
forward(1.2, -1.2) #五画目に移動
time.sleep(1)
down()
forward(0, 1.2) #五画目
time.sleep(1)
forward(0, 2.4)
time.sleep(1)
forward(0, -2.4)
time.sleep(1)
forward(-2.4, 0)
time.sleep(1)
up()
time.sleep(1)
forward(1.2, -4.8) #6画目に移動
time.sleep(1)
down_forward_up(0.4, 1.2) #6画目
time.sleep(1)
forward(1.6, -1.2) #7画目に移動
time.sleep(1)
down_forward_up(-0.4, 1.2) #7画目
time.sleep(1)
forward(-1.6, 0.6) #8画目に移動
time.sleep(1)
down_forward_up(2.4, 0) #8画目
time.sleep(1)
forward(-1.6,0.8) #9画目に移動
time.sleep(1)
down_forward_up(1.2, 0) #9画目
time.sleep(1)
forward(-1.6,0.8) #10画目に移動
time.sleep(1)
down_forward_up(2.4, 0) #10画目
time.sleep(1)
forward(-1.2, -2.4) #11画目に移動
time.sleep(1)
down_forward_up(0, 4) #11画目
time.sleep(1)
**「馬」 [#xb28616a]
forward(4, 6) #1画目に移動
time.sleep(1)
down_forward_up(4, 0) #1画目
time.sleep(1)
forward(-4, 0.8) #2画目に移動
time.sleep(1)
down_forward_up(4, 0) #2画目
time.sleep(1)
forward(-4, 0.8) #3画目に移動
time.sleep(1)
down_forward_up(4, 0) #3画目
time.sleep(1)
forward(-4, -1.6) #4画目に移動
time.sleep(1)
down_forward_up(0, 2.4) #4画目
time.sleep(1)
forward(0.8, -2.4) #5画目に移動
time.sleep(1)
down_forward_up(0, 2.4) #5画目
time.sleep(1)
forward(-0.8, 0) #6画目に移動
time.sleep(1)
down()
time.sleep(1)
forward(3.0, 0) #7画目
time.sleep(1)
forward(-0.2, 2.4)
time.sleep(1)
forward(-0.6, 0.2)
time.sleep(1)
up()
time.sleep(1)
forward(-4, -1.6) #8画目に移動
time.sleep(1)
down_forward_up(0, 1.2) #8画目
time.sleep(1)
forward(0.6, -1.2) #9画目に移動
time.sleep(1)
down_forward_up(0, 1.2) #9画目
time.sleep(1)
forward(0.6, -1.2) #10画目に移動
time.sleep(1)
down_forward_up(0, 1.2) #10画目
time.sleep(1)
forward(0.6, -1.2) #11画目に移動
time.sleep(1)
down_forward_up(0, 1.2) #11画目
*実際に書けた文字 [#r961cfb0]
実際にはこのような文字が書けた。
#ref(2018a/Member/mochi/Mission1/s_DSC_0195.JPG,50%, )
とても文字には見えない。
*反省 [#led171a4]
私のプログラムには自身があったが、ロボット自身にいくつか欠陥があった。
致命的なのは全体の剛性の低さで、それゆえにキャタピラの回転がペンの移動に今ひとつ伝わらず、
移動自体が困難な状態であった。また、ペンも筆先がもう少し短いほうが良かったと感じている。
*改善策 [#k6ae1bcc]
ロボットの補強。
筆ペンの再考。
ページ名: