ROS2¶
ROS2是一个建立在DDS基础之上的机器人操作系统,对用户端提供rcl cli以及py/cpp接口,中间依靠rmw(ROS Middleware)与具体的DDS实现通信。
通信方式¶
ROS2提供topic、service、action三种通信方式。
- topic: 是多对多发布/订阅异步通信模式,适用于广播/传递实时数据,适用于相机/传感器数据采集、实时监控等场景。
- service: 是请求/响应通信模式,服务端与客户端是1 : n关系,适用于状态查询等需要精确响应的场景,由于一个服务端的原因,不适用于连续性的大量请求调用场景。
- action: 是支持长任务运行与需要任务中断的通信模式,适用于导航、机器控制等需要实时反馈与中断控制的任务。
三者对比:
- 延迟方面:topic延迟最小,适用于实时性要求高的场景;service模式需要等待服务端返回,延迟比topic大;action结合了service与topic,延迟比service大。
- 数据量方面:topic相对于service、action支持更大数据的传输,service与action更倾向于传输控制命令执行、状态查询返回等。
- 可靠性方面:三者均提供QoS相关的配置,但由于topic若在大量节点参与时,实时传输相对大数据场景,亦会存在数据丢失的风险。且由于适用场景问题,topic对通信带宽一般要求较高。
py脚本启动节点¶
listeners.launch.py | |
---|---|
使用rcl客户端工具启动名为listener1 ~ listener50
的50个listener。
Bash | |
---|---|