#author("2019-11-14T19:17:12+09:00","traffic","traffic")
#author("2019-11-15T01:16:22+09:00","traffic","traffic")
[[2019b/Member]]

#contents
***課題1:お絵かきロボット [#z9cb326c]
[[詳細>http://yakushi.shinshu-u.ac.jp/robotics/?2019b/Mission1]]

**ロボットの説明 [#mb5fb24a]
今回、Pythonに慣れるのに時間がかかったのと授業時間外でロボットを触る時間があまり取れなかったため、ロボットにはあまり工夫することができなかった。
(画像)
今回、動作確認等に時間がかかったのと授業時間外でロボットを触る時間があまり取れなかったため、ロボットにはあまり工夫することができなかった。~
(画像)~
ペンを両側から固定した。ペンは筆圧のあまり関係ないボールペンを使用した。

**プログラムの説明 [#m1a588c3]
今回は、Pythonのタートルグラフィックスで書いた物をプログラムそのまま(最初の一文のfrom turtle import*を除く)でロボットに書かせることを目標とした。

*ペンの上げ下げ [#kb6102f2]
penup()、pendown()という関数を製作した
 from ev3dev2.motor import MediumMotor OUTPUT_A
 
 motor_arm = MediumMotor(OUTPUT_A)
 
 
 def penup():
     motor_arm.for_on_degrees(5,30)
 
 def pendown():
     motor_arm.for_on_degrees(-5,30)


*前進、後退 [#z0d9a34d]
forward(距離)、backward(距離)の関数を製作~
forward(150)を速度=30でタイヤが一回転するとした
 def ev3dev2.motor import MoveTank OUTPUT_B,OUTPUT_C
 
 tank_drive = MoveTank(OUTPUT_B,OUTPUT_C)
 
 
 def forward(a):
     tank_drive.for_on degrees(30,30,int(a)/150*360)
 
 def backward(b):
     tank_drive.for_on_degrees(-30,-30,int(b)/150*360)

**[[2019b/Member]] [#j126b470]

#contents
***課題1:お絵かきロボット [#d2ec786d]
[[詳細>http://yakushi.shinshu-u.ac.jp/robotics/?2019b/Mission1]]

**ロボットの説明 [#bb1809f2]
今回、Pythonに慣れるのに時間がかかったのと授業時間外でロボットを触る時間があまり取れなかったため、ロボットにはあまり工夫することができなかった。
*右左折 [#bd1c1798]
left(角度)、right(角度)の関数を製作~
左回転の場合、右タイヤ速度=30、左=-30、角度685度で一回転したので、それを基準にした。~
また、曲がったときペン先が曲がる前の位置とズレが生じるため、前進して曲がった後に後退する機構にした。~
(画像)
ペンを両側から固定した。ペンは筆圧のあまり関係ないボールペンを使用した。

**プログラムの説明 [#y5f8c225]
今回は、Pythonのタートルグラフィックスで書いた物をプログラムそのまま(最初の一文のfrom turtle import*を除く)でロボットに書かせることを目標とした。
 def left(c):
     penup()
     forward(70)
     tank_drive.on_for_degrees(30,-30,int(c)/360*685)
     backward(60)
     pendown()

*ペンの上げ下げ [#w6e67f8b]
penup()、pendown()という関数を製作した
 from ev3dev2.motor import MediumMotor OUTPUT_A
 def right(d):
     penup()
     forward(70)
     tank_drive.on_for_degrees(-30,30,int(d)/360*685)
     backward(60)
     pendown()


*turtle graphicsでのデザイン [#z66c4c97]
都合上最初にgotoやsethを使用しているが、ロボットで動かす際は手動で行えば良いのでそちらでは省いている。
 from turtle import*
 
 motor_arm = MediumMotor(OUTPUT_A)
 penup()
 goto(-100,100)
 pendown()
 
 seth(270)
 forward(150)
 left(55)
 forward(110)
 left(70)
 forward(110)
 left(55)
 forward(150)
 
 def penup():
     motor_arm.for_on_degrees(5,30)
 penup()
 backward(40)
 left(90)
 forward(20)
 pendown()
 forward(50)
 penup()
 forward(40)
 pendown()
 forward(50)
 
 def pendown():
     motor_arm.for_on_degrees(-5,30)

*前進、後退 [#g25727e1]
forward(距離)、backward(距離)の関数を製作~
forward(150)を速度=30でタイヤが一回転するとした
 def ev3dev2.motor import MoveTank OUTPUT_B,OUTPUT_C
 penup()
 backward(70)
 left(90)
 forward(40)
 pendown()
 forward(30)
 left(45)
 forward(15)
 
 tank_drive = MoveTank(OUTPUT_B,OUTPUT_C)
 penup()
 right(135)
 forward(40)
 left(90)
 forward(40)
 left(90)
 pendown()
 
 for i in range(5):
     forward(20)
     left(10)
 
 def forward(a):
     tank_drive.for_on degrees(30,30,int(a)/150*360)
 
 def backward(b):
     tank_drive.for_on_degrees(-30,-30,int(b)/150*360)
 mainloop()
 done()
#ref(2019b/Member/traffic/Mission1/turtle.png,40%,turtle)

*右左折 [#bd1c1798]
left(角度)、right(角度)の関数を製作~
左回転の場合、右タイヤ速度=30、左=-30、角度685度で一回転したので、それを基準にした。~
また、曲がったときペン先が曲がる前の位置とズレが生じるため、前進して曲がった後後退する機構にした。~
(画像)


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS