ROS第二周读书笔记

本次读书笔记主要记录了本周关于《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)
适用场景数据传输逻辑处理

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
古月居ROS入门21课笔记主要涵盖了ROS的安装和基本使用方法,以下是我的总结: 1. 安装ROS:首先要安装ROS操作系统,根据教程可以选择安装适合自己系统的版本,如ROS Kinetic或ROS Melodic等。 2. 创建工作空间:使用catkin工具创建ROS工作空间,可以将所有的ROS相关文件放在这个空间中。 3. 创建包:在工作空间内创建一个ROS包,这个包是ROS项目的基本单元。可以使用catkin_create_pkg命令来创建包,并指定包的依赖项。 4. 编写节点代码:节点是ROS中最基本的执行单元,可以通过编写节点来实现各种功能。可以使用C++或Python编写节点代码。 5. 编译代码:使用catkin_make命令编译ROS代码,编译后会生成可执行文件。编译成功后,可以在工作空间中的bin目录下找到生成的可执行文件。 6. 运行节点:使用rosrun命令来运行编译好的节点。节点运行后会执行相应的功能。 7. 使用消息通信:ROS中的节点通过发布和订阅消息来进行通信。可以编写发布节点和订阅节点代码,通过话题的方式进行消息传递。 8. 使用服务通信:除了消息通信,ROS还提供了服务通信的机制。可以编写服务端和客户端代码,进行服务调用和响应。 9. 使用参数服务器:ROS提供了参数服务器来存储和共享参数。可以将特定的参数存储在参数服务器上,并在节点中进行访问和修改。 10. 使用RViz可视化:RViz是ROS环境下的可视化工具,可以将机器人模型和传感器数据等进行可视化展示,方便调试和分析。 通过学习古月居ROS入门21课,我对ROS的基本使用方法和常用功能有了初步了解。在实践中,我将进一步深入学习和应用ROS,提高自己在机器人开发和控制方面的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值