当前位置: 首页 > 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…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...