目录
一、什么是具身智能
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
# 安装
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 的映射。
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()
ACT 是目前最流行的模仿学习方法之一,核心思想:一次预测一段动作序列 。
# ACT 核心思想
# 输入: 当前图像观测
# 输出: 未来 T 步的动作序列 [a_t, a_{t+1}, ..., a_{t+T}]
# 关键技术:
# 1. 动作分块(Action Chunking): 一次预测多步
# 2. CVAE(条件变分自编码器): 处理多模态动作分布
# 3. Transformer 编码器-解码器架构
4.2.3 Diffusion Policy
使用扩散模型生成动作,处理多模态分布效果极好。
# 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 训练示例
# 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场景理解
# 使用 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 抓取规划
# 使用 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 维护。
# 安装
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 原生支持
# 使用 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 快速入门
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]}")
<!-- 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 快速入门
# 安装(需要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 机械臂抓取(入门)
"""
项目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 策略训练(进阶)
"""
项目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 模型部署(高级)
"""
项目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 训练人形机器人行走(高级)
"""
项目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: 入门不需要。能理解矩阵乘法和梯度下降即可开始。深入研究时再补数学。