Bootstrap

【ROS2】ROS2简介及学习资源汇总

在这里插入图片描述

ROS 系列学习教程(总目录)
ROS2 系列学习教程(总目录)

一、从ROS1到ROS2

ROS最初的目的是让机器人研发者专注于自己擅长的领域,其他模块则直接复用相关领域更专业研发团队的实现,实现不同研发团队间的共享和协作,提升机器人的研发效率。

但最初的ROS是面向科研领域的,有一些局限性,如今机器人商业需求日趋突显,最初的ROS也因丰富功能的集成使得原始建构和设计的不足愈发明显,所以ROS的研发团队重新设计了更加优秀的ROS2。

ROS2不是ROS1的简单升级,而是借鉴了ROS1成功案例基础上的一个全新的机器人操作系统。

二、ROS2 版本发布

ROS 每年的 5月23日 都会发布一个版本,奇数年份是短期支持版,生命周期到第二年的11月,偶数年份是长期支持版,生命周期到五年的5月。而且他的名字是按照字母表顺序排列的。

下面是目前的ROS发行版列表(截止到2024年):

DistroRelease dateLogoEOL date
Jazzy JaliscoMay 23rd, 2024在这里插入图片描述May 2029
Iron IrwiniMay 23rd, 2023在这里插入图片描述November 2024
Humble HawksbillMay 23rd, 2022在这里插入图片描述May 2027
Galactic GeocheloneMay 23rd, 2021在这里插入图片描述December 9th, 2022
Foxy FitzroyJune 5th, 2020在这里插入图片描述June 20th, 2023
Eloquent ElusorNovember 22nd, 2019在这里插入图片描述November 2020
Dashing DiademataMay 31st, 2019在这里插入图片描述May 2021
Crystal ClemmysDecember 14th, 2018在这里插入图片描述December 2019
Bouncy BolsonJuly 2nd, 2018在这里插入图片描述July 2019
Ardent ApaloneDecember 8th, 2017在这里插入图片描述December 2018
beta3September 13th, 2017December 2017
beta2July 5th, 2017September 2017
beta1December 19th, 2016Jul 2017
alpha1 - alpha8August 31th, 2015December 2016

三、ROS2 相关项目

ROS1拥有丰富的生态系统,随着ROS2的成熟,一些原有ROS1的生态也随之更新了ROS2版本。

3.1 核心库源码

  1. ros2/ros2: 这个仓库包含了ROS2的核心元数据和一些基本的安装脚本。
  2. ros2/ros2cli: 提供了一套强大的命令行工具。这些工具使得开发者能够通过命令行界面与ROS 2系统进行交互,从而简化开发和调试过程。
  3. ros2/rclcpp: rclcpp是ROS2的C++客户端库,提供了ROS2的核心功能。
  4. ros2/rclpy: rclpy是ROS2的Python客户端库,提供了ROS2的核心功能。
  5. ros2/ros2_tracing: 用于跟踪和分析ROS 2系统中的消息传递和节点交互。它可以帮助开发者更好地了解系统的性能和行为。
  6. ros2/rmw: rmw是ROS Middleware Interface的缩写,它是ROS2的中间件抽象层,允许ROS2与不同的中间件(如DDS实现)进行交互。
  7. ros2/system_tests: 包含ROS2的各种系统测试。

3.2 重要工具和组件

  1. ros2/rviz: 三维可视化工具,用于显示和调试机器人系统的各种数据。

  2. ros2/rosbag2: 用于记录和回放ROS2的消息数据。

  3. ros2/geometry2: 包含ROS2中的几何库,如 tf2 和 kdl_parser。

  4. ros2/navigation2: ROS2中的导航堆栈,用于移动机器人的路径规划和避障。

  5. ros2/moveit: MoveIt2是ROS2中的运动规划框架,用于控制机械臂和其他运动部件。它提供了多种规划算法和工具,支持碰撞检测、轨迹生成等功能。

  6. ros2/ros1_bridge: 用于在ROS1和ROS2之间进行消息传递。它支持双向通信,方便了从ROS1到ROS2的迁移。

  7. ros2_control: 用于实现ROS2的机器人实时控制。它支持多种硬件接口和控制算法,适用于各种类型的机器人控制系统。

  8. ros2/gazebo_ros_pkgs: Gazebo与ROS2的集成包,用于仿真。

  9. ros2/realtime_support: 包含ROS2的实时支持库和工具。

  10. ros2/demos: 包含ROS2的各种示例和演示。

  11. ros2/ros2_documentation: ros2文档。

