ROS 懶人筆記 2 — 建立message與service
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 :
- ROS官方教學 http://wiki.ros.org/ROS/Tutorials/
- Prof. Dr. Marco Hutter Programming for Robotics Introduction to ROS http://www.rsl.ethz.ch/education-students/lectures/ros.html