ROS作为机器人开发中必不可少的一环,总结了一些面试中常见的问题。
目录
- 1.ROS1 和 ROS2 的核心区别
- 2.ROS话题间通信和服务端之间通信有什么区别?
- 3.RViz 可视化ROS的消息发布是一对一还是一对多的?
- 4.ROS中的机器人指令发布ros topic pub的原理实现,用的ROS1还是ROS2?
- 5.DDS是什么?
- 6.基础知识(节点、话题、消息、服务、动作、参数)
- 7.ROS1有什么缺陷
1.ROS1 和 ROS2 的核心区别
主要有如下三个方面的区别:
-
通信架构:从 “中心化” 到 “去中心化”
ROS1采用 “主从式” 架构,依赖一个中心节点(roscore)作为 “注册表”,所有节点必须先向roscore注册才能发现其他节点并通信。这种设计的缺陷是:roscore成为单点故障源,一旦崩溃整个系统瘫痪。
ROS2基于DDS(Data Distribution Service) ,完全去中心化。节点通过 DDS 的发现机制自动识别网络中的其他节点,无需中心节点协调。相比于ROS2消除了单点故障,还简化了分布式系统部署(支持跨多机、多网络的自动通信)。 -
实时性支持:从 “弱实时” 到 “强实时兼容”
ROS1通信层和底层设计未考虑实时性,无法满足机器人控制(如机械臂运动控制)等对时间确定性要求高的场景。即使在实时操作系统(如 RT-Linux)上运行,ROS1 的通信延迟也难以保证稳定。
ROS2通过 DDS 支持实时通信,并兼容实时操作系统(如带 RT_PREEMPT 补丁的 Linux等)。 -
API 设计与跨平台支持