自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 SLAM秋招知识点总结——自动驾驶算法、3D视觉岗位(附有解答)
原力计划

前言 本文为楼主在学习SLAM过程中相关知识点总结,包含多视图几何、常见SLAM系统源码解析、相关数学知识、图像处理问题、机器视觉知识点、《十四讲》精品总结、基本库安装等系列。这些知识点帮助我在2020年秋招面试自动驾驶岗位过程中有了系统认知。2020年新冠疫情影响滞留在家,把之前学习的知识点做...

2020-04-07 12:18:14 853 0

原创 一文详解单目VINS论文与代码解读目录

Vins-mono是香港科技大学开源的一个VIO算法,用紧耦合的方法,通过单目+IMU恢复出尺度,效果非常棒。 VINS的功能模块可包括五个部分:数据预处理、初始化、后端非线性优化、闭环检测及闭环优化。代码中主要开启了四个线程,分别是:前端图像跟踪、后端非线性优化(其中初始化和IMU预积分在这个...

2020-03-14 09:32:16 861 0

原创 《剑指Offer》 目录

链表总结篇 递归总结篇 动态规划(基于递归的循环) 二叉树遍历(前中后序、广度优先、深度优先) 查找:二分查找、哈希表、二叉搜索树 排序算法 ...

2019-07-18 20:18:49 183 0

原创 C++知识点目录(都有答案)

LZ发现每天吸收的知识很多了,可是C++知识点还只是零散的,所以非常需要这样一个思维导图来给自己一个C++学习的宏观框架。希望以后可以不断补充各板块内容 目录 C++ Tips 关键字:const、static、explcit、override move、 指向对象的指针 动态内存:a...

2019-07-18 11:03:20 279 0

原创 进程和线程主要区别与定义

抽象理解 直接上图,CPU是工厂、电力资源是cpu 时间片、进程是车间、线程是车间工人。 操作系统的资源分配与调度逻辑 以多进程形式,允许多个任务同时运行; 以多线程形式,允许单个任务分成不同的部分运行; 提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资...

2020-06-28 17:33:51 76 0

原创 《wiki官网教程》2 编写简单的服务器service和客户端 client(C++)
原力计划

服务(services)是节点之间通讯的另一种方式。服务允许节点发送请求(request) 并获得一个响应(response)。 之前讲的是两个节点如果要通信需要经过话题topic,一个节点需要订阅话题并sub消息,另一个节点订阅话题并发布pub消息。 使用方式: rosservice list ...

2020-06-27 12:49:14 75 0

原创 VS Code创建、调试ROS项目
原力计划

前言: 在vs code下配置ROS项目开发的环境 包括catkin创建编译工作空间,创建ROS项目,调试ROS节点 一、创建工作空间 首先创建一个cMake工作空间,用到了catkin_make其实就是 cmake … make 两个步骤的缩写。 $ mkdir -p ~/ros_test/sr...

2020-06-23 19:03:54 241 0

原创 Ubuntu18.04配置VS Code+CMake的C++开发环境
原力计划

2020-06-14 首先,介绍自己电脑:Ubuntu18.04、VS Code 1.46版 本文目的:为VS Code配置好C++ 开发环境,以及VS Code +CMake的配置 对于C++ 工程,有四个必要的json配置文件,先ctrl+shift+p打开输入指令分别是: c_cpp_pr...

2020-06-16 16:03:37 168 0

原创 从头到尾配置最好用的Ubuntu18.04
原力计划

​​ 一、重装Ubuntu系统 ubuntu18.04镜像 直接上图 接下来到了分区界面 我的120G固态硬盘模板为:选择点击“+ - Change”中的“+”: /boot:主分区,300M /:主分区,20G swap:逻辑分区,2G /home:逻辑分区,97G 除了swap的文件格...

2020-06-12 15:07:06 204 0

原创 多传感器融合定位2(封装KF和EKF)
原力计划

有了上一节分别对激光雷达做KF、对毫米波雷达做EKF两种流程之后,我们合并KF和EKF的跟踪算法的代码,将他们封装在一个名为KalmanFilter的类中,方便后续调用。下面做一个多传感器融合定位实验,采集到的数据为两种交替出现的数据。 代码整体框架如图所示: 前言 无论是KF处理线性问题还是E...

2020-05-16 11:32:14 138 0

原创 多传感器融合定位1(激光雷达+毫米波雷达)
原力计划

前言 LZ最近在看Udacity的无人驾驶课程,该课程主要分为三部分,第一部分的课程主要使用Python实现的车道线识别、车牌识别等计算机视觉项目。由于我对定位、建图等方面有些知识储备,所以先从第二部分课程开始。 本节将用最简洁的话讲解卡尔曼滤波KF、非线性卡尔曼滤波EKF等知识点,并就此实现一个...

2020-05-16 11:30:28 395 0

原创 粒子滤波定位
原力计划

理论知识 除了线性状态估计的KF和非线性状态估计的EKF,还有一种可以解决非线性、非高斯问题的粒子滤波算法,粒子滤波主要基于蒙特卡洛方法,使用粒子集来表示概率。 粒子滤波主要分为四部分:初始化、预测、粒子权重更新、重采样,之后在重复的预测、更新、重采样,使得粒子逐渐向真实位置聚集。 1、初始化...

2020-05-16 11:29:24 77 0

原创 激光雷达点云预处理:传感器时间同步、点云去畸变
原力计划

一、传感器时间同步 多传感器融合过程中由于传感器之间的采集频率不同,导致无法保证传感器数据同步。这里以激光雷达为核心传感器,每次收到一次雷达数据,便以当前雷达数据采集时刻作为要插入的时间点,该时刻另一传感器IMU的数据通过插值获得。这里同样可以参考VINS里相机和IMU时间同步的函数代码getMe...

2020-05-14 12:27:34 816 1

原创 基于NDT的前端里程计框架优化
原力计划

本文旨在对上一讲基于NDT的前端里程计代码解析 进行框架上的优化,主要参考知乎上专栏文章《从零开始做自动驾驶定位 》,在此基础上进行更加清晰的代码框架解读。 首先上一篇文章有以下缺点: 1、没有专门的参数配置文件.yaml 2、点云滤波、匹配作为常用的操作,应该专门设置模块。 3、没有内存管理:每...

2020-04-25 23:17:29 124 0

原创 基于NDT的前端里程计代码解析
原力计划

本文主要对Lidar_Localization文件中的三个源文件,front_end_node.cpp、front_end.h/cpp进行详细代码解读。 前端激光雷达点云里程计主要分为:点云下采样滤波、点云匹配、位姿估计、关键帧选取等步骤。具体流程为: 1)第一帧点云数据设置为地图 2)提取关键帧...

