自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 资源 (13)
  • 收藏
  • 关注

原创 基于反光柱特征的激光定位算法思路

比如我们设定右边多边形图的一个像素代表0.1米,则lidar扫描到的点之间的距离如果是3.132m,在右边图中就是31个像素(int)3.132/0.1。这个像素值作为多边形图中map数据结构的key,在根据真实的边长寻找匹配时,可以快速定位要寻找边的范围,比如3.132m的边在key为[31,32]范围内寻找匹配。大体思路是,根据激光雷达扫描到反光材料的反射值来确定扫到反光柱开始和结束的两条线束,计算两者之间的夹角,根据三角关系就能算出反光柱圆心到激光雷达的dist和angle。

2024-03-03 12:17:16 698

原创 12. 双目视觉之极线矫正

通过两个相机对某场景同时观测时,当我们知道了相机的内(外)参以及两者之间的基线,然后通过某种方式找到两相机对同一世界点的观测的关联关系(类似特征匹配),就可以计算出视差,最终通过下列公式计算出观测到的世界点的深度。上一节介绍的对极几何约束告诉我们,左相机对世界点的观测,在右相机上找到对应的观测位置,这个位置在右极线上,不严谨地说,也就是我们在算法上只需要沿着右图像的极线去遍历像素并与。我们知道图像在计算机加载时,内存是连续的,我们在找那条在极线上的点的时候需要跳跃好多点,这会造成效率上的降低。

2024-01-27 17:48:08 1888 2

原创 11. 双目视觉之立体视觉基础

