1. 程式人生 > >ROS學習--(十一)建立ROS的資訊和服務

ROS學習--(十一)建立ROS的資訊和服務

建立資訊(.msg)
1.msg檔案就是用來描述ROS中所使用訊息型別的簡單文字,會被用來生成不同語言的原始碼
2.srv檔案描述一項服務,包括兩部分:請求和響應
3.msg檔案放在package的msg目錄下,srv放在srv目錄下
4.msg檔案其實就是一簡單的文字檔案,每一行宣告一個數據型別和變數名。資料型別如下
int8, int16, int32, int64 (plus uint*)
float32, float64
string
time, duration
other msg files
variable-length array[] and fixed-length array[C]
ROS中還有一個特別的資料型別,Header,包含時間戳和座標系資訊。我們經常可以見到msg檔案第一行是Header header
5.srv檔案就像msg檔案,但包含兩部分,請求和響應。這兩部分用—分開

int64 A
int64 B
---
int64 Sum

意思是發出請求A和B,然後響應(迴應)兩個的和sum
6.下面我們建立一個msg檔案

$ cd ~/catkin_ws/src/beginner_tutorials
$ mkdir msg
$ echo "int64 num" > msg/Num.msg

第一二條都見過了。第三個指令中意思是把echo後面引號的內容“int64 num”寫到msg資料夾中的Num.msg檔案中。
然後開啟package.xml,將下面兩行復制進去

<build_depend>message_generation</build_depend
>
<run_depend>message_runtime</run_depend>

開啟CMakeLists.txt,找到find_package,看看有沒有把message_generation新增進去,沒有則新增進去。

 CATKIN_DEPENDS message_runtime

將這句話新增到catkin_package中,新增依賴

add_message_files(
  FILES
  Num.msg
)

找到add_message_files,去掉註釋,改成上面。意思是把Num.msg新增進資訊檔案

建立服務(.srv)

$ 
roscd beginner_tutorials $ mkdir srv

對於這個新的檔案,我們可以直接從其他檔案copy過來。使用roscp命令
格式$ roscp [package_name] [file_to_copy_path] [copy_path]
將[package_name]從[file_to_copy_path]copy到[copy_path]

$ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv

開啟CMakeList.txt,找到add_service_files,將註釋去掉,改為

add_service_files(
  FILES
  AddTwoInts.srv
)

然後catkin_make一下就好了。

$ cd ~/catkin_ws
$ catkin_make
$ cd -