概述
RMW 系统提供了一个 C API,用于定义 ROS 2 生态系统中常见的中间件操作。每个受支持的 DDS 实现都提供了一个 RMW 适配器包,用于在标准化的 RMW 接口和特定供应商的 DDS API 之间进行转换。
RWM 主要功能组:
- 初始化和关闭:管理 RMW 实例生命周期
- 节点管理:创建、使用销毁 ros graph 中的节点
- 通信原语:
- Publishers/Subscriptions
- Services/Clients
- 同步机制:用于同步操作的 wait sets 和 guard conditions
- 图查询:查询 ROS 图结构
- 服务质量(QoS):配置和管理通信质量参数
- 序列化:在 ROS 消息和序列化字节流之间进行转换
| 类别 | 功能描述 | 示例函数 |
|---|---|---|
| 初始化 | 设置并配置RMW(ROS中间件接口) | rmw_init(), rmw_shutdown() |
| 节点管理 | 创建和管理ROS节点 | rmw_create_node(), rmw_destroy_node() |
| 发布器 | 创建和使用消息发布器 | rmw_create_publisher(), rmw_publish() |
| 订阅器 | 创建和使用消息订阅器 | rmw_create_subscription(), rmw_take() |
| 服务端 | 实现请求-响应服务端 | rmw_create_service(), rmw_take_request() |
| 客户端 | 实现请求-响应客户端 | rmw_create_client(), rmw_send_request() |
| 等待集合 | 多实体活动监控与等待 | rmw_create_wait_set(), rmw_wait() |
| 拓扑查询 | ROS通信图查询 | rmw_get_node_names(), rmw_count_publishers() |
| 校验验证 | 验证名称和标识符规范性 | rmw_validate_full_topic_name(), rmw_validate_namespace() |
| 服务质量(QoS) | 配置通信质量策略 | rmw_qos_profile_check_compatible() |