
SLAM基础算法
主要包括SLAM的基础算法,如四元数讲解,旋转矩阵的转换,雅克比矩阵等等
三轮车的视觉进阶_
为什么我的眼里常含泪水,因为我还有一个算法不会......
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【学习笔记】卡尔曼滤波中的协方差矩阵
本文转载至:添加一些自己的理解和标注的重点,算是学习笔记吧;一. 卡尔曼滤波的理论框架:kalman滤波的理论框架是全概率法则和贝叶斯法则,在设定中假设预测和感知均有误差,且均服从正态分布,且预测过程和感知过程采用不同的概率更新策略,具体采取的策略如下所示:预测过程符合全概率法则,是卷积过程,即采用概率分布相加; 感知过程符合贝叶斯法则,是乘积过程,即采用概率分布相乘;以一维运动为例,假如有一个小车,开始位于x=的位置,但是由于误差的存在,其真实分布是高斯分布,其方差是,即其...转载 2020-12-26 17:09:27 · 16985 阅读 · 12 评论 -
【小白冲冲冲!!!】补2:SLAM中最小二乘问题的引入及求解
这一部分是我自己加的, 对于理解非线性优化以及那些常用的优化算法有很大的帮助,所以有时间也可以看看,互相交流;我们都已经知道SLAM中的问题求解其实就是要求出一个位姿,使得噪声项的平方,即误差最小化。 因此, 对于所有的运动和任意的观测, 都可以定义数据与估计值之间的误差:运动方程的误差: 观测方程的误差: 对...原创 2020-12-12 15:43:24 · 345 阅读 · 0 评论 -
【小白冲冲冲!!!】补1: 说一下最大化后验概率
在解释Dog-Leg算法之前, 需要了解与SLAM相关的几个重要的概念, 先验(prior), 后验(posterior),似然(Likehood);这三个概念所对应的公式分别如下, 一直x是结果(如买东西),是原因(双十一来了,或者钱有点多), 即导致x发生的原因, 则先验: 就是原因发生的概率似然: 也就是在某个原因发生时,导致特定结果的概率, 如对于我来讲,双十一发生的情况下,...原创 2020-12-12 15:24:47 · 935 阅读 · 1 评论 -
VINS_MONO+D435i Realtime运行
艰难地运行了三天,终于算是搞定了,主要的时间和精力都花在标定上了, 总结一些需要注意的点,希望能对同样使用VINS-MONO的人有帮助.先说一下我的初衷,其实是想要使用ORBSLAM3的Mono_Inertial的,但是总是会初始化失败,图像可以初始化成功,但是在添加IMU数据后整个track就会LOST, 觉得可能是IMU和相机的标定问题,所以想要试一下VINS-MONO的标定效果;IMU+Camera 标定我采用的是彩色相机+IMU的形式,所以只需要标定单目,单目标定和相机加IMU标定使用的原创 2020-10-16 21:09:26 · 1621 阅读 · 10 评论 -
用CubeSLAM跑自己的数据集
针对CubeSLAM本博客内容如下,主要是阅读论文和代码的一些结果总结,还有一部分总结未完成,同样使用或者对语义slam感兴趣有经验的欢迎交流,该博客后面也会不段更新cubeslam在自己的数据集上的使用结果和一些避坑指南:1. cubeSLAM主要贡献2. 2D->3D的cube转换3. 使用自己的数据集1. 主要贡献:这篇文章在语义SLAM中好评较多,主要是与常见的ORBSLAM实现来物体级别的结合;主要分为两部分,第一部分为2d部分,主要是可以通过平面的bbox生成出立体的c...原创 2020-10-07 16:13:09 · 3056 阅读 · 11 评论 -
【DEBUG】undefined reference to `cv_bridge::toCvShare
使用情况:在一个已经存在的ROS项目中添加Rosbag的图像读取:操作:按照之前的使用方法,分别在package.xml中以及CMakeList.txt的catkin_package() 中添加了对应的包,但是编译时还是出现了未定义的引用;解决:这里主要说一下解决的方法:首先对于cv_bridge中函数的具体使用方法,大家可以参考博客:CV_Bridge的使用,这里对使用该博客后出现的问题做一个补充;首先在使用Ros时,如果需要用到新的package,则需要在两个地方添加,1.在该工程对原创 2020-09-27 14:34:56 · 2540 阅读 · 0 评论 -
Eigen库数据结构内存对齐问题
运行learnorbvi 的时候遇到关于SO3的段错误,查找后发现是Eigen中的问题,具体的解释如下网址:转载 2019-10-28 20:44:36 · 695 阅读 · 1 评论 -
齐次坐标和单应性矩阵
齐次坐标主要是应用在矩阵转换中,我们通常运算的坐标系是“笛卡尔坐标系”,我们已经习惯了笛卡尔坐标系的表述方式,一个点都有唯一对应的数据值来表示,比如原点我们就记做(0,0)点。而笛卡尔坐标系和齐次坐标系的根本区别在于“齐次性”。 所谓齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示。 显然一个向量的齐次表示是不唯一的,齐次坐标的h取不同的值都表示的是同一个点,比如齐次坐标[10,4...原创 2018-12-10 09:39:08 · 1687 阅读 · 1 评论 -
ROS Image_transport使用
本来想要用image_transport来将compressed图像republish成raw的,结果使用过程中遇到找不到image_transport.这一点很矛盾,因为一直都在用这个,一下是遇到的问题集锦;1. 首先是找不到list_transport:s———n@shinan:/opt/ros/kinetic/lib/image_transport$ rosrun image_transport list_transports[rosrun] Couldn't find executab.原创 2020-08-13 20:51:23 · 5653 阅读 · 3 评论 -
ROS 图像相关的命令与应用
本文翻译自 xx大学的机器人课程,以及个人使用的Ros进行图像处理时的一些问题总结:1. ROS 中表示图像1.1 查看图像ROS中最基本的图像表示方式为sensor_mags/Image类型,可以使用RVIZ对该topic所对应的图像画面进行查看,RVIZ中的Camera display功能;或者更简便的,可以使用模块image_view:具体命令为:rosrun image_view image_view image:=topic_name例如, 如果想要查看 Turtlebo...原创 2020-08-11 20:32:31 · 3345 阅读 · 2 评论 -
ORBSLAM3 的改进
周六看到了ORBSLAM3的源码,安装运行后看了一下其代码结构,因为加IMU的部分是针对之前的ORB-VI, 因此大家可以参考jinpang的LearnORBVI可以更纯粹地学习视觉+IMU的组合;这篇文章主要是针对其在Tracking线程做出的改动,尤其是添加Atlas后对Tracking部分的影响,LoopClosing和MapMerging的部分会在后面的分析中讲到,有错误也欢迎各位指正。ORBSLAM3相对于ORBSLAM2做出的主要改动:1. Atlas: 用于保存很多琐碎的地图;主要原创 2020-07-27 09:26:27 · 10721 阅读 · 6 评论 -
cartographer编译过程遇到未定义的dlclose@@GLIBC_2.2.5
1. 使用的安装过程如下:先装下这下面几个依赖sudo apt-get updatesudo apt-get install -y python-wstool python-rosdep ninja-build1. cartographer,cartographer_ros,ceres-solver放在工作空间的src目录下2. protobuf放在工作空间下3. 编译指令:catkin_make_isolated --install --use-ninja一些相关的以来安装完成后原创 2020-07-07 16:19:48 · 2498 阅读 · 6 评论 -
【从理论到代码】旋转矩阵与欧拉角 一
本篇主要是结合odom坐标系与相机坐标系之间的转换,可以用于将odom属于与视觉slam进行融合时的位姿计算;主要分为两部分,第一部分讲述旋转矩阵与欧拉角之间的转换;第二部分讲述如何将odom的位移和角度转换到相机坐标系下;...原创 2020-06-22 20:16:32 · 858 阅读 · 0 评论 -
【直观理解】粒子滤波 原理及实现
该博文集成了几个重要的参考博客,首先感谢这些博主的讲解和实现,因此是转载,不是原创。一. 首先从通俗易懂的层面来理解一下粒子滤波,主要是博主(饮水思源)的博客。粒子滤波可以先分为几个主要的阶段:初始化阶段 ---> 预测阶段--->矫正阶段--->重采样--->滤波初始化阶段:主要就是选定粒子数量。也就是博主所说的放狗去搜索目标;放狗的方式有很多中,一种是让他们均匀分布,第二种是让他们按照高斯分布,即可能性大的地方就多放一点。一般来讲,比较简单的实现都是先让粒子们均匀分布转载 2020-05-23 11:35:20 · 4842 阅读 · 2 评论 -
【思维导图】nav_msgs/Odometry 消息的构成及订阅
导航功能包要求机器人 能够通过里程计信息源发布包含速度信息的里程计nav_msgs/Odometry 消息;本篇整理了nav_msgs/Odometry消息的具体结构,更加清晰一点,以及如果订阅这种类型的topic时应该如何获取数据;了解了具体的结构后来看一下简单一点的订阅实例:typedef struct { float x; float y; float th;} POSE2D;vector<POSE2D> odom_poses;void原创 2020-05-14 19:56:32 · 12894 阅读 · 3 评论 -
SLAM中直接法分类及对应的项目
1. 思路:已知三维点P在相机1中对应的像素点为p1,则可以根据当前相机位姿的估计值,寻找到P在相机2中对应的像素值p2;2. 优化变量:优化光度误差,也就是P在两张图片中对应的两个像素点p1,p2之间的亮度误差;3. 分类:根据在图像中选用的P的来源,可以将直接法分为以下三类1. 稀疏直接法: P来自于稀疏关键点,只比较关键点周围区域的像素值,不使用描述子;2. 半稠密:...原创 2020-02-18 17:47:54 · 839 阅读 · 0 评论 -
catkin_make 只编译一个包
来源于ros wiki上的问题: how to build a single package by catkin_make一般来讲,在工作空间下,使用catkin_make 将会一次性编译src下所有的包,因为catkin_make 相当于以下命令的集合:$ cd ~/catkin_ws$ cd src$ catkin_init_workspace$ cd ..$ mkdir...原创 2020-01-13 20:11:12 · 23714 阅读 · 0 评论 -
IMU预积分公式推到及代码解析
主要是各个公式与代码之间的变换:IMU器件的测量模型:是陀螺仪实际的旋转值,是陀螺仪的测量值, 在测量值与真实值之间相差bias 和 噪声aw 是物体的加速度在世界坐标系下的值,换言之,也可以理解为肉眼可见的加速度,当物体放在桌子上静止时,aw为0,而这时加速度计却能测量到有一个与重力方向相反的力作用于物体,也就是桌子对于物体的向上的支撑力; gw 是世界坐标系下重力加速度, ...原创 2019-11-11 21:29:27 · 4577 阅读 · 6 评论 -
使用Kalibr进行IMU+相机的标定
利用kalibr标定IMU和相机: https://github.com/ethz-asl/kalibr/wiki/Camera-IMU-calibration#2-collect-images在开始需要明确几点的是:需要先安装kalibr,该工具主要是标定相机和IMU, 在标定的过程中需要用到IMU和相机的内参文件,这里的内参文件可以用ROS 帮忙获得,或者如果已经有这个文件可以直接用。...原创 2019-10-29 19:29:13 · 4795 阅读 · 9 评论 -
舒尔补在Slam中的应用
本文参考深蓝学院的VINS课程,加入自己的理解,有疑问欢迎交流。另发现了白巧克力也有相关的博客,附大神链接:https://blog.youkuaiyun.com/heyijia0327/article/details/52822104在看文章之前可以先看一下舒尔补的定义 以及 条件概率和联合概率相关知识还是以多元变量x服从高斯分布,且由两部分组成 x=[a b], 那么变量之间构成的协方差矩...原创 2019-10-24 14:02:57 · 1529 阅读 · 0 评论 -
条件概率,联合概率,边际概率在slam中的应用
SLAM的优化过程其实就是从一个联合概率去分解边界概率和条件概率的过程;1. 概率的定义概率:用数据去计算某件事情发生的可能性;条件概率:条件概率表示在条件Y=b成立的情况下,X=a的概率,记作P(X=a|Y=b)或P(a|b),它具有如下性质:“在条件Y=b下X的条件分布”也是一种“X的概率分布”,因此穷举X的可取值之后,所有这些值对应的概率之和为1即:联合概率:联合概率指的...原创 2019-10-24 14:00:46 · 1033 阅读 · 0 评论 -
舒尔补理论Schur Compliment
在做slam的时候经常遇到的一个概念就是schur complement,了解这个概念,对于理解slam的优化过程也会有很大的帮助;首先给出的是舒尔补的定义:舒尔补的由来其实就是将一个矩阵变成对角阵的过程,比如在线性代数课程中会经常用到的Ax=B的求解,如果手动去求解的话就需要将矩阵A|b化简成为上三角矩阵或者下三角矩阵,主要用到的就是高斯消元法。而舒尔补理论其实就是这个过程的一个...原创 2019-10-24 13:57:34 · 31812 阅读 · 2 评论 -
EUCM鱼眼相机模型详解
EUCM 模型即为extended unified camera model, 主要会涉及到几个坐标系,如下:a. 世界坐标系: 真实世界坐标中的位置坐标,单位为m, 一般对应在表达为X;b. 椭球面坐标系:是一个中转球面,与对应点的世界坐标相差一个scale的系数;也成为P平面, 对应表达为Xpc. 图像坐标系:是椭球面上的点在z=1平面上的投影,也称为M平面,其x,y值与Xp一样,只...原创 2019-08-26 19:35:04 · 2348 阅读 · 3 评论