- 博客(143)
- 资源 (20)
- 收藏
- 关注
原创 VINS-Mono笔记03_预积分
VINS-Mono笔记03_预积分预积分理论为什么需要预积分连续时间下的预积分离散时间下的预积分预积分量的协方差预积分代码实现预积分类`IntegrationBase`预积分类的成员函数构造函数`IntegrationBase::IntegrationBase()`传入IMU数据帧时调用`IntegrationBase::push_back()`进行预积分零偏改变时调用`IntegrationBase::repropagate()`重新积分优化过程中调用`IntegrationBase::evaluate.
2022-01-12 17:20:47 2138 9
原创 VINS-Mono笔记02_前端特征点追踪feature_tracker
VINS-Mono笔记02_前端特征点追踪feature_tracker预备知识ROS预定义消息格式图像消息格式[`Image`](http://docs.ros.org/en/noetic/api/sensor_msgs/html/msg/Imu.html)点云消息格式[`PointCloud`](http://docs.ros.org/en/noetic/api/sensor_msgs/html/msg/PointCloud.html)ROS节点的格式前端特征点追踪节点`feature_tracker.
2022-01-10 09:18:44 2916 2
原创 VINS-Mono笔记01_VINS-Mono的编译运行
VINS-Mono笔记01_VINS-Mono的编译运行编译VINS-Mono安装ROS安装OpenCV,Eigen3和Ceres创建ROS工作空间导入ROS包编译运行VINS-Mono运行ROS节点运行launch文件准备数据查看节点间的关系本笔记记录在Ubuntu18.04下基于Ruroc数据集编译运行VINS-Mono项目的过程.编译VINS-Mono安装ROS关于ROS安装的教程很多,随便找一篇照着做就行.为提升速度,可以将软件源换成国内源.安装OpenCV,Eigen3和CeresOp
2022-01-06 10:06:53 5057 10
原创 ORB-SLAM2代码详解09: 闭环线程LoopClosing
ORB-SLAM2代码详解09: 闭环线程LoopClosing各成员函数/变量闭环主函数: `Run()`闭环检测: `DetectLoop()`计算Sim3变换: `ComputeSim3()`闭环矫正: `CorrectLoop()`各成员函数/变量闭环主函数: Run()void LoopClosing::Run() { while (1) { if (CheckNewKeyFrames()) { if (DetectLoop()) {
2021-05-14 11:44:20 4482 2
原创 ORB-SLAM2代码详解07: 跟踪线程Tracking
ORB-SLAM2代码详解07: 跟踪线程Tracking各成员函数/变量跟踪状态初始化单目相机初始化: `MonocularInitialization()`双目/RGBD相机初始化: `StereoInitialization()`初始位姿估计根据恒速运动模型估计初始位姿: `TrackWithMotionModel()`根据参考帧估计位姿: `TrackReferenceKeyFrame()`通过重定位估计位姿: `Relocalization()`跟踪局部地图: `TrackLocalMap()`关
2021-05-14 11:38:11 5510 2
原创 ORB-SLAM2代码详解08: 局部建图线程LocalMapping
ORB-SLAM2代码详解08: 局部建图线程LocalMapping各成员函数/变量局部建图主函数: `Run()`处理队列中第一个关键帧: `ProcessNewKeyFrame()`剔除冗余地图点: `MapPointCulling()`创建新地图点: `CreateNewMapPoints()`融合当前关键帧和其共视帧的地图点: `SearchInNeighbors()`局部BA优化: `Optimizer::LocalBundleAdjustment()`剔除冗余关键帧: `KeyFrameCul
2021-05-14 11:37:45 4517
原创 ORB-SLAM2代码详解06: 单目初始化器Initializer
ORB-SLAM2代码详解06: 单目初始化器Initializer各成员变量/函数初始化函数`Initialize()`计算基础矩阵`F`和单应矩阵`H`RANSAC算法计算基础矩阵`F`: `FindFundamental()`八点法计算`F`矩阵: `ComputeF21()`计算单应矩阵`H`: `FindHomography()`卡方检验计算置信度得分: `CheckFundamental()`、`CheckHomography()`归一化: `Normalize()`使用基础矩阵`F`和单应矩阵
2021-05-14 11:34:05 4341 1
原创 ORB-SLAM2代码详解05: 关键帧KeyFrame
ORB-SLAM2代码详解05: 关键帧KeyFrame各成员函数/变量共视图`mConnectedKeyFrameWeights`基于对地图点的观测构造共视图`UpdateConnections()`生成树`mpParent`、`mspChildrens`关键帧的删除参与回环检测的关键帧具有不被删除的特权`mbNotErase`删除关键帧时维护共视图和生成树对地图点的观测回环检测==与本质图==`KeyFrame`的用途`KeyFrame`类的生命周期各成员函数/变量共视图mConnectedKey
2021-05-14 11:33:32 6893 4
原创 ORB-SLAM2代码详解04: 帧Frame
ORB-SLAM2代码详解04: 帧Frame各成员函数/变量相机相关信息特征点提取特征点提取`ExtractORB()`ORB-SLAM2对双目/RGBD特征点的预处理双目视差公式双目特征点的处理:双目图像特征点匹配`ComputeStereoMatches()`RBGD特征点的处理: 根据深度信息构造虚拟右目图像`ComputeStereoFromRGBD()`畸变矫正`UndistortKeyPoints()`特征点分配`AssignFeaturesToGrid()`构造函数`Frame()``Fra
2021-05-14 11:30:01 5147 1
原创 ORB-SLAM2代码详解03: 地图点MapPoint
ORB-SLAM2代码详解03: 地图点MapPoint各成员函数/变量地图点的世界坐标`mWorldPos`与关键帧的观测关系`mObservations`尺度平均观测距离`mfMinDistance`和`mfMaxDistance`更新平均观测方向和距离`UpdateNormalAndDepth()`特征描述子地图点的删除与替换地图点的删除`SetBadFlag()`地图点的替换`Replace()``MapPoint`类的用途`MapPoint`的生命周期各成员函数/变量地图点的世界坐标mWor
2021-05-14 11:28:38 7619 8
原创 ORB-SLAM2代码详解02: 特征点提取器ORBextractor
ORB-SLAM2代码详解02: 特征点提取器ORBextractor各成员函数/变量构造函数`ORBextractor()`构建图像金字塔`ComputePyramid()`提取特征点并进行筛选`ComputeKeyPointsOctTree()`八叉树筛选特征点`DistributeOctTree()`计算特征点方向`computeOrientation()`计算特征点描述子`computeOrbDescriptor()``ORBextractor`类的用途`ORBextractor`类提取特征点的主函
2021-05-14 11:27:14 9948 16
原创 ORB-SLAM2代码详解01: ORB-SLAM2代码运行流程
ORB-SLAM2代码详解01: ORB-SLAM2代码运行流程运行官方Demo阅读代码之前你应该知道的事情变量命名规则理解多线程为什么要使用多线程?多线程中的锁SLAM主类`System`构造函数跟踪函数运行官方Demo以TUM数据集为例,运行Demo的命令:./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILErgbd_tu
2021-05-14 11:25:07 13124 10
原创 侯捷C++课程笔记04: C++2.0新特性
侯捷C++课程笔记04: C++2.0新特性语言新特性模板表达式中的空格`nullptr`和`std::nullptr_t`使用`auto`自动推断类型uniform initialization语言新特性模板表达式中的空格在C++11之前,多层模板参数在嵌套时,最后的两个>之间要加一个空格,以避免和>>运算符混淆;C++11之后就不需要这样做了vector<list<int> >; // 左右版本均能通过编译vector<list<int&
2021-04-07 16:07:08 2945 3
原创 侯捷C++课程笔记03: STL标准库与泛型编程
文章目录STL各组件应用示例STL六大组件容器使用`array`使用`vector`使用`list`使用`forward_list`使用`deque`使用`stack`和`queue`使用`multiset`和`multimap`使用`unordered_multiset`和`unordered_multimap`分配器STL各组件应用示例STL六大组件STL六大组件包括容器(container)、分配器(allocator)、算法(algorithm)、迭代器(iterator)、适配器(adapt
2021-03-23 17:51:27 7829 12
原创 侯捷C++课程笔记02: 面向对象高级编程(下)
文章目录转换函数将本类型转换为其他类型将其他类型转换为本类型使用`explicit`关键字避免隐式转换伪指针(pointer-like classes)和伪函数(function-like classes)伪指针(pointer-like classes)伪函数模板类模板、函数模板和成员模板模板特化和与偏特化模板特化模板偏特化模板模板参数转换函数转换函数分为两类: 将本类型转换为其他类型和将其他类型转换为本类型.将本类型转换为其他类型定义操作符类型名()即可指定将本类型变量转换为其他类型的函数,示例
2021-03-16 20:02:08 4308 8
原创 侯捷C++课程笔记01: 面向对象高级编程(上)
文章目录Docker的安装Docker的基本组成Docker的安装演示系统环境安装步骤配置阿里云镜像加速服务运行 HelloWorld的过程中发生了什么Docker与VM的比较Docker命令常用Dcoker命令帮助命令镜像命令容器命令其他常用命令Docker命令小结练习练习01: 使用Docker安装Nginx练习02: 使用Docker安装Tomcat练习03: 使用Docker部署ElasticsearchDocker镜像Docker镜像原理镜像commitDocker的安装Docker的基本组成
2021-03-10 16:11:46 9076 9
原创 Docker学习笔记总结
文章目录Docker的安装Docker的基本组成Docker的安装演示系统环境安装步骤配置阿里云镜像加速服务运行 HelloWorld的过程中发生了什么Docker与VM的比较Docker常用命令帮助命令镜像命令容器命令其他常用命令Docker的安装Docker的基本组成首先要明确镜像(image),**容器(container)和仓库(repository)**的概念:镜像(image): Docker镜像(image)就是一个只读的模板,用于创建 Docker 容器.Docker镜像和容
2021-02-18 00:41:13 1827 1
原创 华北电力大学《随机过程·2020年冬》复习笔记
文章目录ch0 预备知识分布全概率公式和全期望公式Γ\GammaΓ函数ch1 随机过程的基本概念§2.3 随机过程的数字特征ch3 泊松过程§3.1 泊松过程的定义§3.2 泊松过程的性质§3.3 非齐次泊松过程§3.4 复合泊松过程ch4 马尔可夫过程ch0 预备知识分布泊松分布:概率密度函数:f(n,λ)=e−λλkk!n=1,2,... f(n, \lambda) = e^{-\lambda} \frac{\lambda^k}{k!} \qquad n=1,2,... f(n
2021-01-05 03:40:58 1432 3
原创 PyTorch学习笔记01: PyTorch基本概念
PyTorch学习笔记01: PyTorch基本概念张量的简介和创建张量的概念张量的创建直接创建张量依数值创建张量依概率创建张量的操作张量的形态变换拼接与切分张量索引形状变换张量的数学运算张量的简介和创建张量的概念Tensor与Variable的关系:torch.autograd.Variable封装了Tensor,用于进行自动求导,其属性如下:data: 被包装的Tensorgrad: data的梯度grad_fn: 创建Tensor的Function,是自动求导的关键require
2020-07-28 19:40:58 1123
原创 leetcode410:分割数组的最大值_填表法求解动态规划
leetcode410:分割数组的最大值_填表法求解动态规划动态规划算法动态规划数组的定义状态转移:状态之间的变换关系状态的边界: 填表法`dp`数组取值不存在的区域`dp`数组取值的边界区域正常状态转移的区域代码实现伪代码Java代码动态规划算法动态规划算法有两个难点:寻找状态转移方程: 这个需要一点直觉.状态边界的确定: 如果状态边界确定不好就会带来各种bug,这个视频中我通过填表法解决这个问题.动态规划数组的定义定义动态规划数组dp[i][j]表示将nums[0, ..., i]区
2020-07-28 00:15:42 1010
原创 leetcode004:寻找两个正序数组的中位数_二分法
leetcode04:寻找两个正序数组的中位数解法题目思路暴力思路: 将两个数组先合并,再求中位数.暴力思路2: 将所有元素分为两部分二分法: 借助数组的有序性,减少尝试次数题目4. 寻找两个正序数组的中位数给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则
2020-07-10 15:16:32 642
原创 九章算法01:二分法
九章算法01:二分法九章算法01:二分法二分法第一重境界: 套模板二分法第二重境界: 找OOXX二分法第二重境界: 二分位置九章算法01:二分法二分法第一重境界: 套模板public class Solution { /** * @param nums an integer array sorted in ascending order * @param target an integer * @return an integer */ pu
2020-07-10 12:34:49 893 4
转载 智能计算系统课程笔记05:编程框架机理
智能计算系统课程笔记05:编程框架机理TensorFlow设计原则TensorFlow计算图机制计算图的自动求导常用的求导方法手动求解法数值求导法符号求导法自动求导法四种求导方法的对比检查点机制TensorFlow 中的控制流5个基本的控制流算子控制流结构的编译计算图的执行模式计算图本地执行计算图剪枝计算图分配计算图优化计算图切分和设备通信计算图的分布式执行分布式通信容错机制TensorFlow设计原则TensorFlow的设计原则为:高性能,易开发,可移植高性能TensorFlow中的算子
2020-05-22 17:18:01 794
原创 算法学习14: 线段树
算法学习13: 线段树线段树要解决的问题线段树的结构线段树要解决的问题线段树要解决的问题是: 在一个实时更新的数组中查询区间和.若所查询的数组为静态数组,则此问题只需要使用数组前缀和既能解决.线段树的结构线段树是一种平衡二叉树,其每个节点存储数组中一段区间和.其左子节点存储区间左半部分和;其右子节点存储区间右半部分和.因为线段树是一个平衡二叉树,虽然不是完全二叉树,但是可以像完全二叉树...
2020-05-21 10:51:54 1075 1
原创 Python装饰器本质上是对函数闭包的语法糖
装饰器是Python中的一个容易令人困惑的概念,但实际上,只要掌握两句口诀,就可以掌握装饰器,搞定那些令人困惑的面试题.装饰器本质上是对函数闭包的语法糖.装饰器在第一次调用被装饰的函数时调用闭包进行函数增强.函数闭包函数闭包本质上是一个函数,它的接收参数和返回值也都是函数,返回的函数本质上是对传入的参数进行增强之后的结果.下面,我们从一个例子来引入函数闭包:假设我们有一个主要需求(主要功能): 统计0~100之间的所有奇数,还有一个额外的需求(辅助功能):统计函数运行的时间,我们从各种不同的
2020-05-12 14:18:56 3235 6
原创 MATLAB07:数值计算
文章目录MATLAB07: 使用MATLAB求解微积分多项式微积分使用MATLAB表示多项式使用向量表示多项式多项式求值:`polyval()`多项式的乘法:`conv()`多项式的微积分多项式的微分:`polyder()`多项式的积分:`polyint()`MATLAB07: 使用MATLAB求解微积分多项式微积分使用MATLAB表示多项式使用向量表示多项式在MATLAB中,多项式可以...
2020-05-07 20:23:17 26496 10
原创 TensorFlow学习笔记02:使用tf.data读取和保存数据文件
TensorFlow学习笔记02:使用tf.data读取和保存数据文件使用`tf.data`读取和写入数据文件读取和写入csv文件写入csv文件读取csv文件读取和保存TFRecord文件TFRecord基础API`Example`对象的创建和序列化TFRecord文件的读写写入TFRecord文件读取TFRecord文件使用tf.data读取和写入数据文件准备加州房价数据并将其标准化:fr...
2020-04-19 22:50:55 4451
原创 《视觉SLAM十四讲》笔记摘抄
ch02 初识SLAM经典视觉SLAM框架视觉SLAM流程包括以下步骤:传感器信息读取: 在视觉SLAM中主要为相机图像信息的读取和预处理.如果是在机器人中,还可能有码盘、惯性传感器等信息的读取和同步.视觉里程计(Visual Odometry,VO): 视觉里程计的任务是估算相邻图像间相机的运动,以及局部地图的样子.VO又称为前端(Front End).视觉里程计不可避免地会...
2020-04-05 19:27:01 52644 26
原创 OpenCV学习笔记01:读取和遍历图像
文章目录使用OpenCV读取和保存图片图片的读取图片的变换和保存`cv::Mat`基本图像容器`cv::Mat`类的结构创建`cv::Mat`对象数据的获取与存储常见错误使用OpenCV读取和保存图片图片的读取在安装好OpenCV后,编写第一个OpenCV测试程序如下:#include <opencv2/core.hpp>#include <opencv2/imgcod...
2020-03-07 13:18:23 1370 1
原创 TensorFlow学习笔记01:使用tf.keras训练模型
文章目录week1Tensorflow入门使用单神经元完成线性回归使用神经网络进行图片分类获取数据集定义并训练神经网络定义回调函数使用卷积神经网络进行图片分类Enhancing Vision with Convolutional Neural NetworksUsing Real-world Imagesweek1Tensorflow入门使用单神经元完成线性回归使用Tensorflow创建...
2020-01-20 21:55:36 2082
原创 数据科学Python库01:Pandas
文章目录week 1introductionweek2Series和DataFrame类的基本用法Series类创建Series对象对Series对象进行索引Series对象的标签索引对Series对象应用Numpy方法DataFrame类创建Dataframe对象对DataFrame对象进行索引week3week 1introduction[外链图片转存失败,源站可能有防盗链机制,建议将图...
2020-01-07 00:23:16 1123 1
原创 控制装置与仪表随堂练习答案及知识点总结02
文章目录绪论控制装置的主要构成变送器的用途:现场总线控制系统(FCS)基础知识基本概念控制仪表的性能信号制供电技术控制仪表的通信控制装置的抗干扰绪论控制装置的主要构成变送器: 将被测参数转换成标准输出信号的仪表控制器执行器变送器的用途:将被测参数的物理量转换成4~20mA或0~10mA直流信号.(记住两种标准信号的范围).有模拟式与数字式一般安装在现场分为温度,压力,流量...
2019-12-23 08:51:02 3391
原创 控制装置与仪表随堂练习答案及知识点总结01
文章目录第二章 计算机控制的理论基础§2.2.连续模型与离散模型间的转换向后差分变换法双线性变换法零阶保持器法☆零阶保持器法各种方法的特点§2.4.线性离散控制系统的稳定性分析稳定条件稳定性判据☆第三章 过程计算机系统的抗干扰技术§3.6.数字滤波技术第四章 过程输入输出通道§4.3.模拟量输入通道采样保持器AD转换器工作原理逐位逼近式AD转换原理(☆)双积分式AD转换原理(☆)Σ-Δ式AD转换原...
2019-12-20 16:42:35 8277 4
原创 LinuxC语言编程03:输入输出
文章目录标准I/O流文本流与二进制流流的缓冲类型预定义的流标准I/O的函数流的打开与关闭流的打开流的关闭处理错误信息文件I/O标准IO: 标准C中定义好了的一组输入和输出的API标准I/O流标准I/O将打开文件的信息抽象成为流(stream),使用FILE结构体代表流.标准I/O的所有操作都是围绕FILE结构体进行的.文本流与二进制流Windows操作系统区分文本流与二进制流,两者间最...
2019-12-11 17:23:22 1314
原创 Shell脚本入门知识点总结
文章目录一个shell脚本的示例变量自定义变量定义和使用变量只读变量删除变量定义和使用数组特殊变量接收命令行参数的位置变量其它特殊变量命令替换: 将命令的输出结果赋值给变量Shell运算符算数运算关系运算符数值比较字符串比较文件比较逻辑运算流程控制判断语句if语句case语句循环语句while语句for语句Shell是一个面向字符串编程的脚本语言.有两个很好的入门shell的网站:Shell 教...
2019-12-08 23:22:34 1954 4
原创 LinuxC语言编程02:编译与调试C程序
文章目录编译器与调试器编译器GCCGCC编译过程GCC命令调试器GDB构建工具Makefile的基本结构编译器与调试器编译器GCCGCC编译过程GCC编译过程分为4步:预处理(Pre-Processing): 进行头文件展开,宏替换,条件编译,生成预处理文件*.i.编译(Compiling): 将预处理文件编译成汇编代码*.s.汇编(Assembling): 将汇编代码编译成二进制...
2019-12-07 15:25:19 1014
原创 LinuxC语言编程01:复习C语言语法
文章目录C语言语法变量sizeof变量的存储类型输入输出运算符的优先级指针指针与数组字符指针与字符串C语言语法变量sizeof变量的存储类型在定义变量时,完整的语法是<存储类型> <变量类型> <变量名>,其中<存储类型>常常不写,默认为auto.变量的存储类型有如下四种:关键字存储类型auto(默认)默认型...
2019-12-05 16:50:44 1882
原创 vim初级命令总结
vim初级命令总结vim的三种模式vim的命令模式切换命令保存和退出指令(底行模式)拷贝与粘贴命令光标命令查找和替换命令vim的三种模式模式描述命令行模式用户一进入vim就处于该模式下可以进行复制,粘贴等操作插入模式进行文件编辑,按Esc可以回到命令行模式底行模式光标位于屏幕的底行可以进行文本的查找,替换,显示行号等操作vim的命令模式切换命令...
2019-12-01 16:44:42 513
原创 机器学习04:决策树与随机森林
机器学习04:决策树与随机森林决策树决策树的生成决策树的优缺点决策树的优点决策树的缺点随机森林随机森林VS.逻辑回归使用代码实现决策树与随机森林决策树决策树是一个基本的非线性有监督分类模型,一般被用于处理离散的数据.它通过对一系列的属性判断测试预测样本的标签,属性判断测试的过程被抽象成一棵树的形式.一棵决策树由一个根节点,若干个内部节点和若干个叶节点组成.叶节点对应决策结果,而其他每...
2019-11-29 22:15:54 1073
【 2021启航】01.Python开发环境的配置 Anaconda, Pycharm,, Jupyter的安装使用.pptx
2020-10-11
leetcode410:分割数组的最大值_填表法求解动态规划
2020-07-28
leetcode04_寻找两个正序数组的中位数解法.rar
2020-07-10
字符串算法(KMP算法和Manacher算法)的矢量图.pptx
2020-05-22
Python装饰器课程的PPT课件和源代码
2020-05-12
车道线检测项目的原视频
2020-05-07
从车道线检测项目入门opencv
2020-04-30
各种格式的lena图片
2020-03-06
吴恩达深度学习课程概念对照表
2020-02-07
华北电力大学_控制装置与仪表PPT.zip
2019-12-23
逻辑回归的分类问题矢量图.pptx
2019-11-07
火电厂热工检测系统课程设计_再热蒸汽系统的设计.rar
2019-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人