Aligning NED IMU quaternions with Meta Quest headset frame for upper-body tracking
Hi everyone,
I’m relatively new to Unity and VR development. I’m trying to use IMUs for upper-body tracking (arms/upper torso) and drive an avatar that mirrors my motion in front of me as accurately as possible. I’ve also briefly looked at the Meta Movement SDK.
My plan is to mount IMUs on upper-body segments (e.g., upper arm/forearm/torso) and apply their orientations to the avatar rig. Ideally, I’d also like to extract upper-limb joint angles (ROM) from this pipeline (Movement SDK or otherwise).
The main issue I’m stuck on is coordinate-frame registration: my IMUs output quaternions in a NED frame, but the Quest headset/controller tracking is in the Quest/Unity world frame. I’m not sure how to align/register the IMU frame to the headset frame, especially since the headset establishes its own reference orientation when worn / during recentering.
Questions:
- What’s the recommended way to register NED IMU quaternions to the Quest headset’s frame (and keep them aligned over time)?
- Is a one-time calibration pose (e.g., T-pose) typically used, and if so what transform(s) should be computed/applied?
- Can the Movement SDK help with joint angles/ROM extraction for upper limbs, or is it mainly for vision-based tracking?
- Any best practices for applying IMU orientations to a humanoid rig in Unity to get stable, accurate mirroring?
Any insight or pointers (math steps, Unity/Quest specifics, sample workflows) would be greatly appreciated.