Reference:《ROS机器人编程与算法指南第二章第七节》
gmapping是ROS中自带的建图功能包,安装ROS时已经默认安装gmapping。若未安装,则可以通过以下命令安装(可将melodic替换成自己的ROS版本)
sudo apt-get install ros-melodic-slam-gmapping
接下来,我们需要下载激光雷达数据集到本地。
下载地址为:
https://github.com/RobInLabUJI/ROS-Stage/blob/master/basic_localization_stage.bag
(如果打不开,则直接在GitHub里面搜索RobInLabUJI,然后在里面找对应的bag包)
接下来:
roscore
然后需要启用重放时的数据中的时间,不是现在的本地时间,而是历史时间。因此我们要告诉ROS系统,使用历史模拟时间:
rosparam set use_sim_time true
运行slam_gmapping功能包,并设置激光雷达的topic为base_scan:
rosrun gmapping slam_gmapping scan:=base_scan
通过rosbag回放激光雷达数据
//在存放激光雷达数据的文件目录下打开命令终端
rosbag play --clock basic_localization_stage.bag
运行Rviz,并选择/map 和 /scan的topic:
rosrun rviz rviz
但运行过程中会出现这个警告:
解决方法:
将系统时间重新这样设置:
rosparam set use_sim_time false
(不知道与此命令有无关系,如果该命令执行后还不行,则运行timedatectl set-ntp true)
结果图: