C++入门 基于ros的话题通信

一、 开发环境

ubuntu20.04
ros版本noetic
参考视频
https://www.bilibili.com/video/BV1Ci4y1L7ZZ/?p=52&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=4cd1b6f268e2a29a11bea5d2568836ee

二、 创建两个功能包

//创建工作空间
工作空间目录中执行catkin_make
//创建两个功能包
工作空间中的src目录中执行catkin_create_pkg publisher roscpp std_msgs
工作空间中的src目录中执行catkin_create_pkg subscriber roscpp std_msgs

三、 编写发布者

main.cpp

#include "ros/ros.h"
#include "std_msgs/String.h"#include <sstream>//发布者
int main(int argc,char *argv[])
{//中文支持setlocale(LC_ALL,"");//初始化ros节点//指定节点名称ros::init(argc,argv,"publisher");//创建ros节点句柄ros::NodeHandle n;//创建发布者对象ros::Publisher pub = n.advertise<std_msgs::String>("fang",10);//编写发布逻辑std_msgs::String msg;//发布频率ros::Rate rate(1);int count = 0;//如果节点活着循环发布while(ros::ok){count++;std::stringstream ss;ss << "hello:" << count;msg.data = ss.str();pub.publish(msg);ROS_INFO("发布数据:%s",msg.data.c_str());rate.sleep();ros::spinOnce();}return 0;
}//通过ros工具打印话题消息
//rostopic echo fang

四、 编写订阅者

main.cpp

#include "ros/ros.h"
#include "std_msgs/String.h"#include <sstream>//回调函数
void doMessage(const std_msgs::String::ConstPtr &msg)
{ROS_INFO("订阅数据:%s",msg->data.c_str());
}//订阅者
int main(int argc,char *argv[])
{//中文支持setlocale(LC_ALL,"");//初始化ros节点//指定节点名称ros::init(argc,argv,"subscriber");//创建ros节点句柄ros::NodeHandle n;//创建订阅者对象ros::Subscriber pub = n.subscribe("fang",10,doMessage);//回头处理回调函数ros::spin();return 0;
}//通过ros工具打印话题消息
//rostopic echo fang

四、 运行截图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/839750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

英伟达:AI之火还在燃烧!

昨晚&#xff0c;全球市场屏息以待的一家公司财报终于发布了&#xff0c;没有超出大家预期的是&#xff0c;他还是超预期了。 大家当然都知道我们要说的是——英伟达&#xff01; 如今&#xff0c;全球大模型之Z激Z正酣&#xff0c;AI芯片装备竞赛需求猛烈&#xff0c;作为AI…

浅析智能体开发(第二部分):智能体设计模式和软件架构

大语言模型&#xff08;LLM&#xff09;驱动的智能体&#xff08;AI Agent&#xff09;展现出许多传统软件所不具备的特征。不仅与传统软件的设计理念、方法、工具和技术栈有显著的差异&#xff0c;AI原生&#xff08;AI Native&#xff09;的智能体还融入了多种新概念和技术。…

外汇天眼:塞舌尔券商JustMarkets被控为诈骗平台,众多交易纠纷背后的真相究竟为何?

近年来外汇市场因为具有高流动性、交易时间长、不容易被操控等特色&#xff0c;受到愈来愈多投资人重视&#xff0c;相关交易愈来愈火热。外汇天眼身为全球最权威的经纪商查询平台&#xff0c;不仅致力于收录交易商信息&#xff0c;也经常发布券商解析与测评文章。最近我们发现…

IDEA 自定义注解(类注释、方法注释)

一、生成类注释 1、打开设置位置 打开File —> Settings —> Editor —> File and Code Templates —> Files —> Class 2、将自定义的类注解规则&#xff0c;复制到Class中。 /** * * 功能: * * 作者: 暗自着迷 * * 日期: ${YEAR}-${MONTH}-${DAY} ${HOU…

3D 高斯泼溅(Gaussian Splatting)-3D重建的3DGS时代

3D重建自从NeRfs出现之后又热闹了一次&#xff0c;3D GS技术一时间燃变了整个三维重建和Slam领域&#xff0c;几个月不见&#xff0c;沧海桑田。 NeRF貌似已成为过去式&#xff0c;三维重建进入了3DGS时代&#xff0c;且3DGS在各方面比NeRF落地更快。3D 高斯泼溅&#xff08;S…

React里面useMemo和useCallBack的区别

useMemo 和 useCallback 接收的参数都是一样&#xff0c;第一个参数为回调&#xff0c;第二个参数为要依赖的数据。 相同部分&#xff1a;都是依赖数据发生变化&#xff0c;才会去更新缓存数据 不同部分&#xff1a; useMemo缓存的是二次计算的数据&#xff0c;主要用于缓存…

加密与解密(第四版)】第二十四章笔记

第二十四章 .NET平台加密解密 暂时不看 https://learn.microsoft.com/zh-cn/dotnet/core/introduction https://www.cnblogs.com/1996V/p/9037603.html https://zhuanlan.zhihu.com/p/134174688

Docker-数据卷的挂载

