1

我正在构建一个基于倾斜的 Arduino 设备,一旦它以特定方向倾斜,就需要检测设备的“下降线”矢量。通过“fall-line”,我将使用以下示例:

想象一个中间有一个质点的无摩擦平面和一个安装在平面上的 3 轴加速度计,使加速度计的 x 轴和 y 轴平行于平面。静止时,平面是平的,质点不动。一旦飞机倾斜,点质量将在给定的重力加速度下沿特定方向移动。我需要计算质量将移动的 xy 平面中的角度以及与该方向上的加速度相对应的幅度测量。

我意识到这可能是简单的牛顿力学,但我不知道如何解决这个问题。

4

1 回答 1

1

“下降线”的方向和加速度的大小都由引力矢量在平面上的投影决定。如果平面具有法向量n,则投影算子为P ( n ) = 1 - nn,其中1是恒等算子,nn是法向量与自身的外(张量)积。引力矢量g的投影就是g ' = P ( n )。g = ( 1 - nn ) g = g- ( n . g ) n,其中点表示内(点)积。现在您只需要选择一个合适的正交参考系(ex , ey , ez),其中ei是沿i方向的单位向量。在此参考框架中:

n = nx ex + ny ey + nz ez
g = gx ex + gy ey + gz ez

点积ng是:

ñg = nx * gx + ny * gy + nz * gz

一个非常合适的参考系选择是ezn共线的参考系。那么 nx = 0 和 ny = 0 和 nz = || n || = 1,因为法线向量是单位长度的。在这个框架中ng就是 gz。那么g的投影的分量是:

g'x = gx
g'y = gy
g'z = 0

g ' 在 XY 平面上的方向可以由正交参考系中的点积a来确定。= || 一个|| || || cos( a , b ),其中 || 一个|| 表示 a 的范数(长度),cos( a , b ) 是ab之间夹角余弦值。如果从 X 方向测量角度,则:

'。ex = (gx ex + gy ey ) 。ex = gx = || '|| || || cos( g ', ex ) = g' cos( g ', ex )

其中 g' = || '|| = sqrt(gx^2 + gy^2)。角度就是 arccos(gx/g'),即重力牵引矢量的 X 分量与其投影到 XY 平面上的大小之间的比率的反余弦:

角度 = arccos[gx / sqrt(gx^2 + gy^2)]

加速度的大小与g '的大小成正比,即(再次):

g' = || '|| = sqrt(gx^2 + gy^2)

现在的好处是,所有加速度计都在参考框架中测量重力场的分量,通常ex与设备的高度(或宽度)对齐,ex与设备的宽度(或高度)对齐ez垂直于设备表面,与参考系完全匹配,其中ez与平面法线共线。如果您的 Arduino 设备不是这种情况,只需旋转加速度计并根据需要对齐即可。

于 2013-04-05T06:29:52.223 回答