• 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启动文件

     

  • 相关阅读:
    Vue $nextTick的一个使用场景
    Vue 使用v-for对Object进行遍历
    JavaScript 回调函数的简单示例
    VSCode 自定义Vue snippets, 快速生成Vue模板
    git将一个分支完全覆盖另外一个分支如:dev分支代码完全覆盖某一个开发分支
    解决bootstrap时间输入框总被浏览器记住的记录遮挡住的问题
    Fiddler 屏蔽JS、抓WebSocket协议、查看接口响应时间、模拟并发请求
    细说MySQL的时间戳(Timestamp)类型
    网站建设之域名注册和域名备案
    日常项目测试用例检查点(来自一线测试人员的吐血总结)
  • 原文地址:https://www.cnblogs.com/tanshengjiang/p/12331566.html
Copyright © 2020-2023  润新知