锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

视觉SLAM十四讲课后答案-ch1

时间:2023-09-04 11:37:00 cvs系列视觉传感器

一、Linux的熟悉

1.如何在 Ubuntu 在哪里安装软件(命令界)?

1)apt-get 安装方法;

普通安装:sudo apt-get install XXX

修复安装:sudo apt-get -f install XXX

重新安装:sudo apt-get -f reinstall XXX

2)dpkg方式的安装

sudo dpkg -i package_name.deb

安装的地方

通常安装在//usr/bin目录下(默认安装路径(鸟哥)P789)


2. linux 什么是环境变量?如何定义新的环境变量?

环境变量:环境变量是操作系统中具有特定名称的对象,它包含一个或多个应用程序将使用的信息;

永久性变量(系统级)对所有用户都有效:

这种变量对系统中的所有用户都有效,所有用户都可以使用这种变量。作用范围是整个系统。

设置方式: 用vim在/etc/profile将我们想要的环境变量添加到文件中export指令添加环境变量

当然,这个文件只在root(超级用户)可以修改。我们可以修改它。etc目录下使用ls -l查看本文件的用户和权限

【注】:添加后新的环境变量不会立即生效,除非会立即生效source /etc/profile 该文件将生效。否则,它只能在下次重新进入用户时生效。

永久性变量(用户级)对单个用户有效:

只针对当前用户,和上面一样,但不需要etc下面进行添加,直接在.bash_profile文件底部使用export添加。

定义新的环境变量:export PATH=$PATH:/要添加的路径
或者
export PATH=/要添加的路径$PATH
注意PATH后没有空格
这里 .bashrc和.bash_profile原则上,在设置此类环境变量时,可以在任何两个文件中添加。

~/.bash_profile是交互式login方式进入bash shell运行。

~/ .bashrc是交互式non-login方式进入bash shell运行。

两者的设置大致相同。

就是.bash_profile用户登录时只读取一次文件

而.bashrc每次打开终端进行新的会话都会读取。

临时有效的环境变量(仅适用于当前shell有效):

这种环境变量只针对当前的环境变量shell有效。当我们退出登录或关闭终端并重新打开时,环境变量就会消失。是临时的。 直接使用export指令添加。

3. linux 根记录的记录结构是什么? 3 记录的途。

/下面有

bin :二进制可执行文件,如许多用户使用的命令

dev: 包括终端设备在内的设备文件USB任何连接到系统的设备

root :

srv :服务数据srv代表服务。包含与服务器特定服务相关的数据。例如,/srv/cvs包含cvs相关的数据

usr:源代码包括二进制文件、库文件、文档和二级程序。usr/bin二进制文件包含用户程序。如果你在/bin中找不 用户二进制文件,到/usr/bin看目录。at、awk、cc、less、scp。

boot :

etc:运行程序所需的配置文件

lost found

opt

run

sys

var:变量文件

lib: 库文件

media

proc:进程信息

sbin :

tmp

vmlinuz

4. 假设我要给 a.sh 加上可执权限,输了什么命令?

改变权限, chmod

r:4 w:2 x:1

chmod 111 a.sh

在不知道档案原有权限的情况下,此时,使用

chmod a x filename,程序可以有执行权限。

5. 假设我要将 a.sh ?件的所有者改成 xiang:xiang,该输什么命令?

变更档案所有者, chown

chown xiang:xiang a.sh

二、SLAM 阅读综述文献

1. SLAM 会在哪些场合中?到??少列举三个?向。

加强实际应用

动态场景、

语义地图、

多机器人合作

2.SLAM 定位与建图有什么关系?为什么在定位的同时需要建图?

定位:机器人必须知道自己在环境中的位置;

建图:机器人必须记录环境中特征的位置(如果知道自己的位置);

机器人在未知环境中从未知位置移动,在移动过程中根据位置估计和地图定位自己,同时在自己定位的基础上建立增量地图,实现机器人的独立定位和导航。

3. SLAM 发展历史如何?我们可以把它分成哪个阶段?

1985-1990:, Chatila 和Laumond (1985) and Smith et al. (1990)同时提出建图和定位;

传感器为外部传感器

早期:

声呐(Tardós et al. 2002; Ribas et al. 2008);

后期:

激光雷达(Nüchter etal. 2007; Thrun et al. 2006);

