第一讲:预备知识
稠密重建:RGB-D相机
SLAM应用:手持设备定位,自动驾驶定位,AR
精度:5cm(跟相机硬件相关)
SLAM:Simultaneous Localization and Mapping(同时定位和地图构建)
相互关联:精确的定位需要精确的地图
精确的地图来自准确的定位
传感器:机器人感知外界环境的手段
种类:
内质的:感受机器人本体信息imu 激光 相机
外质的:安装于环境中的 二维码 GPS 导轨
相机
分类:
单目相机 Monocular
双目相机 Stereo
深度相机 RGB-D
其他 全景 Event Camera
特点:
以二维投影形式记录了三维世界的信息,该过程丢掉了一个维度:距离
视觉SLAM框架
前端:Visual Odometry 估计相邻时刻的相机运动
特征点法 直接法
后端:Optimization 从带有噪声的数据中估计最优轨迹与地图
最大后验概率估计 滤波器 图优化
回环:Loop Closing 检测相机是否到达过之前的位置,判断之前位置的差异,计算图像间相似性
词袋模型
建图:Mapping 导航 规划 通讯 交互 可视化
度量地图 拓扑地图
稀疏地图 稠密地图
视觉SLAM的数学描述
Linux下C++编程
1.直接创建main.cpp文件,使用g++命令编译,最后运行输出文件即可
madir C++Study
cd C++Study
touch main.cpp
sudo gedit main.cpp
#写入程序到main.cpp中
g++ main.cpp
./aout
2.使用CMakeLists.txt管理C++依赖
project(helloSLAM) #声明一个工程,工程名为helloSLAM
add_executable(sayHello main.cpp) #添加一个可执行文件,将main.cpp编译成sayHello可执行文件
camke . #对当前目录下编译
make #实际对工程进行编译
#使编译出来目录整洁
mkdir build
cd build
cmake ..
make
3.编译库文件
mkdir src include #src放置源文件 include放置头文件
touch include/Hello.h src/Hello.cpp
sudo gedit include/Hello.h
sudo gedit src/Hello.cpp
#写入函数和声明到Hello.cpp和Hello.h文件中
sudo gedit main.cpp
#在main文件中调用写好的头文件和函数
sudo gedit CMakeLists.txt
#在CMakeLists.txt中加入
include_directories("include") #将include文件夹作为引用头文件的位置
add_library(libHello src/Hello.cpp) #将src/Hello.c编译成libHello库文件
target_link_libraries(sayHello libHello) #调用库,sayHello 调用libHello库
4.在IDE中写程序
sudo apt-get install kdevelop #安装kdevelop
https://blog.csdn.net/qq_34432731/article/details/82431470 #安装CLION
cmake_minimum_required(VERSION 2.8) #指定CMAKE版本
set(CMAKE_BUILD_TYPE Debug) #指定编译的模式