amcl

AMCL是机器人在二维移动过程中概率定位系统。它应用自适应的蒙特卡洛定位方式(或者KLD采样),采用微粒过滤器来跟踪已知地图中机器人的位姿。

1.算法

许多算法和参数在概率机器人的书中很好的被描述。建议用户查看更多的细节。特别是,我们使用以下的算法: sample_motion_model_odometry, beam_range_finder_model, likelihood_field_range_finder_model, Augmented_MCL, and KLD_Sampling_MCL。

目前所实施的,这个节点只和激光扫描和激光地图工作。它可以被扩展应用与其他的激光数据工作。

2.举例

在base_scan的topic上利用激光数据来定位:

amcl scan:=base_scan

3.节点

AMCL需要基于激光的地图/激光扫描/TF转换,并且输出位置估计。在启动时,AMCL根据所提供的参数来初始化它的颗粒过滤器。由于默认原因,如果没有参数设置,初始过滤状态以一个中等大小的粒子云为中心(0,0,0)。

三种类型的ROS参数可以用来配置AMCL节点整体滤波器激光模式,odometery模型

3.1.6Transforms

AMCL将传入的激光扫描数据转为里程计结构(odom_frame_id)。因此,必须存在从激光发布到里程计的tf树转换。

实现细节:在接收第一个激光扫描,AMCL查找激光结构和base计结构的TF转换,并且锁存。所以AMCL不能处理激光于base相对移动的情况。

下面的图片显示用里程计和AMCL定位的不同之处。在操作过程中,AMCL估计base结构相当于global结构TF转换,但是,它只是放global和里程计之间的TF转换。从本质上,这种转换利用航位推算来处理漂移,所发布的转换是远期的。

amcl_第1张图片

Odometry Location -- 只是通过里程计的数据来处理/base和/odom之间的TF转换;

AMCL  Map Location -- 查找/base和激光的TF。/base通过/odom在/map中行走,机器人根据已知激光数据,估计/base相对于相对于/global的TF,那么我们可以知道/map和/base之间的TF,从而估计位置。

你可能感兴趣的:(amcl)