将加速度计数据转换为对象空间

时间:2018-10-09 06:15:09

标签: math accelerometer

对于上下文:我正在开发一个内置有加速度计的嵌入式系统。此设备已连接至智能手机并传输数据(包括加速度计值)。现在,该设备可以以任何方向连接到车辆/自行车/ ...

问题:当我从设备接收到加速度计数据时,我想将其转换为“车辆空间”。我到目前为止所发现的是需要的:

  • 在“设备空间”(基本上是重力)中的指向下的矢量
  • “设备空间”中的前向矢量(指向车辆的前向方向)

我在应用程序中同时计算了这两个向量,但是现在我对数学/实现部分有些困惑。

我发现可能是一种解决方案的是Change of Basis,但是我没能

  • 确认此的实现方式
  • 如何使用代码/伪代码

我不想为这样的“小”任务包括一个繁琐的数学库,而是希望自己理解它背后的数学。


我脑海中的当前解决方案是基于我对大学数学的长期记忆,我没有以下证据:(伪代码)

val nfv = normalize(forwardVector)
val ndv = normalize(downwardVector)

val fxd = cross(nfv, ndv)
val rotationMatrix = (
    m11: fxd.x, m12: fxd.y, m13: fxd.z, 
    m21: ndv.x, m22: ndv.y, m23: ndv.z, 
    m31: nfv.x, m32: nfv.y, m33: nfv.z
)

// Then for each "incoming" vector
val transformedVector = rawVector * rotationMatrix

问题:这是正确的方法吗?

0 个答案:

没有答案