我正在尝试使用加速度计检测安卓设备的运动方向。我已经从加速度计输出值中删除了重力分量并扣除了角度。
所以我能够得到运动的方向,但我也能瞬间得到任意角度。就像我停止移动设备一样。
有什么建议可以过滤掉这些角度吗?
编辑:我已经能够通过取当前值和过去值的平均值来解决这个问题。另一个持续存在的问题是,在最初的几分钟内,加速度计会报告相反运动方向的值。
我正在尝试使用加速度计检测安卓设备的运动方向。我已经从加速度计输出值中删除了重力分量并扣除了角度。
所以我能够得到运动的方向,但我也能瞬间得到任意角度。就像我停止移动设备一样。
有什么建议可以过滤掉这些角度吗?
编辑:我已经能够通过取当前值和过去值的平均值来解决这个问题。另一个持续存在的问题是,在最初的几分钟内,加速度计会报告相反运动方向的值。
这是加速度计的典型问题......最初由于惯性等原因没有任何解决方案......但是您可以尝试使用某种“整数控制器”。
另一种可能的解决方案是检测加速度的突然变化并将它们解释为方向的变化,我的意思是,例如,如果你在 X 边缘 (Ax) 上有加速度。
while(1){
Ax = readAx();
if(changeSign(Ax)){ //From + to - or - to +.
//Do what ever you need, for example if sign is changed and keep on it then is that the mobilephone is been moved in the other direction. Else if it's acceleration is close to 0 it means that the device has stopped
}else{
//The device keep moving on the same direction.
}
}
随意发挥创意。管理解决方案的方法有很多种,具体取决于您的目标。
我希望它有所帮助。