【详解】SLAM技术综述与入门
SLAM技术综述与入门
1.SLAM技术介绍
2.VSLAM系统及相关资料介绍
3.SLAM框架
3.1 SLAM的基本过程
3.2 SLAM的主要模块
4.kinect 在ROS下的配置及使用
1.SLAM技术介绍
SLAM,全称是Simultaneous Localization and Mapping,即同时定位与建图,指机器人在自身位置不确定的条件下,在完全未知环境中创建地图,同时利用地图进行自主定位和导航。因此可知SLAM的主要工作是定位以及建图。
目前SLAM有很多实现方法,根据使用传感器不同,主要分为:
(1)激光雷达传感器;
(2)视觉传感器;
视觉SLAM(Visual SLAM 简称VSLAM)包括使用单目SLAM、双目SLAM和以Kinect为代表的深度摄像头的RGB-D SLAM。相比使用激光雷达传感器,视觉传感器的成本更低,因此也越来越受青睐。
目前SLAM被广泛应用于无人驾驶汽车、无人机、VR和AR等领域。
下面是宾大的教授kumar做的特别有名的一个demo,是在无人机上利用二维激光雷达做的SLAM。
2.VSLAM系统及相关资料介绍
目前在VSLAM领域实现较好的SLAM系统有:
单目、双目SLAM:
(1).PTAM(Parallel Tracking And Mapping):2007年很流行的SLAM项目,是第一个使用BA完成实时SLAM的系统。但其缺乏回环检测和重定位等功能,只能作用于小规模的场景,且稳定性也不是很高。
(2).DTAM(Dense tracking and mapping in real-time):2011年,Direct SLAM方法的鼻祖;
(3).LSD-SLAM(Large-Scale Direct Monocular SLAM):2014年一个半稠密SLAM系统。
(4).ORB-SLAM:2015年一个比较完整的基于特征点的SLAM系统。
RGB-D SLAM:
(1).KinectFusion 2011
(2).RGBD-SLAM2 2014
(3).ElasticFusion 2015
当然除了上述项目的学习外,对于slam的学习入门,有一些经典教材如:
Multiple View Geometry in Computer Vision (Second Edition)
Robotics Vision and Control 本书是面向实践的,详细介绍了机器人和机器视觉。也有了中文版,叫做《机器人学、机器视觉与控制》。
此外,对于slam入门学习推荐高博的一起做RGB-D SLAM 其博客为半闲居士
3.SLAM框架
3.1 SLAM的基本过程
描述为:机器人在未知环境中从一个未知位置开始移动,在移动过程中根据位置估计和传感器数据进行自身定位,同时建造增量式地图。
(1)定位(localization):机器人必须知道自己在环境中位置。
(2)建图(mapping):机器人必须记录环境中特征的位置(如果知道自己的位置)
(3)SLAM:机器人在定位的同时建立环境地图。其基本原理是运过概率统计的方法,通过多特征匹配来达到定位和减少定位误差的。
3.2 SLAM的主要模块
视觉SLAM主要分为几个模块:数据采集、视觉里程计(Visual Odometry)、后端优化、建图(Mapping)、闭环检测(Loop closure detection)。如下图所示:
3.2.1 视觉里程计
视觉里程计是利用一个图像序列或者一个视频流,计算摄像机的方向和位置的过程。一般包括图像获取后、畸变校正、特征检测匹配或者直接匹配对应像素、通过对极几何原理估计相机的旋转矩阵和平移向量。
3.2.2 后端优化
理论上来说,如果视觉里程计模块估计的相机的旋转矩阵R和平移向量t都正确,就能得到完美的定位和建图了。但实际试验中,我们得到的数据往往有很多噪声,且由于传感器的精度、错误的匹配等,都对造成结果有误差。并且由于我们是只把新的一帧与前一个关键帧进行比较,当某一帧的结果有误差时,就会对后面的结果产生累计误差,导致误差越来越大。为了解决这个问题,引入后端优化。
后端优化一般采用捆集调整(BA)、卡尔曼滤波(EKF)、图优化等方式来解决。其中基于图优化的后端优化,效果最好。Graph-based SLAM一般使用g2o求解器,进行图优化计算。
3.2.3 闭环检测
后端优化可能得到一个比较优的解,但当运动回到某一个之前去过的地方,如果能认出这个地方,找到并与当时的关键帧进行比较,就可以得到比单用后端优化更准确更高效的结果。闭环检测就是要解决这个问题。
闭环检测有两种方式,一是根据估计出来的相机的位置,看是否与之前否个位置邻近;另外一种是根据图像,自动识别出来这个场景之前到过,并找到当时的关键帧。目前常用的后一种方法,其实是一个非监督的模式识别问题。比较常用的方法是采用Bag-of-Words(BOW),ORB-SLAM就是使用这个方法来进行闭环检测。
4.kinect 在ROS下的配置及使用
通过上面的讲解,相信大家对vslam有了一定的认识,对于数据获取这一块。下面介绍常用的kinect相机的配置以及在ROS上的基本使用:
Kinect配置及使用可以参考
实验环境:Ubuntu 16.04 + ROS Kinetic + kinect相机
(备注:若使用虚拟机,实验过程中如果安装各种包都能成功,最后可能看不到rgb图像和深度图,可能是因为在虚拟机上传输效率的问题)
4.1 安装ROS软件包
安装openni_launch
sudo apt-get install ros-kinetic-openni-camera ros-kinetic-openni-launch
4.2 测试Kinect设备
1) 将kinect相机连接电脑,运行ROS节点启动文件
roslaunch openni_launch openni.launch
2) 显示RGB图像
使用rqt_image_view,打开一个新的终端,运行如下命令后弹出窗口:
rosrun rqt_image_view rqt_image_view
选择/camera/rgb/image_color
3) 显示深度图像
打开一个新的终端,运行如下命令:
rosrun rqt_image_view rqt_image_view
选择/camera/depth/image
4) 使用rviz显示
打开一个新的终端,运行如下命令后弹出窗口如下:
rosrun rviz rviz
修改“Fixed Frame”为/camera_rgb_frame,接着点击add,选择camera类型。添加成功后选择camera菜单下的Iamge Topic选项,选择 /camera/rgb/image_color。
接着点击add选择camera类型。添加成功后选择camera菜单下的Iamge Topic选项,选择 /camera/depth/image,如下图所示:
文中图片部分图片来自网络,如有侵权请联系删除,如有对此感兴趣的,欢迎留言与我们讨论!
【相关推荐】
好的文章,需要您的鼓励
3
- 最新资讯
- 最新问答
-
工业机器人码垛工作站怎么布局?有哪些组成设备?
关键字: 码垛机器人 码垛工作站 工业机器人 2025-06-25 -
智能仓储系统的构成包括什么?有哪些特点?
关键字: 智能仓储 智慧物流 2025-05-15 -
微型压力传感器的原理是什么?有哪些应用?
关键字: 传感器 压力传感器 鑫精诚 2025-04-03 -
立体库堆垛机是什么?有哪几种类型?
关键字: 堆垛机 立体仓库 2025-03-24 -
埋弧焊是什么焊接方法?有什么特点?
关键字: 弧焊 埋弧焊 2025-03-17
-
智能焊接机器人的优势有哪些?
标签: 焊接机器人,工业机器人,配天机器人 提问:小王 2025-06-04 14:03:04 -
自动装卸货机器人的组成部分有哪些?
标签: 赛那德机器人,装卸货机器人,赛那德 提问:李子 2025-05-28 11:03:03 -
激光焊接机器人的特点有哪些?
标签: 激光焊接机器人,焊接机器人,工业机器人 提问:小T 2025-04-15 11:02:00 -
工业机器人码垛原理是什么?
标签: 码垛机器人,工业机器人 提问:晓明 2025-03-24 12:00:00 -
什么是自动焊接和半自动焊接?
标签: 焊接,焊接机器人 提问:小君 2025-03-18 09:00:00
- 2021-05-14 13:36:48
- 2019-09-27 11:29:38
- 2022-06-27 10:05:41
- 2020-08-17 15:11:43
- 2019-01-25 11:08:57
- 2020-10-16 13:27:55
- 2022-08-24 12:09:31
- 2018-07-18 16:14:08
- 2022-08-30 15:17:40
- 2022-08-24 14:16:37
- 2022-09-13 12:17:35
- 2023-09-01 10:16:04
- 2025-06-25
- 2025-05-15
- 2025-04-03
- 2025-03-24
- 2025-03-17
- 2025-03-12
- 2025-03-05
- 2025-02-27
- 2025-02-19
- 2025-02-18