本文介绍了如何用记录的tf变换和激光扫描log数据建立2D地图。 在ROS的图形化模拟环境rviz中通过重放记录的数据作为机器人真实传感器采集的输入,来观测地图动态创建过程。
操作步骤如下:
1 slam_gmapping功能包安装
1.1 通过命令安装(较简单)
sudo apt-get install ros-kinetic-slam-gmapping
1.2 源码安装
你需要首先下载gmapping源码,然后编译并安装
2 获取记录数据bag包
1)从这里下载现存bag包
wget http://pr.willowgarage.com/data/gmapping/basic_localization_stage.bag
2)使用机器人创建自己的bag包
a)给机器人安装激光器,确保可以发布变换数据,且可以遥控操作
b)启动扫描和变换数据记录
rosbag record -O mylaserdata /base_scan /tf当前目录将创建一个名为mylaserdata_<DATE>-topic.bag的文件
c)让机器人动起来
d)kill掉rosbag用户可以看到记录文件已经创建
3 运行节点管理器master
roscore
4 设置参数,确保在任何节点使用前设定use_sim_time参数为true
rosparam set use_sim_time true
5运行slam_gmapping节点,它将在base_scan主题上监听激光扫描数据并创建地图
rosrun gmapping slam_gmapping scan:=base_scan
Note:在PR2上里程坐标系名字为odom_combined
命令为:
rosrun gmapping slam_gmapping scan:=base_scan _odom_frame:=odom_combined
6 在新终端使用模拟器rosbag启动bag包回放,将数据提供给slam_gmapping节点
rosbag play --clock basic_localization_stage.bag
7启动rviz,在左下方选择add,然后选择map,创建一副空地图;接着制定rviz的topic为/map可以监听到地图数据
rosrun rviz rviz
8 使用map_server功能包的map_saver保存新地图到磁盘(等rosbag结束后)
rosrun map_server map_saver
此时可以看到本地地图map.gpm已经生成,可以用图像浏览器(gimp, eog, gthumb, 等等)打开查看。