Ìܼ¡

²ÝÂê2ÆâÍÆ

2Âæ¤Î¥í¥Ü¥Ã¥È¤Ç¶õ¤­´Ì¤ò¼ý½¸¤·¡¢¥´¡¼¥ë¤Ë¶õ¤­´Ì¤Ë¤Ê¤ë¤Ù¤¯¹â¤¯ÀѤ߾夲¤ë

´ðËܥ롼¥ë

¶¥µ»»þ´Ö¤Ï¿³È½¤¬Â³¹ÔÉÔǽ¤ÈȽÃǤ¹¤ë¤Þ¤Ç¡¢¤¢¤ë¤¤¤Ï¥ê¥¿¥¤¥¢¤¹¤ë¤Þ¤Ç¡£

¿Þ¤Îº¸²¼¤Î¶ù¤«¤é¥¹¥¿¡¼¥È¤¹¤ë¡£¥í¥Ü¥Ã¥È¤¬»æ¤«¤é¤Ï¤ß½Ð¤Ê¤¤ÈϰϤDzÄǽ¤Ê¸Â¤ê¤Ë¶ù¤ËÇÛÃÖ¤¹¤ë¡£

¶õ¤­´Ì¤ò½¸¤á¤Æ¿Þ¤Î¡Ö¥´¡¼¥ë¡×¤È½ñ¤«¤ì¤¿±ß¸Ì¤ÈľÀþ¤Ç°Ï¤Þ¤ì¤ëÎΰè¤Ë¶õ¤­´Ì¤ò±¿¤Ö

¤Ê¤ë¤Ù¤¯¹â¤¯¶õ¤­´Ì¤òÀѤ߾夲¤ë

±¿¤Ó½ª¤ï¤Ã¤¿¸å¡¢¤¢¤ë¤¤¤ÏÀѤ߾夲¤¿¸å¤Ï¥í¥Ü¥Ã¥È¤Ï¥´¡¼¥ë¤ÎÎΰ褫¤é³°¤Ë½Ð¤ë¤³¤È¡£¤Þ¤¿¶õ¤­´Ì¤ÈÀÜ¿¨¤·¤Æ¤¤¤¿¤Ï¤¤¤±¤Ê¤¤¡£

³«»Ï¤Î¹ç¿Þ¤«¤é£µÉðÊÆâ¤Ë¥¹¥¿¡¼¥È¥Ü¥¿¥ó¤ò²¡¤¹ºî¶È¤ò´°Î»¤¹¤ë¤³¤È¡£

¶¥µ»¤¬½ªÎ»¤¹¤ë¤Þ¤Ç¡¢¥í¥Ü¥Ã¥È¤Ë¿¨¤Ã¤¿¤ê¿Í´Ö¤¬±ó³Ö¤ÇÁàºî¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£

ÅÓÃæ¤Ç¤¦¤Þ¤¯Æ°¤«¤Ê¤¯¤Ê¤Ã¤¿¾ì¹ç¡¢£±²ó¸Â¤êºÆ¥¹¥¿¡¼¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡ÊºÆ¥¹¥¿¡¼¥È¤ÎºÝ¤ËÊÌ¥×¥í¥°¥é¥à¤Çµ¯Æ°¤·¤Æ¤è¤¤¡Ë¡£

°Ê¾å2013b/Mission2¤è¤ê°úÍÑ

¥³¡¼¥¹¿Þ

robocon2013b.png

¥á¥ó¥Ð¡¼

dyuma
¥í¥Ü¥Ã¥ÈÀ½ºî¡Ê+¥í¥Ü¥Ã¥È´ÉÍý¡Ë¡¦¥×¥í¥°¥é¥ß¥ó¥°¤È¤É¤Á¤é¤â¤³¤Ê¤·¤Æ¤¤¤ëÃæ´Ö´ÉÍý¿¦¡£

pepo
¥í¥Ü¥Ã¥È¤òÁȤޤ»¤¿¤éÈà¤Î±¦¤Ë½Ð¤ë¤â¤Î¤Ï¤¤¤Ê¤¤¡£¡Ê¤¿¤À¤·¾ðÊ󹩳زʡË

michaegon
¤³¤Î¥Ú¡¼¥¸¤ÎÃø¼Ô
¥×¥í¥°¥é¥à¤ÎÊý¤ò¤ä¤Ã¤Æ¤Þ¤¹¡£

¥í¥Ü¥Ã¥È³µÍ×

º£²ó»ÈÍѤ·¤¿¥í¥Ü¥Ã¥È¤Ç¤¹¡£Æ¹ÂΤ¬¤«¤Ê¤êŤ¤¤Ç¤¹¡£

robo2.jpg

ƹÂÎÃæ±û¤Î¥ì¡¼¥ë¤Ë´Ì¤¬£´ËܤޤÇÆþ¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

robo2-1.jpg

´Ì¤ò¤³¤ÎÏӤDz¥¤Ã¤Æ¥ì¡¼¥ë¤ËÆþ¤ì¤ë»ÅÁȤߤǤ¹¡£

robo2-2.jpg
robo2-3.jpg
robo2-4.jpg

´Ì¤ò´¶ÃΤ¹¤ë¤Î¤Ë¤Ï¤³¤ÎĶ²»ÇÈ¥»¥ó¥µ¡¼¤ò»È¤¤¤Þ¤¹¡£

robo2-7.jpg

¥ì¡¼¥ë¤Î¸å¤í¤«¤é´Ì¤¬Ï³¤ì¤Ê¤¤¤è¤¦¤Ë¥¹¥È¥Ã¥Ñ¡¼·¯¤¬¤Ä¤¤¤Æ¤¤¤Þ¤¹¡£

robo2-8.jpg

´Ì¤ò¥ì¡¼¥ë¤ËµÍ¤á¹þ¤ó¤À¤é¡¢´Ì¤òÍÞ¤¨¤ë¤¿¤á¤ÎÏӤǴ̤òÍÞ¤¨¤Ê¤¬¤é¥ì¡¼¥ë¼«¿È¤òΩ¤Á¾å¤²¤Þ¤¹¡£

