ROS2理论与实践——第一章ROS概述与环境搭建(1)

第一章 RO2概述与环境搭建

前言

学习是一个循序渐进的过程,具体到计算机领域的软件开发层面,每当接触一个新的知识模块时,按照一般的步骤,我们会先去了解该模块的相关概念,然后再安装官方软件包,接下来再搭建其集成的开发环境…这些准备工作完毕之后,才算是叩开了新领域的大门。
学习ROS,我们也是遵循这一流程,本章作为ROS体系的开篇主要内容如下:

  • ROS的相关概念
  • 怎样安装ROS
  • 如何搭建ROS的集成开发环境

该章内容学习完毕预期达成的目标如下:

  • 了解ROS概念、设计目标以及发展历程
  • 能够独立安装并运行ROS
  • 能够使用C++或Python实现ROS版本的HelloWorld
  • 能够搭建ROS的集成开发环境
  • 了解ROS架构设计

本章概览

章节学习内容学习收获
1.1 ROS2简介ROS2的理论知识,比如:概念、发展历程、组成体系、在机器人领域的应用优势等。可以了解ROS2在机器人领域的地位以及定位。
1.2 ROS2安装ROS2在Ubuntu操作系统下的安装、测试与基本使用配置。能够独立搭建ROS2的开发、运行环境。
1.3 ROS2快速体验介绍如何分别使用C++和Python实现第一个ROS2小程序。能够掌握ROS2程序的编写、编译与执行流程。
1.4 ROS2集成开发环境搭建介绍如何使用VSCode搭建ROS2的集成开发环境。能够独立完成VSCode安装并配置ROS2相关插件,提高程序的开发效率。
1.5 ROS体系框架ROS2的文件系统以及常用的功能模块。能够在宏观上建立对ROS2的体系结构的基本认知,大致了解各个模块的应用场景,明确开发过程中的重点工作内容。
1.6 本章小结知识点汇总。知识点回顾。

案例演示

案例1:ROS2安装完毕后,运行其官方例程:小乌龟。小乌龟
案例2:自实现第一个ROS2小程序,在终端输出文本:hello world!。
案例3:使用VSCode搭建ROS2集成开发环境,提高开发效率。请添加图片描述

1.1 ROS2简介

场景

机器人是一种高度复杂的系统性实现,机器人设计包含了机械结构设计、机械加工、硬件设计、嵌入式软件设计、上层软件设计等诸多模块,是各种硬件与软件的有机结合,甚至可以说机器人系统是当今工业体系的集大成者。机器人体系是相当庞大的,其复杂度之高,以至于没有任何个人、组织甚至公司能够独立完成系统性的机器人研发生产任务。

那么问题随之而来:既然机器人实现如此困难,那么我们应该如何开展相关工作呢?

一种合适的策略是——合作。让机器人研发者专注于自己擅长的领域,其他模块则直接复用相关领域更专业研发团队的实现,当然自身的研究也可以被他人继续复用。这种基于“复用”的分工协作,遵循了不重复发明轮子的原则,显然是可以大大提高机器人的研发效率的,尤其是随着机器人硬件越来越丰富,软件库越来越庞大,这种复用性和模块化开发需求也愈发强烈。

在此大背景下,便诞生了ROS。ROS是一套机器人通用软件框架,可以提升功能模块的复用性,并且随着ROS2的推出,ROS日臻完善,是机器人软件开发的不二之选。

概念

**ROS(Robot Operating System)**是用于构建机器人应用程序的软件开发工具包。ROS是开源的,它由一组软件库和若干工具组成。

在机器人领域,ROS是一个标准软件平台,这个平台为开发者提供了构建机器人应用程序所需的各个功能模块,并且开发者能够以“可插拔”的方式组织各个功能模块,无论开发者的程序是用于课堂实验、科学研究、原型设计或是最终产品,ROS都提供了一站式的技术支持。

