<pre>网络资料学习与整合,并附加一些个人理解。
六轴传感器 = 三轴加速度 + 三轴陀螺仪
</pre>
1.加速度计
安卓端:
加速度计用于测量加速度。借助一个三轴加速度计可以测得一个固定平台相对地球表面的运动方向。如果平台朝某个方向做加速度运动,各个轴向加速度值会含有重力产生的加速度值,使得无法获得真正的加速度值。
- X轴的方向:沿着屏幕短边水平方向从左到右。
- Y轴的方向:从屏幕的左下角开始沿着屏幕的的垂直方向指向屏幕的顶端。
- Z轴的方向:当水平放置时,指向天空的方向。
加速度计
- 该数值包含重力加速度(垂直向下)的影响,单位:m/s^2。
- 将手机平放在桌面上,default(0, 0, 9.81)
- 将手机向左倾斜,x轴为正值。将手机向右倾斜,x轴为负值。
将手机向上倾斜,y轴为负值。将手机向下倾斜,y轴为正值。
Therefore, to measure the real acceleration of the device, the contribution of the force of gravity must be removed from the accelerometer data. This can be achieved by applying a high-pass filter. Conversely, a low-pass filter can be used to isolate the force of gravity. The following example shows how you can do this:
因此,为了测量装置的实际加速度,必须从加速度计数据中去除重力所做的贡献。这可以通过应用high-pass filter 来实现。相反,可以使用a low-pass filter 来隔离重力。
public void onSensorChanged(SensorEvent event){
// In this example, alpha is calculated as t / (t + dT),
// where t is the low-pass filter's time-constant and
// dT is the event delivery rate.
final float alpha = 0.8;
// Isolate the force of gravity with the low-pass filter.
gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
// Remove the gravity contribution with the high-pass filter.
linear_acceleration[0] = event.values[0] - gravity[0];
linear_acceleration[1] = event.values[1] - gravity[1];
linear_acceleration[2] = event.values[2] - gravity[2];
}
芯片端:
可能使用的处理操作:滤波(去除重力加速度的贡献)、峰谷检测(受力点加速度值达到最高)。
加速度计检测到得力的方向与它本身加速度的方向是相反的。
手环计步:
人体走路时加速度呈现周期性的变化,记录波峰以及波谷的次数。即人们走一步,重心一次向上,一次向下,记录为一步。
2. 三轴陀螺仪
- 陀螺仪的每个通道检测一个轴的旋转。