robo2-5.jpg
robo2-6.jpg

¥×¥í¥°¥é¥à³µÍ×

¥é¥¤¥ó¥È¥ì¡¼¥¹Éôʬ¤Î»ÅÍÍ

º£²ó¤âPIDÀ©¸æ¤òÍøÍѤ·¤¿¥é¥¤¥ó¥È¥ì¡¼¥¹¥×¥í¥°¥é¥à¤òÁȤó¤Ç¤ß¤Þ¤·¤¿¡£
Á°²ó¤ÎÈ¿¾Ê¤òÀ¸¤«¤·¤Æ¤è¤ê°ÂÄꤷ¤ÆÀ®¸ù¤Ç¤­¤ë¤â¤Î¤Ë²þÎɤ·¤Þ¤·¤¿¡£ PIDÀ©¸æ¤Ë¤Ä¤¤¤Æ¤ÏÁ°²ó¤Î¥Ú¡¼¥¸¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

¸òº¹ÅÀ¡¦µÞ¥«¡¼¥ÖȽÄê

´ðËÜŪ¤Ê¥é¥¤¥ó¥È¥ì¡¼¥¹¤Î¥×¥í¥°¥é¥à¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£

#define SPEED 32
#define KP 1.6
#define KI 0.00002
#define KD 0.8
#define THRESHOLD 50
#define THRESHOLD2 32
#define RIGHT 1
#define LEFT -1
#define DT 1
#define CT 250

int dev[2]; // Êк¹
float integral;

// ÁàºîÎ̤òÊÖ¤¹´Ø¿ô
inline int ope_amount()
{
 float pid;
 int result;

 dev[0]=dev[1]; // ²áµî¤ÎÊк¹
 dev[1]=SENSOR_1-THRESHOLD; // ¸½ºß¤ÎÊк¹

 if (dev[0]==dev[1]) { // ÉÔÍפˤʤ俤éintegral¥ê¥»¥Ã¥È
    integral=0;
 }
 integral+=(dev[1]+dev[0])*DT/2; // ÀÑʬ·×»»

 pid=KP*dev[1]+KI*integral+KD*(dev[1]-dev[0])/DT; // PID

 result=pid; // int·¿¤ËÊÑ´¹
 /*¥·¥ó¥¯¥íΨ¤ÎÈϰϤˤª¤µ¤á¤ë*/
 if (result>100) {
    result=100;
 } else if (result<-100) {
    result=-100;
 }

 return result;
}

/*
 ¹õÀþ¤Î¡¢¤È¤¢¤ë¦¤òÁö¹Ô¤¹¤ë´Ø¿ô¡Ê¼ÖÀþÊѹ¹¤Ä¤­¡Ë
*/
inline void go_xside(int sgn)
{
 while (true) {
       OnFwdSync(OUT_BC,SPEED,ope_amount()*sgn);
       Wait(DT);
       if (SENSOR_1<THRESHOLD2) {
          OnFwdSync(OUT_BC,SPEED,-ope_amount()*sgn);
          Wait(CT);
          break;

       }
 }
}

task main()
{
 while (true) {
       go_xside(RIGHT);
       go_xside(LEFT);
 }
}

¤³¤Î¥×¥í¥°¥é¥à¤ÏÁ°²óƱÍÍ¡¢PIDÀ©¸æ¤ò»È¤Ã¤Æ¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¤·¤Æ¤¤¤Þ¤¹¡£
Á°²ó¤Ï¡¢¥³¡¼¥¹¤Î·Á¾õ¤òÍøÍѤ·¤ÆÎϵ»¤Ç¸òº¹ÅÀ¤òÆÍÇˤ¹¤ë¥×¥í¥°¥é¥à¤À¤Ã¤¿¤»¤¤¤Ç¡¢¤º¤¤¤Ö¤ó¥³¡¼¥¹£±¼þ²ó¤ê¤­¤ì¤ë³ÎΨ¤¬Ä㤤¤Î¤¬·èÄêŪ¤Ê·çÅÀ¤Ç¤·¤¿¡£
¤½¤³¤Ç¡¢º£²ó¤Ï¤â¤Ã¤ÈÀ®¸ùΨ¤¬¹â¤¤¸òº¹ÅÀÄ̲áÊýË¡¤ò¹Í¤¨¤Þ¤·¤¿¡£

cross.png

º£²ó¤ÏïçÃͤò¥é¥¤¥ó¤Î¶­³¦¾å¤È¥é¥¤¥óÃæ±ûÉÕ¶á¤Î£²Ãʳ¬¤ËÀßÄꤷ¤Þ¤·¤¿¡Ê¥é¥¤¥ó¤ÎÃæ±û¤Ë¹Ô¤¯¤Û¤É¸÷¥»¥ó¥µ¡¼¤ÎÃͤϾ®¤µ¤¯¤Ê¤ê¤Þ¤¹¡Ë¡£
ľÀþ¤ä¥«¡¼¥Ö¤Î³°Â¦¡¢´Ë¤ä¤«¤Ê¥«¡¼¥Ö¤ÎÆ⦤òÁö¤Ã¤Æ¤¤¤ë¤È¤­¤Ï¡¢¥é¥¤¥ó¤Î¶­³¦¾åÉÕ¶á¤òÁö¹Ô¤·¤Æ¤¤¤Þ¤¹¤¬¡¢µÞ¥«¡¼¥Ö¤ÎÆ⦤ä¸òº¹ÅÀ¤Ëº¹¤·³Ý¤«¤ë¤È¡¢¥í¥Ü¥Ã¥È¤¬¥³¡¼¥¹¤ÎÊѲ½¤ËÄɤ¤¤Ä¤±¤º¤Ë¥é¥¤¥óÃæ±ûÉÕ¶á¤Î£²¤ÄÌܤÎïçÃͤò±Û¤¨¤Æ¤­¤Þ¤¹¡£
¤¹¤ë¤È¡¢go_xsideÆâ¤Îifʸ¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£

