Hardware parameters for AIBO

 

I found different hardware parameters for different programs. The following is a example:

 

static const word   TILT1_PGAIN = 0x000a;

    static const word   TILT1_IGAIN = 0x0004;

    static const word   TILT1_DGAIN = 0x0002;

 

    static const word   PAN_PGAIN   = 0x0008;

    static const word   PAN_IGAIN   = 0x0002;

    static const word   PAN_DGAIN   = 0x0004;

 

    static const word   TILT2_PGAIN = 0x000a;

    static const word   TILT2_IGAIN = 0x0008;

    static const word   TILT2_DGAIN = 0x000c;

   

    static const word   J1_PGAIN    = 0x0010;

    static const word   J1_IGAIN    = 0x0004;

    static const word   J1_DGAIN    = 0x0001;

 

    static const word   J2_PGAIN    = 0x000a;

    static const word   J2_IGAIN    = 0x0004;

    static const word   J2_DGAIN    = 0x0001;

 

    static const word   J3_PGAIN    = 0x0010;

    static const word   J3_IGAIN    = 0x0004;

    static const word   J3_DGAIN    = 0x0001;

 

    static const word   TAIL_PGAIN  = 0x000a;

    static const word   TAIL_IGAIN  = 0x0004;

    static const word   TAIL_DGAIN  = 0x0004;

 

    static const word   PSHIFT      = 0x000e;

    static const word   ISHIFT      = 0x0002;

    static const word   DSHIFT      = 0x000f;

 

The P, I, D gains and shifts are hardware parameters for servo control. Failure to assign right values will damage the robot.

 

  Defining the joint angle

 

 

const double SLEEPING_ANGLE[] = {

    59,   // RFLEG J1

    0,    // RFLEG J2

    30,   // RFLEG J3

 

    59,   // LFLEG J1

    0,    // LFLEG J2

    30,   // LFLEG J3

 

    -119, // RRLEG J1

    4,    // RRLEG J2

    122,  // RRLEG J3

 

    -119, // LRLEG J1

    4,    // LRLEG J2

    122   // LRLEG J3

};

 

const double BROADBASE_ANGLE[] = {

    120,  // RFLEG J1

    90,   // RFLEG J2

    30,   // RFLEG J3

 

    120,  // LFLEG J1

    90,   // LFLEG J2

    30,   // LFLEG J3

   

    -120, // RRLEG J1

    70,   // RRLEG J2

    30,   // RRLEG J3

 

    -120, // LRLEG J1

    70,   // LRLEG J2

    30    // LRLEG J3

};

 

 

We need to specify the angle value for each joints. To measure and acquire these values is not easy.

 

    Debugging - CPU exception

 

mCOOP exception

[exception info]

time stamp: 0x000000004daf5139

status:$12: 0x0000ff13, cause:$13: 0x00000010

badvaddr: $8: 0x73692067, epc:$14: 0x73692067

[object info]

context: 0x80215240, state: 0x00000001

last context: 0x00000000,last thread: 0x00000000

[initial value info]

..

..

[object list]

Name ContextID ThreadID ExecSpcID OID MetaSpace

-------------------------------------------------------------------------------

systemCore 0x80202c20 0x80202dc0 0x80202d80 ---------- mCore

systemCore(1) 0x80203a20 0x80203b80 0x80202d80 ---------- mCore

..

..

ovirtualRobot 0x80210240 0x8020d7a0 0x80208880 0x80000036 mCOOP

odesignedRobot 0x80211620 0x8020d260 0x80211040 0x80000037 mCOOP

osystemLogger 0x802114c0 0x8020d200 0x80211000 0x80000038 mCOOP

ovirtualRobotComm 0x80211360 0x80214980 0x80210fc0 0x80000039 mCOOP

ovirtualRobotAudioComm 0x80211200 0x80214920 0x80210f80 0x8000003a mCOOP

emergencyMonitor 0x80215660 0x80214860 0x80210f40 0x8000003b mCOOP

crash 0x80215240 0x80214740 0x80210f00 0x8000003c mCOOP

[stack info]

 

  In order to debug, I must be able to read exception

code from the exception command output. The CPU used in AIBO is a MIPS processor. Understanding the MIPS architecture is required for investigating the cause of CPU exceptions.