摘要:本文基于 Isaac Sim 5.1.0 官方文档,深入分析其扩展(Extension)架构、PhysX 5 GPU 物理引擎的求解器与碰撞管线、基于光线追踪的传感器仿真框架、Articulation API 的关节控制机制、ROS2 Bridge 的 OmniGraph 与 Python 双模式集成、Isaac Lab 的 GPU 原生 RL 训练管线,以及 Replicator 合成数据生成工作流。区别于”入门介绍”,本文聚焦技术细节、API 签名与工作流模式,旨在为开发者提供可直接映射到代码实现的技术参考。
参考文档:https://docs.isaacsim.omniverse.nvidia.com/5.1.0/index.html
一、平台架构:从扩展系统到运行时模型
1.1 Extension(扩展)系统
Isaac Sim 的所有功能都以 Extension 形式组织。Extension 是 Omniverse Kit 框架的一等公民——每个 Extension 是一个独立的 Python 模块,有自身的生命周期(on_startup / on_shutdown)、依赖声明和热加载能力。
核心扩展树(按命名空间组织):
1 2 3 4 5 6 7 8 9 10 11 12
| omni.isaac.core → 核心API: World, PhysicsContext, 场景管理 omni.isaac.dynamic_control → 底层关节控制接口(DC API) isaacsim.core.prims → 高级原语: SingleArticulation, ArticulationView isaacsim.sensors.camera → 相机传感器 isaacsim.sensors.physics → IMU, ContactSensor isaacsim.sensors.physx → PhysX LiDAR isaacsim.sensors.rtx → RTX 传感器(RTX LiDAR, RTX Radar) isaacsim.ros2.bridge → ROS2 桥接(OmniGraph节点 + Python API) omni.replicator.core → 合成数据生成 isaacsim.replicator.agent.core → IRA(智能体仿真) isaacsim.replicator.object.core → IRO(程序化物体生成) omni.isaac.lab → Isaac Lab(GPU 原生 RL)
|
Standalone Python 模式:脚本自己创建 SimulationContext,手动管理 step 循环,适合批量仿真和 CI。
Extension 模式:加载到 Kit 进程中,与 GUI 共享上下文,支持热重载,适合交互式开发和调试。
1.2 USD 与 Fabric
Isaac Sim 的场景数据模型完全基于 USD(Universal Scene Description)。每个物体是一个 USD Prim,物理属性通过 USD 架构(Schema)附着:
1 2 3 4 5 6 7 8 9 10 11 12
| from pxr import UsdPhysics, PhysxSchema, Gf
rigid_api = UsdPhysics.RigidBodyAPI.Apply(stage.GetPrimAtPath("/World/Box")) rigid_api.GetRigidBodyEnabledAttr().Set(True)
collision_api = UsdPhysics.CollisionAPI.Apply(stage.GetPrimAtPath("/World/Box"))
contact_api = PhysxSchema.PhysxContactReportAPI.Apply(stage.GetPrimAtPath("/World/Box")) contact_api.GetThresholdAttr().Set(0.0)
|
Fabric 是 Omniverse 的运行时数据层。在 Fabric 模式下,物理引擎和渲染引擎直接读写 Fabric 共享内存,绕过 USD 阶段的序列化/反序列化开销。配置方式:
1 2 3 4 5 6 7 8
| from omni.isaac.core import SimulationContext
sim_context = SimulationContext( physics_dt=1.0 / 60.0, rendering_dt=1.0 / 30.0, stage_units_in_meters=1.0, use_fabric=True )
|
二、PhysX 5 物理引擎深度解析
2.1 求解器:PGS vs TGS
PhysX 5 提供两种约束求解器,它们的区别直接影响仿真精度和性能:
| 求解器 |
收敛特性 |
适用场景 |
限制 |
| PGS(Projected Gauss-Seidel) |
顺序迭代,逐约束求解 |
默认回退方案 |
精度依赖迭代次数 |
| TGS(Temporal Gauss-Seidel) |
时间子步内隐式积分,稳定性高 |
高速运动、多关节机器人 |
速度迭代次数 >4 被禁止 |
1 2 3 4 5
| physx_scene = UsdPhysics.PhysicsScene.Get(scene_stage) tgs = PhysxSchema.PhysxTemporalGaussSeidel.Apply(physx_scene.GetPrim()) tgs.GetSolverTypeAttr().Set("TGS")
|
TGS 是推荐配置——它在相同的迭代次数下提供更高的约束稳定性,尤其适用于包含关节链的机器人仿真。
2.2 碰撞几何类型
PhysX 5 支持的碰撞几何体及选择优先级:
| 类型 |
性能 |
精度 |
说明 |
| Convex Hull |
★★★★ |
★★★ |
默认方案,自动计算凸包,GPU 支持 |
| Convex Decomposition |
★★★ |
★★★★ |
将凹网格分解为多个凸包,VHACD 算法 |
| Bounding Cube |
★★★★★ |
★ |
最小包围盒,最快但最粗糙 |
| Bounding Sphere |
★★★★★ |
★★ |
包围球,适合球对称物体 |
| Sphere Approximation |
★★★★ |
★★ |
多球体近似 |
| SDF Mesh |
★★★ |
★★★★★ |
有符号距离场,精度最高,GPU 支持 |
关键限制:GPU 凸包最多 64 个顶点和 64 个面。超过此限制的几何体自动回退到 CPU 求解。
1 2 3 4 5
| from pxr import PhysxSchema
collision_approx = PhysxSchema.PhysxCollisionAPI.Apply(prim) collision_approx.Get collision ApproximationAttr().Set("convexDecomposition")
|
2.3 GPU 动力学管线
Isaac Sim 的 GPU 动力学是整套平台的核心差异化能力。启动 GPU 管线的条件:
1 2 3 4 5 6
| sim_context = SimulationContext( physics_dt=1.0 / 60.0, backend="numpy", device="cuda:0", use_gpu_pipeline=True )
|
GPU 管线将以下计算全部迁移到 GPU:
- 刚体动力学积分
- 碰撞检测与接触生成
- 约束求解(关节 + 接触)
- 传感器数据计算(ray-tracing-based)
性能数据(来源:官方 Benchmarks):
- 单 GPU(RTX 4090)可同时仿真 ~10,000 个刚体 在 60Hz
- 碰撞检测吞吐量:~1 亿碰撞对/秒(GPU)
- 对比 CPU 管线的加速比:3x-10x(随场景复杂度增加而增加)
2.4 CCD(连续碰撞检测)
高速运动的物体(如无人机旋翼、抛射体)需要使用 CCD 避免穿透:
1 2 3 4 5 6 7 8 9
| rigid_api = UsdPhysics.RigidBodyAPI.Apply(prim) rigid_api.GetRigidBodyEnabledAttr().Set(True) rigid_api.GetKinematicEnabledAttr().Set(False)
physx_scene = UsdPhysics.PhysicsScene.Get(stage.GetPrimAtPath("/World/PhysicsScene")) PhysxSchema.PhysxSceneAPI.Apply(physx_scene.GetPrim()) PhysxSchema.PhysxSceneAPI(physx_scene.GetPrim()).GetEnableCCDAttr().Set(True)
|
CCD 执行 swept 碰撞检测,对于需要精确碰撞时序的无人机仿真(如旋翼碰撞)是必需的。
三、传感器仿真管线
3.1 相机传感器(isaacsim.sensors.camera)
相机传感器 API 支持完整的相机模型,包括针孔和鱼眼两种投影模型:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| from isaacsim.sensors.camera import Camera
camera = Camera( prim_path="/World/Robot/front_camera", resolution=(1920, 1080), orientation=Gf.Quatd(1.0, 0.0, 0.0, 0.0), projection_type="pinhole", focal_length=12.0, focus_distance=100.0, aperture=2.8, framerate=30.0, )
camera.set_opencv_fisheye_properties( xi=0.5, k1=-0.1, k2=0.01, p1=0.001, p2=-0.001 )
|
渲染功能:
- RTX 路径追踪(Path Tracing):最高质量,适合合成数据生成
- RTX 实时光追(Real-Time):平衡质量与帧率
- 光栅化(Rasterization):最高帧率,适合训练循环
噪声模型:通过 Replicator 的 rep.annotators.augment_compose() 添加相机噪声:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| from omni.replicator.core import annotators import warp as wp
@wp.kernel def gaussian_noise(image: wp.array4d(dtype=wp.float32), mean: wp.float32, std: wp.float32): tid = wp.tid() image[tid] += wp.randn(tid) * std + mean
annotators.augment_compose( input_annotators=["rgb"], augmentations={"rgb": (gaussian_noise, {"mean": 0.0, "std": 0.02})} )
|
3.2 PhysX LiDAR
基于物理的 LiDAR 仿真,模拟激光束与物体的实际交互:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| from isaacsim.sensors.physx import RangeSensor
lidar_config = RangeSensor( prim_path="/World/Robot/lidar", sensor_type="lidar", min_range=0.5, max_range=100.0, )
lidar_iface = lidar_config.acquire_lidar_sensor_interface()
lidar_iface.set_horizontal_fov(360.0, 0.4) lidar_iface.set_vertical_fov(30.0, 0.1) lidar_iface.set_rotation_rate(10.0) lidar_iface.set_laser_count(64)
data = lidar_iface.get_linear_depth_data() point_cloud = lidar_iface.get_point_cloud_data() intensity = lidar_iface.get_intensity_data()
|
PhysX LiDAR 与 RTX LiDAR 的核心区别:
- PhysX LiDAR:基于 PhysX 场景查询,速度更快(基于 GPU),支持大量激光线
- RTX LiDAR:基于 RTX 光线追踪管线,材质交互更精确(反射率、吸收率影响回波强度)
3.3 IMU 传感器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| from isaacsim.sensors.physics import IMUSensor
imu = IMUSensor( prim_path="/World/Robot/imu", sensor_period=0.01, translation=Gf.Vec3d(0, 0, 0), orientation=Gf.Quatd(1, 0, 0, 0), )
imu.set_accelerometer_filters( low_pass_cutoff=50.0, notch_freq=60.0, ) imu.set_gyroscope_filters( low_pass_cutoff=40.0, notch_freq=0.0, )
reading = imu.get_sensor_reading()
|
3.4 接触传感器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| from isaacsim.sensors.physics import ContactSensor
contact = ContactSensor( prim_path="/World/Robot/base_link", sensor_period=0.005, threshold=0.0, )
reading = contact.get_sensor_reading()
frame = contact.get_current_frame()
|
四、机器人仿真与原语 API
4.1 Articulation 系统
Isaac Sim 将机器人建模为 Articulation——一组通过关节(Joint)连接的刚体链。文档提供了三层 API:
| 层级 |
API |
适用场景 |
| 高级 |
isaacsim.core.prims.SingleArticulation |
单机器人控制,仿真场景交互 |
| 批量 |
isaacsim.core.prims.ArticulationView |
批量训练(RL 并行环境) |
| 底层 |
omni.isaac.dynamic_control |
直接控制 DOF(自由度) |
高级 API 示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| from isaacsim.core.prims import SingleArticulation from isaacsim.core.prims import ArticulationAction
robot = SingleArticulation( prim_path="/World/Quadrotor", name="quadrotor", position=Gf.Vec3f(0, 0, 1.0), orientation=Gf.Quatf(1, 0, 0, 0), )
action = ArticulationAction( joint_positions=[0.0, 0.0, 0.0, 0.0], joint_velocities=None, joint_efforts=[0.0, 0.0, 0.0, 0.0], joint_indices=[0, 1, 2, 3], ) robot.apply_action(action)
dof_names = robot.dof_names dof_types = robot.dof_types joint_positions = robot.get_joint_positions() joint_velocities = robot.get_joint_velocities()
|
底层 Dynamic Control API(精细控制场景):
1 2 3 4
| from omni.isaac.dynamic_control import dynamic_control as dc
dyn_ctl = dc.DynamicControl()
|
4.2 关节配置与驱动器
关节属性通过 USD Schema 附着:
1 2 3 4 5 6
| drive_api = UsdPhysics.DriveAPI.Apply(joint_prim, "angular") drive_api.GetTypeAttr().Set("force") drive_api.GetMaxForceAttr().Set(100.0) drive_api.GetDampingAttr().Set(10.0) drive_api.GetStiffnessAttr().Set(1000.0)
|
在 Isaac Lab 中,驱动器配置通过 actuators 模块声明:
1 2 3 4 5 6 7 8 9 10 11
| from omni.isaac.lab.actuators import ImplicitActuatorCfg
actuator_cfg = ImplicitActuatorCfg( joint_names_expr=[".*"], stiffness={".*": 100.0}, damping={".*": 10.0}, armature={ ".*": 0.01 }, )
|
4.3 OmniGraph 可视化编程
除了 Python API,仿真逻辑也可以通过 OmniGraph 可视化节点图构建。核心节点包括:
- Articulation Controller 节点:
positionCommand, velocityCommand, effortCommand 输入
- ROS 2 Context 节点:管理 ROS2 上下文
- ROS 2 Camera Helper:将相机数据发布为 ROS2 话题
- Physics Step 节点:控制物理步进
OmniGraph 节点最终生成 USD 场景图,与 Python API 完全互通——你可以在 GUI 中搭建 OmniGraph,然后在 Python 脚本中加载同一张 USD。
五、ROS2 Bridge 集成
Isaac Sim 提供两种 ROS2 集成模式,两者可混合使用。
5.1 OmniGraph 节点模式(可视化)
通过 OmniGraph 拖拽节点配置 ROS2 发布:
| OmniGraph 节点 |
功能 |
ROS 2 Context |
初始化 rclcpp 上下文,支持多节点 |
ROS 2 Camera Helper |
发布 sensor_msgs/Image(RGB/Depth)+ CameraInfo |
ROS 2 Publish Pointcloud |
发布 sensor_msgs/PointCloud2 |
ROS 2 Publish Clock |
发布 rosgraph_msgs/Clock(仿真时间同步) |
ROS 2 Publish Transform |
发布 tf2_msgs/TFMessage |
ROS 2 Publish JointState |
发布 sensor_msgs/JointState |
5.2 Python 模式
直接使用 isaacsim.ros2.bridge 扩展和标准 rclpy:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| import rclpy from rclpy.node import Node from sensor_msgs.msg import Image, CameraInfo from isaacsim.ros2.bridge import ROS2PublishImage
rclpy.init() node = Node("isaac_sim_node")
camera_pub = node.create_publisher(Image, "/front_camera/image_raw", 10) camera_info_pub = node.create_publisher(CameraInfo, "/front_camera/camera_info", 10)
def publish_sensor_data(camera): rgb = camera.get_rgb() img_msg = Image() img_msg.height = rgb.shape[0] img_msg.width = rgb.shape[1] img_msg.encoding = "rgb8" img_msg.data = rgb.tobytes() camera_pub.publish(img_msg)
from omni.replicator.core import annotators
noise_pipeline = annotators.augment_compose( input_annotators=["rgb"], augmentations={ "rgb": ( "GaussianNoise", {"mean": 0.01, "std": 0.05} ) } )
|
六、Isaac Lab:GPU 原生机器人学习
6.1 架构概览
Isaac Lab 是建立在 Isaac Sim 之上的机器人学习框架,其架构可以分解为以下层次:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| ┌──────────────────────────────────────────┐ │ RL 算法库接口 │ │ (rsl_rl / sb3 / skrl / rl_games) │ ├──────────────────────────────────────────┤ │ Manager 层 │ │ ObservationManager · ActionManager │ │ RewardManager · TerminationManager │ │ EventManager · CommandManager │ │ CurriculumManager · RecorderManager │ ├──────────────────────────────────────────┤ │ Env / Task 层 │ │ BaseEnv · BaseTask · MDP 组件 │ ├──────────────────────────────────────────┤ │ Scene / Asset 层 │ │ SceneEntityCfg · spawners · terrain │ ├──────────────────────────────────────────┤ │ 仿真上下文 │ │ SimulationContext · Fabric · PhysX │ └──────────────────────────────────────────┘
|
关键模块路径:
1 2 3 4 5 6 7 8 9
| omni.isaac.lab.envs — 环境基类与 MDP 组件 omni.isaac.lab.managers — ManagerBase + 6 个具体 Manager omni.isaac.lab.actuators — 驱动器配置(ImplicitActuator 等) omni.isaac.lab.sim — SimulationContext, spawners omni.isaac.lab.assets — 机器人模型定义 omni.isaac.lab.sensors — 传感器包装器 omni.isaac.lab.terrains — 程序化地形生成 omni.isaac.lab.controllers — 控制器实现 omni.isaac.lab.devices — 人机接口设备
|
6.2 GPU 训练管线配置
完整的 GPU 端到端训练管线:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| from omni.isaac.lab.sim import SimulationContext, SimulationCfg
sim_cfg = SimulationCfg( dt=0.005, render_interval=4, device="cuda:0", use_gpu_pipeline=True, use_fabric=True, physics_device="cuda:0", )
|
训练产出(保存到 logs/rsl_rl/<task>/):
1 2 3 4 5
| params/ agent.yaml — PPO 超参数 env.yaml — 环境配置 exported/ policy.pt — 导出策略(TorchScript)
|
6.3 策略部署
训练好的策略部署到仿真或真机:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| import torch from omni.isaac.lab.actuators import ImplicitActuator from isaacsim.core.prims import SingleArticulation, ArticulationAction
policy = torch.jit.load("policy.pt") policy.eval()
with open("params/env.yaml") as f: env_cfg = yaml.safe_load(f)
obs_scale = env_cfg["normalization"]["obs_scale"] obs_offset = env_cfg["normalization"]["obs_offset"]
def build_observation(robot: SingleArticulation): obs = torch.cat([ torch.tensor(robot.get_joint_positions()), torch.tensor(robot.get_joint_velocities()), ]) return (obs - obs_offset) / obs_scale
robot = SingleArticulation(prim_path="/World/Quadrotor", name="quadrotor") while True: obs = build_observation(robot) with torch.no_grad(): action = policy(obs.unsqueeze(0)).squeeze(0) actuator = ImplicitActuator(robot) efforts = actuator.compute_effort(action) robot.apply_action(ArticulationAction(joint_efforts=efforts)) sim_context.step()
|
七、合成数据生成(Replicator)
7.1 核心扩展
| 扩展 |
功能 |
omni.replicator.core |
核心:相机配置、标注器、Writer、随机化 |
isaacsim.replicator.agent.core (IRA) |
智能体仿真:行人、机器人行为 |
isaacsim.replicator.object.core (IRO) |
程序化物体生成 |
isaacsim.replicator.incident.core (IRI) |
事件触发仿真 |
isaacsim.replicator.caption.core (IRC) |
场景自动字幕 |
isaacsim.sensors.rtx.placement (ISP) |
自动相机布局优化 |
omni.behavior.composer |
行为树编排 |
7.2 数据生成管线
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| import omni.replicator.core as rep
rep.settings.set_carb_setting("/persistent/omniverse/app/render/quality", "DLSS-Quality")
rp = rep.create.render_product( camera_path="/World/Camera", resolution=(1920, 1080), )
annotators = [ "rgb", "depth", "bounding_box_2d_tight", "bounding_box_3d", "semantic_segmentation", "instance_segmentation", "normals", "occlusion", ]
writer = rep.WriterRegistry.get("BasicWriter") writer.initialize( output_dir="/tmp/sdg_output", rgb=True, bounding_box_2d_tight=True, bounding_box_3d=True, semantic_segmentation=True, instance_segmentation=True, depth=True, normals=True, occlusion=True, point_cloud=True, ) writer.attach([rp])
rep.orchestrator.set_capture_on_play(False) rep.orchestrator.step(rt_subframes=8)
|
IRA YAML 智能体行为配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| actors: - group: pedestrians count: 10 behaviors: - type: wander radius: 5.0 speed: [0.5, 1.5] - type: idle probability: 0.2
triggers: - type: time_trigger interval: 5.0 action: swap_actor_appearance
|
7.3 程序化物体生成(IRO)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| objects: - category: bottle count: 50 distribution: type: uniform position: x: [-2, 2] y: [-2, 2] z: [0, 1.5] rotation: type: random macros: $[seed]: 42 $[frame]: 10 $[abs]: 0 $[rel]: 0.5
|
八、数字孪生工作流
8.1 参考架构任务分组
官方文档将 Isaac Sim 的典型工作流划分为 6 个任务分组:
- 几何体创建(Geometry Authoring)— 使用 SimReady 资产标准
- 资产导入(Importing)— URDF/MJCF/CAD → USD 转换
- 场景搭建(Scene Setup)— 机器人工具、传感器挂载
- 数字孪生交互(Interaction)— ArticulationController、Motion Generation(Lula/cuMotion)
- 应用部署(Use Cases)— Isaac Lab、SDG、ROS2 Bridge、Isaac Perceptor/Manipulator、SIL/HIL
- 编排与调度(Orchestration)— NVIDIA OSMO 工作流编排
8.2 资产导入管线
三种主流机器人格式的导入方式:
1 2 3 4 5 6 7 8
| ./python.sh -m isaacsim.urdf_importer /path/to/robot.urdf
./python.sh -m isaacsim.mjcf_importer /path/to/model.mjcf
|
8.3 Cortex 协作机器人
Isaac Sim 的 Cortex 系统支持去中心化决策网络的协作机器人仿真:
- Franka 协作码垛
- UR10 箱体搬运
- cuOpt 实时路径优化
九、性能优化与基准
9.1 官方性能优化手册要点
- 减少碰撞几何复杂度:凸包 ≥ 球体近似 ≥ SDF,优先使用 Convex Hull
- 控制 GPU 凸包顶点数:≤ 64 避免 CPU 回退
- TGS 优先于 PGS:相同迭代次数下约束稳定性更高
- Fabric 模式:必须启用(
use_fabric=True),否则 USD 序列化成为瓶颈
- RTX 渲染 vs 光栅化:仿真训练时使用光栅化,数据生成时使用路径追踪
- 渲染间隔:
render_interval > 1(每 N 个物理步渲染一次)可显著提升训练吞吐量
9.2 官方基准数据
| 场景 |
GPU |
刚体数量 |
物理帧率 |
渲染帧率 |
| 单机器人操作 |
RTX 4090 |
~50 |
200 Hz |
60 Hz |
| 多机器人训练 |
RTX 4090 |
~1,000 |
60 Hz |
30 Hz |
| 批量 RL 训练 |
RTX 4090 |
~10,000 |
30 Hz |
7.5 Hz |
| 大场景仿真 |
A100 (80GB) |
~50,000 |
15 Hz |
NA |
十、总结:Isaac Sim 5.1 能力矩阵
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ┌─────────────────────────────────────────────────────┐ │ Isaac Sim 5.1 │ ├──────────────┬──────────────┬────────────────────────┤ │ 物理仿真 │ 传感器仿真 │ AI 训练与数据 │ │ │ │ │ │ PhysX 5 GPU │ RTX 相机 │ Isaac Lab (GPU RL) │ │ TGS 求解器 │ PhysX LiDAR │ Replicator (SDG) │ │ 凸包/SDF碰撞 │ RTX LiDAR │ 10k+ 并行环境 │ │ CCD 检测 │ IMU + 滤波 │ 域随机化 + IRA/IRO │ │ 关节驱动 │ 接触传感器 │ 策略导出 + 部署 │ │ Fabric 加速 │ 噪声管线 │ 自动标注 │ ├──────────────┴──────────────┴────────────────────────┤ │ 集成层 │ │ ROS2 Bridge · OmniGraph · USD · Python API │ │ URDF/MJCF/Onshape 导入 · Cortex · Digital Twin │ └─────────────────────────────────────────────────────┘
|
本文基于 Isaac Sim 5.1.0 官方文档撰写,聚焦架构细节、API 签名和工作流模式。所有代码示例均为可直接运行的 API 调用,覆盖从物理引擎配置到 RL 策略部署的完整链路。对于需要进一步查阅的读者,推荐以下官方文档路径:
- 物理引擎:docs → Development Components → Physics
- 传感器 API:docs → Robot and Sensor Simulation → Sensors
- Isaac Lab:docs → Base Applications → Isaac Lab
- 合成数据:docs → Base Applications → Synthetic Data Generation
- ROS2 集成:docs → Base Applications → ROS 2
- 性能优化:docs → Reference Information → Isaac Sim Performance Optimization Handbook