另外需要注意的是,ROS虽然字面意思是机器人操作系统,但是它并非经典意义上的操作系统,更准确的讲ROS是一个 SDK(Software Development Kit)也即软件开发工具包。

作用

秉着“不要重复发明轮子”的原则,通过ROS可以复用已有功能并方便快捷的拓展新功能。

1.1.1 ROS2发展历程
1.起源

2007年,一家名为**柳树车库(Willow Garage)**的机器人公司发布了ROS,ROS集开源、免费、高复用、低耦合、工具丰富等等诸多优势于一身,一经推出便迅速吸引了大量的开发者、科研人员、硬件供应商的加入,形成了稳定且多样的机器人生态,水到渠成的ROS也成为了机器人领域的主流软件框架并流行至今。

但是自ROS诞生的十几年来,不管是机器人相关软件、硬件还是ROS社区都发生了天翻地覆的变化,加之ROS1存在一些设计上的先天性缺陷,各种内外因素叠加下,导致ROS1在许多应用场景下都已经显得力不从心了。此背景下,官方于2017正式推出了新一代机器人操作系统——ROS2,ROS2基于全新的设计框架,保留了ROS1的优点并改进其缺陷,ROS2的目标是适应新时代的新需求。

2.发行版本

ROS发行版是一组版本化的ROS功能包,它类似于Linux发行版(例如 Ubuntu)。ROS发行版的目的是让开发人员可以在一个相对稳定的代码库上工作,直到新的发行版推出。

以下列表为ROS2各不同发布版本的简单说明。

发行版发布日期标识停止维护日期Iron Irwini2023 年 5 月 23 日待定2024 年 11 月Humble Hawksbill2022 年 5 月 23 日2027 年 5 月Galactic Geochelone2021 年 5 月 23 日2022 年 11 月Foxy Fitzroy2020 年 6 月 5 日2023 年 5 月Eloquent Elusor2019 年 11 月 22 日2020 年 11 月Dashing Diademata2019 年 5 月 31 日2021 年 5 月Crystal Clemmys2018 年 12 月 14 日2019 年 12 月Bouncy Bolson2018 年 7 月 2 日2019 年 7 月Ardent Apalone2017 年 12 月 8 日2018 年 12 月beta32017 年 9 月 13 日2017 年 12 月beta22017 年 7 月 5 日2017 年 9 月beta12016 年 12 月 19 日2017 年 7 月alpha1 - alpha82015 年 8 月 31 日2016 年 12 月

ROS2版本发布特点
  • 发布版本与Ubuntu版本对应,生命周期也有Ubuntu保持一致,正常情况下偶数年份发布长支持版(5年),奇数年份发布短支持版(2年);
  • 版本名称由形容词+名词的格式组成,这一点与Ubuntu版本名称规则一致;
  • 正常情况下,每年的5月23日,世界海龟日发布新版本。
需要另外说明的是

官方于2020年发布了ROS1的最终版本,并将于2025年终止ROS1的维护。而早在2017年就已经推出了ROS2的第一个正式版本,并且随着ROS2的不断完善,于2022年又推出ROS2的第一个5年长支持版。对于ROS而言,这是一个里程碑式的事件,这意味着自此开始,ROS2将全面取代ROS1。

1.1.2 ROS2组成体系

整个ROS生态由通信(Plumbing)、工具(Tools)、功能(Capabilities)与社区(Community)四大部分组成。

通信(plumbing)

通信是整个ROS系统的核心实现,是ROS内置的一个消息传递系统,通常称之为middleware(中间件)或Plumbing(管道)。

在构建新的应用程序或使用与硬件交互的软件时,如何实现通信是首当其冲的问题,为此ROS提供了专门的消息传递系统,它可以管理不同节点之间的通信细节,提高开发者的工作效率。这套消息传递系统使用了“面向接口”的编程思想,可以通过清晰规范的接口,将不同模块分离,从而也将故障隔离。使得ROS系统更易于维护、扩展性更强且保证了程序的高复用性。

