引言:在机器人任务训练过程中,仿真平台是至关重要的工具,它不仅能加速算法验证,还能减少实际硬件的消耗和风险。目前,主流的机器人仿真平台包括 Isaac Sim、Isaac Gym、PyBullet 和 MuJoCo,它们各具优势,适用于不同的应用场景。其中,Isaac Gym 以其高效的 GPU 加速能力和大规模并行仿真性能,成为强化学习训练和机器人控制研究的重要选择。 本文将详细介绍 Isaac Gym 的安装过程。
仿真平台对比
平台 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
Isaac Sim | - 提供真实物理引擎和高质量渲染,适合机器人与环境的交互模拟。 - 完全集成 NVIDIA 硬件和软件,支持 GPU 加速和深度学习任务。 - 强大的 API 支持,兼容 ROS。 | - 安装和配置复杂,需特定 NVIDIA GPU 和驱动。 - 高硬件要求,尤其在图形渲染方面。 | - 机器人开发、测试和模拟。 - 深度学习算法训练,尤其是高质量图形渲染任务。 |
Isaac Gym | - 高效 GPU 加速,支持大规模并行仿真任务。 - 专注于强化学习训练,适用于物理模拟与优化。 - 与 NVIDIA 深度学习工具集成,提供更强的计算性能。 | - 界面简单,缺乏高级图形渲染。 - 依赖 CUDA 的硬件,仅支持 NVIDIA GPU。 | - 强化学习训练,尤其是大规模并行仿真。 - 机器人控制策略优化,数据驱动方法。 |
PyBullet | - 轻量级,易用,适合快速原型开发。 - 支持多种机器人模型和物理仿真。 - 提供 Python API,易于与机器学习框架集成。 | - 图形渲染和仿真精度较低,不适合复杂环境模拟。 - 相对于其他平台,缺乏高级功能和并行支持。 | - 机器人控制、运动学和动力学研究。 - 机器学习中的仿真与强化学习应用。 - 学术研究和教育中的快速验证。 |
MuJoCo | - 高效的物理引擎,提供精确的刚体动力学模拟。 - 支持多种控制任务,适用于复杂的机器人控制。 - 提供高效的图形渲染,适合精确的仿真。 | - 需要付费许可证,商业版本相对较贵。 - 相比其他平台,开源社区和文档支持较小。 | - 机器人控制与运动学研究,尤其在精确动力学模拟中。 - 强化学习任务,涉及复杂控制和仿真。 |
1. Isaac Gym环境安装
1.1 下载
IsaacGym_Preview_4_Package下载地址
Nvidia官方最低配置要求
- Ubuntu 18.04, or 20.04.
- Python 3.6, 3.7, or 3.8
- NVIDIA driver version: 470.74 (470 or above required)
- Minimum required hardware: NVIDIA Pascal or later GPU with at least 8gb of VRAM
然后我们对上面所下载的压缩包进行解压缩即可,将会得到 isaacgym 文件夹,目录结构如下图。
解压缩相关命令
# 解压到当前目录
tar -zxvf IsaacGym_Preview_4_Package.tar.gz
# 解压到指定目录下
tar -zxvf IsaacGym_Preview_4_Package.tar.gz -C 目标目录
1.2 安装
Isaac Gym安装的相关指令
# 进入到指定目录下
cd isaacgym/python/
# 运行官方安装脚本 创建 名为rlgpu的 conda环境
sh ../create_conda_env_rlgpu.sh
# 注:若使用上述 sh 运行脚本时出现语法错误 则可以使用 bash 进行替换
bash ../create_conda_env_rlgpu.sh
注:此过程可能会有些慢,耐心等待一会~
Isaac Gym安装conda环境可能出现的问题及解决办法
执行上述指令之后可能会出现如下问题
~/autodl-tmp/isaacgym/python ~/autodl-tmp/isaacgym/python
Collecting package metadata (repodata.json): - WARNING conda.models.version:get_matcher(537): Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 1.8.0.*, but conda is ignoring the .* and treating it as 1.8.0
WARNING conda.models.version:get_matcher(537): Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 1.6.0.*, but conda is ignoring the .* and treating it as 1.6.0
WARNING conda.models.version:get_matcher(537): Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 1.7.1.*, but conda is ignoring the .* and treating it as 1.7.1
WARNING conda.models.version:get_matcher(537): Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 1-9.0.*, but conda is ignoring the .* and treating it as 1.9./done
Solving environment : / 一直在解决环境解析依赖 转圈
如果安装速度很慢,解决办法如下,使用 mamba(一个更快的conda替代品)
来进行加速安装。
# 安装 mamba(如果未安装)
conda install -n base -c conda-forge mamba -y
# 使用 mamba 加速安装(如果已安装 mamba)
mamba env create -f rlgpu_conda_env.yml
2. Isaac Gym测试是否可用
上述指令执行成功之后,会创建一个名为rlgpu
的新环境。然后我们将进行测试isaac gym
是否可以使用。
# 激活 rlgpu 环境
conda activate rlgpu
# 进入 examples 目录下
cd examples
# 执行某个 py 文件
python joint_monkey.py
此时,可能出现的问题如下
问题1 —> 报错 isaacgym 模块 找不到
问题2,见下图 —>
解决问题1
cd isaacgym/python/
pip install -e .
解决问题2
# 1. 检查 Isaac Gym 依赖库 会发现libcarb.gym.plugin.so 依赖的
# libmem_filesys.so、libboost_thread.so.1.68.0 和
# libboost_system.so.1.68.0 没有找到,导致 gymapi.acquire_gym() 失败。
ldd ~/lty/isaacgym/python/isaacgym/_bindings/linux-x86_64/libcarb.gym.plugin.so
# 2. 手动添加 libmem_filesys.so 到 LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/a3090/lty/isaacgym/python/isaacgym/_bindings/linux-x86_64
# 3. 然后再检查
ldd ~/lty/isaacgym/python/isaacgym/_bindings/linux-x86_64/libcarb.gym.plugin.so
# 4. 持久化 LD_LIBRARY_PATH 避免重启后需要重新配置 可以把 LD_LIBRARY_PATH 写入 ~/.bashrc
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/a3090/lty/isaacgym/python/isaacgym/_bindings/linux-x86_64' >> ~/.bashrc
source ~/.bashrc
# 5. 重新运行 joint_monkey.py 看看是否解决 如果成功 会出现如下图形界面
python joint_monkey.py
3. 相关知识点
3.1 Mamba vs Conda
mamba
是 conda
的一个高性能替代方案,由 conda-forge 社区开发,目标是解决 conda
在包解析和安装速度方面的不足。
1. Conda vs Mamba 简介
🔹 Conda
conda
是一个开源的包管理和环境管理工具,主要用于 Python 和其他语言的依赖管理。- 通过解析 Anaconda 或 Miniconda 的软件包,并自动解决依赖关系。
🔹 Mamba
mamba
是conda
的 C++ 重写版本,大幅提高了解析和安装速度。- 兼容
conda
,但性能更优,特别适用于大规模环境管理。
2. Mamba 主要优势
✅ 速度更快:
mamba
采用 libsolv(一个高效的依赖解析库),能更快地解析包依赖。mamba
采用并行下载,提高安装效率。
✅ 更稳定:
- 避免
conda
解析冲突导致的 “Solving environment: failed” 错误。 - 适用于复杂环境和大规模软件安装。
✅ 更少的资源占用:
mamba
使用 C++ 开发,而conda
主要基于 Python,运行时占用更少资源。
✅ 兼容性强:
mamba
100% 兼容conda
命令,只需用mamba
替换conda
即可。- 适用于
conda
生态,如conda-forge
、bioconda
、nvidia
频道等。
✅ 支持 micromamba
(轻量级版本):
micromamba
是mamba
的精简版,不依赖conda
,适用于容器和自动化任务。
3. Mamba 和 Conda 命令对比
使用 mamba
的方式与 conda
一样,只需把 conda
替换成 mamba
:
操作 | Conda 命令 | Mamba 命令 |
---|---|---|
创建环境 | conda create -n myenv python=3.9 -y | mamba create -n myenv python=3.9 -y |
激活环境 | conda activate myenv | mamba activate myenv |
安装包 | conda install numpy pandas -y | mamba install numpy pandas -y |
更新包 | conda update numpy -y | mamba update numpy -y |
移除包 | conda remove numpy -y | mamba remove numpy -y |
删除环境 | conda remove -n myenv --all -y | mamba remove -n myenv --all -y |
列出已安装包 | conda list | mamba list |
搜索包 | conda search numpy | mamba search numpy |
4. Mamba vs Conda 总结(表格对比)
特性 | Conda | Mamba |
---|---|---|
速度 | 慢,解析依赖时间长 | 快,使用 libsolv 解析 |
稳定性 | 复杂环境下可能解析失败 | 依赖解析更可靠 |
并行下载 | 否 | 是,速度更快 |
资源占用 | 较高 | 较低 |
兼容性 | 适用于 conda 生态 | 100% 兼容 conda |
支持微型版本 | 否 | micromamba (适用于容器) |
推荐场景 | 一般用户 | 需要高效环境管理的用户 |
5. 什么时候应该使用 Mamba?
- 环境安装速度慢(
conda env create
时间过长)。 - 安装大规模依赖(如
pytorch
、tensorflow
、cuda
等)。 - 解决 Conda 解析失败问题(避免
Solving environment: failed
)。 - 在 Docker 容器或自动化任务中使用(
micromamba
适用于轻量级环境)。
3.2 GPU使用情况查看
观察nvidia-smi
实时变化
# 这会每秒刷新 nvidia-smi ,如果你运行深度学习或 GPU 仿真任务,可以实时看到
# GPU-Util 和 Memory-Usage 变化。如果 GPU-Util 上升到 50%甚至100%,
# 说明GPU正在高负载运行。按Ctrl+C退出。
watch -n 1 nvidia-smi
3.3 CUDA版本查看
# 检查所安装的 CUDA 版本
nvcc -V