平铺渲染和录制

平铺渲染和录制#

平铺渲染#

备注

此功能仅在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 下。