2020-04-23 13:47:53 257 4

原创 LOAM源码解析4——transformMaintenance
原力计划

这一部分主要为了:融合后的Lidar轨迹(里程计位姿+地图优化的位姿) main函数 订阅的两个消息节点: 1、laserOdometry节点发布的/laser_odom_to_init消息(Lidar里程计估计位姿到初始坐标系的变换) 2、laserMapping节点发布的/aft_mappe...

2020-04-20 12:47:38 211 0

原创 LOAM源码解析3——laserMapping
原力计划

SLAM系统前面大多是先估计相邻两帧之间相对位姿估计,接下来开始建图,然后根据建图结果对现有姿态进行优化,最后把当前这特征点填充进地图,且估计当前帧相对于世界坐标系下的位姿。 在扫描周期末尾激光雷达里程计输出畸变矫正过的点云Pk+1^\widehat{P_{k+1}}Pk+1​​,同时还有整个周期...

2020-04-20 12:11:31 289 1

原创 LOAM源码解析2——laserOdometry
原力计划

这是LOAM第二部分Lidar laserOdometry雷达里程计。 在第一章提取完特征点后,需要对特征点云进行关联匹配,之后估计姿态。 主要分为两部分: 特征点关联使用scan-to-scan方式t和t+1时刻相邻两帧的点云数据进行配准,分为边缘点匹配和平面点匹配两部分。计算点到直线的距离和...

2020-04-18 22:22:38 255 0

原创 LOAM源码解析——scanRegistration
原力计划

入手激光雷达SLAM,从最经典的LOAM源码开始,之后会对秦通在此基础上改进的A-LOAM源码进行观看,应该就会很简单了,第三步是把LEGO-LOAM的源码进行解读。之前对LOAM的论文进行了详细解读。 LOAM的源码主要分为scanRegistration提取特征点、laserOdometry ...

2020-04-12 20:04:47 236 0

原创 激光雷达坐标系、方向角和仰角
原力计划

激光雷达介绍 单线的激光雷达Lidar,通过发射和接收激光束来计算与观测物体精确距离。 光速测距:通过飞行时间TOF,首先激光发射器发射激光脉冲,计时器记录发射时间;脉冲经物体反射后由接收器接受,计时器记录接受时间;时间差乘上光速即得到距离的两倍。 三维扫描点云:通过TOF时间差获得距离,通过水...

