1、各类相机的区别是什么?
单目:无深度 深度需要其他手段估计
双目:通过视差计算深度
RGB-D:通过物理方法测量深度
2、视觉SLAM框架的什么样的?
前端:视觉里程计,估计邻近时刻的相机运动,最简化-两个图像的相对运动,特征点法和直接法;
后端:从带有噪声的数据中估计最优轨迹与地图,最大后验概率估计,滤波器,图优化;
回环检测:检测相机是否达到过之前的位置,判断与之前位置的差异,计算图形间相似性,词袋模型;
建图:导航、规划、通讯、交互、可视化,度量地图,拓扑地图,稀疏地图,稠密地图。
3、SLAM问题的数学描述
公式解读可参考:《视觉SLAM十四讲》(第二版)公式引出、推导和理解 1
4、linux下的c++基础
//创建一个main.cpp文件,输出最基本的“Hello Slam”语句
touch main.cpp
vim main.cpp
i
#include <iostream>
using namespace std;
int main (int argc,char** argv)
{
cout<<"Hello Slam"<<endl;
return 0;
}
#esc#
:wq
cat main.cpp
g++ main.cpp
ls
./a.out
//调用cmake管理工程
sudo apt install cmake
touch CMakeLists.txt
vim CMakeLists.txt
i
project(helloslam)//新建一个helloslam工程
add_executable(sayHello main.cpp)//把main.cpp编译成sayHello
#esc#
:wq
cmake .
make
./sayHello
//生成库文件
mkdir include src
touch include/Hello.h src/Hello.c
vim include/Hello.h
i
#pragma once
void SayHello();
#esc#
:wq
vim src/Hello.cpp
i
#include "Hello.h"
#include <iostream>
using namespace std;
void SayHello(){
cout<<"Hello Slam"<<endl;
}
#esc#
:wq
touch main.cpp
vim main.cpp
i
#include "Hello.h"
using namespace std;
int main (int argc,char** argv)
{
SayHello();
return 0;
}
#esc#
:wq
touch CMakeLists.txt
vim CMakelists.txt
i
project(helloslam)
include_directories("include")
add_library(libHello src/Hello.cpp)
add_executable(sayHello main.cpp)
target_link_libraries(sayHello libHello)
#esc#
:wq
mkdir build
cd build/
cmake ..
make
./sayHello