解读《视觉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

相关文章

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

MySQL之搜索引擎使用解读

《MySQL之搜索引擎使用解读》MySQL存储引擎是数据存储和管理的核心组件,不同引擎(如InnoDB、MyISAM)采用不同机制,InnoDB支持事务与行锁,适合高并发场景;MyISAM不支持事务,... 目录mysql的存储引擎是什么MySQL存储引擎的功能MySQL的存储引擎的分类查看存储引擎1.命令

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

MySQL8.0临时表空间的使用及解读

《MySQL8.0临时表空间的使用及解读》MySQL8.0+引入会话级(temp_N.ibt)和全局(ibtmp1)InnoDB临时表空间,用于存储临时数据及事务日志,自动创建与回收,重启释放,管理高... 目录一、核心概念:为什么需要“临时表空间”?二、InnoDB 临时表空间的两种类型1. 会话级临时表

从入门到精通详解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