• AMCL论文及源码解析--参数(持续更新中)


    整理内容来自:http://wiki.ros.org/amcl

    1、AMCL订阅的节点:

    scan (sensor_msgs/LaserScan):激光数据

    tf (tf/tfMessage):各种转移矩阵,如laser_scan->base_link;base_link->odom

    initialpose (geometry_msgs/PoseWithCovarianceStamped):初始位姿

    map (nav_msgs/OccupancyGrid):栅格地图

    2、发布的节点:

    amcl_pose (geometry_msgs/PoseWithCovarianceStamped):amcl算法估计出来的位姿

    particlecloud (geometry_msgs/PoseArray):粒子点云,用于rviz可视化显示

    tf (tf/tfMessage):这里发布的是odom->map的转移矩阵,通过base_link->map和base_odom求得的

    3、主要参数

    (1)全局滤波参数

    ~min_particles (int, default: 100):最小粒子数

    ~max_particles (int, default: 5000):最大粒子数

    ~kld_err (double, default: 0.01)、~kld_z (double, default: 0.99):KLD算法的两个误差评估参数,kdl_err是真实分布和估计分布之间的KL散度最大误差,表征两个分布的接近程度;两个参数选默认值即可

    ~update_min_d (double, default: 0.2 meters):运动超过0.2米时,更新粒子

    ~update_min_a (double, default: π/6.0 radians):旋转角度超过30°,更新粒子

    ~resample_interval (int, default: 2):重采样间隔

    ~recovery_alpha_slow (double, default: 0.0 (disabled))

    ~recovery_alpha_fast (double, default: 0.0 (disabled)):机器人被绑架,重新恢复时的粒子最快衰减率(参考Argument_MCL)

    ~initial_pose_x (double, default: 0.0 meters)

    ~initial_pose_y (double, default: 0.0 meters)

    ~initial_pose_a (double, default: 0.0 radians):初始位姿(x,y,theta)

    ~initial_cov_xx (double, default: 0.5*0.5 meters)

    ~initial_cov_yy (double, default: 0.5*0.5 meters)

    ~initial_cov_aa (double, default: (π/12)*(π/12) radian):初始位姿协方差,使粒子均匀围绕初始点

    (2)激光模型参数

    ~laser_min_range (double, default: -1.0):激光最小角度范围

    ~laser_max_range (double, default: -1.0)

    ~laser_max_beams (int, default: 30):滤波器观测更新时,最大的激光束间隔

    ~laser_z_hit (double, default: 0.95):高斯噪声模型参数

    ~laser_z_short (double, default: 0.1):意外对象(人的干扰)噪声模型,呈指数分布

    ~laser_z_max (double, default: 0.05):激光失效噪声模型

    ~laser_z_rand (double, default: 0.05):随机测量噪声模型

    ~laser_sigma_hit (double, default: 0.2 meters):方差

    ~laser_lambda_short (double, default: 0.1):意外对象噪声模型的系数

    ~laser_likelihood_max_dist (double, default: 2.0 meters):这个参数和运动膨胀有关

    ~laser_model_type (string, default: "likelihood_field"):激光观测模型

    (3)里程计参数(参考博客:https://blog.csdn.net/qq_29796781/article/details/80001355)

    ~odom_model_type (string, default: "diff"):里程计模型,可选 "diff""omni""diff-corrected" or "omni-corrected".

            diff:2轮差分    omni:全向轮   y方向有速度

    ~odom_alpha1 (double, default: 0.2):转角分量的运动噪声  增大该值,机器人发生有旋转运动时,就会出现扇形噪声粒子云

    ~odom_alpha2 (double, default: 0.2):横向分量运动噪声,噪声在机器人左右两边分布

    ~odom_alpha3 (double, default: 0.2):纵向分量运动噪声,沿着机器人前进方向分布

    ~odom_alpha4 (double, default: 0.2): 斜角方向上的运动噪声

    ~odom_alpha5(double, default: 0.2):第五个参数 对于 2轮差分diff 里程计模型无用,可忽略  该参数只对全向运动模型有用

     ~odom_frame_id (string, default: "odom"):里程计坐标系

    ~base_frame_id (string, default: "base_link"):机器人坐标系

    ~global_frame_id (string, default: "map"):世界坐标系

    ~tf_broadcast (bool, default: true):默认开启,表示发布出里程计到世界坐标系下的tf转换

    注:参数 odom_alpha1~odom_alpha4里程计运动模型噪声 根据实际模型的精度情况来设定

    4、转移矩阵示意图

    理想情况下,里程计坐标系和世界坐标系是重合的,但是因为传感器有噪声或者机器人车轮打滑或被搬移,里程计坐标系和世界坐标系有了偏差,AMCL可以估计这个偏差量。

    5、完整tf树

    当amcl节点未启动时,odom->map的信息是没有的,laser_scan到map的数据也是没有的(定位数据),tf树不完整。

    更新:

    amcl参数dynamic_reconfigure,动态参数可配置

    在运行amcl节点后, rosrun rqt_reconfigure rqt_reconfigure,有gui的界面配置参数,调参

    里程计初始坐标,是机器人上电后的坐标,和建图的时候一致

    意外对象(人的干扰)概率模型

  • 相关阅读:
    [Git]08 如何自动补全命令
    [Git]06 如何提交空目录
    [Git]05 如何使用分支
    [Git]04 如何使用标签
    [Git]03 如何查看提交历史
    29、前端知识点--sessioncookie oken
    28、前端知识点--跨域问题
    26、前端知识点--利用webpack搭建脚手架一套完整流程
    25、前端知识点--webpack篇之面试考点
    24、前端知识点--数组的合并
  • 原文地址:https://www.cnblogs.com/havain/p/11742254.html
Copyright © 2020-2023  润新知