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) |
|---|---|---|---|
| 安装包 | 200M | 500M | 2.5G |
| 安装后磁盘占用 | 800M | 1.5G | 5G+ |
| 运行内存开销 | 低 | 中 | 高 |
| 版本选择 | 基础版 (ros-base) | 桌面版 (ros-desktop) | 全功能桌面版 (ros-desktop-full) |
|---|---|---|---|
| 适用场景 | 无图形界面的机器人控制器、嵌入式设备、服务器节点 | 有图形界面的开发工作站,需要可视化工具进行调试和学习 | 需要完整的仿真环境和高级功能(如导航、SLAM、MoveIt)的开发环境 |
避坑手记:这节说的版本不是ros的发布版本,应该是“安装版本”,因为现在主流都是选择乌班图22.04+ROS2 Humble的组合,所以知道了ros发布过哪些版本,每个版本有什么区别对初学者好像没什么用。这里强调安装版本是给大家在安装的时候提供参考依据,合理分配自己的电脑资源。我在虚拟机中安装的桌面版本,大概是4核处理器、8G内存,50G磁盘空间