平铺渲染和录制#
平铺渲染#
备注
此功能仅在Isaac Sim 4.0.0及以上版本可用。
平铺渲染需要大量内存资源。我们建议在场景中最多运行256个摄像头。
平铺渲染API提供了一个矢量化接口,用于从摄像头传感器收集数据。这对需要视觉环节的强化学习环境非常有用。平铺渲染通过连接多个摄像头的相机输出并呈现为单个大图像,而不是由每个单独摄像头生成的多个较小图像。这减少了呈现所需的时间,并为处理视觉数据提供了更高效的API。
Isaac Lab通过 TiledCamera
类提供了用于RGB和深度数据的平铺渲染API。平铺渲染API的配置可以通过 TiledCameraCfg
类进行定义,指定参数,如用于所有摄像头路径的正则表达式,相机的变换方式,期望的数据类型,要添加到场景中的摄像头类型以及摄像头分辨率。
tiled_camera: TiledCameraCfg = TiledCameraCfg(
prim_path="/World/envs/env_.*/Camera",
offset=TiledCameraCfg.OffsetCfg(pos=(-7.0, 0.0, 3.0), rot=(0.9945, 0.0, 0.1045, 0.0), convention="world"),
data_types=["rgb"],
spawn=sim_utils.PinholeCameraCfg(
focal_length=24.0, focus_distance=400.0, horizontal_aperture=20.955, clipping_range=(0.1, 20.0)
),
width=80,
height=80,
)
要访问平铺渲染接口,可以创建一个 TiledCamera
对象,并用于从摄像头获取数据。
tiled_camera = TiledCamera(cfg.tiled_camera)
data_type = "rgb"
data = tiled_camera.data.output[data_type]
返回的数据将转换为形状(num_cameras,height,width,num_channels),可以直接用作强化学习的观察数据。
在处理渲染时,请确保在启动环境时添加 --enable_cameras
参数。例如:
python source/standalone/workflows/rl_games/train.py --task=Isaac-Cartpole-RGB-Camera-Direct-v0 --headless --enable_cameras
训练期间的录制#
Isaac Lab支持在训练期间使用 gymnasium.wrappers.RecordVideo 类记录视频剪辑。
可以通过安装 ffmpeg
并在训练脚本中使用以下命令行参数来启用此功能:
--video
- 在训练期间启用视频录制--video_length
- 每个录制视频的长度(以步数为单位)--video_interval
- 每个视频录制之间的间隔时间(以步数为单位)
在无头模式运行时,也确保添加 --enable_cameras
参数。请注意,启用录制等同于在训练期间启用渲染,这将拖慢启动和运行时性能。
示例用法:
python source/standalone/workflows/rl_games/train.py --task=Isaac-Cartpole-v0 --headless --video --video_length 100 --video_interval 500
记录的视频将保存在与训练检查点相同的目录中,位于 IsaacLab/logs/<rl_workflow>/<task>/<run>/videos/train
下。