视觉SLAM
文章平均质量分 87
苏源流
从事计算机视觉和SLAM领域,2012年10月“全国大学生数学建模竞赛”二等奖(数学应用能),2011年攻读 自动化 专业,2015年攻读“模式识别与智能系统” 专业。现在主要工作内容无人驾驶方面的视觉定位与导航,能够提供整体的地下车库自动泊车定位解决方案,该方案也适用于工业园区泊车,物流机器人,园区巡视机器人,餐饮配送、服务机器人等。本人熟悉linux下ROS环境,掌握opencv中2/3的功能,掌握视觉SLAM中ORB_SLAM2,激光lidar的loam。熟悉摄像机,激光雷达,惯导IMU等传感器的使用与开发。主导和参与多个定位项目,欢迎交流。致力于推进技术的应用,技术改变生活。不做无脑人
展开
-
【学习SLAM】掌握g2o边的代码套路--从零开始
小白:师兄,g2o框架《从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码》,以及顶点《从零开始一起学习SLAM | 掌握g2o顶点编程套路》我都学完啦,今天给我讲讲g2o中的边吧!是不是也有什么套路? 师兄:嗯,g2o的边比顶点稍微复杂一些,不过前面你也了解了许多g2o的东西,有没有发现g2o的编程基本都是固定的格式(套路)呢? 小白:是的,我现在按照师兄说的g2...转载 2020-01-06 11:28:01 · 254 阅读 · 0 评论 -
学习SLAM《视觉SLAM十四讲(高翔著)》 第10讲笔记(BA优化)
代码实践文章目录 10.3实践:g2o 10.4实践:Ceres 程序的详细注释可关注robinhjwy和zkk9527的CSDN博客。10.3实践:g2o用g2o求解BA问题。程序的编译运行方法:mkdir buildcd buildcmake ..make./g2o_customBundle -input ../data/problem-16...原创 2020-02-17 23:15:21 · 473 阅读 · 1 评论 -
相机模型-鱼眼模型/鱼眼镜头标定基本原理及实现(2)
鱼眼相机模型 (fisheye camera model) 模型介绍 等距投影 等立体角投影 正交投影 体视投影 线性投影 Kannala-Brandt 模型 去畸变过程 投影过程 反投影过程 雅可比计算之前总结了一下针孔相机的模型,然后得到了比较积极的回复(其实是我到处求人关注的,虽然截至到目前才三个人),所以就再接再励,乘胜追击(也没得办法,夸下...原创 2021-05-31 19:16:26 · 13156 阅读 · 5 评论 -
相机模型-鱼眼模型/Omnidirectional Camera(1)
Omnidirectional CameraDavide ScaramuzzaDefinition 定义omnidirectional camera (from omni, meaning all) 广角相机: 在一个水平面有360度视野的相机,或视野能覆盖半个球或近似整个球的相机Background 背景知识大多数商业相机可以使用 pinhole 相机模型来描述,使用一个 perspective projection 来建模。但是存在一些高畸变成像设备如广角相机,它们不能使用传统小孔相机模型转载 2021-05-31 19:11:45 · 7302 阅读 · 1 评论 -
[学习SLAM]使用 Ceres 拟合曲线(ch6)
// 构建最小二乘问题 ceres::Problem problem; for ( int i=0; i<N; i++ ) { problem.AddResidualBlock ( // 向问题中添加误差项 // 使用自动求导,模板参数:误差类型,输出维度,输入维度,维数要与前面struct中一致 ...原创 2021-02-02 19:46:27 · 502 阅读 · 0 评论 -
[学习SLAM]VINS中IMU预积分的误差推到公式与代码雅克比(协防差/信息矩阵)构建
//todo /** *IMU预积分中采用中值积分地推jacobian和covariance **/ void midPointIntegration(double _dt, const Eigen::Vector3d &_acc_0, const Eigen::Vector3d &_gyr_0, const Eigen::Vector3...原创 2021-01-29 15:06:16 · 1331 阅读 · 1 评论 -
[学习SLAM]最小二乘、梯度下降法、牛顿与高斯-牛顿与LM关系总结
目录一、最小二乘法引出1、线性最小二乘与非线性最小二乘的关系2、梯度下降法二、非线性最小二乘(高斯牛顿、LM)三、线性最小二乘SLAM的优化方法是基础知识,尤其最小二乘法是所有优化的基础。接下来将对以下知识进行总结。最小二乘法 非线性:最速下降法、牛顿法、高斯牛顿法(GN)、列文伯格-马夸尔特(LM)联系 线性:QR分解、乔姆斯基分解法求解(Cholesky)、奇异值分解(SVD)一、最小二乘法引出最小二乘问题通常可以表述为,通过搜集到的一些数据(获取得到的样本)...转载 2020-12-21 11:16:29 · 1471 阅读 · 0 评论 -
[学习SLAM]单应性矩阵的理解及求解
单应性概念的引出 我们在这里引入一个新的概念:单应性(Homography)变换。可以简单的理解为它用来描述物体在世界坐标系和像素坐标系之间的位置映射关系。对应的变换矩阵称为单应性矩阵。在上述式子中,单应性矩阵定义为: 其中,M是内参矩阵 成像几何模型已经得到了像素坐标系和世界坐标系下的坐标映射关系: 其中,u、v表示...原创 2020-12-09 17:54:40 · 2587 阅读 · 0 评论 -
[学习SLAM]根据F或E求解RT的ORB_SLAM2与opencv的对比分析
本文主要的本文主要的目的是对比。分析。Slam中的rt求解。和opencv的。Rt求解。在算法和代码上有什么区别和联系。ORB_SLAM2 计算 F21 的代码:cv::Mat Initializer::ComputeF21(const vector<cv::Point2f> &vP1,const vector<cv::Point2f> &vP2...原创 2020-12-09 17:52:16 · 2119 阅读 · 0 评论 -
[学习SLAM]DSO光度标定程序配置和使用(1)
光度标定原理详见:DSO之光度标定一、项目地址https://github.com/tum-vision/mono_dataset_code对应论文《A Photometrically Calibrated Benchmark For Monocular Visual Odometry》二、安装1.下载源码git clone https://github.com/tum...转载 2020-12-09 17:50:50 · 1458 阅读 · 0 评论 -
[学习SLAM]online_photometric_calibration-master DSO应用问题梳理
online_photometric_calibration-master 问题梳理1 DSO在线标定没有输出txt问题,主要是有图像窗口的形式展示,不是直观理解上txt内容,:Scale up inverse response from range [0,1] to range [0,255]确实有*255操作.2 DSO在线标定渐晕也不是图像输出,貌似是几个系数,目前这点还不确定.初步认...原创 2020-12-09 17:49:52 · 518 阅读 · 0 评论 -
[学习SLAM]精简版无ROS依赖的Vins-Mono代码(深蓝学院VIO 笔记)
代码框架 主函数 数据发布函数 后端优化函数 代码框架所详解的代码是深蓝学院课程提供的VIO代码,是港科大VINS-Mono代码的精简版本,保留了主要的初始化/前端/后端优化模块,整个代码不依赖于ROS系统,对于进一步深入学习VINS系统具有极大的帮助。下面将对代码的主要部分进行讲解,有理解错误的地方请多指正。首先给出整个系统流程图。主函数针对EuRoC数据集的测试主函数为run_euroc.cpp,首先创建后端线程:// An highlighted blockstd转载 2020-12-09 17:27:11 · 1844 阅读 · 1 评论 -
[学习SLAM] 3D可视化 只viz模块和pangolin
viz模块主要用于3D可视化显示。首先看个简单示例程序,创建一个窗口并显示坐标系: //创建可视化窗口 viz::Viz3d window1("window1"); //构造一个坐标系,并显示到窗口中 window1.showWidget("Coordinate", viz::WCoordinateSystem()); //开启永久循环暂留 window1.spin();第一句,创建窗口。很简单,类型为Viz3d类型,参数为窗口名称。第二句,在窗原创 2020-12-04 16:43:45 · 2439 阅读 · 1 评论 -
[学习SLAM]vins-mono中的特征点管理/三维稀释点的重建
主要涉及到以下三个类:feature_manager.h中的FeaturePerFrame、FeaturePerId、FeatureManager假设存在两个路标点P1和P2,分别被相机帧1-2,2-4观测到。(1)FeaturePerID类 类的定义如下:class FeaturePerId{ public: const int feature_id; int start_frame; vector<FeaturePerFrame> f原创 2020-12-09 17:24:32 · 1726 阅读 · 0 评论 -
【学习SLAM】vins笔记
bool GlobalSFM::solveFrameyPnP(Matrix3d &R_initial, Vector3d &P_initial, int i,vector<SFMFeature> &sfm_f)原创 2020-12-09 18:43:35 · 999 阅读 · 0 评论 -
[深度学习]MonoDepth2论文阅读_单目深度估计(1)
文章标题:Digging Into Self-Supervised Monocular Depth Estimation 摘要: 逐像素的真实尺度深度数据的大量获取,是具有挑战性的任务。为了克服这个限制,自监督学习已经成为一个有希望的替代训练模型,用来执行单目深度估计。本文中,我们提出了一系列的改进手段,用来提升自监督深度学习深度估计方法的精度。 自监督单目模型训练的研究,通常是探究越来越复杂的结构、损失函数和图像形成模型,而所有这些都有助于缩小与全监督方法的差距。我们...转载 2020-07-30 14:42:46 · 11614 阅读 · 5 评论 -
视觉slam g2o 编译出现 Cmake Error:By not providing “FindG2O.cmake” in CMAKE_MODULE_PATH错误
在学习slam十四讲的时候,成功安装编译了g2o,但是在运行g2o_curve_fitting代码时出现错误,提示如下:在这里插入图片描述方法一:这时需要在cmakelist文件中添加几行代码,添加代码如下: list(APPEND CMAKE_MODULE_PATH /XXX/g2o/cmake_modules) set(G2O_ROOT /XXX/g2o) find_...转载 2020-02-26 11:50:42 · 1766 阅读 · 0 评论 -
[学习SLAM]SLAM 中evo的代码详解(三)
目录associate.py 时间戳匹配evaluate_ate.pySVD分解evaluate_rpe.pytransform44(l):四元数q转旋转矩阵Rominus(a,b)计算a和b之间的相对3d变换。scale(a,scalar):计算尺度compute_distance/compute_anglecontrib(TUM时间乘某数,并KITTI时间...原创 2020-12-09 18:03:56 · 1255 阅读 · 1 评论 -
opencv自定义标定与matlab对比分析 (opecv非正方形标定板)
程序说明程序结构 CmakeLists.txt Cmake文件image_points.xml 图像2D点输入存放object_points.xml标识3D点输入存放注意事项calibration.cpp 主程序#define view_number 6 //图片数目 the number of a scene views#define view_points...原创 2018-07-24 15:33:25 · 1483 阅读 · 2 评论 -
【学习SLAM】c++时间戳 获取与转换
https://tool.lu/timestamp/c++时间戳自 1970 年 1 月 1 日以来经过的秒数:time_t time1 = time(0);//这里获取到的其实就是一个long类型的时间戳,是秒级别的(10位),非毫秒级别 time_t time1 = time(0); cout << "time1 = " << time1 ...原创 2019-06-05 22:27:13 · 5970 阅读 · 0 评论 -
【学习SLAM】Matlab ——旋转矩阵,旋转向量,四元数,欧拉角之间的转换
基于Matlab现有函数下的内容Matlab ——旋转矩阵,旋转向量,四元数,欧拉角之间的转换旋转矩阵 dcm R四元数 quat q = [q0 q1 q2 q3]欧拉角 angle [row,pitch,yaw]/[r1,r2,r3]注:以上表格是为了帮助理解的表示roll(横滚) --X pitch(俯仰)--Y ...原创 2020-08-17 15:18:23 · 4801 阅读 · 0 评论 -
【学习SLAM】PL-SLAM: 基于点和线条的实时单目slam
大家好,对于VSLAM研究人员当然要对最新的VSLAM的研究做下总结了,这次为大家介绍PL-SLAM。上图就是PL-SLAM的框架,是不是感觉和ORBSLAM很像呢?比较典型打特征法+直接法的结合的关键帧的Vslam跟ORBSLAM有三个主要线程:跟踪 、构图、回环检测一、Tracking(估计相机的位置,根据约束条件,产生新的关键帧)特征提取方面:ORB、lsd的线条像素特征...转载 2019-06-05 22:39:03 · 3568 阅读 · 1 评论 -
【学习SLAM】视觉SLAM笔记之Frame 类
Frame 类 [数据成员]定义了 ID、时间戳、位姿、相机、图像 在 Frame 中,我们定义了 ID、时间戳、位姿、相机、图像这几个量;public:// data members typedef std::shared_ptr<Frame> Ptr; unsigned long id_; // id of this frame double time_stam...原创 2019-06-05 22:36:42 · 1322 阅读 · 0 评论 -
[学习SLAM]数学中的几何变换-向量叉乘/旋转轴、旋转角度和旋转矩阵/坐标系变换
数学几何知识01——向量叉乘首先说一说向量点乘,向量a=(x1,y1)和向量b=(x2,y2)设a和b所在坐标系是正交的,坐标系向量为(i, j)a•b= x1*x2+y1*y2+ 2*(x1y2+x2y1)*(i•j)由于向量(i)和(j)相互垂直,所以(i•j) = 0;故a•b = x1*x2+y1*y2;同理,在空间坐标系下,向量a=(x1, y1, z1) 和向量...转载 2019-07-09 13:56:39 · 2165 阅读 · 0 评论 -
[SLAM学习]ORB_SLAM2中的Tracking的单目Monocular问题汇总
mVelocity (速度)mVelocity = mCurrentFrame.mTcw*LastTwc;1 Tracking初始化列表c++ : 作用,初始化列表,后面的表达式用于初始化它的成员变量,或者基类的成员变量 class A{public:A():i(123)/////相当于给i赋值{} Tracking(Syst...原创 2019-06-25 13:37:06 · 916 阅读 · 0 评论 -
[学习SLAM]卡尔曼滤波的示意图,原理,实践[matlab] 3
卡尔曼滤波图画示意先从简单的说起:考虑轨道上的一个小车,无外力作用,它在时刻t的状态向量只与相关:(状态向量就是描述它的t=0时刻所有状态的向量,比如:[速度大小5m/s, 速度方向右, 位置坐标0],反正有了这个向量就可以完全预测t=1时刻小车的状态)那么根据t=0时刻的初值,理论上我们可以求出它任意时刻的状态。当然,实际情况不会这么美好。这个递推函数可能会受到各种不确...转载 2019-07-09 13:32:54 · 1089 阅读 · 0 评论 -
[学习slam]基于matlab卡尔曼滤波(KalmanFilter)实践2
[学习slam]基于opencv卡尔曼滤波(KalmanFilter)理论与实践https://blog.csdn.net/KYJL888/article/details/94024509%% % 附matlab下面的kalman滤波程序:clear all;% Kalman滤波技术A=1; % ...原创 2019-07-08 10:13:57 · 1182 阅读 · 0 评论 -
[SLAM学习]ORB_SLAM2中的system的单目Monocular问题汇总
system.h1 输入图像和时间戳 // Proccess the given monocular frame // Input images: RGB (CV_8UC3) or grayscale (CV_8U). RGB is converted to grayscale. // Returns the camera pose (empty if tracki...原创 2019-06-24 19:06:55 · 1204 阅读 · 0 评论 -
[学习slam]基于opencv卡尔曼滤波(KalmanFilter)理论与实践
参考 https://en.wikipedia.org/wiki/Kalman_filter背景: 卡尔曼滤波是一种高效率的递归滤波器(自回归滤波器), 它能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态。卡尔曼滤波的一个典型实例是从一组有限的,包含噪声的,对物体位置的观察序列(可能有偏差)预测出物体的位置的坐标及速度。 目前,卡尔曼滤波已经有很多不同...原创 2019-07-03 14:14:04 · 1506 阅读 · 0 评论 -
[学习ros] 乌龟测试中学习常用命令
如果从 ROS 指令中得到“command not found”错误,最可能的原因是,setup.bash 尚未在当前 shell中运行进一步加载setup.bash文件:catkin_ws$ source devel/setup.bash乌龟测试打开terminal,来敲命令:(1)启动ROS MASTER:roscore 是不是显示 started core...原创 2019-07-27 22:54:10 · 1001 阅读 · 0 评论 -
[学习SLAM]深度学习+视觉SLAM 的可行性/方向
时间:2019.07 作者:干磊背景:本文统计的是2018年及以前的相关论,未涉及2019年的论文。1,深度学习+SLAM的可行性长期来讲,深度学习有极大可能会去替代目前SLAM技术中的某些模块,但彻底端到端取代SLAM可能性不大。 短期来讲(三到五年),深度学习不会对传统SLAM技术产生很大冲击。2,深度学习+SLAM的 5 个主要研究方向1)单目SLAM学习尺度/深度...转载 2019-08-02 15:19:23 · 6006 阅读 · 1 评论 -
[双目相机]Ubuntu SDK 源码安装MYNT_EYE (小觅双目惯导传感器使用)
Ubuntu SDK 源码安装MYNT_EYE如果是其他 Linux 发行版,不是用的 apt-get 包管理工具,那你准备依赖时不能 make init 自动安装,得自己手动安装了。必要安装项如下:Linux How to install required packages Debian based sudo apt-get install build-essential...原创 2019-08-08 22:04:34 · 2040 阅读 · 1 评论 -
[学习SLAM]KITTI_odometry_evaluation_tool_master使用工具说明(KITTI里程计评估工具)
使用说明每个轨迹文件'x x.txt'都包含一个n x 12表,其中n是序列的帧数。第i行通过3x4变换矩阵表示第i个姿势。要评估一个或多个给定的轨迹,如“data”文件夹中的“09 pred.txt”和“10 pred.txt”:python evaluation.py--result_dir=/data/--eva_seqs=09_pred,10_pred要计算“data”文件夹中的...原创 2019-08-30 09:28:30 · 5368 阅读 · 14 评论 -
【学习SLAM】ORB_SLAM2 双目测试(1)
针对双目相机和RGB-D相机的ORB-SLAM2建立在单目ORB-SLAM的基础上,它的核心组件,如图2所示。图2 ORB-SLAM2由三个平行的线程组成,跟踪,局部建图和回环检测。在一次回环检测后,会执行第四个线程,去执行BA优化。跟踪的线程在双目或者RGB-D输入之前进行,因此剩下的系统模块能够跟传感器模块独立运行。单目的ORB-SLAM2工作图也是这幅图。这个...原创 2020-12-09 17:57:17 · 2327 阅读 · 0 评论 -
【无人驾驶】“自主代客泊车”/自动泊车方案调研 2
目录智行者发布自主代客泊车(AVP)方案中电昆辰“鹰眼”定位(射频定位、UWB)百度自主泊车解决方案纵目科技驭势科技纽劢科技Momenta魔视智能吉利魔视智能戴姆勒和博世【无人驾驶】“自主代客泊车”概述 1 自主泊车方案在自动驾驶领域,作为L4级别自动驾驶方案中的一个分支,自主泊车方案一方面整合了L4级别自动驾驶的技术,另一面由于...原创 2019-09-28 18:49:14 · 30676 阅读 · 2 评论 -
SLAM 中evo的原理(一)
""" RALIGN - Rigid alignment of two sets of points in k-dimensional Euclidean space. Given two sets of points in correspondence, this function computes the scaling, ro...翻译 2019-08-30 09:25:56 · 794 阅读 · 0 评论 -
Proj.4库的编译及使用-1
Proj.4库的编译及使用Proj.4是开源GIS最著名的地图投影库,GRASS GIS, MapServer, PostGIS, Thuban, OGDI, Mapnik, TopoCad, GDAL/OGR等软件的投影都直接或间接的使用Proj.4。Proj.4的功能主要有经纬度坐标与地理坐标的转换,坐标系的转换,包括基准变换等,下面以命令行方式和编程方式来说明经纬度坐标与地理坐标转换功...转载 2019-04-12 18:47:53 · 4708 阅读 · 0 评论 -
双目标定:matlab自动标定相机参数方法
https://jingyan.baidu.com/article/22a299b5e6da909e18376a75.html双目标定是立体视觉系统中的一个关键步骤,双目标定的目的是获取相机的内参和外参,外参包括旋转矩阵和平移向量;在进行双目标定时,有两种常见的数据库:matlab视觉处理库和opencv开源视觉库;通常matlab中标定的结果比较稳定,可以在matlab中标定之后...转载 2018-08-10 19:52:46 · 2732 阅读 · 3 评论 -
·计算机视觉」立体视觉 对极几何 (Epipolar Geometry) 本质矩阵E 基础矩阵F
致敬 (参考书)永远的丰碑 必看的书计算机视觉中的多视图几何学习opencv (参考书) 联想:地球-南北极 对极几何本质矩阵(本征矩阵) 相机坐标系的关系基础矩阵 图像像素坐标系的关系(加入内参)先思考一个问题:用两个相机在不同的位置拍摄同一物体,如果两张照片中的景物有重叠的部分,我们有理由相信,这两张照片之间存在一定的对应关系,本节的任务就是如何描述它们...原创 2018-08-10 18:05:48 · 8949 阅读 · 5 评论 -
【计算机视觉】PnP算法简介与代码解析-柴政(solvepnp理论篇)
PnP算法简介与代码解析-柴政PnP求解算法是指通过多对3D与2D匹配点,在已知或者未知相机内参的情况下,利用最小化重投影误差来求解相机外参的算法。PnP求解算法是SLAM前端位姿跟踪部分中常用的算法之一,本次公开课,将详细讲述P3P、DLT、EPnP、 ... 本期公开课将详细讲述常见的PnP求解算法。PnP求解算法是指通过多对3D与2D匹配点,在已知或者未知相机内参的情况下,利用最小...转载 2018-07-31 20:09:13 · 28658 阅读 · 3 评论