news 2026/7/14 4:59:25

挑战一周学会ROS(第二天)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
挑战一周学会ROS(第二天)

以小海龟为例

查看话题列表

rosnode list

发布话题消息

rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist"linear:

x:1.0

y:0.0

z:0.0

angular:

x:0.0

y:0.0

z:0.0"

发布服务请求

rosservice call /spawn :x:5.0

y:5.0

theta:0.0

name:'turtle2'"

话题记录rosbag record -a-O cmd_record

话题复现rosbag play cmd_record.bag

工作空间是一个存放工程开发相关文件的文件夹

src:代码空间

build:编译空间

devel:开发空间

install:安装空间

创建工作空间:

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws/src

catkin_init_workspace

cd ~/catkin_ws/

catkin_make

source devel/setup.bash

echo $ROS_PACKAGE_PATH

如何实现一个发布者

初始化ROS节点

向ROS Master注册节点信息,包括发布的话题名还有话题中的消息类型

创建消息数据

按照一定频率循环发布消息

如何实现一个订阅者

初始化ROS节点

订阅需要的话题

循环等待话题消息,接收到消息后进入回调函数

在回调函数中完成消息处理

如何实现一个客户端

初始化ROS节点

创建一个Client实例

发布服务请求数据

等待Server处理之后的应答结果

角色通信模式适用场景是否需要回复
Publisher 发布者话题、持续流式广播传感器高频数据(激光、图像、里程计)、持续速度指令无回复,单向发送
Client 客户端服务、单次请求响应单次指令、状态查询、开关控制、带反馈操作必须等待服务端返回结果

当你需要主动发起一次性任务、查询数据,并且需要获取执行结果反馈时,必须创建客户端Client

虽然只会用到一个软件包里面的某个节点但是下载时候还是会把整个包都下载下来,节点不能脱离包而单独存在

创建Package软件包

创建在~/catkin_ws/src文件夹里面

catkin_create_pkg<包名><依赖项名> 用catkin工具创建一个Package软件包

rospy roscpp std_msgs 这三个为依赖包,即通用项

指令

roscd 在终端中进入指定软件包的文件地址

这个地址里面存放的全是ROS的Package包

这些包的来源

/opt/ros/<ROS版本>/share 软件包来源

sudo apt-get install ros-<ROS版本>-desktop-full 基础包

sudo apt-get install ros-<ROS版本>-xxx 独立扩展包

而这些通过apt下载的这些软件包都是现成的可执行文件,可以直接运行,而catkin工作空间的软件包都是源码文件,需要编译成可执行文件才能运行

像这样成功编译

下面运行第一个ros节点

先启动roscore

确定ROS核心处于运行状态

终端执行 rosrun <包名> <节点文件名>

恭喜你!第一个node程序成功出现

ctrl shift +w 可以强制终止该终端

欧克终于结束一个简单的Package 和node

步骤大致如下:

1、使用catkin_create_pkg创建一个软件包

2、在软件包的src文件夹下创建一个cpp源码文件

3、在节点的源码文件中include包含ros的头文件

4、构建一个main函数,并在函数的开头执行ros::init()初始化

5、构建while循环,循环的条件为ros::ok()

6、在CMakeLists.txt中设置节点源码的编译规则

7、编译运行

下面开始Topic话题还有Message消息(ROS的主要通信方式)

在ROS中的众多节点是如何通讯的

1、话题Topic是节点之间进行持续通讯(消息在一直不停的发送接收)的一种形式

2、话题通讯的两个节点通过话题的名称建立起话题通讯连接

3、话题中通讯的数据,叫消息(message)

4、消息message通常会按照一定的频率持续不断的发送,以保证消息数据的实时性

5、消息的发送方叫做话题的发布者Publisher

6、消息的接收方叫做话题的订阅者Subsciber

补充:

一个ROS节点网络中,可以同时存在多个话题

一个话题可以多个发布者,也可以有多个订阅者

一个节点可以对多个话题进行订阅,也可由发布多个话题

不同的传感器消息通常会拥有各自独立话题名称每个话题只有一个发布者

机器人速度指令话题通常会有多个发布者,但是同一时间只能有一个发言人

我们在生成消息包的时候通常有不同的类型

调整发送频率

发布一个话题和发送消息的操作

小结:

