Xinyu-Yi/PIP

Use own IMU, how to get the initial pose?

TowoC opened this issue · 13 comments

TowoC commented

Hello Xinyu,
I have seen there has an live_demo.py in TransPose and can preprocess the acc and ori from IMU.
In PIP, the input of the model need another element, initial pose and velocity, do you know how to get them?
I saw the velocity are set to 0 for initial, but how about init pose?

I have the same question, the init_pose in dip-imu is a stand-up pose while the author uses t-pose in the paper

TowoC commented

I saw that there has a sentence in the paper.
'''
During inference, we assume the initial pose of the subject is known, which can be obtained from the calibration step.
'''
Does it mean that I have to do T-Pose everytime when I want to do inference?

Yes, as you need a T-pose calibration every time you use this system, the beginning pose must be a T-pose. In practice, I do not find evident performance degradation if you use a different initial pose. It will only affect the tracking accuracy at the beginning. But as time goes by, the tracking can be accurate.

In my understanding, the initial pose only affects those not-leaf joints, leaf joints are affected by the imu oris only. when time goes through, the imu oris will bring the not-leaf joints to the right place.

TowoC commented

But how we can get the joint rotation (init pose)?
Is the T-Pose joint rotation are all identity?
Now I'm using other way to get the initial T pose (joint rotation) as the init_pose, and every time I use the same set of rotation matrix as input.

yes, all joint rotations are identities in T-pose.

Please note that the init pose is only fed to the network once (at the beginning). For the following frames, you should use the hidden states already stored in the RNNs (rather than reset them by the MLP).

TowoC commented

Yes, thanks for reminding.
Another small question, in the real-time inference, the function "dynamics_optimizer.reset_states()" should be not use right?
I annotate it in the first, and the system running speed is about 60fps, but after I use the function, the speed get slower to 30 fps.
I think not to use the function (annotate it) is right.
Can you give some advise? Thanks.

you don't need to use this function since this is automatically called in init

Then how do I get the data of T-Pose(1/24/3/3)?

One of the inputs to the network is “imu_acc” in the DIP-IMU dataset, so what is the unit of this data? The unit of acceleration I read through my own sensor is "g".

Then how do I get the data of T-Pose(1/24/3/3)?

Tpose means all rotation matrices are identity I3x3

One of the inputs to the network is “imu_acc” in the DIP-IMU dataset, so what is the unit of this data? The unit of acceleration I read through my own sensor is "g".

m/s^2, rescale by acc_scale