AimRT 中的协议

协议在 AimRT 中的主要作用是实现组件之间的数据交换和通信。无论是在同一进程内还是跨进程通信,AimRT都提供了一个统一的接口和数据序列化/反序列化机制,确保数据能够正确传输和解析。AimRT 现支持 ros2 和 protobuf 两种协议:

参考 AimRT 源码中的 src/protococols 目录

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 概念

type_support 是 AimRT 用于序列化反序列化消息的重要组件。在 AimRT 的 reocrd_playback ,echo 和 proxy 插件中使用 type_support_pkg 来识别数据类型,目前对于每一个用于 channel 的消息类型,AimRT会以目录为单位生成相应的 type_support_pkg,以供上述插件使用,生成的 pkg 名称为 lib{目录名}_{协议类型}_ts.so,其中 src/protocols/ros2/ros2_msgs 目录下是 ros2 humble 自带的一些消息类型。