0. 简介 作为SLAM中常用的方法,其原因是因为SLAM观测不只考虑到当前帧的情况,而需要加入之前状态量的观测。就比如一个在二维平面上移动的机器人,机器人可以使用一组传感器,例如车轮里程计或激光测距仪。从这些原始测量值中,我们想要估计机器人的轨迹并构建环境地图。为了降低问题的计算复杂度,位姿图方法将原始测量值抽象出来。具体来说,它创建了一个表示机器人姿态的节点图,以及表示两个节点之间的相对变换
0. 简介 对于Gazebo而言,我们知道其是可以通过与ROS的连接完成机器人建图导航的,那我们是否可以通过Unity来完成相同的工作呢,答案是肯定的。这一讲我们就来讲述使用Unity的“Turtlebot3”模拟环境,来运行ROS2中的“Navigation 2”以及“slam_toolbox”。 1. 代码编译 安装步骤如下所示,首先先下载“Navigation 2 SLAM Examp
0. 简介 这几个月,博主已经从SLAM算法的使用向着算法的数学推导进行了记录和分享,之前也分享了李群李代数关注核心一文,从现象中解释了李群和李代数表达的含义。但是这还不够,所以这次作者作为SLAM本质剖析的番外,来介绍李群李代数的微分和导数。 1. 旋转点求导 李群或者李代数上叠加微小量的情况呢?传统的求导过程中,我们常见的做法是对自变量添加一个微小值来进行: f'(x) =
0. 简介 SLAM算法在加入回环检测与修正后,效果会显著提高。而很多人就会思考,有没有一个比较稳健的方法,能够让机器人跟丢之后重新找回当前的姿态。虽然二者目的不同,重定位主要为了恢复姿态估计,而回环为了解决飘移,提高全局精度。但是二者在匹配帧上可以共享一些算法。 1. 视觉重定位回顾 比如说对于单目VSLAM算法用的比较多的还是基于BoW的匹配方案(ORB-SLAM,VINS等),也有基于
0. 简介 在面对二维与三维之间的转换时,我们常常会困惑该如何去转换,在G2O中存在有理想的坐标转换工具,但是在Sophus中却缺乏这样的手段。之前在Sophus处简要的介绍了一下SE(2)与SE(3)的转换,最近发现之前的文章这部分需要拿出来详细的说一说。 1. 欧拉角与旋转向量 欧拉角、旋转向量、四元数和旋转矩阵是Sophus中常常提到的几个名词,欧拉角和旋转向量是类似的,SO(3)的旋
0. 简介 视觉里程计最近几年越来越受到学术界以及工业界的认可,以ORB和VINS为代表的视觉SLAM已经可以满足绝大多数场景,而OV2SLAM在其他VSLAM中脱颖而出,其实时性以及具体的回环性能在测试中都得到了认可。下面我们就来看一下《OV2SLAM : A Fully Online and Versatile Visual SLAM for Real-Time Applicatio
0. 简介 PCL作为目前最为强大的点云库,内部存在有大量集成好的算法。而对于数据量大、非同源、含大量噪声且部分重叠的激光点云与影像重建点云,其稀疏程度、噪声程度等不同,非重叠区域的面积很大。真实场景的点云尤其是影像重建点云噪声较多,提取的法向量误差也很大,有的时候NDT和ICP并不能形成良好的匹配,这个时候我们该怎么样评估通过IPC或NDT算出的变换矩阵来估算出算法的精度呢?这个时候就需要通过
0. 简介 作为常用的配准方法,ICP和NDT两种匹配被广泛应用于激光雷达的点云配准方法中。我们知道IPC的匹配主要是描述了点到点的匹配方法,而无法胜任点到面以及面到面的匹配,而本博客主要就是将向读者分析《Generalized-ICP》这篇论文,GICP可以通过点到点的距离作为损失函数求解point-to-point的损失函数,点到局部目标点局部拟合的平面距离作为point-to-pl
0. 简介 对于ROS1而言,rqt和plotjuggler是我们最常用的工具,这两个工具:rqt中嵌入了很多有用的小工具,但是它需要播放离线包,没有办法对离线包进行实时的分析。而plotjuggler支持对离线bag包进行分析,但是不支持可视化的工具,这两个各有千秋。而近年来,有更多的工作开始落实在可视化上。 1. SLAMer常用的可视化开源库 opengl:Open Graph
0. 简介 boost作为C++中最常用的第三方库,很多SLAMer都在使用Geometry中的库。Geometry库里面拥有大量的开源算法。可以省去大量的重复造轮子的时间。虽然有《Boost程序库完全开发指南》这系列的书来学习Boost中的时间与日期、内存管理、工具类、字符串与文本处理、正确性测试、容器与数据结构、数学与数字、操作系统相关、回调函数、并发编程、设计模式这11个主要的部分。但是G
0. 简介 激光雷达作为自动驾驶中最常用的传感器之一,由于其深度感知特性优良,这也让以激光SLAM为主的SLAM方法被广泛应用。但是我们发现在人员密集,车辆密集的场景经常会造成点云定位效果不佳,而这些情况传统滤波方法是没有办法解决的。本篇将主要围绕着深度学习的方法来讲述激光雷达分割的问题。 1. SLAM配准与建图 无论哪种点云配准方式(点到点/点到特征/点到栅格/NDT),都是基于静态假设
0. 简介 激光雷达作为自动驾驶最常用的传感器,经常需要使用激光雷达来做建图、定位和感知等任务。而这时候使用降低点云规模的预处理方法,可以能够去除无关区域的点以及降低点云规模。并能够给后续的PCL点云分割带来有效的收益。 1. 点云预处理 1.1 指定区域获取点云 在实际使用中,我们可以看出,虽然点云的分布范围较广,但大部分的点都集中的中间区域,距离越远点云越稀疏,相对的信息量也越小。此外
0. 简介 最近在看PCL滤波配准等操作,之前在自动驾驶-激光雷达预处理/特征提取和提到了一些滤除点云等操作,但是最近作者发现里面还有一些配准的方法还没有提到,所以这里重新开个章节来给大家列举一些常用的滤波方式,方便大家查阅和使用 1. 滤波&聚类 1.1 直通滤波器 void pass_through_filter(const pcl::PointCloud<pcl::Po
0. 简介 相较于激光雷达而言,视觉SLAM除了点特征以外还多出了线特征以及面特征。相比于点特征而言,线特征和面特征在单一环境中会更有鲁棒性。这篇文章中作者将会围绕着线特征和面特征的数学特性进行介绍 1. 线特征 线特征:优点在于具有天然的光照及视角不变性,同时更高级的特征也使追踪的鲁棒性和准确性有所提高。特别是在特定的人造场景(室内,走廊)等场景,能够克服无纹理或者不可靠纹理带来的
0. 简介 反光板定位作为cartographer中landmark数据最常用的部分,其特性和AprilTag使用方法类似,在cartographer中,landmark必须是tracking frame,一般是imu、laser、camera或者base_footprint。如果提供landmark observations不低于10 Hz,那么可以设置TRAJECTORY_BUILDER.c
前言 本篇博客主要还是进行不同卡尔曼滤波的数学推导,不会具体涉及到某些传感器。在理解了卡尔曼滤波的数学模型后,对于不同传感器只需要将其测量模型套入运动/观测模型即可。关于基于不同传感器的滤波融合方案,准备之后在阅读论文时再分别整理。 1. SLAM 中的定位概率模型 在 SLAM 问题中,我们想要通过滤波方法求解的问题是:求解一个后验概率,即给定一系列观测(和输入)和初始时刻的先验位
0. 简介 相比于传统的回环检测方法,SC给激光回环带来了更多的可能性,这里我们将会对SC进行解析,也顺便为之前的两篇文章填坑了。LEGO-LOAM改进思路以及代码, SC-LEGO-LOAM 扩展以及深度解析。Scan Context 就包括空间描述子的定义方法和与之对应的匹配算法。并提供了高效的 bin 编码函数,同时这种编码对点云的密度和法向的变化不敏感。另外SC还保存点云的内部结构,并使
0. 简介 三角化作为SLAM中的基础问题,最近经常被提及,通过单目运动的方式可以有效的恢复深度信息 1. 线性三角化数学推导 特征点在某个相机中被观测到,根据相机位姿和观测向量可以得到3D空间中的一条从相机中心出发的观测射线,多个相机位姿观测会产生多条观测射线,理想情况下这些观测射线会相交于空间中的一点,求所有观测射线的交点就是特征点在3D空间的位置,这也就是三角化过程。$x$,$x’$为
0. 简介 作为主流框架的前端中常用的方法,划窗优化是很常见迭代策略。因为随着SLAM系统的运行,状态变量规模不断增大,如果使用滑动窗口,只对窗口内的相关变量进行优化便可以大大减小计算量。这些之前在我的博客中有提到,但是之前作者没有深入的去了解这些,只是对边缘化中的舒尔补策略进行了简略的介绍。 而作为划窗优化,我们除了创建滑动窗口的存储空间外,我们还要通过边缘化的方法保留滑窗外的状态,我们可以
0. 简介 在深入剖析了Ceres、Eigen、Sophus、G2O后,以V-SLAM为代表的计算方式基本已经全部讲完。就L-SLAM而言,本系列也讲述了PCL、Open3D、与GTSAM点云计算部分。最近在了解boost,个人觉得这些仍然在SLAM以及自动驾驶中是必须的,打算仍然延续本质剖析的结构来续写这个系列,方便自己回顾以及后面的人一起学习。 1. C++总体介绍 通用库 Boost:Boo
slam的基础到slam的进阶,你想到的都可以看
博客
泡泡
积分
勋章
位姿图优化(Ceres& G2O& GTSAM)
Unity-ROS与Navigation 2(四)
SLAM本质剖析番外-李群李代数的微分和导数
重定位解析与思考
Sophus降维、升维与欧拉角、旋转向量的爱恨情仇
经典文献阅读之--OV2SLAM(高速视觉slam)
PCL 点云配准衡量指标
经典论文阅读之-GICP(ICP大一统)
ROS1可视化利器---Webviz
SLAM本质剖析-Boost之Geometry函数大全(一)
激光雷达动态障碍物滤除-调研与展望
自动驾驶-激光雷达预处理/特征提取
PCL补充之滤波、提取、配准方法
VSLAM特征之线特征&面特征
cartographer中的反光板定位
SLAM 中的 Kalman Filter 推导
Scan Context回环检测解读和使用
一看就懂的单目特征点恢复深度信息(三角化)
SLAM之划窗优化
SLAM本质剖析-Boost
Cartographer中的线程池操作
基于Sophus的Ceres优化
从LVI-SAM来看激光与视觉的紧耦合系统
大型点云地图裁剪及定位的通用流程
SLAM—逆深度
SLAM本质剖析-Open3D
矩阵并行加速之NENO与SSE
李群李代数关注核心
sim3相较于se3的好处
点云聚类及匹配(KD-Tree & OCTree)
LEGO-LOAM改进思路以及代码
SLAM外参标定
SLAM本质剖析-GTSAM
SLAM本质剖析-PCL
SLAM各种并行加速方法
紧耦合后端非线性优化-局部优化(Marginalization)
SLAM本质剖析-Sophus
SLAM本质剖析-G2O
SLAM本质剖析-Eigen
SLAM本质剖析-Ceres
VINS-FUSION 前端后端代码全详解
SC-LEGO-LOAM 扩展以及深度解析(三)
SC-LEGO-LOAM 扩展以及深度解析(二)
SC-LEGO-LOAM 扩展以及深度解析(一)
使用ORBSLAM2进行kineticV2稠密建图,实时转octomap建图以及导航
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信