视觉SLAM进阶:从零开始手写VIO
系统讲解Visual与IMU的多传感器信息融合
手写只基于Eigen的优化器,不借助Ceres和g2o
全局把控VIO框架与思想,详细推导VIO预积分
- 本课程包括:
- 3个月群内答疑,讲师助教及时解答
- 课程有效期为1年,建议合理规划学习
- 课程配有作业练习,助教一对一批改
- 班主任带班,严格督学,告别拖延
- 根据学习情况颁发结业证书、优秀学员证书
贺一家
中科院自动化所博士,“白巧克力亦唯心”博主,研究方向包括视觉SLAM、多传感器信息融合。CSDN博客专家(累计访问174万+),发表SCI和EI论文数篇。
高翔
慕尼黑工业大学博士后,清华大学自动化系博士,长期从事SLAM的研究,主要包括机器人中的视觉SLAM技术、机器学习与SLAM的结合,主编畅销书《视觉SLAM十四讲:从理论到实践》,《机器人学中的状态估计》译者之一。
以往后端作为一个黑盒子,调用开源库如ceres,g2o等,对于初学者快速上手确实非常方便。但是我们通常不知道系统内发生了什么,出了问题也不知道如何下手。更重要的是对一些计算能力有限的平台,我们甚至都无法知道如何对后端优化进一步加速;通过课程我们对后端庖丁解牛,你就能看到后端求解矩阵是如何构建的,我们如何对他进一步加速,鲁棒核函数怎么实现的等等一系列问题。另外,学习了后端,你会发现VINS-mono后端可能有问题DSO代码竟然不再难读,它会打通你SLAM的任督二脉。
课程目标
目标O1巩固算法与编程基础
理解环境搭建的原理,学会运用debug等实用工具,将SLAM算法基础熟练部署到工程中。
目标O2VIO-SLAM公式细节与部署
熟练掌握VIO-SLAM算法中的细节,学会从公式推导到算法实现的过程。在公式的推导、工程和部署等多方面得到全方位提升。
目标O3算法应用 项目实战
基于所受理论基础,自行搭建VIO-SLAM框架,实现建图等功能。
课程脉络
-
巩固基础
首先对SLAM中的基础知识进行一系列的巩固,包括旋转矩阵、四元数、非线性优化等。之后将基础知识适配到VIO-SLAM算法上,让大家能够巩固基础的同时还能由浅入深的理解这门课。
-
公式推导、模块部署
随后将深入探讨VIO-SLAM算法中独有的技术细节,例如IMU传感器、滑动窗口等。从理论讲解到公式推导再到作业部署,带领大家实现算法从“0”到“1”的过程,循序渐进的拨开VIO-SLAM算法中的迷雾。
-
整合演练
课程最后的大作业是基于之前所学内容自行搭建VIO-SLAM框架,并根据所选论文实现其中的理论。自行实现从公式推导到算法部署,巩固VIO-SLAM的算法框架和实现细节,并锻炼自行写出算法的能力,可谓全方位的得到提升。
课程大纲
-
第1章:概述与课程介绍
本节课带学生了解VIO-SLAM的应用领域以及算法优势,同时对SLAM的基础和数学公式进行回顾,方便后续几章的学习。
-
第2章:IMU传感器
从VIO-SLAM最重要的传感器——IMU出发,详细讲解IMU的原理、标定以及应用。老师会带领学生一步一步完成大量公式的推导,做到不仅懂应用还要懂原理,带领学生举一反三。让学生不再惧怕公式,熟练掌握IMU的原理。
-
第3章:基于优化的 IMU 与视觉信息融合
本章节带领学生巩固SLAM基础——非线性优化的同时,对非线性优化进行扩展,教给学生不同的优化方法。并讲解针对VIO-SLAM的优化方法。循序渐进,由浅入深的带领学生理解整个算法框架的优化过程。
-
第4章:基于滑动窗口算法的 VIO 系统:可观性和一致性
本章节老师将讲述VIO-SLAM的进阶知识,从必要性入手到举例讲解再到广泛应用。加强学生对难点部分的理解。是深耕SLAM领域必经荆棘之路,老师带领学生共同度过难关。
项目实践
-
实践一:IMU仿真实践
设置IMU仿真代码中的不同噪声参数,然后运行imu_utils生成Allan方差标定曲线的结果,并比较欧拉积分和中值积分的效果。
-
实践二:使用LM算法估计曲线参数
根据LM算法估计曲线 y=e^{(ax^2+bx+c)} 参数的程序绘制LM阻尼因子μ随着迭代变化的曲线图,将曲线函数改成 y=ax^2+bx+c,修改代码中残差计算,雅克比计算等函数,完成曲线参数估计。
-
实践三:绘制信息矩阵
某时刻,SLAM系统中相机和路标点的观测关系如下图所示,其中 ξ 表示相机姿态, L 表示观测到的路标点。当路标点 L 表示在世界坐标系下时,第 k 个路标被第 i 时刻的相机观测到,重投影误差 r ( ξ ,L ) 。另外,相邻相机之间存在运动约束,如IMU或者轮速计等约束。绘制出信息矩阵及请绘制相机 ξ 被marg以后的信息矩阵。
-
实践四:VINS系统构建
搭建一个最简单的VINS系统,包括三个部分:
前端数据处理:特征提取匹配,IMU预积分;
初始化:系统初始状态变量(重力方向,速度,尺度等等);
后端:滑动窗口优化,手写LM/DogLeg算法。 -
实践五:将IMU仿真数据接入到VINS系统中
将IMU仿真数据接入到VINS代码中,生成无噪声和有噪声情况的两种运行轨迹;对比不同后端优化算法下的精度和效率;对比串行/并行算法对系统效率的影响。
学习收获
- 1学习过程中一步一步推导公式,打下扎实的数学基础
- 2通过学习视觉和IMU的信息融合,掌握基于图优化的多传感器信息融合框架
- 3通过手写后端优化器,理清SLAM后端的每个细节,加深对优化的理解,为以后工作中移植,加速或改进自有的SLAM系统提供技术支持
- 课程适合谁学习
-
vSLAM初级算法工程师/已入门的研究者
渴望进一步学习多传感器融合原理这一主流方法
-
SLAM算法工程师
不满足于日常调库、调参,渴望理解算法本身的原理
-
原创SLAM系统的研究者
通过手写后端系统,透彻理解根本原理,拓宽设计思路
- 课程所需的基础知识
- 学习本门课程需要有一定的视觉SLAM基础
- 希望你已经认真学习过《视觉SLAM十四讲》、深蓝学院『视觉SLAM理论与实践』线上课程
- 系统阅读过主流开源代码(如ORB-SLAM、SVO、DSO等)
以上三个条件,满足一项即可
全方位的学习服务
个性化增值服务,学习有保障更高效
-
作业批改 助教1V1批改作业,定期针对作业中的“通病”进行点评
-
结业证书 本课程将根据作业完成情况评选结业学员及优秀学员,颁发证书
-
实时答疑 讲师微信群答疑,及时解决大家遇到的问题
-
班班督学 班主任全程带班,不定时“关照”未交作业的同学,克服拖延
- 1-1:课程上课操作说明
- 1-2:【资料】课程预习资料
- 1-3:【资料】VIO课程环境搭建说明
-
第1章: 概述与课程介绍 4节课程1篇阅读材料·1次作业·1小时16分钟
本节课带学生了解VIO-SLAM的应用领域以及算法优势,同时对SLAM的基础和数学公式进行回顾,方便后续几章的学习。
-
第1节: 课程介绍
- 2-1:【课件】概述与课程介绍
- 2-2:【视频】课程与内容提要
-
第2节: VIO概述
- 3:【视频】vio概述
-
第3节: 数学基础知识回顾
- 4:【视频】预备知识回顾
-
第4节: 作业
- 5-1:【作业】第一章
- 5-2:【图文】第一章作业思路提示
-
第2章: IMU传感器 6节课程1篇阅读材料·1次作业·1小时59分钟
从VIO-SLAM最重要的传感器——IMU出发,详细讲解IMU的原理、标定以及应用。老师会带领学生一步一步完成大量公式的推导,做到不仅懂应用还要懂原理,带领学生举一反三。让学生不再惧怕公式,熟练掌握IMU的原理。
-
第1节: 旋转运动学
- 6-1:【课件】IMU传感器
- 6-2:【视频】旋转运动学
-
第2节: IMU 测量模型及运动模型:MEMS 加速度计&MEMS 陀螺工作原理
- 7:【视频】IMU 测量模型及运动模型
-
第3节: IMU 误差模型:确定性误差、随机误差&IMU 数学模型
- 8:【视频】 IMU 误差模型
-
第4节: 运动模型离散时间处理:欧拉法&中值法
- 9:【视频】运动模型离散时间处理
-
第5节: IMU 数据仿真
- 10-1:【视频】IMU 数据仿真
- 10-2:【视频】仿真代码讲解
-
第6节: 作业
- 11-1:【作业】第二章
- 11-2:【图文】第二章作业思路提示
-
第3章: 基于优化的 IMU 与视觉信息融合 5节课程1篇阅读材料·1次作业·3小时1分钟
本章节带领学生巩固SLAM基础——非线性优化的同时,对非线性优化进行扩展,教给学生不同的优化方法。并讲解针对VIO-SLAM的优化方法。循序渐进,由浅入深的带领学生理解整个算法框架的优化过程。
-
第1节: 基于Bundle Adjustment的VIO融合
- 12-1:【课件】L3BundleAdjustment
- 12-2:【视频】基于Bundle Adjustment的VIO融合
-
第2节: 最小二乘问题的求解
- 13:【视频】最小二乘问题求解
-
第3节: VIO 残差函数的构建
- 14:【视频】VIO残差函数的构建
-
第4节: 误差Jacobian推导:视觉重投影残差的Jacobian&IMU 预积分残差的雅克比
- 15:【视频】误差Jacobian推导
-
第5节: 作业
- 16-1:【作业】第三章
- 16-2:【图文】第三章作业思路提示
-
第4章: 基于滑动窗口算法的VIO 系统:可观性和一致性 5节课程1篇阅读材料·1次作业·2小时28分钟
本章节老师将讲述VIO-SLAM的进阶知识,从必要性入手到举例讲解再到广泛应用。加强学生对难点部分的理解。是深耕SLAM领域必经荆棘之路,老师带领学生共同度过难关。
- 17:【课件】SlidingWindow
-
第1节: 从高斯分布到信息矩阵
- 18:【视频】从高斯分布到信息矩阵
-
第2节: 舒尔补应用:边际概率, 条件概率
- 19:【视频】舒尔补应用:边际概率, 条件概率
-
第3节: 滑动窗口算法: 图优化基础、 基于边际概率的滑动窗口算法
- 20:【视频】 滑动窗口算法: 图优化基础、 基于边际概率的滑动窗口算法
-
第4节: 滑动窗口中的FEJ 算法
- 21:【视频】滑动窗口中的FEJ 算法
-
第5节: 作业:第四章
- 22-1:【作业】第四章
- 22-2:【视频】第四章作业讲解
- 22-3:【图文】第四章作业思路提示
-
第5章: 后端优化实践:逐行手写求解器 5节课程1篇阅读材料·1次作业·1小时58分钟
因VIO-SLAM的IMU传感器特殊性,公式推导要复杂于纯视觉SLAM算法。本章节老师将带领学生完成非线性优化的公式推导。包括雅可比矩阵的求解、状态量的设置等。巩固了前面所授知识,并让学生对整个算法框架能够有清晰的认识。
-
第1节: 非线性最小二乘求解
- 23-1:【课件】滑动窗口算法实践
- 23-2:【视频】非线性最小二乘求解
-
第2节: 代码讲解之单目BA求解
- 24:【视频】代码讲解之单目BA求解
-
第3节: 滑动窗口算法
- 25:【视频】滑动窗口算法
-
第4节: 代码讲解之Vins-Mono滑动窗口算法
- 26:【视频】代码讲解之Vins-Mono滑动窗口算法
-
第5节: 作业
- 27-1:【作业】第五章
- 27-2:【视频】第五章作业讲解
- 27-3:【图文】第五章作业思路提示
-
第6章: 视觉前端 4节课程1篇阅读材料·1次作业·1小时55分钟
本章节巩固了SLAM基础中的特征点的提取跟踪与匹配。从理论基础到自行实现,再到参数调整,并结合代码,让同学切身实地的体会生成和优化地图点的过程,让整个算法不再“黑盒”。
- 28:【课件】视觉前端
-
第1节: 前端的工作
- 29:【视频】前端的工作
-
第2节: 特征点提取、匹配和光流
- 30:【视频】特征点提取、匹配和光流
-
第3节: 关键帧与三角化
- 31:【视频】关键帧与三角化
-
第4节: 实践作业
- 32-1:【作业】第六章
- 32-2:【视频】第六章作业讲解
- 32-3:【图文】第六章作业思路提示
-
第7章: VINS系统构建 3节课程·1次作业·2小时43分钟
本章是同学们毕其功于一役,羽化成蝶的章节。老师只在关键的地方做提示,同学们需要结合前面全部所学,自行搭建VINS的框架,实现建图与优化。将理论和代码结合,再次巩固理论加强理解。
-
第1节: VINS初始化:初始化状态量和原理、VINS-mono初始化公式推导、其他标定或者初始化方法推荐及介绍
- 33-1:【课件】第七章
- 33-2:【视频】part1
- 33-3:【视频】part2
-
第2节: 实践:代码讲解
- 34:【视频】代码讲解
-
第3节: 实践:作业
- 35-1:【作业】第七章
- 35-2:【视频】第七章作业讲解
-
第8章: 相机和IMU时间戳同步 4节课程·1次作业·1小时10分钟
时间戳同步与运动模型是实际工程中很棘手的问题,并不被初学者所关注。本章节将对这两大实际工程问题进行详解。学生在学习后能够解决相应的问题,快速定位算法bug,工作能力大大提升。
-
第1节: 基于视觉特征匀速运动模型的时间戳标定算法
- 36-1:【课件】相机与IMU时间戳同步
- 36-2:【视频】 sec1 时间戳同步问题及意义
-
第2节: 基于相机轨迹匀速运动模型的时间戳标定算法
- 37:【视频】sec2 时间戳延迟估计方法
-
第3节: 算法对比总结
- 38:【视频】sec3 时间戳同步算法扩展
-
第4节: 作业
- 39-1:【作业】第八章
- 39-2:【视频】第八章作业讲解
-
第9章: 课程总结 2节课程·48分钟
本章节老师将结合自己多年工作经验,为学生们指明道路。对课程所受内容进行扩充讲解,指明行业现状、发展方向和不同算法的优势。根据不同的算法领域提供不同的资料供大家进行深一步的学习。
-
第1节: 多传感器融合展望与资料推荐
- 40-1:【课件】总结与展望
- 40-2:【视频】课程简单回顾
-
第2节: VIO和其他传感器融合
- 41:【视频】vio和其他传感器融合
-
第10章: Project: Square Root Bundle Adjustment for Large-Scale Reconstruction 1节课程·1次作业·1小时48分钟
大作业要求学生将所选论文部署到VIO-SLAM框架中,老师将带领学生阅读论文和代码。让学生学会从更专业的角度读论文,实现论文中的公式推导并部署算法。锻炼学生从论文阅读到论文实现的能力,这将对今后的工作科研有极大的帮助。
-
第1节: 原理与代码
- 42-1:【论文】Square Root Bundle Adjustment.pdf
- 42-2:【视频】论文解读
- 42-3:【视频】代码框架讲解
- 42-4:【作业】大作业
- 42-5:【代码】Project BASolver.zip
- 43:【视频】大作业讲解
相关讲师
相关课程
课程讨论区
已累计讨论26495个问题
课程配备专属讨论区,不仅有讲师、助教全程答疑,更能与同学们交流讨论,在思维碰撞中加深理解
在课程中随想随问,同学们的问题也可能启发到你
在课程讨论区,和684位同学一起探讨更多问题···
作业批改
已累计批改4951份作业
助教一对一批改作业,定期针对作业中的问题进行评讲
结业证书
课程根据作业完成情况评选结业学员及优秀学员,颁发证书
优秀学员更能获得额外购课优惠
班班督学
班班、助教、讲师全程带班,日常答疑解惑
FAQ
1、课程可以试听吗?
可以,您可以联系客服领取试听内容,根据试听的效果决定是否报名。
2、报名课程后,如果不满意,可以退款吗?
我们承诺: 报名后7天内且学习进度停留在第一章节的内容可以无条件全额退款,若您的学习进度超过第一章或报名时间超过7天将不再支持退款哦。课好不好,学了就知道了!
3、报名课程的费用可以开发票吗?
深蓝学院所有课程都可以开具发票。您可以登录深蓝学院官网(https://www.shenlanxueyuan.com),进入个人“账户中心”,在线申请。
4、报名后怎么开始学习呢?
PC端:登录深蓝学院官网(https://www.shenlanxueyuan.com),进入“个人中心”或“我的课程” 的课程即可开始学习。课程中包含讲师讲解的视频、课件、代码、作业及其它学习资料。建议在PC端学习体验更好。
如果想缓存视频,可下载深蓝学院APP。
5、可以跟讲师直接交流吗?
报名课程后添加课程对应的班主任微信,由其邀请加入微信答疑群。在答疑群内,您可以直接跟讲师和其他同学讨论交流。
报名后在对应的课程详情页,可查看对应的班主任微信。
6、学习形式和学习周期是怎样的?
为保证学习质量方便同学们反复观看,本课程采用录播形式。建议同学们登录深蓝学院PC端官网体验更佳。
7、课程有有效期吗?
为了督促同学们学习,保证学习效率,学院的课程有效期均为一年,当课程有效期截止后将不再支持观看视频、下载课件等课程服务及操作。若同学们依旧想观看视频和下载课件,建议可选择续费本课程。需要提醒大家的是,课程答疑、作业批改&讲评等课程相关服务期从报名加入课程后开始计算至少保证三个月。
8、作业会提供参考答案吗?
不提供参考答案。当每章作业截止提交后,会解锁作业思路讲解。我们希望引导大家培养独立思考的习惯和敢于动手实践的勇气,以便尽快适应实际工作中解决问题的模式。做作业过程中,如果有任何困惑和问题,可以在课程讨论区和交流群内提问解决。
课程预览
视觉SLAM进阶:从零开始手写VIO