机器人SLAM建图与自主导航:从基础到实践
机器人SLAM建图与自主导航:从基础到实践
机器人SLAM建图与自主导航是机器人领域的重要技术,涉及即时定位与地图构建(SLAM)算法的研究与应用。本文将从基础概念出发,详细介绍SLAM算法的分类、原理,并结合ROS系统,展示具体的实现方法。
前言
这篇文章开始探讨机器人SLAM建图与自主导航,在前面的内容中,我们介绍了差速轮式机器人的概念及应用,谈到了使用Gazebo平台搭建仿真环境的教程,主要是利用gmapping slam算法,生成一张二维的仿真环境地图。我们也会在这篇文章中继续介绍并使用这片二维的仿真环境地图,用于我们的演示。
教程
SLAM算法的引入
(1)SLAM:Simultaneous Localization and Mapping,中文是即时定位与地图构建,所谓的SLAM算法准确说是能实现SLAM功能的算法,而不是某一个具体算法。
(2)现在各种机器人研发和商用化非常火,所有的自主机器人都绕不开一个问题,即在陌生环境中,需要知道周边是啥样(建图),需要知道我在哪(定位),于是有了SLAM课题的研究。SLAM在室内机器人,自动驾驶汽车建图,VR/AR穿戴等领域都有广泛的应用。
(3)SLAM算法根据依赖的传感器不同,可以分为激光SLAM和视觉SLAM,前者是激光雷达,后者是能提供深度信息的摄像头,如双目摄像头,红外摄像头等。除此之外,SLAM算法通常还依赖里程计提供距离信息,否则地图很难无缝的拼接起来,很容易跑飞。一个经典的SLAM流程框架如下,其中回环检测时为了判断机器人有没有来过之前的位置。
整体视觉SLAM的流程图
gmapping算法的基本原理
(1)现在ROS里有一系列SLAM算法包,如:gmapping,hector(不需要里程计,比较特别),谷歌开源的cartographer(效率高),rtabmap(前面是二维的,这是三维建图)等。
(2)gmapping是基于激光雷达的,需要里程计信息,创建二维格栅地图。其中IMU信息可以没有。
(3)ros中激光雷达数据消息是 sensor_msgs/LaserScan,内容如下:
(4)ros中里程计数据消息是 nav_msgs/Odometry。
(5)gmapping 发布的地图meta数据:
(6)gmapping 发布的地图栅格数据
mbot_navigation
(1)ubuntu20.04 + ros noetic下,安装gmapping和保存地图文件的map_server
sudo apt-get install ros-noetic-gmapping
sudo apt-get install ros-noetic-map-server
// 补充:这是安装hector
sudo apt-get install ros-noetic-hector-slam
(2)创建 mbot_navigation 和相关文件
cd ~/catkin_ws/src
catkin_create_pkg mbot_navigation geometry_msgs move_base_msgs actionlib roscpp rospy
cd mbot_navigation
mkdir launch maps rviz
touch launch/gmapping.launch
(3)调用gmapping算法,只需要写launch文件就行了,不用编码......
点击机器人SLAM建图与自主导航:从基础到实践查看全文。