自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陋室逢雨

To do is easy. Doing is difficult. Done is not important.

  • 博客(56)
  • 资源 (2)
  • 收藏
  • 关注

原创 ORB-SLAM2代码(四)特征点匹配

orb-slam作为一款优秀的特征点slam方法,其特征点匹配好坏相当重要,直接关系到建图和定位的准确度。1、特征点提取orb特征点是对fast角点的改进,通过加入尺度和旋转的属性,使得orb特征点具备了尺度和旋转不变性.1.1 特征点数目每一金字塔层选取特征点理论总数目nfeatures,随着金字塔层数越高(分辨率越低),按照等比数列下降.1.2 fast角点在提取特征之前,先要获...

2018-10-26 20:56:17 13407 1

原创 OpenVINS与MSCKF_VIO RK4积分对比

VIO系统在使用IMU测量值进行状态预测时,需要将连续时间的微分方程离散化为差分方程,离散化的本质是积分,根据数值积分近似程度不同,常用的有欧拉法、中点法和四阶龙格库塔法等,OpenVINS和MSCKF_VIO虽然都使用RK4积分,但具体代码实现却有所区别

2022-09-12 13:55:59 841 2

原创 【OpenVINS】(一)ZUPT

参考:Measurement Update Derivations » Zero Velocity Update在典型的自主汽车场景中,传感器系统将在停止灯处变得静止,其中动态物体(例如交叉路口的其他车辆)可能会快速损坏系统,通过零速检测识别当前车辆处于静止状态,以暂停特征跟踪,来避免定位系统崩溃1. Inertial-based Detection1.1 误差构造当车辆静止(对于车辆匀速直线运动这种case可以通过速度幅值检测剔除),加速度和角速度先验值都是0,先验也是一种观测,所以构造.

2021-10-03 12:27:29 2893

原创 【ESKF】(一)IMU运动学方程离散化

《Quaternion kinematics for error-state kalman filter》1. 三种状态true-state真实状态值,包含高斯噪声,用于EKF作为状态变量使用nominal-state无(不考虑)噪声的状态值,可以是估计值(不考虑噪声)、预测值(不考虑噪声)在预测阶段,由高频的IMU测量值预测得到当前的nominal-state x\mathbf xx,nominal state没有考虑噪声项,因此会存在累计误差,这些误差被堆积到error-state.

2021-10-03 12:16:15 966

原创 GMapping与AMCL中的粒子滤波对比

GMapping和AMCL都是基于粒子滤波实现的,前者是一个SLAM过程,后者是一个Pure Localization过程,导致二者在具体实现有很大不同。1. 粒子属性AMCL粒子仅包含pose+weight,因此需要较多的粒子,才能比较好的表示机器人位姿的估计(比如,max_samples: 1000, min_samples: 100)GMapping粒子包含轨迹+地图+weight,粒子数不能太多,否则占用内存过多2. 粒子初始化GMapping的粒子的pose在刚初始时刻都是.

2021-04-11 19:56:24 1017

原创 【cartographer】(二)分支定界

