Icub.ini description

This is a description of all the data inside the ini file that can be used to set up the robot.

[CAN] CanAddresses 5 6 8 9 CanDeviceNum 3 CanMyAddress 0 CanPollingInterval 2 CanTimeout 20

In CanAddresses are written all the board id are connected (every boards has 2 axis). The CanDeviceNum is not used anymore CanMyAddress is the address of the pc. CanPollingInterval is the time between 2 broadcast messages CanTimeout is the timeout waiting for a message broadcast_pos 1 broadcast_pid 1 broadcast_fault 1 broadcast_current 1 broadcast_overflow 1 broadcast_canprint 1 broadcast_vel_acc 1

These are used to enable the broadcast of position, pid value ….

[GENERAL] Joints 8 MaxDAC 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0

Number of joints MAxDAC not used anymore

AxisMap 2 3 0 1 6 7 4 5

The AxisMap gives the possibility to change the sequence of the joint that normally it respects the sequence of the CanAddresses. If you want to change this sequence you can write your own sequence in this field. For example in this case the sequence was 5 6 8 9 in CanAddresses and then the axis sequence is: #Axis Board 0 5ch0 1 5ch1 2 6ch0 3 6ch1 And so on.

Whit the AxisMap 2 3 0 1 …. It becames

#Axis Board

0 6ch0 1 6ch1 2 5ch0 3 5ch1

Encoder 11.375 11.375 11.375 11.375 -11.375 -11.375 -11.375 -11.375 Zeros 182 -20.68 230.92 107.36 -183 -312.77 -162.04 -302.84 Verbose 0

Encoder is the coversion factor between the value readed from the encoder and the joint angle in degree. It depends on the encoder and it is expressed in tic/degree. You have to divide by it the value read from the board to get degrees

Zeros is the value that you assign to the calibration position. It a value that you subtract to the value read from the board and already divided by Encoder factor. If you are using incremental encoder the Zeros represent the angle value changed in sign in the hardware limit you have chosen to calibrate the joint.

Verbose …. I have never used it

[LIMITS] // 0 1 2 3 4 5 6 7 Max 24 180 -10 100 24 180 -10 100 Min -24 85 -150 -20 -24 85 -150 -20

Joints limits, expressed in degree and starting from the value after the subtraction of the Zeros

Currents 8417 8417 8417 8417 8417 8417 8417 8417

It is the conversion factor for passing from A/D converter value to mA. It depends on the board.

[PIDS] Pid0 20 20 0 60 60 4 0 //3B6M0 Pid1 -20 -20 0 60 60 4 0 //3B6M1 Pid2 20 20 0 60 60 4 0 //3B5M0 Pid3 -20 -20 0 60 60 4 0 //3B5M1 Pid4 20 20 0 60 60 4 0 //3B9M0 Pid5 -20 -20 0 60 60 4 0 //3B9M1 Pid6 20 20 0 60 60 4 0 //3B8M0 Pid7 -20 -20 0 60 60 4 0 //3B8M1

These values represents the P, D , I , MaxPID, MaxI, scale factor and offset of the controller.

[CALIBRATION] //Joint 0 1 2 3 4 5 6 7 CalibrationType 3 3 3 3 3 3 3 3 Calibration1 2070 800 1600 2250 2080 2540 2870 2426 Calibration2 4 4 4 4 4 4 4 4 Calibration3 2000 0 0 2500 0 1500 0 500 PositionZero 0 90 -90 90 0 90 -90 90 VelocityZero 4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0

These values are the calibration options described in the RC_DIST_100_D_12_01_canbus_protocol-1.doc in the repository

PositionZero is the position you want to reach after the calibration procedure. If you are using absolute encoder usually the PositionZero is equal to the Calibration1/Encoder value minus the Zeros. VelocityZero is the velocity of the movement in the PositionZero

[HOME] //Joint 0 1 2 3 4 5 6 7 PositionHome 0 90 -90 90 0 90 -90 90 VelocityHome 10.0 10.0 10.0 10.0 10.0 10.0 10.0 10.0

The homing position

[ENDINI] // do not remove this line!