相机(Se et al. 2005; Lemaire et al. 2007; Davison 2003;Bogdan et al. 2009);

GPS(Thrun et al. 2005a);

二、多传感器融合

分为三个阶段:

初始阶段:20世纪80年代

发展阶段90年代

快速发展阶段
4. 列举三篇在 SLAM 经典的领域奉献。

1.Smith, R.C. and P. Cheeseman, On the Representation and Estimation of Spatial Uncertainty. International Journal of
Robotics Research, 1986. 5

2. Se, S., D. Lowe and J. Little, Mobile robot localization and mapping with uncertainty using scale-invariant visual
landmarks. The international Journal of robotics Research, 2002. 21

3. Mullane, J., et al., A Random-Finite-Set Approach to Bayesian SLAM. IEEE Transactions on Robotics, 2011



三、CMake 练习

解题思路:

1)建立一个mycmake然后建立/文件夹test3文件夹,然后在其中建立子目录build文件和src文件和libhello文件,hello.cpp,hello.h放入libhello中,useHello.cpp放入src中,

编写顶层CMakeLists.txt文件如下:  project(hello)     add_subdirectory(src)  add_subdirectory(libhello)  set(CMAKE_BUILD_TYPE "Release")     src中的CMakeLists.txt文件如下:  include_directories(${PROJECT_SOURCE_DIR}/libhello)  set(APP_SRC useHello.cpp)  set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)  add_executable(sayHello ${APP_SRC})  target_link_libraries(sayHello libhello)     libhello中的CMakeLists.txt文件如下:  set(LIB_SRC hello.cpp)  add_definitions("-DLIBHELLO_BUILD")  add_library(libhello SHARED ${LIB_SRC})  set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)  set_target_properties(libhello PROPERTIES OUTPUT_NAME "sayHello")

理解 ORB-SLAM2 框架

2. 此时,我们不急于直接运行 ORB-SLAM让我们先来看看它的代码结构。ORB-SLAM2 是一个

cmake 工程,所以可以从 CMakeLists.txt 了解它的组织方式。 ORB-SLAM2 代码目录

下的 CMakeLists.txt,回答问题:

(a) ORB-SLAM2 编译的结果是什么?有多少库文件和可执行文件?

可执行文件和库文件的编译:可执行文件6个和1个库文件

(b) ORB-SLAM2 中的 include, src, Examples 三个文件夹的内容是什么?

include文件包含各种所需的头文件;



src文件包含各种源文件

src/System.cc

src/Tracking.cc

src/LocaMapping.cc

src/LoopClosing.cc

src/ORBextractor.cc

src/ORBmatcher.cc

src/FrameDrawer.cc

src/Converter.cc

src/MapPoint.cc

src/KeyFrame.cc

src/Map.cc

src/MapDrawer.cc

src/Optimizer.cc

src/PnPsolver.cc

src/Frame.cc

src/KeyFrameDatabase.cc

src/Sim3Solver.cc

src/Initializer.cc

src/Viewer.cc

Eaxmples中包含有RGB-D文件夹,Stereo文件夹, Monocular文件夹

这三个文件夹下具体的东西都在下面的程序中,不再赘述。

# Build examples

 

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/RGB-D)

 

add_executable(rgbd_tum

Examples/RGB-D/rgbd_tum.cc)

target_link_libraries(rgbd_tum ${PROJECT_NAME})

 

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Stereo)

 

add_executable(stereo_kitti

Examples/Stereo/stereo_kitti.cc)

target_link_libraries(stereo_kitti ${PROJECT_NAME})

 

add_executable(stereo_euroc

Examples/Stereo/stereo_euroc.cc)

target_link_libraries(stereo_euroc ${PROJECT_NAME})

 

 

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Monocular)

 

add_executable(mono_tum

Examples/Monocular/mono_tum.cc)

target_link_libraries(mono_tum ${PROJECT_NAME})

 

add_executable(mono_kitti

Examples/Monocular/mono_kitti.cc)

target_link_libraries(mono_kitti ${PROJECT_NAME})

 

add_executable(mono_euroc

Examples/Monocular/mono_euroc.cc)

target_link_libraries(mono_euroc ${PROJECT_NAME})

 

(c) ORB-SLAM2 中的可执行文件链接到了哪些库?它们的名字是什么?

libDBoW2.so和libg2o.so这两个库;

${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.so

${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.so



锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章