Ìܼ¡
²ÝÂêÀâÌÀ¥Ú¡¼¥¸¡§2017b/Mission3
»ÈÍѵ¡¡§LEGO MINDSTORMS EV3
Åö½é¤ÏÀè¤ÎÀ߷פμ«Í³ÅÙ¤ò¾å¤²¤ë¤¿¤á¡¢¥ß¥Ç¥£¥¢¥à¥â¡¼¥¿£±¤Ä¤Ë¤è¤ë¡¢¥¥ã¥Ã¥Á¡¦¾º¹ßµ¡Ç½¤Î¼ÂÁõ¤·¤¿¥¢¡¼¥à¤Î´°À®¤òÌܻؤ·¤¿¡£
¤³¤Îµ¡¹½¤ÎÀ߷פÏÈó¾ï¤ËÆñ¹Ò¤·¡¢Â¿¤¯¤Î»þ´Ö¤òÈñ¤ä¤·¤Æ¤·¤Þ¤Ã¤¿¡£¤³¤ì¤Ë¤è¤ê¸å¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Î¼ÑµÍ¤á¤¬´Å¤¯¤Ê¤ë¤³¤È¤Ë¤Ê¤ë¡£
¤·¤«¤·ºÇ½ªÅª¤Ë¤Ï¥¢¡¼¥àµ¡¹½¤ÎÀ߷פËÀ®¸ù¤·¡¢ÉôÉÊ¿ô¤Ë¤â;͵¤¬¤Ç¤Æ¤¤¿¤¿¤á¡¢£²ÂæÂÎÀ©¤Ç¤Î²ÝÂê¿ë¹Ô¤ò¼Â¸½¤Ç¤¤¿¡£
£²ÂæÂÎÀ©¤Ë¤è¤ê»þ´Öû½Ì¤âÁÀ¤¨¤ë¤È»×¤ï¤ì¤¿¤¬¡¢¼ÂºÝ¤É¤¦¤Ê¤Ã¤¿¤«¤Ï¸å½Ò¡£
ÌÞÏÀº£²ó¤â»æ¤òÆ°¤«¤¹¤Î¤Ïº¤Æñ¤Ç¤¢¤Ã¤¿¡£
ÀèÀ¸¤Ë¶µ¤¨¤Æ¤¤¤¿¤À¤¤¤¿µ¡¹½¤ò»²¹Í¤Ë¡¢»õ¼Ö¤ÎÁȤ߹ç¤ï¤»¤Ë¤è¤Ã¤Æ¥¥ã¥Ã¥Á¡¦¾º¹ß¤ò¥â¡¼¥¿£±¤Ä¤Ç¼Â¸½¤¹¤ë¥¢¡¼¥à¤ò»îºî¤·¤¿¡£
±¿Æ°¤ÎÊý¸þ¤òÊÑ´¹¤¹¤ë²Õ½ê¤Ë¤Ï¥Ù¡¼¥¸¥å¿§¤Î¥Ù¥Ù¥ë¥®¥¢Æ±»Î¤ò³ú¤ß¹ç¤ï¤»¤Æ¤¤¤ë¡£
ÎòÂå¤Îµ¡¹½¤ÎÃæ¤Ç¤âÈ´·²¤Î³Ê¹¥Îɤµ¤ò¸Ø¤ë¤¬¡¢¤¤¤¯¤Ä¤«ÌäÂ꤬¤¢¤Ã¤¿¡£
¥Ó¥¸¥å¥¢¥ë¤ò½Å»ë¤·¤¹¤®¤¿¤Î¤«¤â¤·¤ì¤Ê¤¤¡£ ¤³¤ì¤é¤ÎÅÀ¤«¤é¡¢ºÆÀ߷פò»î¤ß¤¿¡£
A·¿¤Î¼ºÇÔ¤«¤é¥â¡¼¥¿£±¤Ä¤Ë¤è¤ë¥¥ã¥Ã¥Á¡¦¾º¹ßµ¡Ç½¤Î¼Â¸½¤ËºÃÀÞ¤·¡¢¥ß¥Ç¥£¥¢¥à¥â¡¼¥¿£²¤Ä¤ò»È¤¤Ã±½ã¤Ë·Ò¤²¤¿¡£
»þ´ÖŪͱͽ¤ËÇ÷¤é¤ì¤ÆÀ¸¤Þ¤ì¤¿µÞ¤ÉʤǤ¢¤ë¡£
º¬¸µ¤Ç»Ù¤¨¤ë¥ß¥Ç¥£¥¢¥à¥â¡¼¥¿¤Ï¿É¤½¤¦¤À¤¬¡¢¥Û¡¼¥ë¥É¾õÂ֤ˤ¹¤ì¤ÐÁ°Éô¤â»Ù¤¨¤ë¤³¤È¤Ï¤Ç¤¤ë¡£
ñ½ã¤Êʬ°ÂÄꤷ¤¿Æ°ºî¤¬´üÂԤǤ¤¿¡£
¤³¤Î·¿¤ÎÌäÂêÅÀ¤Ï¡¢
A·¿¥¢¡¼¥à¤ÎºÃÀÞ¤«¤éΩ¤Áľ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ ¤³¤ì¤é¤ÎÅÀ¤«¤éµ¤¤ò¼è¤êľ¤·¤ÆºÆÀ߷פò¹Ô¤Ã¤¿¡£
¥¿¡¼¥ó¥Æ¡¼¥Ö¥ë·¿¥®¥¢¤È¥Ù¥Ù¥ë¥®¥¢¤ò³èÍѤ·¡¢¤´¤¯¥·¥ó¥×¥ë¤Ê·Á¤Ç¥¥ã¥Ã¥Á¡¦¾º¹ßµ¡Ç½¤ò¼Â¸½¤·¤¿¡£
Ãæ¿´¤òÄ̤뼴¤ò²ó¤¹¤È¡¢¥Ù¥Ù¥ë¥®¥¢¤«¤é¥¿¡¼¥ó¥Æ¡¼¥Ö¥ë·¿¥®¥¢¤òÄ̤¸¤Æ±¿Æ°Êý¸þ¤òÊÑ´¹¤¹¤ë¡£
¥¿¡¼¥ó¥Æ¡¼¥Ö¥ë·¿¥®¥¢¾åÉô¤¬²ó¤ë¤È¡¢¿¤Ó¤¿Çò¥Ó¡¼¥à¤¬³«ÊĤ·¡¢¥³¥Ã¥×¤òÄϤó¤Ç¥Ó¡¼¥à¤ÎÆ°¤¤¬À©¸Â¤µ¤ì¤ë¤È¼´¤Î²óž¤Ë¤¢¤ï¤»¤Æ¾å¤Ø»ý¤Á¾å¤¬¤Ã¤Æ¤¤¤¯¡£
¶¹¤¤²ÄÆ°°è¤òĶ¤¨¤Æ¥â¡¼¥¿¤ò²ó¤·¤Æ¤·¤Þ¤¦¤È¡¢¤¹¤°¤Ë¤¢¤Á¤³¤Á¤Î¥®¥¢¤¬³°¤ì»Ï¤á¤ëÁ¡ºÙ¤Ê»Ò¤Ç¤¢¤ë¡£
¤½¤Î¤¿¤á¡¢°·¤¤¤Ë¤Ï¶ìÏ«¤µ¤»¤é¤ì¤¿¡£
¤·¤«¤·¤½¤ì°Ê³°¤Ë¤ÏÌäÂê̵¤¯¡¢¤³¤ì¤ò´ð¤Ë¼ÂÀﵡ¤Î³«È¯¤Ë¼è¤ê³Ý¤«¤Ã¤¿¡£
¥â¡¼¥¿¤«¤é¼´¤Ë¤É¤¦¤ä¤Ã¤Æ±¿Æ°¤òÅÁ¤¨¤ë¤«¤Ç¤Þ¤¿¶ìǺ¤¹¤ë¤¬¡¢¾Ü¤·¤¯¤Ï²¼µ¤Ë¤Æ¡£
»îºî¥¢¡¼¥àA/B·¿¤ËÂбþ¤¹¤ë¼ÖíÒ¡£
¥Ç¥Õ¥©¥ë¥È¤Î¼ÖÂΤ«¤éÁ°Éô¤ò³ÈÄ¥¤·¡¢¥â¡¼¥¿¤äĶ²»ÇÈ¥»¥ó¥µ¤ò¼è¤êÉÕ¤±¤ë¶õ´Ö¤ò³ÎÊݤ·¤Æ¤¤¤ë¡£
¥¢¡¼¥à¤ÎÉÔÎɤ«¤éÇÑ°Æ¡£
¼Â¤Ï¥«¥é¡¼¥»¥ó¥µ¤Î¼è¤êÉÕ¤±°ÌÃ֤ˤâÉÔÈ÷¤¬¤¢¤ë¡£
»îºî¥¢¡¼¥àC·¿¤ËÂбþ¤·¡¢´°À®µ¡¤Î¸µ¤Ë¤Ê¤ë¼ÖíҤǤ¢¤ë¡£
¼Ì¿¿¤ÎÄ̤ꡢ¥ß¥Ç¥£¥¢¥à¥â¡¼¥¿¤ò²£ÃÖ¤¤·¡¢¥®¥¢¤ò¤¤¤¯¤Ä¤«Ãæ·Ñ¤·¤Æ¼´¤Ø±¿Æ°¤òÅÁ¤¨¤ë¡£
ºÇ½é¤Ï¥â¡¼¥¿¤ò½ÄÃÖ¤¤·¡¢¼´¤ÎÃæ¿´¤Ë±¿Æ°¤òÅÁ¤¨¤ëÊý¿Ë¤À¤Ã¤¿¤¬¡¢¥¹¥Ú¡¼¥¹Åª¤ÊÌäÂ꤫¤éÄü¤á¤¿¡£
¥¢¡¼¥à¤Î¼´¤Ë¤ÏÁ¡ºÙ¤Ê±¿Æ°¤òÅÁ¤¨¤ëɬÍפ¬¤¢¤ë¤Î¤È¡¢Æ°ºî¤¹¤ë¥¢¡¼¥àµ¡¹½¤È¥â¡¼¥¿¤Î´³¾Ä¤òÈò¤±¤ë¤¿¤á¤Ë¤Ç¤¤ë¤À¤±¥®¥¢¤òÃæ·Ñ¤·¤ÆÎ¥¤·¤ÆÇÛÃÖ¤·¤¿¡£
¥¢¡¼¥à¤Î¼´¤Îľ²¼¤Ë¤Ï¥«¥é¡¼¥»¥ó¥µ¤â¤¢¤ê¡¢¤³¤Î¶¹¤¤¥¹¥Ú¡¼¥¹¤Ë¿µ¡Ç½¤òµÍ¤á¹þ¤ó¤À¤¿¤á¡¢ÉôÉÊ£±¤Ä¸ò´¹¤¹¤ë¤Ë¤â°ì¶ìÏ«¤·¤Æ¤·¤Þ¤¦¡£
½Å¿´¤âÄ㤯ÍÞ¤¨¤é¤ì¤¿¤Î¤Ï¤è¤«¤Ã¤¿¤¬¡¢Á¡ºÙ¤ÊC·¿¥¢¡¼¥à¤ÈÁê¤Þ¤Ã¤Æ¡¢À°È÷À¤ÏÎɤ¤¤È¤Ï¸À¤¨¤Ê¤¤¡£
¤Þ¤¿¡¢Ä¶²»ÇÈ¥»¥ó¥µ¤Î¼è¤êÉÕ¤±°ÌÃÖ¤ËÃ×̿Ū¤Ê¥ß¥¹¤¬¤¢¤Ã¤¿¡£
¥¢¡¼¥à¤Î¾º¹ß¤Ë¹ç¤ï¤»¤ÆĶ²»ÇÈ¥»¥ó¥µ¤â¾å²¼¤·¤Æ¤·¤Þ¤¦¤Î¤Ç¤¢¤ë¡£
»æ¥³¥Ã¥×¤òÄϤó¤À¤éÌܱ£¤·¾õÂ֤ˤʤ뤳¤Îµ¡ÂΤˤϡ¢¤â¤¦¾¯¤·²þÎɤ¬É¬ÍפÀ¤Ã¤¿¡£
»îºî¶·¿¤«¤é¡¢Ä¶²»ÇÈ¥»¥ó¥µ¤Î¼è¤êÉÕ¤±°ÌÃ֤ȥ¢¡¼¥à¤Î·Á¾õ¤òÊѹ¹¤·¤¿¡£
Ķ²»ÇÈ¥»¥ó¥µ¤Ï¥¢¡¼¥à¤Î²¼Éô¤Ë¥·¥ã¡¼¥·¤È·Ò¤²¤Æ¡¢¥¢¡¼¥à¤È°ì½ï¤Ë¾å¤ò¸þ¤¯·ç´Ù¤ò²þÁ±¤·¤¿¡£
º£¤Þ¤ÇĶ²»ÇÈ¥»¥ó¥µ¤¬¥³¥Ã¥×¤òÆ⦤«¤é»Ù¤¨¤ëÌò³ä¤òô¤Ã¤Æ¤¿¤¿¤á¡¢Âå¤ï¤ê¤ËÆ⦤«¤é»Ù¤¨¤ë¥Ó¡¼¥à¤â¼è¤êÉÕ¤±¡£
¤Þ¤¿¡¢¥¢¡¼¥à¤Ï²¿ÅÙ¤â¤Î¥³¥Ã¥×¥¥ã¥Ã¥Á¼Â¸³¤ò¹Ô¤¤¡¢°ÂÄꤷ¤Æ¥³¥Ã¥×¤òÄϤá¤ë·Á¾õ¤òÌϺ÷¤·¡¢ºÇ½ªÅª¤Ë¤³¤Î¤è¤¦¤Ê·Á¾õ¤Ë¤Ê¤Ã¤¿¡£
¥¢¡¼¥à¤ä³Æ¼ï¥»¥ó¥µ¤Ë¤è¤Ã¤Æ½Å¿´¤¬Á°Éô´ó¤ê¤Ë¤Ê¤Ã¤¿¤¬¡¢EV3¤ò¸åÊý¤Ë¸ÇÄꤷ¤Æ°ÂÄꤵ¤»¤Æ¤¤¤ë¡£
À°È÷À¤Ï°¤¤¤Þ¤Þ¤À¤¬¡¢¥³¥ó¥Ñ¥¯¥È¤Ë³Ê¹¥¤è¤¯¤Þ¤È¤Þ¤Ã¤¿¤³¤Î¼ÖíҤϾå½ÐÍè¤À¤È»×¤¦¡£
¼Ì¿¿¤Ï¡¢´°À®µ¡¤ò£²Âæ·¤¨¤Æ»£¤Ã¤¿¤â¤Î¤Ç¤¢¤ë¡£
¸«Ê¬¤±¤ä¤¹¤¤¤è¤¦¤ËEV3¤Îξü¤Î¥Ñ¡¼¥Ä¤Î¿§¤òÊѤ¨¤Æ¤¢¤ë¡£
µÞ¥Ô¥Ã¥Áºî¶È¤ÇEV3¤È¤Î¸ÇÄêÊýË¡¤Ë°ã¤¤¤¬¸«¤é¤ì¤ë¤¬¡¢µ¤¤Ë¤¹¤ë¤Û¤É¤Ç¤Ï¤Ê¤¤¡£
¤½¤ì¤¾¤ì¤Î¼ÖíÒ¤ÏA¡¢DÃÏÅÀ¤òƱ»þ¤Ë¥¹¥¿¡¼¥È¤¹¤ë¡£
£±¹æ¼Ö | £²¹æ¼Ö |
---|---|
D¤ò¥¹¥¿¡¼¥È | A¤ò¥¹¥¿¡¼¥È |
¡¥³¥Ã¥×²ó¼ý(1¸ÄÌÜ) | ¡¥³¥Ã¥×²ó¼ý |
¢ ¥Ô¥ó¥Ý¥ó¶ÌÅêÆþ(1²óÌÜ) | ÂÔµ¡ |
£¥³¥Ã¥×½Å¤Í¤Æ²ó¼ý(£²¸ÄÌÜ) | ÂÔµ¡ |
¤¥Ô¥ó¥Ý¥ó¶ÌÅêÆþ(2²óÌÜ) | ÂÔµ¡ |
¥¥³¥Ã¥×¤òYÃÏÅÀ¤Ë£²¸Ä½Å¤ÍÃÖ¤¯ | ÂÔµ¡ |
¦D¤ØÂàÈò¤·¡¢¿®¹æÁ÷¿® | ¢¿®¹æ¼õ¿®¡¢¹ÔÆ°³«»Ï |
ÂÔµ¡ | £¥Ô¥ó¥Ý¥ó¶ÌÅêÆþ |
ÂÔµ¡ | ¤¥³¥Ã¥×¤òYÃÏÅÀ¤Ø½Å¤Í¤ë(ÍýÁÛ) |
(ɽÁȤ߼«ÂΤò´ó¤»¤ëÊýË¡¤¬¤ï¤«¤é¤º¡¢²èÁü¤Î²ó¤ê¹þ¤ß¤òÍøÍѤ·¤Æɽ¤Î°ÌÃÖÄ´À°¤ò¹Ô¤Ã¤¿¡£Ã¼Ëö¤Ë¤è¤Ã¤Æ¤Ï¥ì¥¤¥¢¥¦¥È¤¬Êø²õ¤·¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¡£)
¤É¤Á¤é¤«¤Ë¤Ê¤Ë¤«¤·¤é¤Î¥È¥é¥Ö¥ë¤¬¤¢¤Ã¤Æ¤â¡¢¤â¤¦°ìÊý¤¬À®¤·¿ë¤²¤ë¡¢¤È¤¤¤¦¥ê¥¹¥¯Ê¬»¶¤ò¿Þ¤ëÁÀ¤¤¤À¡£
¤·¤«¤·¡¢£²ÂæÂÎÀ©¤Ë¤è¤ë¥Ç¥á¥ê¥Ã¥È¤â¤¢¤Ã¤¿¡£
EV3¤Ë¤È¤Ã¤Æ¤Î¡ÉÆ°¤¯¾ã³²Êª¡É¤òÁý¤ä¤·¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç¤¢¤ë¡£
£²Âæ¤Î¾×ÆÍ¡¢Ä¶²»ÇÈ¥»¥ó¥µ¤Ë¤è¤ë¥³¥Ã¥×¸¡ÃΤΥߥ¹¤òÈò¤±¤ë¤¿¤á¤ËÄÌ¿®¤ò¹Ô¤¤¡¢£²Â椬Ʊ»þ¤ËÃæ±û¥¾¡¼¥ó¤ËÆþ¤é¤Ê¤¤¤è¤¦¤Ë¿Þ¤Ã¤¿¡£
¤â¤¦¾¯¤·£²Âæ¤Ç¤¢¤ëÍøÅÀ¤ò³è¤«¤·¤¿Àïά¤òºÎ¤ê¤¿¤«¤Ã¤¿¤¬¡¢Ç¡²¿¤»¤ó»þ´Ö¤¬Â¤ê¤Ê¤«¤Ã¤¿¡£
¤Þ¤¿¡¢¤³¤ÎÄÌ¿®Àïά¤â¥í¥Ü¥³¥ó¤Þ¤Ç¤Ë´Ö¤Ë¹ç¤ï¤Ê¤«¤Ã¤¿¡£
ÄÌ¿®¥×¥í¥°¥é¥à¤Î¤ß¤Î¥³¡¼¥Ç¥£¥ó¥°¤Ï°ì±þ½ª¤¨¡¢¼ÖíÒ¤ËÅëºÜ¤»¤ºEV3ËÜÂÎƱ»Î¤Î¤ß¤Ç¤Î¥Æ¥¹¥È¤Î¤ß¹Ô¤Ã¤ÆÀ®¸ù¤·¤Æ¤¤¤ë¡£
¤·¤«¤·¼Â¹Ô¥×¥í¥°¥é¥à¤ËÁȤ߹þ¤ó¤Ç¤Î¥Æ¥¹¥È¤Ï´Ö¤Ë¹ç¤ï¤º¡¢°ìÅÙ¤â¹Ô¤¨¤Æ¤¤¤Ê¤¤¡£
·ë²Ì¡¢¥í¥Ü¥³¥óľÁ°¤ËµÞî±Í½Äê¤òÊѹ¹¤·¡¢2¹æ¼Ö¤Ï¥Ô¥ó¥Ý¥ó¶ÌÅêÆþ¤Þ¤Ç¹Ô¤Ã¤¿¸å¤ËÂàÈò¤·¤Æ¤¤¤ë¡£
ÂàÈò¸å¡¢£±¹æ¼Ö¤¬´èÄ¥¤ë´Ö¤Ë¥¢¡¼¥à¤Î¾å²¼¤ò·«¤êÊÖ¤·±þ±ç¤ò¹Ô¤ª¤¦¤È¤·¤¿¤¬¡¢¤Ê¤¼¤«Æ°¤«¤Ê¤«¤Ã¤¿¡£
¸å½Ò¤Î¼Â¹Ô¥×¥í¥°¥é¥à¤Ë¤ÏÄÌ¿®¥×¥í¥°¥é¥à¤òÁȤ߹þ¤ó¤Ç¤¢¤ë¤¬¡¢¥í¥Ü¥³¥ó»þ¤ÎÄ̤ꥳ¥á¥ó¥È¥¢¥¦¥È¤·¤Æ¤¤¤ë¡£
¸À¸ì¡§python3
¥é¥¤¥ó¥È¥ì¡¼¥¹¤â¹Ô¤¦¤¬¡¢ºÙ¤«¤ÊÄê¿ô¤òÄ´À°¤·¤¿Â¾¤Ï²ÝÂꣲ¤Î´Ø¿ô¤ÈƱ¤¸¤Ç¤¢¤ë¤¿¤á¡¢¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¹Ô¤¦¤¿¤á¤Î´Ø¿ôÉôʬ¤Ï¾Êά¤·¤Æ¤¤¤ë¡£
¾Ü¤·¤¯¤ÏTracer_ver.1.7.3¤ò»²¾È¡£
import ev3dev.ev3 as ev3 import time
mr = ev3.LargeMotor('outC') assert mr.connected, "Connect right large motor to port C" ml = ev3.LargeMotor('outD') assert ml.connected, "Connect left large motor to port A" arm = ev3.MediumMotor('outB') assert arm.connected, "Connect arm medium motor to port B" cs = ev3.ColorSensor() assert cs.connected, "Connect a color sensor to any sensor port" cs.mode = 'COL-REFLECT' us = ev3.UltrasonicSensor() assert us.connected, "Connect a color sensor to any sensor port" us.mode = 'US-DIST-CM'
position_sp_to_angle = 1.55 #position_sp¤Ë¤è¤ë°ÜÆ°»þ¡¢³ÑÅÙ¤ËÊÑ´¹¤¹¤ë¤¿¤á¤ÎÄê¿ô target_val = 50 #¥é¥¤¥ó¥È¥ì¡¼¥¹»þ¤Î¥«¥é¡¼¥»¥ó¥µ¤ÎÌÜɸÃÍ std_speed = 22 #ɸ½à¤ÎÁö¹Ô®ÅÙ kp = std_speed*0.04 #¥é¥¤¥ó¤Î¶³¦¤ØÌá¤ë¶¯¤µ position_sp_to_cm = 20.05 #position_sp¤Ë¤è¤ë°ÜÆ°»þ¡¢Ãͤòcm¤ËÊÑ´¹¤¹¤ë¤¿¤á¤ÎÄê¿ô intersection_time = 0.23/1.8 #Àþ¾åÁö¹Ô»þ¡¢¸òº¹ÅÀ¸¡ÃΤÈȽÃǤ¹¤ë»þ´Ö angle_stabilization_time = 0.3*1.8 #Áö¹Ô¤¹¤ë¶³¦¤òÊѹ¹¤¹¤ëºÝ¤Î°ÜÆ°»þ´Ö
def init_arm(): #¥¢¡¼¥à¥â¡¼¥¿¤Î¥ê¥»¥Ã¥È¡¢»æ¥³¥Ã¥×¤òÄϤó¤À°ÌÃ֤ǹԤ¦ 'pos_positive: to inside, pos_negative: to outside' arm.reset() # del stop_action='hold' input('Press Enter to initialize closed arm position') arm.reset()
def arm_open(): #¥¢¡¼¥à¤ò³«¤¯¡¢init_arm¤Î¸å¤Ë»ÈÍѤ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ arm.run_to_abs_pos(position_sp=200, speed_sp=std_speed*5, stop_action="hold") arm.wait_while("running")
def cup_catch(): #¥³¥Ã¥×¤ò¥¥ã¥Ã¥Á¤¹¤ë mr.run_forever(speed_sp=std_speed*5) ml.run_forever(speed_sp=std_speed*5) while us.value() > 50: pass for motor in mr, ml: motor.stop(stop_action='brake') move(5) arm.run_to_abs_pos(position_sp=0, speed_sp=std_speed*5, stop_action="hold") arm.wait_while("running") move(-5)
def cup_a_little_lift(): #¥¢¡¼¥à¤ò¤ï¤º¤«¤Ë»ý¤Á¾å¤²¤ë¡¢¥Ô¥ó¥Ý¥ó¶ÌÅêÆþÍÑ¡£init_arm¤Î¸å¤Ë»ÈÍѤ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ arm.run_to_abs_pos(position_sp=-42, speed_sp=std_speed*5, stop_action="hold") arm.wait_while("running")
def cup_lift(): #¥¢¡¼¥à¤ò´°Á´¤Ë»ý¤Á¾å¤²¤ë¡£¥³¥Ã¥×½Å¤ÍÍÑ¡£init_arm¸å¤Ë»ÈÍѤ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ arm.run_to_abs_pos(position_sp=-230, speed_sp=std_speed*5, stop_action="hold") arm.wait_while("running")
def search_min_d(search_time=4.5, i=1): #Ķ²»ÇÈ¥»¥ó¥µ¤Ë¤è¤ë¥³¥Ã¥×¥µ¡¼¥Á¡£ if i == 1: ##°ú¿ôsearch_time¤Ë¤Ï¥³¥Ã¥×¥µ¡¼¥Á¤ò¹Ô¤¦»þ´Ö(s)¡¢i¤Çº¸Àû²ó¡¢±¦Àû²ó¤É¤Á¤é¤Ç¥µ¡¼¥Á¤ò»Ï¤á¤ë¤«»ØÄê¡£ sign = [1, -1] #i=1¤Çº¸¼þ¤ê¡¢i=-1¤Ç±¦¼þ¤ê elif i == -1: #Í¿¤¨¤é¤ì¤¿»þ´Ö¡¦¼þ²ó¤Ç·×¬¤·¤¿Ãæ¤Ç¡¢µ÷Î¥¤¬ºÇû¤À¤Ã¤¿Êý¸þ¤Ø¸þ¤¯¡£ sign = [-1, 1] min_d = 500¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡#¥³¥Ã¥×¤Þ¤Ç¤Îµ÷Î¥¡Ömin_d¡×¤Î½é´üÃͤò500¤È¤·¡¢¤½¤ì°Ê²¼¤ò¸¡Ãμ¡ÂèÂåÆþ¤·¤Æ¤¤¤¯ start_time = time.time() mr.run_forever(speed_sp=sign[0]*std_speed*5) #£±½äÌÜ¡¢¤³¤³¤Çmin_d¤ò·èÄê ml.run_forever(speed_sp=sign[1]*std_speed*5) while time.time()-start_time < search_time: if min_d > us.value(): min_d = us.value() for motor in mr, ml: motor.stop(stop_action='brake') start_time = time.time() mr.run_forever(speed_sp=sign[1]*std_speed*5) #£²½äÌÜ¡¢min_d°Ê²¼¤Îµ÷Î¥¤ò¸¡ÃΤ·¤¿¤éÄä»ß ml.run_forever(speed_sp=sign[0]*std_speed*5) while time.time()-start_time < search_time: if us.value() <= min_d: for motor in mr, ml: motor.stop(stop_action='brake') return for motor in mr, ml: motor.stop(stop_action='brake') search_min_d(search_time) #£²½äÌܤÇÄä»ß¤Ç¤¤Ê¤«¤Ã¤¿¾ì¹ç¡¢ºÆµ¢¸Æ¤Ó½Ð¤·
def line_adjust_by_edge(edge): #¸òº¹ÅÀ¸í¸¡ÃΤβóÈòÍÑ¡¢°ú¿ô¤Ë¤Ï¥È¥ì¡¼¥¹¤¹¤ë¶³¦¤òleft_edge¤«right_edge¤ÇÍ¿¤¨¤ë¡£ for motor in mr, ml: motor.run_direct() while abs(cs.value()-target_val) > 10: line_following(edge) #line_following´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Ï[[Tracer_ver.1.7.3>2017b/Member/ibu/Mission2#ibdb1e7a]]¤Ø for motor in mr, ml: motor.stop(stop_action='brake')
def line_adjust_by_time(edge, stab_time=angle_stabilization_time): #¸òº¹ÅÀ¸í¸¡ÃΤβóÈòÍÑ for motor in mr, ml: #¤³¤Á¤é¤Ï¸òº¹ÅÀ¤ÈȽÃǤ¹¤ë¤Þ¤Ç¤ÎÀþ¾åÁö¹Ô¤Î»þ´Ö¤ò»ØÄê¤Ç¤¤ë motor.run_direct() start_time = time.time() while time.time()-start_time < stab_time: line_following(edge) for motor in mr, ml: motor.stop(stop_action='brake')
def run_until_line(): #Àþ¤ò¸«¤Ä¤±¤ë¤Þ¤ÇÁö¹Ô¤¹¤ë for motor in mr, ml: motor.run_forever(speed_sp=std_speed*5) while abs(cs.value()-target_val) > 10: pass for motor in mr, ml: motor.stop(stop_action='brake')
DÃÏÅÀ¤ò¥¹¥¿¡¼¥È¤¹¤ë¼ÖíÒ¤Î¥×¥í¥°¥é¥à¡£
Á°½Ò¤ÎÄ̤ꡢÄÌ¿®Éôʬ¤Ï¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Æ¤¤¤ë¡£
#!/usr/bin/env python3
from def_red_v016 import * #import paho.mqtt.client as mqtt # paho¤Î¥é¥¤¥Ö¥é¥ê¤ò¥¤¥ó¥Ý¡¼¥È
#client = mqtt.Client() # MQTT¤Î¥¯¥é¥¤¥¢¥ó¥È¤òÀ¸À®
def arm_set(): #¥¢¡¼¥à°ÌÃÖ¤òÄ´À°¤¹¤ë¤¿¤á¤Îµ¡Ç½ a = input('w, s') while a in {'w', 's'}: if a == 'w': arm.run_timed(time_sp=0.1*1000, speed_sp=200, stop_action='brake') arm.wait_while('running') elif a == 's': arm.run_timed(time_sp=0.1*1000, speed_sp=-200, stop_action='brake') arm.wait_while('running') a = input('w, s')
''' def mqtt_send(x): #ÃͤòÁ÷¿® position = x #°ÌÃÖ¾ðÊó¤ò¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤ÇÁ÷¿® client.publish("position", position) # "position"¤È¤¤¤¦¥È¥Ô¥Ã¥¯¤Ç¥Ö¥í¡¼¥«¤ËÁ÷¤ë print("send_position_"+x) '''
def main(): #client.connect("10.60.2.156",1883, 60) # ¥Ö¥í¡¼¥«¤ËÀܳ¡¢(60ÉðʾåÀܳ¤¬¤Ê¤¤¤ÈÀÚÃÇ) line_adjust_by_time('left_edge', 1.3) run_until_intersection('left_edge') intersection_turn_left() change_following_edge() run_until_intersection('right_edge') intersection_turn_right() line_adjust_by_time('right_edge', 1) run_until_intersection('right_edge') circle(145) # intersection,change direction arm_open() move(-4) search_min_d(1) cup_catch() circle(-105) move(1) line_adjust_by_time('left_edge', 1) circle(-20) run_until_intersection('left_edge') cup_a_little_lift() move(4) circle(35) move(5) cup_a_little_lift() move(10) cup_lift() circle(-30) move(-5) search_min_d(1, -1) cup_catch() arm_open() cup_a_little_lift() circle(60) cup_lift() circle(-140) arm_open() move(-4) circle(-90) #mqtt_send(1) move(50) #client.disconnect() # ÀÚÃÇ
if __name__ == '__main__': arm_set() init_arm() main()
AÃÏÅÀ¤ò¥¹¥¿¡¼¥È¤¹¤ë¼ÖíÒ¤Î¥×¥í¥°¥é¥à¡£
ÄÌ¿®¥×¥í¥°¥é¥à¤¬´Ö¤Ë¹ç¤ï¤Ê¤«¤Ã¤¿¤¿¤á¡¢¥Ô¥ó¥Ý¥ó¶Ì¤òÅêÆþ¤·¤¿¸å¤Ë²¼¤¬¤ê¡¢°Ê¹ß¤ò¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Æ¤¤¤ë¡£
#!/usr/bin/env python3
from def_green_v016 import *
''' import paho.mqtt.client as mqtt client = mqtt.Client() # MQTT¤Î¥¯¥é¥¤¥¢¥ó¥È¤òÀ¸À® position = 0
def on_connect(client, userdata, flags, rc): # ¥Ö¥í¡¼¥«¤ËÀܳ¤·¤¿»þ¤Ë¼Â¹Ô¤µ¤ì¤ë´Ø¿ô(¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô)¤òÄêµÁ¤·¤Æ¤ª¤¯ print("Connected with result code "+str(rc)) client.subscribe("position") # "position"¤È¤¤¤¦¥È¥Ô¥Ã¥¯¥¹¤ò¹ØÆÉ
def on_message(client, userdata, msg): # ¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¼è¤Ã¤¿»þ¤Ë¼Â¹Ô¤µ¤ì¤ë´Ø¿ô(¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô)¤òÄêµÁ¤·¤Æ¤ª¤¯ position = int(msg.payload) # payload¤È¤¤¤¦ÊÑ¿ô¤Ë¥á¥Ã¥»¡¼¥¸¤¬Æþ¤ë print(position) '''
def arm_set(): #¥¢¡¼¥à°ÌÃÖ¤òÄ´À°¤¹¤ë¤¿¤á¤Îµ¡Ç½ a = input('w, s') while a in {'w', 's'}: if a == 'w': arm.run_timed(time_sp=0.25*1000, speed_sp=200, stop_action='brake') arm.wait_while('running') elif a == 's': arm.run_timed(time_sp=0.25*1000, speed_sp=-200, stop_action='brake') arm.wait_while('running') a = input('w, s')
def main(): ''' client.on_connect = on_connect # ¾å¤ÇÄêµÁ¤·¤¿¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤òÅϤ¹ client.on_message = on_message # ¾å¤ÇÄêµÁ¤·¤¿¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤òÅϤ¹ client.connect("localhost",1883, 60) # ¥Ö¥í¡¼¥«(¼«Ê¬¼«¿È¤Ê¤Î¤Çlocalhost)¤Î1883È֥ݡ¼¥È¤ËÀܳ (Keep Alive ¤Ï60ÉÃ) client.loop_start() # ¥á¥Ã¥»¡¼¥¸¼õ¿®¥ë¡¼¥×¤Î³«»Ï '''
run_until_line() move(4) line_adjust_by_edge('right_edge') run_until_intersection('right_edge') circle(33) arm_open() search_min_d(0.8) cup_catch() circle(-160) line_adjust_by_edge('left_edge') run_until_intersection('left_edge') intersection_turn_left() line_adjust_by_time('left_edge', 1.3) cup_a_little_lift() move(5) cup_lift() move(-50)
''' line_adjust_by_time('left_edge', 5) run_until_intersection('left_edge') while position != 1: pass move(15) circle(35*1.2) line_adjust_by_edge('left_edge') line_adjust_by_time('left_edge', 3) run_until_intersection('left_edge') intersection_turn_left() run_until_intersection('left_edge') circle(-27) arm_open() client.loop_stop() # ¼õ¿®¥ë¡¼¥×¤òÄä»ß client.disconnect() # Àܳ¤òÀÚÃÇ ''' if __name__ == '__main__': arm_set() init_arm() main()
¥×¥í¥°¥é¥à¤¬¥®¥ê¥®¥ê¤Ç´Ö¤Ë¹ç¤ï¤º¡¢Êý¿ËÄ̤ê¤Ë¼Â¹Ô¤µ¤»¤ë¤³¤È¤¹¤é¤Ç¤¤Ê¤«¤Ã¤¿¡£
¤·¤«¤·¡¢Ã°Ç°¤ÊÄ´À°¤Î¤ª¤«¤²¤Ç¥Ý¥¤¥ó¥È¤Ï¤¢¤ëÄøÅÙ²Ô¤°»ö¤¬¤Ç¤¡¢¥í¥Ü¥³¥ó¤Ï£²°Ì¤Ç½ª¤¨¤ë¤³¤È¤¬¤Ç¤¤¿¡£
¤â¤·¤¢¤È£±Æü;͵¤¬¤¢¤ê¡¢Êý¿ËÄ̤ê¤Î¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤Ç¤¤Æ¤¤¤ì¤Ð¡¢¤â¤¦¾¯¤·Îɤ¤·ë²Ì¤Ë¤Ê¤Ã¤¿¤À¤í¤¦¡£
¤³¤Î¸¶°ø¤Ï¥í¥Ü¥Ã¥ÈÀ߷ס¢Æä˥¢¡¼¥à³«È¯¤Ç»þ´Ö¤ò¤«¤±²á¤®¤¿¤³¤È¤Ç¤â¤¢¤ë¡£
»öÁ°¤Ë¸«Ä̤·¤òΩ¤Æ¡¢¥í¥ÜÀ©ºî¼«ÂΤηײè¤òΩ¤Æ¤Æ¤ª¤±¤Ð¤è¤¤¤Î¤À¤¬¡¢¤½¤ì¤Ë̵Íý¤Ë¹ç¤ï¤»¤¿·ë²ÌÀ¸¤Þ¤ì¤¿¤Î¤¬B·¿¥¢¡¼¥à¤Ç¤¢¤ë¡£
¤³¤ì¤òÀ߷פ·Ä¾¤·¤Æ»þ´Ö¤ò¤«¤±¤¿È½ÃǤϴְã¤Ã¤Æ¤¤¤Ê¤¤¤È¿®¤¸¤¿¤¤¡£
·ë²Ì¤Ï¤É¤¦¤Ç¤¢¤ì¡¢¥í¥Ü¥Æ¥£¥¯¥¹ÆþÌ祼¥ß¤òÄ̤¸¤Æ¿¤¯¤Î·Ð¸³¤òÀѤळ¤È¤¬¤Ç¤¡¢Æ±»þ¤Ë³Ú¤·¤à¤³¤È¤¬¤Ç¤¤¿¡£
ÆÃ¤Ë¥×¥í¥°¥é¥ß¥ó¥°·Ð¸³¡¢¥Á¡¼¥à¥×¥í¥¸¥§¥¯¥È¤Ç¤Î¶¦Æ±ºî¶È·Ð¸³¤Ï¾Íè¤ËÌòΩ¤Ã¤Æ¤¯¤ì¤ë¤Ï¤º¤À¡£
ÍèµÒ¿ô¥«¥¦¥ó¥¿¡¼ 136964