分支定界将2D ICP问题转换成了DFS问题. 随着分支层数的增加,ICP的步长越小. 定界的关键是保证父分支的ICP得分都比其子分支的得分要高.1. DFS直接使用暴力法求解ICP问题无疑复杂度极高,如果我们看过一些ICP求解代码,即可发现其本质是一个先粗后精遍历的问题,这与DFS深度优先搜索很像,这里的深度在ICP中叫做精度,即遍历的步长,下图是一个DFS搜索树示例,2. 分支(Branching rule)cartographer中设置的DFS树共有8层,分别表示从顶层(dept.

2021-04-05 16:05:10 1808

原创 【cartographer】(一)占据栅格地图更新策略

cartographer中的栅格地图中每个栅格存储的是这个格子的空闲概率,这样scan match就能很方便地转换成了最小二乘问题1. Probability、Odds、CorrespondenceCost、Value的区别Probability:占据概率Odds:p/(1-p),见上CorrespondenceCost:空闲概率Value:将浮点空闲概率映射到[1-32767]的整型value2. 预计算hit_table和miss_table这两个table存的都是Value(.

2021-04-05 11:59:49 2219

原创 【basalt】(一)3D点参数化

basalt 使用2D-dir和inverse-depth对3D点进行参数化,相比VINS只优化逆深度的方式,这种参数化方式更加合理,host帧对点的方向观测确实应该优化一下1、3D点参数化XYZ形式的3D点参数化:P=[XYZ1]P=\begin{bmatrix}X\\ Y\\ Z \\1\end{bmatrix}P=⎣⎢⎢⎡​XYZ1​⎦⎥⎥⎤​表示成逆深度的形式:P=[X/dY/dZ/d1/d],d=X2+Y2+Z2P=\begin{bmatrix}X/d \\ Y.

2020-11-15 12:43:32 826

原创 【Ceres】(三)Covariance Estimation

参考:Ceres Covariance EstimationOne way to assess the quality of the solution returned by a non-linear least squares solver is to analyze the covariance of the solution.求解非线性问题y=f(x)+N(0,I)y = f(x) + N(0, I)y=f(x)+N(0,I)观测yyy是一个独立于xxx的随机非线性函数,其均值是f(x.

2020-11-08 11:49:22 1970

原创 【TSVD】(一)range、null space 和 rank

在做非线性问题的优化时,难免会遇到一些自由度不可观的问题,如果这个自由度在理论上就是不可观的(比如,不管怎么运动都无法令这个自由度从不可观变成可观),那么在优化的时候就要单独地把这个自由度设置成fixed.如果这个自由度理论上是可观的,而这并不表示该自由度在现实中一定是可观的(比如,需要满足一定的运动条件才能令这个自由度可观),也就是,对该自由度约束越多,可观性越强,反之亦然.那么在优化中如何自动判定当前自由度是否可观呢?可观时,更新该自由度,不可观时,fixed该自由度. 下面介绍的TSVD就是为了.

2020-11-08 11:00:01 6874

原创 【刚体运动几何】(一)刚体速度转换

参考:《A Mathematical Introduction to Robotic Manipulation》疑问:刚体的速度只有在选定坐标系时才有谈论意义,比如一台小车可以看作是一个刚体,其上有三个传感器,Camera有一个速度,IMU有一个速度,轮子有一个速度,首先它们的速度是不同的(比如把地球看作一个刚体,地心的速度与地球表面的速度是不同的),那么这些速度的关系是什么呢?VIO中为何不使用Camera系而是IMU作为body系,如果使用Camera作为body系,IMU的测量值(角速度和.

2020-10-07 15:38:38 5216 3

原创 点、向量与旋转向量

参考: 矩阵分析,slam十四讲向量 表示从原点指向某处的一个箭头,不要将向量和它的坐标两个概念混淆,向量是空间中一样东西,比如 aa\boldsymbol a,这里 aa\boldsymbol a 并不是与若干实数相关联的,只有当我们指定这个三维空间中某个坐标系时,才可谈论该向量在此坐标系下的坐标. 即,在取定一组基后,线性空间中的元素与坐标(也就是一个向量)一一对应.旋...

2020-10-07 14:53:31 1951 1

原创 雷达安装方向与运动畸变去除

2D雷达的安装方向与坐标系的定义有关,range矩阵的存储顺序与去畸变有关,当倒装雷达时,会改变我们看到的雷达的旋转方向,需要使用外参对雷达的点云进行转换1. laser to pointcloud的转换公式angle = angle_min + (i * angle_increment)2. range矩阵的存储顺序与去畸变为了方便去畸变(时间插值)需要保证range矩阵中元素的存储顺序与扫描到顺序一致,即,ranges数组中第一个元素存的scan中第一个扫描到点ranges数组中最后一.

2020-10-05 13:46:48 1316

原创 雷达与相机的时空标定工具

激光雷达与相机的外参标定工具1、zhixy/Laser-Camera-Calibration-Toolboxmatlab版本、3D激光雷达需要手动缩放,并选择落在棋盘格上的激光点采集一次数据就能完成标定,一张图片,一帧激光数据2、swyphcosmo/ros-camera-lidar-calibrationfor 3D激光雷达手动选择6对匹配点(激光雷达坐标系的3D点和图像坐标系下的2D点)进行标定3、ethz-asl/lidar_alignfor 3D lidar and

2020-09-21 22:39:55 1545

原创 X1E二代 ubuntu18.04踩坑

old nvidia driver downloadnvidia driver安装下载.run安装(wihout opengl)的驱动出现只能检测到一个屏幕的问题(笔记本内置的屏幕或者扩展屏幕)可行的办法是在software and update中选择附加驱动进行安装,或者输入以下指令:sudo ubuntu-drivers autoinstallnvidia driver卸载参考:NVIDIA* Drivers使用.run安装时,卸载指令sudo /usr/bin/nvidia-.

2020-08-15 09:18:17 2900

原创 欧拉角与旋转矩阵的转换关系

欧拉角因为其奇异性,虽然在优化和插值的不会使用,但是当我们对别人描述一个旋转的过程是怎么样的时候,欧拉角还是很有用的,比如,做无人机姿态控制的时候使用的就是欧拉角,但是搞明白欧拉角是怎么回事确实是一件头疼的事,所以就写下了这篇总结,希望对大家理解欧拉角有所帮助需要区分每次旋转是绕固定轴旋转的,还是绕旋转之后的轴旋转的,如果不特殊指明,下面的讨论都是指:绕旋转之后的轴旋转的。不要局限于表示旋...

2019-10-16 20:24:22 45276 16

原创 里程计航迹推演与IMU预积分

IMU预积分,难以理解的地方主要是,雅可比的计算、怎么通过迭代的方式得到协方差的、使用deltaBias更新预积分是什么鬼其实,这与...

2019-09-15 13:27:42 2889 1

原创 VSLAM之图像预处理

wiki、opencv、《计算机视觉–算法与应用》、《数字图像处理_冈萨雷斯》借用书中一句话以表对图像预处理的看法:有些人可能认为计算视觉研究范围不应该包括图像处理,但是多数计算机视觉应用为了获得满意的结果,需要考虑图像的预处理!对于颜色空间、卷积(注意,需要反转180度)、图像增强和图像复原的区别、相机3A技术等不在这里赘述了一、空间滤波参见opencv中的Smoothing Im...

2019-03-30 09:58:18 1247

原创 【Ceres】(二)LocalParameterization参数化

参考:[1] ceres-solver[2]《A Tutorial on Graph-Based SLAM》[3]《流形与几何初步》[4]《Quaternion kinematics for the error-state Kalman filter》如果直接使用 over-parameterized way(如四元数),使用普通的加法就会打破其 constraint,比如旋转矩阵...

2019-01-15 14:54:17 11404 5

原创 【Eigen】(一)初探

参考:Eigen英文手册Eigen的API手册写的真心详细,推荐阅读. Eigen中涉及的分解方法主要包括,Cholesky分解、QR分解、SVD分解、特征值分解(eigendecomposition)等.1、线性求解问题中几种分解方法的比较针对求解 Ax=bAx=bAx=b 这种线性问题,Eigen提供了下面几种分解方法,每一种方法都提供了一个solve()函数以便求解得到 xxx,...

2018-12-11 17:18:12 3155

原创 常见的特殊矩阵及分解(二)

1、特征分解(Eigen decomposition),又叫谱分解(Spectral decomposition),是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法.注意,只有对可对角化矩阵才可以施以特征分解.A 是一个 N×NN×NN×N 的方阵,且有 NNN 个线性无关的特征向量 qi(i=1,…,N)q_{i} (i = 1, \dots, N)qi​(i=1,…,N) 。这样...

2018-12-09 15:42:57 3594 1

原创 常见的特殊矩阵及分解(一)

参考:维基百科正交矩阵正交矩阵(orthogonal matrix)是一个方块矩阵 QQQ,其元素为实数,而且行与列皆为正交的单位向量,使得该矩阵的转置矩阵为其逆矩阵:QT=Q−1⇔QTQ=QQT=IQ ^ { T } = Q ^ { - 1 } \Leftrightarrow Q ^ { T } Q = Q Q ^ { T } = IQT=Q−1⇔QTQ=QQT=I正交矩阵的行列式值...

2018-12-08 16:11:03 12228 1

原创 四元数

参考:[1]《Quaternion kinematics for error-state kalman filter》[2]《Indirect Kalman Filter for 3D Attitude Estimation》[3]《SLAM十四讲》旋转向量( the rotation vector or the angle-axis vector)和欧拉角可以使用3个量描述旋转,虽没...

2018-12-06 16:29:46 2131 3

原创 【MVG】(二)RANSAC计算单应矩阵

多视图几何、orb-slam2注释版、【程序员眼中的统计学(11)】卡方分布的应用orb-slam2中在初始化的时候会同时估计H矩阵和F矩阵,使用的都是DLT算法,即根据一组匹配点(如,八点法、四点法),直接使用SVD求得线性解,而不是使用优化的方式,所以求得H举着或者F矩阵,跟选取的这组点有很大关系,如果这组点全部都是内点还好,如果存在外点那么得到H矩阵就会偏差很大,而这种情况是很常见的,...

2018-10-31 14:39:40 4180 2

原创 【ORB-SLAM2代码】(五)DBoW2词袋模型

参考:【泡泡机器人SLAM原创专栏-回环检测】DBoW2库详解、SLAM笔记(七)回环检测中的词袋BOWorb-slam在SearchByBoW()函数中做特征匹配时,用到词袋模型BoW来加速匹配过程,不仅如此,在重定位和闭环检测中,也要使用这个BoW,所以很有必要搞明白其原理.1、视觉词袋模型特征点是由兴趣点和描述子表达的,把具有某一类特征的特征点放到一起就构成了一个单词(word)...

2018-10-28 21:19:15 7228 2

原创 【MVG】(一)2D射影几何

参考:计算机视觉中的多视图几何、中科院模重所-视觉基础介绍视觉SLAM中常用的射影变换有:2D欧式变换(如,平面内运动的机器人)、2D仿射变换(SVO中用来恢复图像块用的)、2D射影变换(我们平常说的单应矩阵就是它,对它分解可得到R和t)、3D欧式变换(SLAM中主要解决的问题之一,估计相机的3维运动)、3D相似变换(单目SLAM中会遇到,由尺度漂移造成)等1、2D射影几何照相机的成像...

2018-10-19 16:37:41 1936 1

原创 【ORB-SLAM2代码】(三)定位

设置当前帧的参考关键帧 TrackLocalMap() 函数,UpdateLocalKeyFrames() 函数选择共视程度最高的关键帧作为当前帧的参考关键帧.UpdateConnections过程 首先获得该关键帧的所有MapPoint点,统计观测到这些3d点的每个关键与其它所有关键帧之间的共视程度,对每一个找到的关键帧,建立一条边,边的权重是该关键帧与当前关键帧公共3d点的个数。 ...

2018-09-13 20:46:13 3845 1

原创 【ORB-SLAM2代码】(二)建图

mDescriptor属性ComputeDistinctiveDescriptors() 由于一个MapPoint会被许多相机观测到,因此在插入关键帧后,需要判断是否更新当前点的最适合的描述子. 先获得当前点的所有描述子,然后计算描述子之间的两两距离,最好的描述子与其他描述子应该具有最小的距离中值Visible属性表示: * 1. 该MapPoint在某些帧的视野范围内,通过Fram...

2018-09-04 14:28:12 6300

原创 ROS下标定RGBD相机内参和外参

系统:ubuntu14.04 ros版本: indigo RGBD相机型号:asus xtion pro深度测量原理 参考:https://wenku.baidu.com/view/3c5d90b658fb770bf78a55a0.html 通过红外发射器向固定深度(z0z0z_0)平面投影,得到一幅散斑图案,将这幅散斑图案作为参考,当场景的深度改变时,散斑图案在像素平面的投影位置...

2018-08-20 15:36:23 7542 2

原创 SLAM中基于滤波与优化的方法的联系

参考书:slam十四讲着重理解作者是如何将滤波的方法和优化的方法统一到贝叶斯的框架下的.经典SLAM模型: {xk=f(xx−1,uk)+wkzk,j=h(yj,xk)+vk,j{xk=f(xx−1,uk)+wkzk,j=h(yj,xk)+vk,j\left\{\begin{matrix}x_k=f(x_{x-1},u_k)+w_k \\z_{k,j}=h(y_j,x_...

2018-08-12 17:23:50 5430 1

原创 【SVO代码】(二)角点评分

SVO中FastDetector::detect()中再提取角点后,会使用shiTomasiScore()计算一下这个角点评分,这个得分越高,则特征越优先,那这个得分是怎么得到的呢?下面进行推导.harris角点 在介绍Shi-Tomasi之前需要了解下harris角点,这里只给出关键的点以便于后面理解. 自相关函数: c(x,y;Δx,Δy)=∑(u,v)∈W(x,y)w(u,v)(I...

2018-08-07 16:35:13 1480 6

原创 【SVO代码】(一)从头到尾

基于帧间`4x4`的图像块的灰度不变形来优化相机位姿,这与直接法很像,直接法使用的是一个像素点,接着使用`8x8`的光流进一步优化关键点的位置,经过这一步特征点的位置就很精确了,最后通过构造重投影误差优化相机的位姿和路标点的深度,这与特征点法很像,SVO结合了直接法和特征点法,因此,称它为半直接法

2018-08-05 15:12:39 6206

原创 【EKF】(二)预测与更新

参考书:概率机器人、Probabilistic RoboticsEKF定位实现步骤:预测修正(包括:测量预测、估计更新)下面使用里程计测量机器人的运动输入,路标测量(距离、角度、编号),地图由路标点在世界坐标系下的位置构成。1、预测步骤(Prediction Step)1) KF模型和EKF模型 KF模型: xk=Akxk−1+Bkuk+wkzk=Ckxk...

2018-07-14 20:58:10 3687 1

原创 VSLAM小结

>> 经典vSLAM模型 参考:slambook p24(slam问题形成) 1. 运动方程 2. 观测方程>> 整个视觉slam分为前端、

2018-07-11 10:06:07 1997

原创 【EKF】(一)多传感器融合

典型的非线性函数关系包括平方关系、对数关系、指数关系、三角函数关系等,对非线性系统的滤波问题,常用的处理办法是利用线性化技巧将其转化为一个近似的线性滤波问题,其中应用最广泛的方法是EKF。EKF与KF的区别 EKF依然建立在输入噪声和测量噪声均为高斯的前提下。高斯噪声的好处是它的e指数形式使得高斯与高斯的卷积、乘法结果依然是高斯。线性化 对非线性函数 fff 和 hhh 在 X^k...

2018-07-10 10:33:40 8824 2

原创 【Ceres】(一)自动求导(AutomaticDiff)

g2o中如果没有定义这个边的linearizeOplus(),就会调用数值求导。但是g2o的数值求导比较慢,效果较差。所以下面探讨在g2o中嵌入ceres的自动求导,避免复杂的雅可比矩阵的推导。参考:http://ceres-solver.org/automatic_derivatives.html 先看一下数值求导与自动求导的区别: We will now consider aut...

2018-07-09 13:24:14 6500

原创 g2o、Eigen、Mat矩阵类型转换

Se3<->SE3Quat Matrix3D Rbc=toEigenMatrix3d(se3bc.R()); Vector3D tbc=toG2oVector3D(se3bc.tvec); g2o::SE3Quat Tbc=g2o::SE3Quat(Rbc, tbc);Se2->SE3Qua

2018-06-16 15:36:56 5435

原创 VSLAM之单目相机选型

相机选型时出现的参数的含义 1) 像元尺寸(Pixel size) 像元尺寸指芯片像元阵列上每个像元的实际物理尺寸,通常的尺寸包括14um,10um, 9um , 7um , 6.45um ,3.75um 等。像元尺寸从某种程度上反映了芯片的对光的响应能力,像元尺寸越大,能够接收到的光子数量越多,在同样的光照条件和曝光时间内产生的电荷数量越多。对于弱光成像而言,像元尺寸是芯片灵敏度的一种表...

2018-06-07 17:50:01 8435 1

原创 【ORB-SLAM2代码】(一)线程调度

local mapping线程停止(进入睡眠状态) 需要满足以下两个条件时:loop closing请求停止local mappingtracking已经完成关键帧的插入标志位:mbStopRequested 用于local mapping与loop closing线程之间的调度 LoopClosing线程,CorrectLoop()函数体执行前先调用RequestStop...

2018-05-29 10:45:46 3511 1

原创 ubuntu14.04安装Y430P-GTX850M的nvidia驱动和cuda-8.0

曾经按照一个教程(ubantu显卡驱动(nvidia)安装终极教程)说,我的电脑是装不了独立显卡驱动的,一度想要放弃,直到看到(【双显卡安装】ubuntu下双显卡驱动安装折腾经验完整说明)中用户刀光剑影话悲凉发的截图,燃起了再次装驱动的信心……笔记本型号:Y430P 独显型号:GTX850M 环境:ubuntu 14.04 参考教程: Ubuntu 14.04安装CU...

2018-05-20 01:40:44 2157 1

protues绘制验证叠加定理电路图

protues绘制验证叠加定理电路图,适合广大初学者。

2015-10-28

protues验证叠加定理

protues验证叠加定理电路图,适合初学者

2015-10-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除