具身智能从零到精通:完整学习路线与实战指南

目录


一、什么是具身智能

1.1 最直观的理解

具身智能 = 有"身体"的AI。

传统AI(如ChatGPT)只能在虚拟世界中处理文字和图片,而具身智能是让AI拥有物理身体(机器人),能够在真实世界中感知、决策、行动

复制代码
传统AI:  文字/图片 → [大脑] → 文字/图片
具身智能: 真实世界 → [感知] → [大脑] → [动作] → 真实世界
         ↑                                              │
         └──────────── 反馈循环 ←────────────────────────┘

通俗类比

  • ChatGPT = 被关在房间里的天才(只能通过纸条交流)
  • 具身智能 = 能走出房间干活的机器人(有眼睛、手、脚)

1.2 为什么具身智能是下一个风口

驱动因素 说明
大模型突破 GPT-5.5/Claude 4.8 等提供了强大的"大脑"
硬件成本下降 机器人关节、传感器价格大幅降低
仿真技术成熟 Isaac Sim/Gazebo 等让虚拟训练成为可能
数据飞轮启动 机器人数据集(Open X-Embodiment)不断增长
政策支持 各国将机器人列为战略产业
资本涌入 Figure、1X、特斯拉 Optimus 等获得巨额融资

1.3 具身智能 vs 机器人 vs 自动驾驶

复制代码
┌─────────────────────────────────────────────────────┐
│                    具身智能(最广)                     │
│  ┌─────────────────────────────────────────────┐    │
│  │              机器人(子集)                    │    │
│  │  ┌─────────┐ ┌─────────┐ ┌─────────┐       │    │
│  │  │ 工业机器人│ │ 服务机器人│ │ 人形机器人│       │    │
│  │  └─────────┘ └─────────┘ └─────────┘       │    │
│  └─────────────────────────────────────────────┘    │
│  ┌──────────────┐                                   │
│  │   自动驾驶     │                                   │
│  └──────────────┘                                   │
│  ┌──────────────┐                                   │
│  │   无人机       │                                   │
│  └──────────────┘                                   │
└─────────────────────────────────────────────────────┘

1.4 具身智能的典型应用

应用场景 代表产品 技术难点
人形机器人 Figure 02, Tesla Optimus, Unitree G1 全身运动控制、灵巧手操作
工业装配 机械臂抓取、柔性装配 精密操作、力控
仓储物流 移动机器人、分拣 导航避障、多机协作
家庭服务 扫地、做饭、护理 场景理解、长程规划
手术机器人 达芬奇手术系统 极高精度、安全可靠性
自动驾驶 Waymo, 特斯拉 FSD 感知决策、长尾场景
农业机器人 采摘、除草、巡检 非结构化环境

二、具身智能技术全景

2.1 核心技术栈

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    具身智能技术栈                               │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│  感知层 (Perception)                                         │
│  ├── 视觉: RGB相机、深度相机、立体视觉                          │
│  ├── 点云: LiDAR、RGB-D                                      │
│  ├── 触觉: 力/力矩传感器、触觉皮肤                              │
│  ├── 本体感知: 关节编码器、IMU                                  │
│  └── 技术: 目标检测、语义分割、6D位姿估计、3D重建               │
│                                                              │
│  决策层 (Decision)                                           │
│  ├── 任务规划: LLM任务分解、行为树、状态机                       │
│  ├── 运动规划: 路径规划(RRT)、轨迹优化                          │
│  ├── 操作规划: 抓取规划、装配规划                               │
│  └── 技术: VLA模型、世界模型、强化学习策略                       │
│                                                              │
│  控制层 (Control)                                            │
│  ├── 底层控制: PID、阻抗控制、力控制                            │
│  ├── 运动控制: 全身运动控制(WBC)、步态规划                       │
│  └── 技术: MPC、RL策略执行、关节伺服                            │
│                                                              │
│  仿真层 (Simulation)                                         │
│  ├── 物理引擎: MuJoCo、Isaac Sim、Gazebo                      │
│  ├── 场景生成: 程序化生成、数字孪生                              │
│  └── 域随机化: 材质、光照、物理参数随机化                        │
│                                                              │
│  数据层 (Data)                                               │
│  ├── 遥操作: VR手套、主从控制                                   │
│  ├── 数据集: Open X-Embodiment、DROID                         │
│  └── 数据增强: 仿真数据、合成数据                               │
│                                                              │
└─────────────────────────────────────────────────────────────┘

2.2 具身智能的关键研究方向

