随着人工智能技术的多元化快速发展,各种智能场景应用不断涌出,“motion detect”作为最有效而直接的空间信息感知单元,在人工智能应用场景中也被赋予了非常重要的角色。九轴姿态传感器,包括了加速度计、陀螺仪和磁力计,为“motion detect”提供了必需的传感数据。本篇主要讲述九轴姿态传感器中的加速度计部分。
受地心引力的影响,物体都有一个重力加速度,大家应该都知道它的值是1g=9.8米/秒^2。关于这个单位,简单的用公式介绍一下,如果一个物体在t秒时间内速度从v1米/秒加速到v2米/秒,则这个物体的加速度a是多少,计算为a=(v2-v1)/t,所以a的单位是(米/秒)/秒,为米/秒^2。对于一个数学概念上的点的重力加速度,只有空间位置,而没有方向,不过对于一个具有立体形状的物体的重力加速度,会有x/y/z三轴方向性,九轴传感器里面的加速度计就是指对x/y/z的三轴加速度感知。
如图1所示,加速度传感器的输出包括xout表示x轴的传感数据分量,yout表示y轴的传感数据分量,zout表示z轴的传感数据分量,如果xout/yout/zout分别是加速度矢量v在x/y/z三轴的投影,则根据图示里面的三维空间的勾股定理,我们可以得出
“v^2 = xout^2 + yout^2 + zout^2”(长方体:对角线^2 = 长^2 + 宽^2 + 高^2)
如果物体此时只受重力影响,我们就可以根据以上数据得出物体在x/y/z轴上面的倾斜角度了,假设三轴对应的倾斜角分别是ax/ay/az,则根据直角三角形的斜边公式“cos(a)=(∠a的)邻边/斜边”可以得出
cos(ax) = xout / v 对应的 ax = arcos(xout / v)
cos(ay) = yout / v 对应的 ay = arcos(yout / v)
cos(az) = zout / v 对应的 az = arcos(zout / v)
图1
以上内容是基于数字传感器的数据处理,而有时候我们会选择模拟传感器,如图2所示,对于模拟传感器我们需要对adc数据进行前期处理才能得到对应的xout/yout/zout。图2中所示为12位adc模块,所以其输出值最大为2^12-1=4095,我们可以根据以下公式得出xout/yout/zout的值。
xout = ((adcx/4095) * vref – v0g) / sens
yout = ((adcy/4095) * vref – v0g) / sens
zout = ((adcz/4095) * vref – v0g) / sens
其中等式中的adcx/adcy/adcz为adc输出值,vref为参考电压,v0g为零加速度电压值,sens为加速度计的灵敏度(即单位重力发生变化后引起的电压变化值)。如此,得到xout/yout/zout的值后即可参考前面内容计算物体倾斜角。
图2