当前位置: 首页 > news >正文

ROS笔记

自定义消息的发布

1.创建空间+包

1.创建ROS工作空间

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
创建工作空间,编译设置环境

2.创建工作空间中的ROS包

cd ~/catkin_ws/src
catkin_create_pkg your_package std_msgs rospy roscpp message_generation

 创建一个名为your_package的ROS包,依赖于std_msgsrospyroscppmessage_generation.

2。创建自定义消息文件

定义消息结构

cd ~/catkin_ws/src/your_package/msg
touch Person.msg

在msg里输入

string name
int32 age
float32 height

 3.配置CMakeLists.txt和package.xml

修改CMakeLists.txt

cd ~/catkin_ws/src/your_package
gedit CMakeLists.txt

CMakeLists.txt文件中添加

add_message_files(FILESPerson.msg
)generate_messages(DEPENDENCIESstd_msgs
)find_package(catkin REQUIRED COMPONENTSroscpprospystd_msgsmessage_generation
)catkin_package(CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
)add_executable(publisher_node src/publisher_node.cpp)
target_link_libraries(publisher_node ${catkin_LIBRARIES})

修改package.xml

gedit package.xml

package.xml文件中添加 

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

4. 编写发布者代码

 1.创建发布者节点文件

cd ~/catkin_ws/src/your_package/src
touch publisher_node.cpp

2.编辑发布者节点文件

gedit publisher_node.cpp

在打开的publisher_node.cpp文件中输入 

#include <ros/ros.h>
#include "your_package/Person.h"  // 包含自定义消息头文件int main(int argc, char **argv)
{ros::init(argc, argv, "publisher_node");ros::NodeHandle nh;ros::Publisher pub = nh.advertise<your_package::Person>("person_topic", 10);ros::Rate rate(1);  // 设置发布频率while (ros::ok()){your_package::Person person;person.name = "ganqianzhao";person.age = 22;person.height = 1.75;pub.publish(person);ROS_INFO("发布消息:%s, %d, %.2f", person.name.c_str(), person.age, person.height);rate.sleep();}return 0;
}

5. 编译和运行

编译项目

cd ~/catkin_ws
catkin_make
source devel/setup.bash

运行ROS核心

roscore

 运行发布者节点

rosrun your_package publisher_node

6. 查看发布的消息 

rostopic list  列出当前所有活跃的主题

查看消息内容:rostopic echo /person_topic    会实时显示发布到/person_topic主题上的消息内容,包括姓名、年龄和身高信息.

相关文章:

ROS笔记

自定义消息的发布 1.创建空间包 1.创建ROS工作空间&#xff1a; mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make source devel/setup.bash 创建工作空间&#xff0c;编译设置环境 2.创建工作空间中的ROS包&#xff1a; cd ~/catkin_ws/src catkin_create_pkg your_pa…...

在 Linux 上调试 C++ 程序

在 Linux 上调试 C 程序是一个常见的开发任务&#xff0c;Linux 提供了多种强大的工具来帮助你进行调试。以下是常用的调试方法和工具. 1. 使用 GDB (GNU Debugger) GDB 是最常用且功能强大的命令行调试器&#xff0c;适用于 C、C 和其他语言。它允许你逐步执行代码、设置断点…...

让跨 project 联查更轻松,SLS StoreView 查询和分析实践

作者&#xff1a;章建&#xff08;处知&#xff09; 概述 日志服务 SLS 是云原生观测和分析平台&#xff0c;为 Log、Metric、Trace 等数据提供大规模、低成本、实时的平台化服务。SLS 提供了多地域支持 [ 1] &#xff0c;方便用户可以根据数据源就近接入 SLS 服务&#xff0…...

20240107-类型转换

1. 自动类型转换 不损失数据精度的前提下&#xff0c;可自动完成变量的类型转换&#xff1b;不损失数据精度指不将超出变量可表示范围的值赋给该变量。 2.强制类型转换 若出现精度损失&#xff0c;java不会自动完成类型转换&#xff0c;需强制进行&#xff0c;见下代码的第8…...

关于Linux PAM模块下的pam_listfile

讲《Linux下禁止root远程登录访问》故事的时候&#xff0c;说好会另开一篇讲讲pam_listfile。我们先看看pam_listfile的man文档怎么介绍的。 下面这些就好比人物的简介&#xff0c;甚是恼人&#xff1b;让人看得不明就里&#xff0c;反正“他大舅他二舅都是他舅”。可以直接跳…...

OKHttp调用第三方接口,响应转string报错okhttp3.internal.http.RealResponseBody@4a3d0218

原因分析 通过OkHttp请求网络&#xff0c;结果请求下来的数据一直无法解析并且报错&#xff0c;因解析时String res response.body().toString() 将toString改为string即可&#xff01;...

