ros 发布Topic
1、确定话题名称和消息类型
自定义话题名称,消息类型根据发送消息需要从std_msgs中查找确定
2、在main函数中通过NodeHander发布话题
// 创建一个NodeHandle对象,用于与ROS系统进行交互
ros::NodeHandle nh;
// 创建一个Publisher对象,用于发布std_msgs::String类型的消息到名为"topic1"的主题,队列大小为10
ros::Publisher pub = nh.advertise<std_msgs::String>("topic1",10);
3、创建要发送的消息对象并对消息数据赋值
// 创建一个std_msgs::String类型的消息对象
std_msgs::String msg;
// 设置消息的数据字段为"message1"
msg.data = "message1";
// 发布消息到"topic1"主题
pub.publish(msg);
完整源码:
#include <ros/ros.h>
#include <std_msgs/String.h>
int main(int argc, char *argv[])
{
// 初始化ROS节点,节点名称为"chao_node"
ros::init(argc,argv,"chao_node");
// 创建一个NodeHandle对象,用于与ROS系统进行交互
ros::NodeHandle nh;
// 创建一个Publisher对象,用于发布std_msgs::String类型的消息到名为"topic1"的主题,队列大小为10
ros::Publisher pub = nh.advertise<std_msgs::String>("topic1",10);
// 设置循环频率为10Hz
ros::Rate loop_rate(10);
// 进入循环,只要ROS系统正常运行就会一直执行
while (ros::ok())
{
// 打印"start !"到控制台
printf("start !\n");
// 创建一个std_msgs::String类型的消息对象
std_msgs::String msg;
// 设置消息的数据字段为"message1"
msg.data = "message1";
// 发布消息到"topic1"主题
pub.publish(msg);
// 等待,直到达到预定的10Hz频率
loop_rate.sleep();
}
// 返回0,表示程序正常结束
return 0;
}