一、ROS2与机器人概述

1.1 ROS2发展史:从实验室到工业级的蜕变

说起ROS的历史,我得先聊聊2007年。那时候斯坦福大学和Willow Garage公司联手推出了ROS——一个面向机器人研发的开源框架。说实话,当时谁也没想到它会成为机器人领域的“Linux”。

ROS 1的诞生解决了大问题:代码复用。以前做机器人,每个团队都得从零开始写驱动、写通信。有了ROS,大家能站在彼此的肩膀上干活。我在2015年第一次接触ROS时,就被它的发布/订阅模型吸引了——说白了,就是让机器人的各个零件能“说话”。

但ROS 1有个硬伤:实时性不够。它依赖master节点做中心调度,一旦master挂了,整个系统就瘫痪。这在实验室里还能忍,可放到工厂产线上?不行。

2015年,ROS 2项目启动。目标很明确:去掉中心节点、支持实时通信、满足工业级可靠性。底层通信换成了DDS(数据分发服务),这东西本身就是为航空航天、军事等高可靠场景设计的。

我记得2017年第一次试用ROS 2的Ardent版本时,心里直犯嘀咕:“这玩意儿真能替代ROS 1吗?”结果编译完第一个节点,发现启动速度比ROS 1快了不止一倍。嗯,从那时起我就知道,时代要变了。

关键时间线:

  • 2007年:ROS 1诞生,开源机器人框架起步
  • 2015年:ROS 2立项,目标解决ROS 1的痛点
  • 2017年:ROS 2 Ardent发布,首个正式版本
  • 2020年:ROS 1 Noetic成为最后一个长期支持版
  • 2022年至今:ROS 2 Humble、Iron等版本持续迭代,生态成熟

1.2 ROS2 vs ROS1:到底差在哪?

很多新手问我:“老师,我直接学ROS 2行不行?”我的回答永远是:行,而且应该直接学ROS 2。

但为了让你理解为什么,咱们得掰扯清楚两者的核心区别。

对比维度 ROS 1 ROS 2
通信架构 中心化(依赖master) 去中心化(DDS直接通信)
实时性 不支持 原生支持(通过DDS的QoS策略)
跨平台 主要支持Linux 支持Linux、Windows、macOS、RTOS
安全性 无内置安全机制 支持DDS安全(加密、认证)
多机器人 需要额外配置 原生支持(通过Domain ID隔离)
生命周期 2025年停止维护 活跃开发中

你想想看,ROS 1的master节点就像交通指挥中心。一旦指挥中心停电,所有车都堵在路上。ROS 2则像每辆车自带导航——即使某辆车坏了,其他车照样跑。

我曾经在一个项目中吃过ROS 1的亏。当时做多机器人协同搬运,三台机器人同时运行,master节点频繁崩溃。后来换成ROS 2的DDS通信,问题迎刃而解。说白了,ROS 2是为“真·机器人系统”设计的,而ROS 1更适合“原型验证”。

我的建议:如果你现在开始学,直接上ROS 2 Humble(Ubuntu 22.04)或Iron(Ubuntu 24.04)。别在ROS 1上浪费时间了——除非你维护的是老项目。

1.3 自主移动机器人技术栈概览

做一台能自己跑的机器人,到底需要哪些技术?我把它拆成四层,你一看就明白。

自主移动机器人技术栈 硬件层 传感器(激光雷达、IMU、摄像头) | 执行器(电机、舵机) | 计算平台(Jetson、树莓派) 系统层 ROS 2(节点通信、参数服务器、TF坐标变换) | Linux系统 | 设备驱动 算法层 SLAM(建图与定位) | 路径规划(A*、DWA) | 运动控制(PID、MPC) 应用层 自主导航 | 目标跟踪 | 人机交互 | 多机器人协同

这四层的关系,我打个比方:硬件层是身体,系统层是神经,算法层是大脑,应用层是灵魂。缺了任何一层,机器人都跑不起来。

咱们这门课会重点覆盖系统层和算法层。硬件层我会给你推荐成熟的方案,应用层则通过项目实战带你走一遍。

避坑指南:很多初学者一上来就扎进算法里,结果发现连ROS 2的节点通信都没搞明白。我曾经带过一个学生,花了两周调PID参数,最后发现是IMU的坐标系没对齐——这种基础问题,其实在系统层就能解决。

1.4 课程项目目标介绍

光说不练假把式。这门课的核心,就是带你亲手打造一台能自主导航的移动机器人。

具体来说,我们要完成这些事:

  1. 搭建ROS 2开发环境——从零配置你的工作站和机器人
  2. 实现传感器驱动——让激光雷达、IMU、里程计“开口说话”
  3. 构建机器人模型——用URDF描述你的机器人,在Rviz里看到它
  4. 运行SLAM建图——让机器人探索未知环境,生成地图
  5. 实现自主导航——告诉机器人“去这里”,它自己规划路径并避障
  6. 集成可视化与调试——用Rviz、rqt等工具监控机器人状态

最终,你会得到一台这样的机器人:你在地图上点个目标点,它就能自己规划路径、避开障碍物、稳稳当当地开过去。嗯,听起来是不是挺酷的?

课程项目技术指标:

  • 建图精度:±5cm(室内环境)
  • 导航速度:0.3~0.5 m/s(可调)
  • 避障响应时间:<200ms
  • 支持动态障碍物检测

说实话,这些指标在工业级项目里不算高。但作为入门课程,它能让你完整走一遍机器人开发的流程——从硬件选型到算法部署,每一步都亲手实践。等你做完这个项目,再去看那些复杂的工业机器人系统,心里就有底了。

我的经验:做机器人项目,别追求一步到位。先让机器人“能动”,再让它“动得好”。我见过太多人卡在完美主义上——调了三个月参数,结果连基本运动都没验证过。先跑起来,再优化,这是铁律。