弱电与电力工程领域,如何通过工程项目管理软件提升效率

在弱电与电力工程领域&#xff0c;通过益企工程云等工程项目管理软件提升效率的方法主要体现在以下几个方面&#xff1a; 1.智能化管理 自动化流程&#xff1a;益企工程云通过自动化处理日常任务和流程&#xff0c;减少手动操作&#xff0c;提高工作效率。 智能预警&#xff…...

引领实时数据分析新时代:阿里云实时数仓 Hologres

在数字化和智能化转型的浪潮中&#xff0c;数据已成为企业决策和运营优化的重要资产。传统的数据仓库解决方案虽然在一定程度上能够帮助企业管理数据&#xff0c;但随着业务需求的不断变化&#xff0c;实时数据处理和高效分析的能力显得愈加重要。为了应对这一挑战&#xff0c;…...

什么是中间件中间件有哪些

什么是中间件&#xff1f; 中间件&#xff08;Middleware&#xff09;是指在客户端和服务器之间的一层软件组件&#xff0c;用于处理请求和响应的过程。 中间件是指介于两个不同系统之间的软件组件&#xff0c;它可以在两个系统之间传递、处理、转换数据&#xff0c;以达到协…...

css中的部分文字特性

文章目录 一、writing-mode二、word-break三、word-spacing;四、white-space五、省略 总结归纳常见文字特性&#xff0c;后续补充 一、writing-mode 默认horizontal-tbwriting-mode: vertical-lr; 从第一排开始竖着排&#xff0c;到底部再换第二排&#xff0c;文字与文字之间从…...

PyQt5 UI混合开发,控件的提升

