Ìܼ¡

²ÝÂêÀâÌÀ¥Ú¡¼¥¸¡§2017b/Mission3

À߷פˤĤ¤¤Æ

»ÈÍѵ¡¡§LEGO MINDSTORMS EV3

Àß·×»×ÁÛ

Åö½é¤ÏÀè¤ÎÀ߷פμ«Í³ÅÙ¤ò¾å¤²¤ë¤¿¤á¡¢¥ß¥Ç¥£¥¢¥à¥â¡¼¥¿£±¤Ä¤Ë¤è¤ë¡¢¥­¥ã¥Ã¥Á¡¦¾º¹ßµ¡Ç½¤Î¼ÂÁõ¤·¤¿¥¢¡¼¥à¤Î´°À®¤òÌܻؤ·¤¿¡£
¤³¤Îµ¡¹½¤ÎÀ߷פÏÈó¾ï¤ËÆñ¹Ò¤·¡¢Â¿¤¯¤Î»þ´Ö¤òÈñ¤ä¤·¤Æ¤·¤Þ¤Ã¤¿¡£¤³¤ì¤Ë¤è¤ê¸å¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Î¼ÑµÍ¤á¤¬´Å¤¯¤Ê¤ë¤³¤È¤Ë¤Ê¤ë¡£
¤·¤«¤·ºÇ½ªÅª¤Ë¤Ï¥¢¡¼¥àµ¡¹½¤ÎÀ߷פËÀ®¸ù¤·¡¢ÉôÉÊ¿ô¤Ë¤â;͵¤¬¤Ç¤Æ¤­¤¿¤¿¤á¡¢£²ÂæÂÎÀ©¤Ç¤Î²ÝÂê¿ë¹Ô¤ò¼Â¸½¤Ç¤­¤¿¡£
£²ÂæÂÎÀ©¤Ë¤è¤ê»þ´Öû½Ì¤âÁÀ¤¨¤ë¤È»×¤ï¤ì¤¿¤¬¡¢¼ÂºÝ¤É¤¦¤Ê¤Ã¤¿¤«¤Ï¸å½Ò¡£

ÌÞÏÀº£²ó¤â»æ¤òÆ°¤«¤¹¤Î¤Ïº¤Æñ¤Ç¤¢¤Ã¤¿¡£

¥¢¡¼¥à³«È¯

»îºîA·¿

»îºî¥¢¡¼¥àA

ÀèÀ¸¤Ë¶µ¤¨¤Æ¤¤¤¿¤À¤¤¤¿µ¡¹½¤ò»²¹Í¤Ë¡¢»õ¼Ö¤ÎÁȤ߹ç¤ï¤»¤Ë¤è¤Ã¤Æ¥­¥ã¥Ã¥Á¡¦¾º¹ß¤ò¥â¡¼¥¿£±¤Ä¤Ç¼Â¸½¤¹¤ë¥¢¡¼¥à¤ò»îºî¤·¤¿¡£
±¿Æ°¤ÎÊý¸þ¤òÊÑ´¹¤¹¤ë²Õ½ê¤Ë¤Ï¥Ù¡¼¥¸¥å¿§¤Î¥Ù¥Ù¥ë¥®¥¢Æ±»Î¤ò³ú¤ß¹ç¤ï¤»¤Æ¤¤¤ë¡£

ÎòÂå¤Îµ¡¹½¤ÎÃæ¤Ç¤âÈ´·²¤Î³Ê¹¥Îɤµ¤ò¸Ø¤ë¤¬¡¢¤¤¤¯¤Ä¤«ÌäÂ꤬¤¢¤Ã¤¿¡£

¥Ó¥¸¥å¥¢¥ë¤ò½Å»ë¤·¤¹¤®¤¿¤Î¤«¤â¤·¤ì¤Ê¤¤¡£ ¤³¤ì¤é¤ÎÅÀ¤«¤é¡¢ºÆÀ߷פò»î¤ß¤¿¡£

»îºîB·¿

»îºî¥¢¡¼¥àB

A·¿¤Î¼ºÇÔ¤«¤é¥â¡¼¥¿£±¤Ä¤Ë¤è¤ë¥­¥ã¥Ã¥Á¡¦¾º¹ßµ¡Ç½¤Î¼Â¸½¤ËºÃÀÞ¤·¡¢¥ß¥Ç¥£¥¢¥à¥â¡¼¥¿£²¤Ä¤ò»È¤¤Ã±½ã¤Ë·Ò¤²¤¿¡£
»þ´ÖŪͱͽ¤ËÇ÷¤é¤ì¤ÆÀ¸¤Þ¤ì¤¿µÞ¤ÉʤǤ¢¤ë¡£
º¬¸µ¤Ç»Ù¤¨¤ë¥ß¥Ç¥£¥¢¥à¥â¡¼¥¿¤Ï¿É¤½¤¦¤À¤¬¡¢¥Û¡¼¥ë¥É¾õÂ֤ˤ¹¤ì¤ÐÁ°Éô¤â»Ù¤¨¤ë¤³¤È¤Ï¤Ç¤­¤ë¡£
ñ½ã¤Êʬ°ÂÄꤷ¤¿Æ°ºî¤¬´üÂԤǤ­¤¿¡£
¤³¤Î·¿¤ÎÌäÂêÅÀ¤Ï¡¢

