解读《视觉SLAM十四讲》,带你一步一步入门视觉SLAM—— 第 1 讲 预备知识

2024-06-05 17:38

本文主要是介绍解读《视觉SLAM十四讲》,带你一步一步入门视觉SLAM—— 第 1 讲 预备知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

温馨提示,嘻嘻:我写这个系列博客的目的是,通过解读《视觉SLAM十四讲》,将自己当初学习这本书时,困惑的不解地方进行填坑,所以书中已经详细说明的内容,我不再赘述,对于书中省略的内容,我觉得很有用的东西,我会在后面的博文中和大家分享。所以大家想通过我的文章学习,你一定要先阅读过《视觉SLAM十四讲》对应一讲的内容之后,再看我的总结和解读。

第一讲 预备知识

1.原书主要内容

在第一讲中作者主要介绍了,一些学习SLAM的准备工作,包括本书的主要内容、如何使用本书等。其中最重要的一段就是解释什么是SLAM:

SLAM是Simultaneous Localization and Mapping的缩写,中文译作“同时定位与地图构建”。它是指将搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。

别的内容,大家看原书就可以了。

2.解读

在第一讲,作者虽然没有介绍太多实质性的东西,但是第一讲中实际包含的内容并不少。

尝试运行ORB-SLAM2

我觉得对于对于一个初学者来说,在学完第一讲之后,你可以把当前最流行的视觉SLAM系统——ORB-SLAM2下载到你的电脑上,然后运行起来,看一下视觉SLAM实际的效果,这么做一方面可以让你熟悉Linux电脑的使用,另一方面可以了解一下当前最好的单目视觉SLAM框架。
  
  ORB-SLAM是目前纯视觉SLAM框架中最为流行的,它是由Raúl Mur-Artal和Juan D. Tardós完成的,在2015年发表在IEEE Transactions on Robotics上,2016又进一步升级增加了对深度相机、RGB-D、双目相机的支持,推出了ORB-SLAM2。
  该项目的网站是:http://webdiis.unizar.es/~raulmur/orbslam/
  该框架的源代码托管在了GitHub上:https://github.com/raulmur/ORB_SLAM2

什么是Git和GItHub

GitHub是全球最大的代码托管平台,任何人都可以将自己的代码托管在上面,我们在电脑上可以通过Git直接将我们的代码上传到GitHub的仓库里。GitHub是一个存放代码的仓库,Git是管理代码的一个工具,Git你可以简单的理解成是一个备份工具,它可以保护你的代码,可以恢复到任何状态。如果你不会使用请你找一个教程大概了解一下怎么使用,不需要会太多,目前会用它下载代码就可以。当你会使用Git之后,你就可以将GitHub上的ORB-SLAM2的源代码下载下来了,网址就在上面。

(请忽视我先说了Git后说的Linux系统的顺序,实际你在使用的时候,肯定是要先装Linux系统,然后才能使用Git)

推荐使用的Linux系统

理论上说,你可以使用任何系统的电脑,去运行你下载的ORB-SLAM2的源代码,但是因为Linux与生俱来的优势,所以我们做工程的一般都是选用Linux系统,这一点当你用过Linux系统之后,你就知道为啥了,Linux系统有很多发行版本,其中使用最为广泛使用的是Ubuntu版本,当然还有别的一些很好的发行版。Ubuntu和Linux的关系,就相当于小米手机系统和谷歌原生安卓系统的区别,小米只是把安卓系统拿过来做了一些深度定制。你可以在你的电脑上装上Ubuntu系统,关于装Ubuntu系统的方法太多了,请自行百度,建议安装双系统,不建议使用虚拟机,Ubuntu系统选用16.04的版本。
  
  安装上Ubuntu系统之后,你就可以把ORB-SLAM2的源代码下载到你的电脑上了。下载下来之后,请参考README.md文件中的步骤编译ORB-SLAM2,如果你的电脑是新安装的系统,那么一定会碰到编译失败的问题,这里面可能会是因为你缺少各种库文件,对于这种问题,我们常常采用的方法是,缺什么就安装什么。这里的编译过程请自行百度,网上的资料非常全,你在安装的过程中,一定会碰到非常非常多的问题,如果你是一名刚刚开始使用Ubuntu系统的初学者,请你一定要非常耐心的去百度搜索这些问题,请不要觉得繁琐,初学都必须要经过这一步。
  
  我强烈建议大家,去编译跑通ORB-SLAM2的代码,如果你是初学者,你可以了解到终端的使用,了解到Linux常用命令的使用,你还能了解到如何在Linux系统上构建一个工程,更重要的是你能直接看到SLAM的运行效果,这对于初学者来说能直接看到效果,那是何种的兴奋啊!我相信当你看到你的电脑上跑起来ORB-SLAM2的时候,你一定会激动不已。