PromoteLabelTest.py 提升的类 import sys from PyQt5.QtWidgets import QApplication, QWidget,QVBoxLayout,QTextEdit,QPushButton,QHBoxLayout,QFileDialog,QLabelclass PromoteLabel(QLabel):def __init__(self,parent None):super().__init__(parent)self.setText("…...

IP查询于访问控制保护你我安全

IP地址查询 查询方法&#xff1a; 命令行工具&#xff1a; ①在Windows系统中&#xff0c;我们可以使用命令提示符&#xff08;WINR&#xff09;查询IP地址&#xff0c;在弹窗中输入“ipconfig”命令查看本地网络适配器的IP地址等配置信息&#xff1b; ②在Linux系统中&…...

SpringBoot数据层解决方案

文章目录 1. 数据层解决方案2. 数据源技术 1. 数据层解决方案 现有数据层解决方案技术选型&#xff1a;Druid MyBatis-Plus MySQL 数据源&#xff1a;DruidDataSource持久化技术&#xff1a;MyBatis-Plus / MyBatis数据库&#xff1a;MySQL 下面的研究就分为三个层面进行研…...

前端数据模拟器 mockjs 和 fakerjs

功能&#xff1a;帮助前端生成随机数据&#xff0c;独立于后端单独开发 一、mockjs 安装&#xff1a;npm install mockjs 优点&#xff1a;官网是中文。 缺点&#xff1a;目前该库已经无人维护&#xff0c;也没人解决github上的bug。 官网 github地址 二、fakerjs 安装&#xf…...

Python 类 Class

在 Python 中&#xff0c;类&#xff08;Class&#xff09;是一种创建对象&#xff08;Object&#xff09;的模板&#xff0c;它允许我们定义对象的属性和方法。类是 Python 中实现面向对象编程&#xff08;OOP&#xff09;的核心结构。 定义一个类 定义一个类的基本语法如下…...

PHP语言的并发编程

PHP语言的并发编程 引言 随着互联网技术的迅速发展&#xff0c;Web 应用的复杂性和用户并发请求的增加&#xff0c;要求开发者在构建高性能应用时考虑并发编程。并发编程允许程序在同一时间执行多个任务&#xff0c;这对于处理高流量网站、API 和实时应用程序至关重要。虽然 …...

小米智能哑铃上市,代理 IP 视角下的智能健身新篇

在智能科技与健康生活深度融合的时代&#xff0c;小米以其敏锐的市场洞察力和强大的创新能力&#xff0c;不断拓展智能生态版图。米家智能哑铃的发布&#xff0c;无疑是其在智能健身领域的又一重要举措。而当我们从代理 IP 的独特视角来审视这一产品&#xff0c;会发现其中蕴含…...

业务日志设计

当一个项目足够大的时候&#xff0c;我们需要将统计系统完全独立出去&#xff0c;那么就无法避免数据采集的问题&#xff0c;我们可以在业务触发处增加log日志来记录当前变化的原始数据&#xff0c;提供统计系统进行采集 设计一个统计系统的日志记录机制时&#xff0c;主要需要…...

对话|全年HUD前装将超330万台,疆程技术瞄准人机交互“第一屏”

2024年&#xff0c;在高阶智驾进入快速上车的同时&#xff0c;座舱人机交互也在迎来新的增长点。Chat GPT、AR-HUD、车载投影等新配置都在带来新增量机会。 高工智能汽车研究院监测数据显示&#xff0c;2024年1-10月&#xff0c;中国市场&#xff08;不含进出口&#xff09;乘用…...

【论文笔记】QLoRA: Efficient Finetuning of Quantized LLMs

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: QLoRA: Efficient Finetun…...

2026年怎么部署OpenClaw?2分钟云端保姆级搭建及百炼Coding Plan指南

2026年怎么部署OpenClaw&#xff1f;2分钟云端保姆级搭建及百炼Coding Plan指南。本文面向零基础用户&#xff0c;完整说明在轻量服务器与本地Windows11、macOS、Linux系统中部署OpenClaw&#xff08;Clawdbot&#xff09;的流程&#xff0c;包含环境配置、服务启动、Skills集成…...

终极指南:如何使用BOTW存档编辑器定制你的海拉鲁冒险

终极指南&#xff1a;如何使用BOTW存档编辑器定制你的海拉鲁冒险 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 你是否曾在《塞尔达传说&#xff1a;旷野之息》的…...

模组管理的智能革命:Nexus Mods App如何重塑游戏体验

模组管理的智能革命&#xff1a;Nexus Mods App如何重塑游戏体验 【免费下载链接】NexusMods.App Home of the development of the Nexus Mods App 项目地址: https://gitcode.com/gh_mirrors/ne/NexusMods.App 在游戏模组的世界里&#xff0c;玩家常常面临一个两难选择…...

影子货币:商家跑路,储值卡变成废纸

中国影子货币全图谱 目录 中国影子货币全图谱 一、第一类:银行表外影子货币(规模最大,约50万亿元) 1. 银行现金管理类理财产品(规模约18万亿元) 2. 银行非保本理财产品(规模约22万亿元) 3. 银行同业存单与同业理财(规模约10万亿元) 二、第二类:非银金融机构影子货币…...

2026年如何集成OpenClaw?4分钟阿里云零门槛集成及百炼Coding Plan流程

2026年如何集成OpenClaw&#xff1f;4分钟阿里云零门槛集成及百炼Coding Plan流程。本文面向零基础用户&#xff0c;完整说明在轻量服务器与本地Windows11、macOS、Linux系统中部署OpenClaw&#xff08;Clawdbot&#xff09;的流程&#xff0c;包含环境配置、服务启动、Skills集…...

SD-PPP深度解析:如何用ComfyUI与Photoshop打造高效AI创作工作流

1. 为什么你需要SD-PPP插件&#xff1f; 如果你经常在Photoshop里做设计&#xff0c;又对AI绘画感兴趣&#xff0c;那一定遇到过这样的烦恼&#xff1a;在PS里画到一半想加点AI生成的元素&#xff0c;得先导出图片&#xff0c;再打开Stable Diffusion网页端或ComfyUI&#xff0…...

大模型版本控制失效、权重污染、环境不一致——这8类CI/CD反模式正在 silently 毁掉你的AI产品力

第一章&#xff1a;大模型工程化CI/CD流水线设计的范式演进 2026奇点智能技术大会(https://ml-summit.org) 传统软件CI/CD关注代码编译、单元测试与服务部署&#xff0c;而大模型工程化流水线需协同处理数据版本、模型权重、推理服务、评估指标与合规性检查等多维资产。范式演…...

终极指南:如何免费解锁Cursor Pro高级功能,告别试用限制困扰

终极指南&#xff1a;如何免费解锁Cursor Pro高级功能&#xff0c;告别试用限制困扰 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve…...

灵巧手感知系统进阶:触觉传感器的分类、原理与选型指南

1. 触觉传感器&#xff1a;灵巧手的"神经末梢" 当你用手指轻轻捏起一颗葡萄时&#xff0c;能清晰感受到它的柔软度、表面纹理甚至内部汁液的流动。这种精妙的触觉能力&#xff0c;正是机器人灵巧手梦寐以求的感知境界。触觉传感器就是实现这种能力的核心部件&#xf…...

若依前后端分离版部署实战:Nginx反向代理+生产环境优化配置

若依前后端分离版生产环境部署全攻略&#xff1a;Nginx调优与安全实践 第一次将若依框架部署到生产环境时&#xff0c;我遇到了前端资源加载缓慢、后端接口频繁超时的问题。经过多次实战调优&#xff0c;终于总结出一套兼顾性能与安全的部署方案。本文将分享从基础部署到深度优…...