From Wiki for iCub and Friends
Revision as of 18:58, 20 February 2014 by Randaz (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This procedure describes how to correct small errors in the calibration of the iCub. It applies mainly to the shoulder and elbow joints (joint0...joint3) but can be applied also for the other joints of the arm.

Note: this procedure has to be done after the calibration of the torso.

  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 = [-90 15 15 90] [deg] (remember we are just considering the three dof of the shoulder and the elbow, an example is given in the pictures below).

FineCalibFront.jpg FineCalibSide.jpg FineCalibTop.jpg

  1. Read the robot posture as reported by the iCubInterface (e.g. using the robotMotorGui). Let's call this configuration theta.
  2. For each joint compute the difference between theta and theta_desired. Let's call this difference Delta = Theta - Theta_Desired .
  3. 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 left arm calibration (when using the icubSafe.ini initialization file), edit the icub_left_arm_safe.ini file as follows:
BEFORE: Zeros  xxx yyy zzz ....
AFTER:  Zeros  xxx+Delta(0) yyy+Delta(1) zzz+Delta(2) ...

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