激光SLAM之Gmapping(1)安装与测试
背景
Gmapping是ROS中一种开源的实时SLAM解决方案,由德国弗莱堡大学Giorgio Grisetti等编写。主要使用激光和里程计数据进行SLAM,采用自适应重采样技术来减少粒子退化的影响,同时在粒子分布时引入当前观测值,使得粒子不确定性降低。其方法中主要包括扫描匹配和Grid FastSLAM算法,构建的地图格式为栅格地图。
安装与编译
ros-melodic支持的是Ubuntu18.04,网上主要有两种安装方式,一种安装方式与Ubuntu16.04安装无较大差异,可通过sudo apt install的方式安装;另一种是通过源码安装。具体操作如下。
先安装依赖库
sudo apt-get install libsdl1.2-dev
sudo apt install libsdl-image1.2-dev
方式1 apt 安装
sudo apt-get install ros-melodic-gmapping
这个方法不太可行,我自己在操作的时候安装没有问题,显示如下图
但是在建图测试的时候会出现问题,还是要重新进行源码安装。
方法2 源码安装
也还是需要先安装依赖库
sudo apt-get install libsdl1.2-dev
sudo apt install libsdl-image1.2-dev
创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src/
catkin_init_workspace
进入工作空间
cd ~/catkin_ws/src
复制代码
git clone https://github.com/ros-perception/openslam_gmapping.git
git clone https://github.com/ros-perception/slam_gmapping.git
git clone https://github.com/ros-planning/navigation.git
git clone https://github.com/ros/geometry2.git
安装完成后记得编译
cd ..
catkin_make
这样就完成了gmapping的安装
注:安装过程中出现的错误以及解决方法
①编译时出现的问题
解决方法:
输入
catkin_make_isolated
如果还是不能解决问题,输入
rosdep where-defined bullet
可能会出现一个网址(我的出现的是下面这个网址)
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
不用管,接着输入
sudo apt-get install libbullet-dev
完成上述两步后重新进行编译,基本上不会再出错
接下来可以测试gmapping
数据集测试
在安装完成后,运行下数据集测试一下是否安装成功。这是我用的数据测试包
https://download.csdn.net/download/aidimoli123/14028249
具体操作步骤:
打开终端,输入
roscore
打开新的终端,输入
rosparam set use_sim_time true//设置ROS 启用重放数据中的时间而非本机时间,因为在默认情况下ros使用Ubuntu系统的时间,即当前时间。由于我们重放的文件是历史文件,它记录的是历史时间,所以需要设置ROS 从现在起开始启用模拟时间。
rosrun gmapping slam_gmapping scan:=base_scan //启动gmapping,并监听scan_base topic 发来消息。
再打开另一个新的终端,输入
rosrun rviz //启动rviz
还需打开一个终端,输入
rosbag play basic_localization_stage.bag //这个basic_localization_stage.bag是我的数据包里的,如果是别的数据包,只需要将名字即basic_localization_stage.bag换了即可。
rviz配置
启动 RViz,点击 add 按钮(左下方),在弹出的列表中选择 map,点击 OK,这时开始展现一个空的地图。
gmapping 输出的 topic 是 /map ,因此将其 topic 配置成 /map即可。
最终测试结果还是挺不错的。