单传感器测量后概率密度生成:MCL定位中Figure 3生成方法问询
单传感器扫描下MCL密度图(Figure 3)生成逻辑及概率密度计算
嘿,我来给你拆解一下那篇Robust MCL论文里Figure3的生成逻辑,还有单次传感器扫描后的概率密度怎么算——正好我对这个挺熟的:
一、Figure 3 的生成步骤
前提是你已经有预先建好的环境墙图(比如栅格地图,每个栅格标记是否是墙体/障碍物),以及单次传感器扫描数据(比如激光雷达输出的一系列角度-距离对,每个值对应传感器某个方向上测到的障碍物距离)。
这张图本质是MCL传感器更新阶段的粒子分布可视化,具体走这几步:
- 初始化候选粒子集
先生成大量粒子,每个粒子对应机器人的一个候选位姿(包含x坐标、y坐标、朝向角θ)。如果没有任何先验位置信息,粒子会均匀撒在地图里的可行区域(非墙的地方);如果有粗略的位置猜测,就把粒子集中在对应区域。 - 给每个粒子计算匹配权重
这是核心环节,权重直接体现这个粒子的位姿和真实传感器数据的匹配程度:- 对每个粒子的位姿,模拟传感器在该位置的扫描结果:根据墙图,从粒子的位置出发,沿着传感器每个角度的射线做碰撞检测,算出碰到第一面墙的距离——这就是这个粒子位姿下“应该测到”的扫描数据。
- 用传感器模型(比如激光雷达常用的波束模型,会考虑测量噪声、误检测、漏检测等误差),把模拟扫描数据和真实的传感器扫描数据做对比,算出的匹配度就是这个粒子的权重。匹配度越高,权重越大。
- 加权可视化粒子分布
Figure3就是粒子的加权热力图:要么把每个粒子的位置用色块标记,色块的亮度/透明度对应它的权重(权重越高越显眼);要么把地图栅格化,每个栅格的密度是落在里面的所有粒子的权重之和。这样亮区就是机器人最可能在的高概率区域,暗区则是低概率区域——也就是你看到的Figure3的样子。
二、单次传感器测量后的概率密度计算
概率密度是通过粒子的加权分布来表示的,具体操作是:
- 离散化概率表示
每个粒子的权重就是对应位姿的概率密度的离散近似,整个概率分布就是所有(位姿,权重)对的集合。 - 权重归一化
所有粒子的权重总和需要归一化为1,这样每个粒子的归一化权重就代表该位姿的概率密度占比。公式很简单:
这里w_i' = w_i / Σ(w_j)w_i是第i个粒子的原始匹配权重,Σ(w_j)是所有粒子的原始权重之和,w_i'就是归一化后的概率密度权重。 - 连续密度近似(可选)
如果需要得到连续的概率密度函数,可以用核密度估计(KDE):把每个粒子当成高斯核函数的中心,用归一化后的权重作为核函数的系数,叠加所有核函数就能得到平滑的连续密度分布。
举个直观的例子:假设你有1000个粒子,其中200个落在某个1m×1m的小区域,这些粒子的归一化权重总和是0.3,那这个区域的概率密度就是0.3 / 1m² = 0.3 m⁻²,代表机器人在这个区域的概率密度值。
内容的提问来源于stack exchange,提问作者hsiaomichiu
相关产品推荐
相关产品推荐