if (SENSOR_1<THRESHOLD2) {
    OnFwdSync(OUT_BC,SPEED,-ope_amount()*sgn); // Ä̾ï¤È¤ÏµÕ¸þ¤­¤Ø¶Ê¤¬¤ë
    Wait(CT);
    break;
}

¤³¤Îifʸ¤Ç¤ÏÄ̾ï¥é¥¤¥óÆâ¤Ë¥í¥Ü¥Ã¥È¤¬Æþ¤Ã¤¿¤È¤­¡¢¥é¥¤¥ó³°¤Ø¸þ¤±¤Æ¶Ê¤¬¤ê¤À¤¹¤È¤³¤í¤òCT¥ß¥êÉô֤À¤±¥é¥¤¥ó¤ÎÆ⦤˸þ¤±¤ÆÁö¤ê¤Þ¤¹¡£
¤½¤¦¤¹¤ë¤³¤È¤Ç¡¢¥é¥¤¥óÃæ±û¤ò¼Ð¤á¤Ë²£Àڤäƥ饤¥ó¤ÎÈ¿ÂЦ¡Ê¥«¡¼¥ÖÃæ¤Ê¤é¥«¡¼¥Ö¤Î³°Â¦¡¢¸òº¹ÅÀ¤Ê¤é¸òº¹ÅÀÃæ±û¡Ë¤Ø°ÜÆ°¤·¤Þ¤¹¡£
¤³¤Î¤è¤¦¤Ë¡¢¸òº¹ÅÀ¤ò¼Ð¤á¤Ë²£ÀڤäƤ錄¤ê¤­¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
¤³¤ÎÊýË¡¤Ç¤Ï¡¢Á°²ó¤ÎÎϵ»Ä̲á¤è¤ê¤âKI¤Ê¤É¤ÎÃͤäÅÅÃÓ»ÄÎ̤ʤɤËÀ®¸ùΨ¤¬º¸±¦¤µ¤ì¤º¤Ë°ÂÄꤷ¤¿Áö¹Ô¤ò¼Â¸½¤Ç¤­¤ë¤¦¤¨¡¢¤É¤Ã¤Á¼þ¤ê¤Ë¥³¡¼¥¹¤ò²ó¤Ã¤Æ¤â£±¼þ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¢­°Ê¾å¤òÍøÍѤ·¤Æ¡¢º£²ó¤Î¤¿¤á¤Ëºî¤Ã¤¿¥×¥í¥°¥é¥à¤Ç¤¹¡£

TIRE_main.nxc

¥¿¥¤¥ä¤òÀ©¸æ¤·¤Æ¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¤¹¤ëÊý¤Î¥á¥¤¥óÉôʬ¤Ç¤¹¡£

#define SPEED 33
#define SPEED2 20
#define KP 7
#define KI 0.002
#define KD 1.8
#define THRESHOLD 20
#define THRESHOLD2 10
#define RIGHT 1
#define LEFT -1
#define DT 1
#define CT 1200
#define ARM 1
#define FIRST_T 5000

void turn_right()
{
 OnFwd(OUT_C,SPEED2);
 OnFwd(OUT_B,-SPEED2);
}

void turn_left()
{
 OnFwd(OUT_B,SPEED2);
 OnFwd(OUT_C,-SPEED2);
} 

void start_action()
{
 // BluetoothÀܳ¤Î³Îǧ
 until (BluetoothStatus(ARM)==NO_ERR);
 PlaySound(SOUND_UP); 

 // ¥¹¥¿¡¼¥ÈÃÏÅÀ¤«¤é¥³¡¼¥¹¤Ë¾è¤ë¤Þ¤Çľ¿Ê
 OnFwdSync(OUT_BC,SPEED,0);
 until (SENSOR_1<THRESHOLD);
 Off(OUT_BC);
} 

void can_build2()
{
 // ¿Þ¤Î±¦¤«¤é¥´¡¼¥ëÁ°¤Î¸òº¹ÅÀ¤ËÆþ¤ë¤È¤¹¤ë
 turn_right();
 Wait(CT);
 Off(OUT_BC);
 // ÀѤ߾夲»ØÎá¤òÁ÷¤ë
 SendRemoteNumber(ARM,MAILBOX3,1);
 // ÀѤ߾夲´°Î»¤Î¹ç¿Þ¤òÂÔ¤Ä
 int msg;
 do {
    msg=0;
    ReceiveRemoteNumber(MAILBOX4,true,msg);
 } while (!msg);
} 

void can_build1()
{
 // ¿Þ¤Î±¦¤«¤é¥´¡¼¥ëÁ°¤Î¸òº¹ÅÀ¤ËÆþ¤ë¤È¤¹¤ë
 turn_left();
 Wait(CT*4);
 Off(OUT_BC);
 // ¥´¡¼¥ë±ü¤Ø°ÜÆ°
 OnFwd(OUT_BC,SPEED);
 Wait(CT*4);
 Off(OUT_BC);
 // ÀѤ߾夲»ØÎá¤òÁ÷¤ë
 SendRemoteNumber(ARM,MAILBOX3,1);
 // ÀѤ߾夲´°Î»¤Î¹ç¿Þ¤òÂÔ¤Ä
 int msg;
 do {
    msg=0;
    ReceiveRemoteNumber(MAILBOX4,true,msg);
 } while (!msg);
 // ¥Ð¥Ã¥¯¤Ç¸òº¹ÅÀ¤Þ¤ÇÌá¤Ã¤Æ»ß¤Þ¤ë
 OnFwd(OUT_BC,-SPEED);
 Wait(CT*5);
 Off(OUT_BC);
 SendRemoteNumber(ARM,MAILBOX5,1);
}

void end_action()
{
 // ¤«¤Ê¤ê¸å¤í¤Ë²¼¤¬¤ë
 OnFwd(OUT_BC,-SPEED);
 Wait(FIRST_T);
 turn_right();
 Wait(CT);
 // ¥³¡¼¥¹³°¤ØΥæ
 OnFwd(OUT_BC,100);
 Wait(FIRST_T*2);
 PlaySound(SOUND_UP);
}

