1. 创建一个自定义消息 msg
(1)在 catkin_ws/src/learning_communication 文件中,创建一个文件夹,命名为 msg,在这个msg文件夹里面,创建一个 .msg 文件,命名为msg.msg
(2)打开msg.msg,复制如下内容,当然,你可以仿造上面的形式多增加几行以得到更为复杂的消息
int64 num
string first_name
string last_name
uint8 age
uint32 score
(3)编辑 package.xml
目的是确保msg文件被转换成为C++,Python和其他语言的源代码:
打开 catkin_ws/src/learning_communication 下的 package.xml
删除:
<!-- <build_depend>message_generation</build_depend> -->
<!-- <exec_depend>message_runtime</exec_depend> -->
这两行的 <!-- 、--> ,如下图所示:
(4)编辑CMakeLists.txt
设置find_packag函数:
增加对 message_generation 的依赖,这样就可以生成消息了
打开 catkin_ws/src/learning_communication 下的CMakeLists.txt
在find_package()函数中加入 message_generation
如下图:
设置运行依赖:
找到如下行,并加入 message_runtime ,如下图:
加入新消息名称:
(5)编译
cd ~/catkin_ws/
catkin_make
(6)使用 rosmsg
rosmsg show msg
显示如下:
消息类型包含两部分:
-
learning_communication/msg-- 消息所在的位置
-
int64 num
string first_name
string last_name
uint8 age
uint32 score -- 消息名.
2. 创建一个服务 srv
(1)在 catkin_ws/src/learning_communication 文件中,创建一个文件夹,命名为 srv,在这个srv文件夹里面,创建一个 .srv 文件,命名为 AddTwoInts.srv
(2)打开 AddTwoInts.srv,复制如下内容
srv文件分为请求和响应两部分,由'---'分隔,其中 a 和 b 是请求, 而sum 是响应。
int64 a
int64 b
---
int64 sum
(3)编辑 package.xml
同创建msg
(4)编辑CMakeLists.txt
设置find_packag函数: 同创建msg
设置运行依赖:同创建msg
加入新消息名称:
msg和srv都需要的步骤
去掉注释并附加上所有你消息文件所依赖的那些含有.msg文件的package
(这个例子是依赖std_msgs,不要添加roscpp,rospy),结果如下:
(5)编译
cd ~/catkin_ws/
catkin_make
(6)使用 rossrv
rossrv show learning_communication/AddTwoInts