方向 说明 代表工作
Vision-Language-Action (VLA) 视觉+语言→动作的端到端模型 RT-2, OpenVLA, π0
模仿学习 (IL) 从人类演示中学习行为 ACT, Diffusion Policy
强化学习 (RL) 通过试错学习最优策略 Isaac Gym, PPO
世界模型 (World Model) 学习环境动力学预测未来 Genie, UniSim
灵巧手操作 多指手的精细操作 DexMV, AnyTeleop
全身运动控制 人形机器人的行走和操作 Humanoid Locomotion
3D视觉感知 3D场景理解和物体位姿估计 SAM3D, Grounded-SAM
多模态基础模型 机器人通用基础模型 RT-X, Octo

三、必备基础知识

3.1 数学基础

知识领域 重要程度 学习内容
线性代数 ⭐⭐⭐⭐⭐ 矩阵运算、特征值、SVD分解、齐次变换
概率论 ⭐⭐⭐⭐⭐ 贝叶斯推理、高斯分布、卡尔曼滤波
微积分 ⭐⭐⭐⭐ 梯度、链式法则、优化
优化理论 ⭐⭐⭐⭐ 凸优化、非线性优化、梯度下降
几何学 ⭐⭐⭐⭐ 旋转矩阵、四元数、李群李代数
动力学 ⭐⭐⭐ 牛顿-欧拉方程、拉格朗日力学

3.2 编程基础

技能 重要程度 学习内容
Python ⭐⭐⭐⭐⭐ 基础语法、NumPy、OpenCV
C++ ⭐⭐⭐⭐ 基础语法、ROS2 C++
PyTorch ⭐⭐⭐⭐⭐ 张量操作、自动微分、模型构建
Linux ⭐⭐⭐⭐⭐ 命令行、Shell脚本、系统管理
Git ⭐⭐⭐⭐ 版本控制、协作开发
Docker ⭐⭐⭐ 容器化部署

3.3 AI/ML 基础

知识领域 重要程度 学习内容
深度学习基础 ⭐⭐⭐⭐⭐ CNN、RNN、Transformer
计算机视觉 ⭐⭐⭐⭐⭐ 目标检测、分割、位姿估计
强化学习 ⭐⭐⭐⭐ MDP、策略梯度、PPO、SAC
模仿学习 ⭐⭐⭐⭐ 行为克隆、DAgger
大语言模型 ⭐⭐⭐⭐ LLM原理、Prompt Engineering
扩散模型 ⭐⭐⭐ DDPM、Diffusion Policy

3.4 机器人学基础

知识领域 重要程度 学习内容
运动学 ⭐⭐⭐⭐⭐ 正运动学、逆运动学、DH参数
动力学 ⭐⭐⭐⭐ 机器人动力学建模
控制理论 ⭐⭐⭐⭐ PID、状态空间、MPC
ROS2 ⭐⭐⭐⭐⭐ 节点、话题、服务、TF
传感器 ⭐⭐⭐⭐ 相机模型、LiDAR、IMU

四、核心技术栈详解

4.1 VLA(Vision-Language-Action)模型

VLA 是具身智能最核心的技术方向,它将视觉、语言和动作统一到一个模型中。

复制代码
输入:  "把红色的杯子放到桌上"
       + 相机图像
       ↓
┌──────────────────┐
│   VLA 模型        │
│  (类似 GPT 的     │
│   多模态模型)     │
└──────┬───────────┘
       ↓
输出:  机器人动作序列 [关节角度, 夹爪状态, ...]

代表模型

模型 机构 特点
RT-2 Google DeepMind 首个 VLA 模型,基于 PaLM-E
RT-X Google + 33个实验室 跨机器人的通用策略
Octo UC Berkeley 开源通用机器人策略
OpenVLA Stanford 开源 VLA,7B 参数
π0 (Pi-Zero) Physical Intelligence 最新 VLA,流匹配动作生成
RoboFlamingo 字节跳动 基于 Flamingo 的 VLA
CogACT 清华 基于认知的 VLA

使用 OpenVLA

python 复制代码
# 安装
pip install openvla

from transformers import AutoModelForVision2Seq, AutoProcessor
from PIL import Image
import torch

# 加载模型
model = AutoModelForVision2Seq.from_pretrained("openvla/openvla-7b", torch_dtype=torch.bfloat16)
processor = AutoProcessor.from_pretrained("openvla/openvla-7b", trust_remote_code=True)

# 输入:图像 + 语言指令
image = Image.open("robot_view.jpg")
prompt = "In: What action should the robot take to pick up the cup?\nOut:"

