我正在尝试使用加速度计检测Android设备的运动方向。我从加速度计输出值中删除了重力分量并扣除了角度。
所以我能够获得运动的方向,但我也会瞬间获得任意角度。就像我停止移动设备一样。
有关如何过滤这些角度的任何建议吗?
编辑:我有点能够通过获取当前和过去值的平均值来解决这个问题。 另一个持续存在的问题是,最初的一段时间内,加速度计会以相反的运动方向报告值。
答案 0 :(得分:0)
这是加速度计的典型问题......最初由于惯性等原因没有任何解决方案......但你可以尝试使用某种“整数控制器”。
另一种可能的解决方案是检测加速度的突然变化并将它们解释为方向的变化,我的意思是,例如,如果你在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.
}
}
随意发挥创意。管理解决方案的方法有很多,取决于您的目标。
我希望它有所帮助。