This website uses browsing/session and functional cookies to ensure you get the best experience. Learn More

Calibration types available on iCub and R1 robots

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

The aims of this document is to give to expert user some technical information about all calibration types used on R1 and iCub robots based on Ethernet. The type of calibration depends on the encoders and on mechanics of joints.

Currently exist 12 types of calibrations that will be explain in detail in following sections. The calibration procedure is performed by firmware each time the robots starts up and it used following calibration parameters written in calibration files:

  • Calibration type: it is the type of calibration. Its values should be included in [1,12]. Based on its value the meaning of the parameters calibration1, calibration2, calibration3, calibration4, calibration5 changes. Usually they are expressed in machine units.
  • calibrationZero: for historical reasons, is the value in degree at 0.0 position. Now for several calibrations it is not necessary, so its value is 0.0.
  • calibrationDelta: this parameter can be changed by user to tuning the calibration, in order to set the zero of joint in the correct position (fine calibration).

It is important to notice that the firmware haven’t both calibrationZero and calibrationDelta parameters, but it has only the sum of two: calibrationZero + calibrationDelta. For this reason, if the calibration needs a particular value of calibrationZero, please insert that value, because it is mandatory.

General procedure for retrieving calibration parameters

1) First of all you need to be sure that boards have been reset after last calibration. If not please swich off and swich on boards.

2) In the general.xml file set both “useRawEncoderValue” and “skipCalibration” parameters to true

3) Press the fault. So you are sure the procedure is safe

4) Launch yarprobotinterface. You will see that yarprobotInterface tell you to press fault button and waits until the user press enter.

5) Start the calibration procedure depending on calibration type.


General rules for each calibration type

1) At the end of calibration, the joint has to be inside of user limits, if not the controller sets the joint in hardware fault.

2) If during calibration something goes wrong, then the controller sets the joint in hardware fault or leaves the joint in “not configured” state.


The available calibrations in details

NOTES: this page is under construction and some calibration types are not described yet. We will integrate missing information asap. Sorry for the inconvenience.

Calibration 5

This calibration is used on joints with incremental encoder that needs to reach a hardware stop to take the reference position.

  • Calibration type: 5
  • calibration1: the pwm used to reach the hardstop
  • calibration2 : raw position at hardstop
  • calibration3: not used
  • calibration4: not used
  • calibration5: not used
  • calibrationZero: 0.0 (only correct value)
  • calibrationDelta: defined by user expressed in degree.

Note that the hardstop could be out of range of user limits, but it needs to be inside hardware limits; so the hardstop could be a hardware limit and the joint is calibrated after reaching it, but the controller verifies that the first received setpoint is inside user limits, else limits it to the nearest user limit.


Calibration 6

This calibration is used for joint with MAIS encoder. On iCub robots, distal and proximal joints use this encoder.

  • Calibration type: 6
  • calibration1: not used
  • calibration2 : velocity expressed in iCubDegree/s
  • calibration3: 1 if distal joint, -1 if proximal joint. (Any other value is not accepted)
  • calibration4: mais raw value read with open hand
  • calibration5: mais raw value read with closed hand
  • calibrationZero: 0.0 (only value corrected)
  • calibrationDelta: defined by user expressed in degree.

Calibration 6 uses mais raw values to calculate the joint encoder factor and the offset of 0.0 position. Moreover, it calibrates the motor encoder that is an incremental and for this joints needs to move: the target position depends on value of calibration3 parameter: if it is -1 then the joint move to the position written in calibration4 else to calibration5. The movement is performed using the velocity specified in calibration2 parameter. Only if the joint can reach the target position then the calibration ends successfully.


Calibration 7

This calibration is used for joint with absolute analog sensor. On iCub robot, this encoder is mounted on abduction fingers and on abduction thumb joints.

  • Calibration type: 7
  • calibration1: not used
  • calibration2: not used
  • calibration3: not used
  • calibration4: sensor raw value read with open hand
  • calibration5: sensor raw value read with closed hand
  • calibrationZero: 0.0 (only correct value)
  • calibrationDelta: defined by user expressed in degree.

In order to guarantee the maximum possible resolution and to provide the simples calibration procedure to the user, this calibration calculates the joint encoder factors and the offset of 0.0 position, using the raw values.


Calibration 12

This calibration is used for joint with absolute encoder, it is the newest version of calibration 3 and it simplifies the calibration procedure for the user; in fact the user needs only to write in calibration1 parameter the raw value read when jont is in 0.0 position and the firmware calculates the correct offset.

  • Calibration type: 12
  • calibration1: raw position at the zero position defined by user.
  • calibration2 : not used
  • calibration3: not used
  • calibration4: not used
  • calibration5: not used
  • calibrationZero: 0.0 (only correct value)
  • calibrationDelta: defined by user expressed in degree.

Legend

  • iCubDegree: the firmware uses iCubDegree instead of degree in order to use more resolution.

1 Degree = 182.044 iCubDegree, where 182.044 is 65535/360; The value 182.044 is contained in the parameter “Encoder” of mechanicals configuration files of each robot.

  • Encoder conversion factor: is the factor used by firmware to convert the value read from encoder to iCubDegree.