ROS2教程01 ROS2介绍

本文涉及的产品
资源编排,不限时长
简介: 本文是ROS2(机器人操作系统的下一代)的介绍教程,内容包括ROS2的诞生背景、核心功能、特点、框架以及与ROS1的比较。文章涵盖了ROS2的通信系统、框架和工具、生态系统、全球性社区支持、完全开源、跨平台特性、多机协同能力、实时系统支持和更强的稳定性。此外,还提供了ROS2架构的详细介绍资源链接,适合对ROS2感兴趣的读者学习和了解。

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作为一个专业的机器人研究工具,拥有一系列核心功能点,下面详细介绍这些功能:

  1. 通信系统: ROS 2的通信系统是其核心功能之一,它提供了强大的机制,支持发布-订阅(Publish-Subscribe)模型和远程方法调用(Remote Procedure Call,RPC)。这使得不同的机器人组件能够方便地共享数据和调用函数,从而实现了机器人系统中各个节点之间的协作与数据传递。这种分布式通信系统为机器人的模块化和协同工作提供了坚实的基础。

  2. 框架和工具: ROS 2提供了丰富的框架和工具,包括构建系统、依赖管理、可视化工具、记录和重放功能等。这些工具的存在极大地简化了ROS 2系统的开发、调试和维护过程。例如,RVIZ是一款强大的3D可视化工具,广泛应用于机器人的可视化和调试任务。它能够实时显示机器人的传感器数据、运动状态和环境模型,为开发者提供了强大的可视化分析工具。

  3. 生态系统: 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)上运行,如FreeRTOSMicroROS的案例。

在这里插入图片描述

  • 多机协同
    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的架构和内部工作方式非常有帮助。

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
2月前
|
存储 自然语言处理 机器人
ROS2教程06 ROS2行动
这篇文章是关于ROS2(Robot Operating System 2)行动(Action)通信机制的教程,包括行动的概念、特点、命令行工具的使用,以及如何编写行动的客户端和服务器代码,并介绍了如何测试行动通信。
81 4
ROS2教程06 ROS2行动
|
2月前
|
机器人 Shell Python
ROS2教程05 ROS2服务
这篇文章是关于ROS2(Robot Operating System 2)服务的教程,涵盖了服务的概念、特性、命令行工具的使用,以及如何编写服务的服务器和客户端代码,并提供了测试服务通信机制的示例。
48 4
ROS2教程05 ROS2服务
|
2月前
|
传感器 算法 数据可视化
ROS2教程04 ROS2话题
这篇文章是关于ROS2(Robot Operating System 2)的教程,主要介绍了ROS2中话题的概念、特性、使用方式,以及如何编写发布者和订阅者的代码。
52 3
ROS2教程04 ROS2话题
|
2月前
|
Ubuntu Shell C++
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
44 1
|
2月前
|
机器人 Shell 开发者
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
这篇文章是关于ROS2(Robot Operating System 2)中功能包、依赖管理、工作空间配置和编译的教程,涵盖了ROS2工作空间的概念、如何获取和安装功能包的依赖、构建工作空间的步骤,以及如何创建和管理ROS2功能包,包括使用命令行工具对功能包进行操作的方法。
134 0
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
|
2月前
|
编解码 机器人 C++
ROS2教程07 ROS2自定义消息接口
这篇文章是关于如何在ROS2(Robot Operating System 2)中创建和使用自定义消息类型的教程,包括消息类型的定义、特点、命令行工具的使用,以及如何编写和测试自定义消息类型接口的步骤。
27 0
ROS2教程07 ROS2自定义消息接口
|
5月前
|
传感器 人工智能 算法
ROS机器人操作系统
ROS机器人操作系统
150 1
|
2月前
|
存储 Ubuntu 数据可视化
Sawyer 机器人 ROS SDK 配置(三)
Sawyer 机器人 ROS SDK 配置(三)
45 5
|
2月前
|
存储 Ubuntu 数据可视化
Sawyer 机器人 ROS SDK 配置(二)
Sawyer 机器人 ROS SDK 配置(二)
30 0
|
2月前
|
存储 网络协议 机器人
Sawyer 机器人 ROS SDK 配置(一)
Sawyer 机器人 ROS SDK 配置
41 0

推荐镜像

更多
下一篇
无影云桌面