2020-04-11 18:47:39 1380 1

原创 如何通过Git将本地项目上传到Github

一、Git下载安装 先说下Git官网下载太慢的问题,通过下述链接,阿里的镜像可以实现快速下载。 https://npm.taobao.org/mirrors/git-for-windows/ 一直下拉,找到如图所示这些链接(不同的安装方式与不同的系统)。 二、将本地项目通过Git上传到Gi...

2020-04-09 13:16:37 58 0

原创 LeGO-LOAM:轻量级地面优化的建图
原力计划

LEGO-LOAM 是基于LOAM优化的系统,相比之下,有以下优点: 1)LeGO-LOAM是轻量级的,因为可以在嵌入式系统上实现实时姿态估计和建图。 2)去除失真数据,在地面分离之后,执行点云分割以丢弃可能表示不可靠特征的点。 3)LeGO-LOAM引入地面优化,因为我们引入了两步优化姿势估计。...

2020-04-07 22:37:19 431 0

原创 LOAM:实时的雷达里程计和建图
原力计划

之前对视觉SLAM主要的开源框架,ORB-SLAM2、SVO等进行了介绍,然后疫情期间对VINS-Mono进行了详细的源码解析,接下来考虑到工作原因需要用到激光雷达、GNSS、IMU等多传感器融合,所以接下来会对最经典的激光SLAM框架LOAM和LeGo-LOAM两个开源系统进行总结。 之前对激光...

2020-04-07 12:19:03 581 1

原创 一文掌握百度Apollo Udacity自动驾驶课程笔记
原力计划

目录 一、高精地图 1、高精地图与传统地图 2、高精地图与定位、感知、规划的关系 3、Apollo高精地图与构建 二、定位(厘米级) 1、GNSS RTK 2、惯性导航 3、激光雷达定位 4、视觉定位 5、Apollo定位 三、感知 1、计算机视觉 2、Camera图像 ...

2020-04-07 12:17:00 385 0

原创 Endnote连接Word自动插入毕业论文参考文献
原力计划

一、Wod中自动插入参考文献 1、在百度学术中导出endnote格式 找到后点击“引用”,然后选择EndNote,就可以导出来了。 2、导入到word中 先打开Endnote库,把导出的文件打开,之后选中需要导入的文件,如下图蓝色所示。 打开word,导航栏选择En的Note X...

2020-03-24 13:50:32 336 0

原创 VINS-Mono 代码详细解读——回环检测与重定位、四自由度位姿图优化
原力计划

本文主要介绍VINS的闭环检测重定位与位姿图优化部分,作为系列文章的最后一节。 回环检测的关键就是如何有效检测出相机曾经经过同一个地方,这样可以避免较大的累积误差,使得当前帧和之前的某一帧迅速建立约束,形成新的较小的累积误差。由于回环检测提供了当前数据与所有历史数据的关联,在跟踪算法丢失后,还可...

2020-03-22 23:02:19 504 0

原创 VINS-Mono 代码详细解读——基于滑动窗口的紧耦合后端非线性优化 optimization()+滑动窗slideWindow()
原力计划

上一篇文章是基于滑动窗的紧耦合后端非线性优化的理论部分,主要分为以下部分: VIO残差函数构建 视觉约束:视觉重投影误差residual、残差对状态量的Jacobian、协方差 IMU约束:residual、Jacobian、Covariance 基于舒尔补的边缘化 本文将对Esti...

2020-03-21 12:14:28 678 0

原创 VINS-Mono 理论详细解读——紧耦合后端非线性优化 IMU+视觉的残差residual、Jacobian、协方差、基于舒尔补的边缘化
原力计划

本讲是VINS最核心部分了,前面经历了 1)视觉跟踪feature_tracker、IMU预积分integrationBase类;2)初始化中SFM纯视觉估计滑动窗中所有帧的位姿和3D路标点深度、SFM与IMU预积分松耦合对齐求解初始化参数。本节将进行第3部分,基于滑动窗的紧耦合后端非线性优化:将...

2020-03-17 23:27:45 690 0

原创 VINS-Mono 代码详细解读——基础储备:在线Cam到IMU的外参标定 InitialEXRotation类
原力计划

本讲还是为了estimator类中最主要的函数processImage()做知识储备。 前面两讲知识储备主要讲了IMU预积分相关的integrationBase类以及图像特征点管理器feature_manager.cpp,本节将对processImage()的相机到IMU的外参矩阵的代码讲解。 ...