// ´Ì¤¬¤¢¤ë¤«¤É¤¦¤«È½Äꤹ¤ë´Ø¿ô
int iscan()
{
 if (SensorUS(S2)<=10) { // Ķ²»ÇÈ¥»¥ó¥µ¡¼¤¬10cm°ÊÆâ¤ò´¶ÃÎ
    return 1;
 } else {
    return 0;
 }
}

// ´Ì¤Î½³¤ê¾å¤²¤òÌ¿Î᤹¤ë´Ø¿ô
void kick()
{
 OnFwdSync(OUT_BC,SPEED,0);
 Wait(CT);
 Float(OUT_BC);
 // Bluetooth¤ÇÄÌ¿®¤·¤Æ½³¤ê¾å¤²¤ò¼Â¹Ô
 SendRemoteNumber(ARM,MAILBOX1,1);
 int msg=0;
 do {
    ReceiveRemoteNumber(MAILBOX2,true,msg);
 } while (!msg);
}
 
int dev[2];
int flag,count;
float integral;

inline int ope_amount()
{
 float pid;
 int result;

 dev[0]=dev[1]; // ²áµî¤ÎÊк¹
 dev[1]=SENSOR_1-THRESHOLD; // ¸½ºß¤ÎÊк¹

 if (dev[0]==dev[1]) { // ÉÔÍפˤʤ俤éintegral¥ê¥»¥Ã¥È
    integral=0;
 }
 integral+=(dev[1]+dev[0])*DT/2; // ÀÑʬ·×»»

 pid=KP*dev[1]+KI*integral+KD*(dev[1]-dev[0])/DT; // PID

 result=pid; // int·¿¤ËÊÑ´¹
 /*¥·¥ó¥¯¥íΨ¤ÎÈϰϤˤª¤µ¤á¤ë*/
 if (result>100) {
    result=100;
 } else if (result<-100) {
    result=-100;
 }

 return result;
}

inline void go_xside(int sgn,int change)
{
 while (true) {
       OnFwdSync(OUT_BC,SPEED,ope_amount()*sgn);
       Wait(DT);
       if (SENSOR_1<THRESHOLD2) {
          OnFwdSync(OUT_BC,SPEED,-ope_amount()*sgn);
          Wait(CT);
          PlaySound(SOUND_UP);
          break;
       }
       if (iscan()) {
          kick();
          count++;
          if (count==change) {
             flag++;
             break;
          }
       }
 }
}

inline void go_xside2(int sgn)
{
 while (true) {
       OnFwdSync(OUT_BC,SPEED,ope_amount()*sgn);
       Wait(DT);
       if (SENSOR_1<THRESHOLD2) {
          count++;
          OnFwdSync(OUT_BC,SPEED,-ope_amount()*sgn);
          Wait(CT);
          PlaySound(SOUND_UP);
          break;
       }
 }
}

inline void go_xside3(int sgn)
{
 while (true) {
       OnFwdSync(OUT_BC,SPEED2,ope_amount()*sgn);
       Wait(DT);
       if (SENSOR_1<THRESHOLD2) {
          count++;
          OnFwdSync(OUT_BC,SPEED2,-ope_amount()*sgn);
          Wait(CT);
          PlaySound(SOUND_UP);
          break;
       }
 }
}

// £±²óÌÜ
// ´Ì¤ò4¤Ä½¸¤á¤Æ¥´¡¼¥ëÁ°¤Î¸òº¹ÅÀ¤ËÅþ㤹¤ë¤Þ¤Ç
void phase1()
{
 count=0;
 flag=0;
 while (true) {
       go_xside(LEFT,4);
       if (flag) {
          break;
       }
       go_xside(RIGHT,4);
       if (flag) {
          break;
       }
 }
 count=0;
 flag=0;
 while (true) {
       go_xside2(LEFT);
       if (count==3){
          break;
       }
       go_xside2(RIGHT);
       if (count==3){
          break;
       }
 }
 Off(OUT_BC);
}

// £²²óÌÜ
// ¥´¡¼¥ëÁ°¤Î¸òº¹ÅÀ¤«¤é¥¹¥¿¡¼¥È¤·¡¢
// ´Ì¤ò4¤Ä½¸¤á¤Æ¥´¡¼¥ëÁ°¤Î¸òº¹ÅÀ¤Þ¤ÇÌá¤Ã¤Æ¤¯¤ë¤È¤³¤í¤Þ¤Ç
void phase2()
{
 turn_right();
 Wait(CT*4);
 count=0;
 // ¥Ø¥¢¥Ô¥ó¤Þ¤Ç
 while (true) {
       go_xside2(LEFT);
       if (count==2) {
          break;
       }
       go_xside2(RIGHT);
       if (count==2) {
          break;
       }
 }
 // ¸þ¤³¤¦´ß¤Ø°ÜÆ°
 Wait(CT*4);
 OnFwd(OUT_BC,SPEED);
 Wait(FIRST_T);
 count=0;
 flag=0;
 // ´Ì½¸¤á
 while (true) {
       go_xside(LEFT,4);
       if (flag) {
          break;
       }
       go_xside(RIGHT,4);
       if (flag) {
          break;
       }
 }
 count=0;
 // ¥Þ¥Ã¥×°ÜÆ°
 while (true) {
       go_xside3(LEFT);
       if (count==2) {
          break;
       }
       go_xside3(RIGHT);
       if (count==2) {
          break;
       }
 }
 Wait(CT);
 count=0;
 while (true) {
       go_xside2(LEFT);
       if (count==3) {
          break;
       }
       go_xside2(RIGHT);
       if (count==3) {
          break;
       }
 }
 Off(OUT_BC);
}
// ¥é¥¤¥ó¥È¥ì¡¼¥¹ÍÑ¥¿¥¤¥äÀ©¸æ¦¥×¥í¥°¥é¥à(MASTER)
//mainÉôʬ

