ROS release topic C++ code detailed explanation

Define a node talker that publishes topic, publish to topic chatter, message type string. The subscriber code link of its topic: ROS subscribe topic C++ code detailed explanation

#include "ros/ros.h"                       //包含ros的头文件 
#include  "std_msgs/String.h"  //包含标准信息的字符串消息头文件
#include <sstream>//c++字符流的一个头文件

int main(int argc, char **argv)  //标准格式,就是这样写的
{
    
    
    //初始化一个ros节点,节点的名称是talker
    ros::init(argc, argv, "talker"); 

     //创建一个句柄,方便调用ros的API
     ros::NodeHandle n; 
     
     //创建了一个发布器,发布器的名称是chatter_pub, 发布的消息类型是std_msgs的字符串类型
     //并且发布到chatter这个话题上, 发布器的缓存是1000
     ros::Publisher chatter_pub = n.advertise<std_msgs::String> ("chatter", 1000); 

    //用来设定发送的频率,这里设定10hz,一秒钟发送10次
     ros::Rate loop_rate(10); 

    //定义一个用来记数的变量
     int count =0;

    // 进入循环体,这里的ok是检测状态的,比方按下ctrl+c,他就会返回false,循环停止
    while(ros::ok())
    {
    
    
        //声明一个变量,就是消息本身
        std_msgs::String msg;

        //声明一个c++里边的标准输出流
        std:: stringstream ss;

        //给这个输出流赋值
        ss <<"hello world!" <<count;

        //字符串赋值
        msg.data= ss.str();

        //打印这个消息
       ROS_INFO("%s", msg.data.c_str());

        //调用发布器把消息发布出去
        chatter_pub.publish(msg);

        //调用回调函数
        ros::spinOnce(); 

        //调用频率控制函数
        loop_rate.sleep();

        ++count;

    }

    return 0;

}

Guess you like

Origin blog.csdn.net/weixin_50303783/article/details/113878796