(3)ROS學習 建立ROS訊息和ROS服務

2021-10-18 13:30:30 字數 2667 閱讀 6891

2、srv(服務):乙個srv檔案描述乙個服務。它由兩部分組成:請求(request)和響應(response)。

3、msg檔案存放在軟體包的msg目錄下,srv檔案則存放在srv目錄下。

下面,我們將在之前建立的軟體包裡定義乙個新的訊息。

1、在 catkin_ws/src/learning_communication 檔案中,建立乙個資料夾,命名為 msg,在這個msg資料夾裡面,建立乙個 .msg 檔案,命名為msg.msg

2、開啟msg.msg,複製如下內容,當然,你可以仿造上面的形式多增加幾行以得到更為複雜的訊息

int64 num

string first_name

string last_name

uint8 age

uint32 score

3、我們要確保msg檔案能被轉換為c++、python和其他語言的源**。

開啟package.xml, 確保它包含以下兩行且沒有被注釋。

把這兩行的 刪除(注意不是整行刪除)

< !--    message_generation -- >

< !-- message_runtime -- >

4、開啟 catkin_ws/src/learning_communication 下的cmakelists.txt

在find_package函式中新增message_generation依賴項,這樣就能生成訊息了。

直接將message_generation新增到components列表中即可,如下所示:

#不要直接複製這一大段,只需將message_generation加在括號閉合前即可

find_package(catkin required components

roscpp

rospy

std_msgs

message_generation

)

5、找到如下**塊,加入新訊息名稱:

## generate messages in the 'msg' folder

# add_message_files(

# files

# message1.msg

# message2.msg

# )

刪除#符號來取消注釋,然後將message*.msg替換為你的msg.msg檔名,就像下邊這樣:

## generate messages in the 'msg' folder

add_message_files(

files

msg.msg

)

6、編譯

cd ~/catkin_ws/

catkin_make

7、使用 rosmsg

以上就是建立訊息的所有步驟。讓我們通過rosmsg show命令看看ros能否識別它。

rosmsg show msg
顯示如下:

訊息型別包含兩部分:

讓我們使用之前建立的包再來建立服務:

1、在 catkin_ws/src/learning_communication 檔案中,建立乙個資料夾,命名為 srv,在這個srv資料夾裡面,建立乙個 .srv 檔案,命名為 addtwoints.srv

2、開啟 addtwoints.srv,複製如下內容

srv檔案分為請求和響應兩部分,由』—'分隔,其中 a 和 b 是請求, 而sum 是響應。

int64 a

int64 b

---int64 sum

3、我們要確保srv檔案能被轉換為c++、python和其他語言的源**。(這一步在上面使用msg已經做好了,這裡不需要了)

4、在find_package函式新增message_generation依賴項()(這一步在上面使用msg已經做好了,這裡不需要了)

5、找到如下**塊,加入新服務名稱:

## generate services in the 'srv' folder

# add_service_files(

# files

# service1.srv

# service2.srv

# )

刪除#符號來取消注釋,然後將service*.srv替換為srv.srv檔名,就像下邊這樣:

## generate services in the 'srv' folder

add_service_files(

files

addtwoints.srv

)

6、編譯

cd ~/catkin_ws/

catkin_make

7、使用 rosmsg

以上就是建立服務的所有步驟。讓我們通過rossrv show命令看看ros能否識別它。

rossrv show learning_communication/addtwoints

ROS學習(3) ROS通訊架構

ros有三個層級的概念,分別是 檔案系統級 計算圖級和開源社群級。ros計算圖 主要是指程序之間 節點之間 的通訊。ros建立了乙個連線所有程序的網路,通過這個網路節點之間完成互動,獲取其他節點發布的資訊。圍繞計算圖級和節點,一些重要的概念也隨即產生 節點,節點管理器,引數伺服器,訊息,服務,主題 ...

建立ROS訊息和ROS服務

1.1在工作空間下的功能包下新建名為msg的資料夾 新建person.msg檔案 int64 num1.2為確保msg檔案被轉換成python或者其他語言的源 需要修改功能包下package.xml檔案,以新增功能包依賴 message generation build depend message...

學習3 ROS檔案系統

本次學習主要為掌握很多ros終端命令。這些終端命令非常接近於linux本身的終端命令,只不過命令前面加上了 ros 這3個字母。想象一下,我們現在是乙個ros作業系統。其他的系統檔案我們都不感興趣,我們只對ros感興趣。所以只使用roscd,來進入ros系統目錄下的某個包,用rospack find...