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 設計與跨平臺支持