可视化#

Isaac Lab提供了多个轻量级可视化器,用于实时模拟检查和调试。与处理传感器数据的渲染器不同,可视化器旨在提供快速、交互式的反馈。

无论您选择哪种物理引擎或渲染后端,都可以使用任何可视化器。

概述#

Isaac Lab支持三种可视化器后端,每种都针对不同的使用场景进行了优化:

可视化器比较#

可视化器

最适用于

主要功能

Omniverse

高保真度、Isaac Sim集成

USD、可视化标记、实时图表

Newton

快速迭代

低开销、可视化标记

Rerun

远程查看、回放

网页查看器、时间擦除、录制导出

以下可视化器展示了在Isaac-Velocity-Flat-Anymal-D-v0环境中的训练。

Omniverse可视化器

Omniverse可视化器#

Newton可视化器

Newton可视化器#

Rerun可视化器

Rerun可视化器#

快速开始#

使用 --visualizer 从命令行启动可视化器:

# Launch all visualizers
python scripts/reinforcement_learning/rsl_rl/train.py --task Isaac-Cartpole-v0 --visualizer omniverse newton rerun

# Launch just newton visualizer
python scripts/reinforcement_learning/rsl_rl/train.py --task Isaac-Cartpole-v0 --visualizer newton

如果给定了 --headless ,则不会启动任何可视化器。

备注

--headless 参数可能会在未来版本中被弃用,以避免与 --visualizer 参数混淆。目前, --headless 优先并禁用所有可视化器。

配置#

使用命令行启动可视化器将使用默认的可视化器配置。可以在 source/isaaclab/isaaclab/visualizers 中找到并编辑默认配置。

您还可以通过为 SimulationCfg 定义新的 VisualizerCfg 实例来在代码中配置自定义可视化器,例如:

from isaaclab.sim import SimulationCfg
from isaaclab.visualizers import NewtonVisualizerCfg, OVVisualizerCfg, RerunVisualizerCfg

sim_cfg = SimulationCfg(
    visualizer_cfgs=[
        OVVisualizerCfg(
            viewport_name="Visualizer Viewport",
            create_viewport=True,
            dock_position="SAME",
            window_width=1280,
            window_height=720,
            camera_position=(0.0, 0.0, 20.0), # high top down view
            camera_target=(0.0, 0.0, 0.0),
        ),
        NewtonVisualizerCfg(
            camera_position=(5.0, 5.0, 5.0), # closer quarter view
            camera_target=(0.0, 0.0, 0.0),
            show_joints=True,
        ),
        RerunVisualizerCfg(
            keep_historical_data=True,
            keep_scalar_history=True,
            record_to_rrd="my_training.rrd",
        ),
    ]
)

可视化器后端#

Omniverse可视化器#

主要功能:

  • 原生USD舞台集成

  • 用于调试的可视化标记(箭头、框架、点等)

  • 用于监控训练指标的实时图表

  • 完整的Isaac Sim渲染功能和工具

核心配置:

from isaaclab.visualizers import OVVisualizerCfg

visualizer_cfg = OVVisualizerCfg(
    # Viewport settings
    viewport_name="Visualizer Viewport",      # Viewport window name
    create_viewport=True,                     # Create new viewport vs. use existing
    dock_position="SAME",                     # Docking: 'LEFT', 'RIGHT', 'BOTTOM', 'SAME'
    window_width=1280,                        # Viewport width in pixels
    window_height=720,                        # Viewport height in pixels

    # Camera settings
    camera_position=(8.0, 8.0, 3.0),         # Initial camera position (x, y, z)
    camera_target=(0.0, 0.0, 0.0),           # Camera look-at target

    # Feature toggles
    enable_markers=True,                      # Enable visualization markers
    enable_live_plots=True,                   # Enable live plots (auto-expands frames)
)

Newton可视化器#

主要功能:

  • 轻量级OpenGL渲染,开销低

  • 可视化标记(关节、接触、弹簧、质心)

  • 训练和渲染暂停控制

  • 可调节的更新频率以进行性能调优

  • 一些可自定义的渲染选项(阴影、天空、线框)

交互控制:

键/输入

操作

W, A, S, D方向键

