我试图分别使用两个 IMU 获得上臂和下臂之间的角度。我校准了 imu 并使用四元数来获得 Unity 3D 中上臂和下臂对象的全局方向。
Qimu1 = 来自下臂 imu 的四元数
Qimu2 = 来自位于上臂的 imu 的四元数。
我在 Unity 中制作了两个对象,分别代表上臂和下臂。其中lowerarm 是upperarm 的子对象,使用Character 关节连接到upperarm。
这是上臂的脚本:
if (Input.GetKeyDown(KeyCode.Space))
{
Qstart2 = Qimu2;
}
transform.localRotation = Qstart2 * Quaternion.Inverse(Qimu2);
下臂脚本:
if (Input.GetKeyDown(KeyCode.Space))
{
Qstart1 = Qimu1;
}
Qimu1new = Qstart1 * Quaternion.Inverse(Qimu1);
Quaternion Qdiff = Quaternion.Inverse(Qimu1new) * Qimu2;
transform.localRotation = Qdiff;
我想获得的是 Unity3D 中使用 2 个 IMU 的手臂运动的视觉表示。现在,如果我保持肘部伸展,脚本就可以工作。但是,一旦我开始弯曲肘部,下臂物体就开始围绕同一轴连续旋转。