![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SLAM
文章平均质量分 51
floatinglong
这个作者很懒,什么都没留下…
展开
-
视觉SLAM实践入门——(20)视觉里程计之直接法
啊原创 2021-06-07 02:40:12 · 1012 阅读 · 0 评论 -
视觉SLAM实践入门——(19)视觉里程计之多层光流法(光流金字塔)
对于单层光流法,多层光流法基于图像金字塔,通过对上层图像使用光流法得到估计值,再将估计值反馈到下层作为计算的初始值,从而解决单层光流法无法估计较大运动等问题原创 2021-05-30 23:04:01 · 1016 阅读 · 2 评论 -
视觉SLAM实践入门——(18)视觉里程计之单层光流法
编译本节代码需要使用 opencv4,安装和使用的注意事项参考https://blog.csdn.net/floatinglong/article/details/117173740对于下面这种找不到CV_GRAY2BGR 的错误,原因在于新版的 opencv 修改了它的名字error: ‘COLOR_GRAY2BGR’ was not declared in this scope将代码中的C...原创 2021-05-30 22:45:36 · 546 阅读 · 1 评论 -
视觉SLAM理论入门——(10)视觉里程计之光流和直接法
1、特征点法的缺点特征点法具有以下缺点:1、关键点的提取与描述子的计算非常耗时2、特征点的数量远小于图像像素数量,只使用特征点丢弃了大部分可能有用的图像信息3、相机有时会运动到特征缺失的地方,往往这些地方没有明显的纹理信息,从而使得特征点数目减少,无法估计运动克服特征点法缺点的思路:1、只计算关键点,不计算描述子。使用光流法跟踪特征点的运动,回避计算和匹配描述子带来的时间2、只计算关键点,不计算描述子。使用直接法计算特征点在下一时刻图像的位置3、不使用特征点,而是根据像.原创 2021-05-24 16:24:42 · 1104 阅读 · 2 评论 -
视觉SLAM实践入门——(17)使用非线性优化方法求解ICP
啊原创 2021-05-22 16:17:59 · 1040 阅读 · 0 评论 -
视觉SLAM实践入门——(16)使用SVD求解ICP
啊原创 2021-05-21 23:29:22 · 522 阅读 · 0 评论 -
视觉SLAM理论入门——(9)视觉里程计之特征点法—ICP
ICP用于解决3D-3D的位姿估计问题。原创 2021-05-21 17:18:50 · 448 阅读 · 0 评论 -
视觉SLAM实践入门——(15)使用g2o求解PnP
啊原创 2021-05-21 00:58:48 · 798 阅读 · 0 评论 -
视觉SLAM实践入门——(14)高斯牛顿法求解PnP
啊原创 2021-05-20 17:25:52 · 586 阅读 · 0 评论 -
视觉SLAM实践入门——(13)使用OpenCV的EPnP求解PnP
啊原创 2021-05-19 23:41:39 · 1868 阅读 · 0 评论 -
视觉SLAM实践入门——(12)三角测量
啊原创 2021-05-18 00:47:02 · 1749 阅读 · 0 评论 -
视觉SLAM实践入门——(11)用对极约束求解相机运动
啊原创 2021-05-17 19:08:16 · 1201 阅读 · 0 评论 -
视觉SLAM理论入门——(8)视觉里程计之特征点法—PnP
PnP是求解3D到2D点对运动的方法原创 2021-05-16 22:18:01 · 1518 阅读 · 0 评论 -
视觉SLAM理论入门——(7)视觉里程计之特征点法—对极几何
当采用单目相机,只知道2D像素坐标,需要根据两组2D点估计运动,这时用到了对极几何1、对极约束2、本质矩阵3、单应矩阵原创 2021-05-15 22:17:50 · 1158 阅读 · 0 评论 -
视觉SLAM实践入门——(10)特征提取和匹配(修复源码中的段错误bug)
啊原创 2021-05-15 18:38:32 · 1276 阅读 · 1 评论 -
视觉SLAM实践入门——(9)曲线拟合之g2o库
123原创 2021-05-15 16:46:16 · 1051 阅读 · 2 评论 -
视觉SLAM实践入门——(8)使用Ceres库进行曲线拟合
11原创 2021-05-13 18:12:36 · 342 阅读 · 0 评论 -
视觉SLAM理论入门——(6)视觉里程计之特征点法—特征点
一个SLAM系统可以分为前端和后端,其中前端称为视觉里程计,其作用是根据相邻图像的信息估计出粗略的相机运动,给后端提供较好的初始值视觉里程计的算法主要有两大类:特征点法(主流方法)、直接法1、特征点视觉里程计的核心问题是根据图像估计相机运动。特征点法是从各个图像中选取相同的有代表性的点(相机视角发生少量变化时,这些点保持不变),在这些点的基础上讨论相机位姿估计问题以及这些点的定位问题。在经典SLAM模型中,这些点是路标;在视觉SLAM中,这些点是图像特征数字图像在计算机中以灰度值...原创 2021-04-30 00:22:31 · 2062 阅读 · 0 评论 -
视觉SLAM理论入门——(5)非线性优化
即使我们有着高精度的相机,我们得到的数据通常是受各种未知噪声影响的,运动方程和观测方程也只能近似的成立,因此需要研究如何在有噪声的数据中进行准确的状态估计。1、状态估计问题1.1最大后验与最大似然经典 SLAM 模型由一个运动方程和一个观测方程构成其中表示相机位姿,表示传感器输入,表示观测数据,表示路标,和表示噪声,一般认为噪声服从零均值高斯分布~,~运动方程在视觉 SLAM 中没有特殊性,一般讨论观测方程。对于观测方程,希望通过带噪声的数据和,推断位姿和地图(以及它们的概率分布),原创 2021-04-27 22:20:26 · 944 阅读 · 0 评论 -
视觉SLAM理论入门——(4)相机模型
相机将三维世界中的坐标点映射到二维图像平面的过程能够用一个针孔模型进行描述。另外,由于相机中透镜的存在,会使得光线投影到成像平面的过程中会产生畸变。因此,使用针孔和畸变两个模型来描述整个投影过程。...原创 2021-04-27 15:14:09 · 643 阅读 · 0 评论 -
视觉SLAM实践入门——(7)利用高斯牛顿法进行曲线拟合
考虑满足以下方程的曲线其中a,b,c是曲线参数,w是高斯噪声w~(0,σ^2)(服从零均值的高斯分布)。假设有N个关于x,y的观测数据点,通过根据这些数据求解下面最小二乘问题,求出曲线参数在求解这个问题时,程序里先根据模型生成x,y的真值,然后在真值中添加高斯分布的噪声。使用高斯牛顿法从带噪声的数据拟合参数模型。定义误差为:计算每个误差项对状态变量的导数:则#include <iostream>#include <opencv2/open原创 2021-04-26 18:33:16 · 990 阅读 · 1 评论 -
视觉SLAM实践入门——(6)OpenCV之图像去畸变
图片位于 slambook2/ch5/imageBasics/distorted.png去畸变函数cv::Undistort()#include <iostream>#include <string>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;#define IMAGE_FILE "../distorted.png"int main(int argc,原创 2021-04-26 15:25:48 · 339 阅读 · 0 评论 -
视觉SLAM实践入门——(5)OpenCV之基本用法
安装OpenCV下载链接https://opencv.org/releases/选择 OpenCV – 3.1.0 — Sources,下载并解压,得到opencv-3.1.0目录先安装一些依赖项:sudo apt install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev libtbb-dev配置编译安装OpenCVcd.原创 2021-04-23 19:37:23 · 851 阅读 · 0 评论 -
视觉SLAM实践入门——(4)Sophus库的基本用法
安装Sophus库前面已经通过下面 命令获取了资源包,在slambook2/3rdparty中有Sophus库git clone https://github.com/gaoxiang12/slambook2.git方法1:将库的头文件拷贝到/usr/include后可以直接使用sudo cp slambook2/3rdparty/Sophus/sophus /usr/include -r方法2:将库(包括整个cmake工程)拷贝到工程的根目录(如useSophus)后,配置cmak原创 2021-04-23 16:05:55 · 660 阅读 · 0 评论 -
视觉SLAM实践入门——(3)运动的可视化演示
旋转矩阵等数学表示方式不直观,考虑将相机的运动轨迹画到一个窗口中。假设轨迹文件已经存储在trajectory.txt,每一行用下面格式存储:time,tx,ty,tz,qx,qy,qz,qw,其中time是位姿记录时间,t是平移,q是旋转四元数(以机器人坐标系到世界坐标系的记录Twr)在画轨迹时,把轨迹画成一系列点组成的序列。这些点的坐标,其实是机器人坐标系的原点在世界坐标系中的坐标。考虑机器人坐标系的原点Or,这个原点在世界坐标系中的坐标OwOw = Twr * Or = twr,其中原创 2021-04-23 14:49:47 · 1584 阅读 · 0 评论 -
视觉SLAM实践入门——(2)Eigen库的安装和基本用法
安装安装命令sudo apt install libeigen3-dev查找库的位置sudo updatedblocate eigen3这个库只使用了头文件搭建,在程序为了使用这个库,需要包含相关头文件。库默认安装路径是/usr/include/eigen3,而kdevelop默认头文件路径是/usr/include,因此为了使用这个库有(但不限于)以下几种办法:方法1:包含头文件时,加上/eigen3前缀,如:#include <eigen3/Eigen/C.原创 2021-04-22 17:37:54 · 1651 阅读 · 0 评论 -
视觉SLAM实践入门——(1)cmake和kdevelop安装和基本用法
cmake当工程比较大,代码文件多,直接使用命令行进行编译链接操作繁琐,不便于管理。使用cmake进行编译,只需要管理CMakeLists.txt文件安装命令:sudo apt install cmakecmake的基本用法:在当前目录新建CMakeLists.txt,添加以下内容cmake_minimum_required(VERSION 2.8) //指定最低版本project(HelloSLAM) //声明工程add_executable(helloSLAM hello原创 2021-04-22 15:50:55 · 551 阅读 · 0 评论 -
视觉SLAM理论入门——(3)李群与李代数
群的概念群是一种集合加上一种运算的代数结构,若记集合为,运算为,则群记为。群满足以下性质(封结幺逆):1、封闭性2、结合律3、幺元4、逆李群与李代数定义李群是指具有连续光滑性质的群,整数群是离散的群,不是李群。前面说的特殊正交群和特殊欧氏群都属于李群(一个刚体可在空间中连续光滑旋转、平移)。这两个李群对加法不封闭,但是对乘法封闭(两个旋转矩阵相乘表示做了两次旋转):每个李群都有与之对应的李代数,李代数描述了李群的局部性质,定义如下:李.原创 2021-04-19 19:34:19 · 1076 阅读 · 0 评论 -
视觉SLAM理论入门——(2)刚体运动
重要概念1、位置:相机在空间中的哪个地方2、姿态:相机的朝向3、向量:向量是空间中的一个东西,并不与实数发生联系,只有在指定坐标系的情况下,向量才有坐标4、向量积:(1)内积是个标量(2)外积是个向量,方向垂直于两个向量组成的平面其中 ^ 表示是反对称符号,它将一个向量映射成一个反对称矩阵例如:映射为旋转矩阵机器人的运动是刚体运动,它保证了同一个向量在不同坐标系下长度和角度都不会发生变化机器人的相机是一个移动坐标系的原点,它位于一个固定不变的世界...原创 2021-04-18 22:45:14 · 384 阅读 · 0 评论 -
视觉SLAM理论入门——(1)绪论
使用书籍:《视觉SLAM十四讲从理论到实践》定义同时定位与地图构建SLAM(simultaneous Localization and Mapping)是指在没有环境先验信息的情况下,在运动过程中估计自己的运动并且建立环境模型从上面定义可以看出,SLAM的目标有两个:1、定位——确定自身的位置(状态)2、建图——确定自身的环境(地图)传感器为了完成上面两个目标需要使用传感器。按照安装位置的不同,传感器可以分为两类:1、安装于环境中的传感器(黑线、无线电定位设备等),它们需要人原创 2021-04-18 19:12:30 · 283 阅读 · 0 评论