1. IsaacGymEnvs项目介绍
IsaacGymEnvs:基于NVIDIA Isaac Gym的高效机器人训练环境
IsaacGymEnvs
是一个基于 NVIDIA Isaac Gym 的开源 Python 环境库,专为机器人训练提供高效的仿真环境。Isaac Gym 是由 NVIDIA 开发的一个高性能物理仿真引擎,专为机器人学和强化学习等应用设计。它利用 GPU 加速,支持大规模的并行仿真,使得多智能体强化学习和机器学习任务的训练速度大大提升。
1.1. 主要特点
- GPU 加速 : Isaac Gym 使用 GPU 进行并行计算,可以高效地模拟多个环境,支持快速的仿真训练,特别适合强化学习和深度学习任务。
- 多智能体支持 :
IsaacGymEnvs
提供了多种多智能体环境的支持,适合训练多个机器人或智能体进行协作或竞争。 - 高性能 : 相比于传统的基于 CPU 的仿真引擎,Isaac Gym 通过 GPU 的并行计算,极大地提高了仿真速度和训练效率。
- 适用于强化学习 :
IsaacGymEnvs
设计支持与强化学习框架(如 RLlib、Stable Baselines3、PyTorch 和 TensorFlow)集成,方便用户进行机器人控制、策略优化等任务。 - 物理引擎和仿真 : 它结合了 NVIDIA 物理引擎,提供了高精度的碰撞检测、物体交互、重力模拟等功能,适用于训练基于物理仿真的任务。
- 丰富的环境 : 提供了多种预定义的环境,如操控任务、导航任务、物体抓取等,可以作为快速原型设计和实验的基础。
- 易于扩展 : 用户可以创建自定义的环境,通过修改现有的环境或开发新环境来满足特定的需求。
1.2. 常见使用场景
- 机器人控制:训练机器人在模拟环境中执行复杂的任务,如抓取、操作物体、导航等。
- 强化学习:开发和训练基于强化学习的算法,进行自我学习和优化策略。
- 多智能体协作与对抗:训练多个机器人或智能体进行协作、对抗或竞争任务。
- 物理仿真研究:研究机器人与环境交互中的物理现象,优化机器人设计和控制策略。
1.3. 集成与使用
IsaacGymEnvs
可以与多个流行的强化学习库结合使用,如:
- RLlib:一个强化学习库,能够处理分布式强化学习任务。
- Stable Baselines3:一个用于强化学习的高层次库,提供简单的接口和算法实现。
- PyTorch 和 TensorFlow :深度学习框架,可以与
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