随着人工智能技术的多元化快速发展,各种智能场景应用不断涌出,“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
责任编辑:Ct