ROS 懶人筆記 2 — 建立message與service

Raymond Chen
4 min readJun 20, 2018

--

msg建立三步驟

A. 定義.msg檔 (於<package_name>/msg中)

$ roscd beginner_tutorial
$ mkdir msg
$ echo "int64 num" > msg/Num.msg

以下為一些.msg檔的範例:

B. 更改package.xml:

  • Uncomment以下兩行
<build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>

C. 更改CMakeLists.txt:

  • find_package 加入 message_generation
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation # 加入此行,確保ROS可找到產生message的模組
)
  • add_message_files 加入message檔名
add_message_files(
FILES
Num.msg # 加入此行,指定message檔名
)
  • Uncomment generate_messages,以產生message
generate_messages(         
DEPEDENCIES
std_msgs
)
# uncomment以上才能產生message,ROS Hydro之後的版本接採用此法
  • catkin_package 加入message_runtime
catkin_package(
CATKIN_DEPENDS message_runtime
)
# export message runtime dependency

srv建立三步驟

A. 定義.srv檔 (於<package_name>/srv中)

$ roscd beginner_tutorial
$ mkdir srv
$ roscp rospy_tutorial AddTwoInts.srv srv/AddTwoInts.srv
$ cat srv/AddTwoInts.srv
int64 a
int64 b
---
int64 sum

以下為一些.srv檔的範例,三個dash以上的部分是Request的欄位,以下的部分是Response的欄位:

B. 更改package.xml:

  • Uncomment以下兩行 (同msg建立步驟)
<build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>

C. 更改CMakeLists.txt:

  • find_package 加入 message_generation (同msg建立步驟)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation # 加入此行,確保ROS可找到產生message的模組
)
  • add_service_files 加入service檔名
add_service_files(
FILES
AddTwoInts.srv # 加入此行,指定service檔名
)
  • Uncomment generate_messages,以產生message (同msg建立步驟)
generate_messages(         
DEPEDENCIES
std_msgs
)
# uncomment以上才能產生message,ROS Hydro之後的版本接採用此法
  • catkin_package 加入message_runtime (同msg建立步驟)
catkin_package(
CATKIN_DEPENDS message_runtime
)
# export message runtime dependency

檢視msg與srv (rosmsg、rossrv),拷貝msg與srv (roscp)

Reference :

--

--

Raymond Chen

AI enthusiast passionate about Data Science, Machine Learning, Deep Learning, Self-Driving Car and Robotics