ROS第二周读书笔记

本文介绍了ROS机器人的核心概念,包括ROS架构的OS层、中间层和应用层,重点讲解了计算图中的节点、消息、话题、服务和节点管理器。ROS的通信机制包括话题和服务的通信方式,以及参数管理。此外,文章还提到了ROS的文件系统,如功能包和元功能包,并概述了ROS的开源社区资源。

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

本次读书笔记主要记录了本周关于《ROS机器人开发实践》的学习内容。

《ROS机器人开发实践》第二章 ROS架构 目录

  • 2.1 ROS架构设计
  • 2.2 计算图

                2.2.1 节点

                2.2.2 消息

                2.2.3 话题

                2.2.4 服务

                2.2.5 节点管理器

  • 2.3 文件系统

                2.3.1 功能包

                2.3.2 元功能包

  • 2.4 开源社区
  • 2.5 ROS的通信机制

                2.5.1 话题通信机制

                2.5.2 服务通信机制

                2.5.3 参数管理机制

  • 2.6 话题与服务的区别

第二章 ROS架构


2.1 ROS架构设计

        我们都知道,ROS是一个优秀的机器人分布式框架,那么ROS的架构具体是怎样的呢?其实很简单,ROS的架构设计可以分为以下三个层次:

        1.OS层

        首先我们要明确ROS机器人操作系统和windows、Linux不一样,ROS不是一个传统意义上的操作系统,因为它无法在计算机硬件上直接运行,而是需要依托于Linux系统。正因如此,在前面的准备过程中,我们会发现,安装ROS前最重要的一步就是先安装Ubuntu操作系统(Ubuntu在ROS官网上支持度最高,也可以使用macROS等操作系统),这就是为什么无论你是选择虚拟机还是选择双系统的方式,安装Ubuntu都是不可或缺的一步。

        2.中间层

        中间层是用来实现ROS核心通信机制以及众多机器人开发库的,虽然ROS对Linux更加青睐,但是Linux是一个通用系统,所以它不会对ROS有丝毫的关照,所有关于机器人开发的中间件都得靠ROS自己来完成,所以ROS在中间层做了大量的工作,如:TCPROS/UDPROS通信系统。

        3.应用层

        应用层有一个负责保证节点正常运行的管理者——Master。


2.2 计算图

  • 2.2.1 节点

        前面说到应用层有一个Master管理者负责节点的正常运行,那么什么是节点呢?节点(Node)就是一些执行运算任务的进程,一个系统一般由多个节点组成,也可以称为“软件模块”。简单来说,一个节点就是ROS中与其他节点进行联系的可执行文件(事实上节点就是package中的一个可执行文件)。举一个最简单的例子:

 当我们成功运行turtlesim package中的turtlesim_node节点后,输入命令:

rosnode list

 去查看当前正在运行的节点,我们会发现,我们已经成功运行了海龟节点,turtlesim节点就是一个简单的节点。结果如图所示:

 

  • 2.2.2 消息

         节点之间最重要的通信机制就是基于发布/订阅模型的消息通信。每一个消息都是一种严格的数据结构,支持标准数据类型,也支持嵌套结构和数组,还可以根据需求由开发者自主定义。

  • 2.2.3 话题

        消息以一种发布/订阅的方式传递。一个节点可以针对一个给定的话题发布消息,也可以关注某个话题并订阅特定类型的数据。发布者和订阅者并不了解彼此的存在,系统中可能同时有多个节点发布或者订阅同一个话题的消息。

  • 2.2.4 服务

        与话题不同,ROS中只允许有一个节点提供指定命名的服务,另外服务是一种同步传输模式,其基于客户端/服务器模型,包含两部分通信数据类型——分别用于请求和应答,类似于Web服务器。

  •  2.2.5 节点管理器

        节点管理器(ROS Master)的作用和它的名字一样,它是一个管理者,负责管理所有的节点运行地有条不紊。节点管理器的存在使得节点能够找到适时的其他节点,实现交换信息或调用服务,保证整个系统的正常运行。


2.3 文件系统

                2.3.1 功能包

        功能包是ROS软件中的基本单元,包含ROS节点、库、配置文件等。

                2.3.2 元功能包

        在新版本的ROS中,将原有功能包集的概念升级为“元功能包”,主要作用都是组织多个用于同一目的的功能包。例如一个ROS导航的元功能包中会包含建模、定位、导航等多个功能包。


2.4 开源社区


ROS开源社区中的资源非常丰富,而且可以通过网络共享以下软件和知识(见下图)。

  • 发行版(Distribution):类似于Linux发行版,ROS发行版包括一系列带有版本号、可以直接安装的功能包,这使得ROS的软件管理和安装更加容易,而且可以通过软件集合来维持统一的版本号。
  • 软件源(Repository):ROS依赖于共享网络上的开源代码,不同的组织机构可以开发或者共享自己的机器人软件。
  • ROS wiki:记录ROS信息文档的主要论坛。所有人都可以注册、登录该论坛,并且上传自己的开发文档、进行更新、编写教程。
  • 邮件列表(Mailing List):ROS 邮件列表是交流ROS更新的主要渠道,同时也可以交流ROS开发的各种疑问。
  • ROS Answers:ROS Answers 是一个咨询ROS相关问题的网站,用户可以在该网站提交自己的问题并得到其他开发者的回答。
  • 博客(Blog):发布ROS社区中的新闻、图片、视频(http://www.ros.org/news)。
     


2.5 ROS的通信机制

                2.5.1 话题通信机制

        话题在ROS中使用的最为频繁,其通信模型也较为复杂。在ROS中有两个节点:Talker和Listener,即发布者和订阅者。这里二者启动顺序无强制要求(都是同一个话题),假设Talker先启动,则建立通信的过程可以分为以下七步:

  1. Talker注册
  2. Listener注册
  3. ROS Master进行信息匹配
  4. Listener发送连接请求
  5. Talker确认连接请求
  6. Listener尝试与Talker建立网络连接
  7. Talker向Listener发布数据

                2.5.2 服务通信机制

        服务是一种带有应答的通信机制,与话题通信相比较而言,服务通信减少了Listener与Talker之间的RPC通信。因此建立服务通信的过程可以分为五步:

  1. Talker注册
  2. Listener注册
  3. ROS Master进行信息匹配
  4. Listener与Talker建立网络连接
  5. Talker向Listener发布服务应答数据

                2.5.3 参数管理机制

        参数类似于ROS中的全局变量,由ROS Master进行管理,其通信机制较为简单,不涉及TCP/UDP的通信。

  1. Talker设置变量
  2. Listener查询参数值
  3. ROS Master向Listener发送参数值

2.6 话题与服务的区别

话题与服务的区别

话题服务
同步性异步同步
通信模型发布/订阅客户端/服务器
底层协议ROSTCP/ROSUDPROSTCP/ROSUDP
反馈机制
缓冲区
定时性
节点关系多对多一对多(一个Server)
适用场景数据传输逻辑处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值