SLAM
文章平均质量分 83
iwander。
还是slam有意思
展开
-
【SLAM】SVO2.0编译运行和论文代码解读
SVO2是我遇到的最难编译的代码了,可能公开版本不能放太鲁棒的代码吧,搞了快一个星期,终于跑起来了。原创 2022-08-27 15:08:47 · 4241 阅读 · 5 评论 -
【SLAM】DM-VIO(ros版)安装和论文解读
进入,基本上就是按照readme的操作来这里要注意,如果电脑里没有pangolin,是可以编译的,但是不会生成可执行文件,所以这个仍然是必须安装的库,此外,必须是0.6版本。编译完成后,在build/bin目录下,就能看到可执行文件dmvio_dataset。接下来,就可以按照官方的方法跑数据了。...原创 2022-08-02 11:02:10 · 4647 阅读 · 15 评论 -
【SLAM】LVI-SAM解析——综述
LVI-SAM可以认为是LIO-SAM和VINS-MONO的合体,在此基础上的修改不大。githubpaperLVI-SAM这个注释版代码中一些关于坐标系的注释我认为是有错误的,大家擦亮眼睛。和我也分别写过比较详细的代码解析,详情见链接。.........原创 2022-07-27 19:44:54 · 7060 阅读 · 4 评论 -
【SLAM】lidar-camera外参标定(港大MarsLab)无需二维码标定板
参考论文: Pixel-level Extrinsic Self Calibration of High Resolution LiDAR and Camera in Targetless Environmentsgithub:https://github.com/hku-mars/livox_camera_calib这篇论文是著名的港大Mars Lab出品,他们解决的是livox和camera的标定问题。论文很长,很多篇幅在介绍他们这么做的理由,这部分我们跳过,只看他们在代码里是怎么做的。提取鲁棒的,高度原创 2022-06-25 12:34:07 · 3521 阅读 · 0 评论 -
【SLAM】ORB-SLAM3解析——跟踪Track()(3)
在构建完最新的一帧Frame之后,就开始SLAM的正菜Tracking过程了。这个函数很长,有很多if-else看得很闹心。Track()干了一件什么事呢?首先把active map找出来;然后IMU预积分还没干,这里需要补上;接下来还得判断是正常跟踪建图状态还是初始化状态,如果没初始化那就去初始化;如果初始化了,先进行帧间匹配,也就是短期数据关联获得当前帧位姿的初始值,先试试与相邻帧匹配,不行就和最近的关键帧匹配,还不行就重定位,还是不行就开张新图重新跑里程计;然后和local Map匹配,也就是中期数原创 2022-05-24 09:35:25 · 4506 阅读 · 2 评论 -
【SLAM】ORB-SLAM3解析——帧Frame()的构建(2)
在路径\src\Frame.cc下。以Stereo(左右相机模型不同)-IMU模式的构造函数(1034行)为例进入到它的内部。这部分的主体思路:对于每一帧image(可能是mono,stereo, RGBD),首先构建图像金字塔,从而方便提取不同尺度的特征点和找到不同尺度特征点间的匹配关系。然后在image上提取均匀分布的FAST角点,为了实现这一点,对照片分成若干个格子,在不同的格子下分别提取角点;另外,运用BFS的方式不断把有角点的区域四等份,直到每个区域只有一个角点。随后对于每一个角点的周原创 2022-05-04 11:47:02 · 2718 阅读 · 3 评论 -
【SLAM】ORB-SLAM3解析——综述(1)
之前学习VINS和LIO-SAM的时候都是代码流,不是很重视看论文,现在有空学ORB-SLAM3了,这一次,先看一下论文。考虑到边上班边学,更新的会比较慢。看完论文之后,对这个系统最大的主观感受就是它的多图系统Atlas。机器人运行过程中是可能会跟丢的,一旦跟丢了就新建一个map,如果走到之前的位置,一旦发现和之前的map是同一个地方,就可以合并map。它的初始化和VINS很像,地图操作,回环检测,重定位很鲁棒。github: https://github.com/UZ-SLAMLab/ORB_SLAM原创 2022-04-28 22:18:34 · 7672 阅读 · 1 评论 -
【SLAM】ORB-SLAM2代码流程图
之前阅读ORB-SLAM2源码时记录的流程图,作为自己的一个记录,之后项目如果有用到的话再回来复习。原创 2022-03-13 20:53:46 · 1775 阅读 · 1 评论 -
【SLAM】VINS-MONO解析——回环检测和重定位
本部分内容涉及到的代码大部分在pose_graph文件夹下,少部分在vins_estimator里。这部分最主要的作用就是求出漂移位姿矫正矩阵r_drift和t_drift。这么大一个工程,这么多行代码,保存这么多帧特征点和描述子,就是为了找出这6个自由度的变量。原创 2022-03-06 15:19:19 · 14637 阅读 · 3 评论 -
【SLAM】LIO-SAM解析——获得高频的lidar里程计TransformFusion(6)
知识点:如何合并一个低频但高精度的里程计和一个高频但低精度的里程计,输出一个高频高精度的里程计。(虽然我觉得代码里IMUPreintegration输出的里程计已经很高频且高精度了)这是LIO-SAM里最小的一个类,它虽然和IMUPreintegration在同一个文件下,但是这个类所处的环节是最靠后的,所以分开讲。LIO-SAM涉及到多个不同的坐标系,首先是lidar系,大部分运算都是在这个系上;baselink是指body系,一般和IMU坐标系重合。6.1 综述Transfor.原创 2022-03-05 00:12:04 · 2796 阅读 · 0 评论 -
【SLAM】LIO-SAM解析——后端优化mapOptimization(5)
知识点:如何使用GTSAM进行后端优化;如何在全局地图里找到和最新帧相关的局部地图;如何用最新帧点云与局部地图进行点面icp实现scan2mapOptimization求位姿;5. 综述mapOptmization.cpp是LIO-SAM里代码量最大,涉及算法内容最多的内容。我自己的思考:实际业务使用的平台算力不够,带不动GTSAM咋办?内存不够存不了这么多点云咋办?主要函数:laserCloudInfoHandler():原创 2022-02-27 23:13:01 · 5308 阅读 · 7 评论 -
【SLAM】LIO-SAM解析——IMU预计分IMU-Preintegration(4)
知识点:如何使用GTSAM;已知上一帧lidar里程计(频率低),当前帧lidar里程计(频率低),两个lidar帧之间的IMU数据,如何利用图优化的方式优化位姿状态量(PVQ)和IMU状态量(noise,bias);如何结合lidar里程计(频率低)和IMU数据(频率低)输出IMU里程计(频率高)。4. 综述从看代码的角度讲,LIO-SAM涉及到的数学好像不是很多,基本GTSAM都给你搞定了,所以知道相关的基本原理就能看懂代码。这部分内容对应IMUPreintegratio...原创 2022-02-27 22:20:02 · 5632 阅读 · 1 评论 -
【SLAM】LIO-SAM解析——点云特征提取FeatureExtraction(3)
这一部分会接收来自imageProjection处理完的lidar帧数据,对应的点云是去畸变的,也就是在同一个坐标系下。这部分对此帧的点云进行面点,角点特征的分类。这一章内容比前一章还要简单一些,作者在这里做了大幅度的点云降采样,有些奢侈了。工业中很少会使用密度如此高,精度如此高的传感器,数据处理往往是业界关注的问题。3. 功能入口int main(int argc, char** argv){ ros::init(argc, argv, "lio_sam"); Feat...原创 2022-02-23 00:15:07 · 3681 阅读 · 1 评论 -
【SLAM】LIO-SAM解析——流程图(1)
LIO-SAM是2020年新出的激光SLAM,代码量不大,结构统一清晰,是我看的最快的一篇SLAM代码,效果在原数据集也不错。有一个不错的注释版代码写的不错,https://github.com/smilefacehh/LIO-SAM-DetailedNote。注释中,mapOptimization中位姿初始估计的解释和我的理解不太一样,放流程图了。......原创 2021-06-16 08:51:01 · 6875 阅读 · 4 评论 -
【SLAM】LIO-SAM解析——数据预处理imageProjection(2)
这部分内容对应imageProjection.cpp,雷达帧是一定角度旋转的(例如360°),同时机器人也在运动,这就造成了雷达在不同角度获取数据时机器人的位姿是不同的,也就是说,lidar在一帧时间范围内的每一个时刻所在的坐标系是不同的,对应获得的点云也是在不同坐标系下的。这部分代码的作用就是把雷达旋转一周时,所有的点云都转换到同一个位姿下,也就是该帧初始时刻的lidar坐标系下。如何做到呢?初始时刻的位姿我知道,起止时间内的位姿变化我知道,每一个点云的时刻我知道,那么每一个时刻相对于初始时刻的位姿变化原创 2022-02-21 23:59:32 · 5627 阅读 · 6 评论 -
【SLAM】VINS-MONO解析——综述
目前网上有很多分析文章,但是都只是一些比较基础的原理分析,而且很多量,虽然有推倒,但是往往没有讲清楚这些量是什么,为什么要有这些量,这些量是从哪来的,也没有刷通整个代码,或者太简练了,对新手不友好。这一次我计划从原理/代码一步步刷通整个VINS,并且说清楚代码中遇到的每一个数据结构对应的作用是什么。github官方上开源了VINS-mono,VINS-Fusion和VINS-mobile,还有另...原创 2020-03-02 19:38:00 · 52538 阅读 · 8 评论 -
【SLAM】Dense Surfel Mapping流程图
Dense Surfel Mapping 总结:主观感受是这个三维重建系统是不完整的,100%依赖外部输入的回环信息和位置,更像是配合slam系统的一个建图插件,它的主要内容包括:面元surfel和superpixel的设计;新提取的superpixel和local map中原先的surfel进行融合降低map的内存消耗,同时减少同一位置点云误差带来的重影;局部地图的快速变形:某一帧的surfels在该帧的坐标是固定的,当系统收到SLAM传来的该帧的最新位姿时,通过对这些surfels进行统一的位原创 2021-08-07 18:15:02 · 1870 阅读 · 0 评论