Explicación detallada del código C ++ del tema de lanzamiento de ROS

Defina un hablante de nodo que publique el tema, publique en la conversación del tema, tipo de mensaje cadena El enlace del código de suscriptor de su tema: ROS suscribe el tema Código C ++ explicación detallada

#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;

}

Supongo que te gusta

Origin blog.csdn.net/weixin_50303783/article/details/113878796
Recomendado
Clasificación