我目前正在蒙特卡洛定位(MCL)中评估不同的绑架机器人问题检测方法。到目前为止,我使用ROS amcl作为本地化方法。这样做的问题是,这种方法对我来说尝试我的论文有点聪明。当我在凉亭中拿起机器人时,就会发布凉亭/set_model_state 消息。粒子的粒子在地图上均匀地重新分布。我认为这与 AMCL 的 KLD 采样有关。
我希望过程如下
- 启动 Gazebo 3d 模拟环境
- 启动 amcl 节点
- 启动带有导航目标的自定义脚本以使粒子收敛
- 使用 gazebo/set_model_state 将机器人传送到新位置
- 为机器人设置新的导航目标(这是在它被绑架之后只是为了让它移动)
- 让检测方法检测到发生绑架事件
和问题
- 当 Gazebo/set_model_state 被调用时(Ergo 绑架发生)。粒子在地图上均匀分布,导致全局定位过程重新启动
随着这种情况的发生,我无法公平地比较检测方法,因此我必须禁用此全局本地化才能再次发生。