运行的环境配置

运行的环境配置

环境配置及版本:
Isaac Sim 4.2.0
版本信息及相关配置:
系统版本:ubuntu20.04
CPU:i5-13400F
GPU:4060Ti 8G
内存:32G
Cuda(11.8) python3.10
pytorch(2.4.0)
Isaac Sim(4.2.0)

2.运行的过程记录

      以前使用IsaacGymEnvs进行强化学习的训练,已经更新到Isaac Gym Preview 4 release,目前不再更新,全部转到了Isaac Lab开源代码上,一个基于 Isaac Sim 平台构建的开源轻量级且性能优化的机器人学习应用程序。所以,本文是用于记录和学习Isaac Lab的安装和使用教程。
安装参考了以下链接:
使用Isaac Sim二进制安装
IsaacLab 从入门到精通(一) 环境配置和依赖安装
关于怎么配置cuda环境和英伟达驱动网上有很多教程,不再赘述。

Isaac Lab安装教程

Isaac Sim的安装

检查Isaac Sim最新版本的最低系统要求

Isaac Sim最新版本的最低系统要求
       Isaac Sim的安装有两种方式,使用pip安装和使用二进制文件安装。使用 pip 安装 Isaac Sim 需要 GLIBC 2.34+ 版本兼容性。要检查系统上的 GLIBC 版本,使用命令 ldd --version。Ubuntu 20.04 LTS 默认使用 GLIBC 2.31,所以,ubuntu20无法使用pip安装。
在ubuntu20系统上使用二进制安装,参考链接 Workstation Installation

  1. 下载安装ubuntu对应的omniverse-launcher-linux.AppImage;
  2. 赋予文件运行权限
sudo chmod +x omniverse-launcher-linux.AppImage
  1. 双击omniverse-launcher-linux.AppImage,安装omniverse
  2. 点击Exchange,搜索Isaac Sim,下载最新版4.2.0。
    omniverse
    验证Isaac Sim 安装命令:
# Isaac Sim root directory
export ISAACSIM_PATH="${HOME}/.local/share/ov/pkg/isaac-sim-4.2.0"
# Isaac Sim python executable
export ISAACSIM_PYTHON_EXE="${ISAACSIM_PATH}/python.sh"

可以把上述命令写入环境变量,ubuntu系统可以添加到~/.bashrc文件中。
检查模拟器是否正常运行:

${ISAACSIM_PATH}/isaac-sim.sh

检查模拟器是否可以从独立的 python 脚本中运行:

# checks that python path is set correctly
${ISAACSIM_PYTHON_EXE} -c "print('Isaac Sim configuration is now complete.')"
# checks that Isaac Sim can be launched from python
${ISAACSIM_PYTHON_EXE} ${ISAACSIM_PATH}/standalone_examples/api/omni.isaac.core/add_cubes.py

Isaac Lab的安装

  1. 将Isaac Lab库克隆到你的工作空间
git clone git@github.com:isaac-sim/IsaacLab.git
  1. 创建Isaac Sim符号链接
          在已安装的Isaac Sim根目录和Isaac Lab目录的 _isaac_sim 之间建立符号链接。这样做方便了索引Python模块并查找与Isaac Sim一起提供的扩展。
# enter the cloned repository
cd IsaacLab
# create a symbolic link
ln -s path_to_isaac_sim _isaac_sim
# For example: ln -s /home/nvidia/.local/share/ov/pkg/isaac-sim-4.2.0 _isaac_sim

配置conda环境

  1. 推荐使用的conda环境,推荐使用python3.10,进入下载的IsaacLab工作空间,使用conda创建虚拟环境命令:
# Option 1: Default name for conda environment is 'isaaclab'
./isaaclab.sh --conda  # or "./isaaclab.sh -c"
# Option 2: Custom name for conda environment
./isaaclab.sh --conda my_env  # or "./isaaclab.sh -c my_env"

两个命令都可以,第一个默认虚拟环境名字是’isaaclab’,第二个可以自定义虚拟环境的名字。
2. 创建完成后,需要激活虚拟环境

conda activate isaaclab  # or "conda activate my_env"
  1. 进入虚拟环境后,可以使用python 或 python3代替./isaaclab.sh -p / isaaclab.bat -p 来运行Python脚本。

安装依赖

使用 apt 来安装依赖(仅适用于Linux):

sudo apt install cmake build-essential

运行安装命令,遍历 source/extensions 目录中的所有扩展,同时使用带有 --editable 标志的pip进行安装:

