创建ros发布者

该篇为发布者Talker.cpp,后面文章会有Listener.cpp对应代码和CMakeLists.txt设置直接与该篇相连。
本人是理科生,做这文档也是为了以后生活中害怕忘记而发布的,并且希望能帮到大家,发布的越多,入坑起来的快。入坑可难受了,天天抠头发。
注:有点详细,免得大家抠头发,阅读可以直接看代码。


我的代码可以不用订阅者Subscriber也可以使用,记得使用前要在终端打开roscore,还有代码的编译catkin_make


配套代码连接区:
配套订阅者Listener
配套CMakeLists.txt设置

详细解读版

#include <sstream>
#include "ros/ros.h"
#include "std_msgs/String.h"int main(int argc, char **argv)
{//初始化节点,前面两个参数ros默认可以不管,直接背//第三个参数是节点名字,建议和文件名一样,这样出现节点名相同时好排查//因为在ros节点名字不能出现两个及以上的节点名相同ros::init(argc, argv, "Talker");//创建节点句柄,ros默认可以不管,直接背ros::NodeHandle n;//向Master注册一个Publisher(P为大写),并通过TalkMsg传播方式发布String类型的信息,在订阅端通过TalkMsg接收该文件发送的信息//缓冲队列大小为1000ros::Publisher TalkMsg_pub = n.advertise<std_msgs::String>("TalkMsg", 1000);//设置一个调用时间时间,每调用一次( 1/5=0.2s )ros::Rate work_rate(5);//初始一个计数的单位,这个可以不要设置的,无影响int count = 0;//进入while判断,只要该ros节点无异常就是一直执行下去while (ros::ok()){count+=1;//将msg定义为String类型,方便打包发送std_msgs::String msg;//将AllMsgstringstream类型,方便数据组合std::stringstream AllMsg;//将我已成功发送第n信息装入AllMsg中AllMsg << "to" <<  count <<"message"<<count*count;//将AllMsg中的字符串数据存储在msg在msg.data = AllMsg.str();//这条代码可以不要,实现的功能是在该节点终端打印除发送消息ROS_INFO("%s", msg.data.c_str());//发布封装好的消息TalkMsg_pub.publish(msg);//回调函数ros默认背下来就好了ros::spinOnce();//睡眠等待函数,调用一次,休息0.2swork_rate.sleep();}return 0;
}

精简版

#include <sstream>
#include "ros/ros.h"
#include "std_msgs/String.h"
int main(int argc, char **argv)
{ros::init(argc, argv, "Talker");ros::NodeHandle n;ros::Publisher TalkMsg_pub = n.advertise<std_msgs::String>("TalkMsg", 1000);ros::Rate work_rate(5);int count = 0;while (ros::ok()){count+=1;std_msgs::String msg;std::stringstream AllMsg;AllMsg << "to" <<  count <<"message"<<count*count;msg.data = AllMsg.str();ROS_INFO("%s", msg.data.c_str());TalkMsg_pub.publish(msg);ros::spinOnce();work_rate.sleep();}return 0;
}

运行结果

