SLam
文章平均质量分 88
SLam从入门到入土……
薛定猫
talk is cheap,show me the code
展开
-
Ubuntu16.04疑难杂症
在Ubuntu16.04下面总会遇到些各种各样的问题,报错,在这里稍微记录一下,以后遇到了有个参考原创 2020-08-12 11:03:24 · 1634 阅读 · 5 评论 -
SLAM测评工具evo安装与使用
SLAM算法测评工具evo总结文章目录evo简介evo安装快速安装从源码安装运行案例1. Plot multiple trajectoriesevo简介evo是一个很好的测评工具,它可以根据时间戳将轨迹进行对齐,同时可以将不同尺度的轨迹按照你指定的标准轨迹进行拉伸对齐,并可以算出均方差等评定参数,用于测评slam算法性能github地址:https://github.com/MichaelGrupp/evoevo安装evo共有两种安装方式快速安装pip install evo --upg.原创 2020-06-28 19:27:32 · 2385 阅读 · 3 评论 -
SLAM练习题(十三)—— 四元数插值
SLAM 学习笔记文章目录证明四元数线性插值实践:图像序列和IMU对齐总结四元数在对姿态的描述具有独特的优势,非常适合用来表示空间中的旋转。这主要是因为几个原因:四元数解决了其他3维空间旋转算法会遇到的恼人的问题,比如使用欧拉角来表示旋转操作时会遇到的万向节锁问题计算效率比旋转矩阵方法高,因为表达四元数只需要4个数,旋转矩阵需要9个。其简单的数学表达方式可以被用来规划出高阶连续姿态运动以及在多姿态间插值以下题目来自计算机视觉life从零开始一起学习SLAM系列证明四元数线性插值.原创 2021-05-03 13:48:36 · 888 阅读 · 1 评论 -
SLAM练习题(十二)—— ICP(Iterative Closest Point)
SLAM 学习笔记文章目录推导ICP求解ICP原理线性方法(SVD分解)非线性方法ICP实战代码总结ICP全称Iterative Closest Point,翻译过来就是迭代最近点。ICP在点云配准领域应用的非常广泛,因此基于深度相机、激光雷达的算法使用ICP的频率比较高。推导ICP以下题目来自计算机视觉life从零开始一起学习SLAM系列推导ICP中的一个步骤证明:《视觉SLAM十四讲》第174页公式7.55中的各符号定义见书上,其中,tr表示矩阵的迹。直接设出qi,R,qi′q.原创 2021-05-02 10:06:21 · 751 阅读 · 1 评论 -
SLAM练习题(十一)—— G2O实战
SLAM 学习笔记写在前面的话:算是一点小小的感悟吧(* ̄︶ ̄)估计位姿的方法有线性方法和非线性方法,线性方法就是特征点法中的2D-2D的对极约束,3D-2D的PnP问题。非线性方法有BA优化,它将位姿的估计问题转换成了一个误差关于优化量的最小二乘极值问题,它通过雅克比矩阵指导迭代方向,获得最优的位姿。需要注意的是g2o是一个图优化库,是一个非线性优化库,在使用线性方式求位姿的时候用不到这个库,一般是在使用线性方法(对极约束,PnP……)获得一个误差的估计值后,再用g2o构建图优化问题,设置顶点.原创 2021-05-01 09:09:51 · 774 阅读 · 3 评论 -
SLAM练习题(十)—— 图优化G2O
SLAM 学习笔记文章目录g20框架求解步骤1创建一个线性求解器2创建BlockSolver3创建总求解器solver4创建稀疏优化器(SparseOptimizer)5定义顶点和边并添加顶点定义顶点举个栗子添加顶点边定义边举个栗子添加边6设置优化参数并开始执行优化g20框架在SLAM领域,基于图优化的一个用的非常广泛的库就是g2o,它是General Graphic Optimization 的简称,是一个用来优化非线性误差函数的c++框架。求解过程:先指.原创 2021-04-30 09:47:16 · 586 阅读 · 0 评论 -
SLAM练习题(九)——点云融合、滤波、平滑、网格化
SLAM 学习笔记文章目录点云融合题目项目结构讨论:点云滤波题目讨论点云平滑题目讨论点云网格化题目讨论以下题目来自计算机视觉life从零开始一起学习SLAM系列点云融合题目题目: 点云融合实验。已经给定3帧(不连续)RGB-D相机拍摄的 RGB + depth 图像,以及他们之间的变换矩阵(以第一帧为参考帧),请将上述3帧RGB-D图像分别生成点云并融合出最终的点云输出。代码框架及数据 链接:https://pan.baidu.com/s/1YPXvvR5b.原创 2021-04-29 09:42:42 · 1630 阅读 · 1 评论 -
SLAM练习题(八)——单应矩阵
SLAM 学习笔记文章目录单应矩阵总结:单应矩阵以下题目来自计算机视觉life从零开始一起学习SLAM系列题目: 利用OpenCV编程实现虚拟广告牌的效果。提供两张图,一张是“计算机视觉life”公众号的logo,另外一张是带广告牌的原图,请用单应矩阵实现将原图中广告牌替换为提供的logo的效果。要求通过鼠标点击来选择要替换的广告牌的四个顶点。代码框架及图片见: 链接:https://pan.baidu.com/s/1uRsBJWahU7uQ7nOk1R49o.原创 2021-04-28 14:10:29 · 483 阅读 · 0 评论 -
SLAM练习题(七)—— 对极约束
SLAM 学习笔记文章目录对极约束讨论对极约束以下题目来自计算机视觉life从零开始一起学习SLAM系列题目: 证明:对三维列向量下面等式恒成立。其中等式左边 X 表示叉乘,等式右边上三角符号表示反对称矩阵。a⃗×b⃗=a⃗∧b⃗\vec{a} \times \vec{b}=\vec{a}^{\wedge} \vec{b}a×b=a∧b这个证明还是比较简单的,利用叉乘和^ 的定义即可。讨论对极约束的推导:在极平面中:由于叉乘只在三维空间里有定.原创 2021-04-27 22:06:02 · 943 阅读 · 3 评论 -
SLAM练习题(六)—— 相机成像模型
SLAM 学习笔记文章目录相机成像模型讨论相机成像模型以下题目来自计算机视觉life从零开始一起学习SLAM系列题目: 相机视场角比较小(比如手机摄像头)时,一般可以近似为针孔相机成像,三维世界中的直线成像也是直线。但是很多时候需要用到广角甚至鱼眼相机,此时会产生畸变,三维世界中的直线在图像里会弯曲。因此,需要做去畸变。 本题给定一张广角畸变图像,以及相机的内参,请完成图像去畸变过程。框架链接:https://pan.baidu.com/s/17KNXoprr.原创 2021-04-26 10:55:29 · 783 阅读 · 6 评论 -
SLAM练习题(五)——李群李代数
计算机视觉life从零开始一起学习SLAM 学习笔记文章目录推导李代数小se(3)的指数映射Sophus库练习问题:推导李代数小se(3)的指数映射(题目来自计算机视觉life)题目:推导李代数小se(3)的指数映射。我们知道对于大SE(3),其对应的李代数为小se(3)。其定义如下:se(3)={ξ=[ρϕ]∈R6,ρ∈R3,ϕ∈so(3),ξ∧=[ϕ∧ρ0T0]∈R4×4}\mathfrak{s e}(3)=\left\{\boldsymbol{\xi}=\left[\begin{ar.原创 2021-04-25 10:15:43 · 530 阅读 · 0 评论 -
SLAM练习题(四)——三维空间刚体旋转
从零手写SLAM笔记文章目录旋转方式转化讨论旋转方式转化题目1:已知旋转矩阵定义是沿着Z轴旋转45°。请按照该定义初始化旋转向量、旋转矩阵、四元数、欧拉角。请编程实现:1、以上四种表达方式的相互转换关系并输出,并参考给出的结果验证是否正确。2、假设平移向量为(1,2,3),请输出旋转矩阵和该平移矩阵构成的欧式变换矩阵,并根据欧式变换矩阵提取旋转向量及平移向量。**知识点:**1、学习eigen中刚体旋转的四种表达方式,熟悉他们之间的相互转换关系 2、熟悉旋转平移和欧式变换矩阵的相互转换关系.原创 2021-04-24 09:22:20 · 718 阅读 · 0 评论 -
SLAM练习题(三)——齐次坐标
齐次坐标题目:证明:两点p, q 的叉乘 可以表示 过两点的直线l,即 l = p x q.知识点:齐次坐标参考答案:已知两个点p, q,记p×q=lp×q=lp×q=l,则:(p×q)∗pT=l∗pT=0(p×q)*p^T= l*p^T=0(p×q)∗pT=l∗pT=0(p×q)∗qT=l∗qT=0(p×q)*q^T = l*q^T=0(p×q)∗qT=l∗qT=0所以点p,q都在直线lll上,即两点两点p, q 的叉乘 可以表示 过两点的直线lll附: 齐次坐标的五大优势:非常方便的原创 2021-04-23 10:48:38 · 648 阅读 · 0 评论 -
SLAM练习题(二)—— C++新特性:简化循环、自动类型推导、列表初始化、lambda函数
从零手写SLAM笔记文章目录简单循环、自动类型推导、列表初始化lambda函数sort()函数简单循环、自动类型推导、列表初始化题目:请使用C++新特性改写以下函数。该函数功能:将一组无序的坐标按照“Z”字形排序,并输出。题目如下图所示:知识点:熟悉C++新特性(简化循环、自动类型推导、列表初始化、lambda函数/*)#include <opencv2/opencv.hpp>#include <iostream>#include <vector>.原创 2021-04-22 13:06:30 · 343 阅读 · 2 评论 -
SLAM练习题(一)—— 格式化图像名字、Eigen基本操作
从零手写SLAM笔记文章目录格式化图像名字eigen基本操作格式化图像名字题目:SLAM是处理序列图像的,有时候需要格式化的图像名字用作输入。前面提到的TUM的RGB-D数据集中图像是根据时间命名的,请从下面链接下载数据集fr1/desk Computer Vision Group - Dataset Download 并解压。请编程实现将文件夹/rgb下以时间命名的序列图片重新命名为0000-9999的格式。知识点: 熟悉cmake的使用、OpenCV读写操作、C++的string操作友情链.原创 2021-04-21 08:56:17 · 481 阅读 · 4 评论 -
从零手写VIO(六)——三角化
对从零手写VIO的第六次作业进行总结文章目录三角化证明三角化问题证明y=u4为最优解三角化程序思路三角化证明三角化问题证明y=u4为最优解回顾我们的原始问题如下:求解D2n×4y4×1=0D_{2 n \times 4} y_{4 \times 1}=0D2n×4y4×1=0这是一个超定方程,本质上求解得到的是一个最小二乘解,使用如下表示:miny∥Dy∥2=(Dy)T(Dy)=yTDTDy\min _{\boldsymbol{y}}\|D y\|^{2}=(D y)^{.原创 2020-06-27 20:07:40 · 1156 阅读 · 3 评论 -
从零手写VIO(五)——海塞矩阵、舒尔补求解、滑动窗口算法
从零手写VIO的第五次作业总结文章目录基础作业MakeHessian()信息矩阵理论基础代码作业题目:基础作业MakeHessian()信息矩阵理论基础代码void Problem::MakeHessian() { TicToc t_h; // 直接构造大的 H 矩阵 ulong size = ordering_generic_; MatXX H(MatXX::Zero(size, size)); VecX b(VecX::Zero(size)).原创 2020-06-26 19:21:55 · 1406 阅读 · 1 评论 -
从零手写VIO(四)——信息矩阵
对从零手写VIO第四次作业进行总结文章目录1 信息矩阵与边缘化2 BA信息矩阵代码实战作业:1 信息矩阵与边缘化2 BA信息矩阵代码实战参考手写VIO学习总结(四)原创 2020-06-22 18:19:41 · 1553 阅读 · 0 评论 -
从零手写VIO(三)——LM算法
深蓝学院《SLAM进阶:从零手写VIO》课后第三次作业原创 2020-06-20 20:36:05 · 1425 阅读 · 1 评论 -
从零手写VIO(二)——IMU仿真、MU imu_utils或kalibr_allan标定
在这里对从零手写VIO的第二次作业进行总结:IMU代码仿真,使用使用Allen方差工具标定IMU imu_utils或kalibr_allan原创 2020-06-17 23:53:51 · 2812 阅读 · 12 评论 -
从零手写VIO(一)——初识VIO
从零手写VIO第一讲作业前面几个综述问题大部分 完全参考的大佬的博客https://blog.csdn.net/learning_tortosie/article/details/102408738公式推导部分略有不同1. 视觉与IMU融合之后有何优势?要说视觉与IMU融合之后有何优势,首先要明白视觉与IMU各自的局限:(1)IMU虽然可以测得加速度和角速度,但这些量都存在明显的漂移,使得积分两次得到的位姿数据非常不可靠。好比说,我们将IMU放在桌上不动,用它的读数积分得到的位姿也会漂出十万八千里转载 2020-06-16 11:54:27 · 2531 阅读 · 3 评论 -
Ubuntu16.04下安装MATLAB2018a导致根目录爆炸?
Ubuntu16.04下安装MATLAB2018a导致根目录爆炸?近来在看从零写VIO课程的时候,由于要对IMU数据进行标定,在使用im_utils工具的时候,发现需要使用MATLAB,又不想来回切回Windows系统,所以在网上搜了下,开始在Ubuntu16.04下安装MATLAB2018a.安装MATLAB2018aMatlab2018a百度云盘网上有很多,随便找找就能找到,这里就不放了。需要的评论里找我要哈。下载后安装比较简单,参考前辈的教程:Ubuntu16.04安装Matlab2018a原创 2020-06-16 00:32:16 · 521 阅读 · 3 评论 -
Slam14讲——直接法
EKF滤波器形式后端前端估计的数据不太好,需要后端进行优化。后端与前端的传感器类型没有多大关系。后端估计:目前批量式的用的比较多。原创 2020-04-16 19:10:01 · 504 阅读 · 0 评论 -
视觉SLAM14讲——VO
Slam14讲学习笔记(七) 视觉里程计本讲主要使用了特征提取关键点和描述子,对极约束估计位姿(RT),三角计算估计深度等头文件及函数声明#include<iostream>#include<opencv2/core/core.hpp>#include<opencv2/features2d/features2d.hpp>#include<...原创 2020-04-16 19:10:49 · 439 阅读 · 0 评论 -
Linux从入门到入土
Linux常用命令在此开个专题,用来记录一下在使用Linux中常用的命令。以及LInux中碰到的错误原创 2020-05-30 14:02:30 · 452 阅读 · 0 评论 -
ROS那些坑
ROS那些坑在此开一个专题,用来记录在使用ROS过程中遇到的问题(大坑)以及解决方法。安装过程中的一些坑我的是Ubuntu16.04,ROS安装对应版本kinetic。安装直接参考ROS官网:http://wiki.ros.org/kinetic/Installation安装过程中出现的问题:在进行sudo rosdep init的时候,出现了DistributionNotFound: The ‘rosdep==0.19.0’ distribution was not found and is r原创 2020-05-18 08:20:33 · 890 阅读 · 0 评论 -
Eigen库的那些坑(一)
Eigen库的那些坑(一)在此开一个专题,专门记录一些在使用Eigen库过程中遇到过的一些大坑。说多了,都是一把辛酸泪……好了,正文开始Eigen内存对齐问题在跑点云融合实验时,编译的时候遇到了报错:/usr/include/eigen3/Eigen/src/Core/DenseStorage.h:128: Eigen::internal::plain_array<T, Size...原创 2020-05-05 07:50:07 · 11391 阅读 · 6 评论 -
Ubuntu16.04重装日记(三)
这里主要记录一下一些大型工具的安装。持续更新……原创 2020-06-29 18:42:51 · 3233 阅读 · 0 评论 -
Ubuntu16.04重装日记(二)
Ubuntu16.04重装日记(二)这里主要记录一下常用的一些工具配置基础工具大部分工具都可以通过sudo apt-get install 的方式获取sudo apt-get install cmake vim这里获取的cmake是3.5.1版本的,勉强够用。这类东西一般用到时候再下载,很方便。Slam库!!! 其实写这篇博客就是记录一下slam各个库在Ubuntu16.04的安...原创 2020-04-10 10:07:50 · 1459 阅读 · 3 评论 -
Ubuntu16.04重装日记(一)
之前一直在虚拟机VM ware上用的Ubuntu14.04的虚拟机,但是感觉比较卡,所以最近准备装一个Ubuntu16.04的双系统。记录一下过程,原创 2020-04-09 10:23:59 · 2075 阅读 · 1 评论