深蓝学院-视觉SLAM课程学习课后题
⼀. 第⼀节课习题# 标题
1.熟悉linux
(1)可以通过 sudo apt-get install <;软件名>的⽅式安装软件
当⾃⼰下载了软件压缩包之后(⽂件),可以解压后,通过cd命令进⼊压缩包⽬录,输⼊编译⽂件命令:./configure,然后是命令:make,完成之后通过make install命令完成安装。
软件安装位置:
⼀般安装在/usr下,⾥⾯很多⽂件夹,根据⽂件的类型,分门别类,不是⼀个软件⼀个⽂件夹。以前⽼版本的Linux习惯放在/usr/local⽬录下。
部分软件放在/opt下,则是⼀个软件统⼀在⼀个⽂件夹下。/opt⽬录专门是⽤来给第三⽅软件放置⽂件的,⽐如⼀些压缩包解压的软件都放在这⾥。
例如:
⽹易云⾳乐安装在/usr/lib/netease-cloud-music
Chrome 放在/opt/google/chrome
2.linux的环境变量及其设置
环境变量通俗讲是操作系统或程序执⾏时候默认设定的参数,⽐如path路径变量。当要执⾏某个命令或程序的时候默认寻的路径。
环境变量的类型:
永久变量:通过修改配置⽂件,配置之后变量永久⽣效
临时性变量:使⽤命令如export等命令设置,设置之后马上⽣效,关闭shell后失效。
[root@mail ~]#env 显⽰所有变量
按照影响范围划分:
⽤户变量(局部变量):修改的设置只对某个⽤户的路径或执⾏起作⽤
系统变量(全局变量):影响范围是整个系统
查看环境变量,如路径变量path:
[root@mail ~]#echo $PATH
常见的设置⽅法:
使⽤export命令,以指定php和mysql执⾏的路径变量为例:
[root@mail ~]#export PATH=$PATH:/usr/local/php/bin  为php环境
[root@mail ~]#export PATH=$PATH:/usr/local/mysql/bin 为mysql环境
注:这只是临时变量的设置⽅法
永久设置环境,在当前⽤户⽬录下:
gedit ~/.bashrc 打开该⽂件将环境变量写⼊ ⽰例如下:
3.linux根⽬录下的结构:
详见鸟哥私房菜基础篇192页
请问底下的⽬彔主要放置什么数据:
/etc/, /etc/init.d, /boot, /usr/bin, /bin, /usr/sbin, /sbin, /dev, /var/log
/etc/:⼏乎系统的所有配置⽂件案均在此,尤其 passwd,shadow
/etc/init.d:系统开机的时候加载朋务的 scripts 的摆放地点
/boot:开机配置⽂件,也是预讴摆放核⼼ vmlinuz 的地⽅
/usr/bin, /bin:⼀般执⾏档摆放的地⽅
/usr/sbin, /sbin:系统管理员常⽤挃令集
/dev:摆放所有系统装置档案的⽬彔
/var/log:摆放系统注册表档案的地⽅
4.关于权限设置的基础知识:
利⽤ ls -l 显⽰的⽂件属怅中,第⼀个字段是档案的权限,共有⼗个位,第⼀个位是⽂件类型,
接下来三个为⼀组共三组,为***使⽤者、组、其他⼈***的权限,权限有 r,w,x 三种;
如果档名前多⼀个『 . 』,则代表这个档案为『隐藏档』;
更改档案的组⽀持可⽤ chgrp,修改档案的拥有者可⽤ chown,修改档案的权限可⽤ chmod chmod 修改权限的⽅法有两种,分别是符号法和数字法,数字法中 r,w,x 分数为 4,2,1;
可以根据分数的设置来设置不同⽤户组对于⽂件的使⽤权限
对档案来讲,权限的效能为:
r:可读取此⼀档案的实际内容,如读取⽂本⽂件的⽂字内容等;
w:可以编辑、新增戒者是修改该档案的内容(但不含删除该档案);
w:可以编辑、新增戒者是修改该档案的内容(但不含删除该档案);
x:该档案具有可以被系统执⾏的权限。
对⽬录来说,权限的效能为:
r (read contents in directory)
w (modify contents of directory)
x (access directory)
要开放⽬录给任何⼈浏觅时,应该⾄少也要给予 r 及 x 的权限,但 w 权限不可随便给; owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= — = 0+0+0 = 0
我需要将⼀个档案的权限改为 -rwxr-xr-- 请问该如何下达指令?
**chmod 754 filename** 或 **chmod u=rwx,g=rx,o=r filename** 7:rwx 5:-wx 4:r--
-R : 进⾏递归(recursive)的持续变更,亦即连同次⽬录下的所有档案都会变更
5.若我需要更改⼀个档案的拥有者或组,该⽤什么指令?
在本题中,改变a.sh⽂件的组使⽤以下命令:
chgrp xiang a.sh
改变档案的拥有者:chown
chown [-R] 账号名称档案或⽬录
chown [-R] 账号名称:组名档案或⽬录
因⽽在本题中,可使⽤命令: chown xiang:xiang a.sh 完成拥有者和组的更换
2.SLAM的⽂献阅读
1.SLAM的应⽤场合
SLAM(即时定位与地图构建)技术主要被运⽤于⽆⼈机、⽆⼈驾驶、机器⼈、AR、智能家居等领域,从各应⽤场景⼊⼿,促进消费升级。
机器⼈ 激光+SLAM是⽬前机器⼈⾃主定位导航所使⽤的主流技术。
⽆⼈驾驶 ⽆⼈驾驶利⽤激光雷达传感器(Velodyne、IBEO等)作为⼯具,获取地图数据,并构建地图
AR AR通过电脑技术,将虚拟的信息应⽤到真实世界,真实的环境和虚拟的物体实时地叠加到了同⼀个画⾯或空间同时存在。这⼀画⾯的实现,离不开SLAM技术的实时定位。
⽆⼈机 ⽆⼈机在飞⾏的过程中需要知道哪⾥有障碍物,该怎么规避,怎么重新规划路线。显然,这是SLAM技术的应⽤。
2. SLAM中定位与建图的关系:
定位是需要周围环境的信息的,是借助周围地图信息来定位的; 建图⼜需要准确知道⽬前摄像机随着机器⼈的⾃⾝位置; 准确的定位需要准确的地图; 精准的地图构建⼜需要精准的位置信息;
是⼀个很耦合的问题。 所以,定位的同时需要建图。
cmake如何使用3.SLAM的发展历史与阶段的划分:
(1)第⼀阶段:定位和建图分开研究的阶段;
(2)第⼆阶段:定位和建图在⼀起进⾏研究的阶段;
(3)第三阶段:开始运⽤摄像头的阶段(这⾥需要注意的是,之前由于计算机视觉的发展还不太到位,因此之前基本都是基于激光测距这种⽅法的)
(4)第四阶段:多元化的阶段(我之所以把这个阶段叫做多元化的阶段,是因为SLAM和深度学习的融合,视觉和惯性传感器的融合等解决⽅案不断的涌现,对于SLAM的发展可以说是起了极⼤的加速作⽤,也使得SLAM这个已经好⼏⼗年的⽼话题在今天⼜被⼤家重新认识,且重新投⼊努⼒和热情去对待。
4.SLAM领域的经典⽂献:
《LSD-SLAM: Large-Scale Direct Monocular SLAM》(直接法的代表性⽂章)
《ORB-SLAM:ORB-SLAM: a Versatile and Accurate Monocular SLAM System》(特阵法的代表性⽂章,后续的ORB-SLAM2还开发出单⽬、双⽬、RGB-D的开源代码,且代码形式很好,值得学习)
《VINS-Mono: A Robust and Versatile Monocular Visual Inertial State Estimator》(经典的视觉和IMU融合的⽅法,值得学习)
3. CMake练习#标题
⾸先来构建libhello.so的动态库:
mkdir  hello_test
cd hello_test
mkdir lib build
hello_test⽬录下的内容:
PROJECT(hello)
ADD_SUBDIRECTORY(lib)
然后,cd lib ; ; 内容如下:
SET(LIBHELLO_SRC hello.c)
ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC})
然后进⼊build⽂件夹,进⾏编译 cmake … make
接下来进⾏共享库的安装和头⽂件安装:
在⽂件中添加如下指令:
INSTALL(TARGETS hello LIBRARY DESTINATION lib)
之后进⾏库的安装:
cmake -DCMAKE_INSTALL_PREFIX=</usr/...(安装位置)>
make
make intsall
接下来为使⽤外部共享库和头⽂件
在useHello.c所在⽬录,创建⽂件,并编辑:
PROJECT(USEHELLO)
#头⽂件的搜索部分
INCLUDE_DIRECTORIES(/usr/include/hello)
ADD_EXECUTABLE(usehello useHello.c)
TARGET_LINK_LIBRARIES(useHello hello)
编译之后即完成
或者采⽤环境变量的⽅法进⾏外部库的链接使⽤:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。