- 博客(23)
- 收藏
- 关注
原创 ORB-SLAM2 轨迹保存与ros::spin()相关问题(ctrl+c无法退出ros::spin()并进行轨迹保存,而是错误的直接退出主程序)
ORB-SLAM2 轨迹保存与ros::spin()相关问题(ctrl+c无法退出ros::spin()并进行轨迹保存,而是错误的直接退出主程序)
2023-05-22 12:50:08
615
原创 PL_VINS
1.概述PL_VINS是一个基于点线识别的实时的单目惯性里程计。在VINS_MONO的基础上,加入了线特征,提升了性能。2.系统构成a.计算预处理PL_VINS的初始线程,提取相机和IMU的raw information,并进行对齐。图像:对每一帧图像中的点、线特征进行识别并跟踪。使用Shi-Tomasi检测点特征,KLT跟踪,基于RANSAC的对极几何进行优化。线:优化LSD提取线特征,LBD算法跟踪提取描述子,KnnMatch匹配。IMU:陀螺仪和加速度计的数据处理方法与
2022-03-16 15:30:02
1103
原创 C++---迭代器
在访问string对象字符或vector对象的元素时,除了使用下标运算符之外,还能使用迭代器(iterator)。类似于指针类型,迭代器也提供了对对象的间接访问。迭代器的对象为容器中的元素或者string对象中的元素。可以对元素进行访问,也可以移动。begin()和end()分别返回第一个元素位置和为元素下一个位置的迭代器。注:若容器为空,则begin和end返回的都是尾后迭代器。常用迭代器运算:*iter(返回迭代器所指元素的引用) iter->...
2022-03-16 10:07:04
1073
原创 C++ 引用 指针
引用:为对象起一个名字,引用类型引用另外一种类型。例如: int reference = 100;int &another = reference;一般的,初始化变量时,初始值会被拷贝到创建的新对象中。However,引用时并不是将初始值拷贝给引用。引用将一直和初始值对象绑定在一起。Note:引用只是已存在对象的另一个名字(它不是一个对象) 对引用赋值,相当于对绑定对象赋值。Note:引用的初始值必须是对象(不能是一个值)例:int &...
2022-03-16 09:28:33
2982
原创 ROS系统初探
ROS系统初探ROS MASTER 节点控制器,控制中心 ----提供命名和注册服务,建立节点间连接,提供参数服务器参数服务器: Parameter 全局共享字典,存储全局可用的参数供节点使用 ----(单向)setparameter -> 参数服务器-> getparameter (动态)可在节点中对参数进行更新ROS NODE 节点 -----完成一系列特定的功能通信机制话题通信(TOPIC)publisher ------------------------> su
2021-07-19 09:41:38
94
原创 SLAM14讲 ch13 双目里程计 代码结构
SLAM14讲 ch13 双目里程计 代码结构头文件功能Algorithm.hSVD的三角化backend.h后端优化,map更新时进行优化config.hset配置文件,获得配置数据dataset.h数据集读取dataset_dirfeature.h获得2D特征点,并关联地图点frame.h分配ID,建立关键帧frontend.h前端,估计当前帧位姿,并想后端加入满足条件的关键帧进行优化map.h地图,前端插入帧和地图点,后端
2021-07-07 23:23:17
358
原创 卷积神经网络(CNN)知识点
卷积神经网络(CNN)1. 卷积核(convolutional kernel)----对某个局部的加权求和一般为奇数大小厚度对应通道数(channel),对应后一层的feature maps数–11卷积核降维(example:当输入为661,通过111卷积核,输出仍为661矩阵。若输入6632(多通道),卷积核仍然为111,输出就变为66*1,实现降维)【发生在卷积核个数小于输入channel时,输出通道数等于卷积核个数】—1*1卷积核(只会改变输出的通道数,不会影响输出特征高和宽)【实现了通道
2021-07-05 22:35:03
636
3
原创 ORB_SLAM3 论文归纳
ORB_SLAM31. 综述ORB_SLAM是第一个支持视觉,视觉惯导和多地图的slam系统(单目,双目,RGB-D)(pin-hole和fisheye)亮点一:基于特征的紧耦合视觉惯导系统(基于最大后验估计)—优点:系统在实时,大小场景以及室内外环境下都有很好的鲁棒性,且整体精确度更高亮点二:基于新位置识别的方法实现多地图系统(multiple map system)—优点:丢失后,可与之前时刻的地图进行融合,能利用更早时刻的地图信息结果:stereo-inertia slam 3.6cm E
2021-07-01 15:04:29
266
原创 Road_slam论文阅读及理解
Road_slamRoad_slam是一种通过相机获得鲁棒的路面标志信息,并将得到的路面标志进行分类。使用路面标志作为回环检测的依据,将路面标志以及车道线作为sub-mapsub-map可以理解为包含路面标志或是车道线的具有辨识性的一系列map使用随机森林的方法提高了sub-map匹配的准确性最终结果即为比较SLAM与RTK-GPS的数据的结果此方法的平均全局准确度为1.098m(4.7km测试路线)sub_map构建大致流程stero camera获得弹幕图像通过更新相机与地面的角
2021-06-14 15:31:49
533
2
原创 GVINS学习笔记及心得
初始化(GNSS与VIO融合)GNSS初始化(coarse-to-fine)GNSS 初始化决定了state的预测结果在线初始化可以从任意情况下恢复初始stateanchor point 的局部和全局坐标已知(用于GNSS 全局系和VIO的局部系融合)前提: a. VIO系统已经完成初始化,如重力向量,初始速度,初始IMU bias,尺度)b. 局部地图系上的光滑轨迹可用于GNSS-VI 的初始化步骤:a. Coarse anchor point localization: 使用GNSS
2021-06-12 16:39:07
2669
3
原创 Resnet 学习笔记
Resnet 不同种类及介绍Background单层前馈神经网络足够完成任何功能, 但该层会非常冗余, 易过拟合所以 需要更深的网络从AlexNet之后,CNN 结构变得越来越深 (AlexNet 5层卷积层 VGG network 19层 GoogleNet 22层)但网络深度并不是简单的堆叠层数,会出现梯度消失的问题,退化问题(梯度是反向传播的,重复叠加会使得梯度无穷小)##介绍ResNet核心思路是“identity shortcut connection",来跳过一层或多层,
2021-06-03 15:00:58
193
原创 A*算法与D*算法 原理及个人解读
A算法与D算法1. A* (Informed Search)1.1Evaluation Function: f(n)=g(n)+h(n)operating cost function: g(n)Heuristic fucntion: h(n) (相较于Dijkstra 算法 增加了启发式函数 来确定最优路径)可用启发式函数:曼哈顿距离 欧式距离 对角距离流程图如下图所示:Open list: 存储扩展的节点close list: 存储已经搜索过的节点1.2 A*算法运行中需要注意
2021-05-31 16:20:22
9715
原创 图像灰度直方图 以及 直方图均衡化
图像灰度直方图 以及 直方图均衡化1 一张图片可以看作 由许许多多不同灰度值的像素组成2. 灰度图直方图 表示 在不同灰度下的像素数量3. 通常为 UINT8 0~255 表示 三通道RGB 图像特定情况下,需要转化 RGB TO GRAYGray = 0.2989R+0.5870G+0.1140*B4. 注意: 若使用Opencv 读取RGB图, 读取后顺序为BGR若要进一步操作, 要注意通道的顺序以免发生错误5.灰度图 (Intensity)例子使用 直方图均衡化 原
2021-04-15 13:35:36
1323
原创 VINS-mono 论文阅读 笔记
VINS-mono 论文 笔记1.VINS (visual-inertial system)-robust-versatile2.单目相机 无法还原 尺度信息解决: 使用IMU3.VINS优点:有尺度信息roll,pitch angles提升动态追踪表现(克服光照,低纹理条件,运动模糊等因素)缺点: 测量加速度, estimators无法从静态开始非线性,难初始化需要校准两个传感器4.VINS-mono (visual-inertial state estimator)-
2021-04-14 21:26:43
407
转载 ORB-SLAM2中LoopClosing线程主要流程梳理
LoopClosing线程主要工作是两个:一个是对当前新到来的关键帧进行闭环检测,看看之前的关键帧中哪个和当前关键帧形成闭环;另一个是纠正闭环,就是在检测到闭环的时候要将当前关键帧和闭环关键帧的位姿拉到一起,形象点说就是进行融合(既然都存在闭环了,那肯定得合并啊)。 一、闭环检测DetectLoop 1.从关键帧列表中获取列表头的关键帧,也就是获取最新插入到LoopClosing线程的关键帧,并判断当前关键帧是否距离上次关键帧闭环检测的帧之间大于10帧,大于10...
2021-04-12 09:50:02
457
转载 ORB-SLAM2中LocalMapping线程主要流程梳理
一、LocalMapping线程简述 在ORB-SLAM2当中,LocalMapping作为一个线程在系统启动后就一直在运行,只是在Tracking线程“生产出”新的关键帧并插入到LocalMapping线程中的mlNewKeyFrames列表后,LocalMapping线程检测到该列表中有关键帧后开始处理这些新插入的关键帧(CheckNewKeyFrames函数用来检测mlNewKeyFrames中是否有关键帧),没有关键帧插入的时候LocalMapping线程...
2021-04-12 09:47:22
336
转载 ORB-SLAM2中Tracking线程主要流程梳理
Tracking线程中首先加载图片帧数据集,接着从图片帧中提取ORB特征点,后边就是初始化部分,初始化完成后就是跟踪部分。本篇笔记对初始化部分和初始化完成后的部分进行如下简单梳理。 一、初始化部分: 1.首次进入初始化 对于当前帧中关键点数>100的帧,用该帧来构造初始化帧和上一个帧; 并记录当前帧中关键点的坐标值,用于下一帧进来的时候进行特征点匹配; &nbs...
2021-04-12 09:43:23
518
原创 opencv中 对像素(pixel)进行操作 (::at ::ptr matiterator )
opencv中 对像素(pixel)进行操作1. cv:Mat::at图片来自于RIP TUTORIAL:基础结构:CV_{U|S|F}C(<number_of_channels>)例如:CV_8UC1 8-bit 1-channel 灰度图CV_32FC3 for 32-bit floating point 3-channel 彩色图Vec结构:类型包括: uchar(b) short(s) int(i) float(f) double(d)例如: Vec3i 表示 int
2021-04-11 14:21:32
517
原创 UBUNTU20.04 下 ROS 笔记本摄像头标定
UBUNTU20.04 下 ROS 摄像头标定很久没用ROS 了, 想先查一下之前安装的ROS版本, 运行roscore是 出现下面error:Resource not found: roslaunchThe traceback for the exception was written to the log file参考https://blog.csdn.net/amnesiagreen/article/details/108280806 解决方法:终端输入source /opt/ros/
2021-04-10 23:01:34
1028
原创 ORB_SLAM2 frame.cc 中 实现去畸变函数 (UnditortPoints)
frame.cc 中 实现去畸变函数 (UnditortPoints)此函数常作用于稀疏点集的去畸变src: 输入的图像点坐标 2xN/Nx2 1-channel or 1xN/Nx1 2-channel (CV_32FC2 or CV_64FC2) (or vector )dst: 输出的去畸变之后的坐标 1xN/Nx1 2-channel or vectorcameraMatrix: 相机内参矩阵distCoeffs: 相机畸变系数void Frame::UndistortKeyPoin
2021-04-10 13:40:42
510
原创 图像 畸变系数 及 原理
图像畸变产生原因:透镜因自身形状对光线传播造成影响透镜与成像平面无法完全平行结果:造成光线透过透镜到成像平面的位置发生偏移由透镜引起的畸变(Distortion)又称径向畸变 (因为透镜普遍呈对称结构, 故形成畸变为径向畸变)—桶形畸变 与光轴距离 UP 放大率DOWN—枕形畸变 与光轴距离 UP 放大率UP由于透镜与成像平面无法平行产生的畸变 又称 切向畸变径向畸变 K1 K2 K3 对 原坐标[x,y] 影响, 转换成 极坐标 [r,t
2021-04-09 23:16:49
3859
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人