ROS2介绍
版权信息
Copyright 2023 Herman Ye@Auromix. All rights reserved.
This course and all of its associated content, including but not limited to text,
images, videos, and any other materials, are protected by copyright law.
The author holds all rights to this course and its contents.
Any unauthorized use, reproduction, distribution, or modification of this course
or its contents is strictly prohibited and may result in legal action.
This includes, but is not limited to:
Copying or distributing course materials without express written permission.
Reposting, sharing, or distributing course content on any platform without proper attribution and permission.
Creating derivative works based on this course without permission.
Permissions and Inquiries
If you wish to use or reproduce any part of this course for purposes other than personal learning,
please contact the author to request permission.
The course content is provided for educational purposes, and the author makes no warranties or representations
regarding the accuracy, completeness, or suitability of the course content for any specific purpose.
The author shall not be held liable for any damages, losses,
or other consequences resulting from the use or misuse of this course.
Please be aware that this course may contain materials or images obtained from third-party sources.
The author and course creator diligently endeavor to ensure that these materials
are used in full compliance with copyright and fair use regulations.
If you have concerns about any specific content in this regard,
please contact the author for clarification or resolution.
By enrolling in this course, you agree to abide by the terms and conditions outlined in this copyright notice.
学习目标
- 了解ROS2的诞生背景
- 了解ROS2的框架
难度级别
初级 | 中级 | 高级 |
---|---|---|
√ |
预计耗时
10 mins
学习前提
对象 | 类型 | 状态 |
---|---|---|
Ubuntu22.04操作系统 | 软件 | 已确认 |
Shell的基本使用 | 知识 | 已了解 |
什么是ROS?
机器人操作系统(Robot Operating System,简称ROS)源自斯坦福大学Kenneth Salisbury机器人实验室的博士生研究工作,首次发布于2007年。ROS一直以来都是机器人领域的杰出工具。尽管其名称中包含“操作系统”,但实际上它并不是一个独立的操作系统,如Windows或Linux。ROS实际上是一套软件库和工具的集合。
设计和开发复杂且强大的机器人是一项极具挑战性的任务,因为机器人通常由多个组件组成,这些组件需要有效地进行通信和协同工作。ROS的初衷是解决机器人领域内各个组件之间的通信问题,从而实现整个系统的协同工作。ROS主要分为四大模块,包括通信机制、开发工具、应用功能和生态系统。这些模块实现了底层驱动程序管理、功能执行、程序间消息传递、程序包管理等功能,极大地简化了机器人的开发过程。
ROS可以安装在常见的操作系统上,包括Linux、Windows和Mac。通常情况下,ROS会被安装在Linux系统上,特别是Ubuntu的发行版。
ROS2:机器人操作系统的下一代
ROS(机器人操作系统)在机器人开发领域发挥了重要的推动作用,然而,随着对ROS功能的不断追求,一些早期的架构和设计已经无法满足现代机器人应用的需求,这促使了ROS2的诞生。
ROS2在继承ROS的原有特点的基础上,还引入了众多新功能,包括提升稳定性、改进生命周期管理、加强数据加密等能力,从而使其相较于ROS具备更强大的性能和功能。这使ROS2成为了一个更为强大且适应现代机器人应用需求的机器人操作系统。
ROS 2 的第一个发行版 Ardent Apalone 于于2017年12月8日发布,至今已经过了很多年,但在工业界涉及ROS的企业通常并不将ROS作为开发的核心工作,这正是因为ROS1本身在商业运行中的稳定性没法保证。而在ROS2中,许多功能得到了增强,如今部分与教育相关性大的机器人公司开始使用ROS2进行开发,其中代表性的版本为ROS2 Humble LTS
,一个长期支持的版本。
ROS2的核心功能点
ROS 2作为一个专业的机器人研究工具,拥有一系列核心功能点,下面详细介绍这些功能:
通信系统: ROS 2的通信系统是其核心功能之一,它提供了强大的机制,支持发布-订阅(Publish-Subscribe)模型和远程方法调用(Remote Procedure Call,RPC)。这使得不同的机器人组件能够方便地共享数据和调用函数,从而实现了机器人系统中各个节点之间的协作与数据传递。这种分布式通信系统为机器人的模块化和协同工作提供了坚实的基础。
框架和工具: ROS 2提供了丰富的框架和工具,包括构建系统、依赖管理、可视化工具、记录和重放功能等。这些工具的存在极大地简化了ROS 2系统的开发、调试和维护过程。例如,RVIZ是一款强大的3D可视化工具,广泛应用于机器人的可视化和调试任务。它能够实时显示机器人的传感器数据、运动状态和环境模型,为开发者提供了强大的可视化分析工具。
生态系统: ROS 2拥有丰富的生态系统,包括各种库和仿真模拟工具。一个典型的例子是Gazebo,它是一款流行的机器人仿真工具。Gazebo允许开发者在虚拟环境中测试和验证机器人系统,包括传感器、控制器和算法。这对机器人开发人员来说是一个极其有用的资源,它与ROS 2高度集成,为机器人仿真提供了有力的支持。
此外,ROS 2还提供了大量的开源库,涵盖了多个机器人应用领域,包括导航、控制、运动规划、视觉处理等。这些库为机器人开发者提供了丰富的工具和算法,有助于加速机器人应用的开发和部署。
ROS2的特点
全球性社区支持
ROS(机器人操作系统)社区的特点之一是其全球性社区支持。这一社区汇聚了来自不同国家的研究机构、公司和个人开发者,共同合作构建了一个强大的ROS开发生态系统。这个全球性合作产生了各种各样的应用案例,这些案例不断丰富了ROS的功能和应用领域。完全开源
ROS2是一款完全开源的机器人操作系统,基于Apache 2.0许可证,非常宽松,允许用户在不涉及知识产权问题的前提下自由使用ROS2,从而降低了商业应用的风险。
ROS 2 code is licensed under Apache 2.0 License, with ported ROS 1
code under the 3-clause (or “new”) BSD License. Both licenses allow
permissive use of the software, without implications on the user’s
intellectual property.
- 跨平台
ROS 2提供了跨不同操作系统平台的支持,包括Linux、Windows以及RTOS(实时操作系统)。
举例来说,ROS 2甚至可以在嵌入式微控制器单元(MCU)上运行,如FreeRTOS和MicroROS的案例。
多机协同
ROS 2为多机系统的应用提供了标准方法和通信机制。这使得多台机器能够协同工作,共同完成复杂任务。相关的资源可以在多机系统的应用中找到。实时系统
ROS 2提供了实时系统的部署保障,包括机械臂的运动学、动力学解算以及控制传递。此外,有多项研究论文对ROS 2在实时性能方面进行了探讨,此处分享几篇:
Exploring the Performance of ROS2
2016年评估了ROS 2 alpha版本在Ubuntu 14.04上的性能
Latency Analysis of ROS2 Multi-Node Systems
2021年测试了ROS 2 Foxy版本的延迟性能,包括在树莓派4B和Intel i7主机上的性能
Security and Performance Considerations in ROS 2: A Balancing Act
研究了ROS 2在安全性与性能之间的权衡更强的稳定性
在ROS 1中,应用程序的节点管理依赖于一个称为“Master”的节点,类似于公司的CEO。当CEO不可用时,公司运转可能会陷入混乱。而在ROS 1中,“Master”节点的故障可能性相对较高,这限制了ROS 1在商业应用中的可行性。此外,ROS 1中的通信依赖于底层的TCP和UDP协议,这在实时控制等方面存在一定局限。
在ROS 2中,节点可以通过自动发现机制(discovery)来查找其他节点并建立稳定的通信连接。此外,ROS 2采用了更复杂但更全面的分布式数据系统(DDS)作为通信协议,这极大地提高了ROS 2的稳定性。
ROS2的框架
ROS 2的分布式实时系统架构:
ROS 2采用了分布式实时系统架构,这一设计意味着机器人系统中的各个组件,包括传感器、运动控制器、检测算法、人工智能算法、导航算法等,都以独立的节点形式运行。这些节点可以分布在不同的物理设备上,并通过ROS 2的通信系统相互连接。
这种分布式架构带来了多方面的优点:
- 实时性:ROS 2支持实时性需求,因此适用于需要高性能和低延迟的应用。
- 鲁棒性:分布式系统具备冗余和容错能力,因此在某个节点发生故障时,系统可以继续运行。
如果对ROS 2的架构感兴趣,可以通过ROS 2的架构设计资源深入了解ROS 2的架构,包括通信机制、节点之间的交互以及实时性支持等方面的更多信息。这个资源对于深入理解ROS 2的架构和内部工作方式非常有帮助。