./isaaclab.sh --install # or "./isaaclab.sh -i"

验证 Isaac Lab 安装

要验证安装是否成功,请从存储库顶部运行以下命令:

# Option 1: Using the isaaclab.sh executable
# note: this works for both the bundled python and the virtual environment
./isaaclab.sh -p source/standalone/tutorials/00_sim/create_empty.py

# Option 2: Using python in your virtual environment
python source/standalone/tutorials/00_sim/create_empty.py

      上述命令应该启动模拟器,并显示具有黑色地面平面的窗口,如下图,就安装成功了。
模拟器画面

IsaacLab自定义任务模板进行强化学习训练

环境要求

需要安装Isaac sim及Isaac Lab,并且保证它们能够正常工作。官方提供了几个模板:

官方四足模板:https://github.com/isaac-sim/IsaacLabExtensionTemplate
宇树的Go2模板:https://github.com/abizovnuralem/go2_omniverse
Fan-ziqi的四足模板:https://github.com/fan-ziqi/robot_lab
NathanWu7机械臂和机械手模板:
https://github.com/NathanWu7/isaacLab.manipulation

本文使用NathanWu7的机械臂和机械手

安装及部署IsaacLab.manipulation

  1. 激活conda环境,执行以下命令安装
git clone https://github.com/NathanWu7/isaacLab.manipulation
cd isaacLab.manipulation
conda activated isaaclab
pip install -e .
  1. 进行依赖的安装
cd isaacLab.manipulation/isaacLab/manipulation/algorithms 
git clone https://github.com/leggedrobotics/rsl_rl.git
cd rsl_rl
python -m pip install -e .
  1. 上述指令会安装RSL-RL这个强化学习库,在安装完成后,需要修改isaacLab.manipulation/isaacLab/manipulation/assets/usd/config.yaml文件中asset_path和usd_dir的路径,改为自己的文件路径。
  2. 再执行以下示例
python3 scripts/rsl_rl/train.py --task Template-Isaac-Reach-UR10-v0 --num_envs 4096 --headless

–task代表注册的任务类别
–num_envs代表并行训练个数
–headless模式不会显示图形界面

使用GPU进行强化学习训练过程

      本文使用通过改变num_envs中的数值,分别采用16,128,1024,4096等并行个数,进行GPU加速仿真和训练。
16个并行环境
128个并行环境
1024个并行环境
4096个并行环境      通过观察训练的单步时间,随着并行环境个数增加,单步时间随之增加,整体流畅度在下降。

AI框架Pytorch与Isaac Sim集成

      Isaac Sim 和 PyTorch 的集成表现良好,只需要在文件中引入torch,就可以调用Pytorch实现的深度学习模型,使用户能够直接从仿真环境采样数据,调用GPU进行训练,训练深度学习模型。本文使用PPO深度强化学习算法,通过多环境并行训练,调整深度强化学习参数,实现机械臂的控制。

      具体可以查看在
isaacLab.manipulation/isaacLab/manipulation/algorithms/rsl_rl/rsl_rl/algorithms/ppo.py中的PPO算法,其中,Actor和Critic深度学习模型结构如下图所示
深度学习模型结构

3.运行的结果反馈

      通过改变num_envs个数,查看不同数量的机械臂的训练情况。

环境个数 单步迭代时间(s) 平均奖励 时间(s) 显存(MiB) 备注
16 0.88 -3.14 885.8 5678
128 1.17 -2.28 1188.8 5761
1024 2.84 -1.82 2769.5 5901
4096 9.15 -1.78 10361.0 6772
1024 59.34 -1.84 58154.2 761 only cpu

GPU加速相关体验

