如何定义机器人平面足接触以最小化地面穿透?Pydrake实践
Drake仿真中足部地面穿透问题的疑问与解决方案
问题背景
我通过以下代码定义地面:
plant.RegisterCollisionGeometry( plant.world_body(), X_BG, HalfSpace(), "ground_collision", surface_friction) plant.RegisterVisualGeometry( plant.world_body(), X_BG, HalfSpace(), "ground_visual", np.array([0.5,0.5,0.5,0.0]))
- 未显式设置
plant.set_penetration_allowance时,在time_step = 2e-3的时间步长下,机器人足部的地面穿透量处于可控范围(附图:足部可控穿透效果)。 - 但将足部碰撞改为使用
Box(thickness=1e-3)以限制点接触假设后,足部出现严重的地面穿透问题(附图:足部严重穿透效果)。
已尝试方案
已知离散时间仿真中接触模型必然存在地面穿透,我做了以下尝试:
- 保持2e-3时间步长并减小穿透容限:无改善,反而导致机器人因接触力过大飞起
- 调整Box厚度:未产生作用
- 减小时间步长至
5e-4:能改善穿透问题
疑问
减小时间步长是唯一解决方式吗?是否存在无需减小时间步长的更好处理方案?
补充编辑
使用hydroelastic接触后,机器人足部行为符合预期(附图:hydroelastic接触下正常效果)。
内容的提问来源于stack exchange,提问作者corehammer
相关产品推荐
相关产品推荐

