实例介绍
【实例简介】视觉SLAM十四讲
【实例截图】
【核心代码】
目录 第 1 讲 前言 1 1.1 本书讲什么 . . . . . . . . . . 1 1.2 如何使用本书 . . . . . . . . . 3 1.2.1 组织方式 . . . . . . . 3 1.2.2 代码 . . . . . . . . . . 5 1.2.3 面向的读者 . . . . . . 6 1.3 风格约定 . . . . . . . . . . . 6 1.4 致谢和声明 . . . . . . . . . . 8 第 2 讲 初识 SLAM 10 2.1 引子:小萝卜的例子 . . . . . 12 2.2 经典视觉 SLAM 框架 . . . . 18 2.2.1 视觉里程计 . . . . . . 19 2.2.2 后端优化 . . . . . . . 21 2.2.3 回环检测 . . . . . . . 21 2.2.4 建图 . . . . . . . . . . 22 2.3 SLAM 问题的数学表述 . . . . 24 2.4 实践:编程基础 . . . . . . . . 27 2.4.1 安装 Linux 操作系统 . 27 2.4.2 Hello SLAM . . . . . . 29 2.4.3 使用 cmake . . . . . . 30 2.4.4 使用库 . . . . . . . . . 32 2.4.5 使用 IDE . . . . . . . 34 第 3 讲 三维空间刚体运动 39 3.1 旋转矩阵 . . . . . . . . . . . 41 3.1.1 点和向量,坐标系 . . 41 3.1.2 坐标系间的欧氏变换 . 42 3.1.3 变换矩阵与齐次坐标 . 45 3.2 实践:Eigen . . . . . . . . . . 46 3.3 旋转向量和欧拉角 . . . . . . 50 3.3.1 旋转向量 . . . . . . . 50 3.3.2 欧拉角 . . . . . . . . . 52 3.4 四元数 . . . . . . . . . . . . . 53 3.4.1 四元数的定义 . . . . . 53 3.4.2 四元数的运算 . . . . . 55 3.4.3 用四元数表示旋转 . . 57 3.4.4 四元数到旋转矩阵的 转换 . . . . . . . . . . 57 3.5 * 相似、仿射、射影变换 . . . 58 3.6 实践:Eigen 几何模块 . . . . 59 3.7 可视化演示 . . . . . . . . . . 62 第 4 讲 李群与李代数 64 4.1 李群李代数基础 . . . . . . . . 66 4.1.1 群 . . . . . . . . . . . 66 4.1.2 李代数的引出 . . . . . 67 4.1.3 李代数的定义 . . . . . 69 4.1.4 李代数 so(3) . . . . . 69 4.1.5 李代数 se(3) . . . . . 70 4.2 指数与对数映射 . . . . . . . . 71 4.2.1 SO(3) 上的指数映射 . 71 4.2.2 SE(3) 上的指数映射 . 73 4.3 李代数求导与扰动模型 . . . . 74 4.3.1 BCH 公式与近似形式 74 4.3.2 SO(3) 李代数上的求导 76 4.3.3 李代数求导 . . . . . . 77 4.3.4 扰动模型(左乘) . . 78 i ii 目录 4.3.5 SE(3) 上的李代数求导 79 4.4 实践:Sophus . . . . . . . . . 80 4.5 * 相似变换群与李代数 . . . . 82 4.6 小结 . . . . . . . . . . . . . . 84 第 5 讲 相机与图像 85 5.1 相机模型 . . . . . . . . . . . 87 5.1.1 针孔相机模型 . . . . . 87 5.1.2 畸变 . . . . . . . . . . 90 5.1.3 双目相机模型 . . . . . 93 5.1.4 RGB-D 相机模型 . . . 95 5.2 图像 . . . . . . . . . . . . . . 97 5.2.1 计算机中图像的表示 . 97 5.3 实践:图像的存取与访问 . . 99 5.3.1 安装 OpenCV . . . . . 99 5.3.2 操作 OpenCV 图像 . . 100 5.4 实践:拼接点云 . . . . . . . . 103 第 6 讲 非线性优化 108 6.1 状态估计问题 . . . . . . . . . 110 6.1.1 最大后验与最大似然 . 110 6.1.2 最小二乘的引出 . . . . 112 6.2 非线性最小二乘 . . . . . . . . 113 6.2.1 一阶和二阶梯度法 . . 114 6.2.2 Gauss-Newton . . . . 115 6.2.3 Levenberg-Marquadt . 117 6.2.4 小结 . . . . . . . . . . 119 6.3 实践:Ceres . . . . . . . . . . 120 6.3.1 Ceres 简介 . . . . . . 120 6.3.2 安装 Ceres . . . . . . 121 6.3.3 使用 Ceres 拟合曲线 . 121 6.4 实践:g2o . . . . . . . . . . . 125 6.4.1 图优化理论简介 . . . . 125 6.4.2 g2o 的编译与安装 . . 126 6.4.3 使用 g2o 拟合曲线 . . 127 6.5 小结 . . . . . . . . . . . . . . 131 第 7 讲 视觉里程计 1 133 7.1 特征点法 . . . . . . . . . . . 134 7.1.1 特征点 . . . . . . . . . 134 7.1.2 ORB 特征 . . . . . . . 136 7.1.3 特征匹配 . . . . . . . 139 7.2 实践:特征提取和匹配 . . . . 140 7.3 2D-2D: 对极几何 . . . . . . . 143 7.3.1 对极约束 . . . . . . . 143 7.3.2 本质矩阵 . . . . . . . 146 7.3.3 单应矩阵 . . . . . . . 148 7.4 实践:对极约束求解相机运动 151 7.4.1 讨论 . . . . . . . . . . 154 7.5 三角测量 . . . . . . . . . . . 155 7.6 实践:三角测量 . . . . . . . . 157 7.6.1 三角测量代码 . . . . . 157 7.6.2 讨论 . . . . . . . . . . 159 7.7 3D-2D: PnP . . . . . . . . . . 160 7.7.1 直接线性变换 . . . . . 160 7.7.2 P3P . . . . . . . . . . 162 7.7.3 Bundle Adjustment . . 164 7.8 实践:求解 PnP . . . . . . . 168 7.8.1 使用 EPnP 求解位姿 . 168 7.8.2 使用 BA 优化 . . . . . 169 7.9 3D-3D: ICP . . . . . . . . . . 175 7.9.1 SVD 方法 . . . . . . . 175 7.9.2 非线性优化方法 . . . . 177 7.10 实践:求解 ICP . . . . . . . 178 7.10.1 SVD 方法 . . . . . . . 178 7.10.2 非线性优化方法 . . . . 180 7.11 小结 . . . . . . . . . . . . . . 182 目录 iii 第 8 讲 视觉里程计 2 184 8.1 直接法的引出 . . . . . . . . . 185 8.2 光流(Optical Flow) . . . . 186 8.2.1 Lucas-Kanade 光流 . . 187 8.3 实践:LK 光流 . . . . . . . . 189 8.3.1 使用 TUM 公开数据集 189 8.3.2 使用 LK 光流 . . . . . 190 8.4 直接法(Direct Methods) . 193 8.4.1 直接法的推导 . . . . . 193 8.4.2 直接法的讨论 . . . . . 197 8.5 实践:RGB-D 的直接法 . . . 197 8.5.1 稀疏直接法 . . . . . . 197 8.5.2 定义直接法的边 . . . . 198 8.5.3 使用直接法估计相机 运动 . . . . . . . . . . 200 8.5.4 半稠密直接法 . . . . . 201 8.5.5 直接法的讨论 . . . . . 202 8.5.6 直接法优缺点总结 . . 205 第 9 讲 实践章:设计前端 207 9.1 搭建 VO 框架 . . . . . . . . . 208 9.1.1 确定程序框架 . . . . . 209 9.1.2 确定基本数据结构 . . 210 9.1.3 Camera 类 . . . . . . 212 9.1.4 Frame 类 . . . . . . . 214 9.1.5 MapPoint 类 . . . . . 215 9.1.6 Map 类 . . . . . . . . 216 9.1.7 Config 类 . . . . . . . 217 9.2 基本的 VO:特征提取和匹配 218 9.2.1 两两帧的视觉里程计 . 219 9.2.2 讨论 . . . . . . . . . . 226 9.3 改进:优化 PnP 的结果 . . . 227 9.3.1 讨论 . . . . . . . . . . 229 9.4 改进:局部地图 . . . . . . . . 229 9.5 小结 . . . . . . . . . . . . . . 235 第 10 讲 后端 1 237 10.1 概述 . . . . . . . . . . . . . . 238 10.1.1 状态估计的概率解释 . 238 10.1.2 线性系统和 KF . . . . 241 10.1.3 非线性系统和 EKF . . 244 10.1.4 EKF 的讨论 . . . . . . 245 10.2 BA 与图优化 . . . . . . . . . 246 10.2.1 投影模型和 BA 代价 函数 . . . . . . . . . . 247 10.2.2 BA 的求解 . . . . . . 248 10.2.3 稀疏性和边缘化 . . . . 250 10.2.4 鲁棒核函数 . . . . . . 257 10.2.5 小结 . . . . . . . . . . 258 10.3 实践:g2o . . . . . . . . . . . 259 10.3.1 BA 数据集 . . . . . . 259 10.3.2 g2o 求解 BA . . . . . 260 10.3.3 求解 . . . . . . . . . . 264 10.4 实践:Ceres . . . . . . . . . . 266 10.4.1 Ceres 求解 BA . . . . 266 10.4.2 求解 . . . . . . . . . . 268 10.5 小结 . . . . . . . . . . . . . . 270 第 11 讲 后端 2 272 11.1 位姿图(Pose Graph) . . . . 273 11.1.1 Pose Graph 的意义 . . 273 11.1.2 Pose Graph 的优化 . . 274 11.2 实践:位姿图优化 . . . . . . 276 11.2.1 g2o 原生位姿图 . . . . 276 11.2.2 李代数上的位姿图优化 280 11.2.3 小结 . . . . . . . . . . 285 11.3 * 因子图优化初步 . . . . . . . 286 11.3.1 贝叶斯网络 . . . . . . 286 11.3.2 因子图 . . . . . . . . . 287 iv 目录 11.3.3 增量特性 . . . . . . . 289 11.4 * 实践:gtsam . . . . . . . . 290 11.4.1 安装 gtsam 4.0 . . . . 290 11.4.2 位姿图优化 . . . . . . 291 第 12 讲 回环检测 298 12.1 回环检测概述 . . . . . . . . . 299 12.1.1 回环检测的意义 . . . . 299 12.1.2 方法 . . . . . . . . . . 300 12.1.3 准确率和召回率 . . . . 301 12.2 词袋模型 . . . . . . . . . . . 303 12.3 字典 . . . . . . . . . . . . . . 305 12.3.1 字典的结构 . . . . . . 305 12.3.2 实践:创建字典 . . . . 307 12.4 相似度计算 . . . . . . . . . . 309 12.4.1 理论部分 . . . . . . . 309 12.4.2 实践:相似度的计算 . 310 12.5 实验分析与评述 . . . . . . . . 314 12.5.1 增加字典规模 . . . . . 314 12.5.2 相似性评分的处理 . . 316 12.5.3 关键帧的处理 . . . . . 316 12.5.4 检测之后的验证 . . . . 316 12.5.5 与机器学习的关系 . . 317 第 13 讲 建图 319 13.1 概述 . . . . . . . . . . . . . . 320 13.2 单目稠密重建 . . . . . . . . . 322 13.2.1 立体视觉 . . . . . . . 322 13.2.2 极线搜索与块匹配 . . 323 13.2.3 高斯分布的深度滤波器 325 13.3 实践:单目稠密重建 . . . . . 328 13.3.1 实验结果 . . . . . . . 337 13.4 实验分析与讨论 . . . . . . . . 339 13.4.1 像素梯度的问题 . . . . 339 13.4.2 逆深度 . . . . . . . . . 341 13.4.3 图像间的变换 . . . . . 342 13.4.4 并行化:效率的问题 . 343 13.4.5 其他的改进 . . . . . . 343 13.5 RGB-D 稠密建图 . . . . . . . 344 13.5.1 实践:点云地图 . . . . 344 13.5.2 八叉树地图 . . . . . . 348 13.5.3 实践:八叉树地图 . . 351 13.6 *TSDF 地图和 Fusion 系列 . 353 13.7 小结 . . . . . . . . . . . . . . 356 第 14 讲 SLAM:现在与未来 358 14.1 当前的开源方案 . . . . . . . . 359 14.1.1 MonoSLAM . . . . . . 360 14.1.2 PTAM . . . . . . . . . 361 14.1.3 ORB-SLAM . . . . . . 362 14.1.4 LSD-SLAM . . . . . . 364 14.1.5 SVO . . . . . . . . . . 366 14.1.6 RTAB-MAP . . . . . . 367 14.1.7 其他 . . . . . . . . . . 368 14.2 未来的 SLAM 话题 . . . . . . 368 14.2.1 视觉 惯导 SLAM . 369 14.2.2 语义 SLAM . . . . . . 370 14.2.3 SLAM 的未来 . . . . . 372 附录 A 高斯分布的性质 373 A.1 高斯分布 . . . . . . . . . . . 373 A.2 高斯分布的运算 . . . . . . . . 373 A.2.1 线性运算 . . . . . . . 373 A.2.2 乘积 . . . . . . . . . . 374 A.2.3 复合运算 . . . . . . . 374 A.3 复合的例子 . . . . . . . . . . 374 附录 B ROS 入门 375 B.1 ROS 是什么 . . . . . . . . . . 375 B.2 ROS 的特点 . . . . . . . . . . 375 B.3 如何快速上手 ROS? . . . . 376
好例子网口号:伸出你的我的手 — 分享!
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论