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 -