Day1:和ROS2初次约会_酒店闭关首日搞懂它的小心思

0 阅读5分钟

1、ROS是什么?

概念:

ROS 的全称是 Robot Operating System(机器人操作系统)。

ROS 本身并不是一个传统意义上的操作系统(如 Windows、Linux、macOS)。 它不直接管理硬件资源(如CPU、内存、硬盘)。ROS 可以把它理解为一个运行在操作系统(通常是 Linux,但现在也支持 Windows、macOS 等)之上的一套强大的工具、库和约定俗成的规则集合。它的设计目的是简化在不同硬件平台上创建机器人的工作。

避坑手记:学到这的时候一开始觉得这是个操作系统,但其实它是由一套命令、库、工具的集合,运行在操作系统上面,简化标准化机器人的开发工作。

ROS2主要核心:

(1)节点式通信机制

  • 一个机器人系统被分解成许多小的、独立的功能模块,称为节点。

  • 节点的通信方式包含:话题、服务、动作、参数等

(2)分步式通信

节点可以运行在同一台计算机上,也可以分布在网络上的多台计算机中。这使得构建涉及多个传感器、控制器和计算单元的复杂机器人系统成为可能。

(3)丰富的工具

  • ros run / ros launch: 启动节点或一组节点。

  • ros topic: 查看和发布话题消息。

  • ros service: 调用节点提供的服务。

  • ros node: 查看和管理节点信息。

  • rviz: 强大的 3D 可视化工具,用于显示传感器数据、机器人模型、地图等。

  • rqt: 一个灵活的 GUI 框架,包含多种插件(如数据绘图、节点管理、参数修改等)。

  • gazebo: 与 ROS 紧密集成的物理仿真环境(虽然 Gazebo 本身是独立项目,但常与 ROS 搭配使用)。

  • Navigation:规划机器人移动路径、导航框架。移动机器人的“导航仪”:解决 “如何让机器人安全移动到目标地点”。

  • Moveit:规划机械臂运动,物体抓取、关节运动。机械臂的“大脑”:解决 “如何让机械臂运动到指定位置并抓取”。

避坑手记:上小节说明了ROS是工具、库的组合,这节就说明了里面主要有哪些东西,初学先了解一下吧,毕竟还没真的使用这些东西,肯定没什么深刻的认识。

ROS2的语言支持:

  • C++

  • Python

避坑手记:虽说两种语言都支持,但是如果你有一定C++基础,还是用这个好一些,如果只有python基础,还想快速上手那,就用python吧。

ROS2解决了机器人开发中的什么问题:

  • 硬件抽象: 提供统一的接口访问不同的传感器(摄像头、激光雷达、IMU等)和执行器(电机、舵机等)。

  • 进程间通信: 高效、可靠地管理机器人内部众多组件之间的数据流。

  • 软件复用: 通过软件包和开源社区,极大地促进了机器人软件的共享和复用。

  • 分布式计算: 支持在多个计算节点上运行软件,满足复杂机器人的计算需求。

  • 工具标准化: 提供了一套标准化的工具链,简化了开发、调试、可视化和部署流程。

避坑手记:ROS利用它的核心组成可以帮助我们快速完成机器人搭建,初学者了解即可

2、ROS1和ROS2区别

  • ROS2没有中心节点,节点之间可以互相通信

  • ROS2支持多平台部署,例如:linux、windows、MacOS、实时操作系统

避坑手记:ROS1和2的区别很多,而且很大,网上有很多详细的说明,但是作为初学者其实看了没什么用,也可能看不懂,我选择了两条大家应该可以看懂的放在了这里。之前大家纠结学习1还是2感觉是因为1的时间比较长资料比较多生态比较好,但是其实过了这么久,2的内容也很丰富了,且2修正了很多1的遗留问题,且长远来看我个人认为还是选新的会更好。所以如果是初学者我认为不需要知道1和2的区别,直接从2开始,以后有机会再看看1,那时候对他们的区别会有更深刻的认识。

3、ROS2不同的版本区别

参考ROS官方文档(以Humble版本为例):

  • ros-base: 最基础的版本,包含通信核心、客户端库和一些基本工具(如ros2cli),没有GUI工具。

  • ros-desktop: 在ros-base的基础上增加了GUI工具(如RViz、rqt)和一些教程、示例。

  • ros-desktop-full: 在ros-desktop的基础上增加了更多的功能包,包括2D/3D模拟器(如Gazebo)、导航、感知等包。

功能基础版

(ros-base)
桌面版

(ros-desktop)
全功能桌面版

(ros-desktop-full)
通信框架
命令行工具
c++及Python语言支持
rviz×
rqt×
gazebo××
navigation××
moveit2××
资源占用基础版

(ros-base)
桌面版

(ros-desktop)
全功能桌面版

(ros-desktop-full)
安装包200M500M2.5G
安装后磁盘占用800M1.5G5G+
运行内存开销
版本选择基础版

(ros-base)
桌面版

(ros-desktop)
全功能桌面版

(ros-desktop-full)
适用场景无图形界面的机器人控制器、嵌入式设备、服务器节点有图形界面的开发工作站,需要可视化工具进行调试和学习需要完整的仿真环境和高级功能(如导航、SLAM、MoveIt)的开发环境

避坑手记:这节说的版本不是ros的发布版本,应该是“安装版本”,因为现在主流都是选择乌班图22.04+ROS2 Humble的组合,所以知道了ros发布过哪些版本,每个版本有什么区别对初学者好像没什么用。这里强调安装版本是给大家在安装的时候提供参考依据,合理分配自己的电脑资源。我在虚拟机中安装的桌面版本,大概是4核处理器、8G内存,50G磁盘空间