3.3 其他ROS2相关项目

  1. Gazebo
  • 项目简介:Gazebo是一个3D物理模拟器,常用于机器人仿真。它支持ROS2,可以与ROS2节点无缝集成,提供逼真的物理环境和传感器模拟。
  • 官方网站Gazebo
  1. ROS2 OpenVINO
  • 项目简介:ROS2 OpenVINO是Intel提供的计算机视觉和神经网络优化工具包的ROS2版本。它支持多平台开发,适用于需要高性能图像处理和深度学习的应用。
  • 官方网站Intel ROS2 Projects
  1. ROS2 RealSense Camera
  • 项目简介:ROS2 RealSense Camera是Intel提供的ROS2驱动程序,用于支持Intel RealSense摄像头。它提供了丰富的传感器数据和图像处理功能。
  • 官方网站Intel ROS2 RealSense
  1. ros2ai
  • 项目简介:ros2ai是一个开源项目,旨在简化ROS2与AI的交互。它提供了一个命令行接口,支持通过语音或文本与机器人进行智能对话,利用OpenAI的自然语言处理能力。
  • 项目地址ros2ai
  1. ROS2-WebRTC
  • 项目简介:ROS2-WebRTC是一个项目,用于在ROS2中实现WebRTC通信。它支持实时音视频传输,适用于远程操作和监控场景。
  • 项目地址ROS2-WebRTC

四、ROS2 优越性

与ROS1相比,ROS2在多个方面展现了显著的优越性。这些改进不仅提升了开发者的使用体验,也使ROS2更加适应现代机器人技术的需求。

1. 分布式架构

去中心化:ROS2放弃了ROS1中的中心化master节点,采用了去中心化的节点发现机制。这意味着即使某个节点失效,也不会影响其他节点之间的通信,从而提高了系统的健壮性和可靠性。

ROS1与 ROS2 架构对比:

在这里插入图片描述

2. 实时性和高性能

DDS通信协议:ROS2使用DDS (Data Distribution Service) 作为底层通信协议,DDS是一种专为实时系统设计的数据分发/订阅标准,支持零拷贝数据传输,大大减少了CPU和内存的开销,提高了通信效率和实时性。
实时控制:ROS2更适合需要高实时性和确定性响应的应用场景,如工业自动化和无人驾驶。

在这里插入图片描述

3. 跨平台支持

多操作系统支持:ROS2不仅支持Linux和MacOS,还增加了对Windows和RTOS(实时操作系统)的支持,使得ROS2能够在更广泛的平台上运行,提高了开发的灵活性和适用范围。

4. 安全性

增强的安全性:ROS2在设计时就考虑到了安全性,提供了数据加密、访问控制和权限管理等功能,使得ROS2更适合用于需要高安全标准的工业和商业应用。

5. 模块化和可扩展性

灵活的模块化设计:ROS2的架构更加模块化,允许开发者更容易地组合和重用代码。此外,ROS2支持在同一可执行文件中创建多个节点,提供了更高的灵活性和模块化设计。

6. 生命周期管理

节点生命周期管理:ROS2引入了节点生命周期的概念,允许开发者更好地控制节点的启动和关闭顺序,这对于复杂的机器人系统尤为重要。

7. 启动和配置

Python启动文件:ROS2使用Python编写的launch文件,相比ROS1中的XML格式,提供了更多的功能性和灵活性,使得启动和配置更加直观和便捷。

8. 编译系统

Ament编译系统:ROS2采用了新的编译系统Ament,相比ROS1中的catkin,Ament更高效,支持跨平台编译,并能更好地集成现代构建工具链。

9. 参数管理和调试

高级参数管理:ROS2提供了更高级的参数声明和动态重载功能,支持节点级别的参数声明和默认值设定,简化了参数管理。
丰富的调试工具:ROS2提供了更多的调试工具和日志记录功能,帮助开发者更快地定位和解决问题。

10. 社区和支持

不断增长的社区:尽管ROS1的社区更大,但ROS2的社区正在迅速增长。随着越来越多的项目迁移到ROS2,相关的工具、库和文档也在不断增加,提供了更多的资源和支持。

11. 未来兼容性

支持新兴技术:ROS2的设计更加现代化,支持新兴的技术和标准,如现代C++语言特性、Web服务等,确保了ROS2在未来的发展中保持领先地位。

12. 更好的开发体验

现代编程语言支持:ROS2鼓励使用现代的编程语言特性,如C++11及以上版本,以及Python 3.5及以上版本,提供了更好的开发体验和更高的代码质量。
命令行工具改进:ROS2的命令行工具更加直观和一致,每个命令都有明确的意义,使得学习和使用更加容易。


欢迎大家加QQ群,一起讨论学习:894013891

;