接口规范可以由开发者自行定义。同时为了方便使用,在ROS中也提供了许多标准的接口,这些标准接口有着广泛应用,比如:将雷达或摄像头数据传输到可视化的用户界面或是传输到定位算法模块,都会使用到标准接口。

工具(Tools)

构建机器人应用程序极具挑战性。开发者除了会遇到一些传统的软件开发问题之外,还需要通过传感器或执行器与物理世界进行异步交互。显而易见的,良好的开发工具可以提高应用程序的开发效率,在ROS中就内置了launch、调试、可视化、绘图、录制回放等一系列工具。这些工具不光可以提高开发效率,还可以在发布产品时直接包含在产品之中。

功能(Capabilities)

ROS生态系统是机器人软件的聚宝盆。无论开发者需要用于GPS的设备驱动程序、用于四足仿生机器人的步行和平衡控制器,还是用于移动机器人的地图系统,ROS都能满足你的需求。从驱动程序到算法,再到用户界面,ROS都提供了相关实现,开发者只需专注于自身应用程序即可。

ROS的目标是提供一站式的技术支持,降低构建机器人应用程序的门槛。ROS希望任何开发者都可以将自己的“创意”变为现实,而无需了解底层软件和硬件的所有内容。
社区(Community)

ROS社区规模庞大、多样且全球化,从学生和业余爱好者到跨国公司和政府机构,各行各业的人和组织都在推动着ROS项目的发展。

