btMultiBody 中的关节抽动

Twitching of joints in btMultiBody

我有基于 btMultiBody 的简单车辆。参考附件GIF,它的底部是中心的矩形块,它包含四个圆柱轮,使用btMultiBody::setupRevolute连接。每个轮子都包含一个关节电机,该电机被配置为 body 原地旋转。一切正常,但是,车辆每转半圈就会出现这种轻微的抽搐。有没有人知道这种抽搐可能来自哪里?请注意,红色球体只是标记,在 btMultiBodyDynamicsWorld 内部没有表示。一个(可能)重要的一点是,身体的位置是通过 btMultibodyLink::m_cachedWorldTransform 渲染的,我没有使用任何运动状态等

模型的问题实际上不是由于物理原因,而是由于 OpenGL 中的绘图。对于 OpenGL,我们将四元数转换为欧拉角,并且检测和处理万向节锁定的余量太大。减少此边距可显着改善可视化效果。