2019a/Member/takumi/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
#contents
*課題1 [#k5c6c7ab]
**内容 [#y1be85cc]
「これまで住んだことのある都道府県名、市町村名、地区名な...
**選んだ文字 [#n4beeadb]
実家のある&size(20){岐阜};県から「岐阜」という文字を選ん...
*ロボット [#j48b57d2]
**作成したロボット [#c3869e45]
&ref(robot1.png);
&ref(robot2.png);
**ロボットの説明 [#j1e16062]
作成したロボットはEV3の組み立て説明書に書いてあるものとほ...
***?ペンの持ち手 [#r988927b]
&ref(arm.png);~
ペンの持ち手は上の写真のようにして、文字を書いているとき...
***?ギア [#w909aa7c]
EV3のモーターはとても精度が悪く、そのまま使うことが出来な...
&ref(gear1.png);
&ref(gear2.png);~
この写真のように~
&size(20){モーター};→&size(20){歯数8の歯車};→&size(20){歯...
と歯車を組み合わせることによってモーターの精度を5倍にした。
また、この時にタイヤを組み立て説明書に書いてあるより少し...
*プログラムの準備 [#b86ad5de]
**モジュールのインポート [#p32ed8f9]
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep
**インスタンスの作成 [#mb56dae8]
mL = LargeMotor("outA")
mR = LargeMotor("outB")
mP = MediumMotor("outC")
-mLはロボットを後ろから見たとき、左側(&size(20){L};eft)に...
-mRはロボットを後ろから見たとき、右側(&size(20){R};ight))...
-mPはペン(&size(20){P};en)の上げ下げをするモーター(&size(...
**関数の定義 [#o97328d5]
以下の関数を定義する。
-ロボットを前進/後進させる関数
-ロボットを&size(18){2つのタイヤの真ん中を中心として};時...
-ロボットを&size(18){ペンを中心として};時計回り/反時計回...
-ペンを上げる/下げる関数
また、これらの関数では以下の点を統一した。
-speed_spは±360にした。
-stop_actionは"hold"にした。
-スリープさせる秒数は余裕をもって理論上の動作にかかる秒数...
***ロボットを前進させる関数 [#l1147a34]
def forward(distance):
mL.run_timed(time_sp=distance / 35 * 1000, speed_sp=...
mR.run_timed(time_sp=distance / 35 * 1000, speed_sp=...
sleep(distance / 35 * 1.5)
引数:~
-distance:前進させる距離をmmで指定する。~
この関数の解説:~
-time_spはロボットを1秒前進させると約35mm進むので、そこか...
-前進させるときのspeed_spはギアの関係で&size(20){負};にな...
&ref(function forward.png);~
***ロボットを後進させる関数 [#pd9382d7]
def backward(distance):
mL.run_timed(time_sp=distance / 35 * 1000, speed_sp=...
mR.run_timed(time_sp=distance / 35 * 1000, speed_sp=...
sleep(distance / 35 * 1.5)
引数:~
-distance:後進させる距離をmmで指定する。~
この関数の解説:~
-time_spはロボットを1秒後進させると約35mm後進するので、そ...
-後進させるときのspeed_spは前進させるときの逆で&size(20){...
&ref(function backward.png);~
***ロボットを2つのタイヤの真ん中を中心として時計回りに回...
&ref(function clockwise.png);
def clockwise(angle):
mL.run_timed(time_sp=angle * (3550 / 90), speed_sp=-...
mR.run_timed(time_sp=angle * (3550 / 90), speed_sp=3...
sleep(angle * (3550 / 90) / 1000 * 1.5)
引数:~
-angle:時計回りに回転させる角度を度数法で指定する。~
この関数の解説:~
-図のように、2つのタイヤの真ん中(★)を中心としてangleだけ...
-time_spはtime_sp=3550でロボットが90度時計回りに回転する...
***ロボットを2つのタイヤの真ん中を中心として反時計回りに...
&ref(function counter_clockwise.png);
def counter_clockwise(angle):
mL.run_timed(time_sp=angle * (3550 / 90), speed_sp=3...
mR.run_timed(time_sp=angle * (3550 / 90), speed_sp=-...
sleep(angle * (3550 / 90) / 1000 * 1.5)
引数:~
-angle:反時計回りに回転させる角度を度数法で指定する。~
この関数の解説:~
-図のように、2つのタイヤの真ん中(★)を中心としてangleだけ...
-time_spはtime_sp=3550でロボットが90度時計回りに回転する...
***ロボットをペンを中心として時計回りに回転させる関数 [#i...
&ref(function right.png);
def right(angle):
forward(75)
clockwise(angle)
backward(75)
引数:~
-angle:時計回りに回転させる角度を度数法で指定する。~
この関数の解説:~
-ペンを中心にangleだけ時計回りに回転させるには、図のように
?ロボットを前進させて、ペンのあった位置に2つのタイヤの真...
?angleだけ時計回りに回転させる。
?ロボットを後進させて、ペンをもとの位置に合わせる。
という手順でロボットを動かせばいい。
-2つのタイヤの真ん中とペンとの距離は測定したところ約75mm...
***ロボットをペンを中心として反時計回りに回転させる関数 [...
&ref(function left.png);
def left(angle):
forward(75)
counter_clockwise(angle)
backward(75)
引数:~
-angle:反時計回りに回転させる角度を度数法で指定する。~
この関数の解説:~
-時計回りの時と同様に、ペンを中心にangleだけ反時計回りに...
?ロボットを前進させて、ペンのあった位置に2つのタイヤの真...
?angleだけ反時計回りに回転させる。
?ロボットを後進させて、ペンをもとの位置に合わせる。
という手順でロボットを動かせばいい。
-2つのタイヤの真ん中とペンとの距離は測定したところ約75mm...
***ペンを上げる関数 [#s0cf2593]
def penup():
mP.run_to_abs_pos(position_sp=30, speed_sp=360, stop...
sleep(1)
この関数の解説:
-具体的にはこの関数はロボットのペンを30度上にあげた状態に...
-スリープさせる時間が1秒なのは、この関数が実行される前の...
***ペンを下げる関数 [#b0f96e81]
def pendown():
mP.run_to_abs_pos(position_sp=-30, speed_sp=360, sto...
sleep(1)
この関数の説明:
-この関数を実行した後にロボットを動かすと線が引ける。
-具体的にはこの関数はロボットのペンを30度下げた状態にしよ...
-なぜposition_spの値を-10にしないで-30にするかというと、-...
-スリープさせる時間が1秒なのはpenupの時と同じ理由である。
*プログラム [#b21a53cd]
**書く順番 [#mc6e513d]
書く順番は次のとおりにした。~
&ref(stroke order.png);
**書き始めの位置 [#z7c45dbf]
書き始めの位置は次のようにした。~
&ref(start position.png);
**字を書く条件 [#ue2ebef7]
-清書するときは筆ペンを使った。
-筆ペンのインクが裏抜けして紙の下の床を汚さないようにA4の...
**字を書く [#b3cf96c7]
***「岐阜」の「岐」を書く [#rd1c0c47]
「岐」の「山」を書く
pendown() #ここから「岐」の1画目
forward(70)
penup()
backward(40)
right(90)
forward(20)
left(90)
pendown() #ここから「岐」の2画目
forward(40)
penup()
left(90)
pendown()
forward(40)
penup()
left(90)
pendown() #ここから「岐」の3画目
forward(40)
penup()
「岐」の「支」を書く
forward(30) #「岐」の3画目から4画目の位置に移動する
right(90)
forward(20)
pendown()
forward(60)
penup()
backward(30)
left(90)
forward(20)
pendown() #ここから「岐」の4画目
backward(40)
penup()
left(90)
forward(30)
pendown() #ここから「岐」の5画目
backward(60)
penup()
left(45)
pendown() #ここから「岐」の6画目
forward(90)
penup()
backward(90)
right(45)
forward(60)
right(45)
pendown() #ここから「岐」の7画目
backward(90)
penup()
***「岐」の7画目から「阜」の1画目の位置に移動する [#v57a3...
left(45)
forward(70)
left(45)
forward(30)
***「岐阜」の「阜」を書く [#n415b57e]
pendown() #ここから「阜」の1画目
forward(20)
penup()
left(45)
pendown() #ここから「阜」の2画目
forward(60)
penup()
backward(60)
left(90)
pendown() #ここから「阜」の3画目
forward(80)
penup()
right(90)
pendown()
forward(20)
penup()
right(90)
forward(80)
pendown() #ここから「阜」の4画目
backward(80)
penup()
forward(80)
left(90)
forward(20)
right(90)
pendown() #ここから「阜」の5画目
backward(80)
penup()
left(90)
pendown()
forward(20)
penup()
right(90)
forward(80)
pendown() #ここから「阜」の6画目
backward(80)
penup()
forward(90)
left(90)
forward(20)
right(90)
pendown() #ここから「阜」の7画目
backward(100)
penup()
forward(50)
right(90)
forward(20)
pendown() #ここから「阜」の8画目
backward(50)
penup()
*結果 [#k1d308d1]
結果は以下のようになった。~
&ref(result.png);~
*課題1のまとめ [#a9718dee]
**反省と考察 [#s1a36b95]
比較的うまく書けたと思う。ギアを付ける前は文字を書いても...
&ref(ideal result.png);~
(左がロボットが理想通りに動いたとき書けるはずの文字 右が...
今回の結果では、くっついているべき線と線がくっついていな...
+right関数やleft関数で2つのタイヤの真ん中とペンとの距離を...
+clockwise関数やcounter_clockwise関数でロボットを回転させ...
等が考えられる。ここをもう少しいじればもう少し良い結果が...
**次回に向けて [#hbdfce8b]
字を書くプログラムがここまで難しいとは思っていなかった。...
~
~
~
昨日の訪問者数: &counter(yesterday);人~
今日の訪問者数: &counter(today);人~
合計訪問者数: &counter(all);人
終了行:
[[2019a/Member]]
#contents
*課題1 [#k5c6c7ab]
**内容 [#y1be85cc]
「これまで住んだことのある都道府県名、市町村名、地区名な...
**選んだ文字 [#n4beeadb]
実家のある&size(20){岐阜};県から「岐阜」という文字を選ん...
*ロボット [#j48b57d2]
**作成したロボット [#c3869e45]
&ref(robot1.png);
&ref(robot2.png);
**ロボットの説明 [#j1e16062]
作成したロボットはEV3の組み立て説明書に書いてあるものとほ...
***?ペンの持ち手 [#r988927b]
&ref(arm.png);~
ペンの持ち手は上の写真のようにして、文字を書いているとき...
***?ギア [#w909aa7c]
EV3のモーターはとても精度が悪く、そのまま使うことが出来な...
&ref(gear1.png);
&ref(gear2.png);~
この写真のように~
&size(20){モーター};→&size(20){歯数8の歯車};→&size(20){歯...
と歯車を組み合わせることによってモーターの精度を5倍にした。
また、この時にタイヤを組み立て説明書に書いてあるより少し...
*プログラムの準備 [#b86ad5de]
**モジュールのインポート [#p32ed8f9]
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep
**インスタンスの作成 [#mb56dae8]
mL = LargeMotor("outA")
mR = LargeMotor("outB")
mP = MediumMotor("outC")
-mLはロボットを後ろから見たとき、左側(&size(20){L};eft)に...
-mRはロボットを後ろから見たとき、右側(&size(20){R};ight))...
-mPはペン(&size(20){P};en)の上げ下げをするモーター(&size(...
**関数の定義 [#o97328d5]
以下の関数を定義する。
-ロボットを前進/後進させる関数
-ロボットを&size(18){2つのタイヤの真ん中を中心として};時...
-ロボットを&size(18){ペンを中心として};時計回り/反時計回...
-ペンを上げる/下げる関数
また、これらの関数では以下の点を統一した。
-speed_spは±360にした。
-stop_actionは"hold"にした。
-スリープさせる秒数は余裕をもって理論上の動作にかかる秒数...
***ロボットを前進させる関数 [#l1147a34]
def forward(distance):
mL.run_timed(time_sp=distance / 35 * 1000, speed_sp=...
mR.run_timed(time_sp=distance / 35 * 1000, speed_sp=...
sleep(distance / 35 * 1.5)
引数:~
-distance:前進させる距離をmmで指定する。~
この関数の解説:~
-time_spはロボットを1秒前進させると約35mm進むので、そこか...
-前進させるときのspeed_spはギアの関係で&size(20){負};にな...
&ref(function forward.png);~
***ロボットを後進させる関数 [#pd9382d7]
def backward(distance):
mL.run_timed(time_sp=distance / 35 * 1000, speed_sp=...
mR.run_timed(time_sp=distance / 35 * 1000, speed_sp=...
sleep(distance / 35 * 1.5)
引数:~
-distance:後進させる距離をmmで指定する。~
この関数の解説:~
-time_spはロボットを1秒後進させると約35mm後進するので、そ...
-後進させるときのspeed_spは前進させるときの逆で&size(20){...
&ref(function backward.png);~
***ロボットを2つのタイヤの真ん中を中心として時計回りに回...
&ref(function clockwise.png);
def clockwise(angle):
mL.run_timed(time_sp=angle * (3550 / 90), speed_sp=-...
mR.run_timed(time_sp=angle * (3550 / 90), speed_sp=3...
sleep(angle * (3550 / 90) / 1000 * 1.5)
引数:~
-angle:時計回りに回転させる角度を度数法で指定する。~
この関数の解説:~
-図のように、2つのタイヤの真ん中(★)を中心としてangleだけ...
-time_spはtime_sp=3550でロボットが90度時計回りに回転する...
***ロボットを2つのタイヤの真ん中を中心として反時計回りに...
&ref(function counter_clockwise.png);
def counter_clockwise(angle):
mL.run_timed(time_sp=angle * (3550 / 90), speed_sp=3...
mR.run_timed(time_sp=angle * (3550 / 90), speed_sp=-...
sleep(angle * (3550 / 90) / 1000 * 1.5)
引数:~
-angle:反時計回りに回転させる角度を度数法で指定する。~
この関数の解説:~
-図のように、2つのタイヤの真ん中(★)を中心としてangleだけ...
-time_spはtime_sp=3550でロボットが90度時計回りに回転する...
***ロボットをペンを中心として時計回りに回転させる関数 [#i...
&ref(function right.png);
def right(angle):
forward(75)
clockwise(angle)
backward(75)
引数:~
-angle:時計回りに回転させる角度を度数法で指定する。~
この関数の解説:~
-ペンを中心にangleだけ時計回りに回転させるには、図のように
?ロボットを前進させて、ペンのあった位置に2つのタイヤの真...
?angleだけ時計回りに回転させる。
?ロボットを後進させて、ペンをもとの位置に合わせる。
という手順でロボットを動かせばいい。
-2つのタイヤの真ん中とペンとの距離は測定したところ約75mm...
***ロボットをペンを中心として反時計回りに回転させる関数 [...
&ref(function left.png);
def left(angle):
forward(75)
counter_clockwise(angle)
backward(75)
引数:~
-angle:反時計回りに回転させる角度を度数法で指定する。~
この関数の解説:~
-時計回りの時と同様に、ペンを中心にangleだけ反時計回りに...
?ロボットを前進させて、ペンのあった位置に2つのタイヤの真...
?angleだけ反時計回りに回転させる。
?ロボットを後進させて、ペンをもとの位置に合わせる。
という手順でロボットを動かせばいい。
-2つのタイヤの真ん中とペンとの距離は測定したところ約75mm...
***ペンを上げる関数 [#s0cf2593]
def penup():
mP.run_to_abs_pos(position_sp=30, speed_sp=360, stop...
sleep(1)
この関数の解説:
-具体的にはこの関数はロボットのペンを30度上にあげた状態に...
-スリープさせる時間が1秒なのは、この関数が実行される前の...
***ペンを下げる関数 [#b0f96e81]
def pendown():
mP.run_to_abs_pos(position_sp=-30, speed_sp=360, sto...
sleep(1)
この関数の説明:
-この関数を実行した後にロボットを動かすと線が引ける。
-具体的にはこの関数はロボットのペンを30度下げた状態にしよ...
-なぜposition_spの値を-10にしないで-30にするかというと、-...
-スリープさせる時間が1秒なのはpenupの時と同じ理由である。
*プログラム [#b21a53cd]
**書く順番 [#mc6e513d]
書く順番は次のとおりにした。~
&ref(stroke order.png);
**書き始めの位置 [#z7c45dbf]
書き始めの位置は次のようにした。~
&ref(start position.png);
**字を書く条件 [#ue2ebef7]
-清書するときは筆ペンを使った。
-筆ペンのインクが裏抜けして紙の下の床を汚さないようにA4の...
**字を書く [#b3cf96c7]
***「岐阜」の「岐」を書く [#rd1c0c47]
「岐」の「山」を書く
pendown() #ここから「岐」の1画目
forward(70)
penup()
backward(40)
right(90)
forward(20)
left(90)
pendown() #ここから「岐」の2画目
forward(40)
penup()
left(90)
pendown()
forward(40)
penup()
left(90)
pendown() #ここから「岐」の3画目
forward(40)
penup()
「岐」の「支」を書く
forward(30) #「岐」の3画目から4画目の位置に移動する
right(90)
forward(20)
pendown()
forward(60)
penup()
backward(30)
left(90)
forward(20)
pendown() #ここから「岐」の4画目
backward(40)
penup()
left(90)
forward(30)
pendown() #ここから「岐」の5画目
backward(60)
penup()
left(45)
pendown() #ここから「岐」の6画目
forward(90)
penup()
backward(90)
right(45)
forward(60)
right(45)
pendown() #ここから「岐」の7画目
backward(90)
penup()
***「岐」の7画目から「阜」の1画目の位置に移動する [#v57a3...
left(45)
forward(70)
left(45)
forward(30)
***「岐阜」の「阜」を書く [#n415b57e]
pendown() #ここから「阜」の1画目
forward(20)
penup()
left(45)
pendown() #ここから「阜」の2画目
forward(60)
penup()
backward(60)
left(90)
pendown() #ここから「阜」の3画目
forward(80)
penup()
right(90)
pendown()
forward(20)
penup()
right(90)
forward(80)
pendown() #ここから「阜」の4画目
backward(80)
penup()
forward(80)
left(90)
forward(20)
right(90)
pendown() #ここから「阜」の5画目
backward(80)
penup()
left(90)
pendown()
forward(20)
penup()
right(90)
forward(80)
pendown() #ここから「阜」の6画目
backward(80)
penup()
forward(90)
left(90)
forward(20)
right(90)
pendown() #ここから「阜」の7画目
backward(100)
penup()
forward(50)
right(90)
forward(20)
pendown() #ここから「阜」の8画目
backward(50)
penup()
*結果 [#k1d308d1]
結果は以下のようになった。~
&ref(result.png);~
*課題1のまとめ [#a9718dee]
**反省と考察 [#s1a36b95]
比較的うまく書けたと思う。ギアを付ける前は文字を書いても...
&ref(ideal result.png);~
(左がロボットが理想通りに動いたとき書けるはずの文字 右が...
今回の結果では、くっついているべき線と線がくっついていな...
+right関数やleft関数で2つのタイヤの真ん中とペンとの距離を...
+clockwise関数やcounter_clockwise関数でロボットを回転させ...
等が考えられる。ここをもう少しいじればもう少し良い結果が...
**次回に向けて [#hbdfce8b]
字を書くプログラムがここまで難しいとは思っていなかった。...
~
~
~
昨日の訪問者数: &counter(yesterday);人~
今日の訪問者数: &counter(today);人~
合計訪問者数: &counter(all);人
ページ名: