视觉SLAM十四讲(第一章作业)

这篇博客介绍了Linux操作系统的基本知识,包括安装软件的方式、环境变量的定义以及根目录下的目录结构。此外,还提到了SLAM(Simultaneous Localization And Mapping)领域的论文综述,CMake的简单练习,以及理解ORB-SLAM2框架的关键点,包括其编译结果、代码目录结构和链接的库文件。最后,博主分享了如何使用ORB-SLAM2进行摄像头或视频的运行体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

熟悉Linux

1、如何在 Ubuntu 中安装软件(命令⾏界⾯)?它们通常被安装在什么地⽅?
答:第一个问题有两种安装方式(1)apt-get install (2)dpkg,详情如下所示
1.1 apt-get install安装方式
1.1.1 sudo apt-get install普通安装
1.1.2 sudo apt-get -f install修复安装
1.1.3 sudo apt-get -f reinstall重新安装
1.2dpkg安装方式
只有一种形式sudo dpkg -i package.deb其中deb是Linux的安装包格式。dpkgDebian Package的简写,是为Debian 专门开发的套件管理系统,方便软件的安装、更新及移除。
第二个问题根据上述安装方式分为两种情况
1 apt-get install安装位置取决于包的维护者确定的,不是用户
2 dpkg -L +软件包的名字,可以知道这个软件包包含了哪些文件
系统安装软件一般在/usr/share,可执行的文件在/usr/bin,配置文件可能安装到了/etc下等。文档一般在 /usr/share,可执行文件 /usr/bin,配置文件 /etc,lib文件 /usr/lib。

2、linux 的环境变量是什么?我如何定义新的环境变量?
答:环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息(包含相关的路径信息)。下面以举一个例子作为说明:

当我们运行ls -l这个指令时,系统除了在当前目录下面寻找此指令程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。
ls 指令的可执行文件所在位置如下所示:

exbot@ubuntu:~$ which ls//搜寻ls可执行文件所在位置
/bin/ls//输出结果

这里用which来搜寻ls的位置,得到结果/bin/ls
而在我的Ubuntu系统中环境变量(以隔开)如下所示:

exbot@ubuntu:~$ echo $PATH
/opt/ros/indigo/bin:/opt/jdk/java/bin:
/home/exbot/ardupilot/Tools/autotest:
/opt/gcc-arm-none-eabi-4_9-2015q3/bin:
/usr/local/sbin:
/usr/local/bin:
/usr/sbin:
/usr/bin:
/sbin:
/bin:
/usr/games:
/usr/local/games

因此当我们在任意文件目录下执

### 关于《视觉SLAM十四》第四章课后题五的解答与解析 #### 问题描述 在《视觉SLAM十四》第四章中,课后题五通常涉及对三维重建过程中某些特定算法的理解和应用。这类题目旨在考察读者对于多视图几何、特征匹配以及基础矩阵计算等方面的知识掌握情况。 #### 解析过程 为了完成此类题目,需要理解如何通过两幅或多幅不同视角下的图像来恢复场景结构及其摄像机姿态。这涉及到几个核心概念和技术: - **特征提取与匹配**:从给定图片中检测并描述局部不变特征点(如角点),然后基于这些特征实现跨图像间的对应关系建立[^1]。 - **本质矩阵(Essential Matrix)** 和 **基础矩阵(Fundamental Matrix)** 的估计:一旦获得了可靠的特征匹配对,则可以通过八点法或其他方法求解表示两个相机相对位置的姿态参数——即本质矩阵;而当不知道内参时则转而估算更一般的基础矩阵[^2]。 - **三角化(Triangulation)** :利用已知的内外参数信息,结合对应的二维投影坐标,反向推算出世界坐标的三维点位[^3]。 针对本道练习的具体要求,假设其关注的是从两张校准过的立体像对构建稀疏地图模型的过程,那么解决方案可能如下所示: ```cpp // 假设已经完成了必要的预处理工作,比如读取图像、执行FAST/SIFT/ORBSURF等特征检测器获取关键点集合kp1,kp2, // 并进行了FLANN/KDTree之类的快速近似最近邻搜索得到初步配对matches; std::vector<cv::Point2f> pts1,pts2; for(DMatch& match : matches){ // 将匹配好的索引转换为实际像素坐标 pts1.push_back(kps1[match.queryIdx].pt); pts2.push_back(kps2[match.trainIdx].pt); } cv::Mat F = findFundamentalMat(pts1,pts2,cv::FM_RANSAC); // 计算基础矩阵 if (F.empty()) { std::cerr << "Failed to compute Fundamental matrix." << std::endl; } else { cv::Mat E = K.t() * F * K; // 转换为基础矩阵到本质矩阵形式,其中K代表相机内部参数阵 } ``` 上述代码片段展示了如何依据OpenCV库函数`findFundamentalMat()` 来获得基础矩阵,并进一步调整为本质矩阵的形式以便后续操作。需要注意的是,在真实环境中还需考虑噪声影响等因素做额外优化处理。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值