SLAM:gmapping

SLAM:gmappingPackageSummaryReleasedDocumentedThispackagecontainsaROSwrapperforOpenSlam’sGmapping.Thegmappingpackageprovideslaser-basedSLAM(SimultaneousLocalizationandMapping),asaROSn…

大家好,又见面了,我是你们的朋友全栈君。

概述

http://wiki.ros.org/gmapping

Gmapping包包含OpenSlamGmapping的一个ROS封装。Gmapping ROS节点slam_gmapping提供基于激光的SLAM(同时定位和创建地图)。依靠移动机器人收集的激光和位姿数据,使用slam_gmapping可以创建2维栅格地图。

外部文档

主要是一个第三方包。

硬件需求

使用slam_gmapping,需要移动机器人提供里程计数据,并且水平安装固定激光测距仪。slam_gmapping节点试图转换每个扫描输入数据到odom(里程计)tf坐标系。见“Required tf transforms”更多需要的转换。

例子

机器人用激光扫描发布创建地图在base_scan话题上:

 

[html]
view plain
copy

  1. rosrun gmapping slam_gmapping scan:=base_scan  

节点

slam_gmapping

节点slam_gmapping采用sensor_msgs/LaserScan消息,并且构建地图(nv_msgs/OccupancyGrid)。地图可以通过topicservice检索。

订阅话题

tf(tf/tfMessage)

      转换需要涉及激光坐标系,基座坐标系和里程计坐标系。

scan(sensor_msgs/LaserScan)

    从激光扫描创建地图

发布话题

 map_metadata (nav_msgs/MapMetaData)

     从这个话题获得地图数据,这个话题是被锁存的,并定期更新。

map (nav_msgs/OccupancyGrid)

    从这个话题获得地图数据,这个话题是被锁存的,并定期更新。

~entropy (std_msgs/Float64)

    机器人位姿分布熵的估计(值越高表示越大的不确定性)

服务

dynamic_map(nav_msgs/GetMap)

    调用这个服务来获取地图数据。

参数

http://wiki.ros.org/gmapping

· inverted_laser (string, default: “false”)

   (REMOVED in 1.1.1; transform data is used instead) 激光是朝上安装(扫描是逆时     针), 还 是朝下安装 (扫描是顺时针)?

· throttle_scans (int, default: 1)

   激光雷达每扫描一周跳过多少扫描。

· base_frame (string, default: “base_link”)

   移动基座的坐标系。

· map_frame (string, default: “map”)

   地图坐标系。

· odom_frame (string, default: “odom”)

   里程计系统的坐标系。

· map_update_interval (float, default: 5.0)

   地图更新的时间间隔(单位:seconds)。更新间隔越小,计算负荷越大。


· maxUrange (float, default: 80.0)

   激光雷达最大可用距离。光束被裁减成这个值。

· sigma (float, default: 0.05)

   用作结束点匹配。

· kernelSize (int, default: 1)

   在内核内寻找一个对应。

· lstep (float, default: 0.05)

   平移的最优步长。

· astep (float, default: 0.05)

   旋转的最优步长。

· iterations (int, default: 5)

   扫描匹配的迭代次数。

· lsigma (float, default: 0.075)

   波束的sigma,用来计算似然估计。 

· ogain (float, default: 3.0)

   评估似然的增益,用来平滑重采样的影响。

· lskip (int, default: 0)

   每次扫描跳过的波束。

· minimumScore (float, default: 0.0)

   评价扫描匹配良好结果的最低分数。 

· srr (float, default: 0.1)

   平移函数在平移时的里程计误差 (rho/rho)。

· srt (float, default: 0.2)

   旋转函数在平移时的里程计误差 (rho/theta)

· str (float, default: 0.1)

   平移函数在旋转时的里程计误差 (theta/rho)

· stt (float, default: 0.2)

   旋转函数在旋转时的里程计误差 (theta/theta)

· linearUpdate (float, default: 1.0)

   机器人平移这么远,处理一次扫描。

· angularUpdate (float, default: 0.5)

   机器人旋转这个角度,处理一次扫描。

· temporalUpdate (float, default: -1.0)

   如果上一次扫描处理比更新时间长,处理一次扫描。值小于0,将会关闭更新相关    的时间。

· resampleThreshold (float, default: 0.5)

   基于重采样阈值的Neff


