ROS中使用SLAM構建地圖


安裝gmapping軟件包

使用gmapping操作之前,我們需要先用下面的命令安裝gmapping:

$ sudo apt install ros-melodic-gmapping

ROS gmapping軟件包是開源SLAM算法,該軟件包包含一個名為slam_gmapping的節點,即SLAM算法。

該軟件包利用激光掃描數據和移動機器人姿態輔助構建一個2D占據柵格地圖。

 

為gmapping創建啟動文件為gmapping創建啟動文件時的主要任務是為slam_gmapping節點和move_base節點設置相應參數。

slam_gmapping節點是ROS gmapping軟件包中的核心節點,slam_gmapping節點訂閱激光數據

(sensor_msgs/LaserScan)和tf數據,並將占據柵格地圖數據作為輸出(nav_msgs/OccupancyGrid)發布。

該節點具有高度可配置性,並且我們可以對參數進行微調以改進地圖精度,這些參數可在網站http://

wiki.ros.org/gmapping中查看。

接下來我們要配置的另一個節點是move_base節點,我們需要配置的主要參數是全局和局部代價地圖參數、

局部規划器和move_base參數,這些參數列表很長,所以我是在幾個YAML文件中來表示這些參數的,這些參數

文件都包含在diff_wheeled_robot_gazebo軟件包中的param文件夾中。

下面就是該機器人使用的gmapping.launch文件,該啟動文件存放在diff_wheeled_robot_gazebo/launch文件夾中:

 

 1 <launch>                                                                            
 2   <arg name="scan_topic" default="scan" />
 3 
 4   <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
 5     <param name="base_frame" value="base_footprint"/>
 6     <param name="odom_frame" value="odom"/>
 7     <param name="map_update_interval" value="5.0"/>
 8     <param name="maxUrange" value="6.0"/>
 9     <param name="maxRange" value="8.0"/>
10     <param name="sigma" value="0.05"/>
11     <param name="kernelSize" value="1"/>
12     <param name="lstep" value="0.05"/>
13     <param name="astep" value="0.05"/>
14     <param name="iterations" value="5"/>
15     <param name="lsigma" value="0.075"/>
16     <param name="ogain" value="3.0"/>
17     <param name="lskip" value="0"/>
18     <param name="minimumScore" value="100"/>
19     <param name="srr" value="0.01"/>
20     <param name="srt" value="0.02"/>
21     <param name="str" value="0.01"/>
22     <param name="stt" value="0.02"/>
23     <param name="linearUpdate" value="0.5"/>
24     <param name="angularUpdate" value="0.436"/>
25     <param name="temporalUpdate" value="-1.0"/>
26     <param name="resampleThreshold" value="0.5"/>
27     <param name="particles" value="80"/>
28   <!--
29     <param name="xmin" value="-50.0"/>
30     <param name="ymin" value="-50.0"/>
31     <param name="xmax" value="50.0"/>
32     <param name="ymax" value="50.0"/>
33   make the starting size small for the benefit of the Android client's memory...
34   -->
35     <param name="xmin" value="-1.0"/>
36     <param name="ymin" value="-1.0"/>
37     <param name="xmax" value="1.0"/>
38     <param name="ymax" value="1.0"/>
39 
40     <param name="delta" value="0.05"/>
41     <param name="llsamplerange" value="0.01"/>
42     <param name="llsamplestep" value="0.01"/>
43     <param name="lasamplerange" value="0.005"/>
44     <param name="lasamplestep" value="0.005"/>
45     <remap from="scan" to="$(arg scan_topic)"/>
46   </node>
47 
48 
49 
50   <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="sc   reen">
51     <rosparam file="$(find diff_wheeled_robot_gazebo)/param/costmap_common_params.ya   ml" command="load" ns="global_costmap" />
52     <rosparam file="$(find diff_wheeled_robot_gazebo)/param/costmap_common_params.ya   ml" command="load" ns="local_costmap" />
53     <rosparam file="$(find diff_wheeled_robot_gazebo)/param/local_costmap_params.yam   l" command="load" />
54     <rosparam file="$(find diff_wheeled_robot_gazebo)/param/global_costmap_params.ya   ml" command="load" />
55     <rosparam file="$(find diff_wheeled_robot_gazebo)/param/base_local_planner_param   s.yaml" command="load" />
56     <rosparam file="$(find diff_wheeled_robot_gazebo)/param/dwa_local_planner_params   .yaml" command="load" />
57     <rosparam file="$(find diff_wheeled_robot_gazebo)/param/move_base_params.yaml" c   ommand="load" />
58 
59 <!--    <remap from="cmd_vel" to="navigation_velocity_smoother/raw_cmd_vel"/>
60     <remap from="odom" to="$(arg odom_topic)"/> -->
61   </node>
62 
63 </launch>                                   

 

 

在差速驅動機器人上運行SLAM

為了構建地圖,我們需要編譯ROS軟件包:diff_wheeled_robot_gazebo,並運行gmapping.launch啟動文件

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM