Ubuntu20.04下运行Drake工具包Atlas示例出现警告及崩溃如何解决
问题根因说明
你遇到的崩溃是Drake的MultibodyPlant离散更新求解器收敛失败导致的,前面的碰撞组忽略、固定关节传动跳过、多接触几何提示都属于预警类信息,不是直接导致崩溃的原因。崩溃触发时仿真时长为0.498s,当前使用的离散更新周期为1ms,求解器无法在当前步长下解析系统动态特性,通常由碰撞突变、接触配置复杂或控制器增益过高引发。
可行解决方法
- 调小离散更新周期
当前使用的1ms步长无法满足求解精度要求,可将构造MultibodyPlant时传入的时间步长参数下调,比如改为0.5ms(0.0005s)甚至0.1ms(0.0001s)。C++代码示例:MultibodyPlant<double> plant(0.0005);,Python代码示例:plant = MultibodyPlant(time_step=0.0005) - 降低控制器增益
如果你使用了自定义的Atlas关节控制器,先将PD增益下调20%~50%测试。离散求解器对控制输入采用显式处理,高增益很容易引发数值振荡导致收敛失败。 - 切换为连续仿真模式
构造MultibodyPlant时将时间步长设为0,即可启用连续模型,求解器会自动适配步长保证收敛稳定性,唯一的缺点是仿真运行速度会低于离散模式,算力消耗更高。
额外排查建议
- 可以先临时关闭脚部的接触检测运行仿真,如果不再崩溃,说明是接触求解复杂度太高导致的问题,可以进一步优化碰撞体配置或者调整接触求解参数。
- 检查Atlas模型URDF/SDF文件中的碰撞几何定义,避免出现重叠的碰撞体,降低接触求解的计算压力。
内容的提问来源于stack exchange,提问作者Dmitriy Ogureckiy
相关产品推荐
相关产品推荐