1、确定话题名称和消息类型(话题名称不能使用中文字符,否则会报错)

2、在代码文件中include消息类型对应的头文件

3、在mian函数中通过Nodehandler大管家发布一个话题并得到消息发送对象

4、生成要发送的消息包并进行发送数据的赋值

5、调用消息发送对象的publish()函数将消息包发送到话题当中

常用指令

rostopic list 列出当前系统中所有活跃着的话题

rostopic echo 主题名称 显示指定话题中发送的消息包内容

rostopic hz 主题名称 统计指定话题中消息包的发送频率(检测一个话题是否有消息在发送,以及发送的频率是否符合需求)

这样的话两者之间的话题通讯就算完成了

话题订阅

1、确定话题的名称和消息类型

2、在代码文件中include<ros.h>和消息类型对应的头文件

3、在main函数中通过NodeHandler大管家订阅一个话题并设置消息接收回调函数

4、定义一个回调函数,对接收到的消息包进行处理

5、main函数中需要执行ros::spinOnce(),让回调函数能够响应接收到的消息包

常用工具

rqt_graph

图形化显示当前系统活跃的节点以及节点之间的话题通讯关系

使用launch文件一次启动多个节点

xml语法:

<标记名称 属性名1="属性值1" ...>内容</标记名称>

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 4:59:14

从让 AI 写代码到让 AI 按规则工作:嵌入式工程师的实践思考

1. 我第一次意识到&#xff1a;AI 约束也需要架构 我原来的规则是不断叠加出来的&#xff1a;遇到一个问题&#xff0c;就让 AI 把当次经验写进去。久而久之&#xff0c;规则混在一起、杂乱无章&#xff0c;无论是我还是 AI&#xff0c;都很难根据实际场景快速定位应该遵循什么…

作者头像 李华
网站建设 2026/7/14 4:58:24

基于XGBoost+LSTM双模型的股票预测系统——“智语析金”智能投研平台

1. 从理论到实践的量化探索 项目背景&#xff1a;传统的股票技术分析依赖人工盯盘与形态识别&#xff0c;主观性强且效率低下。随着AI技术的下沉&#xff0c;我们能否让机器自动学习历史数据中的规律&#xff0c;辅助我们进行投资决策&#xff1f;这便是本项目——“智语析金”…

作者头像 李华
网站建设 2026/7/14 4:54:59

VC++机器视觉实战:从OpenCV集成到工业级算法优化

1. 项目概述&#xff1a;当机器视觉遇上经典VC在AI和深度学习框架满天飞的今天&#xff0c;提起用Visual C&#xff08;VC&#xff09;做机器视觉开发&#xff0c;很多年轻开发者可能会觉得有些“复古”。但恰恰是这种“复古”组合&#xff0c;在工业检测、嵌入式边缘计算和高性…

作者头像 李华
网站建设 2026/7/14 4:54:45

【提示词工程 03 对话模型对齐】从基础模型到可用助手的演进

第三章 对话模型对齐&#xff1a;从基础模型到可用助手的演进 本章概述 第二章系统讲解了基础大语言模型的底层运行机制&#xff0c;明确了其文档补全的本质、词元化处理逻辑与自回归生成特性。但原始的基础大模型并不能直接作为对话助手面向用户使用&#xff0c;其输出存在安全…

作者头像 李华
网站建设 2026/7/14 4:53:27

21-缓存越用越脏-给本地数据加版本过期和重建策略

HarmonyOS 本地缓存变脏后怎么恢复&#xff1a;版本、过期与重建缺一不可 摘要&#xff1a;首页摘要缓存能加速首屏&#xff0c;却会随着字段升级、用户切换和时间流逝变成旧事实。本文为缓存包一层包含 schemaVersion、生成时间和过期时间的信封&#xff1b;读取时按版本和时效…

作者头像 李华
网站建设 2026/7/14 4:52:49

AI Token工厂爆发:清华师生创业半年融资10亿,背后是门什么生意

引言&#xff1a;当资本盯上"生产 Token"的生意 半年&#xff0c;十亿。 这不是某款爆火 App 的融资速度&#xff0c;而是一批由清华师生背景团队创立、专门"生产 AI 训练数据"的创业公司&#xff0c;在一级市场被投资人抢筹的真实写照。 当大模型的故事从…

作者头像 李华