# 推理
inputs = processor(prompt, image).to(model.device, dtype=torch.bfloat16)
action = model.predict_action(**inputs, unnorm_key="bridge_orig")
# action: 7维向量 [x, y, z, roll, pitch, yaw, gripper]

4.2 模仿学习(Imitation Learning)

从人类演示中学习机器人行为,是目前最实用的具身智能方法。

4.2.1 行为克隆(Behavior Cloning, BC)

最简单的模仿学习:直接学习 state → action 的映射。

python 复制代码
import torch
import torch.nn as nn

class BehaviorCloningPolicy(nn.Module):
    """简单的BC策略网络"""
    def __init__(self, obs_dim, act_dim, hidden=256):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(obs_dim, hidden), nn.ReLU(),
            nn.Linear(hidden, hidden), nn.ReLU(),
            nn.Linear(hidden, act_dim)
        )
    
    def forward(self, obs):
        return self.net(obs)

# 训练循环
policy = BehaviorCloningPolicy(obs_dim=7, act_dim=7)
optimizer = torch.optim.Adam(policy.parameters(), lr=1e-3)

for epoch in range(100):
    for obs, action in dataloader:  # 人类演示数据
        pred_action = policy(obs)
        loss = nn.MSELoss()(pred_action, action)
        loss.backward()
        optimizer.step()
        optimizer.zero_grad()

4.2.2 ACT(Action Chunking with Transformers)

ACT 是目前最流行的模仿学习方法之一,核心思想:一次预测一段动作序列

python 复制代码
# ACT 核心思想
# 输入: 当前图像观测
# 输出: 未来 T 步的动作序列 [a_t, a_{t+1}, ..., a_{t+T}]

# 关键技术:
# 1. 动作分块(Action Chunking): 一次预测多步
# 2. CVAE(条件变分自编码器): 处理多模态动作分布
# 3. Transformer 编码器-解码器架构

4.2.3 Diffusion Policy

使用扩散模型生成动作,处理多模态分布效果极好。

python 复制代码
# Diffusion Policy 核心思想
# 1. 将动作视为"噪声"
# 2. 通过去噪过程生成动作
# 3. 条件于当前观测

# 公式化:
# a_t = a_t - ε_θ(a_t, t, o_t)  (去噪步骤)
# 其中 ε_θ 是去噪网络,o_t 是当前观测

4.2.4 模仿学习方法对比

方法 优点 缺点 适用场景
BC(行为克隆) 简单、快速 复合误差、单模态 简单任务
ACT 多步预测、时序建模 需要大量演示 精细操作
Diffusion Policy 多模态、鲁棒 推理慢 复杂操作
3D Diffusion Policy 3D空间理解 需要3D输入 空间操作

4.3 强化学习(Reinforcement Learning)

4.3.1 RL 在具身智能中的应用

复制代码
环境 (仿真)
    │
    ├── 观测 (obs): 关节角度、相机图像
    ├── 奖励 (reward): 任务完成度
    └── 动作 (action): 关节力矩
         │
         ▼
    策略网络 π(a|s)
    │
    ├── PPO (Proximal Policy Optimization)  ← 最常用
    ├── SAC (Soft Actor-Critic)
    └── TD3 (Twin Delayed DDPG)

4.3.2 Isaac Lab 训练示例

python 复制代码
# NVIDIA Isaac Lab (原 Isaac Gym 的升级版)
# 可以同时在数千个GPU环境中并行训练RL策略

from omni.isaac.lab.envs import ManagerBasedRLEnvCfg
from omni.isaac.lab_tasks.manager_based.locomotion.velocity import VelocityEnvCfg

# 配置环境
env_cfg = VelocityEnvCfg()
env_cfg.scene.num_envs = 4096  # 4096个并行环境
env_cfg.sim.device = "cuda:0"

# 创建环境
env = ManagerBasedRLEnv(cfg=env_cfg)

# 使用 RSL-RL 训练
from rsl_rl.runners import OnPolicyRunner

runner = OnPolicyRunner(env, policy_cfg, device="cuda:0")
runner.learn(num_learning_iterations=5000)

4.3.3 Sim-to-Real(仿真到现实迁移)

最大的挑战:在仿真中训练的策略如何在真实机器人上工作。

