Developing a low-level controller and a high-level ROS Control hardware interface for a differential drive robot
In the following two sections, the base controller, mentioned in the Navigation Stack, will be developed. For Remo, this platform-specific node is split into two software components.
The first component is the high-level diffbot::DiffBotHWInterface
that inherits from hardware_interface::RobotHW
, acting as an interface between robot hardware and the packages of ROS Control that communicate with the Navigation Stack and provide diff_drive_controller
(http://wiki.ros.org/diff_drive_controller) – one of many available controllers from ROS Control. With the gazebo_ros_control
plugin, the same controller including its configuration can be used in the simulation and the real robot. An overview of ROS Control in a simulation and the real world is given in the following figure (http://gazebosim.org/tutorials/?tut=ros_control):