- 视觉SLAM框架的模块及其相应任务
-
1、我在什么地方?——定位 2、周围环境是什么?——建图
1、单目相机(monocular) 三维空间的投影 平移之后才能计算深度(近大远小,近快远慢) 无法确定真实尺度(尺度不确定性) 2、双目相机(stereo) 计算量比较大 两目之间距离需要较大 3、深度相机(RGB-D) Kinect、Kinect v2 易受日光干扰,主要用于室内。
经典视觉SLAM框架
-
-
1、传感器信息读取。 主要为相机图像信息的读取和预处理 码盘和惯性传感器等信息的读取和同步 2、视觉里程计(visual odometry),VO 估算相邻图像间相机的运动,以及局部地图的样子,也称为前端,存在累计误差,也就是漂移 3、后端优化(optimization) 接受视觉里程计测量的相机位姿,及回环检测的信息,对他们进行优化,得到全局一致的轨迹和地图,称为后端 4、回环检测(loop closing) 判断机器人是否达到过先前的位置,检测到回环,把信息提供给后端处理,根据图像间的相似性进行判断。 5、建图(mapping) 根据估计的轨迹,建立与任务相对应的地图 度量地图:精确强调物体间的位置关系 拓扑地图:去掉地图的细节 2D栅格地图,2D拓扑地图,3D点云地图,3D网格地图 在视觉SLAM中,前端和计算机视觉研究领域更为相关,比如图像的特征提取与匹配等 后端则主要是滤波与非线性优化算法。
1、运动方程 2、观测方程
-
- 搭建编程环境,为开发和实验做准备
- ubuntu 14.04
- 虚拟机(4GB以上)或者双系统(启动盘U盘)(推荐)
- 安装过程中不要选择“安装中下载更新”,并且断开网络连接
- 安装完成后把软件源设置离得近的服务器上
- linux下编译并运行程序,调试
- 将代码放置家目录(/home)的“slambook_sin”下,称为代码根目录,放置标准程序。再建一个“slambook_cos”目录用于自己编程。
- vim进入slambook_sin/ch2/helloSLAM.cpp
- 编译成可执行文件
-
g++ helloSLAM.cpp
如果出错,安装g++
sudo apt-get install g++
执行a.out文件
./a.out
- 掌握cmake的基本使用方法
- 用cmake制作工程,再编译
- 新建CMakeList.txt文件,指定工程名和可执行程序。
- 在当前目录下,调用cmake对工程进行分析
cmake .
再用make命令对工程进行编译
make
./helloSLAM
中间文件
mkdir build cd build cmake .. make
使用库
-
add_library(hello libHelloSLAM.cpp)
cd build cmake .. make
add_library(hello_shared SHARED libHelloSLAM.cpp)
分别得到libhello.a(静态库) libhello_shared.so(共享库)
-
再编写libhello的头文件
add_executable(useHello useHello.cpp) target_link_libraries(useHello hello_shared)
使用IDE
-
Kdevelop
SLAM学习(二)初识SLAM
最新推荐文章于 2022-07-24 18:19:43 发布