一、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