c++ - 使用 kinect (libfreenect) 加速度计数据

标签 c++ accelerometer kinect openframeworks ofxkinect

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

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

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

我正在尝试检测这样的方向: k1

k2

k3

k4

最佳答案

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

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

它们是 not useful for interpolation要么。

一个解决方案是改用旋转矩阵。

中给出了旋转矩阵的教程

Direction Cosine Matrix IMU: Theory

手稿。

关于c++ - 使用 kinect (libfreenect) 加速度计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12039105/

相关文章:

c++ - Gtkmm:如何暂停应用程序的执行并等待用户输入?

c++ 1D波函数错误输出(有限差异)

c++ - 在 libgcrypt 中用 Crypto++ 解密加密数据的步骤

android - 为什么加速度计与重力传感器的用电量不同?

java - OpenNni:颜色坐标到深度坐标

c++ - Directx11 Texture2D 格式

java - 使用 libgdx 允许横向选项和加速度计

algorithm - 使用单个旋转 kinect 的房间的 360 度 3D View

c# - XNA 3D 点云