Karto_SLAM算法学习

一、代码下载地址
https://github.com/ros-perception/open_karto.git
https://github.com/ros-perception/slam_karto.git
代码分为两部分 :open_karto、slam_karto
采用通用的图 优化方法,Karto_SLAM是基于图优化的思想,用高度优化和非迭代 cholesky分解进行稀疏系统解耦作为解。图优化方法利用图的均值表示地图,每个节点表示机器人轨迹的一个位置点和传感器测量数据集,每个新节点加入,就会进行计算更新。

Karto_SLAM的ROS版本,其中采用的稀疏点调整(the Spare Pose Adjustment(SPA))与扫描匹配和闭环检测相关。landmark越多,内存需求越大,然而图优化方式相比其他方法在大环境下制图优势更大,因为他仅包含点的图(robot pose),求得位姿后再求map。

二、扫描匹配部分
兴趣区域:
匹配的方式是scanTomap,兴趣区域就是矩形形状的submap,也可以将这块区域理解为参考模型。

搜索区域:
以里程计估计的位置为中心的一个矩形区域,用以表示最终位置的可能范围,在匹配时,遍历搜索区域,获取响应值最高的位置。

查找表:
对于激光获得的数据信息,以一定的角分辨率和角偏移值进行投影,获取查找表,用以匹配。

Running-scans:
实时维护的局部激光数据链,首末两帧距离在一定距离范围内,且满足一定数据规模,否则需要删除末端数据帧。维护当前局部数据链

生成submap(因为匹配的方式是ScanToMap)

在这里插入图片描述
生成查找表:
查找表存在的意义就是相比于暴力匹配,不要每次都重新计算每个激光数据信息,相同角度不同位置的激光数据信息只需要被索引一次
由里程计预测可以得到当前预估的姿态角,真实的姿态角必定在附近;
以一定的分辨率和偏移值对原机器人坐标系下(局部坐标系)表示的激光信息进行不同角度的映射,获得一个包含n个角度的查找表。
其中:
查找表->submap(匹配)
移动机器人自身的状态包括(x,y,θ)(x,y,θ),通过查找表的方式有效解决了角度的问题,眼下仍需解决位置的问题,采用离散化搜索区域进行定位,并利用多分辨率提高搜索速度
响应值的计算如下描述:将查找表以一定的为宜投到submap上,此时的submap已有running-scans生成,并利用高斯进行模糊,假设总共有n个点被查找表击中,击中的每个点得分不同(高斯模糊的作用),累加得分并除以可以达到的最高得分

查找表->submap(粗匹配->精匹配)
为提高搜索效率,采用多分辨率的方式,即粗匹配时采用较低的分辨率搜索得到候选区域,再对候选区域进行划分得到精确求解。
计算节点均值
在每次匹配过程中(粗匹配和精匹配),选取几个拥有最优响应值的位姿状态,取平均值作为匹配结果。
最优响应值为一个,设立一个10^-6作为容忍度,一旦有其他位姿状态的响应值与最优响应值在容忍度内,即为相等;最终的节点为它们的平均值。
迭代:
粗匹配(获得均值)->(作为初值)精匹配(得到最终均值)

计算节点协方差——位置协方差(粗匹配)
2、添加顶点和边

添加顶点:即关键帧的位姿
添 加 边: 当前帧与前一帧、running-scans、near-chains建立连接。
在这里插入图片描述
添加边主要经过三个步骤:
1、Link to previsous scan

2、Link to Running scans
RunningScan chain:一定数量且距当前一定距离内的激光数据链。

3、Link to other near chains
NearChain: 以当前节点开始广度优先的方式从graph中遍历相邻的一定距离范围内所有节点,依据当前id从sensorManager中分别递增与递减寻找一定范围内的chain, 生成nearLinkScans.
前两个步骤都好理解,主要是第三个,以当前节点为搜索中心,以一定范围(比如说4m)进行广度搜索,得到了所有关联的节点,然后利用节点生成数据链(数据链需要包含约5个ID连续的关键帧)(不包括当前结点,否则放弃该数据链),用当前节点进行匹配,若响应值达到一定阈值,产生一条边,这条边一端是当前节点,还有一端是数据链中质心距离当前节点质心最近的节点
在这里插入图片描述

3、回环检测

回环检测的操作和添加邻近边类似,步骤较为繁琐:
1、依据当前的节点, 从Graph中找到与之相邻的所有节点(一定距离范围内)

2、采取广度优先搜索的方式,将相邻(next)与相连(adjacentVertices)添加进nearLinkedScans.

3、从sensorManager中取从前到后,依据id序号挑选与当前在一定距离范围内,且不在nearLinkedScans中的candidateScans, 当数量达到一定size,返回。

4、loopScanMatcher进行scanTomap的匹配,当匹配response 和covariance达到一定要求认为闭环检测到。得到调整的correct pose。

5、Add link to loop : 调整边(全局闭环)

6、触发correctPose: spa优化
第一步,首先去除那些和当前节点的时间相邻的节点,针对那些在搜索范围内,且在时间点上并不相邻的节点产生一个数据链,然后进行匹配,若响应值大于阈值,添加回环并进行全局优化。

在这里插入图片描述
部分参考原文链接:https://blog.csdn.net/qq_24893115/article/details/52965410

萝卜青菜肉丸子
关注 关注
  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
slam回环检测
道亦无名
09-01 696
回环检测,又称闭环检测,是SLAM(Simultaneous Localization and Mapping,即同时定位与建图)技术中的一个重要组成部分。它指的是机器人识别曾到达某场景,并利用这一信息来优化自身位姿估计和地图构建的过程。
Karto SLAM 源码分析 (三) Levenberg-Marquardt 算法
Fourier_Legend的博客
08-02 2435
Levenberg-Marquardt 算法简介 为什么要进行最优化 最优化算法的基本原理 梯度下降 LM 算法 改进的Guass-Newton法 Levenberg-Marquardt 算法简介 为什么要进行最优化   &a
Karto_SLAM研究
daydayup_x的博客
03-20 1941
今天开始试试karto进行建图。karto是一个项目,后端是SPA(Sparse Pose Adjustment),前端是Scan Matcher。 相关链接: https://github.com/ros-perception/open_karto https://github.com/ros-perception/slam_karto https://github.com/ros-perception/sparse_bundle_adjustment 参考文献: Konolige, Kurt
Karto_slam框架与代码解析
热门推荐
qq_24893115的博客
10-29 1万+
Karto_slam框架与代码解析1、Karto_slam概况介绍2、karto_slam具体介绍1、scan-matcher2、添加顶点和边的信息3、回环检测4、优化求解3、关于Karto_slam简单的总结正文如下1、Karto_slam概况 上面两张图主要是对Karto_slam的一个整体框架,从2016年slam的大综述中,可以看到这其实就是一般slam的一个基本框架,这里指的是带优
[SLAM]Karto SLAM算法学习
zrjust1043的专栏
03-21 7691
[SLAM]Karto SLAM算法学习 Karto_slam算法是一个Graph based SLAM算法。包括前端和后端。关于代码要分成两块内容来看。 一类是OpenKarto项目,是最初的开源代码,包括算法的核心内容: https://github.com/skasperski/OpenKarto.git  之后作者应该将该项目商业化了:https://www.karto
[SLAM]Karto SLAM算法学习(草稿)
weixin_34235105的博客
07-22 428
Karto_slam算法是一个Graph based SLAM算法。包括前端和后端。关于代码要分成两块内容来看。 一类是OpenKarto项目,是最初的开源代码,包括算法的核心内容: https://github.com/skasperski/OpenKarto.git  之后作者应该将该项目商业化了:https://www.kartorobotics.com/ 作者是这样说的: “When...
karto slam
weixin_43389008的博客
10-22 366
输入:scan、tf(necessary:laser、base、odometry) 输出:map How to use Karto stand-alone (tutorial1.cpp) 1. 创建一个LaserRangeFinder类对象 // Create a laser range finder device - use SmartPointer to let karto subsystem manage memory. karto::Name name("laser0"); ka
Karto_slam跑激光雷达(北阳ust-10lx下一篇介绍使用)
07-28 8782
0.当前配置 Ubuntu 16.04 ROS Kinetic Opencv 3.4.1 Ceres-solver gcc version 5.4.0 20160609 (g++) *Eigen3 *G2O 1.前言 本人当下在学习slam_karto,在网上搜寻相关的博客,发现大家使用karto的并不多,大多都是在介绍hector_slam和gmapping_slam.当然还有Go...
kartoSLAM代码解读
Asber的博客
01-05 1410
在运行kartoslam的代码的时候,通过这里的教程 我们通过roslaunch turtlebot_navigation rplidar_karto_demo.launch运行,但是运行之后发生了什么呢? rplidar_karto_demo.launch内容如下 <launch> <!-- Define laser type--> <arg name="...
SLAM学习-论文综述(一)
aaaaPIKACHU的博客
02-15 3263
SLAM学习-论文综述(一)本文综述了激光雷达SLAM、视觉SLAM及其融合技术。 对于新的研究人员来说,掌握SLAM的发展并非常清楚地了解它是非常友好的。此外,本文还可以作为有经验的研究人员寻找新的兴趣方向的词典。
SLAM算法(一)即同步定位与地图构建了解
小麦粒的Python
08-01 9829
SLAM(Simultaneous Localization and Mapping同步定位与地图构建) 是业界公认视觉领域空间定位技术的前沿方向,它主要用于解决机器人在未知环境运动时的定位和地图构建问题。   目前科技发展速度飞快,想让用户在 AR/VR、机器人、无人机、无人驾驶领域体验加强,还是需要更多前沿技术做支持,SLAM 就是其中之一。实际上,有人就曾打比方,若是手机离开了 WIFI 和数据网络,就像无人车和机器人,离开了 SLAM 一样。
在ros下使用karto slam建立地图
dzhongjie的博客
11-28 6709
     KartoSLAM是基于图优化的方法,用高度优化和非迭代 cholesky矩阵进行稀疏系统解耦作为解.图优化方法利用图的均值表示地图,每个节点表示机器人轨迹的一个位置点和传感器测量数据集,箭头的指向的连接表示连续机器人位置点的运动,每个新节点加入,地图就会依据空间中的节点箭头的约束进行计算更新。karto slam需要odom和laser scan的信息。      在ros当中使用k...
