
SLAM
文章平均质量分 82
一万年可长否
一个平平无奇的学习人
本人主要发布一些个人学习笔记,如有错误,请批评指正。
展开
-
SLAM高翔十四讲(十二)第十二讲 建图
SLAM被称为同时定位与建图,前面我们讨论的是定位问题,本讲我们主要介绍建图问题。关于地图的用途,大致可以归为以下几点:定位、导航、避障、重建、交互。稀疏地图主要用于定位,而稠密地图用于导航、避障、重建,我们本将重点讨论稠密地图。原创 2023-07-27 10:31:41 · 670 阅读 · 0 评论 -
SLAM高翔十四讲(十一)第十一讲 回环检测
引入一个先验相似度,若当前关键帧与之前某个关键帧的相似度超过与上一个关键帧的相似度的3倍,认为回环。词袋(BoW),目的是用"图像上有哪几种特征"来描述一幅图像。根据这样来度量两幅图的相似性。准确率:描述的是算法提取的所有回环中是回环的概率;召回率:是指所有真实回环被正确检测出俩的概率。在回环检测后增加一个验证步骤:1)设立回环的缓存机制;回环检测的关键帧最好稀疏一些,彼此不同,又能覆盖整个环境。把"相近"的回环聚成一类,使算法不要反复检测同一类的回环。结果显示:分支数量10,树的深度5,单词数4972。原创 2023-07-24 17:52:02 · 714 阅读 · 0 评论 -
SLAM高翔十四讲(十)第十讲 后段优化(滑动窗口和位姿图)
这里的误差模型和雅可比矩阵公式,使用的是本章讲的。代码演示* 本程序演示如何用g2o solver进行位姿图优化* sphere.g2o是人工生成的一个Pose graph,我们来优化它。* 尽管可以直接通过load函数读取整个图,但我们还是自己来实现读取代码,以期获得更深刻的理解* 本节使用李代数表达位姿图,节点和边的方式为自定义// 给定误差求J_R^{-1}的近似 Matrix6d JRInv(const SE3d & e) {Matrix6d J;原创 2023-07-23 16:04:04 · 898 阅读 · 0 评论 -
SLAM高翔十四讲(九)第九讲 后段优化(BA图优化)
前端视觉里程计能给出短时间内的轨迹和地图,但由于误差的积累,长时间是不准确的。因此,在前端的基础上。我们希望构建一个尺度、规模更大的优化问题,考虑长时间内最优的轨迹和地图。用来构建误差模型。原创 2023-07-22 16:19:57 · 509 阅读 · 1 评论 -
SLAM高翔十四讲(八)第八讲 视觉里程计(直接法)
2. 多层直接法:由于篇幅原因,这里只展示对第一张图片的金字塔多层优化,这里是4层金字塔。我们在第一张图片提取角点,然后用光流跟踪他们在第二张图片的位置。2)基于高斯牛顿法的光流:因为光流可以看做一个。2)多层直接法:图像金字塔,每层调用单层直接法。,通过最小化灰度误差估计最优的像素偏移;1)OpenCV自带的LK光流;3)多层光流:使用图像金字塔。求解直接法最后等价于。原创 2023-07-19 16:04:14 · 425 阅读 · 0 评论 -
SLAM高翔十四讲(七)第七讲 视觉里程计(特征点法)
文章目录一、特征点法1.1 特征点1.2 ORB特征1.3 特征匹配二、特征点的提取与匹配2.1 使用OpenCV提取匹配ORB2.1.1 CMakeLists.txt2.1.2 代码展示2.1.3 结果2.2 手写ORB特征2.2.1 CMakeLists.txt2.2.2 代码展示2.2.3 结果三、根据特征点估计相机运动:旋转R 、平移t四、对极几何法(2D->2D):已知二维特征点(像素坐标)估计相机位姿4.1 理论部分4.2 CMakeLists.txt4.3 代码展示4.4 结果五、三角测原创 2023-07-18 19:18:04 · 637 阅读 · 0 评论 -
SLAM高翔十四讲(六)第六讲 非线性优化
状态估计条件分布->最大后验估计->最大似然估计:在什么样的条件下最有可能产生现在观测到的数据。目的:在有噪声的数据中进行准确的状态估计,即在带有噪声的数据推断位姿和地图以及它们的概率分布。这里给出3种方法实现:1)手写高斯牛顿 2)Ceres实现高斯牛顿 3)g2o实现高斯牛顿。x+b*x+c)+w和一组样本点,根据样本点(x,y)求出参数a,b,c。这里迭代了8次,ceres花费时间比手写高斯牛顿长,终止条件是收敛。曲线拟合问题:给出曲线y=exp(a。原创 2023-07-17 10:28:08 · 457 阅读 · 0 评论 -
SLAM高翔十四讲(五)第五讲 相机与图像
1)径向畸变:由透镜形状引起。图像放大率随光轴距离增大而减小,称为桶型畸变;可分成两类:红外结构光原理、飞行时间(ToF)原理。2)切向畸变:透镜与成像面不平行引起。经过旋转平移(外参T)原创 2023-07-15 17:44:51 · 365 阅读 · 0 评论 -
SLAM高翔十四讲(四)第四讲 李群与李代数
对于特殊正交群SO与特殊欧式群SE对于加法不封闭,对于乘法封闭,这样只有一个运算的集合称之为群。群是由一种集合+一种运算的代数结构。在实际工程中,我们需要评估一个算法的估计轨道和真实轨道的差异来评价算法的精度。将位姿估计转换成无约束优化问题,简化求解方式。具有连续(光滑)的群:SO(n)、SE(n)原创 2023-07-14 17:00:52 · 273 阅读 · 0 评论 -
SLAM高翔十四讲(三)第三讲 三维空间刚体运动
刚体运动:坐标系的运动由旋转+平移组成欧式变换:旋转+平移 ,即a1=R12*a2+t12,R12表示2到1,t12表示1到2Eigen是一个C++开源线性代数库,提供快速线性运算和解方程等功能。它是一个纯头文件搭建的库,因此无需链接库文件,即target_link_libraries()。原创 2023-07-14 14:37:57 · 252 阅读 · 0 评论 -
SLAM高翔十四讲(一)关于我安装的故事
不得提出一点,各种包的版本有对应关系,当初我先装了一个老版本的Ceres导致后面装的g2o对应不上,找了好几天才发现版本不对应。如果用课程SLAM高翔十四讲的github的包会有一些问题,我这有一个大佬的全程总结,包括:安装、错误、代码笔记等,大家可以看一下,很厉害。反正上述这些东西我安装了四到五天,哭死!中间有几次想放弃,最后都坚持下来了,好几次没吃饭安装这些,中间的辛酸只有自身体会才能明白,但是在最后安装成功会有很大成就感。在课程开始之前要进行以下几步。原创 2023-07-14 11:32:14 · 191 阅读 · 0 评论 -
SLAM高翔十四讲(二)第二讲
编写一个libHelloSLAM.cpp的库文件//这是一个库文件 # include using namespace std;头文件libHelloSLAM.h# ifndef LIBHELLOSLAM_H_ # define LIBHELLOSLAM_H_ // 上面的宏定义是为了防止重复引用这个头文件而引起的重定义错误 // 打印一句hello的函数 void printHello();原创 2023-07-14 11:12:44 · 113 阅读 · 0 评论