Vim

在第一讲的习题部分,作者介绍到让大家学习一下Vim。Vim就是一款文本编辑器,它所要完成的工作就是像你Windows上使用的记事本一样,但是它绝不是一个简单的文本编辑器,它的强大是你想象不到的,它可以使用几个按键就能完成平常通过记事本几个小时才能完成的内容,高效的背后也就意味着你要学习的东西很多,学习门槛很高,我个人建议,初学者先别接触Vim,更不要去接触Vim的插件,那会浪费你非常多的时间。

总结

这一讲的解读,实际对于书中的内容,并没有什么可以补充的,主要是推荐大家在Ubuntu16.04上把ORB-SLAM2的代码给跑起来,为了避免内容过于冗余,我省略了很多操作的细节。不要小看跑通一个代码,如果你没有这样的经历,请一定实际尝试一下,这里面你会面临很多的问题。

又有温馨提示了,嘻嘻:对于我们工科生,特别是搞工程的,你一定要培养自己解决问题的能力,如果你这方面能力还不够,那么你一定要抓住每一次实际操作的机会,只有亲身试验之后,你才会发现问题,发现问题之后解决问题所获得的知识和能力才是最提升自己的。对于这个我有一些经验告诉你,当你在百度上进行搜索的时候,如果你的关键词过多,以至于搜索结果太少,那么你就要优化你的关键词,多用一些行业内的术语,或者删除一些关键词,但是这样你就会多花一些检索信息的时间。如果百度也获得不到答案,你最好还是想办法使用上谷歌搜索,用谷歌加上英文关键词搜索,一定会解决你的问题的。总之当你碰到问题的时候,你一定要想方设法的去解决它,不要留下疑惑,这对刚开始学习的你来说很重要。

这篇关于解读《视觉SLAM十四讲》,带你一步一步入门视觉SLAM—— 第 1 讲 预备知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1033727

相关文章

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

史上最全MybatisPlus从入门到精通

《史上最全MybatisPlus从入门到精通》MyBatis-Plus是MyBatis增强工具,简化开发并提升效率,支持自动映射表名/字段与实体类,提供条件构造器、多种查询方式(等值/范围/模糊/分页... 目录1.简介2.基础篇2.1.通用mapper接口操作2.2.通用service接口操作3.进阶篇3

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

Python实现Word转PDF全攻略(从入门到实战)

《Python实现Word转PDF全攻略(从入门到实战)》在数字化办公场景中,Word文档的跨平台兼容性始终是个难题,而PDF格式凭借所见即所得的特性,已成为文档分发和归档的标准格式,下面小编就来和大... 目录一、为什么需要python处理Word转PDF?二、主流转换方案对比三、五套实战方案详解方案1:

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

C语言中%zu的用法解读

《C语言中%zu的用法解读》size_t是无符号整数类型,用于表示对象大小或内存操作结果,%zu是C99标准中专为size_t设计的printf占位符,避免因类型不匹配导致错误,使用%u或%d可能引发... 目录size_t 类型与 %zu 占位符%zu 的用途替代占位符的风险兼容性说明其他相关占位符验证示