ROS的代价地图与AMCL定位原理
地图服务与AMCL定位
- costmap(代价地图)
- AMCL定位(自适应蒙特卡罗定位)
costmap(代价地图)
1.地图文件格式:除了pgm(便携式灰度图)外,还支持jpg、png等常用图片格式,还可以用画图工具修改或重画地图:
2.地图参数文件
3.地图膨胀
地图膨胀,为了保护小车以免遭受碰撞。红色是障碍物,蓝色是按照一定的半径膨胀出来的。代价地图就是要保证小车与障碍物不发生碰撞。
官方提供了三种碰撞情况:最严重的是小车中心与红色相交,一定会发生碰撞。第二是障碍物以小车的内切圆为半径膨胀,小车的中心也不能蓝色部分相交,否则也一定会发生碰撞。第三是障碍物以小车的外接圆为半径膨胀,这时小车中心与蓝色部分相交,有可能发生碰撞。
三层地图来组成代价地图,代价地图又分为全局代价地图和局部代价地图
4.恢复行为
当物体运动的导航路线受阻的时候,会触发这个插件的功能,来对导航路线进行调整,如果调整失败,会结束导航。
AMCL定位(自适应蒙特卡罗定位)
解决的问题是目前自己所处地图的位置,利用的是粒子滤波算法。
粒子滤波:初始化.计算权重.重采样.状态转移.
1.初始化
产生N个位置假设。(采样)随机分布,我们叫它们为粒子。
2.计算权重
通过传感器收集到的数据(一般是激光雷达),来估算每个粒子位置的可能性。对可能性较大的粒子位置赋比较大的权重
3.重采样
重新撒点,跟初始化不同的是每个位置撒点的可能性是不一样的,依照的是上一步权重。权重越大,可能性越高,重采样中的粒子也集中在这些地方。所以重采样的新粒子会出现在旧粒子权重大的地方。现在由于所有的粒子是新采样得到的,所以每个粒子又都是相同的权重了。
4.状态转移阶段
物体继续运动,粒子也跟着一起运动,再进行计算权重,重采样…
不断循环这个过程。
移动1
开始移动
移动2
开始集中
移动3
越来越集中
移动4
粒子集中在一团,然后就能估算出物体的实际位置。
ROS的代价地图与AMCL定位原理相关推荐
- 激光SLAM导航系列(三)Costmap(代价地图)(上)
Costmap(代价地图)(上) Costmap是机器人收集传感器信息建立和更新的二维或三维地图,可以从下图简要了解. 上图中,红色部分代表costmap中的障碍物,蓝色部分表示通过机器人内切圆半径膨 ...
- 第一章:costmap_2d代价地图生成原理
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 (1)[代价地图]costmap_2d功能包源码解读 (1)代价地图 ...
- ROS AMCL定位个人问题汇总
AMCL定位是现在在ROS中比较常用的定位方式之一,其具体的原理详见<概率机器人>第8章内容,这里只简单记录一下做AMCL过程中遇到的问题. 1.安装 安装不细讲,这里只提示一点,在安装a ...
- ROS导航小车0 代价地图(仅作个人记录)
前言 首先了解在导航堆中,move_base包与其它包(如amcl.map_server)的关系,如图所示 发布导航命令 rostopic pub /move_base_simple/goal geo ...
- ROS开源包之粒子滤波定位(AMCL)
虽然现在直接使用amcl定位的很少了,但是它是粒子滤波的典型应用,还是可以了解一下.查阅了很多解读,自己也总结一下,最后在gazebo仿真平台上看看粒子定位跑起来的效果. 0.源码介绍 源码地址: g ...
- Android百度地图(一):百度地图定位sdk 类方法参数、定位原理详细介绍
***转载.引用请标明出处*** http://www.jianshu.com/p/29ccac3e1e42 本文出自[zhh_happig的简书博客](http://www.jianshu.com/ ...
- ROS1云课→28机器人代价地图配置
ROS1云课→27机器人SLAM小结 在前面做的所有工作都成了现在项目的铺垫,而最大的乐趣也即将开始,这是赋予机器人生命的时刻. 后续学习以下内容: 应用程序包开发. 理解导航功能包集及其工作方式. ...
- AMCL算法原理讲解
ROS进阶教程(二)AMCL算法原理讲解 AMCL算法理解 蒙特卡洛定位算法 蒙特卡洛定位算法自适应变种 里程计运动模型 测距仪模型 波束模型 似然域模型 AMCL算法理解 AMCL(adaptive ...
- ROS笔记(24) Amcl
ROS笔记(24) Amcl 1. Amcl定位 2. amcl 3. 配置文件 4. 启动定位文件 5. 定位演示 1. Amcl定位 gmaping功能包生成地图,move_base功能包导航路径 ...
最新文章
- 远程开启目标计算机的远程桌面
- javascript之基本概念
- js解析顺序了解一下??
- 复选框怎么点td选中_jQuery点击tr实现checkbox选中的方法
- Python面向对象介绍
- django添加字典格式的数据
- 信号量优先级反转(翻转)与优先级继承
- 吃货的第一要诀 | 在马来西亚这么吃才爽!
- 110亿美金EOS都能瞬间归零,区块链谈何安全保障?
- linux dns服务无效,Linux下搭建DNS服务器及踩坑
- 定制问卷|表单收集系统-对接特殊接口(表单系统)
- NVIDIA驱动版本、Pytorch版本、Cuda版本三者之间对应的版本关系
- JasperReport:报表概述和模板制作
- 在n*n方阵里填入1,2,...n*n,要求填成蛇形
- Qt开发经验小技巧176-180
- 用 Python 制作商品历史价格查询
- word swag Android,Word Swag
- Python在cmd上打印彩色文字
- 论文笔记:Object Detection in 20 Years: A Surve(目标检测20年研究综述)
- chrome firefox 获取模拟微信浏览器
热门文章
- github推送Please make sure you have the correct access rights and the repository exists.
- Misc简单题目分享-CTF
- DCT变换在图像压缩中的实现
- kettle定时备份->mysql+mongoDB增量备份
- Android 集成Thinker 教程
- 伟景行Citymaker三维Gis加载FDB数据
- 什么是MES?MES系统有哪些功能?
- osgEarth示例分析——osgearth_features
- 【C语言】设计实现M*N矩阵和N*M矩阵相乘
- 一张图看懂梯度、散度、旋度、Jacobian、Hessian和Laplacian