Description
The ros2_control framework relies on simple command and state interfaces in the form of double values to exchange data between hardware components and controllers. It is desired however to provide good C++ data structures both on the hardware component and the controller side which improves code readability and maintainability.
Earlier in the project, the concept of semantic components were introduced which essentially provides a grouping for these values and a semantic-specific API to use them. For instance, an IMU sensor will typically report 9 values, 3 values for each axis of the accelerometer, gyroscope and compass sensor parts respectively. Such values can be grouped and served through an API as a ROS IMU message or as a C++ struct for both input and output of these values while the ros2_control framework maintains it's low-profile communication interfaces internally.
The goal of this project is to add semantic components that are relevant for hardware components.
Additionally, this project includes extending the existing simulation tools with a set of common semantic components to support different sensors and actuators.
Related design document and code implementations:
| Skills required/preferred:
- Good C++ skills
- Basic understanding of ROS and/or ROS 2
- Basic understanding of the Gazebo simulator
| Possible mentors: Bence Magyar, Denis Štogl
| Expected size of project: 175 hours
| Difficulty: medium