- 博客(81)
- 资源 (1)
- 收藏
- 关注
原创 面试大吉顺利拿offer包
Linux1.Linux常见命令C++C++常见知识点数据库数据库整理问题整理:操作系统操作系统计算机网络tcp三次握手,四次挥手,为什么不是两次、为什么是四次?客户端2ml响应为什么?tcp,udp区别http,https区别http长连接,短连接http请求响应过程TCP流量控制(滑动窗口),拥塞控制(慢开始,拥塞避免,快重传,快恢复)http协议包括哪些请求,get、post区别网络分层结构:七层,四层,五层cookie和session区别ARP协议
2021-11-25 23:17:27
1568
2
原创 [论文笔记|特征匹配]AdaLAM: Revisiting Handcrafted Outlier Detection
在本文中,提出了一个基于局部仿射运动验证和样本自适应阈值的离群值剔除层次结构,并将该方法命名为自适应局部仿射匹配(AdaLAM)。我们设计AdaLAM来有效利用现代并行硬件,在现代GPU上,每个图像对花费不到20毫秒的时间来从每个图像8000个关键点中生成过滤后的匹配项。贡献:我们提出AdaLAM,这是一种新颖的离群滤波器,它从空间匹配中的一些过去想法构建为一种用于图像对应关系的快速空间验证的连贯,健壮和高度并行的算法。由于框架基于在不同情况下可能具有不同判别力的几何假设,因此提出了一种新颖的方法,
2020-10-22 08:57:08
2008
1
原创 [论文笔记|特征点]GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence
摘要提出了一种基于网格的运动统计方法(GMS)以剔除特征误匹配,该方法将平滑性约束融入到分离的统计框架中,并使用网格进行快速计算。GMS对于各种具有挑战性的图像变化是鲁棒的,包括视点、比例和旋转。它的速度也很快,例如,处理了50K个匹配使用一个CPU线程只需要1或2毫秒。这对实时应用有重要的意义。使用c++和OpenCV库(Bradski 2000)来实现算法。代码已经集成到OpenCV库中。图1 GMS匹配。尽管比率检验(RT)可以消除ORB产生的许多错误匹配,但在应用中,其结果仍然有噪声(a)。
2020-10-01 20:39:50
972
原创 [论文笔记|VIO]ROVINS: Robust Omnidirectional Visual Inertial Navigation System
I. 摘要视觉里程计的视觉传感器在快速运动或光照突变时很容易受到影响。在视觉感知变得不稳定时保持短期运动,惯性信息可以提高估计运动的质量。基于之前的工作-ROVO,本文介绍了一种能够将惯性信息无缝集成到全向视觉里程计算法中的全局视觉惯性里程计系统(RovINS):(A)首先在姿态优化公式中加入来自惯性测量的软相对姿态约束,使得在所有视觉特征丢失时能够进行盲运动估计;(B)利用估计速度的预测结果对跟踪中的视觉特征进行初始化,使得特征跟踪对视觉干扰具有更强的鲁棒性。实验结果表明,所提出的Rovins算法的..
2020-09-18 20:28:43
945
原创 [论文笔记|DOS-SLAM]Pop-up SLAM: Semantic Monocular Plane SLAM for Low-texture Environments
目录摘要I. INTRODUCTION贡献:II. RELATED WORKA. Single ImageB. Multiple ImagesIII. SINGLE IMAGE PLANE POP-UPA.弹出式3D模型B. 最优边界检测C. Pop-up World from an Arbitrary Pose1) Create 3D model2) Camera pose estimationIV. POP-UP PLANE SLAMA. Planar SLAM FormulationB. Plane
2020-09-12 09:33:40
1760
1
原创 [VIO|实践]evo测评工具的安装与使用
参考资料1参考资料2evo下载地址安装sudo apt install python-pippip install evo --upgrade --no-binary evo --user测试在数据集目录下打开终端(~/dataset/mav0/state_groundtruth_estimate0)evo_traj euroc data.csv --plot出现错误:ImportError: No module named tkinter具体解决办法可见------解决办法,
2020-07-29 20:27:51
2590
1
原创 [VIO|实践]UBUNTU16.04跑VINS_MONO
https://blog.youkuaiyun.com/weixin_40224537/article/details/107167246
2020-07-29 10:06:06
706
原创 [ubuntu|实践]UBUNTU运行roscore时出现error while loading shared libraries:libroscpp.so
在终端输入rescore意图开启ros时,出现如下错误:解决办法:在终端输入以下命令,修改路径:LD_LIBRARY_PATH=/opt/ros/kinetic/lib重新roscore,就没有问题了。
2020-07-28 15:18:20
794
原创 [论文笔记|slam]ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM
目录1. 相机模型A. 重定位B. Non-rectified Stereo SLAM2. VI-SLAMA. FundamentalsB. IMU Initialization1. 纯视觉MAP估计2. 纯惯性MAP估计3. 视觉-惯性MAP估计C. Tracking and MappingD.对跟踪丢失的鲁棒性3. MAP MERGING AND LOOP CLOSINGA. Place RecognitionORB-SLAM3建立在ORB-SLAM2和ORBSLAM-VI之上,是一个完整的多地图和多
2020-07-27 11:12:06
921
1
原创 [UBUNTU|实践]随意的切换ubuntu下的默认python版本
利用alternatives机制更改,在终端下输入两条命令:sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
2020-07-16 21:13:18
142
原创 [论文笔记|DOS]CubeSLAM: Monocular 3D Object SLAM
目录摘要Ⅰ. 单图像3D目标检测A. 3D box proposal generation1) Principles:2) Get 2D corners from the VP3) Get 3D box pose from 2D corners:摘要本文提出了一种用于静态和动态环境下的单目图像三维长方体目标检测和多视点对象SLAM,并证明了这两部分可以相互改进。首先,对于单图像目标检测,我们从二维边界框和消失点采样中生成高质量的长方体。然后基于与图像边缘的对齐,进一步对这个生成的3D长方体进行评分和选择
2020-07-15 20:47:31
1225
原创 [论文笔记|VIO]Accelerated Visual Inertial Navigation via Fragmented Structure Updates
目录Ⅰ. 摘要贡献Ⅱ. 分块BAA. Bundle AdjustmentB. 增量公式C. Fragmented AccelerationIII. 连续预积分Ⅳ. 实验结果Ⅰ. 摘要VI系统的计算瓶颈在于联合优化,因此这篇论文采用分块fragments来解决这个问题。一组来自多个不同相机的共可见特征点被有效地分割、分类,然后使用由频率模式增长算法激励的机器学习进行分析。此外,在预积分过程中使用连续形式,以提高精度,并且只需要较少的计算资源。实验表明推导不仅更精确,而且需要的计算资源显著减少。贡献修
2020-07-15 10:38:57
451
原创 [基础知识点] 利用消失点进行相机标定
概念消失点是两条平行的直线经透视变换会相交成一点,通俗来讲就是在现实世界中平行的两条线,在图像中相交的点,不再赘述。消失线是由水平(或竖直)方向上的消失点组成的线。消失点的性质:消失点与光心的连线,平行于形成该消失点平面的平行线。所以在空间中互相垂直的几组平行线,对应的消失点与相机光心的连线也互相垂直。如图所示。求解假设pip_ipi是消失点对应的像素坐标系,K是内参矩阵,R是旋转矩阵,XiX_iXi是消失点对应的世界坐标系。对应求三个参数需要三个消失点联立成三个方程进行求解。求对
2020-07-14 10:25:11
7334
原创 CMake Error :Could not find a package configuration file provided by “cv_bridge“解决办法
出现问题:CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):Could not find a package configuration file provided by “cv_bridge” withany of the following names:cv_bridgeConfig.cmakecv_bridge-config.cmake解决办法:下载vision
2020-07-08 18:52:30
5877
原创 [VIO|实践]UBUNTU16.04跑MSCKF-双目代码
编译环境编译新建文件夹vins-catkin_ws,里面再建一个叫src的文件夹,然后把解压好的代码集msckf放进去。命令行进入到/vins-catkin_ws这一层,进行catkin_make。catkin_make --pkg msckf_vio --cmake-args -DCMAKE_BUILD_TYPE=Releasecatkin_make --pkg msckf_vio --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT
2020-07-08 18:50:36
1213
3
原创 [VIO|实践]UBUNTU16.04 跑基于ROS的OKVIS代码
环境配置sudo apt-get install ros-indigo-pcl-rossudo apt-get install libgoogle-glog-devsudo apt-get install libatlas-base-dev libeigen3-dev libsuitesparse-dev sudo apt-get install libopencv-dev libboost-dev libboost-filesystem-dev git clone https://github
2020-07-08 17:34:07
1524
原创 [环境配置]UBUNTU16.04面向SLAM需要安装的库(汇总)
cmakesudo apt-get install cmake opencv:https://www.jianshu.com/p/f646448da265ROS:https://blog.youkuaiyun.com/weixin_43159148/article/details/83375218eigen:sudo apt-get install libeigen3-dev注意:这里的版本最好安装3.3以上版本(ceres不兼容)可以直接跳转到5.出错解决办法的链接去手动安装。5. cere.
2020-07-07 15:45:33
424
原创 [从零写VIO|第七节]——VINS-Mono代码精简版代码详解——thd_BackEnd线程(内容|代码)
前面的两个线程thd_PubImuData、thd_PubImageData主要是获取IMU数据、获取图像数据以及进行特征提取和LK光流的跟踪。thd_BackEnd线程包括IMU预积分Estimator::processIMU和图像数据的进一步操作,其中包括初始化的一系列操作在Estimator::processImage。初始化完成后将进入后端进行滑动窗口的优化,进而得到优化后的状态估计结果。run_euroc.cpp中的最后一个线程:std::thread thd_BackEnd(&Sys
2020-06-25 10:35:51
2044
6
原创 [从零写VIO|第七节]——VINS-Mono代码精简版代码详解——边缘化(内容|代码)
目录基本流程1. 判断过新加进来帧是否是关键帧,从而确定边缘化选项2. 如果是`MARGIN_OLD`,就要边缘化掉老帧3.当次新帧不是关键帧时,边缘化次新帧① vector2double():② MargOldFrame()边缘化老帧操作1. 构建problem2. 传入要边缘化掉的最老帧信息,进行边缘化3. 先验信息更新③ MargNewFrame()边缘化次新帧操作1. 构建problem2.传入要边缘化的次新帧信息,进行边缘化3. 先验信息更新基本流程1. 判断过新加进来帧是否是关键帧,从而确定
2020-06-23 20:36:51
1576
1
原创 视觉SLAM十四讲:回环检测-知识点+代码
目录基于外观的几何关系1. 基础知识1.1 准确率和召回率1.2 词袋模型1.3 字典1.4 字典的数据结构1.5 相似度的计算1.6 相似度评分的处理1.7 检测回环后的验证2. 实践与代码解析2.1 创建字典回环检测的关键是,如何有效地检测出相机经过同一个地方。如果能够成功地检测到这件事,就可以为后端的位姿图提供更多有效的数据,使之得到更好的估计,特别是得到一个全局一致的估计。我们可以利用回环检测进行重定位。回环检测的方法:暴力匹配。对任意两幅图像都进行特征匹配,根据正确匹配的数量确定哪两幅图
2020-06-21 16:55:54
4833
9
原创 [VIO|实践]跑VINS FUSION代码记录-以EuRoC数据集为例
vins fusion是vins mono的多功能版,有双目数据、GPS融合。代码下载链接:https://github.com/HKUST-Aerial-Robotics/VINS-Fusion环境UBUNTU,ceres1.13.0,ROS Kinect
2020-06-18 20:30:29
2047
1
原创 [从零写VIO|第七节]——VINS-Mono代码精简版代码详解——IMU预积分(内容|代码)
理论知识之前在另一篇博客也整理过 ——指路目录1. 为什么要进行IMU积分?2. 连续时间下的IMU运动模型3.为什么要用IMU预积分?IMU的预积分量IMU的预积分误差预积分的离散形式1. 为什么要进行IMU积分?IMU通过加速度计得到线加速度、通过陀螺仪得到角速度。通过对IMU测量值的积分操作,能够获得机器人的位姿信息。IMU的频率比相机的要高,将第 k 帧和第 k+1 帧之间的所有 IMU 进行积分,可得第 k+1 帧的位置、速度和旋转(PVQ),作为视觉估计的初始值,示意图如下:从IMU
2020-06-02 17:27:45
1614
2
原创 [从零写VIO|第七节]——VINS-Mono代码精简版代码详解——run_euroc前端的数据处理(内容|代码)
vins_mono代码总框架如下图:前端的数据处理,包括两个部分,一个是图像的特征提取和匹配,再一个就是对IMU数据进行预积分。对于VINS-Course\CMakeLists.txt:生成两个库文件:camera_model,MyVio;生成两个可执行文件:run_euroc,testCurveFitting;我们重点看一下run_euroc的文件内容;// 跑euroc数据集// 将带有特征点和imu仿真数据喂给系统run_euroc.cpp主函数框架主函数框架定义了三个线程,
2020-05-31 13:09:39
2470
4
原创 [从零写VIO|第七节]——VINS-Mono代码精简版代码详解——初始化4visualInitialAlign()(内容|代码)
接上一篇博客——视觉IMU对齐的内容和代码的解析,我们已经通过VisualIMUAlignment函数得到了初始值:陀螺仪的bias、尺度因子s、有模长限制的重力向量、各个帧的速度,同时借助重力向量实现了相机坐标系与世界坐标系的对齐。总结一下就是:相机-IMU对齐指的是将视觉SFM结构和IMU的预积分结果进行对齐,主要分为1)陀螺仪偏差的标定;2)速度、重力向量和尺度初始化;3)对重力进行修正三部分。在将从视觉SFM中估计出来的位姿信息和IMU预积分的结果对齐之后,我们需要获得世界坐标系中的位姿,也就是
2020-05-28 21:38:13
1868
原创 [从零写VIO|第七节]——VINS-Mono代码精简版代码详解——初始化3视觉IMU对齐(内容|代码)
接上一篇——视觉初始化的代码和内容的讲解,我们对所有的图像帧(滑动窗口内与外all)提供初始R、T估计,然后进行pnp优化,同时我们也得到了它们对应的IMU坐标系到lll系的旋转平移。现在进行视觉惯性联合初始化。具体流程图:initialStructure()主要代码:bool Estimator::initialStructure(){ TicToc t_sfm; //1.1 通过滑窗内所有帧的线加速度的标准差判断IMU的运动情况 check imu observibil
2020-05-25 00:27:32
2475
3
原创 [从零写VIO|第七节]——VINS-Mono代码精简版代码详解——初始化2视觉初始化(内容|代码)
接上一篇——外参标定的代码和内容的讲解,计算出旋转外参数qbcq_{bc}qbc(对应代码中的ric)后,开始其他参数的初始化;其代码在estimator.cpp中的Estimator::initialStructure()。
2020-05-24 00:01:31
2024
2
原创 [论文笔记|VIO]:Fast and Robust Initialization for Visual-Inertial SLAM
摘要——VI-SLAM要求对初始速度、重力的朝向、陀螺仪和加速度计的偏置进行良好的初始化估计。本文以Martinelli(closed-form solution of visual-inertial structure from motion)提出的、Kaiser等人在(1)基础上扩展的初始化方法(Simultaneous State Initialization and Gyroscope Bias Calibration in Visual Inertial Aided Navigation)为基础,
2020-05-21 18:36:08
1269
1
原创 [从零写VIO|第六节]——前端Frontend
本节主要介绍前端:提取匹配特征点和光流跟踪,关键帧和三角化(很多大部分框架都是在前端优化改进的,前端对最终定位精度的影响起着决定性作用)1. 特征点提取和匹配https://www.cnblogs.com/skyfsm/p/7401523.html要关注SLAM的实时性问题,.一般采用速度较快的算子,精度可能不会很高。SIFT等虽然精度高,目前还不能实时。再就是,直接法不依赖角点,但实现效果根据选点数量变化较大.2. 光流跟踪光流法抗光照干扰弱,比较依赖角点。目前常用的是FAST+光流。光
2020-05-17 11:18:11
360
原创 opencv中的特征提取和匹配算法
运行opencv中的all code:https://www.cnblogs.com/excellentlhw/p/10778904.html内容:https://www.geek-share.com/detail/2670090981.html目标跟踪之光流法:https://blog.youkuaiyun.com/u014568921/article/details/46638557特征点三角化:https://www.cnblogs.com/yepeichu/p/10792899.html汇总:https
2020-05-17 10:26:46
1483
4
原创 [论文笔记|VIO]On the Comparison of Gauge Freedom Handling in Optimization-based V-I State Estimation
目录摘要摘要本文首次对基于优化的视惯性状态估计中处理H自由度的不同方法进行了比较分析,并进行实验以比较三种常用的方法。将不可观察的状态固定到某个给定值,在这些状态上设置一个先验,或者在优化过程中允许状态自由地演化。具体地,我们表明(i)三种方法的精度和计算时间相似,自由规范方法略快;(ii)从自由规范方法得到的协方差估计似乎有很大的不同,但实际上与其他方法密切相关。 其研究结果在仿真和实际数据集上都得到了验证,对于设计基于优化的视觉-惯性状态估计算法有一定的参考价值。...
2020-05-11 20:07:25
1428
原创 [从零写VIO|第五节]——后端优化实践:逐行手写求解器(作业)
1.1 信息矩阵H的计算对于每一条边都要进行这样两个for循环,分别是遍历方阵H的行和列,第一个i的for循环是行数,当遍历到行列相等,也就是对角的时候,只用放入一次hessian,而其他情况下都要放入关于对角对称的两个hessian,这是由于这两个位置的hessian是转置的关系。而b则在行遍历的时候一行行填入。MatXX hessian = JtW * jacobian_j; // 所有的信息矩阵叠加起来 // TODO:: home.
2020-05-09 00:24:27
797
原创 [从零手写VIO|第五节]——后端优化实践——单目BA求解代码解析
目录solver 全流程回顾Solver三要素Solver求解中的疑问核心问题代码解析1. 产生世界坐标系下的虚拟数据: 相机姿态, 特征点, 以及每帧观测solver 全流程回顾Solver三要素Solver求解中的疑问信息矩阵 H 不满秩,那求解时如何操作?• 使用 LM 算法,加阻尼因子使得系统满秩,可求解,但是求得的结果可能会往零空间变化。• 添加先验约束,增加系统的...
2020-05-09 00:20:37
3201
5
原创 [基础知识点]PCG算法以及代码解析
1. 基本介绍共轭梯度法是介于梯度下降法与牛顿法之间的一个方法,是一个一阶方法,它克服了梯度下降法收敛慢的缺点,又避免了存储和计算牛顿法所需要的二阶导数信息。共轭梯度法的思想是,选择一个优化方向后,本次选择的步长能够将这个方向的误差更新完,在以后的优化更新过程中不再需要朝这个方向更新了。由于每次将一个方向优化到了极小,后面的优化过程将不再影响之前优化方向上的极小值,所以理论上对N维问题求极小只用对N个方向都求出极小就行了。为了不影响之前优化方向上的更新量,需要每次优化方向共轭正交。在 n 维的优化问题
2020-05-08 23:19:07
5811
原创 [基础知识点]LM算法——阻尼因子更新策略(Nielsen)——内容与代码解析
1. 内容定量分析,阻尼因子更新策略通过比例因子来确定的:其中:这里采用的μ0\mu_0μ0初始值的策略为:2. 代码此代码节选自BA计算阻尼因子的初始值/// LMvoid Problem::ComputeLambdaInitLM() { ni_ = 2.; currentLambda_ = -1.; currentChi_ = 0.0; // TODO:: robust cost chi2 fo
2020-05-08 23:04:56
4785
6
原创 [论文笔记|VIO]ICE-BA: Incremental, Consistent and Efficient Bundle Adjustment for Visual-Inertial SLAM
文章目录摘要1. 介绍摘要由于视觉特性和惯性测量的互补性,视觉-惯性SLAM (VI-SLAM)比纯视觉SLAM具有更高的精度和鲁棒性。然而,联合使用视觉和惯性测量来优化SLAM目标函数是一个高计算复杂度的问题。在许多VI-SLAM应用中,传统的优化求解器只能使用非常有限的最近的测量数据进行实时姿态估计,而代价是局部定位精度不够理想。在这项工作中,我们更新了VI-SLAM的数值求解器。与传统的...
2020-05-05 00:22:15
1528
原创 [论文笔记|声呐]——侧扫声呐图像的三维重建
目录总框架1. 侧扫声呐探测原理2. 侧扫声呐原始文件格式解析2.1 XTF格式2.2 侧扫声呐数据解析软件系统3. 侧扫声呐图像数据预处理3.1 海底线检测3.2 增益补偿3.2.1平均振幅增益补偿3.2.2 平均灰度增益补偿3.3 几何校正总框架1. 侧扫声呐探测原理2. 侧扫声呐原始文件格式解析侧扫声呐文件是格式特殊的二进制数据,需自带软件才可打开,不可直接进行数据和图像的...
2020-05-02 12:10:45
10288
7
原创 [论文笔记|LIC-Fusion]LIC-Fusion: LiDAR-Inertial-Camera Odometry
本文提出了一种称名为激光雷达-惯性导航仪-相机三合一(LIC-Fusion)的紧耦合多传感器融合算法,该算法可有效地融合IMU测量,稀疏的视觉特征和提取的激光雷达点。尤其是,提出的LIC-Fusion能够在三个异步传感器之间执行在线的空间和时间传感器标定,以补偿可能的标定偏差。本方法的关键贡献在于,能够基于高效的MSCKF框架,利用从激光雷达检测和跟踪到的系数边缘/surf特征点,以及稀疏的视觉特...
2020-04-30 19:07:29
3333
2018Sonar Visual Inertial SLAM of Underwater Structures.pdf
2020-04-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人