解决:ubuntu22.04中IsaacGymEnv保存视频报错的问题

1. IsaacGymEnvs项目介绍

IsaacGymEnvs:基于NVIDIA Isaac Gym的高效机器人训练环境

IsaacGymEnvs 是一个基于 NVIDIA Isaac Gym 的开源 Python 环境库,专为机器人训练提供高效的仿真环境。Isaac Gym 是由 NVIDIA 开发的一个高性能物理仿真引擎,专为机器人学和强化学习等应用设计。它利用 GPU 加速,支持大规模的并行仿真,使得多智能体强化学习和机器学习任务的训练速度大大提升。

1.1. 主要特点

  1. GPU 加速 : Isaac Gym 使用 GPU 进行并行计算,可以高效地模拟多个环境,支持快速的仿真训练,特别适合强化学习和深度学习任务。
  2. 多智能体支持IsaacGymEnvs 提供了多种多智能体环境的支持,适合训练多个机器人或智能体进行协作或竞争。
  3. 高性能 : 相比于传统的基于 CPU 的仿真引擎,Isaac Gym 通过 GPU 的并行计算,极大地提高了仿真速度和训练效率。
  4. 适用于强化学习IsaacGymEnvs 设计支持与强化学习框架(如 RLlib、Stable Baselines3、PyTorch 和 TensorFlow)集成,方便用户进行机器人控制、策略优化等任务。
  5. 物理引擎和仿真 : 它结合了 NVIDIA 物理引擎,提供了高精度的碰撞检测、物体交互、重力模拟等功能,适用于训练基于物理仿真的任务。
  6. 丰富的环境 : 提供了多种预定义的环境,如操控任务、导航任务、物体抓取等,可以作为快速原型设计和实验的基础。
  7. 易于扩展 : 用户可以创建自定义的环境,通过修改现有的环境或开发新环境来满足特定的需求。

1.2. 常见使用场景

  • 机器人控制:训练机器人在模拟环境中执行复杂的任务,如抓取、操作物体、导航等。
  • 强化学习:开发和训练基于强化学习的算法,进行自我学习和优化策略。
  • 多智能体协作与对抗:训练多个机器人或智能体进行协作、对抗或竞争任务。
  • 物理仿真研究:研究机器人与环境交互中的物理现象,优化机器人设计和控制策略。

1.3. 集成与使用

IsaacGymEnvs 可以与多个流行的强化学习库结合使用,如:

  • RLlib:一个强化学习库,能够处理分布式强化学习任务。
  • Stable Baselines3:一个用于强化学习的高层次库,提供简单的接口和算法实现。
  • PyTorchTensorFlow :深度学习框架,可以与 IsaacGymEnvs 进行无缝集成,用于训练深度强化学习模型。

2. 保存视频报错及修改

isaac gym实现了标准 env.render(mode='rgb_rray') gym API 来提供模拟器查看器的图像。 此外,可以利用gym.wrappers.RecordVideo来帮助录制显示智能体运动过程的视频。 官方给出了示例代码如下,该文件应在视频文件夹中生成视频。

假如已经训练好了,用预训练模型参数保存视频的代码是:

c 复制代码
python train.py task=FrankaCubeStack test=True checkpoint=runs/FrankaCubeStack_09-12-14-22/nn/last_FrankaCubeStack_ep_500_rew_773.4196.pth headless=False num_envs=64 capture_video=True

2.1. 提示缺包:

重装pillow:

c 复制代码
 sudo apt-get install xvfb 

2.2. 继续报错:


OSError: Pillow was built without XCB support 表示当前环境中的 Pillow(Python 的图像处理库)不支持 XCB 功能,可能与图像显示或处理环境不兼容。

卸载、重装pillow:

c 复制代码
pip uninstall pillow
pip install pillow

2.3. 继续报错:

c 复制代码
Unknown encoder 'libx264'
ERROR: VideoRecorder encoder failed: None
ERROR: VideoRecorder encoder failed: None

此时可以生成视频,但是视频无法写入图像内容,视频大小是0 bytes:

查看系统是否安装了 ffmpeg,ffmpeg是否支持 libx264 编码器:

c 复制代码
ffmpeg -encoders | grep libx264


问题分析: 从输出信息来看,ffmpeg 已经安装,但是 libx264 编码器没有被启用,说明当前的 ffmpeg 配置没有包含 libx264 编码支持。
解决方法: 需重新编译 ffmpeg,并确保启用 libx264 编码器。

c 复制代码
conda install -c conda-forge ffmpeg

2.4. 成功写出视频

再次运行

c 复制代码
python train.py task=FrankaCubeStack test=True checkpoint=runs/FrankaCubeStack_09-12-14-22/nn/last_FrankaCubeStack_ep_500_rew_773.4196.pth headless=False num_envs=64 capture_video=True

成功写出视频:

rl-video-step-0

相关推荐
SunnyDays10114 分钟前
使用 Python 提取 Word 文档中的表格数据
python·word
for_ever_love__6 分钟前
python基础语法学习: 动态类型
开发语言·python·学习
troy12833 分钟前
分布式系统框架选型指南:主流框架优缺点深度对比
python·django·pygame
129Lab1 小时前
BMS算法快速原型开发:AI辅助实现扩展卡尔曼滤波(EKF)SOC估算从理论到代码落地
python·嵌入式开发·bms·卡尔曼滤波·电池管理系统·soc估算
萧鼎1 小时前
safetensors 库的安装、核心语法与实战用法,安全保存模型权重
python·开源·教程·python库·safetensors
千里码aicood1 小时前
基于Python语言的测量程序设计
开发语言·python
2601_962300811 小时前
用PyTorch Lightning简化空间分析:Python和机器学习的力量
python·深度学习·机器学习·空间分析·pytorchlightning
霸道流氓气质2 小时前
通义千问 VL & Audio:图像、视频、语音多模态 Java 集成深度解析
java·开发语言·音视频
jayson.h2 小时前
python-可视化提取表格-通用
开发语言·python
悟天特斯2 小时前
AI驱动的楼宇节能:从粗放管控到精准降碳的实践路径
开发语言·人工智能·python·物联网