复制代码
仿真环境                              真实环境
┌────────────┐                      ┌────────────┐
│ Isaac Sim  │  Sim-to-Real 迁移    │ 真实机器人   │
│            │  ┌─────────────┐     │            │
│ 理想物理    │  │ 域随机化     │     │ 真实物理     │
│ 完美传感    │  │ 领域适应     │     │ 噪声传感     │
│ 无限数据    │  │ 系统辨识     │     │ 有限数据     │
│            │  └─────────────┘     │            │
└────────────┘  ←── 域差距 ──→      └────────────┘

关键方法

  • 域随机化(Domain Randomization):随机化仿真参数(摩擦力、质量、光照等)
  • 领域适应(Domain Adaptation):在少量真实数据上微调
  • 系统辨识(System Identification):精确标定仿真参数

4.4 3D视觉感知

4.4.1 6D位姿估计

估计物体在3D空间中的位置和姿态(3个平移 + 3个旋转)。

方法 类型 说明
FoundationPose 基于模型 通用6D位姿估计
SAM6D 基于模型 SAM + 6D位姿
BundleSDF 无模型 实时3D重建+跟踪
Any6D 基于模型 任意物体6D位姿

4.4.2 3D场景理解

python 复制代码
# 使用 Grounded-SAM 进行3D场景理解
# 1. 使用 SAM 分割物体
# 2. 使用 DINOv2 提取3D特征
# 3. 使用点云处理获取3D信息

# 代码示例:RGB-D 点云处理
import open3d as o3d
import numpy as np

# 从RGB-D图像创建点云
depth_image = o3d.io.read_image("depth.png")
color_image = o3d.io.read_image("color.png")
rgbd = o3d.geometry.RGBDImage.create_from_color_and_depth(color_image, depth_image)
point_cloud = o3d.geometry.PointCloud.create_from_rgbd_image(rgbd, intrinsic)

# 点云处理
point_cloud.estimate_normals()
point_cloud.oxel_down_sample(voxel_size=0.01)

# 3D目标分割
labels = np.array(point_cloud.cluster_dbscan(eps=0.02, min_points=100))

4.5 机器人运动规划

4.5.1 运动规划算法

算法 类型 适用场景
RRT* 采样-based 移动机器人路径规划
PRM 采样-based 多查询规划
CHOMP 优化-based 机械臂轨迹优化
TrajOpt 优化-based 避障轨迹规划
BiRRT 采样-based 快速路径规划

4.5.2 抓取规划

python 复制代码
# 使用 grasp_detection 进行抓取规划
# 输入: 点云或RGB-D图像
# 输出: 抓取位姿 (位置 + 姿态 + 夹爪宽度)

# 代表性方法:
# - GraspNet: 通用抓取检测
# - Contact-GraspNet: 接触感知抓取
# - AnyGrasp: 任意物体抓取

五、开源项目与平台

5.1 核心开源项目

5.1.1 模型与算法

项目 Stars 描述 GitHub
OpenVLA 2k+ 开源 VLA 模型 openvla/openvla
Octo 1k+ 通用机器人策略 octo-models/octo
LeRobot 8k+ HuggingFace 机器人学习库 huggingface/lerobot
ACT 1k+ Action Chunking Transformer tonyzhaozh/act
Diffusion Policy 2k+ 扩散策略 diffusion-policy
3D Diffusion Policy 500+ 3D扩散策略 YanjieZe/3D-Diffusion-Policy

5.1.2 仿真与训练

项目 Stars 描述 GitHub
Isaac Lab 3k+ NVIDIA 机器人学习平台 isaac-sim/IsaacLab
MuJoCo 8k+ DeepMind 物理仿真器 google-deepmind/mujoco
SAPIEN 1k+ 交互式仿真平台 haosulab/SAPIEN
ManiSkill 500+ 操作技能学习挑战 haosulab/ManiSkill
robosuite 1k+ 机器人仿真框架 ARISE-Initiative/robosuite
Habitat 2k+ 3D导航仿真 facebookresearch/habitat-sim

5.1.3 数据与工具

项目 Stars 描述 GitHub
Open X-Embodiment 2k+ 最大机器人数据集 google-deepmind/open_x_embodiment
DROID 500+ 机器人操作数据集 droid-dataset/droid
libero 500+ 终身机器人学习 Lifelong-Robot-Learning/LIBERO
BridgeData V2 300+ 机器人操作数据集 rail-berkeley/bridge_data_v2

5.1.4 硬件相关

项目 Stars 描述 GitHub
ROS2 10k+ 机器人操作系统 ros2
MoveIt2 2k+ 运动规划框架 moveit/moveit2
ros2_control 1k+ 硬件控制框架 ros-controls/ros2_control