Isaac Sim在GPU加速方面的优势

      通过增加并行环境的数量,可以显著提高 GPU 多核架构的计算能力,使得训练效果得到了大幅提升,同时缩短了训练时间,尤其是在对比 CPU 训练时,GPU 的优势更加明显。在相同的训练步数下,增加并行环境数使得训练效果得到了更好的表现,且 GPU 训练所需的时间远少于 CPU 训练。这种并行化计算能力非常适用于大规模的训练任务和需要高速数据处理的应用,尤其是在强化学习等任务中,能够快速生成训练数据并加速学习过程。

      Isaac Sim 使用 NVIDIA 的 PhysX 物理引擎,经过深度优化以提高对 GPU 的利用效率,尤其是在处理刚体动力学和软体模拟等复杂场景时,能够显著提升计算速度。这使得仿真环境中的物理行为更加真实,同时能在 GPU 上高效执行复杂的物理计算。

      借助 NVIDIA CUDA 平台,Isaac Sim 在并行计算任务中具有强大的分发能力,能够高效处理如碰撞检测、接触力计算等大量的小任务,确保仿真计算的高效性和低延迟。这使得它能够高效地处理大规模、多任务并行计算,优化工业仿真中复杂的动态计算任务。

      利用 NVIDIA RTX 技术,Isaac Sim 还实现了实时光线追踪,能够呈现更为真实的渲染效果,特别是在机器人视觉任务中,具有明显的优势。实时光线追踪不仅提升了图像的真实性,还能让用户在仿真过程中获得更精确的视觉反馈,极大地提高了仿真任务的可视化质量。

      GPU 的并行化处理能力使得 Isaac Sim 能够在短时间内高效渲染出高质量的图像,无论是简单的球体模型,还是复杂的机器人模型,都能够得到流畅的渲染输出。这种高效的渲染能力不仅适用于物理仿真,还对实时输出渲染结果和后续分析提供了极大的便利。

并行计算能力对工业仿真的意义

      支持大规模场景:工业仿真中常常需要模拟大量的对象,如制造流水线中的物品和自动化机器人等。GPU 的并行计算使得在复杂场景下仿真速度得到显著提升,仿真可以处理更多对象和细节,减少计算瓶颈。
      提升效率:许多工业仿真任务如路径规划、多机器人协作和碰撞检测等,均能从 GPU 加速中受益,减少了每轮仿真迭代所需的时间。
      支持实时交互:工业仿真任务需要实时调整环境参数或进行现场调整,GPU 强大的并行计算能力确保了高帧率仿真和实时反馈,使得实时交互成为可能。
成本节约:更高效的仿真不仅减少了实验次数,还降低了实际工业部署时的风险和成本。通过仿真验证不同设计方案,能够提前发现问题并调整,减少了物理试验的需求。

增加训练机械臂数量后的流畅度分析

      当增加训练机械臂的数量时,物理仿真流畅度稍微下降,但在一定数量内依然能够保持较为平滑的运行。通过调试完成模型后,可以通过仅调用无图形界面的仿真引擎来加速训练过程。这种方式可以减少图形渲染对计算资源的消耗,从而提高训练效率。
原因分析:

  1. GPU 并行能力的扩展性:增加物体数量时,GPU 的资源还没有被完全利用,因此即使增加训练物体的数量,也不会对帧率造成显著的影响。
  2. 物理计算优化:Isaac Sim 的物理引擎已经对 GPU 使用做了深度优化,能够更加高效地处理复杂的物理计算任务。
  3. GPU 的并行化计算:与 CPU 相比,GPU 能够同时处理数千个线程,这意味着大量的小任务(如球体碰撞等)可以并行完成,提升了仿真效率。
  4. 动态任务分配:GPU 的任务分配机制会根据当前负载动态调整工作线程的数量,确保资源得到高效利用,避免了计算资源浪费。
    总结来说,Isaac Sim 的 GPU 并行计算能力不仅提升了仿真速度,还支持了更高效的任务处理、实时交互和大规模场景仿真,在工业仿真中的应用意义重大。通过对 GPU 的深度优化,能够确保仿真在增加物体数量的情况下依然保持流畅,并且能够应对复杂的物理计算任务和高效的渲染需求。

Isaac Sim与AI框架集成体验

      Isaac Sim 和 PyTorch 的集成整体表现良好,特别是在利用 Isaac Lab 时,可以直接支持与 PyTorch 的深度学习框架交互。其内置的强化学习支持框架结合 NVIDIA 的 Isaac Gym 和 PyTorch,使用户能够直接从仿真环境采样数据,训练强化学习模型。同时,Isaac Sim 提供对 PyTorch 张量格式的原生支持,避免了额外的数据转换工作。借助 NVIDIA GPU 的强大加速能力,仿真与模型训练的效率大大提升。
      在机器人控制方面,Isaac Sim 提供了高效的训练环境,成功完成机械臂抓取的成功率超过96%。影响控制精度的关键因素包括关节控制精度、实时性和稳定性,工件的几何形状以及 AI 模型的泛化能力。如果训练数据不足,可能会影响控制精度。相比于传统方法,AI 辅助抓取的优势在于其自适应能力,能够适应更多未知的物体和场景,并且能够实时学习和优化,提升对动态环境的适应能力。AI 模型还能够处理传统方法难以解决的复杂任务,提高并通过仿真训练大幅降低对真实机器人硬件的依赖,降低实验成本。

