
一、用一个真实场景理解具身智能
1.1 场景:机器人在厨房给你倒一杯水
让我们用这个最简单的场景,把具身智能的每一个技术环节讲清楚。
你说:"帮我倒杯水"
机器人需要完成的事情:
1. 理解你在说什么(语言理解)
2. 找到杯子在哪里(视觉感知)
3. 找到水壶在哪里(视觉感知)
4. 规划怎么走到水壶那里(导航)
5. 控制手臂抓住水壶(运动规划+控制)
6. 判断水壶有没有拿稳(力觉感知)
7. 把水壶抬起来,对准杯子倒水(精细操作)
8. 判断水倒够了没有(视觉感知)
9. 把水壶放回去(运动规划+控制)
10. 把水端给你(导航+操作)
每一个步骤都是一个完整的技术领域。 让我们逐一拆解。
二、具身智能的技术主线:感知→决策→执行
2.1 核心技术路线图
┌─────────────────────────────────────────────────────────────────────┐
│ 具身智能完整技术链路 │
│ │
│ 用户指令: "帮我倒杯水" │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ 语言理解层 │ │
│ │ "帮我倒杯水" → 意图:倒水 → 目标:杯子+水壶 → 步骤:拆解 │ │
│ │ 技术: LLM / VLM / 语义解析 │ │
│ └───────────────────────┬───────────────────────────────┘ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ 感知层 (Perception) │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ 视觉感知 │ │ 触觉感知 │ │ 本体感知 │ │ │
│ │ │ RGB-D │ │ 力传感器 │ │ 关节编码器│ │ │
│ │ │ 相机 │ │ 触觉皮肤 │ │ IMU │ │ │
│ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ 3D 场景理解 │ │ │
│ │ │ - 杯子在哪里?(目标检测+6D位姿) │ │ │
│ │ │ - 水壶在哪里?(目标检测+6D位姿) │ │ │
│ │ │ - 桌面在哪?(平面检测) │ │ │
│ │ │ - 有没有障碍物?(语义分割) │ │ │
│ │ └─────────────────────────────────────┘ │ │
│ └───────────────────────┬───────────────────────────────┘ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ 决策层 (Decision & Planning) │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌─────────────┐ │ │
│ │ │ 任务规划 │ │ 运动规划 │ │ 行为决策 │ │ │
│ │ │ (做什么) │ │ (怎么做) │ │ (何时做) │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ 步骤1:走到水壶│ │ 路径:避开障碍 │ │ 如果杯子满了│ │ │
│ │ │ 步骤2:抓水壶 │ │ 轨迹:关节运动 │ │ → 停止倒水 │ │ │
│ │ │ 步骤3:走到杯子│ │ 速度:平滑曲线 │ │ 如果水壶掉了│ │ │
│ │ │ 步骤4:倒水 │ │ │ │ → 重新抓取 │ │ │
│ │ └──────────────┘ └──────────────┘ └─────────────┘ │ │
│ └───────────────────────┬───────────────────────────────┘ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ 执行层 (Execution & Control) │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌─────────────┐ │ │
│ │ │ 底盘控制 │ │ 机械臂控制 │ │ 夹爪控制 │ │ │
│ │ │ (导航移动) │ │ (关节运动) │ │ (开合) │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ 速度指令 │ │ 关节角度指令 │ │ 力/位置指令 │ │ │
│ │ │ PID控制 │ │ 逆运动学 │ │ 阻抗控制 │ │ │
│ │ │ 避障 │ │ 轨迹跟踪 │ │ 力反馈 │ │ │
│ │ └──────────────┘ └──────────────┘ └─────────────┘ │ │
│ └───────────────────────┬───────────────────────────────┘ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ 反馈层 (Feedback) │ │
│ │ │ │
│ │ 任务完成?→ 如果没有 → 回到感知层重新评估 │ │
│ │ 出错了? → 如果是 → 恢复策略(重试/换方法/求助人类) │ │
│ └───────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
2.2 为什么是"感知→决策→执行"
这个三段式结构是具身智能最核心的架构,对应了生物智能的基本模式:
生物体: 眼睛(感知) → 大脑(决策) → 肌肉(执行)
机器人: 传感器(感知) → 算法(决策) → 电机(执行)
类比:
- 感知 = 你的眼睛看到杯子在哪里
- 决策 = 你的大脑规划怎么拿到杯子
- 执行 = 你的手伸出去抓住杯子
三者缺一不可:
- 没有感知 → 不知道世界长什么样(盲人)
- 没有决策 → 不知道该做什么(无意识)
- 没有执行 → 无法改变世界(植物人)
三、感知层深度解析:机器人如何"看"世界
3.1 机器人的"眼睛"------视觉传感器
机器人的眼睛不是一只,而是多种"眼睛"的组合:
┌─────────────────────────────────────────────────┐
│ 机器人的视觉系统 │
│ │
│ RGB相机 深度相机 激光雷达 │
│ (彩色照片) (距离信息) (3D点云) │
│ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │ 📷 │ │ 📸 │ │ 📡 │ │
│ └──┬──┘ └──┬──┘ └──┬──┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ 640x480 640x480 360°扫描 │
│ 彩色图像 每个像素 精确的 │
│ 30fps 有距离值 3D坐标点 │
│ │
│ 用途: 用途: 用途: │
│ 物体识别 抓取定位 建图避障 │
│ 颜色判断 3D重建 距离测量 │
│ 文字识别 手眼协调 场景理解 │
└─────────────────────────────────────────────────┘
实际感知流程:
原始图像 → 预处理 → 检测/分割 → 理解 → 3D信息
步骤1: 相机拍一张照片
RGB: [[255,0,0], [0,255,0], ...] ← 每个像素的颜色
Depth: [[0.5m], [0.8m], ...] ← 每个像素的距离
步骤2: 目标检测(YOLO/SAM)
"图像中有一个红色杯子,位置在(320, 240),大小80x60像素"
步骤3: 6D位姿估计
"杯子在机器人坐标系中的位置: x=0.3m, y=0.1m, z=0.05m
姿态: 绕Z轴旋转了15度"
步骤4: 3D重建
构建完整的3D场景模型,包括桌面、杯子、水壶等所有物体
3.2 感知的核心技术详解
3.2.1 目标检测------"找到东西在哪里"
python
"""
目标检测的核心:输入一张图,输出图中所有物体的位置和类别
"""
# 输入: 一张 640x480 的 RGB 图像
# 输出: [
# {"class": "cup", "bbox": [300, 200, 400, 350], "confidence": 0.95},
# {"class": "kettle", "bbox": [100, 150, 250, 300], "confidence": 0.88},
# {"class": "table", "bbox": [0, 300, 640, 480], "confidence": 0.99}
# ]
# 技术演进:
# 传统方法: HOG+SVM (2005) → 深度学习: YOLO (2016) → 实时: YOLOv8 (2023)
# 具身智能常用: YOLOv8 (实时), Grounding DINO (语言引导检测)
# 语言引导检测(用自然语言找物体):
# 输入: 图像 + "找到红色的杯子"
# 输出: 红色杯子的位置和边界框
3.2.2 6D位姿估计------"物体在3D空间中的精确位置和姿态"
这是具身智能感知中最重要的技术。
为什么需要6D位姿?
想象你要抓一个杯子:
- 只知道杯子在图像中的2D位置(x, y)够不够?→ 不够!
- 还需要知道杯子距离你多远(z)→ 至少3D位置
- 还需要知道杯子是正放还是斜放(旋转)→ 需要6D位姿
6D = 3个位置 + 3个旋转
位置: (x, y, z) ← 杯子在空间中的坐标
旋转: (roll, pitch, yaw) ← 杯子的朝向
没有6D位姿 → 机械臂不知道从哪个角度去抓
有6D位姿 → 机械臂精确知道怎么去抓
python
"""
6D位姿估计的输入输出
"""
# 输入: RGB-D图像(彩色+深度)
# 输出: 物体的6D位姿
# {
# "translation": [0.3, 0.1, 0.05], # x, y, z 位置(米)
# "rotation": [[1, 0, 0], # 3x3 旋转矩阵
# [0, 0.97, -0.26],
# [0, 0.26, 0.97]]
# }
# 代表性方法:
# - FoundationPose: 通用6D位姿估计(无需CAD模型)
# - BundleSDF: 实时3D重建+位姿跟踪
# - MegaPose: 大规模位姿估计
3.2.3 触觉感知------"机器人如何感受接触"
视觉能看到物体在哪里,但抓没抓稳?用了多大力?
这些需要触觉来感知。
触觉传感器原理:
┌─────────────────────────────┐
│ 触觉皮肤 │
│ ┌───┬───┬───┬───┬───┐ │
│ │ 0 │ 0 │ 1 │ 0 │ 0 │ │ ← 压力分布矩阵
│ ├───┼───┼───┼───┼───┤ │
│ │ 0 │ 1 │ 1 │ 1 │ 0 │ │ ← 1 = 有压力
│ ├───┼───┼───┼───┼───┤ │ ← 0 = 无压力
│ │ 0 │ 0 │ 1 │ 0 │ 0 │ │
│ └───┴───┴───┴───┴───┘ │
│ │
│ 告诉你: │
│ 1. 有没有接触 │
│ 2. 接触力多大 │
│ 3. 接触面的形状 │
│ 4. 物体有没有滑动 │
└─────────────────────────────┘
没有触觉: 抓杯子时不知道抓太紧(碎了)还是太松(掉了)
有触觉: 精确控制抓取力度,刚好多好
3.3 感知的统一模型------多模态基础模型
2026年的趋势是用一个统一模型处理所有感知任务:
传统方式: 检测用YOLO + 分割用SAM + 位姿用专用模型 → 3个模型
统一方式: 一个基础模型搞定所有感知任务
代表:
- Grounded SAM: 语言引导的分割("找到红色的杯子"→ 精确分割掩码)
- SAM3D: 3D场景中的分割
- LISA: 语言引导的推理分割
四、决策层深度解析:机器人如何"思考"
4.1 决策的三个层次
你说: "帮我倒杯水"
机器人需要在三个层次上做决策:
┌─────────────────────────────────────────────┐
│ 层次1: 任务规划 (Task Planning) │
│ "这个任务需要哪些步骤?" │
│ │
│ LLM 分解: │
│ 步骤1: 识别并走到水壶位置 (导航) │
│ 步骤2: 抓取水壶 (操作) │
│ 步骤3: 走到杯子位置 (导航) │
│ 步骤4: 对准杯子倒水 (精细操作) │
│ 步骤5: 放下水壶 (操作) │
│ │
│ 技术: LLM/VLM 任务分解、行为树、状态机 │
├─────────────────────────────────────────────┤
│ 层次2: 运动规划 (Motion Planning) │
│ "每个步骤具体怎么动?" │
│ │
│ 步骤2的运动规划: │
│ 路径: 手臂从当前位置 → 绕过桌子 → 到达水壶 │
│ 轨迹: 每个关节每个时刻的角度 │
│ 速度: 什么时候快、什么时候慢 │
│ │
│ 技术: RRT*/PRM(路径)、CHOMP(轨迹)、IK(逆运动)│
├─────────────────────────────────────────────┤
│ 层次3: 反应式控制 (Reactive Control) │
│ "执行过程中遇到突发情况怎么办?" │
│ │
│ 如果: 水壶比预想的重 → 加大力矩 │
│ 如果: 中途有人碰了手臂 → 紧急停止 │
│ 如果: 杯子满了 → 停止倒水 │
│ │
│ 技术: 阻抗控制、力控制、RL策略 │
└─────────────────────────────────────────────┘
4.2 任务规划------"LLM 如何指挥机器人"
这是2024-2026年最热门的研究方向:用大语言模型作为机器人的"大脑"。
python
"""
用 LLM 做任务规划的完整流程
"""
# 用户说: "帮我倒杯水"
# 第一步: LLM 理解意图
task = llm.chat("用户说: '帮我倒杯水'。请分解为机器人可以执行的步骤。")
# LLM 输出:
"""
步骤1: 识别水壶位置
步骤2: 导航到水壶旁边
步骤3: 伸出机械臂
步骤4: 打开夹爪
步骤5: 移动到水壶把手位置
步骤6: 闭合夹爪(抓取水壶)
步骤7: 抬起水壶
步骤8: 导航到杯子旁边
步骤9: 调整水壶角度(倒水)
步骤10: 观察杯子水位
步骤11: 水满后回正水壶
步骤12: 导航到水壶原位
步骤13: 放下水壶
步骤14: 任务完成
"""
# 第二步: 每个步骤映射到具体技能
for step in task.steps:
if step.type == "导航":
skill = navigation_skill # Nav2 导航
elif step.type == "抓取":
skill = grasp_skill # 抓取策略
elif step.type == "精细操作":
skill = manipulation_skill # 操作策略
# 第三步: 执行并监控
result = skill.execute(step.params)
if not result.success:
# 第四步: 失败恢复
recovery = llm.chat(f"步骤{step.id}失败: {result.error}。请建议恢复策略。")
4.3 运动规划------"手臂怎么动"
运动规划的核心问题:
"给定起始姿态和目标姿态,找到一条不碰撞的运动轨迹"
┌───────────────────────────────────────────────────────┐
│ │
│ 起始: 手臂在体侧 │
│ 目标: 手臂伸到水壶位置 │
│ │
│ ❌ 直线路径: 会撞到桌子! │
│ │
│ S ┌───┐ │
│ t ╭─┤桌子├─╮ │
│ a 手臂起点 │ └───┘ │ 目标(水壶) │
│ r │ │ ● │
│ t ╭──╮ │ │ ╱ │
│ │手│ ╲ │ │ ╱ │
│ │臂│ ╲ 绕过 │ │ ╱ 曲线路径 │
│ ╰──╯ ╲ 桌子 │ │╱ │
│ ╲ │ ╱│ │
│ ╲ │ ╱ │ │
│ ╲ │ ╱ │ │
│ ● │ │
│ 到达水壶 │ │
│ │
│ ✅ RRT* 算法找到了一条绕过桌子的安全路径 │
└───────────────────────────────────────────────────────┘
核心算法:
| 算法 | 原理 | 直觉理解 |
|---|---|---|
| RRT* | 随机采样+树搜索 | 像蚂蚁探路,随机试探直到找到路 |
| PRM | 构建路图 | 先画一张地图,再在地图上找路 |
| CHOMP | 轨迹优化 | 先画一条粗路,然后不断打磨变光滑 |
| 逆运动学(IK) | 目标位姿→关节角度 | "手要到那个位置,每个关节转多少度?" |
4.4 反应式控制------"遇到意外怎么办"
机器人在执行任务时会遇到各种意外:
场景1: 抓水壶时发现太重了
├── 感知: 力传感器检测到力矩超过阈值
├── 决策: 增加抓取力度 / 换一种抓法
└── 执行: 调整夹爪力矩
场景2: 倒水时杯子被碰倒了
├── 感知: 视觉检测到杯子倾倒
├── 决策: 立即停止倒水 / 扶起杯子 / 通知人类
└── 执行: 紧急停止水壶倾倒
场景3: 走到一半前面突然有个人
├── 感知: 雷达检测到动态障碍物
├── 决策: 停止前进 / 等人走过 / 绕路
└── 执行: 刹车 + 重新规划路径
技术方案:
python
"""
反应式控制的三层架构
"""
# 层1: 安全层(最高优先级,硬件级)
# - 碰撞检测 → 立即停止
# - 力矩超限 → 立即停止
# - 实现: 硬件安全回路,1ms响应
# 层2: 反应层(中优先级,10-100Hz)
# - 力控制: 根据接触力调整运动
# - 阻抗控制: 模拟弹簧-阻尼系统
class ImpedanceController:
def compute(self, desired_pos, current_pos, current_force):
# 阻抗控制: F = K*(x_desired - x_current) + D*(v_desired - v_current)
stiffness = 500 # 刚度 (N/m)
damping = 50 # 阻尼 (N·s/m)
position_error = desired_pos - current_pos
force_command = stiffness * position_error - damping * current_velocity
return force_command
# 层3: 规划层(低优先级,1-10Hz)
# - 路径规划
# - 任务规划
# - 行为决策
五、执行层深度解析:机器人如何"动手"
5.1 执行器------机器人的"肌肉"
机器人的执行器(电机/关节)就像人的肌肉:
┌─────────────────────────────────────────────────────┐
│ 执行器类型 │
│ │
│ 伺服电机 (最常用) │
│ ├── 位置控制: "转到45度" │
│ ├── 速度控制: "每秒转30度" │
│ └── 力矩控制: "输出2N·m的力" │
│ │
│ 直线电机 │
│ └── 直线运动: "伸出10cm" │
│ │
│ 气动/液压执行器 │
│ └── 大力矩: "举起100kg" │
│ │
│ 协作机器人关节 (Cobot Joint) │
│ └── 力矩感知 + 位置控制 │
│ 可以感知外力,碰到人会自动停止 │
└─────────────────────────────────────────────────────┘
5.2 控制算法------"如何精确控制"
最基本的控制算法: PID 控制
目标: 把关节转到 45 度
当前: 关节在 30 度
PID 计算:
P (比例): 差多少补多少 → 误差=15° → 输出=Kp*15
I (积分): 累积误差补偿 → 长期偏一点 → 慢慢修正
D (微分): 预测趋势 → 快到目标了 → 提前减速
输出 = Kp * 误差 + Ki * 累积误差 + Kd * 误差变化率
类比开车:
- P = 看到偏离车道多远就打多少方向盘
- I = 一直偏左就慢慢多打一点
- D = 快回到车道了就慢慢回正
5.3 灵巧手------"机器人的手指"
灵巧手是具身智能最难的部分之一:
人手: 27个自由度,可以做任何精细操作
灵巧手: 12-24个自由度,正在追赶人手
┌───────────────────────────────┐
│ 灵巧手控制 │
│ │
│ 问题: 12个关节怎么协调? │
│ │
│ 方法1: 预定义抓取模式 │
│ ├── 抓球: 所有手指弯曲 │
│ ├── 抓笔: 拇指+食指+中指 │
│ └── 拧瓶盖: 旋转+握紧 │
│ │
│ 方法2: 学习抓取 (RL) │
│ ├── 在仿真中试错100万次 │
│ ├── 学会任意物体的抓取策略 │
│ └── Sim-to-Real 迁移 │
│ │
│ 方法3: 触觉引导抓取 │
│ ├── 感知接触力分布 │
│ ├── 实时调整每个手指的力度 │
│ └── 像人手一样"摸索"着抓 │
└───────────────────────────────┘
六、导航层深度解析:机器人如何"走"
6.1 导航的核心问题
"从A点走到B点,不撞到任何东西"
看似简单,实际上包含:
1. 我在哪里?(定位)
2. 世界长什么样?(建图)
3. 怎么走到目标?(路径规划)
4. 走的时候怎么避开移动的物体?(避障)
6.2 SLAM------"边走边画地图"
SLAM (Simultaneous Localization and Mapping)
同时定位与建图
机器人第一次进入一个房间:
时间1: 只能看到眼前一点 → 画一小块地图
时间2: 走了几步 → 扩展地图,同时更新自己的位置
时间3: 继续走 → 地图越来越大
时间100: 走完整个房间 → 完整地图 + 精确位置
┌──────────────────────────────────────┐
│ SLAM 建图过程 │
│ │
│ ████████ │
│ █ █ │
│ █ 🤖 █ │
│ █ █ │
│ ████████ │
│ │
│ 每个█代表一块区域 │
│ 🤖代表机器人当前位置 │
│ 机器人边走边用激光雷达扫描 │
│ 逐步构建出整个房间的地图 │
└──────────────────────────────────────┘
常用算法:
- Gmapping: 2D激光SLAM(入门经典)
- Cartographer: Google出品(高质量)
- ORB-SLAM3: 视觉SLAM(用相机)
- LIO-SAM: 激光+IMU融合SLAM
6.3 路径规划------"找一条路"
给定地图和目标位置,找到最优路径:
A* 算法(最直观的理解):
┌──────────────────────────────────────┐
│ S = 起点 G = 终点 █ = 障碍物 │
│ │
│ S · · · · · · · · · │
│ · · · · · · · · · · │
│ · · █ █ █ · · · · · │
│ · · · · █ · · · · · │
│ · · · · █ · · · · · │
│ · · · · · · · · · G │
│ │
│ A* 找到的最短路径: S→绕过障碍→G │
│ 像GPS导航一样! │
└──────────────────────────────────────┘
6.4 避障------"走路不撞东西"
实时避障的原理:
机器人视角:
┌─────────────────────────────────────┐
│ │
│ 左前方: 2.0m (安全) │
│ 正前方: 0.3m (危险!) │
│ 右前方: 1.5m (安全) │
│ │
│ DWA (Dynamic Window Approach): │
│ 在当前可行的速度范围内, │
│ 找到一个既朝向目标又不撞障碍的 │
│ 最优速度指令。 │
│ │
│ 类比: 开车时看到前面有个人, │
│ 你会同时考虑: 往哪打方向盘、 │
│ 踩多少刹车、怎么绕过去。 │
└─────────────────────────────────────┘
七、具身智能的"灵魂"------学习方法
7.1 为什么需要"学习"而不只是"编程"
传统方法(编程):
"如果看到红色杯子在(300,200),就移动关节1到45度,关节2到30度..."
问题:
1. 杯子换个位置就不管用了
2. 换个杯子形状就不管用了
3. 换个桌子高度就不管用了
4. 无数种情况写不完
学习方法(数据驱动):
"看1000次人类怎么抓杯子,自己学会"
优势:
1. 杯子在任何位置都能抓
2. 任何形状的杯子都能抓
3. 任何高度的桌子都能适应
4. 甚至没见过的物体也能尝试抓
7.2 三种核心学习范式
┌─────────────────────────────────────────────────────┐
│ 具身智能的三种学习方式 │
│ │
│ 1. 模仿学习 (Imitation Learning) │
│ "看人怎么做,跟着学" │
│ ├── 人类遥操作演示 → 机器人学习 │
│ ├── 优点: 简单、安全、数据高效 │
│ ├── 缺点: 受限于演示质量 │
│ └── 代表: ACT, Diffusion Policy │
│ │
│ 2. 强化学习 (Reinforcement Learning) │
│ "自己试错,从奖惩中学习" │
│ ├── 在仿真中尝试100万次 │
│ ├── 优点: 可以超越人类 │
│ ├── 缺点: 需要精心设计奖励函数 │
│ └── 代表: PPO, SAC + Isaac Lab │
│ │
│ 3. VLA 模型 (Vision-Language-Action) │
│ "看一眼+听指令,直接输出动作" │
│ ├── 输入: 图像 + "把杯子放到桌上" │
│ ├── 输出: 机器人的动作序列 │
│ ├── 优点: 泛化能力强,可理解语言 │
│ ├── 缺点: 需要大量数据 │
│ └── 代表: RT-2, OpenVLA, π0 │
│ │
└─────────────────────────────────────────────────────┘
7.3 模仿学习详解------"跟着老师学"
模仿学习的完整流程:
步骤1: 人类演示
┌────────────────────────────────────────┐
│ 操作者用遥操作设备控制机器人: │
│ │
│ 🧑 → 🎮(手柄/手套) → 🤖 → 抓杯子 │
│ │
│ 同时记录: │
│ - 每一帧的相机图像 │
│ - 每一时刻的关节角度 │
│ - 夹爪的开合状态 │
│ │
│ 采集50-500次演示 │
└────────────────────────────────────────┘
步骤2: 训练策略网络
┌────────────────────────────────────────┐
│ 输入: 当前相机图像 │
│ 输出: 下一步的动作(关节角度) │
│ │
│ 网络结构: │
│ 图像 → CNN/ViT → 特征 → MLP → 动作 │
│ │
│ 训练目标: 让网络输出的动作 │
│ 尽量接近人类演示的动作 │
└────────────────────────────────────────┘
步骤3: 部署执行
┌────────────────────────────────────────┐
│ 机器人看到当前画面 → 网络预测动作 → 执行 │
│ 不需要人类操控了! │
└────────────────────────────────────────┘
7.4 强化学习详解------"自己试错学"
强化学习的核心思想:
想象一个婴儿学走路:
1. 随机乱动腿 → 摔倒了(惩罚: -1)
2. 随机乱动腿 → 站起来了(奖励: +1)
3. 站着时迈了一步 → 又摔倒了(惩罚: -0.5)
4. 迈了一步没摔 → 好棒!(奖励: +2)
... 重复100万次...
最终: 学会了走路
机器人强化学习:
1. 随机控制关节 → 没抓到杯子(奖励: 0)
2. 手臂碰到了杯子 → 稍微奖励(奖励: +0.1)
3. 抓住了杯子 → 好棒!(奖励: +10)
4. 把杯子举起来了 → 太棒了!(奖励: +100)
... 重复100万次(在仿真中)...
最终: 学会了抓杯子
关键: 在仿真中可以同时跑4096个环境
真实世界1年的经验 → 仿真中1小时就能获得
八、完整技术栈对应关系
┌──────────────────────────────────────────────────────────────┐
│ 技术领域 │ 具体技术 │ 代表工具/框架 │
├──────────────────────────────────────────────────────────────┤
│ │ │ │
│ 语言理解 │ LLM/VLM │ GPT-5.5 │
│ │ 任务分解 │ Claude 4.8 │
│ │ Prompt Engineering │ │
│ │ │ │
│ 视觉感知 │ 目标检测 │ YOLO, SAM │
│ │ 6D位姿估计 │ FoundationPose│
│ │ 3D重建 │ Open3D │
│ │ 语义分割 │ Grounded SAM │
│ │ │ │
│ 触觉感知 │ 力/力矩测量 │ GelSight │
│ │ 滑动检测 │ 触觉皮肤 │
│ │ │ │
│ 本体感知 │ 关节角度 │ 编码器 │
│ │ IMU姿态 │ IMU │
│ │ │ │
│ 任务规划 │ LLM任务分解 │ LangChain │
│ │ 行为树 │ BT.CPP │
│ │ 状态机 │ SMACH │
│ │ │ │
│ 运动规划 │ 路径规划 │ MoveIt2 │
│ │ 轨迹优化 │ CHOMP/TrajOpt │
│ │ 逆运动学 │ KDL/IKFast │
│ │ │ │
│ 导航 │ SLAM建图 │ SLAM Toolbox │
│ │ 路径规划 │ Nav2 │
│ │ 避障 │ DWA │
│ │ │ │
│ 控制 │ PID控制 │ ros2_control │
│ │ 阻抗控制 │ 自实现 │
│ │ MPC │ CasADi │
│ │ │ │
│ 模仿学习 │ 行为克隆 │ LeRobot │
│ │ ACT │ ACT代码库 │
│ │ Diffusion Policy │ LeRobot │
│ │ │ │
│ 强化学习 │ PPO/SAC │ RSL-RL │
│ │ 并行训练 │ Isaac Lab │
│ │ │ │
│ VLA模型 │ 端到端策略 │ OpenVLA │
│ │ 语言引导操作 │ RT-2 │
│ │ │ │
│ 仿真 │ 物理仿真 │ MuJoCo │
│ │ GPU并行 │ Isaac Sim │
│ │ ROS集成 │ Gazebo │
│ │ │ │
│ 数据 │ 遥操作采集 │ LeRobot │
│ │ 数据集 │ Open X-Emb │
│ │ │ │
└──────────────────────────────────────────────────────────────┘
九、一个完整项目的技术栈拆解
项目:"机器人自动整理桌面"
任务: 把桌上的物品分类整理(文具放左边,杯子放右边)
技术栈拆解:
1. 感知
├── 相机: Intel RealSense D435 (RGB-D)
├── 检测: Grounding DINO ("找到笔、杯子、书")
├── 分割: SAM2 (精确物体轮廓)
├── 位姿: FoundationPose (物体6D位姿)
└── 场景: Open3D 点云处理 (桌面平面检测)
2. 决策
├── 任务规划: GPT-4o 分析物品类别,决定放置位置
├── 抓取规划: AnyGrasp (计算最优抓取位姿)
├── 运动规划: MoveIt2 (RRT* 路径规划)
└── 行为决策: 状态机 (抓取→移动→放置→下一个)
3. 执行
├── 机械臂: SO-100 (5+1自由度)
├── 夹爪: 平行夹爪
├── 控制: ros2_control + PID
└── 安全: 力矩限制 + 碰撞检测
4. 仿真验证 (先在仿真中验证)
├── MuJoCo 桌面场景
├── 域随机化 (不同物体、位置)
└── 自动评估成功率
5. 部署
├── ROS2 节点集成
├── LeRobot 策略部署
└── 实机调试优化
十、从零开始的第一步
10.1 如果你只有1台电脑
第1天: 安装 MuJoCo
pip install mujoco
运行 MuJoCo 官方示例,理解物理仿真
第1周: 学习 LeRobot
git clone https://github.com/huggingface/lerobot
运行 PushT 示例,在仿真中训练策略
第2周: 学习基础感知
pip install ultralytics
运行 YOLO 目标检测,理解视觉感知
第3周: 学习 ROS2
安装 ROS2 Humble,跑通话题通信
第4周: 综合项目
用 MuJoCo + 基础控制,完成机械臂抓取任务
10.2 如果你有一台机械臂
第1天: 组装硬件,连接控制
第1周: 用 LeRobot 采集演示数据
第2周: 训练 ACT/Diffusion Policy
第3周: 部署策略到真实机器人
第4周: 优化和调参,提高成功率
10.3 推荐的学习资源优先级
必看(第1个月):
1. LeRobot 官方教程 → 跑通第一个机器人学习项目
2. MuJoCo 官方文档 → 理解物理仿真
3. UC Berkeley CS285 → 深度强化学习(网上免费)
进阶(第2-3个月):
4. RT-2 论文 → 理解 VLA
5. ACT 论文 → 理解模仿学习
6. Diffusion Policy 论文 → 理解扩散策略
深入(第4-6个月):
7. Isaac Lab 教程 → 大规模 RL 训练
8. OpenVLA 代码 → VLA 实践
9. ROS2 官方教程 → 机器人系统集成