karto slam测试地下车库
WuDong
04-13 830
硬件配置:Nvidia TX2 激光雷达:HOKUYO UST-10LX IMU: MPU9250 测试效果: ROS bag数据包: 链接: https://pan.baidu.com/s/1l63m2Su230oL_WgErQiNKg 提取码: ydii 注:过程中出现抖动,目前还在找原因。 --------------------------------------...
SLAM算法之HectorSLAM,Gmapping,KartoSLAM,CoreSLAM和LagoSLAM
qq_41050642的博客
10-05 2409
文章将介绍使用的基于机器人操作系统(ROS)框架工作的SLAM算法。 在ROS中提供的五种基于2D激光的SLAM算法分别是:HectorSLAM,Gmapping,KartoSLAM,CoreSLAM和LagoSLAM。当然最后还有比较经典的google开源的cartographer,虽然不是基于ROS的但是大牛们已经将它修改为基于ROS的版本的cartographer_ros, ROS(Robot Operating System)是一个基于Linux的开源操作系统,目的在于构建一个能够整合不同研究成果
karto探秘之open_karto 第四章 --- 回环检测与后端优化
李想的博客
05-21 2186
1 Mapper::Process() kt_bool Mapper::Process(LocalizedRangeScan* pScan) { // 省略... if (m_pUseScanMatching->GetValue()) { // add to graph m_pGraph->AddVertex(pScan); //边是具有约束关系的两个顶点,在 AddEdges中的操作有: 寻找可以
karto-slam解析
qq_31785865的博客
12-04 7825
学习笔记之kartoslam
Karto SLAM之open_karto代码学习笔记(一)
wphkadn的博客
12-21 6128
综述 本文旨在提供关于 open_karto 代码的详细中文解释,通过open_karto提供的tutorial1来详细分析代码含义。针对代码中重点类LocalizedRangeScan,LaserRangeScan,Mapper,ScanMatcher,CorrelationGrid,GridIndexLookup等进行详细解释,了解其作用。另外对重点函数Mapper::Process(), S...
Karto SLAM 建图与导航 Ubuntu 18.04 Kuboki
weixin_43563233的博客
07-26 1809
Karto SLAM 建图与导航ROS部署Karto SLAM 安装激光雷达配置建图导航 ROS部署 请参阅我之前的文章:Ubuntu 18.04 ROS Karto SLAM 安装 sudo apt install ros-melodic-slam-karto 激光雷达配置 rplidar A2 git clone https://github.com/Slamtec/rplidar_ros cd rplidar_ros/scripts ./create_udev_rules.sh 重新插拔雷达 启动
karto探秘之slam_karto
李想的博客
01-16 2944
kt_bool Mapper::Process(LocalizedRangeScan* pScan) kt_bool Mapper::Process(LocalizedRangeScan* pScan) { if (pScan != NULL) { karto::LaserRangeFinder* pLaserRangeFinder = pSca...
karto算法优缺点
最新发布
05-29
Karto算法是一种基于激光雷达数据进行SLAM(Simultaneous Localization and Mapping,即同时定位和建图)的算法。它使用RANSAC算法对激光雷达扫描数据进行特征提取,并使用这些特征进行地图构建和定位。 Karto算法的优点包括: 1. 鲁棒性较高,可以处理一定程度的噪声和干扰; 2. 精度较高,可以实现较为精确的定位和地图构建; 3. 可以处理不同类型的激光雷达,具有一定的通用性; 4. 算法效率较高,在实时性方面表现良好。 Karto算法的缺点包括: 1. 对于大规模环境下的建图和定位,算法的计算量较大,可能需要较高的硬件配置; 2. 对于复杂地形和光线条件较差的情况下,算法表现可能会受到影响; 3. 算法对于环境变化较为敏感,需要进行相应的参数调整和更新。
写文章

热门文章

  • python安装、扩展名改为.py但是格式没变的解决办法 5201
  • 免费使用CLioN一年 5101
  • PyCharm撤销快捷键以及注释快捷键 3432
  • 激光点云预处理 3177
  • Karto_SLAM算法学习 2793

最新评论

  • ubuntu下测试pcl库体素体滤波

    熊澳鑫: 找不到我的pcd文件,核心已转储。该怎么办

  • Karto跑下载的数据集

    weixin_43816482: 你好 为什么我的rviz不显示地图呢

最新文章

  • 2021-08-31
  • sudo rosdep init ERROR: cannot download default sources list from:
  • Python range()函数
2021年1篇
2020年22篇
2019年13篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家白银人物玻璃钢雕塑广州玻璃钢景观雕塑六安定制玻璃钢雕塑市场玻璃钢 雕塑定做广东玻璃钢大象雕塑玻璃钢雕塑厂费用无锡南宁玻璃钢卡通雕塑中涛玻璃钢花盆上海超市商场美陈批发价济南玻璃钢雕塑摆件设计企业四川高质量玻璃钢雕塑销售厂家信阳玻璃钢雕塑公司玻璃钢化雕塑制作惠州玻璃钢雕塑生产质量有保证玻璃钢雕塑制作玻璃钢雕塑厂家内江玻璃钢人物雕塑瑞丽市玻璃钢雕塑设计加工蚌埠环保玻璃钢雕塑湖里园林玻璃钢雕塑报价西安人物玻璃钢雕塑设计玻璃钢雕塑麒麟户外玻璃钢卡通雕塑销售厂家漳州玻璃钢仿铜雕塑厂家商场手扶电梯口装修美陈吕梁玻璃钢广场雕塑定制淮安景观玻璃钢雕塑平谷玻璃钢动物雕塑南通玻璃钢海豚雕塑定制玻璃钢雕塑油漆施工方案香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化