²ÝÂꣲ¤Ç»ÈÍѤ·¤¿¥³¡¼¥¹¤Ë¥Ô¥ó¥Ý¥ó¶Ì¤¬Æþ¤Ã¤¿»æ¥³¥Ã¥×¤¬»ØÄꤵ¤ì¤¿¾ì½ê¤Ë¤ª¤¤¤Æ¤¢¤ê¡¢¤½¤ì¤é¤òÊÌ¡¹¤Ë²ó¼ý¤·¤Æ¥Ô¥ó¥Ý¥ó¶Ì¤ÏXÃÏÅÀ¤Ë¡¢»æ¥³¥Ã¥×¤ÏYÃÏÅÀ¤Ë±¿¤Ö¡£¤µ¤é¤Ë¾ã³²Êª¤È¤·¤Æ¤â»æ¥³¥Ã¥×¤¬ÃÖ¤¤¤Æ¤¢¤ê¤½¤ì¤é¤òÆ°¤«¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
º£²ó¤Î²ÝÂꣳ¤Ïºî¶ÈÆâÍƤ¬¤È¤Æ¤â¿¤¤¤Î¤Ç¡¢¥Á¡¼¥àÆâ¤Ç¥í¥Ü¥Ã¥È¤òºî¤ëºî¶È¤È¥×¥í¥°¥é¥à¤òºî¤ëºî¶È¤È¤Ç¡¢Ê¬Ã´¤·¤Æºî¶È¤ò¹Ô¤Ã¤¿¡£»ä¤Ï¼ç¤Ë¥í¥Ü¥Ã¥È¤Îµ¡ÂΤòºîÀ®¤·¤¿¤Î¤Ç¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤ÏÂçëÉ÷¸ã¡¢¥«¥Ç¥ó¥¨¥ó¡¢¥Á¥ç¥¦¥«¥¤¥É¥¦¤Î¥ì¥Ý¡¼¥È¤ò»²¹Í¤Ë¤·¤Æ²¼¤µ¤¤¡£¡Ê¡Ö¥Á¡¼¥à¥á¥ó¥Ð¡¼¡×¤Î¹àÌܤ˥ê¥ó¥¯¤¬¤¢¤ê¤Þ¤¹¡Ë
¥ë¡¼¥ë¤Î¾ÜºÙ¤Ï¤³¤Á¤é¤Î¥ê¥ó¥¯¤Ë¤¢¤ê¤Þ¤¹¤Î¤Ç»²¹Í¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
http://yakushi.shinshu-u.ac.jp/robotics/?2017b%2FMission3#red46b61
²£Àî ͧÌé
¥« ¥Ç¥ó¥¨¥óhttp://yakushi.shinshu-u.ac.jp/robotics/?2017b%2FMember%2Fyan%2FMission3
¥Á¥ç¥¦ ¥«¥¤¥É¥¦http://yakushi.shinshu-u.ac.jp/robotics/?2017b%2FMember%2FAlex%2FMission3
(¾¤Î¥á¥ó¥Ð¡¼¤Î¥ì¥Ý¡¼¥È¤â»²¹Í¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£)
ºîÀ®¤·¤¿¥í¥Ü¥Ã¥È¤Ï°ìÂΤǡ¢¥³¥Ã¥×¤ò¸«¤Ä¤±¤ë¡¢¤Ä¤«¤à¡¢½Å¤Í¤ë¡¢¥Ô¥ó¥Ý¥ó¶Ì¤ò»ØÄê°ÌÃ֤ޤDZ¿¤ÖÆ°ºî¡¢¤¹¤Ù¤Æ¤ÎÆ°ºî¤ò°ìÂΤǤ³¤Ê¤»¤ë¤è¤¦¤Ê¥í¥Ü¥Ã¥È¤òºîÀ®¤·¤¿¡£¡Ê¾ÜºÙ¤Ï²¼¤Î¥í¥Ü¥Ã¥È¤Î²èÁü¤ò»²¾È¡Ë
¤³¤Î¥í¥Ü¥Ã¥È¤ÏÁ°ÎضîÆ°¤È¤Ê¤Ã¤Æ¤ª¤ê¡¢¥í¥Ü¥Ã¥È¤Î¼ÖÂΤ¬¤È¤Æ¤â½Å¤¤¤Î¤Ç¡¢¥í¥Ü¥Ã¥È¤ÎºîÀ®¥Þ¥Ë¥å¥¢¥ëËܤˤ¢¤ë¥í¥Ü¥Ã¥È¤Î¸åÎؤμÖÎؤòÆó¤Äºî¤ê¡¢¥í¥Ü¥Ã¥È¤Î¸å¤í¤Ë¼è¤êÉÕ¤±¤ë¤³¤È¤Ç¥í¥Ü¥Ã¥È¤Î½ÅÎ̤ò»Ù¤¨¡¢¥¹¥à¡¼¥º¤ËÆ°¤±¤ë¤è¤¦¹©Éפ·¤¿¡£
¤³¤Î¥í¥Ü¥Ã¥È¤Ï°ìÂΤǥߥå·¥ç¥ó¤ò¤³¤Ê¤¹¤¿¤á¤Ë¥í¥Ü¥Ã¥È¤ËNXTËÜÂΤòÆóÂæÀѤޤʤ±¤ì¤Ð¤Ê¤é¤Ê¤«¤Ã¤¿¤Î¤Ç¡¢¥í¥Ü¥Ã¥ÈËÜÂΤζ¯ÅÙ¤ò¶¯¤¯¤¹¤ëɬÍפ¬¤¢¤Ã¤¿¡£¤½¤³¤Ç¡¢¥í¥Ü¥Ã¥È¤Î¸å¤í¤ÈÁ°¤Î´Ö¤Ë¶Ú¸ò¤¤¤òÀߤ±¤ë¤³¤È¤Ç¡¢¾¯¤·¤À¤±¶¯ÅÙ¤ò¾å¤²¤ë¤³¤È¤¬½Ð¤¤¿¡£¤µ¤é¤ËľÀþÁö¹Ô¡¢²óž¤¹¤ë¤È¤¤Ë¥í¥Ü¥Ã¥È¤Î¥â¡¼¥¿¡¼¤¬Á°¸å¤ËÆ°¤¤¤Æ¤·¤Þ¤¦ÌäÂê¤â¤³¤ì¤Ç²ò·è¤¹¤ë¤³¤È¤¬½Ð¤¤¿
¸÷¥»¥ó¥µ¡¼
²¼¤Î²èÁü¤Î¤è¤¦¤Ë¥í¥Ü¥Ã¥È¤Îº¸±¦Î¾Êý¤Ë¸÷¥»¥ó¥µ¡¼¤ò¼è¤êÉÕ¤±¡¢¸÷¥»¥ó¥µ¡¼¤ò»È¤¤Ê¬¤±¤ë¤³¤È¤Ç»æ¤ËÉÁ¤«¤ì¤¿Àþ¤ÎÆɤ߼è¤êÊý¤¬Áý¤¨¤¿¡£¤½¤Î·ë²Ì¡¢Ê£»¨¤ÊÆ°¤¤ò¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£
Ķ²»ÇÈ¥»¥ó¥µ¡¼
¥³¥Ã¥×¤ò¸«¤Ä¤±¤ëĶ²»ÇÈ¥»¥ó¥µ¡¼¤Ï¥í¥Ü¥Ã¥ÈÁ°Â¦Ãæ±û¤Ë¼è¤êÉÕ¤±¡¢¤µ¤é¤Ë¥»¥ó¥µ¡¼¤ò½Ä¤Ë¤·¤Æ»È¤¦¤³¤È¤Ç¬Äꤷ¤¿»æ¥³¥Ã¥×¤Þ¤Ç¤Îµ÷Î¥¤ò¤è¤êÀµ³Î¤Ë¬¤ë¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¹©Éפ·¤¿¡£¡Ê²èÁü»²¾È¡Ë
¤·¤«¤·¡¢¡Ö¼ç¤Ê¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤è¤ëÆ°ºî¤Îή¤ì¡×¤Î¹àÌܤǾܤ·¤¯ÀâÌÀ¤¹¤ë¤¬¡¢¤³¤Î¥í¥Ü¥Ã¥È¤Ï»æ¥³¥Ã¥×¤ò¥í¥Ü¥Ã¥È¤ÎÃæ¤Ë¼è¤ê¹þ¤à¤Î¤Ç¡¢Ä¶²»ÇÈ¥»¥ó¥µ¡¼¤Ë¡¢²¼¤ÎÆ°¤¯²èÁü¤Î¤è¤¦¤Ë¥â¡¼¥¿¡¼¤ò¼è¤êÉÕ¤±¤ÆĶ²»ÇÈ¥»¥ó¥µ¡¼¤¬Æ°¤±¤ë¤è¤¦¤Ë¤·¡¢»æ¥³¥Ã¥×¤ò¥í¥Ü¥Ã¥È¤ÎÆâÉô¤Ë¼è¤ê¹þ¤á¤ë¤è¤¦¤Ë¤·¤¿¡£
»æ¥³¥Ã¥×¤ò¤Ä¤«¤àµ¡¹½¤ÏÊÒÊý¤ÎÏÓ¤ò¸ÇÄꤷ¡¢¤â¤¦ÊÒÊý¤ÎÏÓ¤ò¥â¡¼¥¿¡¼¤ÇÆ°¤«¤¹¤³¤È¤Ç»æ¥³¥Ã¥×¤ò¤Ä¤«¤à¤è¤¦¤Ë¤·¤¿¡£¤Þ¤¿¡¢»æ¥³¥Ã¥×¤ò¤Ä¤«¤ß¤ä¤¹¤¤¤è¤¦¥¿¥¤¥ä¤ò¼è¤êÉÕ¤±¤¿¡£¤µ¤é¤Ë¡¢¤Ä¤«¤ó¤À»þ¤Ë»æ¥³¥Ã¥×¤ò¾¯¤·É⤫¤»¤ë¤³¤È¤ÇXÃÏÅÀ¤Î³ä¤ê¤Ð¤·¤òĶ¤¨¤Æ¥Ô¥ó¥Ý¥ó¶Ì¤òÏÈÆâ¤Ë±¿¤Ù¤ë¤è¤¦¤Ë¹©Éפ·¤¿¡£
¾å¤«¤é¸«¤¿¿Þ
²£¤«¤é¸«¤¿¿Þ
»æ¥³¥Ã¥×¤ò¾å¤²²¼¤²¤¹¤ë¥â¡¼¥¿¡¼¤Ë»æ¥³¥Ã¥×¤ò¤Ä¤«¤à¥â¡¼¥¿¡¼¤ò¤È¤ê¤Ä¤±¤Æ»æ¥³¥Ã¥×¤ò¤Ä¤«¤ß¡¢¾å¤²²¼¤²¤Ç¤¤ë¤è¤¦¤Ë¤·¤¿¡£
¡ö¥í¥Ü¥Ã¥È¤Î»æ¥³¥Ã¥×¤ò¼èÆÀ¤¹¤ë¤È¤¤Î°ìÏ¢¤ÎÆ°¤¤Ï¡Ö¼ç¤Ê¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤è¤ëÆ°ºî¤Îή¤ì¡×¤Î¹àÌܤÇÀâÌÀ¤¹¤ë¡£
²ÝÂꣳ¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Ï£²µ¡¤ÎNXT´Ö¤ÇBluetouth¤ò²ð¤·¤ÆÄÌ¿®¤ò¹Ô¤¦¥×¥í¥°¥é¥à¤ò»ÈÍѤ·¤Æ¤ª¤ê¡¢Ä¶²»ÇÈ¥»¥ó¥µ¡¼¤òÍѤ¤¤Æ»æ¥³¥Ã¥×¤òǧ¼±¤·¤¿¸å¡¢¿Æµ¡¤«¤é¤Î¿®¹æ¤ò¼õ¿®¤·»Òµ¡¤Î»æ¥³¥Ã¥×¤ò¤Ä¤«¤à¥×¥í¥°¥é¥à¤¬µ¯Æ°¤¹¤ë¥×¥í¥°¥é¥à¤Ç¤¢¤ë¡£
²ÝÂꣳ¤ËɬÍפʼç¤Ê¥×¥í¥°¥é¥ß¥ó¥°¤Ï¡Ö»æ¥³¥Ã¥×¤ò¸«¤Ä¤±¤ë¥×¥í¥°¥é¥ß¥ó¥°¡×¤È¡Ö¥é¥¤¥ó¥È¥ì¡¼¥¹¤¹¤ë¥×¥í¥°¥é¥ß¥ó¥°¡×¤Ç¤¢¤ë¡£
¤É¤Î¤è¤¦¤Ë¥í¥Ü¥Ã¥È¤«¤é°ìÈֶᤤ»æ¥³¥Ã¥×¤ò¸«¤Ä¤±¤ë¤Î¤«
¥í¥Ü¥Ã¥È¤«¤é°ìÈֶᤤ»æ¥³¥Ã¥×¤ò¸«¤Ä¤±¤ë¤¿¤á¤Ë¤Ï¥»¥ó¥µ¡¼¤¬»ØÄꤵ¤ì¤¿Ç¤°Õ¤Î³ÑÅÙ¤ò²ó¤ê¡¢¤½¤Î¸å²ó¤Ã¤Æ¤¤¤ëÅÓÃæ¤Ç°ìÈֻ楳¥Ã¥×¤Ë¶á¤«¤Ã¤¿³ÑÅÙ¤ò¿ï»þµ²±¡Ê»æ¥³¥Ã¥×¤È¥»¥ó¥µ¡¼¤Îµ÷Î¥¤ÎºÇ¾®Ãͤò¿ï»þÃÖ¤´¹¤¨¤¹¤ë¡Ë¤·¤Æ¤¤¤¯¡£»ØÄꤵ¤ì¤¿³ÑÅÙ¤ò²ó¤ê½ª¤¨¤ë¤È°ìÈֻ楳¥Ã¥×¤Ë¶á¤¤³ÑÅ٤˸þ¤¯¤¿¤á¤Ëvoid turnAng(long ang¡Ë¤òÍѤ¤¤Æ¥¿¥¤¥ä¤ò²óž¤µ¤»¤ë¡£¡Ê²èÁü»²¾È¡Ë
»æ¥³¥Ã¥×¤ò¸«¤Ä¤±¤Æ¶á¤Å¤¯¥×¥í¥°¥é¥à¤Ï¼¡¤Î1¡Á4¤Î¼ê½ç¤¬¹Ô¤ï¤ì¤Æ¤¤¤ë¡£ ¡int searchDirection(long ang)¤Ë¤è¤Ã¤Æ¤É¤ì¤¯¤é¤¤¤Î³ÑÅÙ¤ÎÈϰϤòÄ´¤Ù¤ë¤«¤ò»ØÄꤹ¤ë ¢»ØÄꤷ¤¿³ÑÅÙ¤ò²ó¤ë¤¿¤á¤Ë¤Ï¤É¤Î¤¯¤é¤¤¥¿¥¤¥ä¤ò²ó¤»¤Ð¤è¤¤¤« void turnAng(long ang)¤Ç·×»»¤·¤Æ¥¿¥¤¥ä¤ò²ó¤¹ £»æ¥³¥Ã¥×¤Ë°ìÈֶᤤ°ÌÃ֤γÑÅÙ¤òµ²±¤·¤¿¤é¤½¤Î³ÑÅ٤˥í¥Ü¥Ã¥È¤¬¸þ¤¯ ¤int searchDirection(long ang)¤Ë¤è¤Ã¤Æ°ìÈֶᤤ»æ¥³¥Ã¥×¤Þ¤Ç¤Îµ÷Î¥¤ò³Îǧ¤·¤¿¤éǤ°Õ¤Îµ÷Î¥¤Þ¤Ç¶á¤Å¤¯¡£¤³¤ÎºÝ¤Ë¶á¤Å¤¯µ÷Î¥¤Ïvoid fwdDist(float d)¤ò¤Ä¤«¤¤¡¢¤É¤Î¤¯¤é¤¤¥¿¥¤¥ä¤ò²ó¤»¤Ð¤è¤¤¤«¤ò·×»»¤·¤Æ¥¿¥¤¥ä¤ò²ó¤¹¡£
const float diameter = 5.45; //¥¿¥¤¥äľ·Â const float track = 10.35; //¥¿¥¤¥ä¥È¥ì¥Ã¥ÉÉý const float pi = 3.1415; //±ß¼þΨ void fwdDist(float d) //µ÷Î¥¡¡£ä£ã£íÁ°¿Ê¡¡// { long angle = d/(diameter*pi)*360.0; //ɬÍפʥ¿¥¤¥ä¤Î²óž³ÑÅÙ RotateMotorEx(OUT_AC, SPEED_SLOW, angle, 0, true ,true); } void turnAng(long ang) //³ÑÅÙangÅ٤λþ·×²ó¤ê¤ÎÀû²ó { long angle = track/diameter * ang; RotateMotorEx(OUT_AC, SPEED_SLOW, angle, 100, true, true); } int searchDirection(long ang) //¸½ºß¤ÎÊý¸þ¤òÃæ¿´¤ËangÅÙ¤ÎÈϰϤÇõ¤· //¾ã³²Êª¤Þ¤Ç¤Îµ÷Î¥¤òÊÖ¤¹ { long tacho_min; //ºÇ¤â¶á¤¤µ÷Î¥¤ò¼Â¸½¤¹¤ë¥¿¥¤¥ä¤Î²óž¿ô int d_min = 300; //ºÇ¤â¶á¤¤µ÷Î¥¤Î²¾¤ÎºÇ¾®Ã͡ʽ½Ê¬Â礤¯¤È¤Ã¤Æ¤ª¤¯¡Ë long angle = (track/diameter)*ang; //Àû²ó³ÑÅÙ¤«¤é¥¿¥¤¥ä¤Î²óž¤ò·×»» turnAng(ang/2); //»ØÄꤵ¤ì¤¿³ÑÅÙ¤ÎȾʬ¤òÀû²ó ResetTachoCount(OUT_AC); //³ÑÅٷ׬¤ò¥ê¥»¥Ã¥È OnFwdSync(OUT_AC,SPEED_SLOW,-100); //Ⱦ»þ·×²ó¤ê¤ËÀû²ó while(MotorTachoCount(OUT_A)<=angle) { if (SensorUS(S1)<d_min) { //¸½ºß¤Îµ÷Î¥¤¬¼Ú¤ê¤ÎºÇ¾®Ãͤè¤ê¾®¤µ¤¤¾ì¹ç d_min = SensorUS(S1); //²¾¤ÎºÇ¾®Ãͤò¹¹¿· tacho_min = MotorTachoCount(OUT_A); //¤³¤Î»þ¤Î¥¿¥¤¥ä¤Î²óž¿ô¤òµÏ¿ } } OnFwdSyncEx(OUT_AC,SPEED_SLOW,100,RESET_NONE); until(MotorTachoCount(OUT_A)<=tacho_min || SensorUS(S1)<=d_min); Wait(14); //ÈùÄ´À° Off(OUT_AC);Wait(500); return d_min; }
¥é¥¤¥ó¥È¥ì¡¼¥¹¤¹¤ë¥×¥í¥°¥é¥à¤Î¾ÜºÙ¤Ï²ÝÂê2¤Î¥ì¥Ý¡¼¥È¤Ç¾Ü¤·¤¯ÀâÌÀ¤·¤Æ¤¤¤ë¤Î¤Ç¤½¤Á¤é¤ò»²¹Í¤Ë¤·¤Æ²¼¤µ¤¤¡£ http://yakushi.shinshu-u.ac.jp/robotics/#g9f1eef7
¥í¥Ü¥Ã¥È¤Î´ðËÜŪ¤ÊÆ°ºî¤Îή¤ì¤Ï¤Ä¤®¤Î¤È¤ª¤ê¤Ç¤¢¤ë¡£
¡»æ¥³¥Ã¥×¤ò¸«¤Ä¤±¤ë ¢¥»¥ó¥µ¡¼¤ò¾å¤²¤ë £»æ¥³¥Ã¥×¤ò¤Ä¤«¤à ¤XÃÏÅÀ¤Ë¸þ¤«¤¦ ¥»æ¥³¥Ã¥×¤ò»ý¤Á¾å¤²¤ë ¦¥»¥ó¥µ¡¼¤ò²¼¤²¤ë §»æ¥³¥Ã¥×¤ò¸«¤Ä¤±¤ë
¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò»È¤¤¡¢»æ¥³¥Ã¥×¤Î¶á¤¯¤ËÅþÃ夷¤¹¤ë¤È¡¢¥»¥ó¥µ¡¼¤òµ¯Æ°¤·¤Æ¡Ö»æ¥³¥Ã¥×¤ò¸«¤Ä¤±¤ë¥×¥í¥°¥é¥ß¥ó¥°¡×¤ò»ÈÍѤ·¤Æ¡¢°ìÈֶᤤ»æ¥³¥Ã¥×¤ò¸«¤Ä¤±¤ë¡£
°ìÈֶᤤ»æ¥³¥Ã¥×¤ò¸«¤Ä¤±¼¡Â褽¤Î»æ¥³¥Ã¥×¤ÎÊý¸þ¤Ë¥í¥Ü¥Ã¥È¤Î¸þ¤¤òÊѤ¨¤Æ¥»¥ó¥µ¡¼¤ò¾å¤²¤ë¡£
¥»¥ó¥µ¡¼¤ò¾å¤²¤¿¸å¡¢»æ¥³¥Ã¥×¤ò¤Ä¤«¤á¤ë°ÌÃ֤ޤǻ楳¥Ã¥×¤Ë¸þ¤«¤Ã¤Æľ¿Ê¤·¡¢¤Ä¤«¤à¡£
»æ¥³¥Ã¥×¤ò¤Ä¤«¤ó¤À¸å¡¢¥é¥¤¥ó¥È¥ì¡¼¥¹¤·¤Æ¡¢XÃÏÅÀ¤Þ¤Ç»æ¥³¥Ã¥×¤ò±¿¤Ö¡£
XÃÏÅÀ¤ÎÃæ¤Ë»æ¥³¥Ã¥×¤¬Æþ¤ë¤È¡¢»æ¥³¥Ã¥×¤ò¾å¤²¤Æ»æ¥³¥Ã¥×¤ÎÃæ¤Î¥Ô¥ó¥Ý¥ó¶Ì¤ò³«Êü¤¹¤ë¡£
¥Ô¥ó¥Ý¥ó¶Ì¤ò³«Êü¤·¤¿¤é¡¢¸å¤í¤Ë¿Ê¤ß¤Ê¤¬¤éXÃÏÅÀ¤ÎÏȤò½Ð¤Æ¡¢¥Ô¥ó¥Ý¥ó¶Ì¤Ë¿¨¤ì¤Ê¤¤°ÌÃ֤ޤǥí¥Ü¥Ã¥È¤¬½Ð¤ë¤ÈĶ²»ÇÈ¥»¥ó¥µ¡¼¤ò²¼¤í¤·¤ÆÆó¤ÄÌܤλ楳¥Ã¥×¤òõ¤·¤Ë¹Ô¤¯¡£
»æ¥³¥Ã¥×¤ò°ì¸Ä¼èÆÀ¤·¤¿¼¡¤ÎÆ°ºî¤È¤·¤Æ¡¢¥»¥ó¥µ¡¼¤Ç2¤ÄÌܤλ楳¥Ã¥×¤ò¸«¤Ä¤±¤Æ¤«¤é»æ¥³¥Ã¥×¤ò½Å¤Í¤ëÆ°ºî¤¬¤¢¤ë¡£¤½¤·¤ÆºÇ¸å¤Ë½Å¤Í¤¿»æ¥³¥Ã¥×¤òYÃÏÅÀ¤ËÃÖ¤¯¡£
¤Þ¤º¿Æµ¡¡¢»Òµ¡¤Îdefine¤ò¼¡¤Î¤è¤¦¤ËÄêµÁ¤·¤¿¡£
¿Æµ¡ #define SPEED 100 #define SPEED_SLOW 60 #define turn_left1 OnFwd(OUT_A,80 * x); OnRev(OUT_C,35 * x);//kituku #define turn_left2 OnFwd(OUT_A,100 * x); OnFwd(OUT_C,40 * x);//yuruku #define turn_left3 OnFwd(OUT_A,80 * x); OnRev(OUT_C,90 * x);//sonoba #define turn_left5 OnFwd(OUT_A,80 * x); OnRev(OUT_C,1 * x);//±¦¤Î¼ÖÎؤÀ¤±¤òÁ°¤Ë²ó¤·¤Æº¸¤Ë²ó¤ë #define go_forward OnFwd(OUT_A,80 * x); OnFwd(OUT_C,87 * x);//Á°¤Ë¿Ê¤à #define go_back OnRev(OUT_A,100 * x); OnRev(OUT_C,85 * x);//¸å¤í¤Ë¿Ê¤à #define turn_right1 OnRev(OUT_A,35 * x); OnFwd(OUT_C,80 * x);//¤¤Ä¤¯±¦¤Ë²ó¤ë #define turn_right2 OnFwd(OUT_A,30 * x); OnFwd(OUT_C,100 * x);//¤æ¤ë¤¯±¦¤Ë²ó¤ë #define turn_right3 OnRev(OUT_A,80 * x); OnFwd(OUT_C,80 * x);//¤½¤Î¾ì¤Ç±¦¤Ë²ó¤ë #define AD SendRemoteNumber(1,MAILBOX1,01);//¥¢¡¼¥à¤òÊĤ¸¤ÆÄù¤á¤ë #define AU SendRemoteNumber(1,MAILBOX1,02);//¥¢¡¼¥à¤ò¾å¤²¤ë #define TD OnRev(OUT_B,45 * x); Wait(1000);//Ķ²»ÇÈ¥»¥ó¥µ¡¼¤ò²¼¤²¤ë #define TU OnFwd(OUT_B,45 * x); Wait(1000);//Ķ²»ÇÈ¥»¥ó¥µ¡¼¤ò¾å¤²¤ë #define CupOff SendRemoteNumber(1,MAILBOX1,03); //¥³¥Ã¥×¤òÎ¥¤¹ #define turn_right4 OnRev(OUT_A,80 * x); OnFwd(OUT_C,60 * x);//¤½¤Î¾ì¤Ç±¦¤Ë²ó¤ë #define turn_right5 OnRev(OUT_A,80 * x); OnFwd(OUT_C,1 * x);//±¦¤Î¼ÖÎؤÀ¤±¤ò¸å¤í¤Ë²ó¤·¤Æ±¦¤Ë²ó¤ë #define turn_right6 OnRev(OUT_A,1 * x); OnFwd(OUT_C,80 * x);//º¸¤Î¼ÖÎؤÀ¤±¤ò²ó¤·¤Æ±¦¤Ë²ó¤ë #define DO 523//²»¤Î¹â¤µ #define x 0.65//¤«¤±¿ô »Òµ¡ #define ArmDown OnRev(OUT_A,50); Wait(500);//»æ¥³¥Ã¥×¤ò²¼¤²¤ë #define ArmUp OnFwd(OUT_A,70); Wait(300);//»æ¥³¥Ã¥×¤ò¾å¤²¤ë #define ArmClose OnRev(OUT_C,70); Wait(1000);//»æ¥³¥Ã¥×¤ò¤Ä¤«¤à #define ArmOpen OnFwd(OUT_C,30); Wait(500);//»æ¥³¥Ã¥×¤òÎ¥¤¹ #define ArmStay OnRev(OUT_AC,1);//»æ¥³¥Ã¥×¤ò¶¯¤¯¤Ä¤«¤ß³¤±¤ë
¥é¥¤¥ó¥È¥ì¡¼¥¹¤¹¤ë¥×¥í¥°¥é¥à¤Ïsub¥ë¡¼¥Á¥ó¤Ë¤·¤¿¡£
sub IKK() //¥í¥Ü¥Ã¥È¤Îº¸¤Î¸÷¥»¥ó¥µ¡¼¤¬Àþ¤Î±¦Â¦¤Ë±è¤Ã¤Æ¥é¥¤¥ó¥È¥ì¡¼¥¹ { int BP = 0; while (BP < 125) { if (SENSOR_2 < 45) { turn_right1; BP++; } else { if (SENSOR_2 < 49 ) { turn_right2; } else if (SENSOR_2 < 56 ) { go_forward; } else if (SENSOR_2 < 58) { turn_left2; } else { turn_left1; } BP = 0; } Wait(1); } Off(OUT_AC); PlayTone(DO,100); Wait(100); Wait(10); BP = 0; }
sub DKK()//¥í¥Ü¥Ã¥È¤Îº¸Â¦¤Î¸÷¥»¥ó¥µ¡¼¤¬Àþ¤Îº¸Â¦¤Ë±è¤Ã¤Æ¥é¥¤¥ó¥È¥ì¡¼¥¹¤¹¤ë¡£ { int BP = 0; while (BP < 170) { if (SENSOR_2 < 45) { turn_left1; BP++; } else { if (SENSOR_2 < 49 ) { turn_left2; } else if (SENSOR_2 < 54 ) { go_forward; } else if (SENSOR_2 < 55) { turn_right3; } else { turn_right4; } BP = 0; } Wait(1); } Off(OUT_AC); PlayTone(DO,100); Wait(100); BP = 0; }
sub DKK2()//¥í¥Ü¥Ã¥È¤Î±¦Â¦¤Î¸÷¥»¥ó¥µ¡¼¤¬Àþ¤Îº¸Â¦¤Ë±è¤Ã¤Æ¥é¥¤¥ó¥È¥ì¡¼¥¹¤¹¤ë¡£ { int BP = 0; while (BP < 170) { if (SENSOR_3 < 45) { turn_left1; BP++; } else { if (SENSOR_3 < 49 ) { turn_left2; } else if (SENSOR_3 < 54 ) { go_forward; } else if (SENSOR_3 < 55) { turn_right3; } else { turn_right4; } BP = 0; } Wait(1); } Off(OUT_AC); PlayTone(DO,100); Wait(100); BP = 0; }
»Òµ¡¤Î¥×¥í¥°¥é¥ß¥ó¥°
task main () { int msg; while(true) { ReceiveRemoteNumber(MAILBOX1,true,msg); if (msg == 01) { Off(OUT_AC); ArmDown;//»æ¥³¥Ã¥×¤ò²¼¤²¤ë ArmClose;//»æ¥³¥Ã¥×¤ò¤Ä¤«¤à msg = 04; } if (msg == 02) { ArmStay;//»æ¥³¥Ã¥×¤ò¤Ä¤«¤ß³¤±¤ë ArmUp;//»æ¥³¥Ã¥×¤ò¾å¤²¤ë msg = 04; } if (msg == 03) { Off(OUT_AC); ArmUp;//»æ¥³¥Ã¥×¤ò¾å¤²¤ë ArmOpen;//»æ¥³¥Ã¥×¤òÎ¥¤¹ } if (msg == 04) { ArmStay;//»æ¥³¥Ã¥×¤ò¶¯¤¯¤Ä¤«¤ß³¤±¤ë Off(OUT_A); } } }
²ÝÂꣳ¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Ï¤Ç¤¤ë¤À¤±³ÍÆÀ¥¹¥³¥¢¤òÆÀ¤ë¤¿¤á¤ËDÃÏÅÀ¤Ë¶á¤¤¡Ê¦Á¤È¦Â¡ËÆó¤Ä¤Î»æ¥³¥Ã¥×¤È¥Ô¥ó¥Ý¥ó¶Ì¡Ê¿Þ»²¾È¡Ë¤Î²ó¼ý¤òÍ¥À褷¡¢»Ä¤ê°ì¤Ä¤Î»æ¥³¥Ã¥×¤Î²ó¼ý¤ÏÃÇÇ°¤·¤¿¡£
¦Á¡¢¦Â¤Î»æ¥³¥Ã¥×¤Î²ó¼ý¤Î¥×¥í¥°¥é¥à¤ò¤½¤ì¤¾¤ì¼¡¤Î¤è¤¦¤Ëʬ¤±¤ë¡£
1¡¡£ÃÃÏÅÀ¤Þ¤Çľ¿Ê¤·¤¿¸åº¸ÀÞ¤·¤Æ¡¢¤½¤³¤«¤é£ÆÃÏÅÀ¤Þ¤Ç¥é¥¤¥ó¥È¥ì¡¼¥¹¤¹¤ë¡£ 2¡¡£ÆÃÏÅÀ¤Ç¸òº¹ÅÀ¤òǧ¼±¤·¤¿¸å¡¢Ä¶²»ÇÈ¥»¥ó¥µ¡¼¤¬ºîÆ°¤·¤Æ¦Á¤Î»æ¥³¥Ã¥×¤ò¸«¤Ä¤±¤ë¡£ 3¡¡¦Á¤Î»æ¥³¥Ã¥×¤ò¤Ä¤«¤à 4¡¡£Ñ£Ó´Ö¤ÎÀþ¤òǧ¼±¤¹¤ë¤Þ¤Ç¸åÂà¡£ 5¡¡£ØÃÏÅÀ¤Þ¤Ç»æ¥³¥Ã¥×¤ò±¿¤Ö 6¡¡¦Á¤Î»æ¥³¥Ã¥×¤ò¾å¤²¤Æ¥Ô¥ó¥Ý¥ó¶Ì¤òÏÈÆâ¤Ë¼ý¤á¤ë 7¡¡¥í¥Ü¥Ã¥È¤ò¦Â¤Î»æ¥³¥Ã¥×¤ÎÊý¸þ¤Ë¸þ¤±¤ë 8¡¡¥»¥ó¥µ¡¼¤ò²¼¤í¤·¤¿¤¢¤È¡¢Ä¶²»ÇÈ¥»¥ó¥µ¡¼¤¬ºîÆ°¤·¤Æ¦Â¤Î»æ¥³¥Ã¥×¤ò¸«¤Ä¤±¤ë 9¡¡¦Â¤Î»æ¥³¥Ã¥×¤ò¼è¤ë 10¡¡£Ñ£Ó´Ö¤ÎÀþ¤òǧ¼±¤¹¤ë¤Þ¤Ç¸åÂष¡¢XÃÏÅÀ¤Þ¤Ç±¿¤Ö¡£ 11¡¡£ÙÃÏÅÀ¤Ë»æ¥³¥Ã¥×¤òÃÖ¤¯¡¡
SetSensorLowspeed(S1); SetSensorLight(S2); SetSensorLight(S3); go_forward; Wait(500); //¾¯¤·Á°¿Ê turn_left3; Wait(200); while (SENSOR_2 > 45) { turn_left3; } turn_right1; Wait(100); IKK(); //º¸¤Î¥»¥ó¥µ¡¼¤ò»È¤Ã¤ÆFÃÏÅÀ¤Þ¤Ç¥é¥¤¥ó¥È¥ì¡¼¥¹ turn_left3;¤½¤Î¾ì¤Çº¸¤Ë²ó¤ë > Wait(1000); //º¸¸þ¤¯
int d = searchDirection(70);//¥³¥Ã¥×õ¤¹ if (d > 10) { fwdDist(d-10.0);//¥³¥Ã¥×¤Ë¶á¤Å¤¯ } TU; //Ķ²»ÇÈ¥»¥ó¥µ¡¼¤ò¤¢¤²¤ë go_forward; Wait(2900);
AD; //¥³¥Ã¥×¤ò¼è¤ë Off(OUT_AC); Wait(3000);
go_back; Wait(500); turn_left3; Wait(700); while (SENSOR_2 > 45) { go_back; } go_back; Wait(250); Off(OUT_AC); Wait(200); while (SENSOR_2 > 45) { go_back; } go_back; Wait(450); Off(OUT_AC); Wait(450); while (SENSOR_2 > 45) { go_back; } go_back; Wait(250); Off(OUT_AC); Wait(200); turn_right5; Wait(700); while (SENSOR_3 > 45) { turn_right5; }
DKK2(); //S¤òº¸ÀÞ //Q¤ËÅþÃå turn_right6; Wait(1100); while (SENSOR_2 > 45) { turn_right6; } turn_right6; Wait(300); Off(OUT_AC); Wait(1000);
go_forward; //X¤ËÆþ¤ë Wait(2500); AU; //X¤Ç¥³¥Ã¥×¤ò¾å¤²¤ë Off(OUT_AC); Wait(3000);
go_back; Wait(1200); Off(OUT_AC); Wait(2000); while (SENSOR_2 > 45) { go_back; } go_back; Wait(500); while (SENSOR_2 > 45) { go_back; } Off(OUT_AC); Wait(1000); turn_right5; Wait(500); while (SENSOR_3 > 45) { turn_right5; } turn_right5; Wait(600); while (SENSOR_3 > 45) { turn_right5; } Off(OUT_AC); Wait(1000); go_forward; Wait(1000); while (SENSOR_2 > 45) { go_forward; } Off(OUT_AC); Wait(1000); while (SENSOR_3 > 45) { turn_left5; } turn_left5; Wait(300); go_forward; Wait(500);
TD; //Ķ²»ÇȲ¼¤²¤ë Off(OUT_AC); Wait(2000); d = searchDirection(120);//¥³¥Ã¥×õ¤¹
if (d > 10) { fwdDist(d-10.0);//¥³¥Ã¥×¤Ë¶á¤Å¤¯ } TU; //Ķ²»ÇÈ¥»¥ó¥µ¡¼¤ò¤¢¤²¤ë Off(OUT_AC); Wait(1000); go_forward; Wait(1300); Off(OUT_AC); Wait(1000); turn_left3; Wait(1400); Off(OUT_AC); Wait(2000); go_forward; Wait(2300); go_back; Wait(100); Off(OUT_AC); Wait(500); AD; //¥³¥Ã¥×¤ò¼è¤ë¡Ê½Å¤Í¤ë¡Ë Off(OUT_AC); Wait(3000);
go_back; Wait(1900); turn_right3; Wait(1400); go_back; Wait(1300); while (SENSOR_2 > 45) { go_back; } turn_left5; Wait(1200); while (SENSOR_3 > 45) { turn_left5; } turn_right5; Wait(300); go_forward; Wait(1000); while (SENSOR_2 > 45) { go_forward; //X¤Þ¤Çľ¿Ê }
AU; //X¤Ç¥³¥Ã¥×¤ò¾å¤²¤ë turn_left3;//¾¯¤·Êý¸þ¤òÄ´À°¤¹¤ë Wait(200); go_back; Wait(300); CupOff;//»æ¥³¥Ã¥×¤òYÃÏÅÀ¤ËÃÖ¤¯
·ë²Ì¤Ï£°ÅÀ¡£Æ°¤¤¤Æ¤Û¤·¤¤Êý¸þ¤Ë¥í¥Ü¥Ã¥È¤ÏÆ°¤«¤Ê¤«¤Ã¤¿¡£Ä¶²»ÇÈ¥»¥ó¥µ¡¼¤¬Æ°¤«¤·¤Æ¤Ï¤¤¤±¤Ê¤¤»æ¥³¥Ã¥×¤ò´¶ÃΤ·¤ÆÆ°¤«¤·¤Æ¤·¤Þ¤Ã¤¿¡£¼ÂºÝ¤Ï¡¼£²ÅÀ¤Ç¤¢¤ë¡£
¡¦NXTËÜÂΤμè¤êÉÕ¤±°ÌÃÖ¤òÃÏÌ̤«¤é¹â¤¤°ÌÃ֤ˤ·¤Æ¤·¤Þ¤Ã¤¿¤Î¤ÇÁö¹Ô¤¬ÉÔ°ÂÄê¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¡£
¡¦¥í¥Ü¥Ã¥È¤Î¸åÎؤòÆó¤Ä¼è¤êÉÕ¤±¤ë¤³¤È¤Ç¥¹¥à¡¼¥º¤ËÆ°¤±¤ë¤è¤¦¹©Éפ·¤¿¤¬¡¢¼ÖÂΤ¬½Å¤¹¤®¤Æ¥í¥Ü¥Ã¥È¤ÎÁö¹Ô¤Ë»Ù¾ã¤¬½Ð¤Æ¤·¤Þ¤Ã¤¿¡£
¡¦¥í¥Ü¥Ã¥È¤Î½ÄÊý¸þ¤Ë¶Ú¸ò¤¤¤ò¼è¤êÉÕ¤±¤¿¤³¤È¤Ç¾¯¤·¶¯ÅÙ¤ò¤Ä¤±¤ë¤³¤È¤¬¤Ç¤¤¿¤¬¡¢»æ¥³¥Ã¥×¤ò¾å¤²²¼¤²¤¹¤ëµ¡¹½¤È¤ÎÀÜ¿¨¤òÈò¤±¤ë¤¿¤á¤Ë¥í¥Ü¥Ã¥È¤Î²£Êý¸þ¤ÎÊ䶯¤¬¤Ç¤¤Ê¤«¤Ã¤¿¡£¤½¤Î¤¿¤á¥í¥Ü¥Ã¥È¤¬²óž¤·¤¿¤È¤¤ËÂ礤¯¤æ¤¬¤ó¤Ç¤·¤Þ¤¤¡¢¤½¤Î·ë²Ì¡¢Á°Îؤμּ´¤ËÂ礤ÊÉéô¤¬¤«¤«¤Ã¤Æ¤·¤Þ¤¤²óž¤¬¥¹¥à¡¼¥º¤Ë¤Ç¤¤Ê¤«¤Ã¤¿¡£¤ä¤Ï¤ê¶¯ÅÙ¤ò»ý¤¿¤»¤ë¤¿¤á¤Ë²£Êý¸þ¤ÎÊ䶯¤âɬÍפǤ¢¤Ã¤¿¤È¹Í¤¨¤ë¡£
¡¦¥í¥Ü¥Ã¥È¤ÎºîÀ®¤Ë¿¤¯¤Î»þ´Ö¤ò³ä¤¤¤Æ¤·¤Þ¤Ã¤¿¤¿¤á¤·¤Ã¤«¤ê¤È¤·¤¿¥×¥í¥°¥é¥ß¥ó¥°¤òºî¤ì¤Ê¤«¤Ã¤¿¡£
¡¦¤É¤Î¤è¤¦¤Ê¥í¥Ü¥Ã¥È¤òºîÀ®¤¹¤ì¤Ð¸úΨ¤è¤¯»æ¥³¥Ã¥×¤ò²ó¼ý¤Ç¤¤ë¤«¤ò¹Í¤¨¤ë¤Î¤¬Æñ¤·¤«¤Ã¤¿¡£¼ÂºÝ¡¢´°À®¤·¤¿¥í¥Ü¥Ã¥È¤Ï¸úΨ¤è¤¯Æ°¤¤¤¿¤È¤Ï¸À¤¨¤Ê¤«¤Ã¤¿¡£
¡¦²ÝÂ꣱¡Á£³¤Î¥í¥Ü¥Ã¥È¤È¥×¥í¥°¥é¥ß¥ó¥°¤òºîÀ®¤·¤Æ¡¢¥×¥í¥°¥é¥ß¥ó¥°¤ò¤Ç¤¤ë¤À¤±Ã»¤¯¡¢½ñ¤¤¤¿¤È¤ª¤ê¤ËÆ°¤«¤¹¤Ë¤Ï¥í¥Ü¥Ã¥È¤Ë¹©Éפ¬É¬Íפǡ¢¤Þ¤¿¥×¥í¥°¥é¥ß¥ó¥°¤ò½ñ¤¤¤¿¤È¤·¤Æ¤â¡¢½ñ¤¤¤¿¤È¤ª¤ê¤Ë¤Ï¤Û¤È¤ó¤ÉÆ°¤«¤º¡¢Ä´À°¤¬É¬Í×ÉԲķç¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤Ã¤¿