NVIDIA 机器人生态
NVIDIA 正在构建从仿真训练到边缘部署的全栈机器人 AI 生态。本文梳理 NVIDIA 机器人相关的主要平台、工具和模型。
本文重点是 NVIDIA 生态的定位与栈内关系,不展开做成百科式仿真教程。关于 USD 资产如何制作和导入,见 仿真资产;关于世界如何组织、随机化以及物理规则如何配置,见 仿真世界构建与物理规则。
生态全景
graph TB
subgraph Foundation["基础层"]
CUDA[CUDA / cuDNN / TensorRT]
USD[OpenUSD 标准]
end
subgraph Platform["平台层"]
OV[Omniverse<br/>协作 & 数字孪生平台]
end
subgraph Simulation["仿真层"]
IS[Isaac Sim<br/>逼真物理仿真]
IL[Isaac Lab<br/>大规模并行 RL 训练]
end
subgraph Perception["感知 & 推理"]
IR[Isaac ROS<br/>GPU 加速感知]
CUR[cuRobot<br/>GPU 加速规划]
end
subgraph Models["基础模型"]
COSMOS[Cosmos<br/>世界基础模型]
GROOT[GR00T N1<br/>人形机器人基础模型]
end
subgraph Edge["边缘部署"]
JETSON[Jetson 系列<br/>Orin / Thor]
end
USD --> OV
CUDA --> IS & IL & IR & CUR
OV --> IS
IS --> IL
IL -- "训练好的策略" --> IR
COSMOS -- "世界知识" --> GROOT
GROOT -- "推理部署" --> JETSON
IR --> JETSON
CUR --> JETSON
style Foundation fill:#e8eaf6
style Platform fill:#fff3e0
style Simulation fill:#e8f5e9
style Perception fill:#e1f5fe
style Models fill:#fce4ec
style Edge fill:#f3e5f5
Omniverse:协作与数字孪生平台
Omniverse 是 NVIDIA 的实时 3D 协作与仿真平台,基于 OpenUSD (Universal Scene Description) 标准。
核心能力
| 能力 | 说明 |
|---|---|
| USD 原生 | 所有资产、场景、物理属性以 USD 格式描述 |
| RTX 渲染 | 实时光线追踪,支持 PBR 材质 |
| PhysX 5 | GPU 加速的刚体、软体、流体、粒子物理 |
| 多人协作 | 多用户同时编辑同一场景(类似 Google Docs) |
| 数字孪生 | 连接 IoT 数据,实时同步物理世界状态 |
| 扩展系统 | Kit SDK 构建自定义应用 |
USD 格式要点
USD 是 Pixar 开发的场景描述格式,NVIDIA 将其推广为机器人仿真的通用场景格式:
# USD 场景操作示例
from pxr import Usd, UsdGeom, UsdPhysics
stage = Usd.Stage.CreateNew("robot_scene.usda")
xform = UsdGeom.Xform.Define(stage, "/World/Robot")
UsdPhysics.RigidBodyAPI.Apply(xform.GetPrim())
UsdPhysics.CollisionAPI.Apply(xform.GetPrim())
stage.Save()
如果你关心的不是 USD API 本身,而是“它如何承载机器人、物体、场景、传感器等仿真资产”,应继续看 仿真资产。
Isaac Sim:逼真物理仿真
Isaac Sim 是基于 Omniverse 的机器人仿真器,提供照片级渲染与高保真物理。
主要特性
| 特性 | 说明 |
|---|---|
| 物理引擎 | PhysX 5 (GPU),支持刚体/软体/粒子/流体 |
| 渲染 | RTX 光线追踪,支持 Path Tracing 和 Ray Tracing |
| 传感器仿真 | RGB, Depth, LiDAR, IMU, 超声波, Contact |
| 域随机化 | 内置灯光/纹理/物理参数随机化 |
| 数据生成 | 合成数据生成 (SDG),自动标注 |
| ROS2 桥接 | 内置 ROS2 Bridge,话题/服务/TF 直通 |
域随机化配置
域随机化是 Sim2Real 的关键技术,Isaac Sim 提供内置支持:
# 域随机化示例:随机化物体颜色、灯光、物理参数
from omni.isaac.core.utils.randomization import randomize
randomize.light_intensity(min=500, max=5000) # 灯光强度
randomize.object_color(prim_path="/World/object") # 物体颜色
randomize.physics_material(
static_friction=(0.3, 0.8),
dynamic_friction=(0.2, 0.6),
restitution=(0.0, 0.3)
)
randomize.camera_pose(
position_noise=0.02, # 2cm 位置噪声
rotation_noise=2.0 # 2度 旋转噪声
)
更系统的世界随机化、时间系统、传感器规则和接触调参,请看 仿真世界构建与物理规则 与 Sim2Real。
Isaac Lab:大规模并行 RL 训练
Isaac Lab 是 Isaac Gym 和 Orbit 的继任者,专注于大规模并行强化学习训练。
与前身的关系
| 项目 | 状态 | 说明 |
|---|---|---|
| Isaac Gym (Preview) | 已归档 | 最早的 GPU 并行 RL 环境 |
| Orbit | 已合并 | 面向操作任务的框架 |
| Isaac Lab | 当前活跃 | 统一继任者 |
核心架构
# Isaac Lab 环境定义
from omni.isaac.lab.envs import ManagerBasedRLEnv, ManagerBasedRLEnvCfg
from omni.isaac.lab.scene import InteractiveSceneCfg
class FrankaCubePickCfg(ManagerBasedRLEnvCfg):
scene: InteractiveSceneCfg = InteractiveSceneCfg(num_envs=4096)
# 观测定义
observations = ObservationsCfg(
policy=ObsGroup(
joint_pos=ObsTerm(func=mdp.joint_pos_rel),
joint_vel=ObsTerm(func=mdp.joint_vel_rel),
object_pos=ObsTerm(func=mdp.object_position_in_robot_root_frame),
)
)
# 奖励定义
rewards = RewardsCfg(
reaching=RewardTerm(func=mdp.approach_object, weight=1.0),
grasping=RewardTerm(func=mdp.grasp_success, weight=10.0),
)
# 终止条件
terminations = TerminationsCfg(
time_out=DoneTerm(func=mdp.time_out, time_out=True),
)
训练流程
# 使用 RSL-RL 训练
python source/standalone/workflows/rsl_rl/train.py \
--task Isaac-Franka-Cube-Pick-v0 \
--num_envs 4096 \
--max_iterations 1000
# 使用 rl_games 训练
python source/standalone/workflows/rl_games/train.py \
--task Isaac-Ant-v0 \
--num_envs 8192
更多强化学习与机器人结合的内容请参阅 强化学习在机器人中的应用。
Isaac ROS:GPU 加速的 ROS2
Isaac ROS 提供一系列 GPU 加速的 ROS2 包,替代传统 CPU 实现,大幅提升实时感知性能。
主要包
| 包名 | 功能 | 加速比 (vs CPU) |
|---|---|---|
isaac_ros_visual_slam |
视觉惯性里程计 (cuVSLAM) | ~10x |
isaac_ros_nvblox |
3D 重建 + 代价地图 | ~20x |
isaac_ros_dnn_inference |
TensorRT 推理 | ~5-15x |
isaac_ros_image_pipeline |
去畸变/裁剪/缩放 | ~5x |
isaac_ros_apriltag |
AprilTag 检测 | ~10x |
isaac_ros_freespace_segmentation |
可行驶区域分割 | GPU 原生 |
isaac_ros_object_detection |
目标检测 (SSD/YOLO) | GPU 原生 |
isaac_ros_foundationpose |
6-DoF 物体位姿估计 | GPU 原生 |
部署架构
# Isaac ROS 通过 Docker 部署
# 拉取 Isaac ROS 基础容器
docker pull nvcr.io/nvidia/isaac/ros:humble-3.1.0
# 启动容器 (挂载 GPU)
docker run --runtime nvidia -it --rm \
--network host \
-v /dev:/dev \
nvcr.io/nvidia/isaac/ros:humble-3.1.0
# 容器内启动 cuVSLAM
ros2 launch isaac_ros_visual_slam isaac_ros_visual_slam.launch.py \
image_topic:=/camera/image_raw \
camera_info_topic:=/camera/camera_info
Cosmos:世界基础模型
Cosmos 是 NVIDIA 在 CES 2025 发布的世界基础模型 (World Foundation Model),用于理解和生成物理世界。
核心概念
| 概念 | 说明 |
|---|---|
| 世界模型 | 预测给定动作后环境的未来状态 |
| 物理AI | 理解物理规律(重力、碰撞、摩擦)的 AI |
| 视频生成 | 生成物理一致的未来视频帧 |
应用场景
- 合成数据生成:为机器人训练生成多样化场景数据
- 动作规划:在"想象空间"中预演动作效果
- 异常检测:预测正常行为,检测偏差
更多世界模型相关内容请参阅 世界模型与视频生成。
GR00T N1:人形机器人基础模型
GR00T (Generalist Robot 00 Technology) 是 NVIDIA 面向人形机器人的基础模型系列。
N1 模型架构
| 组件 | 说明 |
|---|---|
| 视觉编码器 | 处理多视角 RGB 输入 |
| 语言理解 | 接受自然语言任务指令 |
| 动作生成 | 输出全身关节动作序列 |
| 训练数据 | Cosmos 合成数据 + 遥操作数据 |
| 部署硬件 | Jetson Thor |
训练管线
- 大规模预训练:利用 Cosmos 世界模型生成海量训练数据
- 仿真微调:在 Isaac Lab 中针对具体任务微调
- 真机适应:少量真机数据 fine-tune,完成 Sim2Real
cuRobot:GPU 加速的运动规划
cuRobot (CUDA Robot) 将运动规划的核心计算迁移到 GPU,实现毫秒级规划。
性能对比
| 算法 | MoveIt2 (CPU) | cuRobot (GPU) | 加速比 |
|---|---|---|---|
| 碰撞检测 | ~10ms | ~0.1ms | ~100x |
| 逆运动学 | ~5ms | ~0.05ms | ~100x |
| 运动规划 | ~500ms | ~5ms | ~100x |
| 批量规划 (1000) | ~500s | ~5s | ~100x |
主要功能
- CUDA 加速碰撞检测:基于 Signed Distance Field (SDF)
- 批量逆运动学:同时求解数千个 IK 问题
- 轨迹优化:CUDA 加速的 CHOMP/TrajOpt
- 与 MoveIt 2 集成:作为 MoveIt 2 的加速后端
from curobo.types.robot import RobotConfig
from curobo.wrap.reacher.motion_gen import MotionGen, MotionGenConfig
# 加载机器人配置
robot_cfg = RobotConfig.from_dict({
"robot_file": "franka.yml",
"ee_link": "panda_hand",
})
# 创建运动生成器
motion_gen_config = MotionGenConfig.load_from_robot_config(
robot_cfg, world_model="shelf_scene.yml",
num_ik_seeds=32, num_trajectories=4
)
motion_gen = MotionGen(motion_gen_config)
# GPU 加速规划
result = motion_gen.plan_single(start_state, goal_pose)
trajectory = result.get_interpolated_plan() # 毫秒级完成
Jetson 部署平台
Jetson 是 NVIDIA 面向边缘 AI 的嵌入式计算平台,是机器人推理部署的首选。
| 型号 | GPU 核心 | AI 算力 (TOPS) | 内存 | 功耗 | 适用场景 |
|---|---|---|---|---|---|
| Jetson Orin Nano | 1024 CUDA | 40 | 8GB | 7-15W | 入门级机器人 |
| Jetson Orin NX | 1024 CUDA | 70-100 | 8/16GB | 10-25W | 中端机器人 |
| Jetson AGX Orin | 2048 CUDA | 200-275 | 32/64GB | 15-60W | 高端/人形机器人 |
| Jetson Thor (下一代) | Blackwell GPU | 800 | 128GB | ~100W | 人形机器人基础模型 |
更多计算平台详情请参阅 计算平台。
生态整合建议
典型开发流程
- 建模:在 Omniverse 中使用 USD 构建场景
- 仿真训练:Isaac Lab 大规模并行训练 RL 策略
- 感知集成:Isaac ROS 在 Jetson 上运行 GPU 加速感知
- 运动规划:cuRobot 提供毫秒级规划
- 部署:TensorRT 优化模型,Jetson 边缘部署
注意事项
- NVIDIA 生态对硬件有强依赖,需要 NVIDIA GPU
- 部分组件仅支持特定 GPU 架构(如 Isaac Sim 需要 RTX)
- 版本兼容性需要关注:CUDA 版本、JetPack 版本、ROS2 版本需匹配
- 学术研究可结合 MuJoCo 等开源工具使用,不必完全绑定 NVIDIA 生态
相关链接
- NVIDIA Isaac 官方文档
- Isaac Lab GitHub
- Isaac ROS GitHub
- 相关笔记:仿真平台 | 仿真资产 | 仿真世界构建与物理规则 | 世界模型与视频生成 | 强化学习在机器人中的应用 | 计算平台