ROS基本概念
1.節點
節點是主要的計算執行進程,如果你想要有一個可以與其他節點進行交互的進程,那么你需要創建一個節點,并將此節點鏈接到ROS網絡。通常情況下,系統包含能夠實現不同功能的多個節點。最好讓每一個節點都具有特定的單一功能,而不是系統中創建一個包羅萬象的大節點。節點需要使用如roscpp或rospy的ROS客戶端庫進行編寫。
2.節點管理器
ROS節點管理器向ROS系統中其他節點提供命名和注冊服務,它像服務一樣跟蹤和記錄主題的發布者和訂閱者。節點管理器的作用是使ROS節點之間能夠相互查找,一旦這些節點找到了彼此,就能建立一種點對點的通信方式。
節點管理器還提供了參數服務器。節點管理器通常使用roscore命令運行,它會加載ROS節點管理器及其他ROS核心組件。
3.參數服務器(Parameter Server)
參數服務器能夠使數據通過關鍵詞存儲在一個系統的核心位置。通過使用參數,就能夠在運行時配置節點或改變節點的工作任務。
4.消息
節點通過消息完成彼此的溝通,消息包含一個節點發送到其他節點的數據信息。ROS中包含很多種標準類型的消息,同時你也可以基于標準消息開發自定義類型的消息。
5.主題
主題是ROS網絡對消息進行路由和消息管理的數據總線,每一條消息都要發布到相應的主題。當一個節點發送數據時,我們就說該節點正在向主題發布消息。節點可以通過訂閱某個主題,接收來之其他節點的消息。一個節點可以訂閱一個主題,而并不需要該節點同時發布該主題。這就保證了消息的發布者和訂閱者之間相互解耦,完全無需知曉對方的存在。主題的名稱必須是獨一無二的,否則在同名主題之間的消息路由就會發生錯誤。
6.服務
在發布主題時,正在發送的數據能夠以多對多的方式交互。但當你需要從某個節點獲得一個請求或應答時,就不能通過主題來實現了。在這種情況下,服務能夠允許我們直接與某個節點進行交互。此外,服務必須有一個唯一的名稱。當一個節點提供某個服務時,所有的節點都可以通過使用ROS客戶端庫所編寫的代碼與它通信。
7.消息記錄包(Bag)
消息記錄包是一種用于保存和回放ROS消息數據的文件格式。消息記錄包是一種用于存儲數據的重要機制。它能夠獲取并記錄各種難以收集的傳感器數據。我們可以通過消息記錄包反復獲取實驗數據,進行必要的開發和算法測試。在使用復雜機器人進行實驗工作時,需要經常使用消息記錄包。
總結