ROS has been one of the greatest advances of the robotics industry in the past years. Its development began as a way to help the development of robot applications, easing the communication between sensors and algorithms, following the paradigm of “program once, test everywhere”.
This has been the pattern of the last years, and ROS has performed extremely good in that way.
For example, you could code an algorithm to take an image as its input, without caring about which model, resolution or connection type, as long as it was supported by ROS and adopted its API.
But this focusing on the high-level layer of application development led to an unthinkable oblivion: How was the access to actuators managed? How were the references of the actuators calculated?
As in the case of high level applications, where the end user shouldn’t care about the source and destination of the data used and produced by him, in the case of robot control the user shouldn’t care about which type of actuators are used by a robot. But today, this is not the situation anymore thanks to ROS Control.
Why ROS Control?
ROS Control is the API that has been developed by the ROS community to allow simple access to different actuators. Using this standard API, the controller code is separated from the actuator code. For example, one could write a new controller implementing a fancy control strategy and test it on different hardware without changing a single line of code. Or one could test different control algorithm with same hardware to find the most suitable for its needs.
ROS Control has different features that make it really appealing:
- Real time capabilities, that allows to run control loops at hundreds of hertz.
- A simple manager interface, that gives access to the actuators and handles resource conflicts.
- A safety interface, that knows the hardware limitation of the joints and ensures that the commands sent to the actuators are between their limits.
- A set off-the-shelf controllers that are ready to be used.
Have you ever thought about the mapping between joint and actuator space? ROS Control already did it.
Normally this mapping is one-to-one, i.e. one actuator controls one joint, and their movement is related by a gearbox, so you don’t need to do messy calculations. However, in case of more complex scenarios, e.g. when a differential transmission is used, ROS Control gives us an elegant solution through its transmission interface to cope with this problem.
This solution is used by the differential (RB-1 Base and RB-2 Base) and skid-steering (Summit-XL) robots from Robotnik, robotics company. These platforms are very similar, but they have different number of wheels: two for a differential configuration and four in the case of skid-steering. Thanks to the transmissions interface in ROS Control, they share the same control algorithm with no additional software effort.
One more step
What about mixing different robot components into one? This is a trend nowadays, where robot components are autonomous and usable on their own but can also be assembled into a single functional system. In those cases, ROS provides high level coordination between the components, but with ROS Control this coordination is also achieved at the low level, extending the control possibilities to far and beyond.
For example, with a more coupled control between a robotic arm and the tool attached to it. Or, as is the case of RB-Kairos, smooth and coordinated movements between the robotic arm and the mobile base are easy to program, leading to high complex operations and maneuvers that include logistic operations, picking items from narrow spaces and interactions with humans in a safe and confident manner.
Finally, the separation between controllers and actuators allows an interesting option: simulation. Gazebo, the standard robot simulator used by ROS, implements simulated ROS Control actuators, and one can write and test a controller even before it has the real robot available. This feature of ROS Control is used at Robotnik to test new kinematic configurations for its most edgy robots, allowing for quick prototype delivery.
This is the case of RB-Vulcano, a platform with 4 steerable wheels in a swerve-configuration thanks to them is able to move in an omnidirectional way.
However, they have to be coordinated in different modes, such as parking or navigation, to effectively follow the reference of movement that is sent to the robot. Switching between modes must be a compromise between the smoothness of the movement and the precision required for each operation. Thanks to ROS Control, Robotnik was able to replicate the full platform in a simulated environment to find the best strategies for motor control.
ROS Control is one of the key parts for the domination of the robotic world by ROS. As a world leading company in the ROS community, Robotnik makes an extensive use of ROS Control to give its customers the best products available on the market.
If you are interested in collaborative mobile robotics, don’t forget to subscribe to our blog!