task main()
{
 SetSensorLight(S1);
 SetSensorLowspeed(S2);
 
 // ¥¹¥¿¡¼¥ÈÃÏÅÀ¤«¤é¥³¡¼¥¹¤Ë¾è¤ë¤Þ¤Ç¤Î¹ÔÆ°
 start_action();

 // ´Ì½¸¤á¤È´Ì·ú¤Æ¤½¤ì¤¾¤ì2²ó¤º¤Ä
 phase1();
 can_build1();
 phase2();
 can_build2();

 // ¥³¡¼¥¹³°¤Ø¤ÎΥæ¤òÄêµÁ
 end_action();

}

¤³¤Î¥×¥í¥°¥é¥à¤Ç¤Ï²¼¤Î¤è¤¦¤Ë¥³¡¼¥¹¤ò²ó¤Ã¤Æ´Ì¤ò£´¤Ä½¸¤á¤Æ¤Ï¥´¡¼¥ë¤Ë¸þ¤«¤¤¡¢·ú¤Æ½ª¤ï¤ì¤Ð¤Þ¤¿£´¤Ä½¸¤á¤Æ¥´¡¼¥ë¤Ë¸þ¤«¤¦¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£

map2.png

¤Þ¤ºphase1()¤Ç¤Ï¾å¿Þ¤Î­¡¡ÊÀÖ¡Ë¡¢­¢¡ÊÎСˤΤ褦¤Ë¿Ê¤ó¤Ç¤¤¤­¤Þ¤¹¡£¥é¥¤¥ó¥È¥ì¡¼¥¹¤Î¤¿¤á¤Ë¥¤¥ó¥é¥¤¥ó´Ø¿ôgo_xside¤¬Æ¯¤¤¤Æ¤¤¤Þ¤¹¡£¤³¤ÎºÇÃæ¡¢´Ì¤ò´¶ÃΤ¹¤ëiscan´Ø¿ô¤¬Æ°¤¤¤Æ¤¤¤Æ¡¢´Ì¤¬¤¢¤ì¤Ð¥¢¡¼¥à¤¬Æ°¤¤¤Æ´Ì¤ò¤±¤ê¾å¤²¤Æ¥ì¡¼¥ë¤ËÆþ¤ì¤ëÆ°ºî¤ò»Ø¼¨¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£´Ì¤òÆþ¤ì¤ëÆ°ºî¤ÎÊý¤ÏARM_main.nxc¤ÎÊý¤Ë½ñ¤«¤ì¤Æ¤¤¤Æ¡¢¥¹¥ì¡¼¥Ö¦¤¬¹Ô¤¤¤Þ¤¹¡£
´Ì¤ò£´¤Ä½¸¤á½ª¤ï¤ë¤Ègo_xside2¤ËÀÚ¤êÂؤï¤ê¤Þ¤¹¡£¤³¤Î´Ø¿ô¤Ç¤Ï¸÷¥»¥ó¥µ¡¼¤¬THRESHOLD2°Ê²¼¡¢¤Ä¤Þ¤ê¸òº¹ÅÀ¡¢µÞ¥«¡¼¥ÖȽÄê¤ò¤·¤¿²ó¿ô¤¬¹ç·×£³²ó¡Ê£´¤ÄÌܤδ̤ò¸«¤Ä¤±¤¿¸å¤Ë¥´¡¼¥ë¤Þ¤Ç¤ËǧÃΤ¹¤ë¿ô¡Ë¤Ë¤Ê¤ë¤È´Ì¤ò·ú¤Æ¤ë¤¿¤á¤Î°ÜÆ°ºî¶Ècan_build1¤¬»Ï¤Þ¤ê¤Þ¤¹¡£

can_build1¤Ç¤Ï¤Þ¤º¥´¡¼¥ëÁ°¤Î¸òº¹ÅÀ¤Ç£´£µÅÙ±¦¤ËÀû²ó¤·¤Æ¤½¤Î¸åľ¿Ê¤·¤Æ¥´¡¼¥ëÃæ±ü¤Ë°ÜÆ°¤·¤Æ´Ì¤ò·ú¤Æ¤ëºî¶È¤ò¤¹¤ë¤è¤¦¤Ë¥¹¥ì¡¼¥Ö¤Ë»Ø¼¨¤òÁ÷¤ê¤Þ¤¹¡£
·ú¤Æ½ª¤ï¤Ã¤¿¤È¤¤¤¦»Ø¼¨¤ò¼õ¤±¼è¤ë¤È¡¢¥Ð¥Ã¥¯¤·¤Æ¥´¡¼¥ëÁ°¤Î¸òº¹ÅÀ¤ËÌá¤ê¤Þ¤¹¡£
¤³¤Î¤¢¤È¡¢£²²óÌܤδ̽¸¤á¤Î¤¿¤á¤Ëphase2¤Ë°Ü¤ê¤Þ¤¹¡£

phase2¤Ç¤Ï¾å¿Þ¤Î­£¡ÊÀġˤΤ褦¤Ë¿Ê¤ó¤Ç¤¤¤­¤Þ¤¹¡£
go_xside´Ø¿ô¤¬Æ¯¤¤¤Æ¤¤¤Æ¡¢¥´¡¼¥ë¤«¤é½Ðȯ¤·¤¿¸å¡¢¥Ø¥¢¥Ô¥ó¥«¡¼¥Ö¤Î¤È¤³¤í¤«¤éľ¿Ê¤·¤ÆÎ٤Υ³¡¼¥¹¤Ø°ÜÆ°¤·¤Æ¡¢´Ì¤ò½¸¤á¤Æ¤­¤Þ¤¹¡£½¸¤á½ª¤ï¤Ã¤¿¤égo_xside3¤¬Æ¯¤¤¤Æ£²¤Ä¤Î¥³¡¼¥¹¤Î¤Ä¤Ê¤®Ìܤò°ÜÆ°¤·¤Þ¤¹¡£¤½¤Î¸å¡¢go_xside2¤ò»È¤Ã¤Æ¥´¡¼¥ëÁ°¤Î¸òº¹ÅÀ¤Þ¤Ç°ÜÆ°¡¢¤½¤Î¸å¡¢´Ì¤ò·ú¤Æ¤ë¤¿¤á¤Îcan_build2¤Ë°Ü¤ê¤Þ¤¹¡£

