SLAM三维刚体运动(Eigen实现)
旋转
欧拉角
四元数
变换
第九 实践章 设计前端
目标:
设计一个视觉里程计的前端
理解SLAM软件框架是如何搭建
理解在前端设计中容易出现问题的地方,以及修补方式。
单目视觉相对复杂,RGBD最简单,没有初始化,也没有尺度问题
1 | -bin 可执行文件 |
帧
路标
配置文件
坐标转换
1 | stateDiagram |
存储相机内参和外参
相机坐标系,像素坐标系,世界坐标系的转换
世界坐标系(需要一个相机的内参)
1 | #include "myslam/common_include.h" |
智能指针,Camera指针类型,传递参数时候,只需用Camera::Ptr类型即可
SE3表达相机的位姿
camera.cpp
1 | #include "myslam/camera.h" |
目标:
你会管理局部的机器人轨迹与路标点,并体验一下一个软件框架是如何组成的。
可能的问题:
1、template的作用
模板函数:
不是一个确定的函数,编译器不会为其生成可执行代码。
定义模板函数,只是一个对函数功能框架的描述
具体执行时候,将根据传递的实际参数,决定其功能。
1 | template<class T> |
C++模板函数_咸鱼不贤的博客-CSDN博客_c++ 模板函数
2、STL的作用
STL 标准模板库
STL,英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。
从根本上说,STL 是一些容器、算法和其他一些组件的集合,所有容器和算法都是总结了几十年来算法和数据结构的研究成果,汇集了许多计算机专家学者经验的基础上实现的,因此可以说,STL 基本上达到了各种存储方法和相关算法的高度优化。
STL 可以更加方便灵活地处理数据。
表 2 C++ STL头文件
少刷视频,多读书
读书,多思考
提升英语水平,多邻国/雅思/托福
深入的学习一门技术
ML
《机器学习》
《统计学习方法》
《图解机器学习-日》
《模式识别与机器学习》
RL
《Reinforcement Learning: An Introduction》【PDF】
《多视图几何–机械工业》【实体书】
SLAM:
《视觉SLAM十四讲》【实体书/PDF】
基础知识
Pnp求解
EKF
ROS
源码阅读ORB_SLAM2
硬件搭建
《宾夕法尼亚大学-SLAM》
算法研究
图论算法(最短路径)
动态规划
最优化理论:退火算法
英语
阅读
单词
口语
Etc
同等学力申硕
Course
MEM二战?
软考-高级–信息系统项目管理师 23年(3.20号报名,5月27考试)
技术:
SLAM配套视频,代码
ORB_SLAM2源码阅读
英语:《RL English edtion》
软考:
PPT知识阅读理解
[ ]
4月
5月
6月
《漫长的20世纪》 作者: 乔万尼·阿里吉。资本主义自诞生以来的历史发展规律。
这部堪称经典的著作,将我们的视野拉长,让我们看到资本主义自诞生以来的历史发展规律。我们能看到产业资本和金融资本的交替扩张循环,也能看到政府与市场不断发现新的协作关系,还能看到每一轮大国崛起的内在动力。了解历史,有助于我们更好地预判未来的大趋势。
《数字唬人》 作者: 迈克尔·布拉斯兰 /安德鲁·迪诺
在本书中,牛津大学首席经济学者与知名记者联手出击,通过日常生活中妙趣横生的故事和数字常识,拆穿统计学常用的唬人伎俩,利用普通人所具备的常识、经验与能力,揭开数字代表的高超谎言,还原事件的真相,使读者在轻松愉快的阅读中直捣数字核心与背后的意义,练就一生受用的数字透视力。
《女士品茶》 作者:戴维·萨尔斯伯格。在20世纪波澜壮阔的科学发展史中,一瞥统计学的缘起和大放异彩,读起来颇有趣味。
《Think Again: The Power of Knowing What You Don’t Know》 作者:Adam Grant(沃顿商学院教授)(反思)
这是一本可以教会我们如何拥抱怀疑、拥抱未知和拥抱自己的错误的书籍。在现实生活中人们往往囿于自己的思维定式和偏见,不愿意反思也不会反思。然而,真正的智者并不拘泥于一种思考模式,而是会愿意不断地重新思考他们的立场。这本书教会我们,作为一种心态和技能,反思的能力是可以被教授和习得的。在这个不断变化的社会,学会反思可能是帮助你获得优势的秘密武器。
《The new geography of jobs》 作者:Enrico Moretti
Our global economy is becoming increasingly local, and where we live and work is more important than ever. This is true even after the pandemic. This book explains why people agglomerate and how the agglomeration effect has reshaped the economic geography of the US, especially as the economy has undergone globalization and the structural change from manufacturing to services, making local spillovers even more critical for economic success.
Globalization will continue to be important. China will undergo structural change, too, as other countries have experienced as they develop. This book provides a great insight into the importance of geography in considering the country’s economy and development in the future.
《东方学》 作者:爱德华·W·萨义德
一本哲学著作,指出西方对于东方的凝视,与其说是传统与现代的对望,毋宁说更是一种权力关系。
今天,所有陷于“东方主义”泥沼中的传统文明应勇敢而全面地对自己和他者进行双重反思。
《向心城市》 作者:陆铭 城市化
1、ORB_SLAM2是首个支持单目、双目和RGB-D相机的完整开源SLAM方案,能够实现地图重用,回环检测和重新定位的功能。
2、能够在GPU上进行实时工作,比如手机、无人机、汽车。
3、特征点法的巅峰之作,定位精度非常高。
4、能够实时计算处相机的位姿,并生成场景的稀疏三维重建地图。
它主要有三个线程组成:跟踪、Local Mapping(又称小图)、Loop Closing(又称大图)
这一部分主要工作是从图像中提取ORB特征,根据上一帧进行姿态估计,或者进行通过全局重定位初始化位姿,然后跟踪已经重建的局部地图,优化位姿,再根据一些规则确定新的关键帧。
跟踪线程相当于一个视觉里程计,流程如下:
首先,对原始图像提取ORB特征并计算描述子。
根据特征描述,在图像间进行特征匹配。
根据匹配特征点估计相机运动。
根据关键帧判别准则,判断当前帧是否为关键帧。
这一部分主要完成局部地图构建。包括对关键帧的插入,验证最近生成的地图点并进行筛选,然后生成新的地图点,使用局部捆集调整(Local BA),最后再对插入的关键帧进行筛选,去除多余的关键帧。
这一部分主要分为两个过程,分别是闭环探测和闭环校正。闭环检测先使用WOB进行探测,然后通过Sim3算法计算相似变换。闭环校正,主要是闭环融合和Essential Graph的图优化
1 | git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2 |
1 | cd ORB_SLAM2 |
SLAM数据集TUM,KITTI,EuRoC数据集的下载地址与真实轨迹文件的查找_m0_60355964的博客-CSDN博客_euroc数据集下载
【TUM数据集 】Computer Vision Group - Dataset Download
1 | ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt |
3、
vslam流程框架介绍_chengwei_peng的博客-CSDN博客_vslam是什么意思
orbslam2 安装与运行_Darren_pty的博客-CSDN博客_orbslam2安装运行
ORB_SLAM2 源码解析 ORB_SLAM2简介(一)_小负不负的博客-CSDN博客_orb-slam2
【一文足以系列】ORB SLAM2完整详细算法流程_铃灵狗的博客-CSDN博客_orbslam2
ORB-SLAM2笔记 ·魔法少女郭德纲 语雀(B站视频讲解)
他人镜:
文科生:
ORB-SLAM2代码阅读笔记(四):Tracking线程2——ORB特征提取_border_reflect_101 高斯模糊-文科生-CSDN博客
ORB-SLAM2代码阅读笔记(六):Tracking线程4—Track函数中相机位姿估计_orb-slam位姿估计算法-文科生-CSDN博客
实践代码:
Math
目标:
理解光流法跟踪特征点的原理
理解直接法是如何估计相机位姿的
使用g2o进行直接法的计算。
缺点 | 解决思路 | |
---|---|---|
关键点的提取与描述子的计算非常耗时。 | 1、保留特征点,只计算关键点,不计算描述子,使用光流跟踪特征点运动(仍使用特征点,匹配描述子换成光流跟踪,估计相机运动仍使用对极几何,Pnp或ICP算法) | |
关注与特征点,忽略了特征点之外的所有信息。 | 法2、只计算关键点,不计算描述子,使用直接法,计算特征点在下一时刻图像的位置。 | |
特征缺失(白墙,空荡荡的走廊) | 法3、既不计算关键点,也不计算描述子,根据像素灰度差异,直接计算相机运动。 |
法1还是特征点法;法2,法3,则是直接法;
特征点法 | 直接法 | |
---|---|---|
优化相机运动 | 特征点在相机中的投影,最小化投影误差 | 在直接法中,我们并不需要知道点与点之间之间的对应关系,而是 |
通过最小化光度误差(Photometric error)来求得它们 最小化光度误差 |
||
SVO,LSD_SLAM | ||
重构稀疏特征点(稀疏地图) | 直接法分为稀疏、稠密和 | |
半稠密三种。 | ||
直接法根据 | ||
像素的亮度信息,估计相机的运动 |
区别:
需要配对点,通过其它法得到
不需要配对点,直接得到关系
不提特征计算VO的思路:
通过其它方式寻找配对点–光流
无配对点–直接法