ROS2内容
ROS2 DDS作用域
ros2的环境变量ROS_DOMAIN_ID,继承DDS体系,域是链接共享相同与ID的所有应用程序的全局数据空间,域彼此独立,DDS应用程序在一个域内发送和接收数据。一个网络可以有多个不同的域,一个域可以跨不同的网络。同域可以自由发现并相互发送消息,不同域则不能。默认以0作为域ID。避免同一网络上运行ROS2不同计算机组之间的干扰,可以为不同组发送不同域ID。
1 | export ROS_DOMAIN_ID 21 |
通过程序rclcpp或者rclpy可以设置ID,以下为rclcpp设置域ID
1 |
|
ROS2声明周期节点
ROS2实时
1️⃣ 非实时内核 ROS 2
- 操作系统:普通 Linux 内核(Ubuntu、Debian 等)
- 特点:
- 调度不保证严格的时间约束
- 节点和话题的发布/订阅存在延迟抖动
- 对大部分机器人任务足够(导航、感知、控制低速运动)
2️⃣ 实时内核 ROS 2
- 操作系统:Linux 内核打上
PREEMPT_RT补丁 - 特点:
- 内核可抢占,保证任务在确定时间内执行
- 低延迟、低抖动,适合高频控制任务
- 支持硬实时控制(机械臂、无人车、电机驱动)
| 维度 | 非实时内核 ROS 2 | 实时内核 ROS 2 |
|---|---|---|
| 内核 | 普通 Linux | PREEMPT_RT / RTOS |
| 调度 | 非严格 | 严格、低延迟 |
| 适用场景 | 感知、导航、低速控制 | 高速伺服、闭环控制、机械臂 |
| 优点 | 开发简单,兼容性好 | 控制精度高、延迟抖动低 |
| 缺点 | 延迟不可控 | 开发复杂,第三方包可能不完全兼容 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 涵风 Blog!