该项目的社区中心和中立管家是Open Robotics,它托管共享在线服务(例如ROS官网:https://www.ros.org/),创建和管理分发版本(包括您安装的二进制包),并开发和维护大部分ROS核心软件。 Open Robotics还提供与 ROS 相关的工程服务。

1.1.3 ROS2优势
1.ROS与其他机器人软件框架比较

ROS是构建机器人的最快捷方式!

1.1 开源

ROS一直是开源的,并且将永远是开源的,以确保全世界的爱好者、开发人员可以自由、不受限制地访问高质量、一流、功能齐全的机器人SDK。另外官方也在其他开源项目之上构建ROS,ROS会尽可能的利用并遵循开放标准(例如OMG的DDS)。

1.2 免费

官方鼓励用户对ROS做出开源贡献,也欢迎提出宝贵意见,但不干涉开发者将ROS集成进非开源软件,不反对将ROS集成进专有产品。

1.3 多平台支持

ROS2支持Linux、Windows和macOS以及各种嵌入式平台(通过micro-ROS)并且不同平台都已经通过了官方测试,这意味着通过ROS2可以实现开发、部署后端管理系统和用户界面的无缝衔接。分层支持模型还允许将ROS2移植到诸如实时和嵌入式操作系统等新平台上,以便在获得关注和投资时将ROS2引入和推广到这些新平台中。

1.4 应用领域广泛

ROS可以在各种机器人应用中使用,从室内到室外,从家用到汽车,从水下到太空,从消费市场到工业领域,ROS都可以独当一面。

1.5 全球化社区

十多年来,ROS项目通过培育由数百万开发人员和用户组成的全球化社区,为机器人技术做出贡献和改进,从而产生了一个庞大的机器人软件生态系统。 ROS由该社区开发并为该社区服务,该社区将成为其未来的管理者。

1.6 可缩短产品上市时间

ROS提供了开发机器人应用程序所需的工具、库和功能,使开发者可以将更多的时间花费在与自身业务相关的工作上。由于它还是开源的,所以开发者可以决定何时何处使用ROS,甚至还可以根据自身需求修改ROS。另外ROS是友好的,不具排他性,开发者可以在ROS和其他机器人软件框架之间自由选择,或者也可以将ROS与其他软件框架集成,以取长补短。

1.7 广泛的行业支持

业界对ROS的支持非常强大。除了在ROS上开发产品外,来自世界各地的大大小小的公司都在投入资源为ROS做出开源贡献。

1.8 业界肯定

整个机器人行业都依赖于ROS。ROS是教授机器人技术的标准,是大多数机器人研究的基础,从单个学生项目到多机构合作再到大型竞赛,ROS都占据着主导地位。世界各地不计其数的机器人内部都运行着ROS,仅在自主移动机器人 (AMR) 中,ROS就帮助创造了数十亿美元的价值。

2.ROS2较之于ROS1的优势

ROS2是全新一代机器人操作系统,不只是功能增强的ROS1。

2.1 去中心化

在ROS1中使用master节点管理调度ROS系统,这存在极大的安全隐患,一旦master节点异常退出,那么会导致整个系统的崩溃。在ROS2中采用了去中心化,各个节点之间无需通过master关联,各个节点都是等态的,可以相互发现彼此。

2.2 全新通信底层实现

秉着不重复发明轮子的原则,ROS2不再自实现通信底层,而是直接更换为DDS通信,这使得ROS2较之于ROS1无论是通信的实行性、可靠性还是连续性都有大幅度提升。

2.3 应用场景更为广泛

ROS1在设计之初有着天生的硬件优势以及局限性:

  • 单机;

  • 工作站级的计算资源;

  • 无实时性要求(有此类需求也可以以特殊方式满足);

  • 出色的网络连接(有线或近距离高带宽无线);

  • 主要用于学术界;

  • 灵活有余而约束不足。

这导致了它的一些先天性缺陷,不能适应新时代的需求,比如:

  • 对多机器人编队支持欠佳;

  • 小型嵌入式平台不能很好的支持ROS;

  • 实时性差;

  • ROS之间的数据传输受网络质量影响严重;

  • 产品不易落地。

随着ROS2的推出,上述场景的缺陷都得到很大程度的修复。

2.4 大量采用新技术、新的设计理念

随着ROS十数年的发展,大量的新技术也产生、改进、成熟并被广泛采用,ROS也开始引入并应用一些新技术,比如:

  • DDS( Data Distribution Service——数据分发服务);

  • Zeroconf;

  • ZeroMQ;

  • Redis;

  • WebSockets。

这些新技术为ROS带来了更多的便利,比如:更少的维护成本,却有着更多的功能拓展,并且随着第三方库的升级而持续受益。

此外,ROS2还重构了API系统,改进了ROS1的API在设计上的不足。

参考内容:猛狮集训营 https://www.bilibili.com/read/cv26390236/?spm_id_from=333.999.0.0 出处:bilibili
本文为作者学习总结使用。侵删,可CSDN私信联系。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ROS机器人理论实践pdf》是一本关于ROS机器人操作系统)的理论实践方面的电子书籍,内容非常丰富。ROS是一个开源的机器人软件平台,为机器人开发者提供了一套强大的工具和库,用于创建、运行和管理机器人软件。 这本书主要分为两个部分,理论实践。在理论部分,作者详细介绍了ROS的基本概念、架构和工作原理。读者可以了解到ROS的节点、话题、服务、参数等核心概念,以及ROS的通信机制和消息传递方式。此外,还介绍了ROS的软件包管理系统和常用工具,帮助读者更好地使用ROS进行机器人开发。 在实践部分,作者提供了一些具体的应用案例,涵盖了机器人的感知、控制和导航等领域。读者可以学习如何使用ROS来构建机器人的传感器驱动程序、运动控制算法和导航系统。此外,还介绍了如何使用ROS与外部硬件进行通信,以及如何将ROS与机器学习、深度学习等技术相结合,实现更智能的机器人应用。 这本书适合有一定编程基础的读者阅读,尤其对于对机器人领域感兴趣的学生和工程师来说,是一本很好的参考书。通过学习这本书,读者可以系统地学习ROS理论知识,并通过实践项目来巩固所学内容。同时,这本书也可以作为学校机器人课程的教材,帮助教师传授ROS相关知识和技能。 总之,《ROS机器人理论实践pdf》是一本全面介绍ROS的电子书,对于进一步学习和应用ROS的读者来说,具有很大的参考价值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值