Ros學習——建立ROS訊息和ROS服務
阿新 • • 發佈:2018-11-20
1.rosed
rosed 是 rosbash 的一部分。利用它可以直接通過package名來獲取到待編輯的檔案而無需指定該檔案的儲存路徑了。
rosed預設的編輯器是vim。修改其他的,開啟~/.bashrc 檔案,增加:
export EDITOR='emacs -nw'
2.訊息和服務
-
訊息(msg): msg檔案就是一個描述ROS中所使用訊息型別的簡單文字。它們會被用來生成不同語言的原始碼。msg檔案存放在package的msg目錄下。
msg檔案實際上就是每行宣告一個數據型別和變數名。可以使用的資料型別如下:
int8, int16, int32, int64 (plus uint*) float32, float64 string time, duration other msg files variable-length array[] and fixed-length array[C]
-
服務(srv): 一個srv檔案描述一項服務。它包含兩個部分:請求和響應。srv檔案則存放在srv目錄下。
srv檔案分為請求和響應兩部分,由'---'分隔。
3.msg
- 1.在之前建立的package裡定義新的訊息
$ cd ~/catkin_ws/src/beginner_tutorials $ mkdir msg $ echo "int64 num" > msg/Num.msg
- 2.確保msg檔案被轉換成為C++,Python和其他語言的原始碼
檢視package.xml, 確保它包含一下兩條語句:
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>
- 3.開啟CMakeLists.txt檔案,利用find_packag函式,增加對message_generation的依賴
# Do not just add this line to your CMakeLists.txt, modify the existing line find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs message_generation)
- 4.確保你設定了執行依賴:
catkin_package(
...
CATKIN_DEPENDS message_runtime ...
...)
- 5.修改add_message_files
# add_message_files(
# FILES
# Message1.msg
# Message2.msg
# )
改為:
add_message_files(
FILES
Num.msg
)
- 6.添加了如下程式碼:
generate_messages()
- 7.使用rosmsg
$ rosmsg show beginner_tutorials/Num
#或者
$ rosmsg show Num
結果:
4.srv
- 1.建立一個服務
$ roscd beginner_tutorials
$ mkdir srv
- 2.新建/賦值一個服務檔案
$ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
- 3.確保srv檔案被轉換成C++,Python和其他語言的原始碼:CMakeLists.txt檔案中增加了對message_generation的依賴
# Do not just add this line to your CMakeLists.txt, modify the existing line find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs message_generation)
- 4.修改add_message_files
# add_service_files(
# FILES
# Service1.srv
# Service2.srv
# )
#改為:
add_service_files(
FILES
AddTwoInts.srv
)
- 5.使用rossrv
$ rossrv show beginner_tutorials/AddTwoInts
#或者
$ rossrv show AddTwoInts
- 6.結果