Tags: SLAM

本篇博客主要介绍ROS中与SLAM和Navigation有关的内容。

1.ROS中的SLAM

如上图所示,一般而言,一个机器人一般包含定位(Localization)、建图(Mapping)与路径规划(Path Planning)三个方面,SLAM就是属于定位与建图的交集。ROS中常用的SLAM包有GMapping、Karto、Hector、Cartographer。

在ROS中,建图建出来的图是OccupancyGrid格式,本质上可以理解为一个栅格图片,如下。 从总体而言,一个Map可以分为headerinfodata三部分。header为报头,存储了当前地图的序列号、时间戳以及坐标系名称。info里存放了地图的加载时间、分辨率(m/pixel)、地图宽高(pixel)、初始化时的位姿。data部分存放的是实际的地图数据。

(1)GMapping

计算图如上图所示,最核心的节点是slam_gmapping。从输入输出的角度,整个GMapping系统的输入只有两个:坐标变换关系tf和激光雷达数据scan。其中这里的tf并不是任意的tf,而是值里程计odom到底盘base之间的tf,而这个tf其实是由里程计odom获得的,获得方式可以是编码器、视觉或IMU等。系统的输出则有四个,分别是:1.tf,用来定位,它发布的是mapodom之间的tf。这样,结合前面odombase之间的tf,就可以构成tf联通关系,从而获得mapbase之间的转换,实现定位。2.而对于地图则直接发布建好的图到map上。3.同时还发布了map的元数据信息。4.建图的精度entropy

GMapping还提供了一个Service,可以通过这个Service动态地获取建好的地图。

GMapping还提供了很多可配置的参数。其中最关键的是base_framemap_frame以及odom_frame三个参数。

(2)Katro

Karto的计算图。它的输入与GMapping一样,坐标变换关系tf和激光雷达数据scan。它的输出包含map到odom的变换、地图以及地图元数据三个内容。

在ROS中只要涉及到地图,就是map、odom和base三者之间的关系。对于odom和base之间的关系是通过里程计来进行维护的,里程计包括编码器、视觉里程计、IMU等等。但这些观测值都会有误差,时间长了会有误差累积,在ROS中SLAM框架接收这些带误差数据作为输入,利用算法得到误差修正,最后将这些误差修正加到map与odom之间的变换关系上,从而消除误差累积。

(3)示例演示

打开终端,输入:

roslaunch robot_sim_demo robot_spawn.launch

启动机器人的模拟场景,然后输入:

roslaunch slam_sim_demo gmapping_demo.launch

即可启动GMapping的DEMO,此外还有Karto、Hector、Cartographer例子,名字换一下就行。然后,为了可视化,可以使用RViz,在终端中输入:

roslaunch slam_sim_demo view_slam.launch

运行后的界面如下所示。

2.ROS中的Navigation

Navigation的框架介绍如上图所示。整个框架中最核心的节点就是move_base。输入需要tf,各关节之间的关系;odom,里程计信息;map,世界地图;sensor,传感器数据;goal,最后还需要设置一个目标。输出只有一个cmd_vel,发给机器人底盘的运动指令。

(1)move_base节点

move_base节点功能包含三块:全局规划(针对静态障碍)、局部规划(针对动态障碍)、处理异常行为。 因此,要想启动需要指定这三个参数,当然也有默认值。更多调用参数参考官方文档

(2)costmap

导航用的代价地图,用于路径规划。在move_base节点中有两张(global costmap、local costmap)、二维、多层(static layer、obstacle layer、inflation layer)。

(3)map_server与AMCL

(4)示例演示

打开终端,输入:

roslaunch robot_sim_demo robot_spawn.launch

启动机器人的模拟场景,然后输入:

roslaunch navigation_sim_demo amcl_demo.launch

即可启动AMCL的DEMO,此外还有其它几个可以选择。然后,为了可视化,可以使用RViz,在终端中输入:

roslaunch navigation_sim_demo view_navigation.launch

运行效果如下所示。

以上演示了SLAM及导航相关的Demo,对Gazebo和RViz模拟环境有了感性的认识。对于其中更详细的细节,之后再作介绍。

本文作者原创,未经许可不得转载,谢谢配合

返回顶部