综合分析Isaac Sim的优势

仿真效率

      Isaac Sim利用NVIDIA的GPU技术,提供高效的GPU加速渲染和训练能力。这使得Isaac Sim能够在短时间内生成大量的高分辨率图像和数据,显著提高了仿真速度和效率。其逼真的机器人抓取环境降低了对真实机器人实验的依赖,同时提供高效的数据采集能力。物理引擎提供了高质量的物理模拟,如碰撞、摩擦和物体动态行为,使得训练模型更具泛化能力。Isaac Sim支持并行处理多个仿真任务,用户可以在同一时间内运行多个仿真实例,进一步加速了训练和测试过程。Isaac Sim能够实现实时仿真,提供即时反馈,这使得研究人员和开发者可以快速迭代和调试算法,缩短开发周期。

开发便利性

      Isaac Sim提供了直观的图形用户界面,新用户可以快速上手,无需深入了解底层技术细节。同时还提供了Standalone的python启动方式,方便用户进行学习和自定义功能实现。采用模块化设计的思想,支持自定义传感器、车辆、环境、通信协议和控制层,用户可以根据具体需求灵活地扩展和定制仿真环境。Isaac Sim还支持与ROS/ROS2的扩展集成,使得用户可以直接在仿真环境中测试和开发基于这些框架的算法。

与AI框架的协同性

      Isaac Sim能够无缝集成到NVIDIA的AI生态系统中,包括NVIDIA CUDA、cuDNN、TensorRT等,用户可以充分利用NVIDIA的高性能计算资源和优化工具,加速AI模型的训练和推理过程。Isaac Sim还支持多种流行的深度学习框架,如TensorFlow、PyTorch等,用户可以根据自己的需求选择合适的框架,灵活地开发和部署AI模型。Isaac Sim提供了对强化学习的支持,包括与OpenAI Gym的兼容性,用户可以方便地在Isaac Sim中实现和测试强化学习算法。Isaac Sim提供了强大的数据生成和预处理工具,用户可以轻松生成高质量的训练数据,并对其进行预处理,提高AI模型的训练效果。

潜在的应用场景

      自动驾驶汽车:Isaac Sim可以用来模拟自动驾驶汽车的驾驶环境,进行算法训练和验证,确保在实际道路上的安全性和可靠性。
      工业自动化:在制造业中,Isaac Sim可以用于模拟工厂环境,训练机器人执行装配、搬运等任务,提高生产效率和质量。
      物流和仓储:通过模拟仓库环境,Isaac Sim可以帮助设计和优化自动化物流系统,如自动拣选和货物搬运。

4.运行体验与建议

整体使用体验

      整体来看,使用 Isaac Sim 进行 GPU 加速仿真的体验非常高效。其强大的并行计算能力充分利用 GPU,在处理多个仿真环境时能以较高的帧率完成任务,尤其适合强化学习的训练和大规模数据采集。NVIDIA PhysX 引擎的支持使仿真结果具有高度的物理真实性,无论是复杂的碰撞、摩擦力还是动态行为的表现都非常可靠。同时,其实时渲染能力为视觉仿真任务提供了细腻且直观的视觉反馈。即使在仿真复杂度增加或任务数量提升的情况下,只要硬件资源足够,GPU 的扩展性依然可以保持仿真的流畅运行。然而,对于初学者来说,上手过程可能较为困难,尤其是需要配置 GPU 驱动、CUDA 版本和环境变量。此外,当运行多个复杂仿真环境时,对显存的需求非常高,低配 GPU 容易成为性能瓶颈。运行过程中,在高负载或长时间运行下,偶尔会出现崩溃或性能下降的问题。

      在 PyTorch 与 Isaac Sim 的结合方面,整体体验较好。二者的结合提供了无缝的数据流支持,GPU 上的张量操作可以直接在仿真环境中提取并传递给 PyTorch 模型进行训练,无需额外的转换和传输。通过 NVIDIA 提供的环境模板,用户可以快速构建和运行强化学习任务。此外,利用 PyTorch 和 Isaac Sim 的并行特性,可以实现仿真与模型更新的同步,大幅提升训练效率。不过,在大规模任务中,仿真环境和 PyTorch 模型的交互调试较为复杂,特别是同步问题需要更多关注。同时,PyTorch 和 Isaac Sim 对 CUDA 及 GPU 驱动版本的要求较高,如果环境配置不当会导致运行失败。当前,深度学习任务的工具支持还需用户自行配置,例如数据增强和自定义模型设计,期待未来能提供更多开箱即用的工具。