5.2 LeRobot --- HuggingFace 机器人学习库

LeRobot 是入门具身智能最好的开源项目,由 HuggingFace 维护。

bash 复制代码
# 安装
git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e .

# 使用预训练策略推理
from lerobot.common.policies.diffusion.modeling_diffusion import DiffusionPolicy

policy = DiffusionPolicy.from_pretrained("lerobot/diffusion_pusht")
obs = env.reset()
action = policy.select_action(obs)

LeRobot 支持的策略

  • ACT (Action Chunking Transformer)
  • Diffusion Policy
  • TDMPC (Temporal Difference Model Predictive Control)
  • VQ-BeT (Vector-Quantized Behavior Transformer)

LeRobot 支持的环境

  • PushT(2D推动任务)
  • ALOHA(双臂操作)
  • SimXArm(机械臂)
  • 物理硬件(SO-100机械臂)

六、硬件平台选择

6.1 学习阶段推荐硬件

方案 价格 说明 推荐度
纯仿真 $0 Isaac Sim / MuJoCo ⭐⭐⭐⭐⭐(入门首选)
SO-100 机械臂 ~$300 LeRobot 官方支持 ⭐⭐⭐⭐⭐
ALOHA 双臂 ~$3000 双臂操作研究 ⭐⭐⭐⭐
TurtleBot4 ~$2000 移动机器人 ⭐⭐⭐⭐
Unitree Go2 ~$1600 四足机器人 ⭐⭐⭐⭐
Unitree G1 ~$16000 人形机器人 ⭐⭐⭐
自组装机械臂 ~$100-500 3D打印 + 舵机 ⭐⭐⭐

6.2 SO-100 机械臂(最推荐入门)

SO-100 是 LeRobot 官方推荐的入门级机械臂:

属性
价格 ~$300
自由度 5+1(5个关节 + 1个夹爪)
驱动 串行总线舵机
控制 USB 串口
负载 ~200g
精度 ~5mm
特点 3D打印外壳、开源、LeRobot 原生支持
python 复制代码
# 使用 LeRobot 控制 SO-100
from lerobot.common.robot_devices.robots.factory import make_robot

robot = make_robot(
    "so100",
    port="/dev/ttyUSB0",
    calibration_dir="path/to/calibration"
)
robot.connect()

# 读取关节角度
positions = robot.read_position()
print(f"当前关节角度: {positions}")

# 发送关节角度
robot.send_position(target_angles)

6.3 传感器选择

传感器 价格 用途 推荐型号
USB 相机 $20-50 视觉输入 Logitech C920
RealSense D435 $200 深度相机 Intel RealSense
OAK-D $150 深度相机+AI Luxonis OAK-D
力/力矩传感器 $200-1000 力控操作 ATI Mini45
触觉传感器 $100-500 触觉感知 GelSight

七、仿真环境

7.1 仿真器对比

仿真器 开发者 特点 适用场景
MuJoCo DeepMind 高精度物理、快速 RL训练、操作研究
Isaac Sim NVIDIA GPU加速、逼真渲染 Sim-to-Real、大规模训练
Gazebo Open Robotics ROS集成、传感器仿真 ROS2开发、导航
SAPIEN UCLA 交互式、铰接物体 操作任务
Habitat Meta 3D室内场景 导航研究
CoppeliaSim Coppelia 多物理引擎 工业仿真

7.2 MuJoCo 快速入门

bash 复制代码
pip install mujoco

# 基本使用
import mujoco
import mujoco.viewer

# 加载模型
model = mujoco.MjModel.from_xml_path("robot_arm.xml")
data = mujoco.MjData(model)

# 仿真循环
for i in range(1000):
    mujoco.mj_step(model, data)
    print(f"时间: {data.time:.3f}, 关节角度: {data.qpos[:6]}")
xml 复制代码
<!-- robot_arm.xml - 简单机械臂模型 -->
<mujoco model="robot_arm">
  <compiler angle="radian"/>
  <option timestep="0.001"/>
  
  <worldbody>
    <body name="base" pos="0 0 0">
      <geom type="cylinder" size="0.05 0.02" rgba="0.5 0.5 0.5 1"/>
      <body name="link1" pos="0 0 0.02">
        <joint name="joint1" type="hinge" axis="0 0 1" range="-3.14 3.14"/>
        <geom type="capsule" fromto="0 0 0 0.3 0 0" size="0.03"/>
        <body name="link2" pos="0.3 0 0">
          <joint name="joint2" type="hinge" axis="0 1 0" range="-1.57 1.57"/>
          <geom type="capsule" fromto="0 0 0 0 0 0.3" size="0.025"/>
          <body name="end_effector" pos="0 0 0.3">
            <geom type="sphere" size="0.02" rgba="1 0 0 1"/>
          </body>
        </body>
      </body>
    </body>
  </worldbody>
  
  <actuator>
    <motor name="motor1" joint="joint1" ctrlrange="-10 10"/>
    <motor name="motor2" joint="joint2" ctrlrange="-10 10"/>
  </actuator>
