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

相关文章

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多