#author("2019-12-26T20:43:01+09:00","LaiHen","LaiHen")
[[2019b/Member]]
#author("2019-12-26T21:30:45+09:00","LaiHen","LaiHen")
----
Ìܼ¡
#contents

----

* ²ÝÂꣲ¡§¥é¥¤¥ó¥È¥ì¡¼¥¹ [#u7470bfe]
²¼¤Î²èÁü¤Î»ØÄꤵ¤ì¤¿¥³¡¼¥¹¤ò¹õÀþ¤Ë±è¤Ã¤Æ¿Ê¤à

&ref(2019b/Member/LaiHen/Mission2/2019b-mission2.png,70%,¥³¡¼¥¹¤ÎÁ´ÂοÞ);

** »ØÄꥳ¡¼¥¹ [#vce05226]
+ AÃÏÅÀ¤«¤é½Ðȯ
+ B
+ C (ľ¿Ê)
+ D (°ì»þÄä»ß¤Î¸å¡¢Ä¾¿Ê)
+ E, F Ä̲á
+ G (°ì»þÄä»ß¤Î¸å¡¢º¸ÀÞ)
+ H (°ì»þÄä»ß¤Î¸å¡¢º¸ÀÞ)
+ I (¥­¥å¡¼¥Ü¥¤¥É¤ò¤Ä¤«¤ó¤ÇU¥¿¡¼¥ó)
+ H (ľ¿Ê)
+ J (°ì»þÄä»ß)
+ AÃÏÅÀ¤ËÆþ¤ë(¥´¡¼¥ë)

* ¥í¥Ü¥Ã¥È¤Ë¤Ä¤¤¤Æ [#h73f63eb]
** ¥í¥Ü¥Ã¥È¤Î¹½Â¤ [#d613c006]
º£²ó¤Î²ÝÂê¤Ç¥í¥Ü¥Ã¥È¤ËɬÍפÊʪ¤ÏËÜÂΤò°ÜÆ°¤µ¤»¤ë¤¿¤á¤Î¥â¡¼¥¿¡¼£²¤Ä°Ê³°¤Ë¡¢¹õÀþ¤Ë±è¤Ã¤Æ¿Ê¤à¤¿¤á¤Ë¿§¤ò´¶ÃΤ¹¤ë¥«¥é¡¼¥»¥ó¥µ¡¼¡¢¥­¥å¡¼¥Ü¥¤¥É¤È¤Îµ÷Î¥¤ò¬¤ëĶ²»ÇÈ¥»¥ó¥µ¡¼¡¢¥­¥å¡¼¥Ü¥¤¥É¤ò¤Ä¤«¤à¥â¡¼¥¿¡¼¤Ç¾å¤²²¼¤²¤Ç¤­¤ë¥¢¡¼¥à¤Î3¤Ä¤Ç¤¹¡£¤³¤ì¤é¤ò¤¦¤Þ¤¯»È¤¦¤¿¤á¤Ë¤½¤ì¤¾¤ì¤Ë¹©Éפ·¤¿ÅÀ¤¬¤¢¤ê¤Þ¤¹¡£
*** ¥«¥é¡¼¥»¥ó¥µ¡¼ [#h529f137]
¥«¥é¡¼¥»¥ó¥µ¡¼¤Ïº£²ó¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹¤ÇºÇ¤â½ÅÍפÊÉôʬ¤Ç¤¹¡£¤·¤«¤âËÜÂΤΰÜÆ°¤Ï¤³¤Î¥»¥ó¥µ¡¼¤òÍѤ¤¤Æ·èÄꤹ¤ë¤¿¤á¥¿¥¤¥ä¤È¤Î°ÌÃÖ¤â¹Í¤¨¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£º£²ó¤Î¥³¡¼¥¹¤ÇºÇ¤âÆñ¤·¤¤¤È»×¤ï¤ì¤ë¤Î¤ÏH¤ÈJ¤Î´Ö¤Ë¤¢¤ëȾ·Â5£ã£í¤ÎȾ±ßÉôʬ¤Ç¤¹¡£¤â¤·¥»¥ó¥µ¡¼¤¬ËÜÂΤμ´¤«¤é£µ£ã£í°Ê¾åÎ¥¤ì¤Æ¤¤¤ë¾ì¹ç¡¢ËÜÂΤò¥Ð¥Ã¥¯¤µ¤»¤Ê¤¤¤È¤Þ¤ï¤ì¤Þ¤»¤ó¡£¤½¤Î¤¿¤á£µ£ã£í¤òĶ¤¨¤Ê¤¤¤è¤¦¤Ë¥»¥ó¥µ¡¼¤òÀßÃÖ¤·¤Þ¤·¤¿¡£
*** Ķ²»ÇÈ¥»¥ó¥µ¡¼ [#c9e9e386]
Á°Äó¤È¤·¤Æ¥­¥å¡¼¥Ü¥¤¥É¤È¤Î¬¤ëºÝËÜÂΤϥ饤¥ó¥È¥ì¡¼¥¹¤ò¤·¤Æ¤¤¤ë´Ø·¸¾åÀþ¤Îº¸±¦¤É¤Á¤é¤«¤Ë´ó¤Ã¤Æ¤¤¤Þ¤¹¡£¤½¤Î¤¿¤áËÜÂΤÎÃæ±û¤ËÀßÃÖ¤·¤Æ¤â¥»¥ó¥µ¡¼¤ÎÀµÌ̤˥­¥å¡¼¥Ü¥¤¥É¤ÏÍè¤Þ¤»¤ó¡£¤½¤Î¤¿¤á¥»¥ó¥µ¡¼¤òº¸´ó¤ê¤ËÀßÃÖ¤·¡¢¥­¥å¡¼¥Ü¥¤¥É¤ò¤Ä¤«¤àºÝ¤ÏÀþ¤Î±¦Â¦¤ò¥é¥¤¥ó¥È¥ì¡¼¥¹¤¹¤ë¤È¥»¥ó¥µ¡¼¤ÎÃæ±û¤Ë¥­¥å¡¼¥Ü¥¤¥É¤¬Íè¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£
*** ¥¢¡¼¥à [#b9c5da66]
¥¢¡¼¥à¤ÎÀßÃÖ°ÌÃÖ¤ÏĶ²»ÇÈ¥»¥ó¥µ¡¼¤ò´ð½à¤Ë¤·¤¿¤Î¤Ç´Êñ¤Ç¤·¤¿¤¬¡¢2¤Ä¤Î¥»¥ó¥µ¡¼¤òÉÕ¤±¤¿¤¿¤á¥í¥Ü¥Ã¥È¼«ÂΤ¬½Ä¤ËŤ¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç¤Ç¤­¤ë¤À¤±¥¢¡¼¥à¤Ï¥³¥ó¥Ñ¥¯¥È¤Ë¤Ê¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£
** Á´ÂÎŪ¤Ê¹©É×ÅÀ [#x6509f6c]
EV3¤Î¥»¥ó¥µ¡¼¤ÏÀºÅÙ¤¬¹â¤¤¤¿¤á¿¶¤ì¤Ê¤É¤Ë¤è¤Ã¤ÆÃͤ¬ÊѲ½¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£¤Ç¤¹¤¬¥í¥Ü¥Ã¥È¤Î²èÁü¤«¤é¤ï¤«¤ë¤è¤¦¤Ë½Ä¤ËŤ¯Æ°¤¯¤¿¤Ó¤ËÍɤì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£¤½¤ì¤òËɤ°¤¿¤á¤Ë¤Ç¤­¤ë¤À¤±¸ÇÄê¤ò¤·¡¢Á°Êý¤Ø¤ÎÅݤ줳¤ß¤ò·Ú¸º¤¹¤ë¤¿¤á¤Ë2ËçÌܤβèÁü¤Î¤è¤¦¤Ë¥¿¥¤¥ä¤ò¤Ä¤±¤Þ¤·¤¿¡£
* ¥í¥Ü¥Ã¥È¤Ë¤Ä¤¤¤Æ¤Î¤Þ¤È¤á [#c64c38da]

&ref(2019b/Member/LaiHen/Mission2/KD22.jpg,25%,¥í¥Ü¥Ã¥È¤ÎÁ´ÂβèÁü);
&ref(2019b/Member/LaiHen/Mission2/KD21.jpg,25%,Êä½õÎزèÁü);
&ref(2019b/Member/LaiHen/Mission2/KD24.jpg,25%,¥»¥ó¥µ¡¼´Ø·¸¤Î²èÁü);

** ¥í¥Ü¥Ã¥È¤Ë¤Ä¤¤¤Æ¤Î¤Þ¤È¤á [#c64c38da]
Á°²ó¤Ï¤¢¤Þ¤ê¥í¥Ü¥Ã¥È¤Ë¤«¤«¤ï¤é¤Ê¤«¤Ã¤¿¤Î¤Ç¤¤¤í¤¤¤í¤È»î¹Ôºø¸í¤·¤Æ¥í¥Ü¥Ã¥È¤òºîÀ®¤·¤Þ¤·¤¿¡£¤Ç¤¹¤¬°ÂÄꤵ¤»¤ë¤³¤È¤ò½Å»ë¤¹¤ë¤¢¤Þ¤ê¤«¤Ê¤êÂ礭¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¡£²ÝÂê¤ÎÆâÍƤ«¤é¹Í¤¨¤ë¤È¤Ç¤­¤ë¤À¤±¥³¥ó¥Ñ¥¯¥È¤ÎÊý¤¬Ë¾¤Þ¤·¤¤¤È»×¤¦¤Î¤Ç¡¢¼¡²ó¤Ï²ÝÂê¤òãÀ®¤¹¤ë¤À¤±¤Ç¤Ê¤¯¤½¤Î²ÝÂê¤Ë¤Õ¤µ¤ï¤·¤¤¥í¥Ü¥Ã¥È¤òºîÀ®¤·¤è¤¦¤È»×¤¤¤Þ¤¹¡£

* ¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤Æ [#f9aa9a86]
** ¥×¥í¥°¥é¥à¤Î¥·¥¹¥Æ¥à¤Ë¤Ä¤¤¤Æ [#i0b559db]
¥é¥¤¥ó¥È¥ì¡¼¥¹¤Ï¹õÀþ¤Î¾å¤ò¿Ê¤à¤Î¤Ç¤Ï¤Ê¤¯¹õ¤ÈÇò¤Î¶­³¦Éôʬ¤ò¿Ê¤ó¤Ç¤¤¤¯ÊýË¡¤Ç¹Ô¤¤¤Þ¤¹¡£¤Þ¤¿¡¢º£²ó¤Ï¥í¥Ü¥Ã¥È¤Îºî¶ÈÎ̤¬Â¿¤¤¤¿¤áÆ°¤­¤ÎÄ´À°¤ò´Êñ¤Ë¤Ç¤­¤ë¤è¤¦¤Ë¤¤¤¯¤Ä¤«¤Î¿ôÃͤòÆþÎϤ¹¤ì¤Ð¸å¤Ï¤¹¤Ù¤Æ·×»»¤ò¤·¡¢Ãͤò·èÄꤷ¤Æ¤¤¤¯»ÅÁȤߤˤ·¤Þ¤¹¡£²Ã¤¨¤Æ¡¢Æ°ºî¤´¤È¤Ë´Ø¿ô¤òºîÀ®¤·¸å¤«¤éÆ°¤­¤Î»Ø¼¨¤ò¤·¤ä¤¹¤¯¤·¤Þ¤¹¡£¤³¤ì¤é¤ò¤â¤È¤ËºîÀ®¤·¤¿¤Î¤¬°Ê²¼¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤Ç¤¹¡£

 #!/usr/bin/env python3
 
 from ev3dev2.motor import *
 from ev3dev2.sensor import *
 from ev3dev2.sensor.lego import *
 from time import *
 
 Wmax,Bmax,spmax,spmin,brockch,tst=75,5,8,4,6,1.5
 tw = MoveTank(OUTPUT_B, OUTPUT_C)
 Mm= MediumMotor(OUTPUT_A)
 cs,ts,us = ColorSensor(),TouchSensor(),UltrasonicSensor()
 us.mode = 'US-DIST-CM'
 Mv=(Wmax+Bmax)/2
 Lp=(Wmax-Mv)/4
 llp=2*Lp
 spab=(spmax+spmin)/2
 Clev=[Wmax,Wmax-Lp,Mv+Lp,Mv-Lp,Bmax+Lp,Bmax]
 
 class Linetorace:
     def __init__(self,a):
         self.cv=a
         self.colortyp,self.dcv,self.lesp,self.risp=0,0,0,0
         self.typcheck()
         self.movesp()
     def typcheck(self):
         for i in range(5):
             if Clev[i+1]<=self.cv<Clev[i]:
                 self.colortyp=i
                 self.dcv=Clev[i]-self.cv
     def movesp(self):
         zuw=round(self.dcv/llp,1)
         if self.colortyp==0:
             self.lesp=spab-(spab-spmin)*zuw
             self.risp=-spmin
         elif self.colortyp==1:
             self.lesp=spmax
             self.risp=spab+(spmax-spab)*zuw
         elif self.colortyp==2:
             self.lesp=spmax
             self.risp=spmax
         elif self.colortyp==3:
             self.lesp=spab+(spmax-spab)*zuw
             self.risp=spmax
         else:
             self.lesp=-spmin
             self.risp=spab-(spab-spmin)*zuw
 
 class root:
     def __init__(self,v1,v2):
         self.typ,self.chst=v1,v2
     def action(self):
         if self.typ==0:
             follow_line(self.chst,50)
         elif self.typ==1:
             closs(self.chst)
         elif self.typ==2:
             fetch_cuboid(self.chst)
         else:
             gostart()
 
 def follow_line(chst,ched):#¥é¥¤¥ó¥È¥ì¡¼¥¹ÍÑ¥×¥í¥°¥é¥à
     sttime1,notime1 = time(),time()
     bcon=0
     while not (ts.is_pressed) and not ((notime1-sttime1)>ched):
         cvp = cs.reflected_light_intensity
         MLT=Linetorace(cvp)
         if MLT.colortyp==4:
             bcon=bcon+1
         else:
             bcon=0
         notime1=time()
         if (chst <= (notime1-sttime1) <=ched) and (bcon== brockch):
                 break
         tw.on(MLT.lesp,MLT.risp)
         sleep(0.1)
     tw.off()
 
 def closs(pp):#¸òº¹ÅÀ¤Èľ³Ñ¥«¡¼¥Ö¤ÎºÝ¤Î¹ÔÆ°ÍÑ¥×¥í¥°¥é¥à
     cvp= cs.reflected_light_intensity
     MLT = Linetorace(cvp)
     tw.on(-MLT.lesp,-MLT.risp)
     sleep(0.1*brockch)
     tw.off()
     if pp==0:
         follow_line(tst,tst+0.1)
     else:
         sleep(5)
         if pp==1:
             follow_line(tst,tst+0.1)
         elif pp==2:
             tw.on_for_seconds(spmax,spmax,1)
         else:
             sttime=time()
             notime=time()
             while  (notime- sttime <=tst):
                 cvp= cs.reflected_light_intensity
                 MLT= Linetorace(cvp)
                 tw.on(MLT.risp,MLT.lesp)
                 sleep(0.1)
                 notime=time()
     tw.off()
 
 def fetch_cuboid(edti):#¥é¥¤¥ó¥È¥ì¡¼¥¹¸å¥­¥å¡¼¥Ö¤ò²ó¼ý¤·U¥¿¡¼¥ó¡¢¤½¤Î¸å¥é¥¤¥ó¥È¥ì¡¼¥¹ºÆ³«
     sttime2 = time()
     fase=0
     while not (ts.is_pressed):
         cvp= cs.reflected_light_intensity
         MLT= Linetorace(cvp)
         tw.on(MLT.risp,MLT.lesp)
         notime2= time()
         txle= us.distance_centimeters
         if txle <= 4 :
             tw.on(0,0)
             Mm.on_for_seconds(-10,1.2)
             tw.on_for_degrees(-spmax,spmax,360)
             fase=1
             break
         if (notime2-sttime2) >= edti:
             fase=1
             break
         sleep(0.1)
     if fase==1:
         follow_line(5,edti)
     tw.off()
     Mm.off()
 
 def gostart():#¥¹¥¿¡¼¥È»þ¤ÎÁ°¿ÊÍÑ¥×¥í¥°¥é¥à
     tw.on_for_seconds(spmax,spmax,2)
 
 def main():
     MAP=[root(4,0),root(0,0),root(1,0),root(0,0),root(1,1),root(0,0),root(1,1),root(2,30),root(0,20),root(1,2)]
     for i in range(len(MAP)):
         if not ts.is_pressed:
             MAP[i].action()
         else:
             break
     print("all clear")
 if __name__ == '__main__':
     main()

¤³¤Î¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤Æ°Ê²¼¤Ç8¤Ä¤Ëʬ¤±¤Æ¾Ü¤·¤¯ÀâÌÀ¤·¤Æ¤¤¤­¤Þ¤¹
** ­¡¥×¥í¥°¥é¥à¤Î»öÁ°ÀßÄê¤È´ð½àÃͤλ»½Ð [#xacf6790]


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