</mujoco>

7.3 Isaac Lab 快速入门

bash 复制代码
# 安装(需要NVIDIA GPU)
pip install isaacsim
pip install isaaclab

# 运行示例
from omni.isaac.lab.app import AppLauncher
app_launcher = AppLauncher({"headless": False})
simulation_app = app_launcher.app

from omni.isaac.lab.envs import ManagerBasedRLEnv
from omni.isaac.lab_tasks.manager_based.manipulation.reach import ReachEnvCfg

env_cfg = ReachEnvCfg()
env_cfg.scene.num_envs = 64

env = ManagerBasedRLEnv(cfg=env_cfg)
obs, info = env.reset()

for i in range(1000):
    action = torch.randn(env.action_space.shape)
    obs, reward, terminated, truncated, info = env.step(action)

八、学习路线图

8.1 完整学习路线

复制代码
阶段0: 基础准备(1-2个月)
├── Python 基础(NumPy、PyTorch)
├── 线性代数复习(矩阵、旋转、变换)
├── Linux 基础命令
├── Git 基本使用
└── 深度学习入门(CNN、Transformer)

阶段1: 机器人学基础(1-2个月)
├── ROS2 入门(节点、话题、TF)
├── 机器人运动学(正/逆运动学)
├── MuJoCo 仿真入门
├── 机械臂控制基础
└── 项目:用 MuJoCo 控制机械臂抓取物体

阶段2: 计算机视觉基础(1-2个月)
├── 目标检测(YOLO)
├── 图像分割(SAM)
├── 深度估计
├── 6D位姿估计
└── 项目:视觉引导的机械臂抓取

阶段3: 机器人学习基础(2-3个月)
├── 强化学习入门(PPO、SAC)
├── 模仿学习入门(BC、ACT)
├── 使用 LeRobot 训练策略
├── Diffusion Policy 理解与实践
└── 项目:用 ACT/Diffusion Policy 完成操作任务

阶段4: VLA 与大模型(2-3个月)
├── 理解 VLA 架构(RT-2、OpenVLA)
├── 使用 OpenVLA 推理
├── 多模态模型基础
├── LLM 任务规划
└── 项目:用 VLA 模型完成语言引导的操作

阶段5: Sim-to-Real(2-3个月)
├── Isaac Lab 大规模训练
├── 域随机化技术
├── 真实机器人部署
├── 数据采集与训练闭环
└── 项目:从仿真到真实机器人的完整流程

阶段6: 前沿研究(持续)
├── 阅读最新论文
├── 复现经典工作
├── 参与开源项目
└── 竞赛与挑战赛

8.2 推荐学习资源

课程

课程 机构 内容 链接
Stanford CS236 Stanford 深度生成模型 网上公开
Stanford CS330 Stanford 多任务和元学习 网上公开
CMU 16-881 CMU 机器人操作 网上公开
UC Berkeley CS285 UC Berkeley 深度强化学习 rail.eecs.berkeley.edu
MIT 6.4210 MIT 机器人操作 MIT OCW

书籍

书名 说明
《机器人学导论》(Craig) 经典机器人学教材
《Probabilistic Robotics》(Thrun) 概率机器人学
《Reinforcement Learning》(Sutton) RL 经典教材
《Robot Modeling and Control》(Spong) 机器人建模与控制

开源课程与教程

资源 说明
LeRobot 官方教程 HuggingFace 机器人学习
MuJoCo 官方教程 DeepMind 物理仿真
Isaac Lab 教程 NVIDIA 机器人训练
ROS2 官方教程 机器人操作系统
Open X-Embodiment 论文 机器人基础模型综述

九、实战项目

9.1 项目1:MuJoCo 机械臂抓取(入门)

python 复制代码
"""
项目1: MuJoCo 机械臂抓取
目标: 控制机械臂抓取桌面上的方块
技能: MuJoCo使用、正运动学、简单控制
时间: 1-2周
"""

import mujoco
import mujoco.viewer
import numpy as np

