ROS學習(一):重要概念

ROS

       ROS是一個用於開發機器人應用程序的、類似操作系統的機器人軟件平臺。ROS提供 開發機器人應用程序時所需的硬件抽象、子設備控制,以及機器人工程中廣泛使用的傳 感、識別、繪圖、運動規劃等功能。此外ROS還提供進程之間的消息解析、功能包管理、 庫和豐富的開發及調試工具。

主節點

      主節點(master)2負責節點到節點的連接和消息通信,類似於名稱服務器(Name Server)。roscore是它的運行命令,當您運行主節點時,可以註冊每個節點的名字,並根 據需要獲取信息。沒有主節點,就不能在節點之間建立訪問和消息交流(如話題和服務)。 主節點使用XML遠程過程調用(XMLRPC,XML-Remote Procedure Call)3與節 點進行通信。XMLRPC是一種基於HTTP的協議,主節點不與連接到主節點的節點保持 連接。換句話說,節點只有在需要註冊自己的信息或向其他節點發送請求信息時才能訪問 主節點並獲取信息。通常情況下,不檢查彼此的連接狀態。由於這些特點,ROS可用於非 常大而複雜的環境。XMLRPC也非常輕便,支持多種編程語言,使其非常適合支持各種 硬件和語言的ROS。

     當啓動ROS時,主節點將獲取用戶設置的ROS_MASTER_URI變量中列出的URI地址 和端口。除非另外設置,默認情況下,URI地址使用當前的本地IP,端口使用11311。

節點

     節點(node)4是指在ROS中運行的最小處理器單元。可以把它看作一個可執行程 序。在ROS中,建議爲一個目的創建一個節點,建議設計時注重可重用性。例如,在移動 機器人的情況下,爲了驅動機器人,將每個程序細分化。也就是說,使用傳感器驅動、傳 感器數據轉換、障礙物判斷、電機驅動、編碼器輸入和導航等多個細分節點。 節點在運行的同時,向主節點註冊節點的名稱,並且還註冊發佈者(publisher)、 訂閱者(subscriber)、服務服務器(service server)、服務客戶端(service client )的名稱,且註冊消息形式、URI地址和端口。基於這些信息,每個節點可以使用話題和 服務與其他節點交換消息。 節點使用XMLRPC與主站進行通信,並使用TCP/IP通信系列的XMLRPC或TCPROS5 進行節點之間的通信。節點之間的連接請求和響應使用XMLRPC,而消息通信使用 TCPROS,因爲它是節點和節點之間的直接通信,與主節點無關。URI地址和端口則使用 存儲於運行當前節點的計算機上的名爲ROS_HOSTNAME的環境變量作爲URI地址,並 將端口設置爲任意的固有值。

功能包

     功能包(package)6是構成ROS的基本單元。ROS應用程序是以功能包爲單位開發 的。功能包包括至少一個以上的節點或擁有用於運行其他功能包的節點的配置文件。它還 包含功能包所需的所有文件,如用於運行各種進程的ROS依賴庫、數據集和配置文件等。 目前註冊爲官方功能包的數量以2017年7月爲準爲:ROS Indigo多達約2500個(http:// repositories.ros.org/status_page/ ros_indigo_default.html),ROS Kinetic多達 約1600個(http://repositories.ros.org/status_page/ros_kinetic_default.html)。 除此之外,用戶們開發並共享的功能包雖然會有一些重複,但也有約4600個(http:// rosindex.github.io/stats/)。

消息

     節點之間通過消息(message)8來發送和接收數據。消息是諸如integer、floating point和boolean等類型的變量。用戶還可以使用諸如消息裏包括消息的簡單數據結構 或列舉消息的消息數組的結構。使用消息的通信方法包括TCPROS,UDPROS等,根 據情況使用單向消息發送/接收方式的話題(topic)和雙向消息請求(request)/響應 (response)方式的服務(service)。

話題

      話題(topic)就是“故事”。在發佈者(publisher)節點關於故事向主節點註冊 之後,它以消息形式發佈關於該故事的廣告。希望接收該故事的訂閱者(subscriber) 節點獲得在主節點中以這個話題註冊的那個發佈者節點的信息。基於這個信息,訂閱者節 點直接連接到發佈者節點,用話題發送和接收消息。

發佈與發佈者

     發佈(publish)是指以與話題的內容對應的消息的形式發送數據。爲了執行發佈, 發佈者(publisher)節點在主節點上註冊自己的話題等多種信息,並向希望訂閱的訂閱 者節點發送消息。發佈者在節點中聲明自己是執行發佈的個體。單個節點可以成爲多個發 布者。

訂閱與訂閱者

     訂閱是指以與話題內容對應的消息的形式接收數據。爲了執行訂閱,訂閱者節點在主 節點上註冊自己的話題等多種信息,並從主節點接收那些發佈此節點要訂閱的話題的發佈 者節點的信息。基於這個信息,訂閱者節點直接聯繫發佈者節點來接收消息。訂閱者在節 點中聲明自己執行訂閱的個體。單個節點可以成爲多個訂閱者。

     發佈和訂閱概念中的話題是異步的,這是一種根據需要發送和接收數據的好方法。另 外,由於它通過一次的連接,發送和接收連續的消息,所以它經常被用於必須連續發送消 息的傳感器數據。然而,在某些情況下,需要一種共同使用請求和響應的同步消息交換方 案。因此,ROS提供叫做服務(service)的消息同步方法。服務分爲響應請求的服務服 務器和請求後接收響應的服務客戶端。與話題不同,服務是一次性的消息通信。當服務的 請求和響應完成時,兩個節點的連接被斷開。

服務

     服務(service)消息通信是服務客戶端(service client)與服務服務器(service server)之間的同步雙向消息通信。其中服務客戶端請求對應於特定目的任務的服務,而 服務服務器則負責服務響應。

動作

     動作(action)是在需要像服務那樣的雙向請求的情況下使用的消息通信方式,不 同點是在處理請求之後需要很長的響應,並且需要中途反饋值。動作文件也非常類似於服 務,目標(goal)和結果(result)對應於請求和響應。此外,還添加了對應於中途的反 饋(feedback)。它由一個設置動作目標(goal)的動作客戶端(action client)和一 個動作服務器(action server),動作服務器根據目標執行動作,併發送反饋和結果。動作客戶端和動作服務器之間進行異步雙向消息通信。

參數

    ROS中的參數(parameter)是指節點中使用的參數。可以把它想象成一個 Windows程序中的*.ini配置文件。這些參數是默認(default)設置的,可以根據需要從 外部讀取或寫入。尤其是,它可以通過使用外部的寫入功能實時更改設置值,因此非常有 用。例如,您可以指定與外部設備連接的PC的USB端口、相機校準值、電機速度或命令 的最大值和最小值等設置值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章