Arm Calibration

From sdk-wiki
Revision as of 15:02, 29 July 2014 by Sdkuser (talk | contribs) (Protected "Arm Calibration": Setting Permissions for (almost all) Pages - editable and moveable by all logged in users ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite)))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Robot Arm Calibration

We have two arm calibration routines that we recommend you run regularly (roughly once a month) to keep your robot's arms responding reliably.

These are calibrate_arm.py and tare.py, and both are located in the baxter_tools repo.

Before running either, you must remove any grippers from the arms, level the robot using the feet on its base, and make sure that there are no obstructions within reach of its arms, as they will move through the most of their accessible range throughout the procedure, and collisions will result in a failed calibration.

Note: The recommended order of operations in calibration is:

  1. Run the calibrate_arm routine on both arms
  2. Reboot
  3. Run the tare.py routine on both arms
  4. Reboot

On the final boot, the robot's arms will be fully calibrated.

Note: The Demo Mode UI will run through this entire routine for you by selecting Tare/Calibrate from the Tools menu.

Calibrate - calibrate_arm.py

First is our calibrate_arms.py script.

To run this, simply type in a properly initialized Baxter shell:

$: rosrun baxter_tools calibrate_arm.py -l left

or

$: rosrun baxter_tools calibrate_arm.py -l right
usage: calibrate_arm.py [-h] -l {left,right}

optional arguments:
  -h, --help            show this help message and exit

required arguments:
  -l {left,right}, --limb {left,right}
                        Calibrate the specified arm

What is this doing?

This is where we calibrate Baxter's joint torque sensors. Because we know the mass and center off mass for each rigid segment of Baxter's arm, we know what the torque due to gravity should be on each joint in any given arm pose. By sampling the torque sensor readings at a set of known poses, we can find the correct calibration values for the torque sensors. This calibration permits an arbitrary offset in the torque reading for s1, because of the additional torque due to the support spring on that joint. We also avoid calibration poses susceptible to the "crosstalk" phenomenon described in the Spring calibration secion.

Tare - tare.py

Next, after running calibrate_arm on both arms and rebooting, you should run the tare script.

To run this, simply type in a properly initialized Baxter shell:

$: rosrun baxter_tools tare.py -l left

or

$: rosrun baxter_tools tare.py -l right
usage: tare.py [-h] -l {left,right}

optional arguments:
  -h, --help            show this help message and exit

required arguments:
  -l {left,right}, --limb {left,right}
                        Tare the specified limb

What is this doing?

  • "Crosstalk" Calibration
    Because of the way Baxter's large bend joints are constructed, their torque readings can be distorted by the presence off-axis torques about a certain axis. We refer to this as "crosstalk". In the case of the s1 joint, this effect is large enough that it is beneficial to actively compensate for it. We do this by modelling the torque reading distortion as a function of off-axis torque, and then subtracting the predicted "crosstalk" from s1's torque reading during operation. We estimate the s1 off-axis torque to be equal the e0 torque. The first part of the "tare" calibration is collection of data to calibrate for s1 "crosstalk". That calibration is necessary for the next step (spring calibration).
  • Spring Calibration
    Because Baxter's s1 joint must support relatively high gravitational loads, a pair of springs provides an anti-gravity torque to assist the motor. Because of the way these springs are manufactured, the torque supplied is a function not only of the s1 joint position but also of the recent history of s1 joint position, and that function can vary from spring to spring. In order to provide good position and torque control as well as good extrinsic torque sensing, the torque contribution from the s1 springs must be estimated. Because the springs vary, a calibration process is used to fit the spring's torque contribution as a function of the joint's recent position history. The spring calibration movements are chosen so that only the joint under test (s1) moves and so that no part of the arm will go below a nominal "table height".
  • Torque Sensor Tare
    The joint torque sensors can change over time so that torque readings are uniformly offset from the correct values. To address this, at the end of the "tare" process, the arm is moved to a pose with known torques due to gravity and torque readings are taken. The torque sensor calibrations are adjusted to compensate for any offset. The s1 joint is excluded from this correction.

Videos

Part 1: About Calibration and Tare

Part 2: How to Run Arm Calibration