This procedure describes how to correct small errors in the calibration of the iCub torso. It applies mainly to the torso joints (joint0...joint2). Note: this procedure has to be done before the calibration of the arms.
- Step 1: put the iCub in a suitable posture and let's call this configuration theta_desired in accordance to the convention you decided to use. As an example, if you decide to use the convention described in ICubForwardKinematics, you might decide to use the posture in the pictures which corresponds to theta_desired = [0 0 0] [deg] (remember we are just considering the three dof of the torso).
- Step 2: read the robot posture as reported by the iCubInterface (e.g. using the robotMotorGui). Let's call this configuration theta.
- Step 3: for each joint compute the difference between theta and theta_desired. Let's call this difference Delta = theta - theta_desired.
- Step 4: consider Delta for joint i, called Delta(i). Add Delta(i) to the suitable Zeros (see also iCubInterface config file) entry in the iCubInterface configuration file. As an example if you want to change the left arm calibration (when using the icubSafe.ini initialization file), edit the icub_head_torso_safe.ini file as follows:
BEFORE: Zeros xxx(0) xxx(1) xxx(2) xxx(3) xxx(4) xxx(5) xxx(6) xxx(7) xxx(8) xxx(9)
AFTER: Zeros xxx(0) ... xxx(5) xxx(6)+Delta(0) xxx(7)+Delta(1) xxx(8)+Delta(2) xxx(9)
NOTE: the torso joint corresponds to joint6, joint7 and joint8 in the icub_head_torso_safe.ini calibration file. IMPORTANT: You can also use this excel worksheet fine_calibration.xls to quickly compute the needed zero parameters, given the RobotMotorGui encoder readings.