Skip to content

Calibration type 10 details - AMO Encoder Joint Calibration

This section illustrates the details of the calibration procedure used for the iCub 3/ergoCub joints that mount an AMO encoder at the slow shaft. As already detailed in the calibration-type-10-procedure joints provided with the AMO encoder are currently calibrated so that it can be handled as an incremental encoder coupled with a quadrature encoder placed at the motor.

Calibration workflow

Complete pipeline for the calibration type 10 using AMO encoder at the joint and quadrature encoder at the motor.

As you can see in the above-reported state machine, after the calibration command is received by the EMS, a timer of 30 seconds gets triggered; afterward, we wait until the motor encoder calibration ends; finally, the procedure of the calibration type 10 commences.

The procedure basically consists in moving the slow shaft towards one of the hardware limits as defined in the position set within the calibration parameter calibrationZero. The value of the PWM used is in turn defined through the parameter calibration1. The joint moves until the limit is reached within a time window and within a predefined maximum length, whose values are coded in the firmware.

Finally, if the hard-stop limit position is found before the CALIBRATION TIMEOUT expires, the zero of the AMO encoder is updated with the found offset and the whole calibration completes correctly; otherwise, the joint is moved to the NOT CONFIGURED state, the PWM is set to zero and the motor switched to IDLE.

The FW verifies if the joint has reached the hard position by checking that the encoder position does not change for 1 second, meaning that the relative increase of joint position is smaller than 6.5 deg (1200 iCubDegrees) within 1 second. The encoder position considered for the check is processed to filter out the spikes.