仿真性能和调优#
仿真性能可能受多种因素影响,包括场景中的物体数量、物理仿真的复杂度以及所使用的硬件设备。以下是一些提升性能的建议:
使用无头模式: 在不需要渲染时启用无头模式可显著提升性能。可通过运行仿真器时添加
--headless参数来启用。减少非必要碰撞: 尽可能减少物体重叠以降低仿真开销。过多的接触和碰撞会在仿真碰撞阶段产生较大计算负担。
简化物理模型: 考虑使用简化的碰撞几何体或降低仿真精度来提升性能。可通过修改资产和调整仿真配置中的物理参数实现。
合理选择CPU/GPU仿真: 对于少量关节或刚体的场景,CPU仿真可能更高效;大规模场景则建议使用GPU仿真以获得显著性能提升。
碰撞几何体优化#
碰撞几何体用于定义仿真中物体的碰撞检测形状。使用简化后的碰撞几何体可提升性能并降低仿真复杂度。
例如对于复杂网格,可创建近似其形状的简化碰撞几何体。在Isaac Sim中可通过界面修改碰撞网格和近似方法实现。
此外,通常可移除机器人非关键训练部位的碰撞几何体。以Anymal-C机器人为例,我们保留膝盖和足部的碰撞几何体,但移除腿部其他部位的碰撞几何体以优化性能。
球体等基本几何形状比复杂网格具有更好的性能表现。例如SDF网格碰撞器的计算开销就远高于简单球体。
注意圆柱体和圆锥体碰撞几何体具有特殊的三角网格平滑碰撞支持,可优化轮式仿真行为,但会牺牲性能。可通过设置场景参数 --/physics/collisionApproximateCylinders=true 和 --/physics/collisionApproximateCones=true 来禁用此功能。
在GPU强化学习任务中需注意 凸包 近似网格碰撞体的GPU兼容性警告。当输入网格具有高长宽比(如细长形状)时,凸包近似可能导致GPU仿真不兼容,触发CPU回退从而显著影响性能。
CPU回退警告形如: [Warning] [omni.physx.cooking.plugin] ConvexMeshCookingTask: failed to cook GPU-compatible mesh, collision detection will fall back to CPU. Collisions with particles and deformables will not work with this mesh.. 解决方案包括切换为边界立方体近似,或对非动态刚体的几何体使用静态三角网格碰撞器。
Linux 上的 CPU 调控器设置#
CPU 调控器决定 CPU 的工作时钟频率范围和缩放。这可能是 Isaac Sim 性能的限制因素。为获得最大性能,CPU 调控器应设置为 performance 。要修改 CPU 调控器,请运行以下命令:
sudo apt-get install linux-tools-common
cpupower frequency-info # Check available governors
sudo cpupower frequency-set -g performance # Set governor with root permissions
备注
并非所有调控器都在所有系统上可用。启用更高时钟速度的调控器通常更以性能为中心,将为 Isaac Sim 带来更好的性能。
更多性能优化指南#
有许多方法可以 “调优” 模拟的性能,但您选择的方法很大程度上取决于您要模拟的内容。一般来说,您首先要寻找性能提升的地方是 physics engine 。除了渲染和运行深度学习模型之外,物理引擎是计算成本最高的。调优物理模拟以将范围限制为仅关注的任务是开始寻找性能提升的好地方。
我们最近发布了一个新的 gripper tuning guide ,专门用于接触和抓取调优。如果您打算使用机器人夹具,请先查看它。有关更多详细信息,您还应该查看这些指南!