Closed deckerjulian closed 8 months ago
Can you send me a video of your result? yixy20@mails.tsinghua.edu.cn
Hey, thanks for your fast Response, of course!
https://github.com/Xinyu-Yi/TransPose/assets/10848788/80797453-6c76-4688-af9e-1961992e8443
From the video, it seems that the calibration is performed correctly. I think you can check the following things: 1) The unit of acceleration should be m/s^2, not g. You should not modify acc_scale/vel_scale in any case. 2) The accelerations should be expressed in the M frame (the same as the reference frame of the rotation RMB). Note that many sensors give accelerations in the sensor frame. You need to transform it to the global frame and remove g (9.8) from the measurement. 3) Input imu in 60 fps.
If the codes run correctly, the results should be better than your video. Please also check: is the orientation measurement of the IMUs changing? It seems from the video that the orientation measurements of the arms are not changing. Are you waving your arms during walking?
Hey, thanks for your fast response.
input('Put imu 1 aligned with your body reference frame (x = Left, y = Up, z = Forward) and then press any key.')
print('Keep for 3 seconds ...', end='')
oris = imu_set.get_mean_measurement_of_n_second(num_seconds=3, buffer_len=200)[0][0]
smpl2imu = quaternion_to_rotation_matrix(oris).view(3, 3).t()
input('\tFinish.\nWear all imus correctly and press any key.')
for i in range(3, 0, -1):
print('\rStand straight in T-pose and be ready. The celebration will begin after %d seconds.' % i, end='')
time.sleep(1)
print('\rStand straight in T-pose. Keep the pose for 3 seconds ...', end='')
oris, accs = imu_set.get_mean_measurement_of_n_second(num_seconds=3, buffer_len=200)
oris = quaternion_to_rotation_matrix(oris)
device2bone = smpl2imu.matmul(oris).transpose(1, 2).matmul(torch.eye(3))
acc_offsets = smpl2imu.matmul(accs.unsqueeze(-1)) # [num_imus, 3, 1], already in global inertial frame
In your code there's a code line in the buffer python self._acc_buffer = self._acc_buffer[tranc:] + [-d[:, 10:13].astype(float) * 9.8]
with a negativ acc. Is this needed?
Many Thanks for your reply.
I'm sorry, I have forgotten your question and replied late. If you still have any questions, you can directly reopen this issue and ask me here.
Dear Xinyu-Yi,
I am currently working on adapting your TransPose code for use with MobilityLab IMU sensors. While the initial T-Pose calibration appears successful, I'm encountering issues during movement, particularly with acceleration and orientation estimation.
Could this be related to the calibration method? I'm unsure about how to correctly set the 'acc_scale' variable for a different IMU system. This might be the root of the problem.
For your reference, the sensor placement strictly follows the guidelines outlined in your paper. The subject remains in a T-position for the first 30 seconds, ensuring the left forearm sensor is aligned with the reference frame (x = Left, y = Up, z = Forward).
I have attached the dataset recorded under these conditions for your review. Your insights or suggestions on how to resolve these issues would be greatly appreciated.
Thank you for your time and assistance.
Best regards,
Julian
The recorded Dataset: 20231113-140810-6_13112023_2.zip
The code which I'm using: