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的界面配置参数,调参
里程计初始坐标,是机器人上电后的坐标,和建图的时候一致
意外对象(人的干扰)概率模型
AMCL论文及源码解析--参数(持续更新中)的更多相关文章
- jQuery源码分析学习--资料收集--更新中
1.逐行分析jQuery源码的奥秘 - 网易云课堂 http://study.163.com/course/courseMain.htm?courseId=465001#/courseDetail? ...
- Neural Style论文笔记+源码解析
引言 前面在Ubuntu16.04+GTX1080配置TensorFlow并实现图像风格转换中介绍了TensorFlow的配置过程,以及运用TensorFlow实现图像风格转换,主要是使用了文章A N ...
- Spring IOC 源码解析(持续)
如何查看源码 Spring源码下载https://github.com/spring-projects/spring-framework/tags?after=v3.1.0.RC1 eclipse关联 ...
- 【 js 基础 】【 源码学习 】源码设计 (持续更新)
学习源码,除了学习对一些方法的更加聪明的代码实现,同时也要学习源码的设计,把握整体的架构.(推荐对源码有一定熟悉了之后,再看这篇文章) 目录结构:第一部分:zepto 设计分析第二部分:undersc ...
- Telegram Android源码问题汇总 持续更新
libtgvoip目录为空 git clone下来的工程中带有submodule时,submodule的内容没有下载下来,执行如下命令 cd Telegram git submodule update ...
- Sqli-labs-master通关解析(持续更新中。。。)
大多情况下:SQL注入其实就是构造正确的mysql命令,让网页回显本不应该让我们看到的数据(如用户的账号和密码). 第一关-联合查询注入 查库 // 查看当前页面在的数据库 ?id=-1' union ...
- [源码解析] PyTorch 分布式(15) --- 使用分布式 RPC 框架实现参数服务器
[源码解析] PyTorch 分布式(15) --- 使用分布式 RPC 框架实现参数服务器 目录 [源码解析] PyTorch 分布式(15) --- 使用分布式 RPC 框架实现参数服务器 0x0 ...
- [源码解析] PyTorch 分布式(10)------DistributedDataParallel 之 Reducer静态架构
[源码解析] PyTorch 分布式(10)------DistributedDataParallel之Reducer静态架构 目录 [源码解析] PyTorch 分布式(10)------Distr ...
- [源码解析] PyTorch 分布式(11) ----- DistributedDataParallel 之 构建Reducer
[源码解析] PyTorch 分布式(11) ----- DistributedDataParallel 之 构建Reducer 目录 [源码解析] PyTorch 分布式(11) ----- Dis ...
随机推荐
- 惊讶!缓存刚Put再Get居然获取不到?
最近一直在老家远程办公,微信突然响了下,有同事说遇到了一个奇怪的问题,让我帮忙看下. 现象就是标题所说的缓存获取不到的问题,我一听感觉这个问题挺有意思的,决定一探究竟. 下面给出部分代码还原下案发现场 ...
- Lambda如何实现条件去重distinct List,如何实现条件分组groupBy List
条件去重 我们知道, Java8 lambda自带的去重为 distinct 方法, 但是只能过滤整体对象, 不能实现对象里的某个值进行判定去重, 比如: List<Integer> nu ...
- bootstrap--font-face问题
在做仿天猫项目时,预期 已经用cdn加载bootstrap,但是不显示文字图标:实际情况: 发现是引用bootstrap的版本导致的.4.0.0版本及以后的css源码中找不到@font-face.可以 ...
- pyHamcrest
概念 Hamcrest是用于编写匹配器对象的框架.他提供了一套匹配符Matcher,这些匹配符更接近自然语言,可读性高,更加灵活.Hamcrest还有很好的可扩展性,能够创建自定义的匹配器. 支持语言 ...
- C语言:字符串拷贝(截取)、查找
C语言:字符串拷贝(截取).查找 很惭愧,学了这么久别的语言,一直没有好好学C和C++,所以现在开始认真C/C++的一些特性和比较,这里记录下C语言拷贝和截取的一些方式,由于系统库带的函数不方便,所以 ...
- cesium结合geoserver利用WFS服务实现图层新增(附源码下载)
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...
- python+selenium自动化测试,浏览器最大化报错解决方法
此处以谷歌浏览器为例 [问题1]缺少chrome驱动,webdriver调用谷歌浏览器的时候就报错了,如下图: [原因分析]缺少谷歌驱动程序 [解决办法] 1.查看本地安装chrome浏览器版本 2. ...
- Zookeeper机制
顾名思义 zookeeper 就是动物园管理员,他是用来管 hadoop(大象).Hive(蜜蜂).pig(小 猪)的管理员, Apache Hbase 和 Apache Solr 的分布式集群都用到 ...
- github无法访问的解决实践
无废话版: ----------------------------- 1.复制下面内容,添加到hosts文件里(C:\Windows\System32\drivers\etc)不能修改的话,则把文件 ...
- Python常用模块sys,os,time,random功能与用法,新手备学。
这篇文章主要介绍了Python常用模块sys,os,time,random功能与用法,结合实例形式分析了Python模块sys,os,time,random功能.原理.相关模块函数.使用技巧与操作注意 ...