ROS基础---ros通信、ros发布者publisher、publisher.cpp、Talker.cpp相关推荐

  1. 【一学就会的ROS基础入门教程 】03-1 ROS基础编程:ROS工作空间的创建、话题topic的发布与接收、以及话题消息的自定义使用

    [一学就会的ROS基础入门教程 ]03-1 ROS基础编程:ROS工作空间的创建.话题topic的发布与接收.以及话题消息的自定义使用 文前白话 1.创建工作空间与功能包 关于工作空间的介绍 创建开发 ...

  2. ROS基础(二):ros通讯之服务(service)机制

    上一章内容链接: ROS基础(一):ROS通讯之话题(topic)通讯 目录 一.概念 二.实例 1. 小乌龟例程中的service 2. 自定义service 3. 创建服务器节点与客户端节点(c+ ...

  3. ROS基础一之ROS常用指令集合

    ROS常用指令集合 ROS常用指令集合 1.功能包相关指令 2.topic相关指令 3.service相关指令 4.msg/srv相关指令 5.param相关指令 6.node相关指令 7.rqt相关 ...

  4. 【ROS入门21讲】发布者Publisher的编程使用

    [ROS入门21讲]发布者Publisher的编程使用 本文章是针对bilibili古月居up的[ROS入门21讲]所作的笔记,笔记从第8讲开始,主要记录一些关键内容方便查阅. 视频连接:[ROS入门 ...

  5. 【ROS话题通信】发布者和订阅者

    前言 本文记录ROS话题通信的学习过程,便于后续复习.首先明确,ROS中的话题通信,在ROS通信中非常重要,实现了分布式发布接收消息,也是实现了不同编程语言间的解耦,下面记录下自己学习过程中的相关代码 ...

  6. 一 ROS基础教程

    ROS教程 这是小弟的学习笔记,有错求请拍,多指教,谢谢 一 ROS基础知识 ROS文件系统介绍 1.功能包集stack ROS软件包集合,像Navigation Stack,属于导航软件包集合,包含 ...

  7. ROS理论与实践——二、ROS基础

    ROS理论与实践--二.ROS基础 前言 一.创建工作空间 1 什么是工作空间 2 创建流程 二.创建功能包 1 创建命令 2 创建流程 三.ROS通信编程 1 话题编程 1.1 话题编程流程 1.2 ...

  8. 零基础玩转ROS小车

    本文1000字左右,阅读时间大约45分钟,尽可能按照教程自己过一遍,熟练地应用还是需要更多地思考和揣摩. 如有纰漏,请不吝指出,如对读者有一定帮助,某不胜荣幸. 本文作者: AndyJen 联系邮箱( ...

  9. [ROS基础-4] ROS系统框架

    系列文章目录 [ROS基础-1] Linux系统介绍与ubuntu安装(virtualbox) [ROS基础-2] Ubuntu系统基本操作与基本命令讲解 [ROS基础-3] ROS系统安装与基本配置 ...

最新文章

  1. 实战部署MySQL用户认证的Postfix邮件系统(3)
  2. 有关于近期大量数据库暴光的分析
  3. java epoll select_Java 非阻塞 IO 和异步 IO
  4. SQL Server Reporting Services(简称SSRS)
  5. linux运行python脚本语句,如何在Linux下运行Python脚本
  6. 前一天还在聊抢票,第二天就被裁了,年底是互联网行业的寒冬吗?
  7. 第三十讲:Android之Animation(五)
  8. Oracle数据库时间戳转date类型进行判断操作
  9. 从 RNN 到 LSTM (Short-Term Memory)
  10. nginx apache mysql php 常用编译参数
  11. HTML5 实现拼图游戏
  12. CPU性能的三大主要参数
  13. 做程序员10年有感,程序员必须要懂的---转自java诺曼底_kleen
  14. 2021-07-04 【5】
  15. 文理学院的数学计算机方向夏校,美国大学夏校.doc
  16. jquery:选择器【基础选择器、层级选择器、属性选择器和方法操作、过滤选择器、筛选选择器和方法,可见性过滤选择器】
  17. ES限流导致ES数据更新不及时问题
  18. mac虚拟机桌面图标隐藏_「MAC软件推荐」MAC实用软件
  19. html 页面跳转监听,如何监听跳转页面执行结果?
  20. 人工智能专栏第九讲——目标检测

热门文章

  1. 各类Java高质量学习网址
  2. 模拟机械键盘音效的软件
  3. 什么是共模干扰差模干扰共模信号差模信号
  4. JavaSE入门0基础笔记 第二章Java基础语法
  5. 微机原理与接口技术之8255A和8253/8254 必考的编程题
  6. Ubuntu操作系统安装
  7. 嵌入式之linux用户空间与内核空间,进程上下文与中断上下文
  8. 降采样,过采样,欠采样,子采样,下采样
  9. 使用nuget 打包并上传 nuget.org
  10. 持续集成服务 Travis CI 教程