概述
amcl是一种机器人二维运动的概率定位系统。它实现了自适应(或kld采样)蒙特卡罗定位方法(如Dieter Fox所述),该方法使用粒子过滤器跟踪机器人对已知地图的姿态。
1 算法
只适用于激光扫描
2 example
amcl scan:=base_scan
3 节点
3.1 amcl
3.1.1 订阅
scan (sensor_msgs/LaserScan)
tf (tf/tfMessage)
initialpose (geometry_msgs/PoseWithCovarianceStamped)
map (nav_msgs/OccupancyGrid)
3.1.2 发布主题
amcl_pose (geometry_msgs/PoseWithCovarianceStamped)
particlecloud (geometry_msgs/PoseArray)
tf (tf/tfMessage) 从odom到map
3.1.3 服务
static_map (nav_msgs/GetMap)
3.1.4 关键参数
use_map_topic (bool, default: false)
当true时,amcl将订阅map topic,而不是调用服务去获得地图。
~odom_frame_id (string, default: “odom”)
Which frame to use for odometry.
~base_frame_id (string, default: “base_link”)
Which frame to use for the robot base
~global_frame_id (string, default: “map”)
The name of the coordinate frame published by the localization system
与里程计定位的区别:
odometry:得到的是机器人base相对于odom(然而odom可能漂移)
acml:估计的是base坐标系关于全局map坐标系的,但是发布的是odom关于map的变换。