Xinyu-Yi / TransPose

A real-time motion capture system that estimates poses and global translations using only 6 inertial measurement units
https://xinyu-yi.github.io/TransPose/
GNU General Public License v3.0
382 stars 75 forks source link

Some doubt while running with other imus #18

Closed DrakeWYH closed 2 years ago

DrakeWYH commented 2 years ago

您好,我在尝试使用其他传感器运行TransPose代码时,遇到一些问题,想请教一下。

我基于live_demo.py,将TCP接收诺亦腾数据部分改为接收自己的传感器数据,按照左手臂、右手臂、左腿、右腿、头、胯顺序,分别存入self._quat_buffer和self._acc_buffer中。其中,四元数是按照(w, x, y, z)顺序存放,加速度数据是经过处理去掉重力部分的数据。 后续代码基本没变,最后使用提供的U3D插件显示结果。 运行时,按照指示先将传感器按照x左y上z前摆放,再穿戴好做T-POSE(佩戴时传感器朝向和文章中的不一样)。

一开始显示的姿态异常,例如向前举手,模型手会绕一圈再举起来,我尝试将_read()中,加速度乘以-9.8的操作去掉后,姿态显示好了很多,但模型始终无法跳跃(地上行走ok),猜测是诺亦腾的加速度数据与我的传感器加速度数据不一致,或者我是否漏了一些处理操作,因此有以下几个问题:

1、是否可以提供一小段诺亦腾数据供参考数据的格式?(例如加速度数据是否含有重力部分) 2、_read()中为什么加速度要乘以-9.8? 3、TransPoseNet初始化中gravity_velocity=-0.018是如何计算得到的? 4、config.py中提供的acc_scale = 30和vel_scale = 3是如何计算得到的? 5、传感器佩戴方式是否有限制?如果有,方便提供一下传感器在佩戴时的轴向情况吗?

非常感谢!

Xinyu-Yi commented 2 years ago

我读到的数据是全局的加速度,一般传感器测得的加速度都是局部 sensor local 的,你需要把他变换到 global inertial frame 里。

  1. 目前我手里没有格式,你可以尝试查看example data
  2. 诺亦腾加速度单位是g
  3. 经验设置,你可以尝试不同的参数观察效果
  4. 训练时把加速度和速度归一化到-3~3左右用的标准差
  5. 没有限制。位置穿戴对即可
DrakeWYH commented 2 years ago

我读到的数据是全局的加速度,一般传感器测得的加速度都是局部 sensor local 的,你需要把他变换到 global inertial frame 里。

  1. 目前我手里没有格式,你可以尝试查看example data
  2. 诺亦腾加速度单位是g
  3. 经验设置,你可以尝试不同的参数观察效果
  4. 训练时把加速度和速度归一化到-3~3左右用的标准差
  5. 没有限制。位置穿戴对即可

好的,非常感谢!