ROS學習(三) 訊息通訊過程

2021-09-11 22:06:08 字數 2160 閱讀 2739

主節點管理節點資訊,每個節點根據需要與其他節點進行連線和訊息通訊。在這裡, 我們來看看最重要的主節點、節點、話題、服務和動作資訊的過程。

節點之間的訊息通訊當中,管理連線資訊的主節點是為使用ros必須首先執行的必需 元素。ros 主節點使用roscore命令來執行,並使用xmlrpc執行伺服器。主節點為了節點與節點的連線,會註冊節點的名稱、話題、服務、動作名稱、訊息型別、uri位址和 埠,並在有請求時將此資訊通知給其他節點。

訂閱者節點使用rosrun或roslaunch命令來執行。訂閱者節點在執行時向主節點 註冊其訂閱者節點名稱、話題名稱、訊息型別、uri位址和埠。主節點和節點使用 xmlrpc進行通訊。

發布者節點(與訂閱者節點類似)使用rosrun或roslaunch命令來執行。發布者節點 向主節點註冊發布者節點名稱、話題名稱、訊息型別、uri位址和埠。主節點和節點使 用xmlrpc進行通訊。

主節點向訂閱者節點傳送此訂閱者希望訪問的發布者的名稱、話題名稱、訊息型別、 uri位址和埠等資訊。主節點和節點使用xmlrpc進行通訊。

訂閱者節點根據從主節點接收的發布者資訊,向發布者節點請求直接連線。在這種情 況下,要傳送的資訊包括訂閱者節點名稱、話題名稱和訊息型別。發布者節點和訂閱者節 點使用xmlrpc進行通訊。

發布者節點將tcp伺服器的uri位址和埠作為連線響應傳送給訂閱者節點。發布者 節點和訂閱者節點使用xmlrpc進行通訊。

訂閱者節點使用tcpros建立乙個與發布者節點對應的客戶端,並直接與發布者節點 連線。節點間通訊使用一種稱為tcpros的tcp/ip方式。

發布者節點向訂閱者節點傳送訊息。節點間通訊使用一種稱為tcpros的tcp/ip 方式。

上述內容相當於訊息通訊中的話題。話題訊息通訊是只要發布者或訂閱者不停止,會持續地發布和訂閱。服務分為下面兩種。

1.服務客戶端: 請求服務後等待響應

2.服務伺服器: 收到服務請求後執行指定的任務,並傳送響應。

服務伺服器和客戶端之間的連線與上述發布者和訂閱者之間的tcpros連線相同,但 是與話題不同,服務只連線一次,在執行請求和響應之後彼此斷開連線。如果有必要,需 要重新連線。

在執行的方式上好像是在服務(service)的請求(goal)和響應 (result)之間僅僅多了中途反饋環節,但實際的運作方式與話題相同。事實上,如果 使用rostopic命令來查閱話題,那麼可以看到該動作的goal、status、cancel、result 和feedback等五個話題。動作伺服器和客戶端之間的連線與上述發布者和訂閱中的 tcpros連線相同,但某些用法略有不同。例如,動作客戶端傳送取消命令或伺服器傳送 結果值會中斷連線,等。

在前面的內容中,我們用turtlesim測試了ros的操作。在這個測試中,使用了主節 點和兩個節點,並且在兩個節點之間,使用/turtle1/cmd_vel話題將平移和旋轉訊息傳送

給虛擬海龜。如果按照上面描述的ros概念思考它,可以以下圖表達出來。讓我們回顧 一下之前的ros操作測試,並再次用ros概念思考一下吧。

ROS學習 ROS通訊架構

作用 每個node啟動時都要想master註冊,管理node之間的通訊 可實現點對點通訊 roscore 啟動ros master pkg裡面的可執行檔案執行的例項。啟動乙個node rosrun 包名 節點名 rosnode rosnode list檢視當前執行的node資訊 rosnode in...

Ros學習筆記(四)建立Ros訊息

學習如何使用.msg檔案建立使用者自定義的訊息,並且在節點中使用這些自定義訊息,這包含乙個關於要傳輸的資料型別的標準。首先在chapter2 turtleial包中建立乙個msg資料夾,在資料夾中建立乙個chapter2 msg.msg檔案,並新增以下命令列 int32 a int32 b int3...

ROS學習之 cpp訊息

parameters rosdistro jade rosversion 1.11.16 和所有ros客戶端庫相同,roscpp使用msg檔案來生成c 模式如下 package name msg foo.msg package name foo 相同地,srv檔案也生成c 模式如下 package ...