三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

[具身智能-766]:机器人在运动过程中需要实时定位,AMCL 每一次都需要全局撒粒子重搜吗?还是一旦定位后,后续的移动过程中,只需要局部匹配?

[具身智能-766]:机器人在运动过程中需要实时定位,AMCL 每一次都需要全局撒粒子重搜吗?还是一旦定位后,后续的移动过程中,只需要局部匹配?

直白结论

完全不需要每次全局撒粒子重搜定位成功稳定后,机器人全程只做局部小范围匹配,只有丢位置、被挪动时,才会重新全局撒粒子搜索。

一、分两种状态

1. 正常行走(已定位成功)

  1. 粒子只聚集在机器人真实位置周边很小一片区域
  2. 机器人往前走、转弯,粒子跟着里程计小范围同步移动
  3. 雷达只在粒子聚集的局部区域环境匹配打分
  4. 重采样也只在当前附近微调粒子,绝不扩散到全地图
  5. 优点:速度极快、算力极低、定位丝滑不卡顿。

2. 丢失定位 / 被人为抱走(绑架场景)

机器人发现周围雷达环境和所有粒子全都对不上,判定定位失效:

  1. 立刻清空局部聚集粒子
  2. 重新在整张地图全局随机撒满粒子
  3. 再次从头开始观测匹配、慢慢收敛找回位置
  4. 定位稳住后,再次切回局部匹配模式

二、AMCL 日常真实运行逻辑

  1. 开机初始化全局撒粒子 → 全局匹配 → 收敛定位
  2. 正常运动:锁定小范围 → 局部粒子跟随移动 + 局部环境匹配
  3. 短暂遮挡、路人经过:依旧局部微调,不会全局重搜
  4. 长时间环境不符、机器人被挪动触发全局重撒粒子重定位

三、通俗举例

你在商场已经确定自己在电梯口:

  • 正常走路逛店铺:你只盯着身边附近区域认路,不用把整个商场全部复盘一遍(局部匹配
  • 突然被人蒙眼带到商场另一头:你彻底迷路,只能重新全盘猜测所有位置(全局撒粒子重搜

四、精简总结

  • 定位稳定行走:全程局部匹配,粒子就近跟着走
  • 只有迷路、移位、定位丢失:才会全局撒粒子重新搜索
  • NAV2 导航 99% 运行时间,都只用局部定位,极少全局重搜。
← 返回列表