Skip to main content



Since the zero point of some motors will change after power off, rm_calibration_controller will move at a certain speed after it is started until motors reach the mechanical limit, and motors position will be reset to zero.

Keywords: calibration, ROS, position.


The source code is released under a BSD 3-Clause license.

Author: DynamicX
Affiliation: DynamicX
Maintainer: DynamicX

The package has been tested under ROS Indigo, Melodic and Noetic on respectively Ubuntu 18.04 and 20.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

Hardware interface type

  • EffortJointInterface Used to send effort command to target joint to make it reach the calibration speed.
  • ActuatorExtraInterface Used to obtain the information of the target actuators offset, current position, the state of the whether it is stopped and the state of whether it is calibrated.


Installation from Packages

To install all packages from the this repository as Debian packages use

sudo apt-get install ros-noetic-calibration-controllers

Or better, use rosdep:

sudo rosdep install --from-paths src

Building from Source


  • roscpp
  • roslint
  • rm_msgs
  • rm_common
  • pluginlib
  • hardware_interface
  • controller_interface
  • realtime_tools
  • effort_controllers
  • control_msgs


To build from source, clone the latest version from this repository into your catkin workspace and compile the package using

cd catkin_workspace/src
git clone
cd ../
rosdep install --from-paths . --ignore-src




  • search_velocity (double)

    The joint angular velocity of calibrating.

  • threshold (double)

    This is angular velocity threshold. When the real time angular velocity of target motor lower than threshold, and last for a while, it can switch CALIBRATED from MOVING.

Bugs & Feature Requests

Please report bugs and request features using the Issue Tracker.