This package can calibrate through least-squares the following parameters related to a wrist-mounted force-torque sensor:

  • Bias of the F/T sensor
  • Mass of the gripper
  • Location of the center of mass of the attached gripper

Running this software assumes that you have an accelerometer/imu whose reference frame is already calibrated with respect to some reference frame on the robot manipulator. It also assumes that you have a manipulator previously configured to be controlled through MoveIt!.

The software calibrates the F/T sensor by moving the manipulator into a number of different poses and using the resulting F/T sensor and accelerometer signals for computing a least-squares estimate of the parameters. Calibration can be done by either manually specifying explicitly the manipulator poses in the parameter server (parameters pose0, pose1, pose2, ... poseN) or by executing N random poses.



The ft_calib_node moves the robot arm into different positions and collects (raw) F/T sensor readings and accelerometer readings to calibrate the force-torque sensor.

Subscribed Topics

~/ft_raw (geometry_msgs/WrenchStamped)
  • The raw (uncalibrated) F/T sensor readings.
~/imu (sensor_msgs/Imu)
  • Measurements from an accelerometer already calibrated to the robot's frame.


~loop_rate (double, default: 650.0)
  • frequency (in Hz) of the ft_calib_node main loop (should be set equal to the publishing frequency of the force-torque sensor).
~wait_time (double, default: 4.0)
  • waiting time (in sec) between the moment the manipulator reaches each pose and the calibration node starts taking force-torque measurements.
~moveit_group_name (string)
  • moveit group name of the robot arm to which the force-torque sensor is attached to.
~calib_file_name (string, default: 'ft_calib_data.yaml')
  • name of the output calibration file.
~calib_file_dir (string, default: '~/.ros/ft_calib')
  • directory for saving the output calibration file.
~meas_file_name (string, default: 'ft_calib_meas.txt')
  • name of the file to store the measurements used for calibration.
~meas_file_dir (string, default: '~/.ros/ft_calib')
  • name of the directory to store the measurements used for calibration.
~random_poses (bool, default: false)
  • set to true to move the arm to random poses for calibration. Setting to false requires manually specifying the manipulator's calibration poses.
~number_random_poses (int, default: 30)
  • specifies the number of random poses to execute for calibration.
~poses_frame_id (string)
  • specifies the frame ID in which the poses are expressed. Only used if the ~random_poses parameter is set to false.
~poseN (double array)
  • 6x1 array of doubles which specifies the pose of the gripper with respect to the poses_frame_id frame ID. The representation is in [x y z r p y] (x,y,z translation and roll/pitch/yaw rotation). You can specify pose0, pose1, pose2, ... poseN parameters.

Running the calibration node

Make sure that the robot is still and other objects don't obstruct the arms while they move into the calibration poses.

You can look at the configuration/launch files in the config and launch folders for examples on how to set the parameters and launch the software for your robot.

The calibration software will produce a yaml calibration file that can later be used for gravity compensation. By default the file will be written in the ~/.ros/ft_calib/ directory.

For more detailed instructions please visit the force_torque_tools tutorials page.

Example calibration file

An example calibration file output from this calibration node can be found under config/ft_calib_data_example.yaml in the force_torque_sensor_calib package.


Please visit the tutorials page.

Bug Reports & Feature Requests

We appreciate the time and effort spent submitting bug reports and feature requests.

Please submit your tickets through github (requires github account) or by emailing the maintainers.

Wiki: force_torque_sensor_calib (last edited 2014-07-31 11:57:31 by FranciscoVina)