【ros学习笔记】-9 ros基本概念

本文概述了ROS的基本概念,包括节点管理器的作用、节点的编写与命名规则,以及主题(topic)和服务(service)的通信方式。重点介绍了如何使用发布者和订阅者处理数据,并讨论了参数的全局共享和功能包的配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ros 基本概念

1 节点管理器

节点都需要在节点管理器上进行注册才能使用
启动节点管理器:roscore

2 节点

具体的执行单元
不同的节点可以使用不同的语言编写
节点在系统中的名字要唯一

3 通信方式

3.1 话题(topic)

发布者(publisher):发布话题,向话题中传输数据(注:发布者可以创建话题,也可以向已有话题传输数据
订阅者(subscriber):订阅话题,从话题中读取数据
传输方向:单方向
传输的数据类型:消息(文件类型 .msg)
话题有缓冲区(发布和订阅的速度不匹配时,会将数据缓存起来)
一个话题,可以有多个发布者发布这个话题,也可以有多个订阅者订阅该话题

图1在这里插入图片描述
上面第一个图中,pub就是定义的发布者,方框中的是话题(消息类型、话题名),10就是最多缓存10个数据。
方框中的话题若存在,就向这个话题传递数据;若不存在,相当于创建了一个名为topic_pub_name_cpp 的话题。
图2中,发布者发布的消息会到topic_pub_name_cpp 话题中。
由以上可知,让发布者发布话题只需要两行关键代码
在这里插入图片描述在这里插入图片描述由上可知,订阅者订阅话题,只需要一行关键代码,和一个回调函数;回调函数是对 订阅到的话题 的具体操作。
msg文件:

在这里插入图片描述

3.2 服务(service)

服务器(server):服务向服务器发出请求,服务器返回应答
客户端(client):客户端向服务发出请求,服务返回应答
传输方向:双向传输
传输数据类型:.srv
无缓冲区
一个服务只能有一个服务器,但可以有多个客户端
在这里插入图片描述在这里插入图片描述
客户端需要向连接服务,之后向服务发出请求;在客户端中,只修改request中的数值
在这里插入图片描述
在这里插入图片描述
服务器定义时会创建一个服务,服务的消息类型在回调函数中确定;服务器仅仅对response的数据进行修改。
这里说明一下,服务本质就是一个双向传输,给两个方向传输的数据称为request、response;在服务器中虽然也可以修改request中的数据,但request本质就是客户端向服务器传输的数据,对其进行修改也不会影响客户端。
因此,在非特殊情况下,服务器仅修改response(应答)中的数据(response才是服务器发出的数据)
srv 文件:
在这里插入图片描述
上面是请求的消息类型,下面是应答的消息类型

4 参数

全局共享字典
所有节点都可以访问到参数
多用于存储静态数据(参数的数据发生修改,若调用该参数的节点没有重新调用,则在这个节点中,参数的值不会发生改动)
在这里插入图片描述

5 功能包文件

在这里插入图片描述
launch文件、python文件不需要配置
c++文件、msg文件、srv 文件 需要配置
运行launch文件:

roslaunch launch_pkg launch文件.launch

运行python、c++可执行文件
c++

rosrun 包名 可执行文件

python

rosrun 包名 文件名.py
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值