Understanding ros_control packages
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 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:
Initializating the controller
The first function executing when a controller is loaded is init()
. The init()
function will not start...