vondrak滤波器

    这个玩意一度让我欣喜若狂,因为在某些时候,它确实表现的非常好。其实搜搜网络,相关资料并不太多,不过也是个简单的东西。说起来,就是利用一堆历史数据,拟合一个多项式,然后拟合的过程中兼顾拟合度和平滑度,这个兼顾程度是由开发者来控制的。然后,根据最小二乘法,就可以算出一组权重系数coef。如果是利用k点(当前点和历史k-1点)进行拟合,则可以得到对当前点进行平滑处理的一组coef,然后当前点的滤波处理为:Pnew = Data(1->k).*coef。

    这个coef与数据无关,只要确定数据点数k,拟合曲线次数n,以及拟合度,平滑度参数的平衡参数r,就有个固定的公式直接算出coef,很简单吧?呵呵。然后,直接点乘就得到平滑后的当前点。

    有文章把这个玩意说成是0相移的滤波器。不过-----只是当目标的运动轨迹为直线时才成立。当轨迹变化剧烈时,如直行过程中突然转弯,这时候滤波结果必然来不及转,而是延原来的方向继续走一点然后才调整到新的方向,想象一下,如果小车连续转弯,出来的轨迹会失真成什么样子。

    其实可以理解,毕竟这个搞法的实质是利用一堆数据拟合曲线,你本来是拟合直线的,但真实轨迹可能是2次曲线,这能成吗?到底怎么才能完全适应实际的情况呢?也许能根据速度实时判断用几次曲线拟合才比较好,而且事先在系统里保存多组不同阶次曲线的coef?带来的问题是,当前周期用的是k次曲线平滑,下一次用的 是k+m次曲线平滑,两次输出之间会不会产生跳变从而还是不平滑???

      很是伤脑子啊。。


你可能感兴趣的:(轨迹平滑)