前进 / 向左 / 后退 / 向右

Q, E

向下 / 向上

左键 + 拖动

环顾四周

鼠标滚轮

放大/缩小

空格键

暂停/恢复渲染(物理模拟继续)

H

切换UI侧边栏

ESC

退出查看器

核心配置:

from isaaclab.visualizers import NewtonVisualizerCfg

visualizer_cfg = NewtonVisualizerCfg(
    # Window settings
    window_width=1920,                        # Window width in pixels
    window_height=1080,                       # Window height in pixels

    # Camera settings
    camera_position=(8.0, 8.0, 3.0),         # Initial camera position (x, y, z)
    camera_target=(0.0, 0.0, 0.0),           # Camera look-at target

    # Performance tuning
    update_frequency=1,                       # Update every N frames (1=every frame)

    # Physics debug visualization
    show_joints=False,                        # Show joint visualizations
    show_contacts=False,                      # Show contact points and normals
    show_springs=False,                       # Show spring constraints
    show_com=False,                           # Show center of mass markers

    # Rendering options
    enable_shadows=True,                      # Enable shadow rendering
    enable_sky=True,                          # Enable sky rendering
    enable_wireframe=False,                   # Enable wireframe mode

    # Color customization
    background_color=(0.53, 0.81, 0.92),     # Sky/background color (RGB [0,1])
    ground_color=(0.18, 0.20, 0.25),         # Ground plane color (RGB [0,1])
    light_color=(1.0, 1.0, 1.0),             # Directional light color (RGB [0,1])
)

Rerun可视化器#

主要功能:

  • 可从本地或远程浏览器访问的网页查看器界面

  • 元数据记录和过滤

  • 录制到.rrd文件以供离线回放(可以通过ctrl+O从网页查看器打开.rrd文件)

  • 录制的时间轴擦除和回放控制

核心配置:

from isaaclab.visualizers import RerunVisualizerCfg

visualizer_cfg = RerunVisualizerCfg(
    # Server settings
    app_id="isaaclab-simulation",             # Application identifier for viewer
    web_port=9090,                            # Port for local web viewer (launched in browser)

    # Camera settings
    camera_position=(8.0, 8.0, 3.0),         # Initial camera position (x, y, z)
    camera_target=(0.0, 0.0, 0.0),           # Camera look-at target

    # History settings
    keep_historical_data=False,               # Keep transforms for time scrubbing
    keep_scalar_history=False,                # Keep scalar/plot history

    # Recording
    record_to_rrd="recording.rrd",            # Path to save .rrd file (None = no recording)
)

性能说明#

为减少可视化大规模环境时的开销,请考虑:

  • 使用Newton而不是Omniverse或Rerun

  • 减小窗口大小

  • 更高的更新频率

  • 在不使用可视化器时暂停它们

限制#

Rerun可视化器性能

基于网页的Rerun可视化器在可视化大规模环境时可能会遇到性能问题或崩溃。对于大规模模拟,建议使用Newton可视化器。或者,为了减少负载,可以使用 --num_envs 覆盖并减少环境数量:

python scripts/reinforcement_learning/rsl_rl/train.py --task Isaac-Cartpole-v0 --visualizer rerun --num_envs 512

备注

未来的功能将支持仅可视化环境的子集,这将提高可视化性能并减少资源使用,同时在后台保持全规模训练。

Rerun可视化器FPS控制

Rerun可视化器UI中的FPS控制可能不会在所有配置中影响可视化帧率。

Newton可视化器接触和质心标记

Newton可视化器尚不支持接触和质心标记。这将在未来版本中解决。

Newton可视化器CUDA/OpenGL互操作性警告

在某些系统配置上,Newton可视化器可能会显示有关CUDA/OpenGL互操作性的警告:

Warning: Could not get MSAA config, falling back to non-AA.
Warp CUDA error 999: unknown error (in function wp_cuda_graphics_register_gl_buffer)
Warp UserWarning: Could not register GL buffer since CUDA/OpenGL interoperability
is not available. Falling back to copy operations between the Warp array and the
OpenGL buffer.

可视化器仍将正常运行,但由于回退到CPU复制操作而不是直接GPU内存共享,可能会出现性能下降。