安装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启动文件
原文地址:https://www.cnblogs.com/tanshengjiang/p/12331566.html