can_build2¤Ç¤Ï¡¢¸òº¹ÅÀ¤Ç±¦£´£µÅÙ¤ËÀû²ó¤·¤¿¤¢¤È¡¢¤½¤Î¾ì¤Ç´Ì¤ò·ú¤Æ¤ë¤è¤¦¤Ë¥¹¥ì¡¼¥Ö¦¤Ë»Ø¼¨¤ò½Ð¤·¤Þ¤¹¡£´Ì¤ò·ú¤Æ½ª¤ï¤Ã¤¿¤È¤¤¤¦»Ø¼¨¤ò¼õ¤±¼è¤ë¤È¡¢¥³¡¼¥¹¤òΥ椷¤Æ½ªÎ»¤¹¤ë¤¿¤á¤Îend_action´Ø¿ô¤Ë°Ü¤ê¤Þ¤¹¡£

end_action¤Ç¤Ï¡¢·ú¤Æ¤¿´Ì¤Ë¤Ö¤Ä¤«¤é¤Ê¤¤¤è¤¦¤Ë¡¢½½Ê¬²¼¤¬¤Ã¤¿¤¢¤È¡¢Àû²ó¸å¡¢Ä¾¿Ê¤·¥³¡¼¥¹¤«¤éΥ椷¤Æ½ªÎ»¤·¤Þ¤¹¡£

´Ì¤òÆ°¤«¤¹Éôʬ¤Î»ÅÍÍ

ARM_main.nxc

¥¢¡¼¥àÀ©¸æ¤ò¤¹¤ëÊý¤Î¥á¥¤¥óÉôʬ¤Ç¤¹¡£
¥Þ¥¹¥¿¡¼¤Ç¤¢¤ë¾å¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¤¹¤ë¥×¥í¥°¥é¥à¤Ç¤¢¤ëTIRE_main.nxc¤«¤é¤Î»Ø¼¨¤ò¼õ¤±¼è¤Ã¤Æ´Ì¤ò²ó¼ý¤·¤¿¤ê¡¢´Ì¤ò·ú¤Æ¤¿¤ê¤È¤¤¤Ã¤¿¹ÔÆ°¤ò¤·¤Þ¤¹¡£

#define DT 1
#define CT 250

// ½³¤ê¾å¤²
void hit()
{
 // ½³¤ê
 RotateMotor(OUT_A,100,270);
 Wait(3000);
 Off(OUT_A);
 Wait(DT);
 // Ìᤷ
 RotateMotor(OUT_A,-20,270);
 Wait(3000);
 Off(OUT_A);
 Wait(DT);
 SendResponseNumber(MAILBOX2,1);
 PlaySound(SOUND_UP);
}

void build()
{
 // ÍÞ¤¨¥¢¡¼¥à¤òÆ°¤«¤¹
 RotateMotor(OUT_C,20,120);
 Wait(CT);
 Off(OUT_C);
 // ¾å¤²¤ë
 ResetTachoCount(OUT_B);
 while (MotorTachoCount(OUT_B)>-20) {
       OnFwdReg(OUT_B,-15,OUT_REGMODE_SPEED);
       PlaySound(SOUND_UP);
 }
 Off(OUT_B);
 // ÍÞ¤¨³°¤¹
 RotateMotor(OUT_C,-20,120);
 Wait(CT);
 Off(OUT_C);
 // ·ú¤Æ½ª¤ï¤ê¤Î¹ç¿Þ
 SendResponseNumber(MAILBOX4,1);

 // ¼ýǼ¹ç¿Þ¤òÂÔ¤Ä
 int ord=0;
 do {
    ReceiveRemoteNumber(MAILBOX5,true,ord);
 } while (!ord);

 // ¼ýǼ
 ResetTachoCount(OUT_B);
 while (MotorTachoCount(OUT_B)<30) {
       OnFwdReg(OUT_B,1,OUT_REGMODE_SPEED);
       PlaySound(SOUND_DOWN);
 }
 Off(OUT_B);
 Wait(DT);
}

// ¥¢¡¼¥àÉômain
task main()
{
 int msg;
 while (true) {
       msg=0;
       // ½³¤ê¾å¤²¤ò»ØÎá¤ò³Îǧ
       ReceiveRemoteNumber(MAILBOX1,true,msg);
       if (msg) {
          msg=0;
          hit();
       }
       // ´Ì·ú¤Æ¤Î»ØÎá¤ò³Îǧ
       ReceiveRemoteNumber(MAILBOX3,true,msg);
       if (msg) {
          msg=0;
          build();
       }
 }
}

´Ì¤ò½¸¤á¤ëÃʳ¬¤Ç¤Ï¡¢¥Þ¥¹¥¿¡¼¤ÎÊý¤¬´Ì¤ò¸«¤Ä¤±¤ë¤È¡¢´Ì¤ò¥ì¡¼¥ë¤Ë½³¤ê¤¤¤ì¤ëhit´Ø¿ô¤òÆ°¤«¤¹¤è¤¦¤Ë»Ø¼¨¤¬Á÷¤é¤ì¤Æ¤­¤Þ¤¹¡£´Ø¿ôhit¤Ç¤Ï¥¢¡¼¥à¤Ç´Ì¤òÅݤ·¤¿¸å¤½¤Î¤Þ¤Þ¥ì¡¼¥ë¤Ë½³¤ê¤¤¤ì¤Þ¤¹¡£

robo2-4.jpg

