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

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

SpringCloud负载均衡spring-cloud-starter-loadbalancer解读

《SpringCloud负载均衡spring-cloud-starter-loadbalancer解读》:本文主要介绍SpringCloud负载均衡spring-cloud-starter-loa... 目录简述主要特点使用负载均衡算法1. 轮询负载均衡策略(Round Robin)2. 随机负载均衡策略(

解读spring.factories文件配置详情

《解读spring.factories文件配置详情》:本文主要介绍解读spring.factories文件配置详情,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录使用场景作用内部原理机制SPI机制Spring Factories 实现原理用法及配置spring.f

Spring MVC使用视图解析的问题解读

《SpringMVC使用视图解析的问题解读》:本文主要介绍SpringMVC使用视图解析的问题解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC使用视图解析1. 会使用视图解析的情况2. 不会使用视图解析的情况总结Spring MVC使用视图

Linux中的进程间通信之匿名管道解读

《Linux中的进程间通信之匿名管道解读》:本文主要介绍Linux中的进程间通信之匿名管道解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基本概念二、管道1、温故知新2、实现方式3、匿名管道(一)管道中的四种情况(二)管道的特性总结一、基本概念我们知道多

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --