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.
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.
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.