xmlrpc(xml遠端過程呼叫)是一種rpc協議,其編碼形式採用xml編碼格式,而傳輸方式採用http協議,支援多種程式語言,但比較簡單,僅用於小資料型別或命令。
主節點負責節點之間的連線和通訊,執行roscore命令即可啟動主節點,之後就可註冊其他節點的名字,並可建立節點間的通訊。主節點使用xmlrpc與其他節點進行通訊,通常不保持連線,即其他節點只有在進行註冊或請求資訊時才與主節點建立連線。當啟動ros時,主節點將獲取使用者設定的ros_master_uri變數中列出的uri位址和埠號(預設為當前的本地ip和11311埠號)。
節點是指在ros中執行的最小處理單元,通常是乙個可執行程式(基於c++或python語言編寫的)。節點在執行的同時,向主節點註冊其名稱,並且還註冊發布者/訂閱者或服務伺服器/客戶端的名稱,還有訊息、uri位址和埠號。基於這些資訊,每個節點可使用話題或服務與其他節點進行通訊。
節點使用xmlrpc與主節點進行通訊,而使用tcp/ip通訊系列的xmlrpc或tcpros進行節點之間的通訊。節點之間的連線請求和響應使用xmlrpc,而訊息通訊使用tcpros(這與主節點無關,是建立在節點之間的直接通訊)。uri位址則使用ros_hostname的環境變數的值,而埠號可設定為任意的固有值。
rosrun 功能包名稱 節點名稱(可執行檔名) #啟動節點
功能包是構成ros的基本單元,其中包括至少乙個以上的節點或擁有用於執行其他功能包的節點的配置檔案,以及用於執行各種程序的ros依賴庫、資料集和配置檔案等。通常使用catkin_create_pkg命令建立:
catkin_create_pkg 功能包名 依賴項(roscpp rospy std_msgs)
元功能包是乙個具有共同目的的功能包的集合。
訊息是諸如int、float和boolean等型別的變數。節點之間通過訊息來互傳資料,其通訊方法包括tcpros和udpros等。通常在功能包目錄下建立乙個msg資料夾,以存放自定義的訊息檔案。
mkdir msg
vim msg/custommsg.msg
float32 a
float32 b
話題是一種單向的非同步通訊機制,通常被用於連續傳送訊息。在某個發布者節點關於某個話題向主節點註冊後,希望接收該話題的訂閱者節點可在主節點獲取該發布者節點的資訊,然後與該發布者節點建立直接連線,之後即可用該話題進行通訊。
發布是指以與話題的內容對應的訊息的形式傳送資料。發布者即是在節點中宣告自己是執行發布的個體,單個節點可以成為發布多種話題的發布者。
ros:
:publisher pub;
ros:
:nodehandle nh;
pub = nh.advertise《訊息型別》
("話題名稱"
,緩衝區大小)
;訊息型別 訊息;
pub.
publish
(訊息)
;
訂閱是指以與話題內容對應的訊息的形式接收資料。同發布者一樣,訂閱者可在節點中宣告自己是執行訂閱的個體,單個節點也可成為訂閱多種話題的訂閱者。
void
callback
(訊息型別 訊息)
ros:
:subscriber sub;
sub = nh.
subscribe
("話題名稱"
,size,callback)
;ros:
:spin()
;//迴圈監聽
服務是一種雙向的同步通訊機制,與話題不同,只有在服務客戶端節點傳送資料請求時才與服務伺服器節點建立連線,當服務客戶端接收到響應後就斷開連線,即是一種一次性的訊息通訊。通常也在功能包的目錄下建立乙個srv資料夾存放自定義的服務訊息檔案。
mkdir srv
vim srv/customsrv.srv
float32 a //請求(request)
float32 b---
float32 c //響應(response)
服務伺服器是以請求為輸入,以響應(請求和響應都是訊息)作為輸出的節點。服務伺服器收到服務客戶端的請求後,執行指定的服務,並將結果作為響應傳送給服務客戶端。
bool callback
(服務訊息型別:
:request &請求,服務訊息型別:
:response &響應)
ros:
:serviceserver server = nh.
advertiseservice
("服務名稱"
,callback)
;ros:
:spin()
;
服務客戶端是以請求作為輸出並以響應作為輸入的節點。
ros:
:serviceclient client = nh.serviceclient《服務訊息型別》
("服務名稱");
服務訊息型別 訊息;
訊息.request.變數名稱 = value;//填充請求資料
client.
call
(訊息)
;cout << 訊息.response.變數名稱;
//輸出響應資料
動作是一種非同步的雙向通訊機制,與服務類似,不同的是,在處理請求之後需要很長的響應,並且中途需要有反饋資料。乙個動作檔案中,包括目標、結果和反饋,其中,目標和結果對應於請求和響應。
動作伺服器是以目標作為輸入並以結果和反饋作為輸出的節點。
動作客戶端是以目標作為輸出並以結果和反饋作為輸入的節點。
ros構建系統的catkin基本上使用了cmake,因此在功能包目錄下的cmakelists.txt檔案用於描述構建環境。
以xml編碼格式編寫的檔案,其中,包括功能包名稱、作者、許可證和依賴包等訊息。
ROS學習筆記 一 ROS系統安裝
sudo apt get install 軟體包 再給出幾點安裝後的問題解決和使用心得 不定期補充 在安裝ros系統之前再說明幾點,簡單介紹下ros的 下面開始真正的安裝ros系統 訪問教程 找到安裝教程sudo sh c echo deb lsb release sc main etc apt s...
ROS學習筆記(一)
最近在入門學習ros系統,基於jade,總結一下基本的概念以及常用操作,主要參考 主要理解nodes topics messages之間的關係。圖中藍色和綠色的是nodes,紅色的是topics。nodes是可執行程式,topics用於nodes間通訊,messages是話題中的資料型別。大部分命令...
ROS學習筆記(一)
我是在ubuntu20系統上練習入門ros程式設計,所以下文所有內容基於ubuntu20系統環境下,所遇到的坑不一定在其它系統環境下存在。這是做個筆記。最新版noetic的安裝指引中缺少 dependencies for building packages 章節,導致rosdep沒有安裝和初始化,在...