2016a/Member/maria55/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*ロボット本体 [#d41d76e8]
ロボットの全体像~
#ref(./ロボットの全体像.JPG,サイズ,画像の説明)
~
EV3ガイドに乗っている基本ロボットにペンを上げ下げする機構...
~
ペン先はプログラムを作りやすいようにロボットの中心になる...
~
また、EV3は小型のモーターがあるので、ペンを上げ下げする構...
~
比較的簡単にモーターに直接アームをつけて、そこにペンをテ...
~
#ref(./ピンの画像.JPG,イズ,画像の説明)
また、この機構は横についている赤いピン4本を抜くだけで取...
~
*ロボットの動作のための代数の定義 [#z81cd8b1]
ロボットに顔を描かせるために必要な動作をまとめると~
~
・ペンを上げ下げする~
・ロボット本体が前後する~
・ロボット本体が回転する~
~
などの動作の組み合わせによって顔を描かせる。~
~
これからのプログラムを簡単にするためにモーターなどを定義...
~
今回のプログラムでは~
~
モーターA(左タイヤ)=ml~
モーターB(右タイヤ)=mr~
モーターC(ペンの上げ下げ)=mf~
~
として以下の文を用いて定義した。~
ml = ev3.LargeMotor('outA') //左タイヤ
mr = ev3.LargeMotor('outB') //右タイヤ
mf = ev3.MediumMotor('outC') //ペンの上げ下げ~
~
また、簡単にロボットを動かすために以下の文によって「ロボ...
~
def go(t,dl,dr):
ml.run_forever(duty_cycle_sp=dl)
mr.run_forever(duty_cycle_sp=dr)
time.sleep(t/1000)
ml.stop()
mr.stop()
def pen(t,df):
mf.run_forever(duty_cycle_sp=df)
time.sleep(t/1000)
mf.stop()
~
~
・ロボットの前後 =「go」~
・ペンの上げ下げ =「pen」~
~で定義している。
~
*回転の角度の計測 [#bb7988f1]
テスト用のプログラムを書いて、何回かの試行を経て、左右の...
~
用いたプログラムは以下のとおりである。~
~
#!/usr/bin/python
import ev3dev.ev3 as ev3
import time
ml = ev3.LargeMotor('outA')
mr = ev3.LargeMotor('outB')
mf = ev3.MediumMotor('outC')
def go(t,dl,dr):
ml.run_forever(duty_cycle_sp=dl)
mr.run_forever(duty_cycle_sp=dr)
time.sleep(t/1000)
ml.stop()
mr.stop()
・30度回転させたいとき~
go(1000,15,-15)~
go(1000,-15,15)~
~
・45度回転させたいとき~
go(1000,20,-20)~
go(1000,-20,20)~
~
・60度回転させたいとき~
go(1000,24,-24)~
go(1000,-24,24)~
~
であることを調べた。この値を用いることで描写が前よりは簡...
~
ちなみにこの時のバッテリー状態はほぼ充電完了状態である。~
~
よって、この値を適応させるにはできるだけ充電を完了した状...
~
~
*モーターの回転する秒数と進む距離の計測 [#x315677b]
顔を描かせるときに、どの程度の大きさの顔を描けるのかを計...
~
前項と同じプログラムを用いて~
~
ある一定秒数ごとにどの程度ロボットが前進するのかを計測し...
~
すると、以下のようなデータが得られた。~
~
両方の車輪のパワー30で1秒間前進させると、約5cm進む。~
~
これによって顔を描写するときの大きさの大体の見当がつけら...
#ref(./長さ計測.JPG,サイズ,画像の説明)
*顔を描く本プログラムの作成 [#w4685301]
今までで、顔を描くための代数と、回転させるための値を計測...
~
顔を描く本番のプログラムを書き始める。~
~
プログラムの流れとしては~
~
1.線の最初の点に移動する~
2.筆をつける~
3.ロボット本体を動かして描く~
4.筆を離す~
~
これらの繰り返しで顔を描写していく。~
~
まず、試しに以下のプログラムで輪郭を描かせてみた。~
~
#!/usr/bin/python
import ev3dev.ev3 as ev3
import time
ml = ev3.LargeMotor('outA')
mr = ev3.LargeMotor('outB')
mf = ev3.MediumMotor('outC')
def go(t,dl,dr):
ml.run_forever(duty_cycle_sp=dl)
mr.run_forever(duty_cycle_sp=dr)
time.sleep(t/1000)
ml.stop()
mr.stop()
def pen(t,df):
mf.run_forever(duty_cycle_sp=df)
time.sleep(t/1000)
mf.stop()
pen(1000,-50)
go(2000,20,20)
pen(1000,50)
go(2000,20,20)
go(1000,20,-20)
go(2000,-20,-20)
pen(1000,-50)
#ref(./輪郭.JPG,サイズ,画像の説明)
すると、ペンの上げ下げの点をもっと細かく調べないと線が一...
~
そして、その後の試行錯誤で、つけ、止めの点をそろえるのが...
~
*今回の課題のまとめ [#x5d0a915]
ロボットに顔を書かせるためには、ペンを上げる点と、描き始...
~
かつそれがとても難しいということが分かった。~
~
今回は時間がなくて、一回一回ごとに点をそろえるように実験...
~
今回の反省より次回に気を付けることをリスト化すると~
~
・初めに方眼紙のような紙の上で、座標を用いてロボットを動...
・モーターのstopのコマンドを用いて、正確に自分が止まって...
・できるだけ計算を簡単にするためにペンなど、ロボットに何...
~
などの点に気を付けて、次回のプログラムではロボットを作り...
終了行:
*ロボット本体 [#d41d76e8]
ロボットの全体像~
#ref(./ロボットの全体像.JPG,サイズ,画像の説明)
~
EV3ガイドに乗っている基本ロボットにペンを上げ下げする機構...
~
ペン先はプログラムを作りやすいようにロボットの中心になる...
~
また、EV3は小型のモーターがあるので、ペンを上げ下げする構...
~
比較的簡単にモーターに直接アームをつけて、そこにペンをテ...
~
#ref(./ピンの画像.JPG,イズ,画像の説明)
また、この機構は横についている赤いピン4本を抜くだけで取...
~
*ロボットの動作のための代数の定義 [#z81cd8b1]
ロボットに顔を描かせるために必要な動作をまとめると~
~
・ペンを上げ下げする~
・ロボット本体が前後する~
・ロボット本体が回転する~
~
などの動作の組み合わせによって顔を描かせる。~
~
これからのプログラムを簡単にするためにモーターなどを定義...
~
今回のプログラムでは~
~
モーターA(左タイヤ)=ml~
モーターB(右タイヤ)=mr~
モーターC(ペンの上げ下げ)=mf~
~
として以下の文を用いて定義した。~
ml = ev3.LargeMotor('outA') //左タイヤ
mr = ev3.LargeMotor('outB') //右タイヤ
mf = ev3.MediumMotor('outC') //ペンの上げ下げ~
~
また、簡単にロボットを動かすために以下の文によって「ロボ...
~
def go(t,dl,dr):
ml.run_forever(duty_cycle_sp=dl)
mr.run_forever(duty_cycle_sp=dr)
time.sleep(t/1000)
ml.stop()
mr.stop()
def pen(t,df):
mf.run_forever(duty_cycle_sp=df)
time.sleep(t/1000)
mf.stop()
~
~
・ロボットの前後 =「go」~
・ペンの上げ下げ =「pen」~
~で定義している。
~
*回転の角度の計測 [#bb7988f1]
テスト用のプログラムを書いて、何回かの試行を経て、左右の...
~
用いたプログラムは以下のとおりである。~
~
#!/usr/bin/python
import ev3dev.ev3 as ev3
import time
ml = ev3.LargeMotor('outA')
mr = ev3.LargeMotor('outB')
mf = ev3.MediumMotor('outC')
def go(t,dl,dr):
ml.run_forever(duty_cycle_sp=dl)
mr.run_forever(duty_cycle_sp=dr)
time.sleep(t/1000)
ml.stop()
mr.stop()
・30度回転させたいとき~
go(1000,15,-15)~
go(1000,-15,15)~
~
・45度回転させたいとき~
go(1000,20,-20)~
go(1000,-20,20)~
~
・60度回転させたいとき~
go(1000,24,-24)~
go(1000,-24,24)~
~
であることを調べた。この値を用いることで描写が前よりは簡...
~
ちなみにこの時のバッテリー状態はほぼ充電完了状態である。~
~
よって、この値を適応させるにはできるだけ充電を完了した状...
~
~
*モーターの回転する秒数と進む距離の計測 [#x315677b]
顔を描かせるときに、どの程度の大きさの顔を描けるのかを計...
~
前項と同じプログラムを用いて~
~
ある一定秒数ごとにどの程度ロボットが前進するのかを計測し...
~
すると、以下のようなデータが得られた。~
~
両方の車輪のパワー30で1秒間前進させると、約5cm進む。~
~
これによって顔を描写するときの大きさの大体の見当がつけら...
#ref(./長さ計測.JPG,サイズ,画像の説明)
*顔を描く本プログラムの作成 [#w4685301]
今までで、顔を描くための代数と、回転させるための値を計測...
~
顔を描く本番のプログラムを書き始める。~
~
プログラムの流れとしては~
~
1.線の最初の点に移動する~
2.筆をつける~
3.ロボット本体を動かして描く~
4.筆を離す~
~
これらの繰り返しで顔を描写していく。~
~
まず、試しに以下のプログラムで輪郭を描かせてみた。~
~
#!/usr/bin/python
import ev3dev.ev3 as ev3
import time
ml = ev3.LargeMotor('outA')
mr = ev3.LargeMotor('outB')
mf = ev3.MediumMotor('outC')
def go(t,dl,dr):
ml.run_forever(duty_cycle_sp=dl)
mr.run_forever(duty_cycle_sp=dr)
time.sleep(t/1000)
ml.stop()
mr.stop()
def pen(t,df):
mf.run_forever(duty_cycle_sp=df)
time.sleep(t/1000)
mf.stop()
pen(1000,-50)
go(2000,20,20)
pen(1000,50)
go(2000,20,20)
go(1000,20,-20)
go(2000,-20,-20)
pen(1000,-50)
#ref(./輪郭.JPG,サイズ,画像の説明)
すると、ペンの上げ下げの点をもっと細かく調べないと線が一...
~
そして、その後の試行錯誤で、つけ、止めの点をそろえるのが...
~
*今回の課題のまとめ [#x5d0a915]
ロボットに顔を書かせるためには、ペンを上げる点と、描き始...
~
かつそれがとても難しいということが分かった。~
~
今回は時間がなくて、一回一回ごとに点をそろえるように実験...
~
今回の反省より次回に気を付けることをリスト化すると~
~
・初めに方眼紙のような紙の上で、座標を用いてロボットを動...
・モーターのstopのコマンドを用いて、正確に自分が止まって...
・できるだけ計算を簡単にするためにペンなど、ロボットに何...
~
などの点に気を付けて、次回のプログラムではロボットを作り...
ページ名: