[[2019a/Member]]

#contents

*²ÝÂê2 [#j6c97f06]
**ÆâÍÆ [#v79404bd]
¡Ö»æ¤Ë½ñ¤¤¤¿¹õ¤¤Àþ¤Ë±è¤Ã¤Æ¥í¥Ü¥Ã¥È¤òÆ°¤«¤·¥Ü¡¼¥ë¤ò±¿¤Ö¡×¤È¤¤¤¦²ÝÂê¤À¤Ã¤¿¡£
**¥³¡¼¥¹ [#ubf47f1a]
º£²ó¤Ï°Ê²¼¤Î¤è¤¦¤Ê¥³¡¼¥¹¤Ç¥í¥Ü¥Ã¥È¤òÆ°¤«¤·¤¿¡£~
¢¨¼Ì¿¿


*ºîÀ®¤·¤¿¥í¥Ü¥Ã¥È [#lb902c52]
º£²ó¤Ï¾å¤Î¤è¤¦¤Ê¥í¥Ü¥Ã¥È¤òºîÀ®¤·¤¿¡£²ÝÂê1¤Î»þ¤È¤Ï°ã¤¤º£²ó»È¤Ã¤¿EV3¤Î¥â¡¼¥¿¡¼¤Ï¤«¤Ê¤êÀµ³Î¤À¤Ã¤¿¤Î¤Ç¥®¥¢¤Ï»È¤Ã¤Æ¤¤¤Ê¤¤¡£º£²ó¤Ï°Ê²¼¤ÎÆóÅÀ¤ò¹©Éפ·¤¿¡£
**­¡¥¢¡¼¥à [#f979355c]
¥Ü¡¼¥ë¤ò±¿¤Ö¤¿¤á¤Î¥¢¡¼¥à¤Ï¤³¤Î¤è¤¦¤Ê¤â¤Î¤Ë¤·¤¿¡£~
**­¢¥«¥é¡¼¥»¥ó¥µ¡¼ [#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()

¥È¥Ã¥×   ¿·µ¬ °ìÍ÷ ¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS