XMLRPC是什么?
關(guān)于ROS節(jié)點建立連接的技術(shù)細(xì)節(jié),官方文檔說的非常簡單,在這里ROS Technical Overview。沒有基礎(chǔ)的同學(xué)看這個介紹必然還是不懂。
在ROS中,節(jié)點與節(jié)點之間的通信依靠節(jié)點管理器(master)牽線搭橋。
master像一個中介,它介紹節(jié)點們互相認(rèn)識。一旦節(jié)點們認(rèn)識了以后,master就完成自己的任務(wù)了,它就不再摻和了。
這也是為什么你啟動節(jié)點后再殺死m(xù)aster,節(jié)點之間的通信依然保持正常的原因。
使用過電驢和迅雷而且研究過BitTorrent的同學(xué)對master的工作方式應(yīng)該很熟悉,master就相當(dāng)于Tracker服務(wù)器,它存儲著其它節(jié)點的信息。
我們每次下載之前都會查詢Tracker服務(wù)器,找到有電影資源的節(jié)點,然后就可以與它們建立連接并開始下載電影了。
那么master是怎么給節(jié)點牽線搭橋的呢?ROS使用了一種叫XMLRPC的方式實現(xiàn)這個功能。
XMLRPC中的RPC的意思是遠(yuǎn)程過程調(diào)用(Remote Procedure Call)。
簡單來說,遠(yuǎn)程過程調(diào)用的意思就是一個計算機(jī)中的程序(在我們這就是節(jié)點啦)可以調(diào)用另一個計算機(jī)中的函數(shù),只要這兩個計算機(jī)在一個網(wǎng)絡(luò)中。
這是一種聽上去很高大上的功能,它能讓節(jié)點去訪問網(wǎng)絡(luò)中另一臺計算機(jī)上的程序資源。
XMLRPC中的XML我們在1.1節(jié)講消息序列化時提到了,它就是一種數(shù)據(jù)表示方式而已。
所以合起來,XMLRPC的意思就是把由XML表示的數(shù)據(jù)發(fā)送給其它計算機(jī)上的程序運(yùn)行。
運(yùn)行后返回的結(jié)果仍然以XML格式返回回來,然后我們通過解析它(還原回純粹的數(shù)據(jù))就能干別的事了。
想了解更多XMLRPC的細(xì)節(jié)可以看這個XML-RPC:概述。
舉個例子,一個XMLRPC請求是下面這個樣子的。因為XMLRPC是基于HTTP協(xié)議的,所以下面的就是個標(biāo)準(zhǔn)的HTTP報文。
POST / HTTP/1.1
User-Agent: XMLRPC++ 0.7
Host: localhost:11311
Content-Type: text/xml
Content-length: 78
< ?xml version="1.0"? >
< methodCall >
< methodName >circleArea< /methodName >
< params >
< param >
< value >< double >2.41< /double >< /value >
< /param >
< /params >
< /methodCall >
如果你沒學(xué)過HTTP協(xié)議,看上面的語句可能會感到陌生?!秷D解HTTP》這本小書可以讓你快速入門。
HTTP報文比較簡單,它分兩部分,前半部分是頭部,后半部分是主體。
頭部和主體之間用空行分開,這都是HTTP協(xié)議規(guī)定的標(biāo)準(zhǔn)。
上面主體部分的格式就是XML,見的多了你就熟悉了。
所以,XMLRPC傳遞的消息其實就是主體部分是XML格式的HTTP報文而已,沒什么神秘的。
對應(yīng)客戶端一個XMLRPC請求,服務(wù)器端會執(zhí)行它并返回一個響應(yīng),它也是一個HTTP報文,如下。
它的結(jié)構(gòu)和請求一樣,不再解釋了。所以,XMLRPC跟我們上網(wǎng)瀏覽網(wǎng)頁的過程其實差不多。
HTTP/1.1 200 OK
Date: Sat, 06 Oct 2001 23:20:04 GMT
Server: Apache.1.3.12 (Unix)
Connection: close
Content-Type: text/xml
Content-Length: 124
< ?xml version="1.0"? >
< methodResponse >
< params >
< param >
< value >< double >18.24668429131< /double >< /value >
< /param >
< /params >
< /methodResponse >
-
節(jié)點
+關(guān)注
關(guān)注
0文章
227瀏覽量
25495 -
管理器
+關(guān)注
關(guān)注
0文章
265瀏覽量
19467 -
ROS
+關(guān)注
關(guān)注
1文章
292瀏覽量
18587
發(fā)布評論請先 登錄
系統(tǒng)鏡像Ubuntu_ROS2中ROS2是什么意思,帶有ROS2開發(fā)環(huán)境嗎?
如何在ROS2中運(yùn)行小烏龜呢
ROS簡介
基于FreeRTOS的micro(微型)ROS
ROS中的序列化實現(xiàn)
ROS是如何實現(xiàn)XMLRPC的
節(jié)點是如何調(diào)用XMLRPC的
ROS核心框架介紹
ROS中的TF該如何使用
ros的基本概念是什么
ROS2中自帶例程測試
在TogetherROS中如何安裝ROS2功能包
ROS中XMLRPC是什么
評論