The ros_control
stack contains packages for writing ROS low-level controllers. The first package that we are going to discuss is the controller interface package.
The basic ROS low-level controller that we want to implement must inherit a base class called controller_interface::Controller
from this package. This represents a base class containing four fundamental functions: init()
, start()
, update()
, and stop()
. The basic structure of the Controller
class is given as follows:
namespace controller_interface { class Controller { public: virtual bool init(hardware_interface *robotHW, ros::NodeHandle &nh); virtual void starting(); virtual void update(); virtual void stopping(); }; }
The workflow of the controller class is shown as follows: