移动机器人的蒙特卡罗定位

Posted

技术标签:

【中文标题】移动机器人的蒙特卡罗定位【英文标题】:Monte-Carlo localization for mobile-robot 【发布时间】:2014-01-21 04:22:58 【问题描述】:

我正在为我的机器人实施 Monte-Carlo 定位,该机器人获得了环境地图及其起始位置和方向。我的做法如下:

    在给定位置周围均匀创建 500 个粒子 然后在每一步: 使用里程计更新所有粒子的运动(我目前的方法是 newX=oldX+ odometryX(1+standardGaussianRandom) 等) 使用声纳数据为每个粒子分配权重(公式适用于每个传感器概率*=gaussianPDF(realReading),其中高斯具有平均预测读数) 返回概率最大的粒子作为这一步的位置 然后根据权重从旧粒子中重新采样 9/10 的新粒子,并在预测位置周围均匀采样 1/10

现在,我为机器人的环境编写了一个模拟器,这是本地化的行为方式:http://www.youtube.com/watch?v=q7q3cqktwZI

我很害怕机器人在更长的时间内可能会迷路。如果将粒子添加到更大的区域,机器人更容易迷路。

我期待更好的表现。有什么建议吗?

【问题讨论】:

请不要在multiple stack exchange sites 上问同样的问题。如果您不小心在错误的站点上询问,可以将其迁移到正确的站点。 将其迁移到机器人技术 【参考方案1】:

最大的错误是你假设权重最高的粒子是你的后验状态。这不符合粒子滤波器的主要思想。

您使用里程计读数更新的粒子集是您的建议分布。通过仅考虑具有最高权重的粒子,您完全忽略了这种分布。如果你只是在整个状态空间中随机散布粒子,然后取一个能最好地解释声纳数据的粒子,那也是一样的。您只依赖声纳读数,并且由于声纳数据非常嘈杂,您的估计非常糟糕。更好的方法是为每个粒子分配一个权重,对权重进行归一化,将每个粒子状态乘以其权重并将它们相加以获得您的后验状态。

对于您的重新采样步骤,我建议删除预测状态周围的随机样本,因为它们会破坏您的提案分布。生成随机样本以从故障中恢复是合法的,但这些样本应该分布在整个状态空间中,并且明确地不在您当前的预测周围。

【讨论】:

您好!你能看看我的问题和答案吗? robotics.stackexchange.com/questions/11685/…

以上是关于移动机器人的蒙特卡罗定位的主要内容,如果未能解决你的问题,请参考以下文章

(转)ROS导航之参数配置和自适应蒙特卡罗定位

移动机器人学习笔记-定位问题

移动机器人是如何实现自主定位与导航的?

基于可见光通信的移动机器人室内定位及物联网应用

移动机器人+机械手臂+视觉定位抓取物料

移动机器人+机械手臂+视觉定位抓取物料