AMCL中轮式里程计误差模型参数

用了很久的AMCL,也偶尔会思考odom_alpha1,odom_alpha2,odom_alpha3,odom_alpha4这些如何参数如何根据我们轮子的精度来给出理论上比较准的值,而不是凭借实验中调出来的值(总感觉不专业),因此这次决定好好理一理。

一.diff模型与diff-corrected区别


结论:diff-corrected模型才是《概率机器人》中里程模型的实现!!!强烈建议AMCL新用户直接使用diff-corrected模型,两个模型参数数量级完全不一样。

diff模型:pf_ran_gaussian()函数产生服从高斯分布值,注意参数为高斯分布的标准差(不是方差)。再看看图片括号里的参数是平方值像不像方差表达形式,于是矛盾产生了。

(当时本人看源码就是发现这点,所以也去github上找了相关问题)

在这里插入图片描述

diff-corrected模型:注意传给pf_ran_gaussian()函数的参数为是开根后,看起来是不是像标准差的表达式。想更详细了解的一些链接。

链接AMCL mixes units when sampling the gaussian distribution
链接Is AMCL’s implementation of the odometry model correct?

二.各个odom_alpha如何影响粒子的预测更新


先给出odom_alpha参数的字面意义,默认值看看就好。

diff123455566666666

1.odom_alpha3 考虑里程计只有位移累计误差,那么理论上AMCL中的里程计实现粒子预测更新应该只表现粒子整体纵向拉长(仿真走起)

在这里插入图片描述

 

第一张图初始生成的粒子,角度的误差给的很小,所以看起来像。