功能改进建议

      在功能改进方面,建议 Isaac Sim 提供性能分析工具,帮助用户识别仿真中的瓶颈,例如 GPU 占用率、显存使用情况和任务帧率。同时,可以优化资源利用,为低配硬件环境提供简化模式,如减少渲染细节和优化物理计算。此外,为解决配置问题,建议增加自动化的环境设置工具,帮助用户检测并修复 CUDA 和驱动不匹配的问题。在 PyTorch 集成方面,建议优化数据流接口,进一步简化仿真与 PyTorch 模型之间的数据传输,并提供更多预定义的任务模板,如抓取、导航等,降低用户构建强化学习任务的开发门槛。同时,可增加训练任务的调试支持,例如实时显示损失曲线、采样数据分布和策略可视化。

开发生态

      在开发生态上,Isaac Sim 的开发者社区有一定活跃度,但与 ROS 或 PyTorch 相比仍有较大提升空间。NVIDIA 提供了丰富的官方文档、示例代码和教程,这为新手提供了良好的入门支持。官方论坛和开发者社区较为活跃,许多用户也在 GitHub 上分享了自定义扩展和算法。然而,作为一款较新的工具,用户基数相对有限,很多问题的解决仍依赖官方团队或少数经验丰富的用户。相比之下,社区问答、插件扩展以及教程分享等活动还需进一步增强,以提升生态系统的整体吸引力和使用便利性。
Isaac Sim 的开发者社区活跃度在一定程度上表现不错,但与更成熟的工具(如 ROS 或 PyTorch)相比仍显得用户基数较小。官方提供了丰富的文档、教程和示例代码,对于新用户来说非常友好,但社区用户在问题讨论和插件分享方面的互动性稍显不足。官方论坛和 GitHub 是主要的支持渠道,但整体来看,社区生态仍需进一步扩展。
      在遇到技术问题时,解决难度取决于问题的类型。常见问题通常可以通过官方资源或社区论坛找到答案,比如环境配置和基础功能的使用。而更复杂的问题(如物理仿真细节或自定义开发)可能需要依赖向官方提交工单,或者等待有经验的用户回复,因此解决效率存在一定的不确定性。改进的方向可以包括增加复杂问题的调试指南和更多实践案例的分享,以提升用户的自助能力。至于更新迭代频率,总体令人满意。NVIDIA 定期发布新版本,带来了诸如性能优化和功能扩展的改进,展示了对产品维护的重视。然而,新版本的兼容性问题和更新说明的不够详细,可能会给用户适配环境带来挑战。改进建议包括提供更详尽的更新日志和迁移指南,以及长期支持版本的优化,以减轻用户频繁更新的负担。

学术研究价值

      近年来,基于 Isaac Sim 发表的学术论文逐渐增多,尤其是在机器人学和强化学习领域。研究者利用其高性能物理引擎和 GPU 加速能力,完成了如路径规划、多机器人协作以及仿真到现实(Sim2Real)迁移等任务。这些论文常突出 Isaac Sim 在加速训练和高精度仿真方面的能力,成为许多学术研究的核心工具。
      在研究领域中,Isaac Sim 的仿真结果表现出较高的可信度。其基于 PhysX 的物理引擎支持精准的动力学和碰撞检测,能够为导航、抓取等任务提供可靠的实验数据。然而,仿真结果的可信度仍依赖于用户建模的精细程度,尤其是对传感器建模和环境配置的准确性。在多物理场复杂任务中,性能和配置的局限性可能稍显不足。
      综合来看,Isaac Sim 对推动机器人学术研究的贡献显著,可打 8 分。它极大地加速了研究进程,尤其是在强化学习和多智能体系统方面。然而,社区支持和资源生态尚需进一步完善,这可能限制其更广泛的普及。
      相比其他仿真平台(如 Gazebo、Webots、PyBullet),Isaac Sim 的显著优势在于 GPU 加速支持,这使得并行环境仿真和训练效率大幅提升,同时与 PyTorch 和 TensorFlow 的无缝集成也为深度学习研究提供了便利。其高精度物理仿真和高质量渲染能力为视觉感知任务提供了逼真的数据支持,而多机器人系统的灵活仿真功能则适合协作任务和强化学习研究。相比之下,其他平台在渲染质量和加速能力上略显不足,Isaac Sim 凭借其完整的生态系统更具吸引力。

更多推荐