以geometry_msgs/Twist为例说明。
一.发布消息
1.包含消息类型的声明
# include <package_name/type_name.h>
功能包名应该是定义消息类型的包的名称,不一定是自己的包的名称。如想发布一条类型为geometry_msgs/Twist的消息(名为geometry_msgs的包所拥有的类型为Twist的消息)
# include <geometry_msgs/Twist.h>
头文件的目的是定义一个C++类,此类和给定消息类型含有相同的数据类型成员。这个类定义在一包名命名的域名空间中。实际影响:当引用C++代码中的消息类时,将使用::来区分开包名和类型名,双分号也称范围解析运算符。j即头文件定义了一个名为geometry_msgs::Twist的类。
2.创建发布者对象
发布消息的实际工作由ros::Publisher的一个对象完成。
ros::Publisher pub = node_handle.advertise<message_type>(topic_name, queue_size);
node_handle是ros::NodeHandle类的一个对象,在程序运行处创建。
message_type正式名称为模板参数,发布消息的数据类型。头文件中定义的类名(geometry_msgs::Twist类)
topic_name字符串,包含发布的话题的名称(应该和rostopic/rqt_graph中话题一致,通常没有钱斜杆--使话题名为一个相对名称)(turtle/cmd_vel)
queue_size消息序列

本文详细介绍了ROS中创建发布者程序的步骤,包括声明消息类型、创建发布者对象、填充消息内容及控制发布频率。以geometry_msgs/Twist为例,讲解如何发布消息并控制消息发布速率,确保节点按需工作,避免资源浪费。同时阐述了cmake文件的修改,以正确处理消息类型依赖。
最低0.47元/天 解锁文章
9742

被折叠的 条评论
为什么被折叠?



