ros - ROS AMCL - 在凉亭/set_model_state 之后停止粒子均匀地重新分布
问题描述
我目前正在蒙特卡洛定位(MCL)中评估不同的绑架机器人问题检测方法。到目前为止,我使用ROS amcl作为本地化方法。这样做的问题是,这种方法对我来说尝试我的论文有点聪明。当我在凉亭中拿起机器人时,就会发布凉亭/set_model_state 消息。粒子的粒子在地图上均匀地重新分布。我认为这与 AMCL 的 KLD 采样有关。
我希望过程如下
- 启动 Gazebo 3d 模拟环境
- 启动 amcl 节点
- 启动带有导航目标的自定义脚本以使粒子收敛
- 使用 gazebo/set_model_state 将机器人传送到新位置
- 为机器人设置新的导航目标(这是在它被绑架之后只是为了让它移动)
- 让检测方法检测到发生绑架事件
和问题
- 当 Gazebo/set_model_state 被调用时(Ergo 绑架发生)。粒子在地图上均匀分布,导致全局定位过程重新启动
随着这种情况的发生,我无法公平地比较检测方法,因此我必须禁用此全局本地化才能再次发生。
解决方案
推荐阅读
- c# - dotnet C# - 为什么 GC 不释放内存?
- javascript - 用于 Fb Messenger 批量删除的脚本不起作用
- java - 需要使用 AND 和 OR 运算符的 DetachedCriteria 查询
- javascript - 我如何从数组中列出并在 javascript 中添加图像的贪婪
- python-3.x - 进度条随列表长度更新
- reactjs - 如何防止我的弹簧(react-spring)在循环中重置初始值?
- python - 将图例放在子情节之外
- postgresql - 无法安装 PostgreSQL 9.6:取决于:libssl1.0.0 (>= 1.0.0) 但无法安装
- html - 如何使用包含自定义图标的 .woff glyps?
- flutter - 在 pubspec 中声明自定义字体时,weight 和 style 属性有什么用?