本次阅读的源码为 release-1.0 版本的代码 https://github.com/googlecartographer/cartographer_ros/tree/release-1.0 https://github.com/googlecartographer/cartographer/tree/release-1.0 也可以下载我上传的 全套工作空间的代码,包括 protobu
第一步 雷达型号 本节将对4种雷达进行室外环境下的对比建图实验,并进行地图分析,最终给出每种雷达的最优参数。 4种雷达分别为: 1 倍加福的二维激光雷达-R2000(型号貌似只有一种): 在10Hz频率下角分辨率能达到0.042度,频率越高角分辨率越大。当出点数太多时carto会出现drop points 的情况,如下实验是在25Hz的最大出点数的情况下进行的,也就是25Hz允许的最小角分
1 Introduction Carto的目的是为了用slam代替CAD,从而迅速,准确的描述出建筑物的二维或三维结构图。这篇文章的创新点在于提出了一种实时的根据雷达数据进行闭环检测的方法,从而能够进行数万平方米的SLAM。 2 Related Work scan-to-scan累积误差太快。scan-to-map的扫描匹配(指的是Hector SLAM)的方式应用Gauss-Newton找
本文阅读的代码为2020年11月1日下载的github的最新master。如果代码后续更新了请以github为准。 1 main() int main(int argc, char** argv) { ros::init(argc, argv, "roboat_loam"); IMUPreintegration ImuP; TransformFusion
本文阅读的代码为2020年11月1日下载的github的最新master。如果代码后续更新了请以github为准。 1 main() int main(int argc, char **argv) { ros::init(argc, argv, "lio_sam"); mapOptimization MO; ROS_INFO("\033[1;32m---->
本文阅读的代码为2020年11月1日下载的github的最新master。如果代码后续更新了请以github为准。 1 main() 可见 int main(int argc, char **argv) { ros::init(argc, argv, "lio_sam"); mapOptimization MO; ROS_INFO("\033[1;32m----
本文阅读的代码为2020年11月1日下载的github的最新master。如果代码后续更新了请以github为准。 1 main() int main(int argc, char** argv) { ros::init(argc, argv, "lio_sam"); FeatureExtraction FE; // \033[1;32m,\033[0m 终端显
本文阅读的代码为2020年11月1日下载的github的最新master。如果代码后续更新了请以github为准。 1 CMakelist.txt 与 package.xml 1.1 package.xml package.xml 里的依赖:除了ros的常规依赖外,还有cv_bridge, pcl_conversions, GTSAM 三者。 1.2 CMakelist.txt CMaKe
LIO-SAM:经由平滑和建图实现的紧耦合激光雷达惯性里程计 注意:通读文章后发现整篇文章没啥实质性的东西,慎读。。。此链接是文章的主要内容的摘要,强烈推荐https://blog.csdn.net/unlimitedai/article/details/107378759#t2 代码的链接为:https://github.com/TixiaoShan/LIO-SAM论文的
1 安装 1.1 依赖的安装 1.1.1 安装ROS相关的依赖 ROS的版本为Kinetic and Melodic sudo apt-get install -y ros-kinetic-navigation sudo apt-get install -y ros-kinetic-robot-localization sudo apt-get install -y ros-kinetic
这篇文章将带领大家推导一下hector slam论文中的公式.之后再对这部分公式对应的代码进行讲解下. markdown打公式太费劲了,所以我用手写了.(懒) 然后csdn又限制了图片文件大小,我是照完照片又截图才传上来的,所以图片有点不清晰. 1 高斯牛顿法 首先借用 <视觉SLAM十四讲> 说明一下高斯牛顿法的思路. 高斯牛顿法首先将目标函数进行一阶泰勒展开,再经过公式推导,可以
上篇通过实验对比分析了是否启用后端优化与是否启用回环检测时的建图效果,并对后端优化与回环检测的作用进行了理论分析. 这篇文章将为大家解读一下后端优化以及回环检测是如何实现的. 代码的注释写完挺长时间了, 但是最近很忙一直没倒出功夫来写文章… 由于公众号不适合大段的代码, 因此本文只是通过文字来简述 Karto 的后端优化与回环检测的实现过程. 更详细的代码解析可以去看我的这篇文章: ka
上篇文章讲解了Karto的前端是如何工作的. 这篇文章将slam_karto中的后端优化部分的代码添加进lesson6中,我将带着大家一起体验后端优化的作用与功能. 1 室外数据集 由于上一篇文章使用的数据包的场景太小了,室内只有30m的范围,来回走一圈前端产生的累计误差不明显,所以,我上传了一个新的数据集. 由于之前没做好规划,整个教程弄了好几个数据集,其实只需要一个室内的,一个室外的就
原来的计划是从这篇文章开始自己搭一个新的SLAM框架的,结果由于水平不够,代码不知道从哪下手,不知道如何设计代码结构,弄了一周没啥进展. 后来就想着先把Karto拆解成比较独立的几个模块,像Cartographer那样,分别实现扫描匹配部分,建图部分.并新增使用imu与里程计的估计值,作为激光雷达扫描匹配的先验. 但是由于Karto的代码耦合度实在是太高,拆解的工作量太大了,又弄了一周还是
之前做的一次分享,没啥用了,放出来看看能不能帮到谁。 经过我的多次实验,一般情况下,ceres的 translation_weight 与 rotation_weight 都设置为1,对于我的传感器来说建图效果是最好的。
之前的文章都是只使用二维激光雷达,本篇文章将介绍两种新的传感器,IMU以及轮速计. 首先对这两种传感器进行简要介绍,之后对这两种传感器数据进行简单处理,之后对IMU,轮速计与激光雷达数据进行简单的时间同步,最后实现 使用这两个传感器进行单线激光雷达的运动畸变校正 的功能. 本文的代码的实现借鉴于LIO-SAM中的运动畸变校正部分. 1 IMU与轮速计的简介 1.1 IMU 1.1.1 简介
上篇文章讲解了如何在固定位置使用Hector构建单帧的栅格地图,以及知道了SLAM的本质就是将不同时刻的scan在正确的位置上写成栅格地图. 本篇文章将对 Hector 进行简单的重写,使得其代码更简单,更清晰. 这也是本系列教程第一次成功建出一张比较好的地图. 先放图,虽然有些瑕疵,但是整体还是不错的.话不多说,先说明一下对代码做了那些改变,然后再着重讲解一下 Hector是如何做sca
上篇文章讲解了如何使用GMapping的建图方式进行单帧的地图构建.这篇文章依然进行单帧的地图构建,只不过这篇文章将使用 Hector 这个算法的建图的部分. 1 Hector简介 Hector是2011年开源的二维激光SLAM的项目,非常创新地使用scan-to-map的匹配方式. 首先其论文提出了如何对离散的栅格地图求导,然后说明了如何使用 高斯牛顿法 进行 scan-to-map 的
零基础如何入门激光SLAM 最近有几个人加我,都说是刚开始学激光slam,基本都是研一,也有一些大四的(大四的都开始学SLAM了!)。 情况也都差不多,有的是课题组里只有自己做slam,有的是完全没人带,有的是完全没基础,c++都没学过的那种。 这些小白都不知道怎么进行学习,问了我好多相同的问题,所以我就将我自己的思路整理了一下,也就是这篇文章的由来. 第一部分是我自己的SLAM接触史,第二部分是
上一篇文章将了如何使用PCL中的ICP算法进行相邻帧间的坐标变换,ICP的计算时间以及精度都不太好. 这篇文章我使用一种ICP的改进算法PL-ICP算法来计算相邻帧间的坐标变换. 1 PL-ICP PL-ICP(Point to Line ICP) 使用点到线距离最小的方式进行ICP的计算,收敛速度快很多,同时精度也更高一些. 具体的pl-icp的介绍请看其论文,作者也开源了pl-icp的代码,作
上一篇文章讲解了如何将激光雷达的sensor_msgs/LaserScan格式转换成pcl::PointCloud< pcl::PointXYZ>格式, 本篇文章将要讲解如何使用这个格式调用ICP算法进行相邻2帧雷达数据间坐标变换的计算. 1 ICP算法 迭代最近点(Iterative Closest Point, 下简称ICP)算法是一种点云匹配算法。 其求解思路为: 首先对于一幅
接下来的几篇文章,我将带大家使用PCL的ICP算法搭建出一个最简单的激光里程计,将涉及到PCL,TF,TF2等函数库,不会用不要紧,我将带着大家一步一步地学习。 由于我想搭的第一个激光里程计是通过ICP算法来实现,而ICP算法已经在PCL中实现好了,所以我们首先来看如何在ROS中引入PCL,并进行使用。 1 PCL PCL(Point Cloud Library)作为我们接触的第一个外部库,可见其
我们这篇文章将对LIO-SAM中特征点提取的部分进行二维激光雷达下的实现。 实现的目的是为了熟悉激光雷达数据的处理方式,体验如何进行激光雷达数据处理,如何进行特征点提取。 LIO-SAM的项目地址为: https://github.com/TixiaoShan/LIO-SAM LIO-SAM的特征点提取部分与LOAM基本相同,只不过在算曲率值时的具体计算方式稍有不同。 1 特征点提取后的效果 我们
终于到了写代码的阶段了,哈哈。 上一篇文章我们通过实验知道了雷达数据的各种性质,但是雷达数据在代码里是如何体现的呢? 本篇文章将通过新建一个ros的包来学习一下如何遍历雷达数据,以及如何对雷达数据进行处理。 首先说明一下我使用的代码环境: Ubuntu版本: 16.04.01ROS: kinetic 版本编程语言: C++IDE推荐: 目前我使用的是 VS code,其如何配置会在之后的文章中讲解
为什么要做这个开源项目 1 我的SLAM接触史 1.1 硕士阶段 从17年3月开始接触SLAM,到现在已经3年了。虽然时间很长,但并不是所有时间都在单纯的搞SLAM。 17年3月,研一下学期的时候选的课题题目,基于SLAM的室内移动机器人导航技术研究。之前并没有接触过SLAM,ROS等等。就连c++都是16年研一上学期的时候学的(大一学过以后没再接触过)。从17年3月开始学ROS,开始了解SLAM
我们知道,不同品牌的激光雷达产生的数据是不一样的,那这些不同点是如何影响建图效果的呢? 这篇文章就是来分析这个问题,将从不同光强下的点云效果,不同夹角下的点云效果,以及 1 激光雷达的技术指标 激光雷达拥有几个指标: 数据的最大最小距离以及扫描的角度范围(视野范围) 2个数据点间的角度(角度分辨率,点数) 发出数据的频率 发出数据的能量强度 点的跳动成都(精度)等等 1.1 视野范围 激光雷达
我眼中的SLAM 从最开始接触SLAM已经3年了,从二维激光SLAM到三维激光SLAM,再到视觉SLAM,都有一些接触,现将简单梳理一下SLAM的各个模块的功能以及实现方式,为本系列文章起到个总领作用。 1 SLAM是什么 SLAM(simultaneous localization and mapping)的中文翻译为 同步定位与地图构建。目的有2个,一个是进行定位,一个是进行周围环境的地图的构
积分
粉丝
勋章
TA还没有专栏噢
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信