1. 程式人生 > 實用技巧 >從零開始,利用ros的gmapping和navigation功能包完成建圖和導航(二)

從零開始,利用ros的gmapping和navigation功能包完成建圖和導航(二)

二、模擬環境下建圖:

安裝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,其名稱是地圖圖片的名稱,需要和地圖檔案一一對應。

到此建圖完成。