二、仿真环境下建图:
安装gmapping功能包:
sudo apt-get install ros-kinetic-gmapping
编辑gmapping的启动文件:gmapping.launch
<launch> <arg name="scan_topic" default="scan" /> <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen" clear_params="true"> <param name="odom_frame" value="odom"/> <param name="map_update_interval" value="5.0"/> <!-- Set maxUrange < actual maximum range of the Laser --> <param name="maxRange" value="5.0"/> <param name="maxUrange" value="4.5"/> <param name="sigma" value="0.05"/> <param name="kernelSize" value="1"/> <param name="lstep" value="0.05"/> <param name="astep" value="0.05"/> <param name="iterations" value="5"/> <param name="lsigma" value="0.075"/> <param name="ogain" value="3.0"/> <param name="lskip" value="0"/> <param name="srr" value="0.01"/> <param name="srt" value="0.02"/> <param name="str" value="0.01"/> <param name="stt" value="0.02"/> <param name="linearUpdate" value="0.5"/> <param name="angularUpdate" value="0.436"/> <param name="temporalUpdate" value="-1.0"/> <param name="resampleThreshold" value="0.5"/> <param name="particles" value="80"/> <param name="xmin" value="-1.0"/> <param name="ymin" value="-1.0"/> <param name="xmax" value="1.0"/> <param name="ymax" value="1.0"/> <param name="delta" value="0.05"/> <param name="llsamplerange" value="0.01"/> <param name="llsamplestep" value="0.01"/> <param name="lasamplerange" value="0.005"/> <param name="lasamplestep" value="0.005"/> <remap from="scan" to="$(arg scan_topic)"/> </node> </launch>
运行gmapping.launch文件:
roslaunch slam_robot gmapping.launch
此时打开rviz,然后将Fiexd Frame设为odom,添加Map、RobotModel以及LaserScan等显示控件,对所建立的地图、机器人模型以及激光雷达信息进行可视化:
将rviz的配置文件保存到功能包,下次运行gmapping.launch可以直接打开rviz并保存上次的配置:File->
Save Config As->选择功能包的rviz文件夹并命名为gmapping.rviz
在gmapping.launch文件中加入以下指令,开启rviz并进行进行配置:
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find slam_robot)/rviz/gmapping.rviz" />
控制机器人走完整个地图,将地图进行保存:
rosrun map_server map_saver /home/oay/catkin_ws/src/slam_robot/maps
默认地图包含命名为map,包含一个.pgm文件和一个.yaml文件,将其名称统一改为gmapping_map,其中.yaml文件是参数配置文件,地图文件读取的时候先读取.yaml文件,然后加载地图图片。.yaml文件内容如下:
image: gmapping_map.pgm
resolution: 0.050000
origin: [-12.200000, -15.400000, 0.000000]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196
注意其中参数image,其名称是地图图片的名称,需要和地图文件一一对应。
到此建图完成。