A·¿¥¢¡¼¥à¤ÎºÃÀÞ¤«¤éΩ¤Áľ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ ¤³¤ì¤é¤ÎÅÀ¤«¤éµ¤¤ò¼è¤êľ¤·¤ÆºÆÀ߷פò¹Ô¤Ã¤¿¡£

»îºîC·¿

»îºî¥¢¡¼¥àC

¥¿¡¼¥ó¥Æ¡¼¥Ö¥ë·¿¥®¥¢¤È¥Ù¥Ù¥ë¥®¥¢¤ò³èÍѤ·¡¢¤´¤¯¥·¥ó¥×¥ë¤Ê·Á¤Ç¥­¥ã¥Ã¥Á¡¦¾º¹ßµ¡Ç½¤ò¼Â¸½¤·¤¿¡£
Ãæ¿´¤òÄ̤뼴¤ò²ó¤¹¤È¡¢¥Ù¥Ù¥ë¥®¥¢¤«¤é¥¿¡¼¥ó¥Æ¡¼¥Ö¥ë·¿¥®¥¢¤òÄ̤¸¤Æ±¿Æ°Êý¸þ¤òÊÑ´¹¤¹¤ë¡£
¥¿¡¼¥ó¥Æ¡¼¥Ö¥ë·¿¥®¥¢¾åÉô¤¬²ó¤ë¤È¡¢¿­¤Ó¤¿Çò¥Ó¡¼¥à¤¬³«ÊĤ·¡¢¥³¥Ã¥×¤òÄϤó¤Ç¥Ó¡¼¥à¤ÎÆ°¤­¤¬À©¸Â¤µ¤ì¤ë¤È¼´¤Î²óž¤Ë¤¢¤ï¤»¤Æ¾å¤Ø»ý¤Á¾å¤¬¤Ã¤Æ¤¤¤¯¡£
¶¹¤¤²ÄÆ°°è¤òĶ¤¨¤Æ¥â¡¼¥¿¤ò²ó¤·¤Æ¤·¤Þ¤¦¤È¡¢¤¹¤°¤Ë¤¢¤Á¤³¤Á¤Î¥®¥¢¤¬³°¤ì»Ï¤á¤ëÁ¡ºÙ¤Ê»Ò¤Ç¤¢¤ë¡£
¤½¤Î¤¿¤á¡¢°·¤¤¤Ë¤Ï¶ìÏ«¤µ¤»¤é¤ì¤¿¡£
¤·¤«¤·¤½¤ì°Ê³°¤Ë¤ÏÌäÂê̵¤¯¡¢¤³¤ì¤ò´ð¤Ë¼ÂÀﵡ¤Î³«È¯¤Ë¼è¤ê³Ý¤«¤Ã¤¿¡£
¥â¡¼¥¿¤«¤é¼´¤Ë¤É¤¦¤ä¤Ã¤Æ±¿Æ°¤òÅÁ¤¨¤ë¤«¤Ç¤Þ¤¿¶ìǺ¤¹¤ë¤¬¡¢¾Ü¤·¤¯¤Ï²¼µ­¤Ë¤Æ¡£

¼ÖíÒ³«È¯

»îºî­µ·¿

»îºî¥·¥ã¡¼¥·£±

»îºî¥¢¡¼¥à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')

1¹æ¼Ö¼Â¹Ô¥×¥í¥°¥é¥à

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()

2¹æ¼Ö¼Â¹Ô¥×¥í¥°¥é¥à

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



źÉÕ¥Õ¥¡¥¤¥ë: filetactics.jpg 191·ï [¾ÜºÙ] filemachine_proto4.jpg 197·ï [¾ÜºÙ] filechassis_proto1.jpg 217·ï [¾ÜºÙ] filefin_machines.jpg 241·ï [¾ÜºÙ] fileproto_armC.jpg 230·ï [¾ÜºÙ] fileproto_armB-2.jpg 207·ï [¾ÜºÙ] fileproto_armA-1.jpg 241·ï [¾ÜºÙ]

¥È¥Ã¥×   ÊÔ½¸ Åà·ë º¹Ê¬ ÍúÎò źÉÕ Ê£À½ ̾Á°Êѹ¹ ¥ê¥í¡¼¥É   ¿·µ¬ °ìÍ÷ ¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS
Last-modified: 2021-09-09 (ÌÚ) 19:21:08