ROS學習(一) 重要概念

2021-09-11 21:47:13 字數 2950 閱讀 2651

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依賴庫、資料集和配置檔案等。 目前註冊為官方功能包的數量以2023年7月為準為:ros indigo多達約2500個(http:// repositories.ros.org/status_page/ ros_indigo_default.html),ros kinetic多達 約1600個( 除此之外,使用者們開發並共享的功能包雖然會有一些重複,但也有約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埠、相機校準值、電機速度或命令 的最大值和最小值等設定值。

Pomelo開發筆記 一 重要術語

用來做前端 connector伺服器的負載均衡。客戶端先請求gate伺服器,然後gate給客戶端分配具體的connector伺服器。1 接收客戶端的連線請求,建立與客戶端的連線,並維護客戶端的session資訊 2 接收客戶端對後端的請求,按照使用者配置的路由策略,將請求路由給後端伺服器 3 當後端...

資料,才是機器學習中唯一重要的東西

機器學習領域目前的流行趨勢是免費提供軟體等產品。科技公司一直提倡建立開源社群,並且非常樂意將其部分 開源。然而,在過去的一年 2015年 中,機器學習領域的大佬們卻將自己完整的 庫貢獻出來了 谷歌tensorflow開源 facebook也將其經過優化的深度學習模組提供給了開源圖書館torch 然後...

PMF 創業公司「唯一重要的東西」?

網際網路企業99 創業失敗,只是因為沒有找準它 聽說過 精益創業 lean startup 的人都知道最小化可行性產品 mvp,minimal viable product 的理念 即通過乙個最小化 卻可以滿足核心需求的產品來測試市場的反應。mvp背後的核心原則就是減少時間成本。但在網際網路行業,很...