ROS學習(三):消息通信過程

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

一.運行主節點

     節點之間的消息通信當中,管理連接信息的主節點是爲使用ROS必須首先運行的必需 元素。ROS 主節點使用roscore命令來運行,並使用XMLRPC運行服務器。主節點爲了節點與節點的連接,會註冊節點的名稱、話題、服務、動作名稱、消息類型、URI地址和 端口,並在有請求時將此信息通知給其他節點。

二. 運行訂閱者節點

     訂閱者節點使用rosrun或roslaunch命令來運行。訂閱者節點在運行時向主節點 註冊其訂閱者節點名稱、話題名稱、消息類型、URI地址和端口。主節點和節點使用 XMLRPC進行通信。

 

三.運行發佈者節點

     發佈者節點(與訂閱者節點類似)使用rosrun或roslaunch命令來運行。發佈者節點 向主節點註冊發佈者節點名稱、話題名稱、消息類型、URI地址和端口。主節點和節點使 用XMLRPC進行通信。

四.通知發佈者信息

     主節點向訂閱者節點發送此訂閱者希望訪問的發佈者的名稱、話題名稱、消息類型、 URI地址和端口等信息。主節點和節點使用XMLRPC進行通信。

五.訂閱者節點的連接請求

     訂閱者節點根據從主節點接收的發佈者信息,向發佈者節點請求直接連接。在這種情 況下,要發送的信息包括訂閱者節點名稱、話題名稱和消息類型。發佈者節點和訂閱者節 點使用XMLRPC進行通信。

 

六.發佈者節點的連接響應

     發佈者節點將TCP服務器的URI地址和端口作爲連接響應發送給訂閱者節點。發佈者 節點和訂閱者節點使用XMLRPC進行通信。

七.TCPROS連接

     訂閱者節點使用TCPROS創建一個與發佈者節點對應的客戶端,並直接與發佈者節點 連接。節點間通信使用一種稱爲TCPROS的TCP/IP方式。

 

八.發送消息

     發佈者節點向訂閱者節點發送消息。節點間通信使用一種稱爲TCPROS的TCP/IP 方式。

 九.服務請求及響應

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

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

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

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

 

十.動作的目標、結果和反饋 動作(action)

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

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

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

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