´Ì¤ò·ú¤Æ¤ëÃʳ¬¤Ë¤Ê¤ë¤È¡¢¥Þ¥¹¥¿¡¼¤ÎÊý¤«¤é»Ø¼¨¤¬Á÷¤é¤ì¤Æ¤­¤Æ¡¢´Ì¤ò·ú¤Æ¤ëºî¶È¤ò¤¹¤ë´Ø¿ôbuild¤òÆ°¤«¤·¤Þ¤¹¡£
´Ø¿ôbuild¤Ç¤Ï¡¢·ú¤Æ¤ë¤È¤­¤Ë¥¿¥ï¡¼¤Î²¼¤ÎÊý¤ò»Ù¤¨¤ë¤¿¤á¤ÎÏÓ¤òÆ°¤«¤·¤Æ´Ì¤¬Åݤì¤Ê¤¤¤è¤¦¤Ë¤·¤¿¸å¡¢¥ì¡¼¥ë¼«ÂΤò·ú¤Æ¤Æ´Ì¤ò·ú¤Æ¤Þ¤¹¡£

robo2-6.jpg

´Ì¤ò·ú¤Æ½ª¤¨¤¿¤é¥Þ¥¹¥¿¡¼¤ÎÊý¤Ë»Ø¼¨¤òÁ÷¤ê¤Þ¤¹¡£¤³¤Î»Ø¼¨¤ò¼õ¤±¼è¤Ã¤¿¥Þ¥¹¥¿¡¼Â¦¤Ï¡¢¥ì¡¼¥ë¤ä¥¢¡¼¥à¤ò³ÊǼ¤·¤¿¤È¤­¤Ë·ú¤Æ¤¿´Ì¤Ë¤Ö¤Ä¤«¤é¤Ê¤¤ÄøÅ٤˲¼¤¬¤Ã¤¿¸å¡¢¥¹¥ì¡¼¥Ö¦¤Ë¥¢¡¼¥à¤Ê¤É¤Î³ÊǼ¤Î»Ù»ý¤òÁ÷¤Ã¤Æ¤­¤Þ¤¹¡£¤³¤Î»Ø¼¨¤ò¼õ¤±¤¿¥¹¥ì¡¼¥Ö¦¤Ï³ÊǼºî¶È¤ò¤·¤Þ¤¹¡£
³ÊǼºî¶È¤¬½ª¤ï¤ë¤È¡¢¥Þ¥¹¥¿¡¼Â¦¤Ë»Ø¼¨¤ò½Ð¤·¤Æ¡¢ºÆ¤Ó´Ì½¸¤á¤Îºî¶È¤Ê¤É¤ËÌá¤ê¤Þ¤¹¡£

¼ÂºÝ¤ËÆ°¤«¤·¤Æ¤ß¤¿...

¾å¤Ç¤Ï¤º¤¤¤Ö¤ó¥¹¥à¡¼¥º¤Ë´Û¤ò·ú¤Æ¤ëºî¶È¤Þ¤Ç¤¤¤±¤ë¤è¤¦¤Ê¤³¤È¤ò½ñ¤¤¤Æ¤Þ¤¹¤¬¡¢¼ÂºÝ¤ä¤Ã¤Æ¤ß¤ë¤È¤Þ¤Ã¤¿¤¯¤¦¤Þ¤¯¤¤¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£

´Ì¤ò½³¤ê¤¤¤ì¤Æ´Ì¤ò½¸¤á¤ëºî¶È¤ÏͽÁ۰ʾå¤Ë¤¦¤Þ¤¯¤¤¤­¤Þ¤·¤¿¡£¤¿¤À¤·¡¢ËÜÂΤ¬¤ä¤¿¤é¤ÈŤ¤¤Î¤Ç¡¢¥é¥¤¥ó¥È¥ì¡¼¥¹¤ÎºÇÃæ¤Ë¥«¡¼¥Ö¤ò¶Ê¤¬¤Ã¤¿¤ê¤·¤Æ¤¤¤ë¤È¡¢¤½¤ÎŤ¤ËÜÂΤǥ³¡¼¥¹¾å¤Î´Ì¤ò¤Ê¤®Åݤ·¤Æ¤·¤Þ¤¤´Ì¤¬¼è¤ì¤Ê¤¤¾õ¶·¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¡£

¤Þ¤¿¡¢ËÜÂΤ¬½Å¤¹¤®¤Æ¸åÎؤ¬³ê¤é¤«¤ËÆ°¤«¤º¤Ë¤½¤â¤½¤â¤¦¤Þ¤¯¿Ê¤ß¤Þ¤»¤ó¤Ç¤·¤¿¡£¤³¤Î¤»¤¤¤Ç¥é¥¤¥ó¥È¥ì¡¼¥¹¤¬ÉÔ°ÂÄê¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¡¢¥´¡¼¥ë¤Ë¤¿¤É¤êÃ失¤Þ¤»¤ó¤Ç¤·¤¿¡£

´Ì¤ò·ú¤Æ¤ëºî¶È¤Ë¤Ä¤¤¤Æ¤â¡¢´Ì¤òÅݤµ¤Ê¤¤¤è¤¦¤Ë¤æ¤Ã¤¯¤ê¤È¥ì¡¼¥ë¤ò·ú¤Æ¤ëͽÄê¤Ç¤·¤¿¤¬¡¢¤æ¤Ã¤¯¤ê¾å¤²¤ë¤¿¤á¤Ë¥â¡¼¥¿¡¼¤Î¥Ñ¥ï¡¼¤ò¤«¤Ê¤êÄã¤á¤Ë¤·¤Æ¥ì¡¼¥ë¤ò·ú¤Æ¤è¤¦¤È¤¹¤ë¤È¡¢¥ì¡¼¥ë¤È´Ì¤Î½Å¤µ¤Ç¤¦¤Þ¤¯¾å¤¬¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£¤À¤«¤é¤È¤¤¤Ã¤Æ¡¢¤¢¤Þ¤ê¥Ñ¥ï¡¼¤ò¾å¤²¤ë¤ÈÀª¤¤¤¬¤Ä¤­¤¹¤®¤Æ´Ì¤¬Åݤì¤Æ¤·¤Þ¤¦¿´ÇÛ¤¬¤¢¤Ã¤¿¤Î¤Ç¥Ñ¥ï¡¼¤ò¾å¤²¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£

È¿¾ÊÅÀ¡¦²þÁ±ÅÀ

