Jump to content

[Unity][Vive XR Elite] Upper Body Tracking - CreateBodyTracking() The body tracking mode UPPERBODYIK and calibration role Arm_Handheld are NOT matched.


Recommended Posts

Hello Everyone,

I am pretty new to Vive development by using the Wave SDK for Unity. I am developing for the Vive XR Elite and want to initialize the upper body tracking.To check out the possibilities of the bodytracking feature I use the Demo scene in unity which is included in the bodytracking package.

By using only the tracking mode for the arms it syncs up my movements with the movements of the virtual avatar and works without any problems. But by using the tracking mode for the upper body it does not sync up anymovements. By checking the logs of adb logcat  for the log tag "Wave.Essence.BodyTracking.HumanoidTracking",I receive the following logs:

--------- beginning of system
--------- beginning of main
06-10 16:47:50.375 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: Awake() Records the initial body position and scale.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: BeginTracking() tracking mode: UpperBody
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: StartFixUpdateBodyTracking() Configures Humanoid avatar.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid Hips -> Body root.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid LeftUpperLeg -> Body leftThigh.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid LeftLowerLeg -> Body leftLeg.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid LeftFoot -> Body leftAnkle.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid LeftToes -> Body leftFoot.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid RightUpperLeg -> Body rightThigh.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid RightLowerLeg -> Body rightLeg.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid RightFoot -> Body rightAnkle.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid RightToes -> Body rightFoot.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid UpperChest -> Body chest.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid Chest -> Body spineHigh.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid Neck -> Body neck.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid Head -> Body head.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid LeftShoulder -> Body leftClavicle.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid LeftUpperArm -> Body leftUpperarm.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid LeftLowerArm -> Body leftForearm.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid LeftHand -> Body leftHand.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid RightShoulder -> Body rightClavicle.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid RightUpperArm -> Body rightUpperarm.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid RightLowerArm -> Body rightForearm.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Humanoid RightHand -> Body rightHand.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: AssignHumanoidToBody() Calculates height: LeftToes (0,04862255), RightToes(0,04862255), Head(1,40053), height: 1,351907
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: BeginTracking() Records the initial standard pose.
06-10 16:48:12.034 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: StartFixUpdateBodyTracking()
06-10 16:48:15.048 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: StartFixUpdateBodyTracking() SetStandardPose result SUCCESS
06-10 16:48:15.048 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: StartFixUpdateBodyTracking() CreateBodyTracking with custom avatar + standard extrinsics.
06-10 16:48:15.050 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: Bodytracking RESULT: ERROR_BODYTRACKINGMODE_NOT_ALIGNED
06-10 16:48:15.050 27393 27433 D Wave.Essence.BodyTracking.HumanoidTracking: StartFixUpdateBodyTracking() CreateBodyTracking result ERROR_BODYTRACKINGMODE_NOT_ALIGNED, id: -1

Here I recognized the Bodytracking result Error: ERROR_BODYTRACKINGMODE_NOT_ALIGNED

By checking the bodymanager logs with the log tag "Wave.Essence.BodyTracking.BodyManager" i received the following logs:

--------- beginning of system
--------- beginning of main
06-10 16:53:24.038 27393 27433 D Wave.Essence.BodyTracking.BodyManager: SetStandardPose() UPPERBODYIK
06-10 16:53:24.038 27393 27433 D Wave.Essence.BodyTracking.BodyManager: GetStandardPose() UPPERBODYIK call to GetStandardPoseDefault().
06-10 16:53:24.038 27393 27433 D Wave.Essence.BodyTracking.BodyManager: GetStandardPoseDefault()
06-10 16:53:24.038 27393 27433 E Wave.Essence.BodyTracking.BodyManager: GetStandardPoseDefault() Invalid size: 0
06-10 16:53:24.038 27393 27433 E Wave.Essence.BodyTracking.BodyManager: GetStandardPose() failed to retrieve the calibration pose from runtime, result: ERROR_INPUTPOSE_NOT_VALID
06-10 16:53:24.041 27393 27433 D Wave.Essence.BodyTracking.BodyManager: GetStandardPoseCurrent() InitTrackingInfos result: SUCCESS
06-10 16:53:24.041 27393 27433 D Wave.Essence.BodyTracking.BodyManager: SetStandardPose() UPPERBODYIK, result: SUCCESS
06-10 16:53:24.041 27393 27433 D Wave.Essence.BodyTracking.BodyManager: CreateBodyTracking() with Avatar, mode: UPPERBODYIK
06-10 16:53:24.041 27393 27433 D Wave.Essence.BodyTracking.BodyManager: CreateBodyTracking() updates standard pose in content.
06-10 16:53:24.041 27393 27433 D Wave.Essence.BodyTracking.BodyManager: CreateBodyTracking() retrieves calibration pose successfully, mode: UPPERBODYIK, calibration role: Arm_Handheld
06-10 16:53:24.042 27393 27433 E Wave.Essence.BodyTracking.BodyManager: CreateBodyTracking() The body tracking mode UPPERBODYIK and calibration role Arm_Handheld are NOT matched.

Here, I figured out that the tracking mode "UPPERBODYIK" does not match the calibration role "Arm_Handheld". I know how to change the tracking mode to arms only, which will work as mentioned above.

But how can I change the calibration role to match with the tracking mode.

I also receive the error "ERROR_INPUTPOSE_NOT_VALID", which I don't have any idea how to fix it.

I did not find anything which could help me in the wave SDK body tracking documentation. 

If you need further information, please let me know.
Thank you for your help. 🙂

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...