这篇教程主要介绍怎样创建和编译一个msg消息和srv服务文件,同时介绍rosmsg
,rossrv
,roscp
等命令工具。
1 msg和srv文件长什么样
msg文件:
Header header
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/TwistWithCovariance twist
srv文件:
int64 A
int64 B
---
int64 Sum
srv中有两个部分,---
上面是request,下面的是response。
2 msg使用
2.1 创建一个msg
$ roscd beginner_tutorials
$ mkdir msg
$ echo "int64 num" > msg/Num.msg
在package.xml
中添加:
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
在CMakeLists.txt
中添加:
find_package(
catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
catkin_package(
CATKIN_DEPENDS
message_runtime
)
add_message_files(
FILES
Num.msg
)
generate_messages(
DEPENDENCIES
std_msgs
)
2.2 rosmsg show
标准用法:
$ rosmsg show [message type]
举例:
$ rosmsg show beginner_tutorials/Num
# echo
int64 num
3 srv使用
3.1 创建一个srv
$ roscd beginner_tutorials
$ mkdir srv
接着拷贝一个srv文件过来
$ roscp [package_name] [file_to_copy_path] [copy_path]
$ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
或者新建一个AddTwoInts.srv
文件:
int64 a
int64 b
---
int64 sum
在package.xml
中添加:
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
在CMakeLists.txt
中添加:
# 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
)
add_service_files(
FILES
AddTwoInts.srv
)
3.2 rossrv show
标准用法:
$ rossrv show <service type>
举例:
$ rossrv show beginner_tutorials/AddTwoInts
# echo
int64 a
int64 b
---
int64 sum
和rosmsg
一样,也可以不指定Package名字来寻找service:
$ rossrv show AddTwoInts
# echo
# beginner_tutorials里面的服务:
[beginner_tutorials/AddTwoInts]:
int64 a
int64 b
---
int64 sum
# rospy_tutorials里面的服务:
[rospy_tutorials/AddTwoInts]:
int64 a
int64 b
---
int64 sum
4 小结
- rospack = ros + pack
- roscd = ros + cd
- rosls = ros + ls 显示一个ros Package中的所有文件
- roscp = ros + cp
- rosmsg = ros + msg
- rossrv = ros + srv