| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 深蓝学院视觉SLAM从理论到实践第一章作业 -> 正文阅读 |
|
[系统运维]深蓝学院视觉SLAM从理论到实践第一章作业 |
第一题 熟悉Linux1、请描述 apt-get 安装软件的整体步骤,说明 Ubuntu 是如何管理软件依赖关系和软件版本的。 答: (1)修改镜像源,使用国内的镜像源能加快下载速度 ? (2)sudo apt-get update 更新软件列表 ? (3)sudo apt-get install packagename 安装名为packagename的安装包 我们用apt-get install的时候,实际上是从/var/lib/apt/lists中扫描的得到该软件的最新版本地址,并通过该地址下载该软件包,软件包将会被保存在临时文件夹**/var/cache/apt/archives**下,最后开始安装该软件。/etc/apt/sources.list这个文件指定apt查找或安装某个软件包时要搜索的仓库,里面每一行定义一个仓库。仓库就是存放着一组软件包及其相关信息,包括用来描述每个软件包的头部信息、包之间的依赖关系。Ubuntu仓库里面的软件包可以划分为以下几个类别: 1)main #Ubuntu支持的开源软件 2)universe #由社区维护的开源软件 3)multiverse #存在版权限制或法律问题的软件 4)restricted #专有设备驱动程序 5)backports #较新的Ubuntu发行中有的但较早发行中不存在的软件包 apt在选择软件包时,根据sources.list文件中指定的类别来搜索各个仓库。 2、 什么是软件源?如何更换系统自带的软件源?如何安装来自第三方软件源 答: (1)软件源是debian系的概念,把软件放在一个pool里面,用一条命令就可以自动从指定服务器下 载并安装 ? (2)方法一:通过修改文件修改软件源 ? 第一步:复制原来的源到sources.list.backup中 ? sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup ? 第二步:修改源 ? sudo gedit /etc/apt/sources.list ? 将打开的文件中内容删除,换成需要修改的源 ? 第三步:更新源 ? sudo apt-get update ? sudo apt-get upgrade ? 方法二:或者直接从软件与更新中更换软件源 ? (3)第一步:添加该软件源的公钥,有两种方式 ? 【1】通过从keyserver.ubuntu.com上根据Fingerprint(指纹、密钥特征)下载导入公钥,这 种方式要求你必须知道该软件源的uid(密钥名+email)的一部分才能搜索到。 ? 【2】通过下载公钥导入,一般第三方源的网址都有提供gpg文件的下载,或者通过 keyserver.ubuntu.com上也可以得到 ? 第二步:添加源 ? 【1】进入存放第三方软件源的目录 ? cd /etc/apt ? 【2】用touch命令建立.list文件,并通过vim编辑文件 ? sudo touch ×××.list ? sudo vim xxx.list ? 【3】写入内容并保存([]只是表示不同部分,实际是没有的) ? [deb/deb-src] [https://download.docker.com/linux/] [distribution] [main restricted universe multiverse] ? 第一部分: deb指下载下来的是二进制预编译软件包类型;deb-src指下载下来的是用于编译二进制软件包的源代码类型 ? 第二部分: 仓库地址,存放软件资源的服务器地址 ? 第三部分: 发行版本,指dists目录下的目录,如:enial,trusty,precise,stable,testing等等 ? 第四部分: 软件包类型,main是官方支持的自由软件,restricted是官方支持的非完全自由的软件,universe是社区维护的自由软件,multiverse是非自由软件,这四个类型可以多选 ? 【4】更新源 ? sudo apt update 3、除了 apt-get 以外,还有什么方式在系统中安装所需软件?除了 Ubuntu 以外,其他发行版使用什 么软件管理工具?请至少各两种 答: (1)其余方式:使用.deb包的安装方式、二进制编译或者脚本安装方式、tar.gz软件包安装、软 件商店安装 ? (2)其余包的软件管理工具:Radhat分支下的yum、rpm 4、环境变量 PATH 是什么?有什么用途?LD_LIBRARY_PATH 是什么?指令 ldconfig 有什么用途? 答: (1)环境变量是指操作系统中用来指定操作系统运行环境的一些参数 ? (2)主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径 ? (3)ldconfig 命令主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态 链接库,进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 5、Linux 文件权限有哪几种?如何修改一个文件的权限 答: (1)权限有:读、写、执行 ? (2)修改权限的方法为:使用chmod指令,正确输入参数即可修改文件的用户权限 ? 使用chown指令,可以修改所属用户与组 6、Linux 用户和用户组是什么概念?用户组的权限是什么意思?有哪些常见的用户组? 答: (1)用户:如果要使用系统资源,就必须向系统管理员申请一个账号,然后通过这个账号进入系 统。不同的用户拥有不同的权限,可以查看和操作不同的文件。 ? 用户组:用户组(group)就是具有相同特性的用户(user)集合。 ? (2)用户组的权限指的是一个用户组的成员所都具有的权限。 ? (3)常见的用户组有:administrators、backup operators、guests、power users、 replicator、users,默认新建立的用户属于users组、也就是everyone。其administrators 组的用 户具有与administrator相同的权限 7、常见的 Linux 下 C++ 编译器有哪几种?在你的机器上,默认用的是哪一种?它能够支持 C++ 的哪个标准? 答: (1)Clang、GCC/G++、ICC ? (2)GCC/G++ ? (3)c11标准 第二题 SLAM 综述文献阅读1、SLAM 会在哪些场合中用到?至少列举三个方向。 答: (1)机器人自主导航 ? 通过SLAM可以建立稠密地图,用于机器人的避障和导航 ? (2)VR/AR ? SLAM可以在未知环境中定位???位并同时构建环境三维地图, 从?保证叠加的虚拟与现实 场景 在?何上的?致性。 ? (3)无人驾驶 2、 SLAM 中定位与建图是什么关系?为什么在定位的同时需要建图? 答: (1)定位与建图是相辅相成的关系,若要获得精确的定位,需要精确的环境信息,若想建立精确 的地图,需要准确的自身定位。 ? (2)定位过程中需要地图信息,所以只有在定位的同时建图,才能为后续的定位提供信息。 3、SLAM 发展历史如何?我们可以将它划分成哪几个阶段? 答: (1)classical age ? 此阶段引入SLAM的主要概率公式,包括基于扩展卡尔曼滤波器、RaoBlackwelled粒?滤波 器和最?似 然估计的?法 ? (2)algorithmic-analysis age ? 此阶段主要研究SLAM的基础性质,例如可观性、收敛性、一致性 ? (3)robust-perception age ? 此阶段进一步提高SLAM的可用性,例如提升鲁棒性、理解环境信息等、 4、从什么时候开始 SLAM 区分为前端和后端?为什么我们要把 SLAM 区分为前端和后端? 答: (1) 区分为前端和后端应该是视觉SLAM方法之后,具体时间节点还不太清楚 ? (2)前端的作用是估计不同帧间相机的位姿变化以及局部地图的样子,后端的作用是对前端的数据进行进一步的优化,得到全局一致的轨迹和地图。所以前端和后端完成的任务不同、方法不同,对任务的拆分使得SLAM整体任务更好完成。 5、列举三篇在 SLAM 领域的经典文献。 答: ? (1)Mur-Artal R , Montiel J M M , Tardos J D . ORB-SLAM: A Versatile and Accurate Monocular SLAM System[J]. Robotics IEEE Transactions on, 2015, 31(5):1147-1163. ? (2)Engel J , Schps T , Cremers D . LSD-SLAM: Large-scale direct monocular SLAM[J]. 2014. ? (3)Alex Kendall, Matthew Grimes, Roberto Cipolla, “PoseNet: A Convolutional Network for RealTime 6-DOF Camera Relocalization”, in ICCV 2015 第三题 CMake练习CmakeLists:
运行结果: 第四题 gflags、glog、gtest 的使用(1)安装过程 ? +++gtest ? https://github.com/google/googletest 下载文件
? +++glog
? +++gflags
2、3、4 使用glog输出代替 std::cout 并且能控制输出次数 代码: CmakeLists: 运行结果: 第五题 理解ORB_SLAM2框架(1)下载结果 (2-a)将会编译出1个库文件(libORB_SLAM2.so),以及6个可执行文件 ? (2-b) ? include:内部为头文件 ? src:内部为ORB_SLAM2的源文件,最终会编译生成libORB_SLAM2.so ? Examples:内部为不同相机运行的一些示例程序,还有一个ROS版本的ORB_SLAM2 (2-c) 第六题 使用摄像头或视频运行ORB_SLAM2(1)编译结果 (2)CMakeLists ? (3)运行结果截图 体会:运行出结果还是比较有成就感的,由于没有摄像头没有办法用摄像头尝试,等有了摄像头我还打算用摄像头运行一下。现在用的是开源的方案,对其原理和内部实现还不太了解,我希望能够通过接下来的学习能够深入的了解原理和代码。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 10:02:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |