From Wiki for iCub and Friends
Jump to: navigation, search

This procedure describes how to correct small errors in the calibration of the iCub head. It applies mainly to the head joints (joint0...joint5). Note: this procedure has to be done after the calibration of the torso (the torso should be in 0,0,0).

  1. 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 0 0] [deg] (remember we are just considering the five dof of the head).

Head1.JPG Head2.jpg Head3.jpg

  1. Step 2: read the robot posture as reported by the iCubInterface (e.g. using the robotMotorGui). Let's call this configuration theta.
  2. Step 3: for each joint compute the difference between theta and theta_desired. Let's call this difference Delta = theta - theta_desired.
  3. Step 4: consider Delta for joint i, called Delta(i). Add Delta(i) to the suitable Zeros entry (see also iCubInterface config file) in the iCubInterface configuration file.

As an example if you want to change the torso calibration (when using the icub.ini initialization file), edit the icub_head_torso_safe.ini file as follows:

BEFORE: Zeros  xxx yyy .... zzz 
AFTER:  Zeros  xxx+Delta(0) yyy+Delta(1)  ... zzz+Delta(5)

IMPORTANT: You can also use this excel worksheet fine_calibration.xls to quickly compute the needed zero parameters, given the RobotMotorGui encoder readings.