案例三
需求介绍¶
已知有两个节点,其中一个节点是Publisher
,另外一个节点是Subscriber
。
Publisher
发布的消息是团队数据,包含了以下内容:
名称 | 类型 | 描述 |
---|---|---|
name | string |
团队名称 |
leader | Student |
团队领导 |
intro | TODO | 团队介绍 |
现在需要添加intro
团队介绍,类型为标准库std_msgs/String
类型。
要求实现这个两个节点,并且模拟数据发布和订阅!
业务分析¶
rosmsg
是ros的标准消息库,开发中,有的时候我们需要将标准消息封装到自己的消息中去的。
在此处,我们希望intro
的类型是std_msgs/String
,我们对Team.msg
实际编码为:
1 2 3 |
|
Note
Team.msg
要去使用std_msgs/String
,std_msgs/String
就是具体类型,通过std_msgs/String intro
来去声明。
实现步骤¶
- 首先复杂类型的自定义消息
- 实现publisher
- 实现subscriber
- 模拟数据发布
消息定义流程¶
1. 修改Team.msg¶
1 2 3 |
|
2. 修改过CMakeLists.txt¶
修改catkin_package
,结果如下:
1 2 3 4 5 6 7 |
|
Tip
为catkin编译提供了依赖message_runtime
检验自定义消息¶
1. 编译项目¶
来到工作空间目录下,运行编译
1 |
|
2. 查看生成的消息文件¶
c++的头文件¶
来到devel
的include
目录下,如果生成了头文件说明,自定义消息创建成功。
python的py文件¶
来到devel
的lib/python2.7/dist-package
目录下,查看是否生成和package名称相同的目录,以及目录内是否生成对应的py
文件。
3. 通过rosmsg工具校验¶
1 |
|
查看运行结果,运行结果和自己定义的相一致,说明成功。