【问题标题】:Working with kinect (libfreenect) accelerometer data使用 kinect (libfreenect) 加速度计数据
【发布时间】:2012-08-20 14:00:10
【问题描述】:

我正在通过openFrameworksofxKinect 访问C++ 中的Kinect 加速度计,并且在某些角度上遇到了一些问题。如果我将 kinect 向下倾斜 90 度,我会得到 nan 值。我查看了getAccelPitch() 方法,这是有道理的,因为当值大于 9.80665 除以 10.1/9.80665 时,asin 将返回 0。

主要问题是在我将设备倾斜 90 度后,滚动似乎不可靠(似乎变化不大)。在我的设置中,我需要将设备倾斜 90 度,但也要知道它是新滚动的。

关于我如何做到这一点的任何提示,提示?有没有一种简单的方法来获取数据以用 3 条线(轴)绘制 kinect 的方向。

我正在尝试检测如下方向:

【问题讨论】:

  • 每分钟都有一个赞!

标签: c++ accelerometer kinect openframeworks ofxkinect


【解决方案1】:

问题在于您使用的是欧拉角(滚动、俯仰和偏航)。

欧拉角是邪恶的,它们会破坏应用程序的稳定性,请参见示例

他们也是not useful for interpolation

解决方案是使用旋转矩阵。

中提供了有关旋转矩阵的教程

Direction Cosine Matrix IMU: Theory

手稿。

【讨论】:

  • +1 感谢您提供的方便文献!我会仔细阅读,乍一看,这正是我所需要的。
  • 我不知道您正在使用的框架/库,但我猜它们实现了旋转矩阵,因此您可以随时使用必要的功能。祝你好运!
  • 正确,有 3x3 和 4x4 矩阵的实现,但我现在不知道如何插入加速度计值。我会再读一遍文档。设置有点不同,因为我没有使用来自 GPS 的额外数据,但也比论文中提出的设置更简单,因为我不需要担心离心力等。我错过了一些明显简单的东西吗?
  • @GeorgeProfenza 有两点。 (i) 4x4 矩阵很可能是 OpenGL 矩阵或类似的东西。无论您做什么,都应该保持 4x4 矩阵的第 4 行和第 4 列不变。它的前 3 行和前 3 列是旋转矩阵。我不知道您在做什么,也不知道您正在使用什么框架/库。所以我不能告诉你在那个实现中你需要什么,4x4 矩阵或 3x3 矩阵。
  • @GeorgeProfenza 如果您只有加速度计,那么您可以获得倾斜角度但不能获得旋转矩阵。想一想:仅使用加速度计无法检测绕垂直轴的旋转,它们对它们是不可见的。
猜你喜欢
  • 2018-04-14
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
  • 2011-09-28
  • 1970-01-01
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多