车辆动力学模型 | EpsilonJohn's Blog

AMCL深入解析 4/4 - 调参看这一篇就够了 - 知乎

差速轮模型

Navigation2之AMCL---model组件-CSDN博客
差分轮底盘模型 - Getone超 - 博客园
两轮差速驱动运动模型 - 知乎
差速轮,又称差分轮。

差分底盘机器人运动模型定义为如下的里程计模型:

运动三步走:旋转,前进,旋转。三个变量均包含有噪声,独立分布

为什么要两个旋转量呢?因为无论是“左轮定、右轮动”还是“右轮定、左轮动”,都可以实现差速轮底盘的旋转。而这两个动作显然是互相独立的

粒子滤波/MCL/AMCL根据里程计模型的运动信息来预测粒子位置,即sample_motion_model

0:Algorithm sample motion model odometry(ut,xt1姿):1:(x¯t1,x¯t)=ut; (x,y,θ)=xt1;(x,y,θ)=xt;2:δrot1=tan2(y¯y¯,x¯x¯)θ¯3:δtrans=(x¯x¯)2+(y¯y¯)24:δrot2=θθ¯δrot15:δ^rot1=δrot1sample(α1δrot12+α2δtrans2)6:δ^trans=δtranssample(α3δtrans2+α4δrot12+α4δrot22)7:δ^rot2=δrot2sample(α1δrot22+α2δtrans2)8:x=x+δ^transcos(θ+δ^rotl))9:y=y+δ^transsin(θ+δ^rotl)10:θ=θ+δ^rotl+δ^rot211:return xt=(x,y,θ)T
Question

这个,物理模型中的几何关系,是固定死的,或许应该定义在组合逻辑中,或者至少封装函数和结构体直接调用

假设测得参数,是真实参数加以高斯噪声所得到的,即sample的分布取高斯分布

δrot1 =δ^rot1 +N(0,α1δrot 12+α2δtrans 2)δtrans =δ^trans +N(0,α3δtrans 2+α4δrot 12+α4δrot 22)δrot2=δ^rot2+N(0,α1δrot22+α2δtrans2)

全向轮模型

运动四步走:旋转,前进,漂移。
增加一个参数,水平漂移量,合二为一了,旋转量。

这其实是有些笼统的。全向底盘,可以是麦克纳姆轮实现,也可以是福来轮实现,轮子的数量也不定,不同轮子之间的概率分布没有仔细考虑。

里程计模型和对应的sample_motion_model如下图所示:

里面有个α5参数,这也是大家一直困惑的一个参数,在Probabilistic robotics里也没有提到。

将对应的参数整理如下所示:

里程计模型参数 说明 默认值
robot_model_type 底盘模型,目前支持差分轮和全向轮。 “differential”
alpha1 α1,计算相对运动的旋转分量时,旋转分量噪声权重 0.2
alpha2 α2,计算相对运动的旋转分量时,平移分量噪声权重 0.2
alpha3 α3,计算相对运动的平移分量时,旋转分量噪声权重 0.2
alpha4 α4,计算相对运动的平移分量时,平移分量噪声权重 0.2
alpha5 α5,对于全向轮,平移分量垂直方向的噪声 0.2

差分轮用到了前四个参数,全向轮用到了所有5个参数。在实际调参过程中,如果编码器比较准,比如用的是工业级编码器,那么上述值都应设置的较小,否则应设置较大。另外差分轮相比舵轮而言,旋转分量噪声应更大,所以对应alpha值也会更大。

阿克曼模型

阿克曼转向原理解析-CSDN博客
里程计模型(2):阿克曼结构底盘_阿克曼底盘-CSDN博客

阿克曼,这个鬼名字,其实就是生活中的汽车,前轮转向,后轮驱动。