我正在使用TYPE_MAGNETIC_FIELD / TYPE_ACCELEROMETER传感器基本上创建指南针。
我调用getRotationMatrix,然后重新映射CoordinateSystem(总是横向)到交换轴然后getOrientation然后我拿轴我需要当前索引0然后我调用到Decise然后我把它设为0-360范围
val =(val + 360)%360;
现在一切顺利,除了它有点波动,所以我去搜索上帝(谷歌)和查找低通滤波器分配,大多数不能很好地工作,但我发现一个几乎工作。
newval = oldVal + ALPHA *(newval- oldVal);
Alpha约为0.2-0.5
所以现在在180(旋转-180)它快速跳转到0然后它变为181(-179旋转)但如果我删除过滤器它不会这样做。
过滤器有什么问题,或者我该如何解决这个问题。
Android 2.2所以没有TYPE_LINEAR_ACCELERATION或TYPE_ORIENTATION(已弃用)
感谢
答案 0 :(得分:0)
问题是方向角是周期性的。 180度旋转与-180度相同(如所指出的)也与540度等相同。因此,虽然低通滤波器的算术不会改变,但您需要的数字字段必须定期给您好的答案。您将获得一个代表您的方向的旋转矩阵,这些矩阵构成了一个非常好的数字系统。因此,如果您对旋转矩阵执行所有滤波器算术,然后仅在最后一分钟转换为角度,则过滤器将正常工作。