1 熟悉Linux
1. 如何在 Ubuntu 中安装软件(命令⾏界⾯)?它们通常被安装在什么地⽅?
apt-get install 包名
aptitude insatll 包名(包含依赖解决方案)
1.下载的软件存放位置
/var/cache/apt/archives
2.安装后软件默认位置
/usr/share
3.可执行文件位置
/usr/bin
4.配置文件位置
/etc
5.lib文件位置
/usr/lib
2. linux 的环境变量是什么?我如何定义新的环境变量?
linux的环境变量有永久生效和shell临时生效两种
设置永久生效的环境变量:
- 对所有用户生效
$ gedit /etc/profile
$ export 新增环境变量
- 对当前用户生效
$ gedit /home/用户/.bash.profile
$ export 新增环境变量
设置当前shell有效的环境变量:
直接在当前命令窗口下新增变量,窗口关闭后失效
$ export 新增环境变量
查看环境变量:
-
使用env查看所有环境变量
env
-
使用echo命令查看单个环境变量
echo $PATH
-
使用
set
查看所有本地定义的环境变量,
unset
可以删除指定的环境变量 -
常用的环境变量
PATH——决定了shell将到哪些目录中寻找命令或程序
HISTSIZE——历史记录数
LOGNAME——当前用户的登录名
HOSTNAME——指主机的名称
SHELL——当前用户Shell类型
LANGUGE——语言相关的环境变量,多语言可以修改此环境变量
MAIL——当前用户的邮件存放目录
PS1——基本提示符,对于root用户是#,对于普通用户是$
4. linux 根⽬录下⾯的⽬录结构是什么样的?⾄少说出 3 个⽬录的⽤途。
根目录下面只有目录
/home:用户家目录
/boot:系统启动时用到的一些文件,如内核文件、grub引导
/etc:系统配置文件
/dev:系统设备文件
/bin:可执行二进制文件
…
5. 假设我要给 a.sh 加上可执⾏权限,该输⼊什么命令?
在不知道该档案原本的权限为何的情况下,
chmod a+x filename
,就可以让该程序拥有执行的权限了
6. 假设我要将 a.sh ⽂件的所有者改成 xiang:xiang,该输⼊什么命令?
chown xiang:xiang a.sh
2 SLAM综述文献阅读
-
SLAM 会在哪些场合中⽤到?⾄少列举三个⽅向。
增强现实、移动机器人的自主导航、无人驾驶 -
SLAM 中定位与建图是什么关系?为什么在定位的同时需要建图?
定位:机器人必须知道自己在环境中位置;
建图:机器人必须记录环境中特征的位置(如果知道自己的位置);
机器人在未知环境中从一个未知位置开始移动,在移动过程中根据位置估计和地图进行自身定位,同时在自身定位的基础上建造增量式地图,实现机器人的自主定位和导航。 -
SLAM 发展历史如何?我们可以将它划分成哪⼏个阶段?
声纳——激光雷达——深度相机——多传感器融合 -
列举三篇在 SLAM 领域的经典⽂献。
-
Smith, R.C. and P. Cheeseman, On the Representation and Estimation of
Spatial Uncertainty. International Journal of Robotics Research, -
Se, S., D. Lowe and J. Little, Mobile robot localization and mapping
with uncertainty using scaleinvariant visual landmarks. The
international Journal of robotics Research, 2002. 21 -
Mullane, J., et al., A RandomFiniteSet Approach to Bayesian SLAM.
IEEE Transactions on Robotics, 2011
3 CMAKE练习
完成了《cmake 实践》的阅读,了解了cmake工程的构建方法,静态库和动态库的安装调用。
4 ORB-SLAM2练习
在命令行中输入
git clone https://github.com/raulmur/ORB_SLAM2
ORB-SLAM2文件夹将会下载到当前路径
阅读CMakeLists.txt,回答以下问题:
-
ORB-SLAM2 将编译出什么结果?有⼏个库⽂件和可执⾏⽂件?
6个,观察add_executable指令即可
-
ORB-SLAM2 中的 include, src, Examples三个⽂件夹中都含有什么内容?
头文件,源文件,输出
-
ORB-SLAM2 中的可执⾏⽂件链接到了哪些库?它们的名字是什么?
观察target_link_libraries指令即可
5 运行ORB-SLAM2
git clone https://github.com/raulmur/ORB_SLAM2
将ORB_SLAM2文件夹下载到本地,根据github页面的readme安装好依赖
将课程提供的myvideo.cpp、myvideo.yaml、myvideo.mp4放到Examples/myvideo文件夹下,注意修改myvideo.cpp中的文件路径
修改ORB_SLAM2文件夹下的CMakeLists.txt文件,在最后增加如下语句
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/myvideo)
add_executable(myvideo Examples/myvideo/myvideo.cpp)
target_link_libraries(myvideo ${PROJECT_NAME})
在ORB_SLAM2文件夹下打开终端
cd ORB_SLAM2
chmod +x build.sh
./build.sh
cd build
make
在Examples/myvideo文件夹下找到myvideo可执行程序,
./myvideo
执行
报错QObject::startTimer: Timers cannot be started from another thread
解决方法
https://blog.csdn.net/weixin_39608351/article/details/90202749
参考链接
https://blog.csdn.net/zzc1684/article/details/84710802