文章目录 数据卷概念数据卷实现机制数据卷特性数据卷操作数据卷挂载通用命令匿名挂载具名挂载数据卷继承容器数据卷只读容器数据卷读写-默认 总结 数据卷概念 为了很好的实现数据保存和数据共享&#xff0c;Docker提出了Volume这个概念&#xff0c;简单的说就是绕过默认的联合文…

Java(十)---抽象类和接口

文章目录 前言知识回顾1.抽象类1.1.抽象类语法1.2 抽象类特性 2.接口2.1.接口的概念2.2 语法规则2.3 接口使用2.4 接口特性2.5 实现多个接口 3.Object类3.1 获取对象信息3.2.对象比较equals方法 4.接口使用实例4.1.Comparable4.2.Comparator4.3.Cloneable深拷贝和浅拷贝 前言 …

Flutter 中的 Scaffold 小部件:全面指南

Flutter 中的 Scaffold 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;Scaffold 是一个非常重要的 widget&#xff0c;它为 Material Design 中的布局提供了一个基础的结构。Scaffold 通常作为应用的主要布局容器&#xff0c;提供了管理应用栏&#xff08;AppBar&…

新定义RD8T36P48点亮LED--汇编

其实汇编和C语言差不多&#xff0c;简单的东西用汇编挺好&#xff0c;中等及以上复杂度的程序还是C语言更灵活 直接在keil新建好工程&#xff0c;选好芯片型号和下载方式&#xff0c;再创建一个.asm文件并添加到工程&#xff0c; 工程创建完如图 工程配置 代码 ORG 0000HL…

两数交换,数组查找奇数个数的数(位运算)

文章目录 一、异或运算&#xff1a;1.1 Demo1.2 面试题 一、异或运算&#xff1a; 1.1 Demo 0和N进行异或运算都等于N 任何一个数和自己异或运算都等于0 且异或运算满足交换率 a^b b^a eg&#xff1a; a 甲 &#xff0c; b 已 那么则有 a a^b ​ b a^b ​ a a^b 故有&am…

如何理解数字孪生?数字孪生三维可视化有什么关系?

随着科技的飞速发展和数字化转型的浪潮&#xff0c;数字孪生技术逐渐崭露头角&#xff0c;并在多个领域展现出巨大的潜力。而在这股技术革新的潮流中&#xff0c;数字孪生三维可视化以其直观、精确和动态的特点&#xff0c;成为了推动数字化转型的重要部分。 一、数字孪生的魅…

正则项学习笔记

目录 1. L2 正则化 岭回归 1.1 L2 norm计算例子 2. L1 正则化 3. 弹性网正则化 4. Dropout 1. L2 正则化 岭回归 在 PyTorch 中&#xff0c;L2 正则化通常通过设置优化器的 weight_decay 参数实现。以下是一个简单的例子&#xff1a; 介绍博文&#xff1a; 正则化(1)&a…

Java数据结构与算法(翻转二叉树)

前言 翻转二叉树的规则: 1.将二叉树所有节点以根节点为中心进行左右交换。 实现原理 递归实现:采用后续遍历的方式交换节点。同样也可以采用前序递归的方式&#xff0c;必须按分层替换。所以不可以用中序递归方式。 1.递归退出条件:节点的值为空&#xff0c;返回null。 2…

八国多语言微盘微交易所系统源码 单控点控 K线完好

安装环境linux NGMySQL5.6PHP7.2&#xff08;函数全删&#xff09;pm2管理器&#xff08;node版本选择v12.20.0&#xff09; config/ database.php 修改数据库链接 设置运行目录 public 伪静态thinkphp

C语言----深入理解指针(1)

1.内存地址 内存单元的编号 地址 指针 cpu访问内存中的某个字节空间&#xff0c;必须知道这个字节空间在内存的什么位置&#xff0c;而因为内存中字节很多&#xff0c;所以需要给内存进行编址 /int main() //{ // int a 20;//创建变量的本质其实是在内存中申请空间 //…

css左右滚动互不影响

想实现左右都可以滚动&#xff0c;且互不影响。 只需要再左边的css里面 .threedlist {cursor: pointer;width: 280px;position: fixed;height: 100vh; /* 定义父容器高度 */overflow-y: auto; /* 只有在内容超过父容器高度时才出现滚动条 */} 如果想取消滚动条样式 .threedli…

PHP深度探索:从基础到实战,打造高效Web应用

PHP深度探索&#xff1a;从基础到实战&#xff0c;打造高效Web应用 PHP基础概念与环境搭建PHP简介环境搭建 PHP基础语法输出与变量控制结构条件判断循环 函数与数组 实战案例&#xff1a;简易博客系统数据库连接文章发布功能表单提交提交处理 安全性与性能优化安全实践性能优化…

【设计模式深度剖析】【4】【创建型】【建造者模式】| 类比选购汽车的过程,加深理解

&#x1f448;️上一篇:抽象工厂模式 | 下一篇:原型模式&#x1f449;️ 目录 建造者模式概览定义英文原话直译如何理解呢&#xff1f;建造者模式将对象的建造过程给抽象出来了类比选购汽车 4个角色UML类图1. 抽象建造者&#xff08;Builder&#xff09;角色2. 具体建造者…