- Äɲ䵤줿¹Ô¤Ï¤³¤Î¿§¤Ç¤¹¡£
- ºï½ü¤µ¤ì¤¿¹Ô¤Ï¤³¤Î¿§¤Ç¤¹¡£
[[2019a/Member]]
#contents
*²ÝÂê2 [#j6c97f06]
**ÆâÍÆ [#v79404bd]
¡Ö»æ¤Ë½ñ¤¤¤¿¹õ¤¤Àþ¤Ë±è¤Ã¤Æ¥í¥Ü¥Ã¥È¤òÆ°¤«¤·¥Ü¡¼¥ë¤ò±¿¤Ö¡×¤È¤¤¤¦²ÝÂê¤À¤Ã¤¿¡£
**¥³¡¼¥¹ [#ubf47f1a]
º£²ó¤Ï°Ê²¼¤Î¤è¤¦¤Ê¥³¡¼¥¹¤Ç¥í¥Ü¥Ã¥È¤òÆ°¤«¤·¤¿¡£~
¢¨¼Ì¿¿
&ref(Map.png);~
(ÀÖ¤¤Ìð°õ¤ÎÊý¸þ¤Ë¿Ê¤à¡£¤Þ¤¿ÀĤ¤´Ý¤Ç¤Ï1Éûߤޤ롣)
*ºîÀ®¤·¤¿¥í¥Ü¥Ã¥È [#lb902c52]
º£²ó¤Ï¾å¤Î¤è¤¦¤Ê¥í¥Ü¥Ã¥È¤òºîÀ®¤·¤¿¡£²ÝÂê1¤Î»þ¤È¤Ï°ã¤¤º£²ó»È¤Ã¤¿EV3¤Î¥â¡¼¥¿¡¼¤Ï¤«¤Ê¤êÀµ³Î¤À¤Ã¤¿¤Î¤Ç¥®¥¢¤Ï»È¤Ã¤Æ¤¤¤Ê¤¤¡£º£²ó¤Ï°Ê²¼¤ÎÆóÅÀ¤ò¹©Éפ·¤¿¡£
**¡¥¢¡¼¥à [#f979355c]
¥Ü¡¼¥ë¤ò±¿¤Ö¤¿¤á¤Î¥¢¡¼¥à¤Ï¤³¤Î¤è¤¦¤Ê¤â¤Î¤Ë¤·¤¿¡£~
&ref(Arm.png);
**¢¥«¥é¡¼¥»¥ó¥µ¡¼ [#vaf8cbc4]
¥«¥é¡¼¥»¥ó¥µ¡¼¤Ï¹õÀþ¤ÎÍ̵¤¬¤·¤Ã¤«¤ê¤ï¤«¤ë¤è¤¦¤Ê¤ë¤Ù¤¯ÃÏÌ̤˶á¤Å¤±¤ë¤è¤¦¤Ë¤·¤¿¡£~
*¥×¥í¥°¥é¥à¤Î½àÈ÷ [#nc12a535]
**¥â¥¸¥å¡¼¥ë¤Î¥¤¥ó¥Ý¡¼¥È [#k6f4f48a]
#!/usr/bin/env python3
from ev3dev.ev3 import *
import time
**¥¤¥ó¥¹¥¿¥ó¥¹¤ÈÄê¿ô¤ÎºîÀ® [#p2659269]
mR = LargeMotor("outA")
mL = LargeMotor("outB")
mB = MediumMotor("outC")
cs = ColorSensor("in1")
cs.mode = "COL-REFLECT"
speed_sp = 100
black_line_reflection = 7
¥¤¥ó¥¹¥¿¥ó¥¹¤Î̾Á°¤ÎͳÍè¤Ï
-±¦Â¦(&size(20){R};ight)¤Î¥â¡¼¥¿¡¼(&size(20){m};otor)
-º¸Â¦(&size(20){L};eft)¤Î¥â¡¼¥¿¡¼(&size(20){m};otor)
-¥Ü¡¼¥ë(&size(20){B};all)¤ò»ý¤Ä¤¿¤á¤Ë»È¤¦¥â¡¼¥¿¡¼(&size(20){m};otor)
-¥«¥é¡¼¥»¥ó¥µ¡¼(&size(20){c};olor&size(20){s};ensor)~
¤Ç¤¢¤ë¡£~
º£²ó¥«¥é¡¼¥»¥ó¥µ¡¼¤ÏÈ¿¼Í¸÷¤Î¶¯¤µ¤ò0¡Á100¤ÎÃͤÇÊÖ¤¹COL-REFLECT¥â¡¼¥É¤ò»È¤Ã¤¿¡£~
¤Þ¤¿¡¢Äê¿ô¤Î»È¤¤Æ»¤Ï°Ê²¼¤ÎÄ̤ꡣ
-speed_sp: ¥â¡¼¥¿¡¼¤òÆ°¤«¤¹Â®ÅÙ¡£º£²ó¤Ï¥é¥¤¥ó¥È¥ì¡¼¥¹¤òÀµ³Î¤Ë¤¹¤ë¤¿¤á¤Ë¡Þ100¤ÈÃÙ¤á¤Ë¤·¤¿¡£
-black_line_reflection: ¹õ¤¤Àþ¾å¤ò¥«¥é¡¼¥»¥ó¥µ¡¼¤ÇÌÀ¤ë¤µÂ¬Äꤷ¤¿¤È¤¤ÎÃÍ¡£¥«¥é¡¼¥»¥ó¥µ¡¼¤ÇÃÏÌ̤ÎÌÀ¤ë¤µÂ¬Äê¤ò¤·¤¿¤È¤¤³¤ÎÃͤè¤êÄ㤤Ãͤ¬½Ð¤¿¤é¹õ¤¤Àþ¤Î¾å¤Ë¤¤¤ë¤ÈȽÃǤ¹¤ë¡£
**´Ø¿ô¤ÎÄêµÁ [#na7bd91a]
º£²ó¤Ï°Ê²¼¤Î´Ø¿ô¤òÄêµÁ¤·¤¿¡£
-¥í¥Ü¥Ã¥È¤òÁ°¿Ê¤µ¤»¤ë´Ø¿ô
-¥í¥Ü¥Ã¥È¤ò»þ·×²ó¤ê/È¿»þ·×²ó¤ê¤Ë²óž¤µ¤»¤ë´Ø¿ô
-¹õ¤¤Àþ¤Î±¦Â¦/º¸Â¦¤ò¥é¥¤¥ó¥È¥ì¡¼¥¹¤µ¤»¤ë´Ø¿ô
-¥í¥Ü¥Ã¥È¤Ë¥Ü¡¼¥ë¤ò¥¥ã¥Ã¥Á/¥·¥å¡¼¥È¤µ¤»¤ë´Ø¿ô
***¥í¥Ü¥Ã¥È¤òÁ°¿Ê¤µ¤»¤ë´Ø¿ô [#nb5fb2fc]
def forward(distance):
mR.run_timed(time_sp=distance / speed_sp * 2000, speed_sp=speed_sp, stop_action="hold")
mL.run_timed(time_sp=distance / speed_sp * 2000, speed_sp=speed_sp, stop_action="hold")
time.sleep(distance / speed_sp * 2)
°ú¿ô:~
-distance: Á°¿Ê¤µ¤»¤ëµ÷Î¥¤òmm¤Ç»ØÄꤹ¤ë¡£
¤³¤Î´Ø¿ô¤ÎÀâÌÀ:~
-time_sp¤Ïtime_sp=1000,speed_sp=360¤Î¤È¤180mm¿Ê¤à¤Î¤Ç¡¢¤½¤³¤«¤éµÕ»»¤·¤¿¡£
***¥í¥Ü¥Ã¥È¤ò»þ·×²ó¤ê¤Ë²óž¤µ¤»¤ë´Ø¿ô [#g394ebd7]
def clockwise(angle):
mR.run_timed(time_sp=angle / speed_sp * 2000, speed_sp=-speed_sp, stop_action="hold")
mL.run_timed(time_sp=angle / speed_sp * 2000, speed_sp=speed_sp, stop_action="hold")
time.sleep(angle / speed_sp * 2)
°ú¿ô:~
-angle: »þ·×²ó¤ê¤Ë²óž¤µ¤»¤ë³ÑÅÙ¤òÅÙ¿ôË¡¤Ç»ØÄꤹ¤ë¡£~
¤³¤Î´Ø¿ô¤ÎÀâÌÀ:~
-Æó¤Ä¤Î¥¿¥¤¥ä¤Î¿¿¤óÃæ¤òÃæ¿´¤È¤·¤Æ»þ·×²ó¤ê¤Ë²óž¤µ¤»¤ë¡£
-time_sp¤Ïtime_sp=1000,speed_sp=360¤Î»þ¥í¥Ü¥Ã¥È¤¬180Åٲ󞤷¤¿¤Î¤Ç¤½¤³¤«¤éµÕ»»¤·¤¿¡£
***¥í¥Ü¥Ã¥È¤òÈ¿»þ·×²ó¤ê¤Ë²óž¤µ¤»¤ë´Ø¿ô [#ec2e07dc]
def counter_clockwise(angle):
mR.run_timed(time_sp=angle / speed_sp * 2000, speed_sp=speed_sp, stop_action="hold")
mL.run_timed(time_sp=angle / speed_sp * 2000, speed_sp=-speed_sp, stop_action="hold")
time.sleep(angle / speed_sp * 2)
°ú¿ô:~
-angle: È¿»þ·×²ó¤ê¤Ë²óž¤µ¤»¤ë³ÑÅÙ¤òÅÙ¿ôË¡¤Ç»ØÄꤹ¤ë¡£~
¤³¤Î´Ø¿ô¤ÎÀâÌÀ:~
-Æó¤Ä¤Î¥¿¥¤¥ä¤Î¿¿¤óÃæ¤òÃæ¿´¤È¤·¤ÆÈ¿»þ·×²ó¤ê¤Ë²óž¤µ¤»¤ë¡£
-time_sp¤Ïtime_sp=1000,speed_sp=360¤Î»þ¥í¥Ü¥Ã¥È¤¬180Åٲ󞤷¤¿¤Î¤Ç¤½¤³¤«¤éµÕ»»¤·¤¿¡£
***¹õ¤¤Àþ¤Î±¦Â¦¤ò¥é¥¤¥ó¥È¥ì¡¼¥¹¤µ¤»¤ë´Ø¿ô [#u0eb7987]
def right_side_line_trace():
action_log = [False for _ in range(30)]
while True:
del action_log[0]
if cs.value() <= black_line_reflection:
# black
mR.stop(stop_action="hold")
mL.run_timed(time_sp=1000, speed_sp=speed_sp, stop_action="hold")
action_log.append(True)
else:
# white
mL.stop(stop_action="hold")
mR.run_timed(time_sp=1000, speed_sp=speed_sp, stop_action="hold")
action_log.append(False)
if all(action_log):
mR.stop(stop_action="hold")
mL.stop(stop_action="hold")
break
¤³¤Î´Ø¿ô¤ÎÀâÌÀ:
-¹õ¤¤Àþ¤Î±¦Â¦¤ò¥é¥¤¥ó¥È¥ì¡¼¥¹¤¹¤ë´Ø¿ô¡£
-¶ñÂÎŪ¤Ë¤Ï
++¤â¤·ÃÏÌ̤ÎÌÀ¤ë¤µ¤¬black_line_reflection¤ò²¼²ó¤Ã¤Æ¤¤¤¿¤é¹õ¤¤Àþ¤Î¾å¤À¤ÈȽÃǤ·¤Æ±¦Á°Êý¤Ë¿Ê¤à¡£
++¤â¤·ÃÏÌ̤ÎÌÀ¤ë¤µ¤¬black_line_reflection¤ò¾å²ó¤Ã¤Æ¤¤¤¿¤é¹õ¤¤Àþ¤Î¾å¤Ç¤Ï¤Ê¤¤¤ÈȽÃǤ·¤Æº¸Á°Êý¤Ë¿Ê¤à¡£
++°ìÄê»þ´Ö¹õ¤¤Àþ¤Î¾å¤¤¤¿¤é(¶ñÂÎŪ¤Ë¤Ï30²óϢ³¤·¤ÆÃÏÌ̤ÎÌÀ¤ë¤µ¤¬black_line_reflection¤ò²¼²ó¤Ã¤Æ¤¤¤¿¤é)¸òº¹ÅÀ¤À¤ÈȽÃǤ·¤Æ»ß¤Þ¤ë¡£
¤È¤¤¤¦Æ°ºî¤ò¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¤¹¤ë¡£
***¹õ¤¤Àþ¤Î±¦Â¦¤ò¥é¥¤¥ó¥È¥ì¡¼¥¹¤µ¤»¤ë´Ø¿ô [#c8f8543c]
def left_side_line_trace():
action_log = [False for _ in range(30)]
while True:
del action_log[0]
if cs.value() <= black_line_reflection:
# black
mL.stop(stop_action="hold")
mR.run_timed(time_sp=1000, speed_sp=speed_sp, stop_action="hold")
action_log.append(True)
else:
# white
mR.stop(stop_action="hold")
mL.run_timed(time_sp=1000, speed_sp=speed_sp, stop_action="hold")
action_log.append(False)
if all(action_log):
mR.stop(stop_action="hold")
mL.stop(stop_action="hold")
break
¤³¤Î´Ø¿ô¤ÎÀâÌÀ:
-¹õ¤¤Àþ¤Îº¸Â¦¤ò¥é¥¤¥ó¥È¥ì¡¼¥¹¤¹¤ë´Ø¿ô¡£right_side_line_trace´Ø¿ô¤È¤Û¤È¤ó¤ÉƱ¤¸¡£
-¶ñÂÎŪ¤Ë¤Ï
++¤â¤·ÃÏÌ̤ÎÌÀ¤ë¤µ¤¬black_line_reflection¤ò²¼²ó¤Ã¤Æ¤¤¤¿¤é¹õ¤¤Àþ¤Î¾å¤À¤ÈȽÃǤ·¤Æº¸Á°Êý¤Ë¿Ê¤à¡£
++¤â¤·ÃÏÌ̤ÎÌÀ¤ë¤µ¤¬black_line_reflection¤ò¾å²ó¤Ã¤Æ¤¤¤¿¤é¹õ¤¤Àþ¤Î¾å¤Ç¤Ï¤Ê¤¤¤ÈȽÃǤ·¤Æ±¦Á°Êý¤Ë¿Ê¤à¡£
++°ìÄê»þ´Ö¹õ¤¤Àþ¤Î¾å¤¤¤¿¤é(¶ñÂÎŪ¤Ë¤Ï30²óϢ³¤·¤ÆÃÏÌ̤ÎÌÀ¤ë¤µ¤¬black_line_reflection¤ò²¼²ó¤Ã¤Æ¤¤¤¿¤é)¸òº¹ÅÀ¤À¤ÈȽÃǤ·¤Æ»ß¤Þ¤ë¡£
¤È¤¤¤¦Æ°ºî¤ò¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¤¹¤ë¡£
***¥í¥Ü¥Ã¥È¤Ë¥Ü¡¼¥ë¤ò¥¥ã¥Ã¥Á¤µ¤»¤ë´Ø¿ô [#a5abc7a9]
def catch():
mB.run_to_rel_pos(position_sp=-60, speed_sp=speed_sp, stop_action="hold")
time.sleep(1)
¤³¤Î´Ø¿ô¤ÎÀâÌÀ:~
-speed_sp¤Ï¥â¡¼¥¿¡¼¤Î¸þ¤¤Î´Ø·¸¤ÇÉé¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
-¥¹¥ê¡¼¥×¤µ¤»¤ë»þ´Ö¤¬1ÉäʤΤϡ¢¤³¤Î´Ø¿ô¤¬¼Â¹Ô¤µ¤ì¤ëÁ°¤Î¥¢¡¼¥à¤Î°ÌÃÖ¤¬¤ï¤«¤é¤Ê¤¤¤¿¤á¡£1É䢤ì¤Ð¥Ú¥ó¤òÆ°¤«¤¹¤Ë¤ÏÌäÂê¤Ê¤¤¤ÈȽÃǤ·¤¿¡£
***¥í¥Ü¥Ã¥È¤Ë¥Ü¡¼¥ë¤ò¥·¥å¡¼¥È¤µ¤»¤ë´Ø¿ô [#e61015b9]
def shot():
# Release the ball from the arm.
mB.run_to_rel_pos(position_sp=60, speed_sp=speed_sp, stop_action="hold")
time.sleep(1)
# Move backward.
mR.run_timed(time_sp=500, speed_sp=-1000, stop_action="hold")
mL.run_timed(time_sp=500, speed_sp=-1000, stop_action="hold")
time.sleep(0.5)
# Move forward
mR.run_timed(time_sp=700, speed_sp=1000, stop_action="hold")
mL.run_timed(time_sp=700, speed_sp=1000, stop_action="hold")
time.sleep(0.7)
¤³¤Î´Ø¿ô¤ÎÀâÌÀ:~
-¥Ü¡¼¥ë¤ò¥·¥å¡¼¥È¤µ¤»¤ë´Ø¿ô¡£¶ñÂÎŪ¤Ë¤Ï
++¥¢¡¼¥à¤«¤é¥Ü¡¼¥ë¤ò³°¤¹¡£
++¸å¤í¤Ë²¼¤¬¤ë¡£
++Á°¿Ê¤·¤Æ¥Ü¡¼¥ë¤ò½³¤ë¡£
¤È¤¤¤¦Æ°ºî¤Ë¤è¤Ã¤Æ¥Ü¡¼¥ë¤ò¥·¥å¡¼¥È¤¹¤ë¡£
*¥í¥Ü¥Ã¥È¤òÆ°¤«¤¹ [#tc49018c]
**M¤«¤éK¤Þ¤Ç [#n3ed3468]
# from M to K
left_side_line_trace()
**K¤«¤éL¤Þ¤Ç [#x1406737]
# from K to L
clockwise(35)
forward(180)
catch()
**L¤«¤éK¤Þ¤Ç [#cb355441]
# from L to K
counter_clockwise(180)
left_side_line_trace()
**K¤«¤éJ¤Þ¤Ç [#i85caada]
# from K to J
counter_clockwise(45)
forward(100)
clockwise(115)
left_side_line_trace()
time.sleep(1)
**J¤«¤éI¤Þ¤Ç [#wd2aedee]
# from J to I
counter_clockwise(30)
left_side_line_trace()
**I¤«¤éH¤Þ¤Ç [#xe99016b]
# from I to H
forward(30)
left_side_line_trace()
**H¤«¤éG¤Þ¤Ç [#df1d1c2d]
# from H to G
forward(20)
left_side_line_trace()
**G¤«¤éD¤Þ¤Ç [#f35ec9dc]
# from G to D
forward(20)
left_side_line_trace()
time.sleep(1)
**D¤«¤éG¤Þ¤Ç [#j40fe254]
# from D to G
forward(20)
right_side_line_trace()
**G¤«¤éB¤Þ¤Ç [#o558f4fd]
# from G to B
forward(30)
right_side_line_trace()
time.sleep(1)
shot()