# 加载模型
model = mujoco.MjModel.from_xml_path("robot_arm_grasp.xml")
data = mujoco.MjData(model)

# PID 控制器
class PIDController:
    def __init__(self, kp, ki, kd):
        self.kp, self.ki, self.kd = kp, ki, kd
        self.prev_error = 0
        self.integral = 0
    
    def compute(self, target, current, dt):
        error = target - current
        self.integral += error * dt
        derivative = (error - self.prev_error) / dt
        self.prev_error = error
        return self.kp * error + self.ki * self.integral + self.kd * derivative

# 控制策略
def move_to_target(model, data, target_pos):
    """将末端执行器移动到目标位置"""
    # 逆运动学求解(简化版)
    joint_targets = inverse_kinematics(target_pos)
    
    # PID 控制
    for i, (target, current) in enumerate(zip(joint_targets, data.qpos[:6])):
        data.ctrl[i] = pid_controllers[i].compute(target, current, model.opt.timestep)

# 主循环
with mujoco.viewer.launch_passive(model, data) as viewer:
    while viewer.is_running():
        # 阶段1: 移动到物体上方
        move_to_target(model, data, [0.3, 0.0, 0.2])
        
        # 阶段2: 下降到抓取位置
        move_to_target(model, data, [0.3, 0.0, 0.05])
        
        # 阶段3: 闭合夹爪
        data.ctrl[6] = 1.0  # 夹爪关闭
        
        # 阶段4: 提升
        move_to_target(model, data, [0.3, 0.0, 0.3])
        
        mujoco.mj_step(model, data)
        viewer.sync()

9.2 项目2:LeRobot ACT 策略训练(进阶)

python 复制代码
"""
项目2: 使用 LeRobot 训练 ACT 策略
目标: 从演示数据中学习机械臂操作
技能: 模仿学习、ACT、数据采集
时间: 2-3周
"""

# 步骤1: 采集演示数据
from lerobot.common.robot_devices.robots.factory import make_robot
from lerobot.common.robot_devices.cameras.opencv import OpenCVCamera

robot = make_robot("so100", port="/dev/ttyUSB0")
camera = OpenCVCamera(camera_index=0, fps=30, width=640, height=480)

# 遥操作采集
from lerobot.scripts.control_robot import record_episode

dataset = record_episode(
    robot=robot,
    cameras=[camera],
    fps=30,
    episode_time_s=30,
    num_episodes=50,
    task="pick up the red block"
)

# 步骤2: 训练 ACT 策略
from lerobot.scripts.train import train

train(
    policy="act",
    dataset_repo_id="my_dataset",
    env="real",
    batch_size=8,
    steps=50000,
    output_dir="outputs/train_act"
)

# 步骤3: 评估和部署
from lerobot.scripts.control_robot import replay_episode

replay_episode(
    robot=robot,
    policy="act",
    policy_path="outputs/train_act/checkpoints/last/pretrained_model",
    cameras=[camera],
    fps=30,
)

9.3 项目3:VLA 模型部署(高级)

python 复制代码
"""
项目3: 部署 VLA 模型到真实机器人
目标: 使用自然语言指令控制机器人
技能: VLA模型、多模态感知、机器人控制
时间: 3-4周
"""

from transformers import AutoModelForVision2Seq, AutoProcessor
from lerobot.common.robot_devices.robots.factory import make_robot
from lerobot.common.robot_devices.cameras.opencv import OpenCVCamera
import torch

# 加载 VLA 模型
model = AutoModelForVision2Seq.from_pretrained("openvla/openvla-7b", torch_dtype=torch.bfloat16)
processor = AutoProcessor.from_pretrained("openvla/openvla-7b")
model = model.cuda()

# 连接机器人和相机
robot = make_robot("so100", port="/dev/ttyUSB0")
camera = OpenCVCamera(camera_index=0, fps=30, width=640, height=480)

# 用户指令
instruction = "pick up the red cup and place it on the plate"

# 控制循环
for step in range(500):
    # 获取图像
    image = camera.read()
    
    # VLA 推理
    prompt = f"In: What action should the robot take to {instruction}?\nOut:"
    inputs = processor(prompt, image).to("cuda", dtype=torch.bfloat16)
    action = model.predict_action(**inputs, unnorm_key="bridge_orig")
    
    # 执行动作
    robot.send_position(action[:6])
    robot.send_gripper(action[6])
    
    # 检查任务完成
    if task_completed(image, instruction):
        print("任务完成!")
        break

9.4 项目4:RL 训练人形机器人行走(高级)

