自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GuoBen_的博客

曾梦想仗剑走天涯 看一看世界的芳华

  • 博客(25)
  • 收藏
  • 关注

原创 用VS Code写C语言无法使用`__attribute__(packed)`

@[C语言](用VS Code写C语言无法使用__attribute__(packed))用VS Code写C语言无法使用__attribute__(packed)今天,在Windows上写C语言程序,结果编写的结构体总是无法使用__attribute__((packed)),导致读取的二进制文件字节对不上。检查CMakeLists.txt和代码均没有发现明显错误。想到的第一个解决方法。最后发现自己没有在代码头加上extern{ C}解决方法主要如下:2. 在结构体前加上pragma

2021-04-15 20:17:47 3240

原创 在TUMVI数据集上测试VINS-Fusion算法

VINS_Fusion算法是一个非常优秀的视觉惯性里程计,但原版VINS_Fusion并没有提供与TUM数据集相应的配置文件,因此需要自己进行写yaml文件. 本文简单介绍了一下修改过程.

2020-06-23 00:15:39 1938 13

原创 视觉SLAM作业(四) 相机模型与非线性优化

视觉SLAM作业(四) 相机模型与非线性优化一 图像去畸变现实生活中的图像总存在畸变。原则上来说,针孔透视相机应该将三维世界中的直线投影成直线,但是当我们使用广角和鱼眼镜头时,由于畸变的原因,直线在图像里看起来是扭曲的。本次作业,你将尝试如何对一张图像去畸变,得到畸变前的图像。图1 是本次习题的测试图像(code/test.png),来自EuRoC 数据集[1]。可以明显看到实际的柱子、箱子的直线边缘在图像中被扭曲成了曲线。这就是由相机畸变造成的。根据我们在课上的介绍,畸变前后的坐标变换为:xdis

2020-06-21 02:13:18 1224 1

原创 ORB_SLAM2 双目稀疏立体匹配算法

本节主要学习ORB_SLAM2中的双目立体匹配算法的实现过程主要在frame.cc文件中主要过程:ID自增mnId=nNextId++;计算图像金字塔的参数mnScaleLevels = mpORBextractorLeft->GetLevels();mfScaleFactor = mpORBextractorL...

2020-05-13 13:27:34 1268

原创 OPENCV重要函数

本节用来总结SLAM学习过程中,用到的重要的opencv函数CalcopticalFlowPyrLK()功能使用具有金字塔的迭代Lucas-Kanade方法计算稀疏特征集的光流。void cv::calcOpticalFlowPyrLK ( InputArray prevImg, InputArray nextIm...

2020-04-14 12:43:39 233

原创 特征点法的巅峰之作—ORBSLAM2

ORB-SLAM 是西班牙 Zaragoza 大学的 Raúl Mur-Arta 编写的视觉 SLAM 系统。 它是一个完整的 SLAM 系统,包括视觉里程计、跟踪、回环检测,是一种完全基于稀疏特征点的单目 SLAM 系统,同时还有单目、双目、RGBD 相机的接口。其核心是使用 ORB (Orinted FAST and BRIEF) 作为...

2020-04-13 02:35:19 1331

原创 SLAM 岗位求职与简历书写

本文学习自B站计算机视觉Life的如何写简历。当前求职背景怎么样2019计算机直觉算法岗的求职情况为:候选人数很多,优秀者极少找工作不仅需要实力,也需要运气原因贸易战影响:华为、海康、大华、商汤、旷视、依图、讯飞。宏观经济下行:裁员潮商业落地困难大量其他行业转行到AI人才成本高视觉算法的未来依然前途光明(智能手机、无人...

2020-04-03 16:58:46 2995

原创 C++ 简析容器Vector

向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。一、基本概念向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能...

2020-04-01 16:24:14 1537

原创 SLAM中的后端优化

本节介绍SLAM中的后端优化过程一、问题阐述同时对三维点位置和相机参数进行非线性优化二、LM法的原理与优势 原理:是一种“信赖域”的方法,当收敛速度较快时,增大信赖域使算法趋向于高斯牛顿法;当收敛速度较慢时,减小信赖域使算法趋向于最速下降法。优势:速度快;可以在距离初始值较远处得到最优解。SLAM优化算法对比算法缺点...

2020-03-30 13:52:51 1734

原创 哈希表与C++

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,...

2020-03-26 03:32:17 399

原创 SLAM中的三角测量

三角测量是SLAM中,利用相机运动估计特征点空间位置的过程。本节旨在解决以下问题:三角测量的概念三角测量的过程及代码实现;三角测量有哪些不确定性如何提高三角测量的精度1. 概念在SLAM中,利用对极几何约束估计相机运动之后,我们还需要通过三角测量来估计地图点的深度。三角测量(三角化)指的是,通过在两处观测同一个点的夹角,...

2020-03-24 08:34:07 2497 2

原创 SLAM初始化

本节的学习要点:初始化的目的(单目/双目)初始化的两种方法初始化过程初始化的目的​ 单目SLAM初始化的目的是 ==构建初始的三维点云地图(空间点)并为之后的计算提供初始值==。​ 由于仅从单帧的图像不能得到深度信息,因此需要从图像序列中选取两帧以上的图像以估计相机机姿态并重建出初始的三维点云。...

2020-03-23 04:23:32 2272

原创 KMP-Algorithm

KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KM...

2020-03-22 06:31:40 264

原创 Kalman滤波器学习

概率图+时间=动态系统​ 对概率图模型考虑其时间序列,可以得到动态系统。根据动态系统的隐状态的连续性和分布可以把系统大致分为三类:若隐状态离散,不要求分布,则为隐马尔可夫模型如果隐状态连续、线性且服从高斯分布,则为Kalman滤波器(线性高斯模型)如果隐状态连续且非线性,作为得到粒子滤波器本节主要来介绍kalman滤波器...

2020-03-13 16:00:00 426

原创 运动一致性判断

直至以来,SLAM的研究共朝着三个方向努力:精度、速度、鲁棒性。尤以鲁棒性居多。通常动态场景中,根据IMU测量值与视觉测量值分别进行计算得到的结果会有所不同。因此需要进行一致性的检测,以得到真值。本文将主要讲运动一致性检测。运动一致性判断基于聚类将图片分割之后获得的区域需要判断其运动一致性以分离动态物体和静态背景。目的:对图片中各部...

2020-03-13 16:00:00 2515

原创 隐马尔可夫模型

隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态的序列,再由各个状态随机生成一个观测而产生观测的序列的过程。隐马尔可夫模型是可用于标注问题的统计学习模型,描述有隐藏的马尔科夫链随机生成观测序列的过程,属于生成模型。本文将学习隐马尔可夫模型,着重介绍掌握HMM的模型、应用、及理论推导过程。来源:李航的《...

2020-03-09 16:00:00 322

原创 VINS-Fusion代码阅读

Loop FusionLoop Fusion结点包括:VINS_estimatorVINS_estimator是VINS_Fusion的节点,其不包含回环检测部分,该节点可以单独对相机进行位姿估计。rosNodeTest.cpprosNodeTest.cpp是vins_estimator节点的程序入口。主要实现以下函数。主程序包含...

2020-03-09 16:00:00 458

原创 经典聚类算法调研

本文将盘点六个经典的聚类算法,以便于后续研究。经典的聚类算法主要包括以下六种:Means-shift聚类k-means聚类Fuzzy C means聚类Medoid shift算法Turbopixel算法SLIC算法Means-shift聚类(均值漂移)核心思想均值漂移聚类是基于滑动窗口的算法,用来寻找到数据最密集的...

2020-03-09 16:00:00 655

原创 回环检测与DBoW2库

本文目的是为了更加详细的学习通用的回环检测算法 中的DBoW2库,了解其代码构成。回环检测DBOW2介绍DBOW3介绍回环的评价指标一个回环的结果,可能有以下四种情况出现:算法结果事实是回环不是回环是回环真阳性假阳性不是回环假阴性真阴性回环检测算法可以输出以下结果:四种结果的数量分别为...

2020-03-09 16:00:00 1525

原创 VIO主流框架

本节主要说明当前主流的VIO算法流程。课程来源于B站。高斯牛顿法误差项:$$e(x+\Delta x)=e(x)+J(x)\Delta x$$一次观测多次观测逆深度 + VIOEKF滤波和优化EKF铝箔相当于之迭代一次的优化,区别是滤波仅考虑上一帧的影响,而优化则考虑所有帧的影响多次优化精度比滤波高,但效率低于滤波,因...

2020-02-14 16:00:00 1421

原创 利用ROS标定相机步骤与方法

本文讲解利用ROS框架下的工具标定USB相机的过程。利用IMU标定相机流程驱动USB摄像头利用camera_calibration标定相机执行命令为:rosrun camera_calibration cameracalibrator.py --approximate 0.1 --size 9x6 --square 0.03...

2020-02-14 16:00:00 828 1

原创 发布IMU信息到ROS系统中

以下记录是在调试树莓派3b中得到的经验​ 本文记录调试树莓派3b中得到的经验,如何把IMU信息发布到ROS系统中。发布IMU信息到ROSsensor_msgs/Imu.msgHeader header geometry_msgs/Quaternion orientationfloat64[9] orientation_cova...

2020-02-14 16:00:00 483

原创 使用evo工具评测SLAM

evo是一款用于视觉里程计和slam问题的轨迹评估工具。核心功能是能够绘制相机的轨迹,或评估估计轨迹与真值的误差。支持多种数据集的轨迹格式(TUM、KITTI、EuRoC MAV、ROS的bag),同时支持这些数据格式之间进行相互转换。在此仅对其基本功能做简要介绍。并且介绍如何修改经典的SLAM算法以输出可使用evo评测的轨迹。githu...

2020-02-14 16:00:00 1216 3

原创 利用Kalibr标定双目相机与IMU

本文介绍如何利用Kalibr标定工具进行双目相机与IMU的联合标定。主要过程包括以下四步:生成标定板标定双目相机标定IMU联合标定1. 生成标定板使用AprilTagrosrun kalibr kalibr_create_target_pdf --type apriltag --nx 6 --ny 6 --tsize 0...

2020-02-14 16:00:00 1378

原创 SLAM各算法运行方法与过程

本文介绍本人在实践过程中遇到的各个间接法的运行和配置过程。主要包括以下五种算法:VINS_mono/fusionOKVISROVIOVI_ORB-SLAMMSCKFVINS_monoOKVISRun OKVIS可能需要加入std::ftreamOpencv需要3.4.2或以下版本,需要opencvv模块Opencv3...

2020-01-14 16:00:00 588

空空如也

空空如也

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

TA关注的人

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