- 追加された行はこの色です。
- 削除された行はこの色です。
[[2016a/Member]]
#contents
*はじめに [#b63fd33b]
今回の課題は絵を描くロボットを作成すること。~
具体的にはA4サイズの紙に自分の顔を描くロボットのプログラムを作ることだ。
具体的にはA4サイズの紙に自分の顔を描くロボットのプログラムを作ること。~
またできるだけ単純なプログラムで顔を描くこと。~
*ロボットの説明 [#za3a3534]
&ref(robot11.jpg);
&ref(robot21.jpg);~
ペンはロボットのアームに輪ゴムとテープで固定しました。~
アームの軸となる棒を回転させることによりペンを矢印の方向に動かします。
*プログラムの説明およびロボットの動作 [#f1aa0b82]
#usr/bin/python
import ev3dev.ev3 as ev3
import time
**モータの設定 [#n9c604a9]
motor_left = ev3.LargeMotor('outA')
motor_right = ev3.LargeMotor('outB')
motor_front =ev3.MediumMotor('outC')
左側のタイヤを動かすモーターを出力A~
右側のタイヤを動かすモーターを出力B~
ペンの上げ下げを行うモーターを出力C~
に設定する。
**ロボットの動きとペンの動きを制御する。 [#le03b4dd]
def forward(t,dl,dr):
motor_left.run_forever(duty_cycle_sp=dl)
motor_right.run_forever(duty_cycle_sp=dr)
time.sleep(t/1000)
motor_left.stop()
motor_right.stop()
ここでロボットの動きを定義する。~
この文字列では今後ロボットの発進から停止までの動きを簡単に入力するために数字を文字に置き換える。~
左右モーターの出力を変えることにより、ロボットの前後左右の動きを制御する。
def pen(t,df):
motor_front.run_forever(duty_cycle_sp=df)
time.sleep(t/1000)
motor_front.stop()
pen(1000,-38)
forward(1000,15,15)
pen(1000,50)
forward(1000,15,15)
ここでペンの上げ下げを定義する。~
**顔を描く [#fc895a0a]
pen(1000,-38) //ペン下げ
forward(1000,15,15) //目
pen(1000,50) //ペン上げ
forward(1000,15,15)
time.sleep(1)
pen(1000,-38)
pen(1000,-38) //ペン下げ
forward(1000,15,15) //目
pen(1000,50) //ペン上げ
forward(1000,15,15)
pen(1000,50)
forward(1000,15,15)
time.sleep(1)
#pen(1000,-38)
forward(1000,10,20)
forward(1000,-17,-17)
time.sleep(1)
pen(1000,-38)
forward(1000,-30,10)
pen(1000,-38) //ペン下げ
forward(1000,-30,10) //鼻
forward(1000,-25,-25)
#forward(1000,-50,80)
#forward(1000,10,20)
pen(1000,50)
#pen(1000,-38)
pen(1000,50) //ペン上げ
forward(1000,25,12)
pen(1000,-38)
forward(1000,15,5)
pen(1000,50)
pen(1000,-38) //ペン下げ
forward(1000,15,5) //顔の輪郭
pen(1000,50) //ペン上げ
exit()
exit() //プログラム終了
*考察・感想 [#z982c2e3]
人の顔は複雑な形をしているが今回のプログラムでは