如下图,世界点P只要是在那条红色线上,他在相机上的成像位置就是P‘,所以我们无法知道相机看到的P’对应的世界点的三维位置。(就像我们的眼睛一样,我们的双眼就是一个完美的立体视觉系统。但是从单目视觉的角度来看,它并不能有“近和远”的概念,因为无论那些远处的人是“真人”还是“模型”,他都会给出这么一副图像,从数据的层面来看,他就是给的二维坐标。显然,光心和成像平面是固定的,也就是说极点是固定的,基线也是固定的,而世界点们构成的极平面是绕着基线作为轴转动的,这也造成对极线也是以基线为轴在成像平面内移动。

2024-01-27 13:05:19 1575

原创 8. 《自动驾驶与机器人中的SLAM技术》基于保存的自定义NDT地图文件进行自动驾驶车辆的激光定位

体素地图数据中,仅存储了均值和信息矩阵。代码的内容:加载关键帧对应的点云,对其进行滤波,然后计算点。的方法,加载地图数据耗时要比加载点云要慢很多;的关键帧数目我删掉了一些,因为实在是耗时有点久。①统计比较两者在加载地图和配准过程两方面的耗时情况。②统计比较两者需要加载的地图数据占存储大小。附近,于是试着在这个范围寻找合适的阈值。体素并计算均值和协方差,这些在第七章的。使用原来的阈值明显不对,观察,得分在。原先基于点云地图的激光定位使用的是。体素中的均值和协方差矩阵信息。云中的每个点对应的地图区块。

2024-01-11 23:43:41 1337 1

原创 7. 【自动驾驶和机器人中的SLAM技术】基于点面ICP的iekf-lio系统

【代码】7. 【自动驾驶和机器人中的SLAM技术】基于点面ICP的iekf-lio系统。

2023-12-28 23:25:24 475 3

原创 6.【自动驾驶与机器人中的SLAM技术】鲁邦核函数的含义和应用

在实际优化过程中,很可能会出现误匹配的项,这些误匹配的项被算法当做要降低的误差对待,由于误匹配的“误差”会很大,降低它能够明显使总的误差降低,但是显然这些项不应该被当做误差项对待,因为他会抹平其它正确边的影响,使得优化算法专注于调整一个错误的值。核函数保证每条边的误差不会大的没边而掩盖其它的边。(种子点可以理解为近地点,不过种子点的提取要求雷达与地面大体垂直,不然无法按照论文中思路提取出种子点,因为近地点提取原理就是对激光点云排序,选Z值小的点,如果激光雷达正对着地面,此方法失效。

2023-12-16 14:47:00 398

原创 5.【自动驾驶与机器人中的SLAM技术】2D点云的scan matching算法 和 检测退化场景的思路

①可以给机器人添加三维传感器,比如RGB-D相机,将相机构建的三维地图点投影到激光雷达构建的二维栅格地图中,使得二维地图中包含高度信息。②由于2D SLAM生成的占据栅格地图,是基于像素的黑白灰三色地图,我们可以人工对此地图进行“加工”,对于特定场景中存在的要躲避的三维物体预先建模,在二维栅格地图中标注出他们的位置以及高度信息,来帮助机器人更好的躲避他们。③尝试使用普通相机对环境中的物体进行语义识别,然后把需要躲避的三维物体投影到二维平面,“告诉”机器人前面有个“物体”阻挡,不具备通过的条件。

2023-12-04 20:41:03 1276 3

原创 4. 【自动驾驶与机器人中的SLAM技术】点云中的拟合问题和K近邻

在NearbyType中定义NEARBY14方法,并定义好nearby_grids_即可。

2023-11-16 21:09:25 381

原创 3. 【自动驾驶和机器人中的SLAM技术】实现基于预积分和图优化的GNSS+IMU+Odom的融合定位系统

①首先是在预积分程序中记录了预积分积累的IMU数据个数(用来保证相邻两关键帧之间要有IMU预积分量来做约束)利用g2o的自动求导功能来验证解析解对不对。

2023-11-14 18:59:22 394 1

原创 2.【自动驾驶与机器人中的SLAM技术】左乘模型推导ESKF

目录证明:若某个高斯随机变量为零均值,协方差为对角线矩阵且大小相同(各向同性),那么在乘任意旋转矩阵以后,其均值仍为零,且协方差不变;在运动过程代码中,将𝑭矩阵拆开,分别为每种状态变量实现运动方程。请给出公式和代码实现的说明代码实现:GNSS+IMU融合:GNSS+INS+ODOM:

2023-11-09 14:27:51 637 1

原创 1.【自动驾驶与机器人中的SLAM技术】利用扰动模型计算旋转矩阵的导数

这里直接贴出图片了,懒得打字了。

2023-10-24 21:59:19 160

转载 c++虚函数和纯虚函数

纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。抽象类是一种特殊的类,它是为了抽象和设计的目的为建立的,它处于继承层次结构的较上层。(1)抽象类的定义: 称带有纯虚函数的类为抽象类。(2)抽象类的作用: 抽象类的主要作用是将有关的操作作为结果接口组织在一个继承层次结构中,由它来为派生类提供一个公共的根,派生类将具体实现在其基类中作为接口的操作。

2023-10-12 11:17:19 66

原创 10. 激光雷达到车身坐标系外参的标定方法(lidar2car)

得到平面方程之后,我们可以计算激光雷达原点到拟合平面的距离,此距离就是lidar到地面的高度。①在车辆行驶中,lidar 可以观测到地面,我们通过提取点云中的地面并拟合平面方程,根据平面方程法向量与(0,0,1)之间的旋转可以得到 lidar 和车身之间的 roll/pitch;得到激光雷达到地面的roll和pitch之后,就可以讲激光点云与地面对齐,然后我们使用SLAM算法或者点云配准方法,得到lidar的DR轨迹[已知lidar的航向变化以及车辆的航向变化,另一方面,我们可以根据上面的[

2023-10-06 17:18:20 1786 4

原创 9.基于轨迹相似性理论进行自动驾驶车辆IMU和车身的外参标定

自动驾驶车辆一般会装有有GNSS/INS组合导航器件,比如NOVATEL,导远这些公司的产品。它可以提供高精度的车辆定位信息。组合定位系统的相关知识可以参考组合定位系统。我们这里IMU和车体坐标系的标定,就用到了组合导航给出的高精度位姿信息。注意:不同的组合导航产品可能输出位置的参考坐标系不同,在编程的时候也要注意坐标系统一。比如我使用的novatel产品输出的位置信息是在WGS84坐标系下,应该把它转换到ENU导航坐标系。相应坐标系转换可以参考这里。

2023-09-26 13:17:17 728

原创 8. 基于消影点进行相机内参(主点)的标定

又根据第二幅图,过相机光心和消失点的直线是与世界直线平行的,所以我们可以通过棋盘格得到两条过相机光心和两个消失点的方向向量,这两个向量垂直。这个模型将中心折反射相机和鱼眼相机统一在一个通用模型下,也称为泰勒模型。原理如前面所述,通过棋盘格中天然存在的几组垂直关系的平行线可以确定多组互相垂直的(相机光心到消失点)的方向向量,然后构建误差方程(垂直关系的方向向量点积为0)。从上面一系列的公式可以看出,在相机标定成功的情况下,如果我们知道了图像平面上一点的像素,我们可以反投影出一个相机光心指向世界点的方向向量。

2023-09-26 11:49:25 1755

原创 7. chagpt解答imu标定疑问

在标定imu到车身的外参的时候有一些疑问,与gpt沟通,开拓思路。

2023-07-19 22:48:54 203

原创 “过千帆”读书号喊你来读书

关注我,读好书,涨智慧,提认知。

2023-03-19 01:52:50 126 1

原创 谈谈inline(内联函数)

inline函数剖析

2022-12-11 14:44:14 688

原创 欧拉角与旋转矩阵

欧拉角的使用总结。

2022-11-19 23:56:51 3768

原创 欢迎来到我的精神家园

公众号平台

2022-11-13 00:42:44 129

原创 6、相机标定中的特殊棋盘格检测方法(真是啥需求都会有)

用于相机的内参标定,opencv无法检测的棋盘格角点方法。

2022-10-29 15:33:38 3349 3

原创 5、聊聊大名鼎鼎的张正友标定法

梳理张正友标定法。

2022-07-17 16:05:25 1614 8

原创 4、不仅仅应用于标定的非线性优化问题

SLAM问题中常见的非线性优化算法。

2022-07-11 22:01:14 408

原创 2.鱼眼相机模型

鱼眼相机模型

2022-07-05 00:19:47 729

原创 1. 相机标定基础

普通相机标定的基础

2022-07-03 23:22:25 712

原创 3. 全向相机模型Omnidirectional Camera Model

全向相机模型及标定原理

2022-06-29 22:06:51 3554 7

原创 7.1 闭环检测之闭环矫正(位姿传播与地图点修正)

目录1 闭环矫正CorrectLoop()1.1 闭环矫正之前的准备1.2 更新当前关键帧与其它关键帧之间的连接关系前面介绍了闭环关键帧是如何确定的,包括闭环候选关键帧的层层选拨、通过词袋匹配估计sim3变换、根据估计的sim3寻找更多的特征点匹配、用g2o进行sim3优化。 得到优化后的sim3变换之后,还有一步:通过sim3将闭环帧的观测点投影到当前帧继续寻找更多匹配,int ORBmatcher::SearchByProjection(KeyFrame* pKF, cv::Mat Scw, cons

2022-01-12 12:24:00 1874 3

原创 6、ORB-SLAM闭环检测之通过g2o优化求解出来的sim3

1 OptimizeSim3()经过前面那么多步骤,终于来到闭环检测的最后一步了,只要sim3优化通过则证明真正检测到了闭环,然后接下来的工作才是闭环矫正。关于g2o优化的知识,如果没有学习的话,推荐看我之前的关于g2o介绍以及编程步骤的博客。首先把整个优化代码贴在下面,然后一步步图解。这里面还包含了g2o顶点和边的编程套路,关于此可以阅读g2o顶点编程和g2o边编程。int Optimizer::OptimizeSim3(KeyFrame *pKF1, KeyFrame *pKF2, vector

2022-01-07 18:00:09 1136

原创 5、ORB-SLAM闭环检测之通过求解出来的sim3寻找当前关键帧和闭环候选帧之间的更多匹配

目录1、SearchBySim32、图解每一步实现原理2.11、SearchBySim3函数SearchBySim3()。通过计算的Sim3变换,查找更多的匹配(成功的闭环匹配需要满足足够多的匹配特征点数,之前使用SearchByBoW进行特征点匹配时会有漏匹配),投影搜索pKF1的特征点在pKF2中的匹配,同理,投影搜索pKF2的特征点在pKF1中的匹配,只有互相都成功匹配的才认为是可靠的匹配。和往常一样,先把整个函数挂在下方,然后分别通过图讲解其实现原理。int ORBmatcher::Sear

2022-01-04 18:06:26 2039

原创 4、ORB-SLAM闭环检测之通过词袋寻找当前关键帧和闭环候选帧之间的匹配

目录1、 SearchByBoW2、图解每一步实现原理2.1 通过词袋模型寻找匹配2.2 通过旋转直方图来筛除离群点前面,我们已经了解到了sim3的求解流程,具体计算过程中有三步比较重要:1、寻找两关键帧之间的粗匹配来粗略估计sim3;2、由粗略估计出的sim3来寻找两关键帧之间更多的匹配;3、构建图优化模型,固定地图点通过两关键帧的地图点到两帧的重投影误差来优化sim3.1、 SearchByBoW函数SearchByBoW()。通过词袋,对关键帧的特征点进行跟踪,该函数用于闭环检测时两个关键帧间的

2021-12-30 22:22:14 1989

原创 3、ORBSLAM闭环检测终局之战之sim3计算流程,确定是否检测到闭环

计算sim变换确定检测到闭环。

2021-12-29 14:06:24 2814

原创 2、ORB-SLAM闭环检测之次终局之战——最终的闭环候选帧

目录1、上次选拔简单回顾2、最后一轮选拔指标——连续性检测2.1 这一阶段相关概念2.2 连续性检测原理介绍3、非常感谢您的阅读!上次我们已经通过层层选拔,选出了一部分闭环候选关键帧,也知道了层层选拔的必要性,今天我们一起来看看,最后一轮选拔,闭环候选关键帧终于冲出重围,拨云见日现真颜了!1、上次选拔简单回顾①检查一下闭环关键帧队列里是否为空,一般不为空;②统计与闭环检测帧有连接关系的关键帧(共视关键帧),并计算出闭环检测帧与每个共视关键的bow相似度得分,并得到最低得分minScore;③计算与

2021-12-20 11:05:40 818

原创 1、ORBSLAM yyds,闭环检测第一步——闭环候选关键帧的层层选拔(谨慎的态度都是细节)

ORB-SLAM的闭环检测1、回环检测的重要性2、相关关键帧的名称3、回环检测的闭环候选帧层层选拔3.1 Round 13.2 Round 23.3 Round 33.4 Round 43.5 Round 54、回环检测的闭环候选帧为什么要层层选拔呢?5、非常感谢您的阅读,也希望您能提供宝贵意见,欢迎交流!1、回环检测的重要性读过《视觉SLAM十四讲》的很熟悉下面的图,这张图足以说明回环检测的重要性。因为只依靠前端根据传感器的采集数据进行轨迹推演,即使加上后端的各种优化策略,累积误差也是不可避免的,可见

2021-12-17 16:36:37 1654 7

原创 都说一如递归深似海,今日我游出来了

目录1、函数调用模型2、再来看一下递归的简单的示例代码3、递归函数的入栈模型和嵌套调用返回流程非常感谢您的阅读,不清晰的地方还请指教!1、函数调用模型先来分析分析函数的调用模型:void changenum(int *mynum){ *mynum = 300;}int main(){ int num = 10; changenum(&num); printf("%d \n", num);}上述代码,是通过调用一个函数修改了num的值。用内存四区模型画出来如下图:从上

2021-12-15 21:45:05 573

转载 图像金字塔在基于特征点法的SLAM中的应用(以ORB-SLAM的应用举例)

这位博主解释的很到位,有图片很形象!

2021-12-11 21:25:44 2441

原创 VINS-mono的初始化过程

请读这篇知乎上的文章。

2021-11-02 22:01:27 223

原创 VINS-mono中高效去畸变的方法

目录1 畸变是如何产生的2 vins中去畸变的思想3 代码对照1 畸变是如何产生的我们先来想想3D点是如何投影到图像平面的:世界坐标点经过一个外参矩阵得到相机坐标系下的位置,由于我们经常用到的是归一化平面坐标,所以这里还要各坐标除以ZZZ,之后经过一个相机内参矩阵得到图像坐标系下坐标。那么图像畸变发生在哪个环节呢?为了获得好的成像效果,我们在相机的前方加了透镜。透镜的加入对成像过程中光线的传播会产生新的影响,这个影响就是使图像发生了畸变。仔细想,不难想到由于透镜的影响,世界点投影到相机归一化平面上时已

2021-10-20 16:42:40 982 4

原创 通过能观性分析理解SLAM系统的可观维度。

目录1 可观性分析大体理解2 可观性定义3 可观性矩阵1 可观性分析大体理解什么是可观性分析?能观性分析通过计算可观性矩阵,分析它的零空间的秩,来分析系统哪些状态维度可观/不可观。可观性矩阵对应系统可观测的维度,零空间对应系统不可观的维度。为什么要做能观性分析?举个例子:真实VIO系统不能观的维度是4(位置和yaw角),而实际MSCKF不能观的维度变成了3,绕重力轴的旋转(yaw角)被错误地能观了,从而产生了不一致性(Inconsistency),系统误认为yaw角具有更多的信息从而将yaw对应

2021-10-07 15:49:12 2467 1

原创 认识SLAM问题中的信息矩阵

请看这篇博文:聊聊SLAM问题中的信息矩阵。

2021-10-07 15:23:45 673

原创 从零手写vio基础(1)-旋转运动学

目录1 线速度与角速度2 旋转坐标系下的运动学3 定义清楚问题1 线速度与角速度如上图所示:假设一个粒子在坐标中的平面做圆周运动,坐标为:r.=(acosθ,asinθ,h)T\overset{.}{r}=(acos\theta,asin\theta,h)^Tr.=(acosθ,asinθ,h)T,对坐标求导得:r.=(−aθ.sinθ,aθ.cosθ,0)T\overset{.}{r}=(-a\overset{.}{\theta}sin\theta,a\overset{.}{\theta}cos\

2021-10-04 16:25:20 548

位姿参数和时间戳文件Ttime.zip

kitti数据集第05个序列的位姿参数和时间戳文件

2021-09-03

image_1.zip

kitti数据集第05个序列右图,分开上传的下载后请自评拼接

2021-09-03

image_0.zip

kitti数据集第05个序列左图,分开上传的下载后请自评拼接

2021-09-03

stl标准模板库学习笔记.docx

模板编程和标准模板库的笔记,如果了解了数据结构,看这个文档就如鱼得水!

2021-09-01

rgbd_dataset_freiburg3_structure_notexture_far.tgz

rgbd_dataset_freiburg3_structure_notexture_far.tgz

2021-08-13

rgbd_dataset_freiburg3_nostructure_texture_far.tgz

rgbd_dataset_freiburg3_nostructure_texture_far.tgz

2021-08-13

rgbd_dataset_freiburg3_nostructure_notexture_near_withloop.tgz

rgbd_dataset_freiburg3_nostructure_notexture_near_withloop.tgz

2021-08-13

rgbd_dataset_freiburg2_360_kidnap.tgz

rgbd slam

2021-08-13

rgbd_dataset_freiburg1_room.tgz

官网下载慢,可以在这下

2021-08-13

VINS-Mono-noted.zip

注释版VINS-mono

2021-08-06

ORBSLAM2_DenseMapping.zip

能够稠密建图的ORBSLAM2

2021-08-06

LVI-SAM-master.zip

视觉-雷达-惯导SLAM

2021-08-06

rgbd_dataset_freiburg1_desk.tgz

rgbd_dataset_freiburg1_desk.tgz

2021-08-06

空空如也

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

TA关注的人

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