ROS2教程01 ROS2介绍

news2024/11/27 2:22:20

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)上运行,如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的架构和内部工作方式非常有帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1287098.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高级搜索——伸展树Splay详解

文章目录 伸展树Splay伸展树Splay的定义局部性原理Splay的伸展操作逐层伸展双层伸展zig-zig/zag-zagzig-zag/zag-zigzig/zag双层伸展的效果与效率 伸展树的实现动态版本实现递增分配器节点定义Splay类及其接口定义伸展操作左单旋右单旋右左/左右双旋伸展 查找操作删除操作插入操…

【laBVIEW学习】4.声音播放,自定义图标,滚动条设置,保存参数以及恢复参数

一。声音播放(报错,未实现) 1.报错4810 2.解决方法: 暂时未解决。 二。图片修改 1.目标:灯泡---》自定义灯泡 2.步骤: 1.右键点击--》自定义运行 表示可以制作自定义类型 2.右键--》打开自定义类型 这样就…

【Qt开发流程】之对象模型2:属性系统

描述 Qt提供了一个复杂的属性系统,类似于一些编译器供应商提供的属性系统。然而,作为一个独立于编译器和平台的库,Qt不依赖于非标准的编译器特性,如__property或[property]。 Qt解决方案适用于Qt支持的所有平台上的任何标准c编译…

java的GUI基础使用

java.awt包提供了基本的GUI设计工具,主要包括组件(Component)、容器(Container)和布局管理器(LayoutManager); Java的图形用户界面的最基本组成部分是组件(Component&…

Hadoop学习笔记(HDP)-Part.11 安装Kerberos

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

数据库事务:保障数据一致性的基石

目录 1. 什么是数据库事务? 1.1 ACID特性解析 2. 事务的实现与控制 2.1 事务的开始和结束 2.2 事务的隔离级别 3. 并发控制与事务管理 3.1 并发控制的挑战 3.2 锁和并发控制算法 4. 最佳实践与性能优化 4.1 事务的划分 4.2 批处理操作 5. 事务的未来发展…

odoo自定义提示性校验

背景: 在odoo16的原生的代码里,可以给按钮添加一个 confirm属性,从而达到 提示性校验的效果。 问题: 这个属性加了之后一定会弹出提示性校验的对话框,于是如何根据我们的实际业务,从后端返回提示性信息,…

极致体验云上无缝协作

探索SOLIDWORKS云上之旅 谁适合应用3DEXPERIENCE云平台? 迈向云策略的数字化转型企业、加速新品上市的企业创新部门、资源有限的小微及初创企业 什么是3DEXPERIENCE云平台? 3DEXPERIENCE(3DX)是一种业务与创新平台,可让所有组织整体实时了解业务活动和生态系统&#xff0c…

Python的海龟 turtle 库使用详细介绍(画任意多边形,全网最详细)

学Turtle库,其实就是学数学,而且还能提高对数学和学习的兴趣。Turtle库还能够帮助孩子更好地理解几何学和数学概念,比如角度、比例、几何图形的性质等等,是Python中一个很有趣的库。 前言 Turtle库是Python中一个很有趣的库&…

【计算机组成体系结构】主存储器的基本组成

一、半导体元器件存储二进制0/1的原理 一个存储器逻辑上分为MAR,MDR和存储体,这三块在时序逻辑电路的控制下相互配合工作。 而存储体有多个存储单元构成,每个存储单元又由每个存储元构成。一个存储元可以存放一位的二进制的0/1。 一个存储元…

Dinky之安装部署与基本使用

Dinky之安装部署与基本使用 Dinky概览Linux安装部署解压到指定目录初始化MySQL数据库修改配置文件加载依赖启动Dinky Docker部署启动dinky-mysql-server镜像启动dinky-standalone-server镜像 Dinky的基本使用上传jar包Flink配置集群管理集群实例管理集群配置管理 创建作业语句编…

lv11 嵌入式开发 RTC 17

目录 1 RTC简介 ​编辑2 Exynos4412下的RTC控制器 2.1 概述 2.2 特征 2.3 功能框图 3 寄存器介绍 3.1 概述 3.2 BCD格式的年月日寄存器 3.3 INTP中断挂起寄存器 3.4 RTCCON控制寄存器 3.5 CURTICCNT 作为嘀嗒定时器使用的寄存器 4 RTC编程 5 练习 1 RTC简介 RTC(…

大部分人都不知道微信语音是可以取消的

在微信聊天时,许多人都喜欢使用微信语音聊天,因为这样既省时又不需要打字,使用起来非常便捷。然而,不少人发现微信语音有一个小缺点,那就是一旦说错话,只要一松手语音就自动发送出去了,根本来不…

【3】PyQt文本和图片

1. 文本控件 文本控件是QLabel from PyQt5.QtWidgets import QWidget, QApplication, QLabel import sys# 1.创建应用程序 app QApplication(sys.argv)# 2.创建窗口 w QWidget()# 修改窗口标题 w.setWindowTitle(文本展示)# ---------------------------------------------…

优化汽车产业用户营运:精细化策略

近年来随着互联网时代新技术浪潮的冲击,商业社会中各种原生边界不断被打破,新的消费需求、新的商业模式、新的竞争挑战层出不穷。各行业往往面临重重困境与迷思,学会如何精细化运营用户显得尤为重要。立即阅读阅文,详细了解其中用…

TCP首部格式_基本知识

TCP首部格式 表格索引: 源端口目的端口 序号 确认号 数据偏移保留 ACK等 窗口检验和紧急指针 TCP报文段首部格式图 源端口与目的端口: 各占16位 序号:占32比特,取值范围0~232-1。当序号增加到最后一个时,下一个序号又回到0。用来指出本TCP报文段数据载…

监测tcp连接状态

using System; using System.Collections.Generic; using System.Linq; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks;namespace 检测tcp连接状态 {public class TCPClient{private TcpClient client;private bool con…

【优选算法系列】【专题三二分查找】第二节.35. 搜索插入位置和69. x 的平方根

文章目录 前言一、搜索插入位置 1.1 题目描述 1.2 题目解析 1.2.1 算法原理 1.2.2 代码编写 1.2.3 题目总结二、x 的平方根 2.1 题目描述 2.2 题目解析 2.2.1 算法原理 2.2.2 代码编写 …

一文7个步骤教你搭建测试web测试项目实战环境,

​今天小编,给大家总结下web 测试实战的相关内容,一起来学习下吧! web项目实战可按顺序依次为:【搭建测试环境】、【需求评审】、【编写测试计划】、【分析测试点.编写测试用例】、【用例评审】、【执行用例提bug】、【测试报告】…

SQL Server的安装和首个库的创建

一、熟悉SQL Server的安装环境; 1.安装Microsoft的数据库管理系统SQL Server 2022 先把SQL Server 2022下载好后进行解压后出现以下界面然后点击基本进行安装 然后会出现以下界面: 一步步按照提示往下走即可,把SQL Server 2022安装完成后再…