SLAM
我不是斗哥
这个作者很懒,什么都没留下…
展开
-
视觉SLAM十四讲P40外积公式推导
原创 2018-10-15 19:08:28 · 579 阅读 · 0 评论 -
OpenCV访问像素点的灰度值
单通道图片访问像素点灰度值img_1.ptr<uchar>(i)[j];多通道图片访问像素点灰度值img_1.ptr<uchar>(i)[j*3]; //第i行j列的B通道其灰度值:img_1.ptr<uchar>(i)[j*3+1]; //第i行j列的G通道其灰度值:img_1.ptr<uchar>(i)[j*3+2...原创 2019-02-25 15:48:10 · 5206 阅读 · 0 评论 -
在运行Pangolin时提示错误:Pangolin X11: Unable to retrieve framebuffer options
在运行Pangolin时提示以下错误:terminate called after throwing an instance of 'std::runtime_error'what(): Pangolin X11: Unable to retrieve framebuffer options2.解决方法:进入Pangolin的CMAKE工程根目录,Pangolin-master/sr...原创 2019-02-18 17:33:07 · 2528 阅读 · 5 评论 -
罗德里格斯公式Rodrigues' rotation formula推导
原创 2019-02-17 11:39:11 · 4287 阅读 · 1 评论 -
视觉SLAM十四讲中P61作业7。
设有小萝卜 1 一号和小萝卜二号位于世界坐标系中。小萝卜一号的位姿为: q 1 = [0.55, 0.3, 0.2, 0.2], t 1 = [0.7, 1.1, 0.2] T (q 的第一项为实部)。这里的 q 和 t 表达的是 T cw ,也就是世界到相机的变换关系。小萝卜二号的位姿为 q 2 = [−0.1, 0.3, −0.7, 0.2], t 2 = [−0.1, 0.4, 0.8] ...原创 2019-02-16 17:27:41 · 856 阅读 · 0 评论 -
c++实现高斯牛顿法(Gauss-Newton method)原理
#include <iostream>#include <opencv2/opencv.hpp>#include <Eigen/Core>#include <Eigen/Dense>using namespace std;using namespace Eigen;/* * 程序说明:为了验证Gauss-Newton法寻找梯度增量的...原创 2019-02-21 17:41:01 · 3223 阅读 · 2 评论 -
要运行ORB_SLAM2之前,安装pangolin出现的错误
在网上的大部分教程中,都是先去github上的pangolin最新版本下载。之后再进行一系列依赖库的安装,再cmake … ,make, make install。然而,在上述github上的pangolin最新版本的CMAKE工程下安装的make过程总是出一大堆的错误,齐刷刷地非常多。错误信息大概是这样:/home/chenww/Desktop/Pangolin-master/includ...原创 2019-01-25 16:42:28 · 5405 阅读 · 2 评论 -
涉及SLAM的基本概念通俗解释
什么是群?群(group)就是一种集合加上一种运算的代数结构什么是李群?李群的定义是指连续光滑的群什么是SO(3)什么是SE(3)?SO(3)是旋转矩阵群,SE(3)是变换矩阵群,其中变换矩阵是旋转加上平移。什么是李代数?为啥需要李代数?首先:观测数据z = (位姿)T * (空间点p) + noise其次:error = z - Tp构造函数J :J(T) = Z - T ...原创 2018-11-28 22:11:40 · 1613 阅读 · 0 评论 -
什么是视觉里程计(Visual Odometry)?
概念:什么是里程计?在里程计问题中,我们希望测量一个运动物体的轨迹。这可以通过许多不同的手段来实现。例如,我们在汽车轮胎上安装计数码盘,就可以得到轮胎转动的距离,从而得到汽车的估计。或者,也可以测量汽车的速度、加速度,通过时间积分来计算它的位移。完成这种运动估计的装置(包括硬件和算法)叫做里程计(Odometry)。概念:什么是视觉里程计?视觉里程计VO的目标是根据拍摄的图像估计相机的运动。...转载 2018-11-16 19:32:47 · 7168 阅读 · 0 评论 -
仿射变换与透视变换(也即射影变换)的直观理解
#仿射变换仿射变换更直观的叫法可以叫做「平面变换」或者「二维坐标变换」。其计算方法为坐标向量和变换矩阵的乘积,换言之就是矩阵运算。在应用层面,放射变换是图像基于3个固定顶点的变换#射影变换(也即射影变换)透视变换更直观的叫法可以叫做「空间变换」或者「三维坐标变换」。图中红点即为固定顶点,在变换先后固定顶点的像素值不变,图像整体则根据变换规则进行变换同理,透视变换是图像基于4个固定顶点的变...翻译 2018-11-16 19:19:10 · 4611 阅读 · 1 评论 -
从提取两帧间的关键点及描述子,到计算出参考帧到当前帧的估计位姿的流程?
computeDescriptors()算出描述子featureMatching()中先算出descriptors_ref_, descriptors_curr_ 参考描述子与当前描述子的min_dis,用min_dis运算进行筛选,筛选出符合条件的feature_matches_并push_back.poseEstimationPnP()中应用3D点pts3d与2D点pts2d的对应关系,...原创 2018-11-20 17:29:51 · 1242 阅读 · 0 评论 -
SLAM中“camera类中坐标转换"方法解读
/*p_p : position_pexil ; p_c:position_camera ; p_w : position_world ; T_c_w : 欧式矩阵(包含R,t信息) from camera to world cpp功能:实现关于pexil,camera,world的任意两者间的坐标转换。pixel2world的实现是能过两步实现的: pixel -> cam...翻译 2018-11-12 09:41:51 · 1117 阅读 · 0 评论 -
拼接点云
#include <iostream>#include <fstream>using namespace std;#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <Eigen/Geometry> #include &l...翻译 2018-11-06 16:33:15 · 914 阅读 · 0 评论 -
Sophus的使用
#include <iostream>#include <cmath>using namespace std;#include <Eigen/Core>#include <Eigen/Geometry>#include "sophus/so3.h"#include "sophus/se3.h"int main( int argc,...原创 2018-10-23 16:24:32 · 1809 阅读 · 0 评论 -
Eigen的基本用法
#include <iostream>#include <cmath>using namespace std;#include <ctime>// Eigen 部分#include <Eigen/Core>// 稠密矩阵的代数运算(逆,特征值等)#include <Eigen/Dense>#include <Eige...原创 2018-10-19 20:25:32 · 2757 阅读 · 0 评论 -
奇异值分解(SVD)原理
关于SVD可以参考这篇文章。写得很好。ICP(即指匹配好的两组3D点间的运动估计问题)中,有两种求解方式:线性代数求解(主要为SVD)和非线性优化方式求解。...原创 2019-02-26 20:52:20 · 516 阅读 · 0 评论