动手实战项目¶
本课程以 10 个动手项目 收官,涵盖机器人的主要任务类别——从导航、感知到操作、语言理解和多智能体协作。每个项目都为你提供一个真实机器人任务的**端到端体验**,并贯穿三个算法层级:
| 层级 | 时代 | 设计理念 | 典型方法 |
|---|---|---|---|
| 传统方法 (Traditional) | 深度学习之前 | 基于模型、手工设计特征 | PID、Bug、PDDL、IK |
| 经典学习方法 (Classical Learning) | 深度学习时代 | 数据驱动、端到端神经网络 | DRL、DeepSORT、GraspNet、Seq2Seq |
| 现代 / 基础模型 (Modern / Foundation) | 基础模型时代 | 预训练、少样本、通才模型 | LLM、Transformer、Foundation Model |
通过为每个任务实现全部三个层级,你将培养出**何时传统方法已足够**、何时学习方法更出色、以及**基础模型将走向何方**的直觉。
项目概览¶
| # | 项目名称 | 任务类别 | 算法谱系 | 难度 |
|---|---|---|---|---|
| 1 | 巡线机器人 | 导航 (Navigation) | PID → Stanley → RL | ⭐⭐ |
| 2 | 自主避障导航 | 导航 (Navigation) | Bug/VFH → DWA → DRL | ⭐⭐⭐ |
| 3 | SLAM 与自主导航 | SLAM | gmapping → Cartographer → ORB-SLAM3 | ⭐⭐⭐⭐ |
| 4 | 视觉目标跟踪 | 感知 (Perception) | KCF → SORT/DeepSORT → Transformer | ⭐⭐⭐ |
| 5 | 机械臂抓取 | 操作 (Manipulation) | IK → GraspNet → RL | ⭐⭐⭐ |
| 6 | 语音交互机器人 | 语言 (Language) | ASR+keywords → NLU pipeline → LLM | ⭐⭐⭐ |
| 7 | 多机器人编队 | 多智能体 (Multi-Agent) | Leader-Follower → Consensus → MARL | ⭐⭐⭐⭐ |
| 8 | 视觉语言导航 | VLN | Modular → Seq2Seq → Foundation Model | ⭐⭐⭐⭐ |
| 9 | 基于 TAMP 的物体装配 | TAMP | PDDL → TAMP → LLM-based | ⭐⭐⭐⭐⭐ |
| 10 | 移动操作 | 移动+操作 (Mobile+Manipulation) | Decoupled → Joint → Foundation Model | ⭐⭐⭐⭐⭐ |
推荐学习顺序¶
项目按依赖图排列。从底部(基础)开始,向上推进。
┌─────────────────────────────────┐
│ 10. 移动操作 (⭐⭐⭐⭐⭐) │
└──────────┬──────────┬────────────┘
│ │
┌────────────────┘ └────────────────┐
▼ ▼
┌──────────────────────┐ ┌───────────────────────────┐
│ 5. 机械臂抓取 │ │ 9. 基于 TAMP 的物体装配 │
│ (⭐⭐⭐) │ │ (⭐⭐⭐⭐⭐) │
└──────────┬───────────┘ └─────────────┬─────────────┘
│ │
│ ┌───────────────────────────┐ │
│ │ 8. 视觉语言导航 │ │
│ │ (⭐⭐⭐⭐) │ │
│ └──────┬──────────┬────────┘ │
│ │ │ │
│ ┌──────────┘ └──────────┐ │
│ ▼ ▼ │
│ ┌──────────────────┐ ┌────────────────────┐│
│ │ 4. 视觉目标跟踪 │ │ 6. 语音交互机器人 ││
│ │ (⭐⭐⭐) │ │ (⭐⭐⭐) ││
│ └────────┬─────────┘ └─────────┬──────────┘│
│ │ │ │
└──────────┼──────────────────────┼───────────┘
│ │
┌──────────┼──────────────────────┘
▼ ▼
┌─────────────────────────────┐ ┌──────────────────────────┐
│ 7. 多机器人编队 │ │ 3. SLAM 与自主导航 │
│ (⭐⭐⭐⭐) │ │ (⭐⭐⭐⭐) │
└──────────┬──────────────────┘ └─────────────┬────────────┘
│ │
│ ┌──────────────────┐ │
└────────►│ 2. 自主避障导航 │◄──────┘
│ (⭐⭐⭐) │
└────────┬─────────┘
│
┌────────▼─────────┐
│ 1. 巡线机器人 │
│ (⭐⭐) │
└──────────────────┘
图表说明:箭头从先修项目指向依赖项目。例如,项目 10(移动操作)需要项目 5(机械臂抓取)和项目 9(TAMP)的技能。同一"层级"的项目可以并行进行。
项目简介¶
1. 巡线机器人¶
任务:使用摄像头或红外传感器阵列,让机器人自主沿地面线路行驶。
算法谱系:从经典 PID 控制器 开始,保持机器人沿线路中心行驶。进阶到 Stanley 控制器,实现更平滑的路径跟踪并考虑曲率。最后训练一个 强化学习 (RL) 智能体,直接从传感器观测学习控制策略,无需手动调参即可处理复杂线路几何。
你将练习的技能:传感器读取、PWM 电机控制、反馈回路、基础 RL 训练循环。
2. 自主避障导航¶
任务:在布满障碍物的环境中导航移动机器人,无碰撞地到达目标点。
算法谱系:从 Bug 算法 和 向量场直方图 (VFH) 开始——这些是基于传感器读数进行局部决策的反应式方法。进阶到 动态窗口方法 (DWA),在速度空间中规划满足运动学约束的轨迹。最后用 深度强化学习 (DRL) 在仿真环境(如 Gazebo 或 Isaac Sim)中训练端到端策略,并迁移到真实机器人。
你将练习的技能:距离传感器处理、局部规划、速度剖面分析、仿真到现实迁移 (sim-to-real)。
3. SLAM 与自主导航¶
任务:在未知室内环境中构建地图,并利用地图实现自主目标导向导航。
算法谱系:从 gmapping(基于粒子滤波的 2D SLAM 系统)开始。进阶到 Cartographer,实现更鲁棒的基于图优化的 2D/3D SLAM 并支持回环检测。最后探索 ORB-SLAM3——一个基于特征的视觉 SLAM 系统,支持单目、双目和 RGB-D 相机,可在 GPS 拒止环境中工作。
你将练习的技能:LiDAR/相机标定、占用栅格、位姿图优化、回环检测、基于地图的导航 (Nav2)。
4. 视觉目标跟踪¶
任务:在视频帧中实时跟踪特定运动目标,即使在遮挡情况下也能维持目标身份。
算法谱系:实现 核化相关滤波器 (KCF) 作为快速的手工设计跟踪器。进阶到 SORT/DeepSORT,将目标检测 (YOLO) 与卡尔曼滤波和匈牙利分配算法结合用于多目标跟踪。进一步使用**基于 Transformer 的跟踪器**(如 TransTrack、OSTrack),利用注意力机制实现鲁棒的长时跟踪。
你将练习的技能:图像特征提取、边界框关联、卡尔曼滤波、注意力机制、实时推理优化。
5. 机械臂抓取¶
任务:让机械臂从桌面上抓取各种形状的物体。
算法谱系:从**解析逆运动学 (IK)** 开始,针对已知物体位姿使用几何或数值求解器。进阶到 GraspNet,一个从点云预测 6-DoF 抓取位姿的深度学习模型。最后用 基于 RL 的抓取 结束,在仿真 (Isaac Gym) 中通过试错学习策略,处理未知物体、部分遮挡和杂乱场景。
你将练习的技能:正/逆运动学、URDF 建模、点云处理、奖励设计、操作任务的 sim-to-real。
6. 语音交互机器人¶
任务:构建一个能理解语音指令并通过自然对话智能回应的机器人。
算法谱系:从 自动语音识别 (ASR) + 关键词检测的流水线开始,用于简单命令检测。构建完整的 自然语言理解 (NLU) 流水线,包含意图分类和槽位填充,实现结构化命令理解。最后集成**大语言模型 (LLM)**,处理开放式对话、上下文推理和复杂指令跟随。
你将练习的技能:音频处理、语音转文本 API、意图/槽位模型、提示工程、LLM API 集成、延迟管理。
7. 多机器人编队¶
任务:协调一组移动机器人在导航过程中保持期望的几何队形。
算法谱系:实现 领航-跟随 (Leader-Follower) 方法,一台机器人领航,其他机器人跟踪相对位置。升级到**基于一致性 (Consensus)** 的算法,所有机器人通过分布式通信协商共享状态。探索**多智能体强化学习 (MARL)**,智能体学习适应动态环境和通信故障的协作策略。
你将练习的技能:分布式系统、ROS 2 多机器人通信、一致性图论、MARL 训练(如 MAPPO)、通信鲁棒策略。
8. 视觉语言导航¶
任务:使用自然语言指令引导机器人穿越环境(例如,"走过红色沙发,进入厨房")。
算法谱系:构建一个**模块化流水线**,包含独立的指令解析、视觉特征提取和路径规划模块。训练 Seq2Seq 模型,将语言和视觉观测直接映射为导航动作。探索**基于基础模型**的方法(如使用 CLIP、LLaVA 或 GPT-4V),通过将语言接地到视觉场景中实现零样本或少样本 VLN。
你将练习的技能:视觉语言模型、注意力机制、具身 AI 仿真器 (Habitat, AI2-THOR)、指令接地、评估指标 (SR, SPL)。
9. 基于 TAMP 的物体装配¶
任务:规划并执行多步骤物体装配任务(例如,用积木搭建简单结构)。
算法谱系:从基于 PDDL 的经典规划开始,任务逻辑用规划域描述语言手写。进阶到集成的**任务与运动规划 (TAMP),将符号任务规划与连续运动规划交织执行(如 PDDLStream)。最后探索**基于 LLM 的任务规划,大语言模型从自然语言任务描述和场景观测中生成动作序列。
你将练习的技能:符号规划、PDDL 编码、运动规划 (MoveIt)、规划-执行循环、LLM 在机器人中的接地、约束满足。
10. 移动操作¶
任务:将移动底盘运动与机械臂操作结合,执行需要全身协调的任务(例如,从货架上取物)。
算法谱系:从**解耦 (Decoupled)** 方法开始,底盘导航和手臂操作独立执行并在中间进行交接。进阶到**联合规划 (Joint Planning)**,同时协调底盘和手臂运动,提升可达性和效率。探索**基于基础模型**的控制(如 RT-2、Octo),利用大规模预训练实现跨任务和跨环境的泛化移动操作。
你将练习的技能:全身运动学、集成运动规划、任务编排、基础模型微调、真实世界部署挑战。
技能前置要求¶
开始这些项目之前,你应具备以下基础:
基础技能¶
| 技能 | 最低要求 | 推荐资源 |
|---|---|---|
| Python | 中级——类、异步、装饰器 | 前置准备 |
| ROS 2 | 基础——节点、话题、服务、launch 文件 | ROS 教程 |
| Linux 命令行 | 熟练——bash、SSH、tmux | 前置准备 |
| Git | 基础——分支、合并、PR 工作流 | — |
| 线性代数 | 向量、矩阵、变换 | 机器人数学基础 |
| 控制理论 | PID、状态空间基础 | 规划 |
推荐背景知识(按项目组)¶
| 项目组 | 推荐知识 |
|---|---|
| 导航(项目 1–2) | 规划算法、仿真 |
| SLAM(项目 3) | ROS 2、感知基础 |
| 感知(项目 4) | 深度学习基础、OpenCV |
| 操作(项目 5、10) | 操作基础、仿真 |
| 语言(项目 6) | LLM 基础、NLP 基础 |
| 多智能体(项目 7) | 多智能体 RL、ROS 2 多机器人 |
| VLN(项目 8) | 感知、语言接地 |
| TAMP(项目 9) | 规划、操作、智能体 |
硬件与软件¶
| 资源 | 详情 |
|---|---|
| 仿真环境 | Gazebo、Isaac Sim、MuJoCo、PyBullet、Habitat(见仿真) |
| 机器人平台 | TurtleBot¾、Franka Emika、UR5、自定义 ROS 2 机器人 |
| 计算资源 | 项目 4–10 建议使用 GPU(RTX 3060 或更好) |
| ROS 版本 | ROS 2 Humble / Iron(见 ROS 安装) |
如何使用这些项目¶
- 选择一个项目,匹配你当前的技能水平和兴趣。
- 先完成传统方法层级——它能建立直觉并调试完整流水线。
- 进入经典学习方法层级——与传统基线进行对比。
- 尝试现代方法层级——探索可能性的边界。
- 记录你的成果——每个项目应产出一份简短报告,对比三个层级的表现。
项目作品集
完成全部 10 个项目将为你打造一个**覆盖完整机器人技术栈的作品集**——从底层控制到基于基础模型的高层推理。这正是顶尖机器人实验室和公司所看重的广度。