Protocols in AimRT
The primary role of protocols in AimRT is to enable data exchange and communication between components. Whether for intra-process or inter-process communication, AimRT provides a unified interface and data serialization/deserialization mechanism to ensure correct data transmission and parsing. AimRT currently supports two protocols: ros2 and protobuf:
Refer to the src/protococols
directory in the AimRT source code.
src/protocols
├── pb
│ ├── actuator
│ ├── common
│ ├── example
│ ├── geometry
│ └── sensor
├── plugins
│ ├── log_control_plugin
│ ├── parameter_plugin
│ ├── record_playback_plugin
│ ├── ros2_plugin_proto
│ ├── time_manipulator_plugin
│ └── topic_logger_plugin
└── ros2
├── aimrt_msgs
├── example_ros2
└── ros2_msgs
type_support Concept
type_support is a crucial component in AimRT for message serialization and deserialization. In AimRT’s record_playback, echo, and proxy plugins, type_support_pkg is used to identify data types. Currently, for each message type used in channels, AimRT generates corresponding type_support_pkg on a per-directory basis for use by the aforementioned plugins. The generated package name follows the pattern lib{directory_name}_{protocol_type}_ts.so
. The src/protocols/ros2/ros2_msgs
directory contains some message types that come with ros2 humble by default.