¥í¥Ü¥Ã¥È¤Ë¤Ä¤¤¤Æ

¼ÂºÝ¤ËÆ°¤«¤·¤Æ¤ß¤ë¤ÈÁ´Á³¤¦¤Þ¤¯¤¤¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£
¤³¤ì¤ò²þÁ±¤¹¤ë¤Ë¤Ï¡¢¤Þ¤º¥í¥Ü¥Ã¥È¤ò¤â¤Ã¤È;͵¤Î¤¢¤ëÀ߷פˤ¹¤ë¤Ù¤­¤À¤È»×¤¤¤Þ¤·¤¿¡£
¤¿¤È¤¨¤Ð¡¢¸åÎؤò¤â¤Ã¤È¶¯²½¤·¤Æ¡¢¥é¥¤¥ó¥È¥ì¡¼¥¹¤Ë»Ù¾ã¤¬½Ð¤Ê¤¤¤è¤¦¤Ë½ÐÍè¤ì¤Ð¤è¤«¤Ã¤¿¤Ç¤¹¡£
¤Þ¤¿¡¢´Ì¤ò·ú¤Æ¤ë¤È¤­¤Ë¥ì¡¼¥ë¤ò¾å¤²¤ë¤¿¤áÆ°ÎϤȤ·¤Æ¥â¡¼¥¿¡¼¤ò»È¤Ã¤Æ¤¤¤Þ¤·¤¿¤¬¡¢¥ì¡¼¥ë¤È¥â¡¼¥¿¡¼¤Î´Ö¤Ë¤â¤Ã¤È¥®¥¢¤òÉÕ¤±¤Æ¥â¡¼¥¿¡¼¤ò¤¿¤¯¤µ¤ó²ó¤·¤Æ¤â¾¯¤·¤º¤Ä¤·¤«¥ì¡¼¥ë¤¬Æ°¤«¤Ê¤¤¤è¤¦¤Ë¤¹¤ì¤Ð¡¢´Ì¤¬Åݤ줿¤ê¡¢¥ì¡¼¥ë¤¬»ý¤Á¾å¤¬¤é¤Ê¤¤¤È¤¤¤Ã¤¿¿´ÇÛ¤¬²ò¾Ã¤Ç¤­¤¿¤È»×¤¤¤Þ¤¹¡£

¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤Æ

¥é¥¤¥ó¥È¥ì¡¼¥¹Éôʬ¤Ë¤Ä¤¤¤Æ¤Ï¡¢Á°²ó¤Î²ÝÂê¤Î»þ¤è¤ê¤â¤è¤ê°ÂÄꤷ¤¿»ÅÁȤߤˤ·¤¿¤Ä¤â¤ê¤Ç¤·¤¿¤¬¡¢Â礭¤¤Æ¹ÂΤΥí¥Ü¥Ã¥ÈÍѤËÄ´À°¤¬¤¦¤Þ¤¯¤¤¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£¤ä¤Ï¤êPIDÀ©¸æ¤Ï³Æ¼ï¥²¥¤¥ó¤ÎÃͤÎÎɤ¤Ä´À°ÊýË¡¤ò³ÎΩ¤·¤Ê¤¤¤ÈÆñ¤·¤«¤Ã¤¿¤Ç¤¹¡£

´Ì¤ò·ú¤Æ¤ëÉôʬ¤Ë¤Ä¤¤¤Æ¤â¡¢·ë¹½Â绨ÇĤÊÆ°ºî¤Ë¤Ê¤Ã¤Æ¤¤¤¿¤È»×¤¤¤Þ¤¹¡£´Ì¤ò½³¤ê¤¤¤ì¤ëÉôʬ¤Ï¥í¥Ü¥Ã¥È¤ÎÊý¤¬¤¦¤Þ¤¯ºî¤ì¤Æ¤¤¤¿¤Î¤Ç¤¦¤Þ¤¯¤¤¤­¤Þ¤·¤¿¤¬¡¢´Ì¤ò·ú¤Æ¤ëÉôʬ¤Ï¥×¥í¥°¥é¥à¤ÎÊý¤Ç¤â²þÁ±¤¹¤Ù¤­¤À¤È»×¤¤¤Þ¤·¤¿¡£¥ì¡¼¥ë¤ò¾å¤²¤ëºî¶È¤Ç¤Ï¡¢¥Ñ¥ï¡¼¤ò²¼¤²¤¹¤®¤Æ¤â¾å¤¬¤é¤Ê¤¤¤·¡¢¥Ñ¥ï¡¼¤ò¾å¤²¤¹¤®¤Æ¤â´Ì¤¬Åݤì¤Æ¤·¤Þ¤¦¤Î¤Ç¡¢¥×¥í¥°¥é¥à¤ÎÊý¤Ç¤âŬÀڤʥѥĴÀ°¤ò¤¹¤ë¤Ù¤­¤À¤È»×¤¤¤Þ¤·¤¿¡£


źÉÕ¥Õ¥¡¥¤¥ë: filemap2.png 525·ï [¾ÜºÙ] filerobo2-6.jpg 443·ï [¾ÜºÙ] filerobo2-5.jpg 519·ï [¾ÜºÙ] filerobo2-8.jpg 577·ï [¾ÜºÙ] filerobo2-7.jpg 538·ï [¾ÜºÙ] filerobo2-4.jpg 486·ï [¾ÜºÙ] filerobo2-3.jpg 524·ï [¾ÜºÙ] filerobo2-2.jpg 544·ï [¾ÜºÙ] filerobo2-1.jpg 631·ï [¾ÜºÙ] filerobo2.jpg 484·ï [¾ÜºÙ] filecross.png 548·ï [¾ÜºÙ] filerobocon2013b.png 466·ï [¾ÜºÙ]

¥È¥Ã¥×   ÊÔ½¸ Åà·ë º¹Ê¬ ÍúÎò źÉÕ Ê£À½ ̾Á°Êѹ¹ ¥ê¥í¡¼¥É   ¿·µ¬ °ìÍ÷ ¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS
Last-modified: 2014-02-05 (¿å) 23:00:51