案例五
需求介绍¶
已知有两个节点,其中一个节点是Publisher
,另外一个节点是Subscriber
。
Publisher
发布的消息是团队数据,包含了以下内容:
名称 | 类型 | 描述 |
---|---|---|
name | string |
团队名称 |
leader | Student |
团队领导 |
intro | std_msgs/String |
团队介绍 |
location | geometry_msgs/Twist |
位置 |
members | TODO | 团队成员 |
现在需要添加members
团队成员,类型为标准库Student
类型的数组。
要求实现这个两个节点,并且模拟数据发布和订阅!
业务分析¶
在此处,我们希望members
的类型是Student
的数组集合类型,我们对Team.msg
实际编码为:
1 2 3 4 5 |
|
我们采用[]
表示数组,对应中C++中的Vector
类型,对应Python
中的列表list
实现步骤¶
- 首先复杂类型的自定义消息
- 实现publisher
- 实现subscriber
- 模拟数据发布
消息定义¶
修改Team.msg:
1 2 3 4 5 |
|
检验自定义消息¶
1. 编译项目¶
来到工作空间目录下,运行编译
1 |
|
2. 查看生成的消息文件¶
c++的头文件¶
来到devel
的include
目录下,如果生成了头文件说明,自定义消息创建成功。
python的py文件¶
来到devel
的lib/python2.7/dist-package
目录下,查看是否生成和package名称相同的目录,以及目录内是否生成对应的py
文件。
3. 通过rosmsg工具校验¶
1 |
|
查看运行结果,运行结果和自己定义的相一致,说明成功。