· particles (int, default: 30)

   滤波器的粒子数。

· xmin (float, default: -100.0)

   初始地图尺寸。

· ymin (float, default: -100.0)

   初始地图尺寸。

· xmax (float, default: 100.0)

       初始地图尺寸。

· ymax (float, default: 100.0)

   初始地图尺寸。

· delta (float, default: 0.05)

   处理参数 (地图的分辨率)。

· llsamplerange (float, default: 0.01)

   似然的平移采样距离。

· llsamplestep (float, default: 0.01)

   似然的平移采样步长。

· lasamplerange (float, default: 0.005)

   似然的角度采样距离。

· lasamplestep (float, default: 0.005)

   似然的角度采样步长。

· transform_publish_period (float, default: 0.05)

   转换发布间隔,单位:seconds

· occ_thresh (float, default: 0.25)

   Gmapping占用值的阈值。有大一些的占用值的单元格,被视为占用。

· maxRange (float)

   传感器的最大距离。

 

需要的tf转换

<the frame attached to incoming scans> → base_link

         通常是一个固定值, 由robot_state_publisher或 tf static_transform_publisher.定期广播。

base_link → odom

      通常有里程计系统提供(例如,移动机器人的驱动)

提供的tf转换

map → odom

     在地图坐标系中机器人位姿的当前估计。

http://wiki.ros.org/pr2_controllers/Tutorials/Using%20the%20base%20controller%20with%20odometry%20and%20transform%20information

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150593.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • k8s pod配置_为什么要用k8s

    k8s pod配置_为什么要用k8sk8sPod的结构Pod定义Pod的配置镜像拉取策略启动命令环境变量(不推荐)端口设置资源配额Pod的介绍Pod的结构每个Pod中都包含一个或者多个容器,这些容器可以分为两类:用户程序所在的容器,数量可多可少。Pause容器,这是每个Pod都会有的一个根容器,它的作用有两个:可以以它为依据,评估整个Pod的健康状况。可以在根容器上设置IP地址,其它容器都共享此IP(Pod的IP),以实现Pod内部的网络通信(这里是Pod内部的通讯,Pod之间的通讯采用虚拟二层网络技术来实现,我们当前环境使

    2022年8月9日
    7
  • hackbar v2

    hackbar v2功能和以前的hackbar一样,用户量不多啊~.~

    2022年6月14日
    80
  • css圆角边框怎么设置颜色_word图片怎么设置圆角大小

    css圆角边框怎么设置颜色_word图片怎么设置圆角大小总结起来很简单,设置css圆角边框就是设置border-radius的值,设置的数字不同,圆角的大小也不同。通过设计css圆角边框,我们就不需要再用带框的背景图片,这不仅让页面设计更加简单,同时也有利于提升页面加载的速度。本文给大家简单介绍下css圆角边框怎么设置,大家可以参考,也可以直接拿过去使用,当然要修改下具体的参数。上面的css代码,大家可以直接拿去用,至于像15px、50px等这些数据,大家可以通过测试看看具体需要多大数字,这里给出的数字只是参考。圆角边框的最基本用法就是设置四个相同弧度的圆角。.

    2025年8月14日
    2
  • Node脚手架编写初学者教程

    Node脚手架编写初学者教程

    2022年3月4日
    29
  • spss19安装许可证代码_spss许可证不存在怎么办

    spss19安装许可证代码_spss许可证不存在怎么办联系我们官网:三维逆向网(www.3vnx.com)公众号:软件小秘书(rj-xms)QQ:609201757VX:dyc392001Spss23软件(Win64)下载链接:https://pan.baidu.com/s/1_cK8CxP9brmgw_dkBKwzoQ提取码:rb63Spss23软件(Win32)下载链接:https://pan.baidu.com/s/1pTkQwq…

    2025年6月8日
    3
  • python modis数据拼接_python读取modis数据

    python modis数据拼接_python读取modis数据本期记录只上干活,废话不多说,主要是后面与HEG配合使用,实现一系列研究与反演操作。python环境:Python3.5.2+Pycharm模块包:pyhdf安装方法(命令行输入):pipinstallpyhdf一、获取hdf数据集:frompyhdf.SDimportSDHDF_FILR_URL=”E:\Persona_project\Py-Program\RS\modis\M…

    2025年6月24日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号