二、仿真环境下建图:

安装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

运行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,其名称是地图图片的名称,需要和地图文件一一对应。

到此建图完成。

 

posted @ 2020-07-23 16:25  寒灵oay  阅读(744)  评论(0编辑  收藏  举报