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

原文地址:https://www.cnblogs.com/tanshengjiang/p/12331566.html

时间: 2024-11-05 21:41:13

ROS中使用SLAM构建地图的相关文章

ROS中利用V-rep进行地图构建仿真

V-rep中显示激光扫描点  在VREP自带的场景中找到practicalPathPlanningDemo.ttt文件,删除场景中多余的物体只保留静态的地图.然后在Model browser→components→sensors中找到SICK TiM310 Fast激光雷达,拖入场景中: 打开脚本参数修改器,可以修改雷达扫描范围(默认为270°),是否显示雷达扫描线(true),以及最大探测距离(默认为4m)这三个参数.地图大小为5m×5m,我们将雷达最大探测距离改为2m 将激光雷达放到地图中任

对比几种在ROS中常用的几种SLAM算法

在此因为要总结写一个文档,所以查阅资料,将总结的内容记录下来,欢迎大家指正! 文章将介绍使用的基于机器人操作系统(ROS)框架工作的SLAM算法. 在ROS中提供的五种基于2D激光的SLAM算法分别是:HectorSLAM,Gmapping,KartoSLAM,CoreSLAM和LagoSLAM.当然最后还有比较经典的google开源的cartographer,虽然不是基于ROS的但是大牛们已经将它修改为基于ROS的版本的cartographer_ros, ROS(Robot Operating

在ROS中开始自主机器人仿真 - 3 让turtlebot自主导航

我们已经在gazebo中实现了机器人的仿真,而且能够控制机器人的运动, 查看机器人所感知到的信息, 包括lasercan, 图像信息, 深度信息, 点云, 也包括没有提到的速度信息. 这里,我们建立用ROS navigation stack 导航功能包ROS navigation stack 导航功能包 , 进行机器人地图构建与导航. part 2.1: 让turtlebot自主导航 1 创建地图 使用下面的命令,借助键盘遥控机器人创建精确详尽的地图. 加载Gazebo仿真环境 roslaunc

ROS与激光雷达入门-ROS中使用激光雷达(RPLIDAR)

激光雷达(RPLIDAR) 我这里用的是思岚(rplidar)A1,通过ros系统去驱动激光雷达,现在做了一个基本的入门. RPLIDAR是低成本的二维雷达解决方案,由SlamTec公司的RoboPeak团队开发. 它能扫描360°,12米半径的范围. 它适合用于构建地图,SLAM,和建立3D模型. 安装 建立工作空间(也可以利用现有的),编译包 $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src ## 激光雷达rplidar一代驱动 $ git cl

ROS中的CMakeLists.txt

在ROS的编程过程中,如果CMakeLists.txt如果写不好,编译就很难成功.如果看不懂CMakeLists.txt那么很多错误你也不知道时什么回事.所以深入了解它是很有必要的.现在我们就来看看它. 我们使用cmake进行程序编译的时候,会根据CMakeLists.txt这个文件进行一步一步的处理,然后形成一个MakeFile文件,系统再通过这个文件的设置进行程序的编译. 我们可以先寻找一些cmake方面的东西进行一定的了解.ROS中的CMakeLists.txt也是基于普通的cmake的.

在ros中使用qt图形界面

在ROS中使用QT界面 在终端可以直接用catkin_create_qt_pkg命令创建带Qt界面的ROS package,再按照前面说的方法导入到Qt即可 这里参考的是qt_createTutorialsQt App Templates (1) 要使用catkin_create_qt_pkg命令需要安装一个包,执行如下命令: $ sudo apt-get install ros-indigo-qt-ros11 这样我就可以使用catkin_create_qt_pkg命令创建一个名为testgu

ROS中的日志(log)消息

学会使用日志(log)系统,做ROS大型项目的主治医生 通过显示进程的运行状态是好的习惯,但需要确定这样做不会影响到软件的运行效率和输出的清晰度.ROS 日志 (log) 系统的功能就是让进程生成一些日志消息,显示在屏幕上.发送到特定 topic 或者储存在特定 log 文档中,以方便调试.记录.报警等.下面简单介绍如何生成和查看日志消息. 日志消息 在ROS中,有一个特殊的话题叫作/rosout,它承载着所有节点的所有日志消息./rosout消息的类型是rosgraph_msgs/Log: r

3.Spring Boot中使用Swagger2构建强大的RESTful API文档

原文:http://www.jianshu.com/p/8033ef83a8ed 由于Spring Boot能够快速开发.便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API.而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端. 这样一来,我们的RESTful API就有可能要面对多个开发人员或多个开发团队:IOS开发.Android开发或是Web开发

根据先序和中序序列构建二叉树

说明: 本次实验利用中序和先序序列,采用递归方式来构建二叉树 . 经过几天的失败和思考,我认为递归构建二叉树的过程中最重要的是递归单元,最麻烦的是递归参数的选择和传递. 简单将算法过程用如下流程图来表示:(本帖所用算法及图片均为原创内容,转贴注明出处) 算法:1.根据先序序列,建立根结点T 2.寻找中序序列的根结点位置,并据此位置计算左子树和右子树的区间 3.判断l_start和r_end是否相等,相等则表示只有一个根结点,设置其左右孩子结点为空并结束这一层:若不相等则继续下面步骤: 4.根据2