
《视觉SLAM十四讲》代码研读
文章平均质量分 73
该专栏用来存放本人对于高翔博士的《视觉SLAM十四讲》书籍中的示例代码注释,及相应的演示结果。
YMWM_
云端建图
HD地图数据编译
视觉导航完好性
展开
-
ICP问题 SVD方法推导
先贴出手写版,后续再打出Markdown版原创 2021-09-28 21:54:25 · 184 阅读 · 3 评论 -
第6讲 非线性优化(偏理论)
对于非线性优化问题,minpF(p)\min_pF(p)pminF(p)F(p)=f(p)TΣ−1f(p)F(p)={f(p)}^T\Sigma^{-1}f(p)F(p)=f(p)TΣ−1f(p)采用迭代的方式,从一个初始值出发,不断更新当前的优化变量,使得代价函数下降。换而言之,就是将优化变量从ppp变成Δp\Delta pΔp,minΔpF(p+Δp)\min_{\Delta p} F(p+\Delta p)ΔpminF(p+Δp)1 一阶梯度法和二阶梯度法直接将F(原创 2021-09-17 16:43:42 · 299 阅读 · 0 评论 -
第13讲 实践:设计SLAM系统
文件夹架构为,ch13 - app - - bin - cmake_modules - config - include - lib - src - test - CMakeLists.txt更新中…原创 2021-06-27 17:23:14 · 343 阅读 · 0 评论 -
第12讲 建图
目录1 单目稠密重建1 单目稠密重建 给定200张图 cpp文件内容为,在这里插入代码片 CMakeLists.txt文件内容为,在这里插入代码片 程序运行结果为,总共读取到了202张彩色图!*** 第2张彩色图 ***正在执行update()函数!正在执行evaluateDepth()函数!深度估计图和深度真值图之间的均方根误差为:1.62062正在执行plotDepth()函数!该历元共耗时26.2563分钟!*** 第3张彩色图 ***正在执行update(原创 2021-05-31 19:16:51 · 500 阅读 · 0 评论 -
updateDepthFilter()中求解d_ref和d_cur公式推导
已知第1张图像的像素点在归一化平面的坐标freff_{ref}fref(三维向量,分别为X/Z,Y/Z,1X/Z,Y/Z,1X/Z,Y/Z,1,注意这里我们不知道X,Y,ZX,Y,ZX,Y,Z分别是多少,只知道它们的比值关系),当前图像的相应像素点在归一化平面的坐标fcurf_{cur}fcur(三维向量,形式为X/Z,Y/Z,1X/Z,Y/Z,1X/Z,Y/Z,1),并且还知道从当前图像到第1张图像的变换矩阵TRCT_{RC}TRC(RRCR_{RC}RRC表示旋转部分,tRCt_{RC}tR原创 2021-05-31 14:24:44 · 314 阅读 · 1 评论 -
第11讲 回环检测
目录1 创建字典2 相似度的计算3 增加字典规模1 创建字典 有10张图,从1.png到10.png,利用这10幅图的ORB描述子创建一个字典。 cpp文件内容为,#include "DBoW3/DBoW3.h"#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/features2d/features2d.hpp>#include原创 2021-05-30 14:12:29 · 367 阅读 · 0 评论 -
第10讲 后端2
目录1 用g2o_viewer进行优化2 利用g2o默认的顶点和边进行优化3 利用自己定义的顶点和边进行优化1 用g2o_viewer进行优化 打开终端,输入g2o_viewer sphere.g2o,得下图,点击左下角Optimize按钮,执行优化,优化结果为,2 利用g2o默认的顶点和边进行优化 cpp文件内容为,#include <iostream>#include <fstream>#include <string>#include &l原创 2021-05-29 21:58:51 · 1170 阅读 · 2 评论 -
第9讲 后端1
目录1 Ceres BA的书写1.1 源文件和头文件1.2 CMakeLists.txt文件1.3 执行结果1 Ceres BA的书写1.1 源文件和头文件待更新1.2 CMakeLists.txt文件 内容如下,find_package(Ceres REQUIRED)include_directories(${CERES_DIRECTORIES})include_directories("/usr/include/eigen3")add_library(bal_common com原创 2021-05-26 11:51:10 · 1221 阅读 · 6 评论 -
第8讲 视觉里程计2 下篇
目录3 直接法3 直接法原创 2021-05-22 11:40:12 · 397 阅读 · 0 评论 -
第8讲 视觉里程计2 上篇
目录1 使用LK光流2 用高斯牛顿法实现光流2.1 单层光流1 使用LK光流 给定图像1和图像2,利用OpenCV中的自带函数提取图像1中的GFTT角点,然后利用calcOpticalFlowPyrLK()函数跟踪其在图像2中的位置(u,v)(u,v)(u,v)。 cpp文件内容为,#include <iostream>#include <chrono>#include <opencv2/opencv.hpp>#include <Eigen/Cor原创 2021-05-21 13:36:56 · 553 阅读 · 2 评论 -
第7讲 视觉里程计1 下篇
目录5 求解PnP5.1 使用EPnP求解位姿5.2 手写位姿估计5 求解PnP5.1 使用EPnP求解位姿 已知图像1、图像2和图像1的深度图,那么就可以得到图像1中的路标点和图像2中相对应的特征点,利用OpenCV中的solvePnP()函数求解两帧之间的旋转运动和平移运动。 cpp文件内容如下,#include <iostream>#include <chrono>#include <opencv2/opencv.hpp>using names原创 2021-05-15 16:45:33 · 622 阅读 · 2 评论 -
第7讲 视觉里程计1 上篇
目录1 OpenCV的ORB特征2 手写ORB特征1 OpenCV的ORB特征 cpp文件内容为,#include <iostream>#include <chrono>using namespace std;#include <opencv2/core/core.hpp>#include <opencv2/features2d/features2d.hpp>#include <opencv2/highgui/highgui.hpp原创 2021-05-13 17:10:05 · 642 阅读 · 1 评论 -
第6讲 非线性优化(偏实践)
目录1 手写高斯牛顿法21 手写高斯牛顿法 对于如下测量方程,y=eax2+bx+c+wy=e^{ax^2+bx+c}+wy=eax2+bx+c+w其中yyy表示对状态(a,b,c)T(a,b,c)^T(a,b,c)T的测量;www为噪声,它服从均值为0,方差为1的高斯分布。同时,有如下100个数据点,xdata[100]={0,0.01,0.02,…xi…,0.99}x_{data}[100] = \{0, 0.01, 0.02, …x_i…, 0.99 \}xdata[100]=原创 2021-05-09 19:31:40 · 639 阅读 · 0 评论 -
第5讲 相机与图像
目录1 操作OpenCV图像1 操作OpenCV图像 cpp文件内容如下,#include <iostream>#include <chrono>#include <ctime>using namespace std;#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>using namespace cv;string path =原创 2021-05-03 21:49:25 · 921 阅读 · 12 评论 -
第4讲 李群与李代数
目录1 Sophus的基本使用2 评估轨迹的误差1 Sophus的基本使用 cpp文件内容如下,#include <iostream>#include <cmath>#include <ctime>using namespace std;#include <Eigen/Core> //Eigen核心模块#include <Eigen/Geometry> //Eigen几何模块using namespace Ei原创 2021-05-03 17:17:04 · 483 阅读 · 2 评论 -
第3讲 三维空间刚体运动
Eigen的和使用 cpp文件内容如下,在这里插入代码片更新中!!!原创 2021-04-27 21:34:08 · 695 阅读 · 0 评论 -
第2讲 初识SLAM
2.1 用g++编译cpp文件 代码如下,#include <iostream>using namespace std;int main(){ cout << "Hello SLAM!" << endl; return 0;} 在终端中输入g++ main.cpp,生成可执行文件a.out,继续再终端中输入./a.out,显示Hello SLAM!。效果如下图,2.2 使用cmake cpp文件内容如下,#include原创 2021-04-23 20:42:41 · 335 阅读 · 0 评论