python 复制代码
"""
项目4: 使用 Isaac Lab 训练人形机器人行走
技能: RL、Isaac Lab、人形机器人控制
时间: 3-4周
"""

# 使用 Isaac Lab 的人形行走任务
from omni.isaac.lab_tasks.manager_based.locomotion.velocity.velocity_env_cfg import LocomotionVelocityEnvCfg
from omni.isaac.lab.envs import ManagerBasedRLEnv

# 配置环境
env_cfg = LocomotionVelocityEnvCfg()
env_cfg.scene.robot = "unitree_g1"  # Unitree G1 人形机器人
env_cfg.scene.num_envs = 4096
env_cfg.rewards.undesired_contacts = None

# 创建环境
env = ManagerBasedRLEnv(cfg=env_cfg)

# 使用 RSL-RL 训练
from rsl_rl.runners import OnPolicyRunner
from rsl_rl.algorithms import PPO

policy_cfg = {
    "policy_class_name": "ActorCritic",
    "init_noise_std": 1.0,
    "actor_hidden_dims": [512, 256, 128],
    "critic_hidden_dims": [512, 256, 128],
    "activation": "elu",
}

runner = OnPolicyRunner(env, policy_cfg, device="cuda:0")
runner.learn(num_learning_iterations=5000)

十、前沿论文与趋势

10.1 必读论文

基础模型

论文 年份 核心贡献
RT-2 (Google) 2023 首个 VLA 模型
RT-X (Google) 2023 跨机器人通用策略
OpenVLA (Stanford) 2024 开源 VLA
Octo (UC Berkeley) 2024 通用机器人策略
π0 (Physical Intelligence) 2024 流匹配 VLA

模仿学习

论文 年份 核心贡献
ACT (Zhao et al.) 2023 动作分块 Transformer
Diffusion Policy (Chi et al.) 2023 扩散策略
3D Diffusion Policy 2024 3D 扩散策略
HPT (Lirui Wang) 2024 异构预训练 Transformer

强化学习

论文 年份 核心贡献
Isaac Gym (NVIDIA) 2021 GPU 并行仿真
Dexterous Hands (OpenAI) 2019 灵巧手 RL
RSL-RL (ETH Zurich) 2023 腿式机器人 RL
Humanoid Locomotion 2024 人形行走 RL

世界模型

论文 年份 核心贡献
UniSim (Google) 2023 通用仿真器
Genie 2 (DeepMind) 2024 可交互世界模型
GR-1 (ByteDance) 2024 世界模型+机器人

10.2 2026年具身智能趋势

趋势 说明 代表
VLA 模型爆发 越来越多的端到端VLA模型 π0, OpenVLA 2
人形机器人 人形机器人成为主战场 Figure 02, Optimus, G1
灵巧手 多指灵巧操作 Inspire Hand, DEXHAND
世界模型 仿真环境生成 UniSim, Genie 2
跨形态迁移 不同机器人之间迁移策略 RT-X, Octo
真实世界数据 大规模真实机器人数据 DROID, Open X-Embodiment
多模态基础模型 统一感知-决策-控制 VLA + World Model

10.3 推荐关注的研究组

机构 研究方向 代表人物
Google DeepMind VLA、通用策略 Chelsea Finn
Stanford IRIS VLA、机器人学习 Chelsea Finn, Percy Liang
UC Berkeley RAIL 模仿学习、操作 Sergey Levine, Pieter Abbeel
Physical Intelligence VLA、π0 Sergey Levine (兼)
NVIDIA 仿真、Isaac Lab Yuke Zhu
ETH Zurich RSL 腿式机器人、RL Marco Hutter
清华大学 VLA、CogACT 孙富春
北京大学 具身智能、多模态 ---

附录:常见问题

Q: 我没有机器人,可以学具身智能吗?

A: 完全可以!80%的学习可以在仿真中完成。MuJoCo、Isaac Sim 都是免费的。

Q: 需要多少GPU算力?

A: 入门阶段单卡 RTX 3090/4090 即可。大规模训练需要 A100/H100。

Q: 从哪个方向开始最好?

A: 建议从 LeRobot + 仿真环境开始,先跑通模仿学习的完整流程。

Q: 具身智能和传统机器人学有什么区别?

A: 传统机器人学依赖精确建模和手写规则;具身智能用数据驱动的方法(学习)替代。

Q: 需要很强的数学吗?

A: 入门不需要。能理解矩阵乘法和梯度下降即可开始。深入研究时再补数学。