1、确定话题名称和消息类型
自定义话题名称,消息类型根据发送消息需要从std_msgs中查找确定
2、在main函数中通过NodeHander发布话题
// 创建一个NodeHandle对象,用于与ROS系统进行交互ros::NodeHandle nh;// 创建一个Publisher对象,用于发布std_msgs::String类型的消息到名为"topic1"的主题,队列大小为10ros::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"的主题,队列大小为10ros::Publisher pub = nh.advertise<std_msgs::String>("topic1",10);// 设置循环频率为10Hzros::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;
}