(as this is rather ROS-I specific I opted to post this here instead of over in the #ros-projects category)
Various robot drivers in ROS-Industrial periodically publish RobotStatus messages that encode controller/robot state (ie: e-stop active, is the robot in motion, etc). For drivers that build on-top of
ros_control, publishing these messages is typically done by the
hardware_interface part of the stack, but that always seemed like a work-around to me.
As I needed it for a
ros_control-based driver recently, I decided to write a
ros_control robot status controller that can be configured similar to the
joint_state_controller and takes on the responsibility of publishing
RobotStatus messages, so
hardware_interface implementations don’t need to do that any more. This separates responsibilities and reduces complexity of
The controller may be found here: gavanderhoorn/industrial_robot_status_controller and the readme explains how to integrate it into a
hardware_interface for a specific robot and how to add it to a configuration. I’m hosting it on my personal account for now, but that may change in the future.
Note: in case you’re wondering: the
industrial_robot_status_controller does not actually control anything. The name follows the (unfortunate) convention in
ros_control to call everything that derives from
controller_interface::Controller a (XYZ)Controller (such as the joint_state_controller which publishes