[[2014a/Member]]

Ìܼ¡
#contents


*¥á¥ó¥Ð¡¼ [#ff9aa291]

¡¦tadanobo¡Ê»ä¤á¤Ç¤´¤¶¤¤¤Þ¤¹¡£ÂþÇ·Ë¿¡Ê¤¿¤À¤Î¤Ê¤Ë¤¬¤·¡Ë¤Ç¤¹¤¬¤Í¡Ë

¡¦mame

¡¦dai

¡¦bgpat


*²ÝÂê [#o86037ce]

&ref(2014a/Member/tadanobo/Mission2/²ÝÂꣲ.png,80%);

¡¦¾å¿Þ¤ÎA B C 1 2 3 ¤Ï»æ¥³¥Ã¥×¤ò¼¨¤·¡¢¾å¿Þ¤Îº¸È¾Ê¬¤Î£³¤Ä¤Î¥«¥Ã¥×¡ÊÀġˤΰÌÃ֤Ϥ¯¤¸¤Ë¤è¤ê¥é¥ó¥À¥à¤Ç·èÄꤵ¤ì¤ë¡£±¦È¾Ê¬¤Î£³¤Ä¤Î¥«¥Ã¥×¡Ê²«¡Ë¤Î°ÌÃ֤ϸÇÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£

¡¦¾å¿Þ±¦¾å¤Îstart¤«¤é»Ï¤á¤Æ¡¢º¸È¾Ê¬¥¨¥ê¥¢¤«¤é¥«¥Ã¥×¤ò²ó¼ý¤·¤Æ±¦È¾Ê¬¥¨¥ê¥¢¤Ë¤¢¤ëƱ¤¸ÈÖ¹æ¤Î¥«¥Ã¥×¤Ë¤½¤ì¤¾¤ì½Å¤Í¤Æ¤¤¤­¤Þ¤¹¡£

¾Ü¤·¤¤ÀâÌÀ¤Ï[[2014a/Mission2]]¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£


*Á´ÂΤÎή¤ì [#ed2287b1]

&ref(2014a/Member/tadanobo/Mission2/²áÄø£²¡Ç.png,80%);

¡¦±¦¾å¤Îstart¤«¤é±¦¤Ë90¡ë²óž¤·¤Æº¸¾å¤ÎÅÀÀþ»°³Ñ¤Î°ÌÃ֤˰ÜÆ°¤·¡¢
¡¦±¦¾å¤Îstart¤«¤é±¦¤Ë90¡ë²óž¤·¤Æº¸¾å¤ÎÅÀÀþ»°³Ñ¤Î°ÌÃ֤˰ÜÆ°¤·¡¢¡Ê±¦¤Ë90¡ë¸þ¤¤¤¿¾õÂÖ¤«¤é¡Ë

¡¡¡¡­¡£±¸ÄÌܤλþ¡¢º¸¤Ë45¡ë²óž¤·¤Æ¥«¥Ã¥×¤ò²ó¼ý¤¹¤ë
¡¡¡¡­¡£±¸ÄÌܤλþ¡¢º¸¤Ë135¡ë²óž¤·¤Æ¥«¥Ã¥×¤ò²ó¼ý¤¹¤ë

¡¡¡¡­¢£²¸ÄÌܤλþ¡¢±¦¤Ë45¡ë¡¡¡¡¡¡¡¡¡·
¡¡¡¡­¢£²¸ÄÌܤλþ¡¢º¸¤Ë45¡ë¡¡¡¡¡¡¡¡¡·

¡¡¡¡­££³¸ÄÌܤλþ¡¢¥«¥Ã¥×¼êÁ°¤Þ¤ÇÁ°¿Ê¤·¤Æ¤«¤é¥«¥Ã¥×¤ò²ó¼ý¤¹¤ë
¡¡¡¡­££³¸ÄÌܤλþ¡¢º¸¤Ë90¡ë²óž¤·¥«¥Ã¥×¼êÁ°¤Þ¤ÇÁ°¿Ê¤·¤Æ¤«¤é¥«¥Ã¥×¤ò²ó¼ý¤¹¤ë

¡¦¥«¥Ã¥×¤ò²ó¼ý¤·¤¿¤éÅÀÀþ»°³Ñ¤Î°ÌÃÖ¤ËÌá¤Ã¤Æ¤«¤éstart¤Ë°ÜÆ°¤·¡¢²ó¼ý¤·¤¿¥«¥Ã¥×¤ÎÈÖ¹æ¤ÈƱ¤¸ÈÖ¹æ¤Î¥«¥Ã¥×¤Î¤È¤³¤í¤ØÃÖ¤­¤Ë¹Ô¤¯¡£

**Êä­ [#c07d3db4]
¡¦¥«¥Ã¥×¤Ï¥Þ¥·¥ó¤ÎÀµÌ̤ˤĤ¤¤Æ¤¤¤ëĶ²»ÇÈ¥»¥ó¥µ¡¼¡Ê½Ä¤Ë¤Ê¤Ã¤Æ¤ëÌܤΤ褦¤Ê¤ä¤Ä¡Ë¤Ë¤è¤Ã¤Æõ¤·¤Þ¤¹¡£Ä¶²»ÇÈ¥»¥ó¥µ¡¼¤ÏʪÂΤȤε÷Î¥¤ò¿Þ¤ë¤³¤È¤¬¤Ç¤­¤ë¤â¤Î¤Ç¤¹¡£
³Î¼ÂÀ­¤ò¹â¤á¤ë¤¿¤á¡¢¥«¥Ã¥×¤ËÀܶᤷ¤Æ¤«¤é¥Þ¥·¥ó¤òº¸±¦¤ËÀû²ó¤µ¤»¤Æ¼ó¤ò¿¶¤ê¡¢¥»¥ó¥µ¡¼¤¬·×¬¤·¤¿ÃͤÎÃæ¤ÇºÇ¾®ÃͤÎÊý¸þ¡Ê¥»¥ó¥µ¡¼¤Î·×¬¤·¤¿µ÷Î¥¤¬ºÇ¤âû¤¤Êý¸þ¡á¥«¥Ã¥×¤Î¤¢¤ëÊý¸þ¡Ë¤Ë¿Ê¤à¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¤Þ¤¿¡¢¤³¤ÎÆ°ºî¤ò£²²ó¤¹¤ë¤³¤È¤Ç¤µ¤é¤ËÀµ³Î¤Ë¥«¥Ã¥×¤ËÀµÂФǤ­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£

¡¦»Ï¤á¤Ï¥é¥¤¥ó¥È¥ì¡¼¥¹¡Ê[[2014a/Member/tadanobo/Mission1]]¤Î¡É¥é¥¤¥ó¥È¥ì¡¼¥¹¡É¤Î¹àÌÜ»²¾È¡Ë¤Ë¤è¤ê¥Þ¥·¥ó¤ò°ÜÆ°¤µ¤»¤Æ¥«¥Ã¥×¤ò²ó¼ý¤·¤¿¤ê¤·¤è¤¦¤È¤·¤Þ¤·¤¿¡£
¤·¤«¤·ºÇ½ªÅª¤Ë¤Ï¡¢¾åµ­¤Î¤è¤¦¤Ëstart°ÌÃÖ¡¢¤È¤Ê¤ê¤Î¥¨¥ê¥¢¤ÎÅÀÀþ»°³Ñ¤Î°ÌÃÖ¤ò´ð½à¤ËľÀþŪ¤ÊÆ°¤­¤ò¤µ¤»¤¿Êý¤¬Ã±½ãÌÀ²÷¤Ç´Êñ¡¢²Ã¤¨¤Æ³Î¼ÂÀ­¤âÁý¤¹¤È¹Í¤¨¤³¤Î¤è¤¦¤Êή¤ì¤Ë¤Ê¤ê¤Þ¤·¤¿¡£

*¥í¥Ü¥Ã¥È [#n9c6e95b]
**ËÜÂÎ [#hd0f3b79]

&ref(2014a/Member/tadanobo/Mission2/¼Ì¿¿ 2014-07-25 16 36 37.jpg,100%);

¥Þ¥·¥ó¤Ï¥É¥é¥¤¥Ö¥Ù¡¼¥¹¤Î¾å¤ËËÜÂΤò²£¤Ëʤ٤ÆÀßÃÖ¤·¤Æ¤¤¤Þ¤¹¡£¤½¤Î¾å¤Ë¥¢¡¼¥à¤òÀܹ礷¤Æ¤¢¤ê¤Þ¤¹¡£ËÜÂΣ²¤Ä¤È¥â¡¼¥¿¡¼£±¤Ä¤¬Ãæ¿´¤Ë¤è¤Ã¤Æ¤¤¤ë¤Î¤Ç½Å¿´¤Ï°ÂÄꤷ¤Æ¤¤¤Þ¤¹¡£

ÀµÌ̤«¤é¸«¤Æ±¦¤¬¿Æµ¡¡Êmaster¡Ë¡¢º¸¤¬»Òµ¡¡Êslave¡Ë¤Ç¤¹¡£¿Æµ¡¤¬¥É¥é¥¤¥Ö¥Ù¡¼¥¹¡¦Ä¶²»ÇÈ¥»¥ó¥µ¡¼¡¦¥¢¡¼¥à¤Ë¤Ä¤¤¤Æ¤¤¤ë¸÷¥»¥ó¥µ¡¼¤òÆ°¤«¤·¡¢»Òµ¡¤¬¥¢¡¼¥à¤È¤Ä¤á¤òÆ°¤«¤·¤Þ¤¹¡£¤³¤Î¿Æ»Òµ¡¤ÏBluetooth¤Ë¤è¤êÄÌ¿®¤·Ï¢·È¤ò¤È¤ê¤Þ¤¹¡£

**¥É¥é¥¤¥Ö¥Ù¡¼¥¹ [#h4fed50b]

&ref(2014a/Member/tadanobo/Mission2/¼Ì¿¿ 2014-08-07 16 25 37.jpg,60%);

¸åÎؤϻϤᥭ¥ã¥¹¥¿¡¼¤Î¤è¤¦¤Ë¥¯¥ë¥¯¥ë²ó¤ë¤â¤Î¤Ç¤·¤¿¤¬¡¢ÀܹçÉô¤¬ÉÔ°ÂÄê¤ÇËÜÂΤνÅÎ̤¬Â礭¤¤¤³¤È¤â¤¢¤ê¡¢²áÅÙ¤ËÉé²Ù¤¬¤«¤«¤Ã¤Æ¤¤¤¿¤Î¤Ç¼Ì¿¿¤Î¤è¤¦¤Ë¥¿¥¤¥ä¤Î¥´¥à¤ò³°¤·¤¿¤â¤Î¤ò»ÈÍѤ·¤Þ¤·¤¿¡£

¤³¤Î¥Û¥¤¡¼¥ë¤Ë¤·¤¿¤È¤³¤íËÜÂΤνÅÎ̤ò»Ù¤¨¤Æ¤¤¤Æ¤â°ÂÄꤷ¡¢¤Þ¤¿¼ÖÂΤ¬²óž¤¹¤ë¤È¤­¤âË໤¤¬¾¯¤Ê¤¤¤Î¤Ç¥¹¥à¡¼¥º¤Ë¤¤¤­¤Þ¤·¤¿¡£

**¥¢¡¼¥à [#d41edc52]

&ref(2014a/Member/tadanobo/Mission2/¼Ì¿¿ 2014-08-07 16 24 01.jpg,60%);
&ref(2014a/Member/tadanobo/Mission2/¼Ì¿¿ 2014-08-07 16 24 43.jpg,60%);

¥¢¡¼¥à¤Ï¾å¤«¤é²¼¤í¤·¤Æ¥«¥Ã¥×¤ò¤Ä¤«¤à¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

&ref(2014a/Member/tadanobo/Mission2/¤Ä¤«¤à£±.png,50%);
&ref(2014a/Member/tadanobo/Mission2/¤Ä¤«¤à£².png,50%);
&ref(2014a/Member/tadanobo/Mission2/¤Ä¤«¤à£´.png,50%);

¥«¥Ã¥×¤ò¤Ä¤«¤ó¤Ç¥¢¡¼¥à¤ò¾å¤²¤¿ºÝ¡¢°ìÅ٤Ĥá¤ò¾å¤²¤Æ¥«¥Ã¥×¤òÎ¥¤·±¦¼Ì¿¿¤Î¤è¤¦¤Ë¤·¡¢ºÆ¤Ó¤Ä¤á¤ò
²¼¤í¤¹¤³¤È¤Ç¥«¥Ã¥×¤ò°ÂÄꤷ¤Æ¤Ä¤«¤à¤ÈƱ»þ¤Ë¥¢¡¼¥à¤Ë¤Ä¤¤¤Æ¤¤¤ë¸÷¥»¥ó¥µ¡¼¤Ç¥«¥Ã¥×¤ò³Î¼Â¤Ë¼±Ê̤Ǥ­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£


*¥×¥í¥°¥é¥à [#ea7172f8]
¡É()¡É¤Ï¤½¤Î¥¿¥¤¥È¥ë°Ê²¼¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¥×¥í¥°¥é¥à¤Î̾Á°¤ò¼¨¤·¤Þ¤¹¡£

**¥É¥é¥¤¥Ö¥Ù¡¼¥¹ [#bc9f6bba]

***³Æ¥â¡¼¥¿¡¼¡¦¥»¥ó¥µ¡¼¤ÎÄêµÁ¡Ê̿̾¡Ë¡¡¡Érobot.h¡É¡¡ [#e3317db4]
 #define LEFT_WHEEL OUT_C //º¸¤Î¥¿¥¤¥ä¤Î¥â¡¼¥¿¡¼
 #define RIGHT_WHEEL OUT_A //±¦¤Î¥¿¥¤¥ä¤Î¥â¡¼¥¿¡¼
 #define BOTH_WHEEL OUT_AC //ξ¥¿¥¤¥ä¤Î¥â¡¼¥¿¡¼
 
 #define ARM_BASE OUT_A //ËÜÂΦ¤Î¥¢¡¼¥à¤Î¥â¡¼¥¿¡¼
 #define ARM_HAND OUT_B //¥¢¡¼¥àÀè¤Î¥â¡¼¥¿¡¼
 
 #define DIST_SENSOR S2 //µ÷Υ¬ÄêÍÑĶ²»ÇÈ¥»¥ó¥µ¡¼
 #define TYPE_SENSOR S3 //»æ¥³¥Ã¥×ȽÊÌÍѸ÷¥»¥ó¥µ¡¼
 
 void InitSensor(){
     SetSensorLowspeed(DIST_SENSOR);
     SetSensorLight(TYPE_SENSOR);
 }

***³ÆÆ°ºî¤ÎÄêµÁ [#kaff63fa]  ¡Édrivebase.h¡É [#f533f2a8]
***³ÆÆ°ºî¤ÎÄêµÁ [#kaff63fa]  ¡Édrivebase.h¡É [#p39e563b]

 #define SPEED_STRAIGHT 50
 #define SPEED_SPIN 40
 #define SPEED_STRAIGHT_LOW 20
 #define SPEED_SPIN_LOW 30
 
 #define STAY_WAIT 50
 
 #define WHEEL_STRAIGHT (80 / 1715)
 
 void DebugDriveType(string type, int speed){
     DebugNumber(DEBUG_DRIVETYPE, type, speed);
 }
 
 void Stay(){
     Off(BOTH_WHEEL);
     DebugDriveType("Stay", 0);
 }
 
 void StayWait(){
     Stay();
     Wait(STAY_WAIT);
 }
 
 void Drive(int speed, int rate, string type){
     if(speed){
         if(speed > 0){
             OnFwdSync(BOTH_WHEEL, speed, rate);
         }else{
             OnRevSync(BOTH_WHEEL, -speed, rate);
         }
         DebugDriveType(type, speed);
     }else{
     }
 }
 
 void DriveStraight(int speed){
     Drive(speed, 0, "Straight");
 }
 
 void DriveLeft(int speed){
     Drive(speed, -100, "Left");
 }
 
 void DriveRight(int speed){
     Drive(speed, 100, "Right");
 }
 
 void Forward(){
     DriveStraight(SPEED_STRAIGHT);
 }
 
 void ForwardLow(){
     DriveStraight(SPEED_STRAIGHT_LOW);
 }
 
 void Back(){
     DriveStraight(-SPEED_STRAIGHT);
 }
 
 void BackLow(){
     DriveStraight(-SPEED_STRAIGHT_LOW);
 }
 
 void SpinLeft(){
     DriveLeft(SPEED_SPIN);
 }
 
 void SpinLeftLow(){
     DriveLeft(SPEED_SPIN_LOW);
 }
 
 void SpinRight(){
     DriveRight(SPEED_SPIN);
 }
 
 void SpinRightLow(){
     DriveRight(SPEED_SPIN_LOW);
 }
 
 void Spin(int degree){
     if(degree > 0){
         StartDirectionTimer();
         SpinLeft();
         until(StopDirectionTimer() >= degree);
     }else{
         StartDirectionTimer();
         SpinRight();
         until(StopDirectionTimer() <= degree);
     }
 }
 
 void SpinLow(int degree){
     if(degree > 0){
         StartDirectionTimer();
         SpinLeftLow();
         until(StopDirectionTimer() >= degree);
     }else{
         StartDirectionTimer();
         SpinRightLow();
         until(StopDirectionTimer() <= degree);
     }
 }
 
 void GoForward(int x){
     int d;
     float p = MotorRotationCount(LEFT_WHEEL);
     Forward();
     until((d = x - (MotorRotationCount(LEFT_WHEEL) - p) * WHEEL_STRAIGHT) < 0){
         DebugDriveType("Forward", d);
     }
     Stay();
 }
 
 void GoForwardLow(int x){
     int d;
     float p = MotorRotationCount(LEFT_WHEEL);
     ForwardLow();
     until((d = x - (MotorRotationCount(LEFT_WHEEL) - p) * WHEEL_STRAIGHT) < 0){
         DebugDriveType("ForwardLow", d);
     }
     Stay();
 }
 
 void GoBack(int x){
     int d;
     float p = MotorRotationCount(LEFT_WHEEL);
     Back();
     until((d = x + (MotorRotationCount(LEFT_WHEEL) - p) * WHEEL_STRAIGHT) < 0){
         DebugDriveType("Back", d);
     }
     Stay();
 }
 
 void GoBackLow(int x){
     int d;
     float p = MotorRotationCount(LEFT_WHEEL);
     BackLow();
     until((d = x + (MotorRotationCount(LEFT_WHEEL) - p) * WHEEL_STRAIGHT) < 0){
         DebugDriveType("BackLow", d);
     }
     Stay();
 }
 
 void GoStraight(int x){
     if(x > 0){
         GoForward(x);
     }else{
         GoBack(-x);
     }
 }
 
 void GoStraightLow(int x){
     if(x > 0){
         GoForwardLow(x);
     }else{
         GoBackLow(-x);
     }
 }

**¼ÖÂΤθþ¤­¡Ê¼«¿È¤¬¥Õ¥£¡¼¥ë¥É¾å¤Ë¤ª¤¤¤Æ¤É¤Î¸þ¤­¤Ë¸þ¤¤¤Æ¤¤¤ë¤«¡Ë¤ò·×¤ë   ¡Édirection.h¡É[#bd15c679]

 #define BODY_WIDTH 12.6
 #define DIRECTION_COE (0.044 / BODY_WIDTH * 360 / 2 / PI)
 
 float direction = 0;
 float leftMoterCount = 0;
 float rightMoterCount = 0;
 float directionTimer = 0;
 
 float GetDirection(){
     float out = MotorRotationCount(RIGHT_WHEEL);
     float in = MotorRotationCount(LEFT_WHEEL);
     direction += (out - leftMoterCount - in + rightMoterCount) * DIRECTION_COE;
     leftMoterCount = out;
     rightMoterCount = in;
     DebugNumber(DIRECTION_DEBUG, "Direction", direction);
     return direction;
 }
 
 void StartDirectionTimer(){
     directionTimer = GetDirection();
 }
 
 float StopDirectionTimer(){
     return GetDirection() - directionTimer;
 }


¤³¤ì¤Ï¥¿¥¤¥ä¤ÎȾ·Â¡¦¼ÖÂΤÎÀû²ó»þ¤Ë¤ª¤±¤ë²óžȾ·Â¡¦±ß¼þΨ¡Ê¦Ð¡Ë¤Ê¤É¤òÍѤ¤¤Æ¼«¿È¤¬Àû²ó¤·¤¿¤È¤­¤Ë²¿ÅÙ²ó¤Ã¤¿¤«¤ò·×»»¤¹¤ë¤â¤Î¤Ç¤¹¡£¤³¤Î¼«Æ°·×»»¤Î¥×¥í¥°¥é¥à¤¬¤¢¤ì¤ÐÁàºî¤¬Íưפˤʤê¤Þ¤¹¡£
¤³¤ì¤Ï¥¿¥¤¥ä¤ÎȾ·Â¡¦¼ÖÂΤÎÀû²ó»þ¤Ë¤ª¤±¤ë²óžȾ·Â¤Ê¤É¤òÍѤ¤¤Æ¼«¿È¤¬Àû²ó¤·¤¿¤È¤­¤Ë²¿ÅÙ²ó¤Ã¤¿¤«¤ò·×»»¤¹¤ë¤â¤Î¤Ç¤¹¡£

¶ñÂÎŪ¤Ë¤Ï²¼¿Þ¤ÎÀÖ¤¤»Í³ÑÆâ¤Î¼°¤Ç¼ÖÂΤγÑÅÙ¤¬ÆÀ¤é¤ì¤Þ¤¹¡£¥¿¥¤¥ä¤Î²óž³Ñ¤Ï¥â¡¼¥¿¡¼¤ËÅëºÜ¤µ¤ì¤Æ¤¤¤ë²óž¥»¥ó¥µ¡¼¤Ë¤è¤Ã¤Æʬ¤«¤ê¤Þ¤¹¡£

&ref(2014a/Member/tadanobo/Mission2/³ÑÅÙ·×»»ÀâÌÀ.png,50%);
&ref(2014a/Member/tadanobo/Mission2/ÀâÌÀ£².png,50%);

¢¨¾å¿Þ¤Î¦Á£ù¤È¦Á£ø¤Ë´Ø¤·¤Æ¡¦¡¦¡¦È¾·Â¦Á¤Î±ß¤¬³ÑÅÙ£ú¤À¤±²ó¤Ã¤¿¤È¤­¡¢¤½¤Î²óž¤·¤¿±ß¼þ¤ÎŤµ¤Ï¡ÊȾ·Â¡Ë¡ß¡Ê²óž³ÑÅÙ¡Ë¡á¦Á£ú¡¡¤È¤¤¤¦¸ø¼°¤¬Â¸ºß¤·¤Þ¤¹¡£

¢¨Àû²ó¤Î»þ¤Ï·ë²ÌŪ¤Ë±¦¾å¿Þ¤Ë¤è¤¦¤Ê¼°¤Ë¤Ê¤ê¤Þ¤¹¡£¸·Ì©¤Ë¤Ïº¸¾å¿Þ¤Îr¤ò-r¤Ë¡¢x=-y¤ÈÃÖ¤­´¹¤¨¤Æ·×»»¤¹¤ë¤È±¦¾å¿Þ¤ÎÀֻͳѤμ°¤¬ÆÀ¤é¤ì¤Þ¤¹¡£

¤³¤Î¤è¤¦¤Ë¼«¿È¤Î¸þ¤­¤ò·×»»¤µ¤»¤ë¤È¥Þ¥·¥ó¤ÎÁàºî¤¬Íưפˤʤê¤Þ¤¹¡£

ºÇ½éstart¤Ë¤Þ¤Ã¤¹¤°ÃÖ¤¤¤¿¤È¤·¤Æ¡¢¤½¤ì¤ò0¡ë¤È¤·¤Þ¤¹¡£¡Ê°ø¤ß¤Ëº¸²ó¤ê¤¬Àµ¤Ç¡¢±¦²ó¤ê¤¬Éé¤Ç¤¹¡£º¸¤Ë90¡ë²ó¤Ã¤¿¤È¤­¤Ï+90¡ë¤Ç¡¢±¦¤Ë90¡ë²ó¤Ã¤¿¤È¤­¤Ï-90¡ë¤È¤Ê¤ê¤Þ¤¹¡Ë

¤¿¤È¤¨¤Ð¤³¤³¤«¤é¼ÖÂΤò90¡ë±¦¤Ë¸þ¤±¤¿¤¤»þ¡¢¥Þ¥·¥ó¤Ë¡Ö¼«¿È¤Î¸þ¤­¤¬-90¡ë¤Ë¤Ê¤ë¤Þ¤Ç±¦Àû²ó¤¹¤ë¡×¤È¤¤¤¦¥×¥í¥°¥é¥à¤òÆþÎϤ¹¤ì¤Ð¥Þ¥·¥ó¤Ï±¦¤Ë90¡ë¤À¤±²ó¤ê¤Þ¤¹¡£

¤Þ¤¿¡¢¸þ¤­¤òºÇ½é¤Î¾õÂ֤˥ꥻ¥Ã¥È¤·¤¿¤¤»þ¤Ï¡Ö¼«¿È¤Î¸þ¤­¤¬0¡ë¤Ë¤Ê¤ë¤è¤¦Àû²ó¤¹¤ë¡×¤ÈÆþÎϤ¹¤ì¤Ð¼ÖÂΤϥ¹¥¿¡¼¥È»þ¤Î¤Þ¤Ã¤¹¤°¤Î¸þ¤­¤Ëľ¤ê¤Þ¤¹¡£
 


**¥«¥Ã¥×¤òõ¤¹   ¡Ésearch.h¡É[#u91ae062]
 #define DIST_CATCH 12
 #define DIST_STACK 11
 #define DIST_SEARCH 6
 
 #define SEARCH_DIRECTION1 90
 #define SEARCH_DIRECTION2 120
 
 #define DistSensor SensorUS(DIST_SENSOR)
 
 void TowardCup(int degree){
     int min = DistSensor;
     float dir = GetDirection();
     SpinLow(-degree * 0.5);
     StartDirectionTimer();
     SpinLeftLow();
     while(StopDirectionTimer() < degree){
         if(DistSensor < min){
             min = DistSensor;
             dir = GetDirection();
         }
     }
     SpinRightLow();
     until(GetDirection() <= dir);
     Stay();
 }
 
 int PrepareCup(int dist){
     int x, y;
     TowardCup(SEARCH_DIRECTION1);
     x = DistSensor - DIST_SEARCH;
     GoForwardLow(x);
     StayWait();
     TowardCup(SEARCH_DIRECTION2);
     y = dist - DistSensor;
     GoBackLow(y);
     StayWait();
     return x - y;
 }
 
 int PrepareCatch(){
     return PrepareCup(DIST_CATCH);
 }
 
 int PrepareStack(){
     return PrepareCup(DIST_STACK);
 }


¤Þ¤ººÇ½é¤Ë¼ó¤òº¸±¦¤Ë¿¶¤Ã¤Æ¥«¥Ã¥×¤Î¤¢¤ëÊý¸þ¤ò·×¤Ã¤Æ¤½¤ÎÊý¸þ¤Ë¿Ê¤ß¡¢¤¢¤ëÄøÅÙÀܶᤷ¤¿¤È¤³¤í¤Ç¤â¤¦°ìÅÙ¼ó¤ò¿¶¤Ã¤Æ¥«¥Ã¥×¤òõ¤·¤Þ¤¹¡£

**¥¢¡¼¥à¤Î¥×¥í¥°¥é¥à  ¡Éarm.h¡É [#id3010c4]
***ÄêµÁʸ [#z664db1d]
 #define DOWN_POWER 30
 #define HOLD_DOWN_POWER 50
 #define UP_POWER 90
 #define HOLD_UP_POWER 50
 #define HOLD_POWER 20
 #define RELEASE_POWER 80
 
 #define ARM1_DEGREE 90
 #define ARM2_DEGREE 210
 
 #define CUP1 55
 #define CUP2 37
 #define CUP3 23
 
 #define TypeSensor SENSOR_3
 
***¥µ¥Ö¥ë¡¼¥Á¥ó [#b20e0b81]

 void DownArm(){
     Off(ARM_BASE);
     Wait(100);
     RotateMotor(ARM_BASE, DOWN_POWER, ARM1_DEGREE);
     OnFwd(ARM_BASE, HOLD_DOWN_POWER);
     Wait(1000);
 }
 
 void UpArm(){
     Off(ARM_BASE);
     Wait(100);
     RotateMotor(ARM_BASE, UP_POWER, -ARM1_DEGREE);
     OnRev(ARM_BASE, HOLD_UP_POWER);
     Wait(2000);
 }
 
 void HoldCup(){
     OnFwd(ARM_HAND, HOLD_POWER);
     while(MotorRotationCount(ARM_HAND) < ARM2_DEGREE);
 }
 
 void ReleaseCup(){
     RotateMotor(ARM_HAND, RELEASE_POWER, -ARM2_DEGREE);
 }
 
 void CatchCup(){
     HoldCup();
     Wait(500);
     UpArm();
     Wait(500);
     ReleaseCup();
     HoldCup();
 }
 
 void StackCup(){
     DownArm();
     Wait(500);
     ReleaseCup();
     Wait(500);
 }
 
 int GetCupType(){
     int n = 0;
     if(TypeSensor > (CUP1 + CUP2) * 0.5){
         n = 1;
     }else if(TypeSensor > (CUP2 + CUP3) * 0.5){
         n = 2;
     }else{
         n = 3;
     }
     DebugNumber(DEBUG_CUPTYPE, "CupNumber", n);
     DebugNumber(DEBUG_CUPSENSOR, "CupSensor", TypeSensor);
     return n;
 }
 
 void MasterCatchCup(){
     BTSendMessage(BT_CATCH, true);
     BTReceiveMessage();
 }
 
 void MasterStackCup(){
     BTSendMessage(BT_STACK, true);
     BTReceiveMessage();
 }
 
**Bluetooth¡Ê£²¤Ä¤ÎËÜÂδ֤ǤÎÄÌ¿®¡Ë  ¡Ébluetooth.h¡É [#u82683da]
 #define BT_CONN 1
 #define BT_MAILBOX MAILBOX3
 
 #define BT_NULL 0
 #define BT_CATCH 1
 #define BT_STACK 2
 #define BT_FINISH 3
 
 void BTStart(string file){
     until(BluetoothStatus(BT_CONN) == NO_ERR);
     RemoteStartProgram(BT_CONN, file);
 }
 
 int BTReceiveMessage(){
     int msg = BT_NULL;
     while(msg == BT_NULL){
         ReceiveRemoteNumber(BT_MAILBOX, true, msg);
         DebugNumber(5, "debug", msg);
     }
     return msg;
 }
 
 void BTSendMessage(int msg, bool isMaster){
     if(isMaster){
         SendRemoteNumber(BT_CONN, BT_MAILBOX, msg);
     }else{
         SendResponseNumber(BT_MAILBOX, msg);
     }
 }
 
 void BTStop(){
     BTSendMessage(BT_FINISH, true);
 }
 
¤³¤ÎÄÌ¿®¤Ç¤Ï¼ç¤Ë

­¡¿Æµ¡¤¬»Òµ¡¤Ë¥×¥í¥°¥é¥à¤òµ¯Æ°¤µ¤»¤ë¡Ê¿Æµ¡¤Ë¤è¤ë»Òµ¡Æâ¤Î¥×¥í¥°¥é¥à¤Î±ó³Öµ¯Æ°¡Ë

­¢£²¤Ä¤ÎËÜÂδ֤ǥá¥Ã¥»¡¼¥¸¤Î¤ä¤ê¤È¤ê

¤Î£²¤Ä¤ò¤·¤Þ¤¹¡£

¤¿¤È¤¨¤Ð¥Þ¥·¥ó¤¬¥«¥Ã¥×¤ò¤Ä¤«¤à¤È¤­¤Ï¡¢

­¡¿Æµ¡¤¬»Òµ¡¤Ë¥«¥Ã¥×¤ò¤Ä¤«¤à¥×¥í¥°¥é¥à¤òµ¯Æ°¤µ¤»¤ë¡£¿Æµ¡¤Ï»Òµ¡¤«¤é¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¼è¤ë¤Þ¤ÇÂÔ¤Ä

­¢»Òµ¡¤¬¥¢¡¼¥à¤òÆ°¤«¤·¤Æ¥«¥Ã¥×¤òÄϤà

­£¥«¥Ã¥×¤ò¤Ä¤«¤ß½ª¤¨¤¿¤é¡¢»Òµ¡¤Ï¿Æµ¡¤Ë´ûÄê¤Î¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë

­¤¿Æµ¡¤Ï»Òµ¡¤«¤é´ûÄê¤Î¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¼è¤ë¤È¡¢¤½¤ì¤ò¹ç¿Þ¤È¤·¤Æ¸÷¥»¥ó¥µ¡¼¤Ç¥«¥Ã¥×¤ò¼±Ê̤·¤Æ¡¡¤«¤é°ÜÆ°¤ò³«»Ï¤¹¤ë

¤È¤¤¤¦¤³¤È¤ò¤·¤Æ¤¤¤Þ¤¹¡£¿Æµ¡¤Ï¥×¥í¥°¥é¥à¤Î±ó³Öµ¯Æ°¤Ë¤è¤ê»Òµ¡¤òÆ°¤«¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢¤½¤ÎµÕ¤Ï¤Ç¤­¤Þ¤»¤ó¡£¤Ê¤Î¤Ç»Òµ¡¤¬¿Æµ¡¤òÆ°¤«¤¹¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¤Î¤ä¤ê¼è¤ê¤¬É¬Íפˤʤê¤Þ¤¹


**¥á¥¤¥ó¥¿¥¹¥¯­¡¡½slave¡½¡¡¡Ê»Òµ¡¤Î¥×¥í¥°¥é¥à¡Ë [#r750a95f]
***ÄêµÁʸ [#jc0466b3]
 #include "debug.h"
 #include "bluetooth.h"
 #include "robot.h"
 #include "arm.h"

¤³¤Îinclude¤È¤Ï¡¢""Æâ¤Î¥×¥í¥°¥é¥à¤ò´Þ¤à¡¢¤È¤¤¤¦°ÕÌ£¤Ç¤¹¡£¤Ä¤Þ¤ê¡¢¤³¤Îmaster¤Î¥×¥í¥°¥é¥à¤Ïinclude"()"¤È½ñ¤«¤ì¤Æ¤¤¤ë¥×¥í¥°¥é¥à¤ò¤¹¤Ù¤ÆÆâÊñ¤·¤Æ¤¤¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

¤³¤Î¤è¤¦¤Ëinclude¤ò»È¤¦¤³¤È¤Ç¥×¥í¥°¥é¥à¤òû¤¯¤Þ¤È¤á¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

***¥á¥¤¥ó¥¿¥¹¥¯ [#r5318f45]
 task main(){
    int msg;
    while(msg != BT_FINISH){
        msg = BTReceiveMessage();
        switch(msg){
            case BT_CATCH:
                Debug(1, "Catch");
                DownArm();
                CatchCup();
                BTSendMessage(1, false);
                break;
            case BT_STACK:
                Debug(1, "Stack");
                StackCup();
                UpArm();
                BTSendMessage(1, false);
                break;
        }
        Debug(1, "Wait");
    }
    Debug(1, "Finish");
    Wait(5000);
 }
 

**¥á¥¤¥ó¥¿¥¹¥¯­¢¡½master¡½¡¡¡Ê¿Æµ¡¤Î¥×¥í¥°¥é¥à¡Ë [#vc45c1a4]
***ÄêµÁʸ [#bd09759f]
 #include "debug.h"
 #include "bluetooth.h"
 #include "robot.h"
 #include "direction.h"
 #include "drivebase.h"
 #include "search.h"
 #include "arm.h"


***¥µ¥Ö¥ë¡¼¥Á¥ó [#gf1ff817]
 void GotoCatchCup(){
    GoForward(2);
    StayWait();
    Spin(-90);
    StayWait();
    GoForward(60);
    StayWait();
    Spin(90);
    StayWait();
 }
 void GotoStackCup(){
    GoForward(2);
    StayWait();
    Spin(-90);
    StayWait();
    GoBack(55);
    StayWait();
    Spin(90);
    StayWait();
 }
 void BeginCupA(){
    Spin(45);
    StayWait();
    GoForward(15);
    StayWait();
 }
 void BeginCupB(){
    Spin(-60);
    StayWait();
 }
 void BeginCupC(){
    GoForward(30);
    StayWait();
 }
 void EndCupA(){
    Spin(45 - GetDirection());
    StayWait();
    GoBack(10);
    StayWait();
 }
 void EndCupB(){
    Spin(-60 - GetDirection());
    StayWait();
 }
 void EndCupC(){
    Spin(-GetDirection());
    StayWait();
    GoBack(25);
    StayWait();
 }
 void BeginCup(int n){
    switch(n){
        case 1:
            DebugSound(TONE_C4);
            BeginCupA();
            break;
        case 2:
            DebugSound(TONE_C4);
            BeginCupB();
            break;
        case 3:
            DebugSound(TONE_E4);
            BeginCupC();
            break;
    }
 }
 void EndCup(int n){
    switch(n){
        case 1:
            EndCupA();
            break;
        case 2:
            EndCupB();
            break;
        case 3:
            EndCupC();
            break;
    }
 }
 void Cup(int phase){
    int x, n;
    GotoCatchCup();
    BeginCup(phase);
    x = PrepareCatch();
    MasterCatchCup();
    GoStraight(-x);
    EndCup(phase);
    Spin(-GetDirection());
    GotoStackCup();
    n = GetCupType();
    BeginCup(n);
    x = PrepareStack();
    MasterStackCup();
    GoStraight(-x);
    EndCup(n);
    Spin(-GetDirection());
 } 
 
 
***¥á¥¤¥ó¥¿¥¹¥¯ [#v4dde9c9]
 task main(){
    GoForward(4);
    StayWait();
    BTStart("slave.rxe");
    InitSensor();
    for(int i = 1; i <= 3; i++){
        Cup(i);
    }
    BTStop();
 }



*´¶ÁÛ [#v76af6e2]
²ÝÂ꣱¤ËÈæ¤Ù¡¢¥Á¡¼¥à¿Í¿ô¤Ï£´¿Í¤ËÁý¤¨¤¿¤³¤È¤Ë²Ã¤¨½àÈ÷¤Î»þ´Ö¤âÈæ³ÓŪ¿¤¯¼è¤é¤ì¤Æ¤Ï¤¤¤¿¤¬¡¢¤½¤ì¤Ç¤âËÜÈÖľÁ°¤Þ¤ÇÄ´À°¤òɬÍפȤ·¤¿ÄøÅ٤ˤϻþ´Ö¤¬¤«¤«¤Ã¤Æ¤·¤Þ¤Ã¤¿¡£
¥Þ¥·¥ó¤Ï»ä¤ÎÀ©ºî¤·¤¿»îºîµ¡¤ò³§¤Ç²þÎɤ·¤Æ´°À®¤µ¤»¡¢¥×¥í¥°¥é¥ß¥ó¥°¤Ï²æ¤é¤¬¸Ø¤ë̾¥×¥í¥°¥é¥Þ¡¼ÍÍÍÍ¡Êbgpat¡Ë¤¬ÂçÉôʬ¤ò¼ê¤¬¤±¤¿¡£¥Þ¥·¥óÀ©ºî¤«¤é¥×¥í¥°¥é¥ß¥ó¥°¤Þ¤Ç¡¢¤ä¤ë¤³¤È¤Ï¿¤«¤Ã¤¿¤¬¥Á¡¼¥à¤Î³§¤Ç¶¨ÎϤ·¤Æ¤ä¤ì¤¿¤Î¤Ç¤è¤«¤Ã¤¿¡£

¥×¥í¥°¥é¥à¤Ë´Ø¤·¤Æ¡¢ÂçÉôʬ¤ò¼ê¤¬¤±¤¿¾å¡¢¼ÖÂΤ˼«¿È¤Î¸þ¤­¤ò·×»»¤µ¤»¤ë¤È¤¤¤¦¥×¥í¥°¥é¥à¤ò¹Í°Æ¤¹¤ë¤Ê¤É¡¢bgpat»á¤Ë¤Ï´¶¼Õ¸æÎéËü¡¹ºÐ¤À(¤³¤Î¥×¥í¥°¥é¥à¤¬¤Ê¤±¤ì¤Ð¡¢º¸±¦¤Î¥â¡¼¥¿¡¼¤ò¤½¤ì¤¾¤ì¡»ÅÙ¤º¤Ä²óž¤µ¤»¤Æ¼ÖÂΤò¢¤Åٲ󞤵¤»¡¦¡¦¡¦¤Ê¤É¤ÈÃà°ìÄ´À°¤·¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤«¤Ã¤¿¡£ËÜÅö¤Ë²è´üŪ¤À)¡£ÀµÄ¾¤Ê¤È¤³¤í¡¢»ä¤Ïº£²óºîÀ®¤µ¤ì¤¿¥×¥í¥°¥é¥à¤Î¾ÜºÙ¤ÏÇÄ°®¤·¤­¤ì¤Æ¤¤¤Ê¤¤¡£¤È¤Æ¤âÊ£»¨¤Ç¡¢¤·¤«¤·¹âÅ٤ʤâ¤Î¤À¤Ã¤¿¤È¤À¤±¸À¤¨¤ë¡£¤³¤Î¼ø¶È¤Ç¥×¥í¥°¥é¥ß¥ó¥°¤Ï³µ¤Í½¬ÆÀ¤·¤¿¤Ä¤â¤ê¤Ç¤¤¤¿¤¬¡¢¥×¥í¥°¥é¥ß¥ó¥°¤Ï¤Þ¤À¤Þ¤À±ü¤¬¿¼¤¤¤â¤Î¤Ç¼«Ê¬¤Ï̤½Ï¤À¤È´¶¤¸¤¿¡£

**È¿¾ÊÅÀ [#n2ed8d70]
¡¦¤³¤ÎÅÙ¥í¥Ü¥³¥ó¤Ç¤Ï£²¸Ä¤Î¥«¥Ã¥×¤ò½Å¤Í¤ë¤Ë»ê¤Ã¤¿¤â¤Î¤Î¡¢ºÇ¸å¤Î°ì¸Ä¤ò¼è¤ëºÝ¤Ï¤Ï¤µ¤ß¤­¤ì¤Ê¤¤¤Þ¤Þ¥¢¡¼¥à¤ò»ý¤Á¾å¤²¡¢·ë²Ì¥«¥Ã¥×¤òÍî¤È¤·¤Æ¤·¤Þ¤Ã¤¿¡£¤³¤Î¥«¥Ã¥×¤ò¼è¤ëºÝ¤ËÍî¤È¤·¤Æ¤·¤Þ¤¦¸½¾Ý¤ÏÄ´À°Ãʳ¬¤Ç¤â²¿ÅÙ¤«¸«¤é¤ì¤¿¡£¥«¥Ã¥×¤òõ¤·¤Ê¤¬¤éÀ᤹ܶ¤ëÃʳ¬¤Ç¼ÖÂΤ¬¤¦¤Þ¤¯¥«¥Ã¥×¤ËÀµÂФǤ­¤º¡¢¤½¤Î¤Þ¤Þ¥¢¡¼¥à¤ò²¼¤·¤¿¤«¤é¡¢¤Þ¤¿¥«¥Ã¥×¤òÄϤߤ­¤ì¤Æ¤¤¤Ê¤¤¤Þ¤Þ¥¢¡¼¥à¤ò¾å¤²¤¿¤«¤é¡¢¤Ê¤É¤¬¸¶°ø¤È¤·¤Æ¹Í¤¨¤é¤ì¤ë¡£

¡¦¼ÖÂΤˤϼ«¿È¤Î¸þ¤­¤ò·×»»¤µ¤»¤Æ¤¤¤¿¤â¤Î¤Î¡¢°ÜÆ°¤·¤Æ¤¤¤ë¤¦¤Á¤Ë¡¢Æä˥«¥Ã¥×¤òõ¤¹Ãʳ¬¤Ç½ù¡¹¤Ë¸íº¹¤¬À¸¤¸¡¢Î٤Υ¨¥ê¥¢¤Ë°Ü¤ë¤È¤­¤Ë90¡ëÀû²ó¤µ¤»¤ë»þ¤Ê¤É³ÑÅÙ»ØÄê¤ÇÆ°ºî¤µ¤»¤Æ¤¤¤ë¤È¤³¤í¤Ç¤º¤ì¤¬À¸¤¸¤Æ¤·¤Þ¤¦(ËÜÍè»æ¤ÎÊÕ¤ËÂФ·Ê¿¹Ô¤Ë°ÜÆ°¤¹¤ë¤Î¤Ë¼Ð¤á¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦)¤Ê¤ÉÌäÂ꤬À¸¤¸¤¿¡£¤³¤ì¤ÏËÜÈÖľÁ°¤Þ¤ÇÄ´À°¤·¤Æ¤¤¤¿¤¬½¤Àµ¤·¤­¤ë¤Ë¤Ï»ê¤é¤Ê¤«¤Ã¤¿¡£

**Îɤ«¤Ã¤¿ÅÀ [#t61d5a03]
¡¦ËÜÂΤȥ¢¡¼¥àÉôʬ¤ÏBluetooh¤Ë¤è¤ëÄÌ¿®¤ÇÏ¢·È¤µ¤»¤¿¤¬¡¢¥¹¥à¡¼¥º¤Ëµ¡Ç½¤·¤Æ¤¤¤¿¤Î¤Ç¥«¥Ã¥×¤ò¤Ä¤«¤à¡¦½Å¤Í¤ëÆ°ºî¤¬¤¦¤Þ¤¯¤¤¤Ã¤¿¡£

¡¦Ä¶²»ÇÈ¥»¥ó¥µ¡¼¤Çõ¤·¤Ê¤¬¤é¤Î¥«¥Ã¥×¤Ø¤ÎÀܶ᤬¤¦¤Þ¤¯¤¤¤Ã¤Æ¤ª¤ê¡¢¥«¥Ã¥×¤ËÂФ·Å¬Àڤʵ÷Î¥¤ÇÀµÂФǤ­¤Æ¤¤¤¿¡£


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