可视化#
Isaac Lab提供了多个轻量级可视化器,用于实时模拟检查和调试。与处理传感器数据的渲染器不同,可视化器旨在提供快速、交互式的反馈。
无论您选择哪种物理引擎或渲染后端,都可以使用任何可视化器。
概述#
Isaac Lab支持三种可视化器后端,每种都针对不同的使用场景进行了优化:
可视化器 |
最适用于 |
主要功能 |
|---|---|---|
Omniverse |
高保真度、Isaac Sim集成 |
USD、可视化标记、实时图表 |
Newton |
快速迭代 |
低开销、可视化标记 |
Rerun |
远程查看、回放 |
网页查看器、时间擦除、录制导出 |
以下可视化器展示了在Isaac-Velocity-Flat-Anymal-D-v0环境中的训练。
Omniverse可视化器#
Newton可视化器#
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内存共享,可能会出现性能下降。