2020-03-17 12:39:02 348 0

原创 C++ STL find和find_if

find则更偏向于普通的数值或者字符比较 find_if针对查找的对象中包含指针需要进行比较 首先从简单的find寻找某个数值开始,其返回的是指向这个数值的迭代器。 注意:需要加入#include <algorithm>头文件 #include <vector> ...

2020-03-16 15:55:31 77 0

原创 VINS-Mono 代码详细解读——feature_manager.cpp
原力计划

LZ发现estimator.cpp中关键函数为processImage(),里面包含了IMU预积分、图像处理特征点跟踪等一系列流程,上一节中对processIMU()以及预积分的integrationBase类进行解读,本节继续做基础储备,对与estimator.cpp中的feature_mana...

2020-03-16 10:44:26 682 0

原创 VINS-Mono 代码详细解读——IMU预积分的残差、Jacobian和协方差 processIMU()+intergrationBase类+imu_factor.h
原力计划

IMU离散中值预积分 1.1、IMU模型 测量值:加速度计a^、陀螺仪w^, 加上了bias游走和随机白噪声。 真实值:加速度计a、陀螺仪w。 实际情况下,可以获得测量值a^和w^,需要反推真实值。一般忽略随机游走高斯噪声n w=w^-bg; a=qwb(a^-ba)-gw; ...

2020-03-15 22:25:17 839 0

原创 VINS-Mono 代码详细解读——Estimator_node.cpp

getMeasurements()函数 对imu和图像数据对齐组合,直到把缓存中图像数据或者IMU数据读取完,才能跳出函数,返回数据。 std::vector<std::pair<std::vector<sensor_msgs::ImuConstPtr>, senso...

2020-03-15 16:01:01 375 0

原创 C++11多线程---互斥量mutex、锁lock、条件变量std::condition_variable
原力计划

线程同步指线程间需要按照预定的先后顺序进行的行为 线程(std::thread)和互斥量(std::mutex)中,互斥量是多线程间同时访问某一共享变量时,保证变量可被安全访问的手段。 通过条件变量。位于头文件condition_variable下 condition_variable 条件...

2020-03-14 17:50:27 378 0

原创 VINS-Mono 代码详细解读——视觉跟踪 feature_trackers

原理 视觉: 1)提取Harris角点,KLT金字塔光流跟踪相邻帧; 2)2 维特征点先矫正为不失真的,然后在通过外点剔除后投影到一个单位球面上; 3)去除异常点:先进行F矩阵测试,通过RANSAC去除异常点; 4)关键帧选取:1、当前帧相对最近的关键帧的特征平均视差大于一个阈值就为关键...

2020-03-13 18:45:01 444 0

原创 VINS-Mono 代码详细解读——初始化2:视觉惯性松耦合初始化 visualIntialAlign()

本节主要介绍Estimator模块的视觉惯性联合初始化模块,visualIntialAlign()函数内第一步VisualIMUAlignment()函数 其中,步骤1的在线Cam到IMU的外参标定qbc 参考之前的博客。 1、陀螺仪零偏bg标定 2、优化 速度v、重力g和尺度初始化s。我们...

2020-03-10 21:20:01 508 3

原创 VINS-Mono 代码详细解读——初始化1:视觉SFM详解 processImage()+initialStructure()

1.检查两帧的视差判断是否为关键帧f_manager.addFeatureCheckParallax()在VINS-Mono 代码详细解读——feature_manager.cpp中已经解释 2.IMU预积分IntegrationBase 在VINS-Mono 代码详细解读——IMU离散中值预积分...

2020-03-05 22:36:43 632 0

原创 extern关键字

1、extern用于两个或多个文件共享相同的全局变量或者函数。对于所有的程序文件是可用的。 2、而且当使用extern时可以找到已经定义的变量或函数的引用。\ 第一个文件: int count ; int main(){ count=5; } 第二个文件: extern int...

2020-03-02 21:27:07 44 0

原创 VINS未读懂代码

run_euroc.cpp 主函数中 pSystem.reset(new System(sConfig_path));// shared_ptr引用计数减一,这里的用法是?????

2020-03-02 19:55:22 67 0

原创 目标跟踪--模板匹配

模板匹配原理 算法步骤 opencv调用函数 matchTemplate minMaxLoc cvSetMouseCallback Rect rectangle 代码 模板匹配原理 根据已知模板图像T在被搜索图S中平移,寻找与模板相似度最大的区域,并记录坐...

2019-12-05 16:57:13 141 0

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