gmapping matlab实现_gmapping学习

gmapping matlab实现_gmapping学习一、机器人地图机器人地图一般分为三种类型:栅格地图,拓扑地图,特征地图1、栅格地图栅格地图栅格地图,在物流信息技术中有所涉猎,其就是构建一个个“小方块”,利用颜色信息来区分的地图的位置信息。在机器人建图中,栅格地图容易构建,表示且保存位置的唯一,对于短路径的规划方便;但栅格地图的路径规划效率不高,空间浪费(栅格的分辨率不依赖于环境的复杂度)并且也需要精确的机器人位置估计,其对于物体识别的人机交互问…

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

一、机器人地图

机器人地图一般分为三种类型:栅格地图,拓扑地图,特征地图

1、栅格地图

2f20196f2046?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

栅格地图

栅格地图,在物流信息技术中有所涉猎,其就是构建一个个“小方块”,利用颜色信息来区分的地图的位置信息。在机器人建图中,栅格地图容易构建,表示且保存位置的唯一,对于短路径的规划方便;但栅格地图的路径规划效率不高,空间浪费(栅格的分辨率不依赖于环境的复杂度)并且也需要精确的机器人位置估计,其对于物体识别的人机交互问题效果不好。

2、拓扑地图

是指地图学中一种统计地图,一种保持点与线相对位置关系正确而不一定保持图形形状与面积、距离、方向正确的抽象地图。

2f20196f2046?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

拓扑地图

对于使用gmapping建图,所构建的是二维栅格地图。

二、gmapping与SLAM

对于建图,SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localization), 我们从名字就可以得知,其包含机器人的定位与地图的构建两部分,或者说并发建图与定位。对于这个问题的模型,就是如果将一个机器人放入未知环境中的未知位置,是否有办法让机器人一边移动一边逐步描绘出此环境完全的地图(完全的地图是指不受障碍行进到房间可进入的每个角落,也就是熟知地图的障碍点)。定位与建图相辅相成、互相影响。

首先,构建地图要知道机器人的精确位姿,精确定位又需要给定的地图做参考。先讲已知精确位姿(坐标和朝向)的地图创建,机器人位置已知,通过激光雷达扫描到环境特征,即障碍物距离。可通过机器人坐标和朝向以及障碍物距离计算出障碍物的坐标,采用bresenham直线段扫面算法,障碍物所处的栅格标注为occupy,机器人所处的栅格与障碍物所处的栅格之间画直线,直线所到之处都为free。当然每个栅格并不是简单的非0即1,栅格的占据可用概率表示,若某一个栅格在激光束a扫描下标识为occupy,在激光束b扫描下也标识为occupy,那该栅格的占据概率就变大,反之,则变小。这样,机器人所处的环境就可以通过二维栅格地图来表征。

三、实现gmapping功能包的条件

1、一台安装了ROS并运行虚拟机的笔记本(或者其它的平台)。

对于ROS环境,所需要的ROS功能包有激光雷达的ROS功能包,gmapping功能包,机器人的驱动包,3个功能包都运行起来后需要编译节点连接,从而构建地图。当然,如果运行顺利,还可以插入一个按键,利用ROS包用来控制机器人的移动。

2、一台激光雷达

(未研究)在国内,现阶段激光雷达的效果也不错,能达到运行要求。

对于建图,机器人应该能检测深度信息与里程计信息。

3、以上都是之前学习的内容。但是除此以外,还必要一台机器人或者机器车,如irobot create或者turtlesim,此平台是必须的。

在这之前,除了在仿真环境里运行建图功能以外,一直没考虑到的问题是,是否只有小车才能承载激光雷达建图,用其他的工具是否可以。答案是不可以,因为运行gampping包需要里程计信息,也就是这个包需要知道你的机器人相对于你的开始位置运动了多少,转了多少角度等信息才可用进行地图的构建,里程计的信息是必须的,一般机器人的ROS驱动程序里都会包含,一般的里程计信息由车轮的转速编码器得到。

四、ROS中的gmapping功能包

slam-gmapping节点接收传感器/激光扫描信息并构建地图。可以通过ROS主题或服务检索地图。

1、订阅

gmapping订阅的其实非常简单,只有两种

tf (tf/tfMessage)

(需要进行激光,基准和测距的相关框架转换)

scan (sensor_msgs/LaserScan)

(激光扫描从中创建地图)

2、发布

(1) map_metadata(nav_msgs / MapMetaData)

从此主题获取地图数据,将其锁定并定期更新。

(2) map(nav_msgs / OccupancyGrid)

从此主题获取地图数据,将其锁定并定期更新

(3) 〜entropy (std_msgs / Float64)

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

3、 服务

dynamic_map(nav_msgs / GetMap)

调用此服务以获取地图数据。

五、gmapping参数

gmapping功能包采用粒子滤波算法。(待研究)

2f20196f2046?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

其中关键的参数为:

1. particles (int, default: 30) 这个参数决定gmapping算法中的粒子数,因为gmapping使用的是粒子滤波算法,粒子在不断地迭代更新,所以选取一个合适的粒子数可以让算法在保证比较准确的同时有较高的速度。

2. minimumScore (float, default: 0.0) 最小匹配得分,这个参数很重要,它决定了对激光的一个置信度,越高说明对激光匹配算法的要求越高,激光的匹配也越容易失败而转去使用里程计数据,而设的太低又会使地图中出现大量噪声,所以需要好好调整。

六、launch文件

启动节点:node pkg=”gmapping” type=”slam_gmapping” name=”slam_gmapping” output=”screen”

移动初始值(距离):param name=”lstep” value=”0.05”/

移动初始值(角度):param name=”astep” value=”0.05″/

param name=”lskip” value=”0″/(!–为0,表示所有的激光都处理,尽可能为零,如果计算压力过大,可以改成1–)

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

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

(0)
上一篇 2022年6月16日 下午9:16
下一篇 2022年6月16日 下午9:16


相关推荐

  • avalondock 翻译网站文章(一)「建议收藏」

    avalondock 翻译网站文章(一)「建议收藏」AvalonDock2.0gettingstartedguidePART1AvalonDock2.0allowstocreateaninterfaceforWPFverysimilartoVisualStudioGUI.It’simportanttounderstandthathasbeendevelopedwiththisinmind

    2022年7月20日
    20
  • ArchAgent:AI仅用两天设计出性能提升5.3%的缓存策略,颠覆传统硬件设计

    ArchAgent:AI仅用两天设计出性能提升5.3%的缓存策略,颠覆传统硬件设计

    2026年3月14日
    1
  • DNS负载均衡与CDN内容分发技术

    DNS负载均衡与CDN内容分发技术负载均衡:负载均衡技术能平衡服务器及群众所有的服务器和请求应用之间的通信负载,根据实时响应时间进行判断,将任务交由负载最轻的服务器来处理,以实现真正的智能通信管理和最佳的服务器群性能,从而使网站始终保持运行和保证其可访问性。DNS负载均衡:为了充分利用现有服务器软件的种种优势,负载均衡最好是在服务器软件之外来完成。而最早使用的负载均衡技术是通过DNS服务中的随即名字解析来实现的。这就是

    2022年7月14日
    34
  • js数组常用方法「建议收藏」

    js数组常用方法「建议收藏」1.join()(数组转字符串)数组转字符串,方法只接收一个参数:即默认为逗号分隔符()。<script> vararr=[1,2,3,4]; console.log(arr.join());//1,2,3,4 console.log(arr.join(":"));//1:2:3:4 console.log(arr);//[1,2,3,4],原数组不变&l…

    2022年5月18日
    53
  • Python二级考试知识点(史上最全)

    Python二级考试知识点(史上最全)Python二级考试知识点(一)1、Python语言基本语法元素考点1.1程序的基本语法元素:程序的框架、缩进、注释、变量、命名、保留字、数据类型、赋值语句、库引用33个保留字6种数据类型4种引用方法:import库、from库import函数、from库impor*、import库as别名考点1.2基本输入输出函数:input()、eval()、print()考点1.3源程序的书写风格-Python之禅运行importthis即可出现考点1.4Pytho

    2022年5月20日
    123
  • 华硕笔记本r414u怎么安装键盘_华硕R414U详细拆机装内存条步骤!

    华硕笔记本r414u怎么安装键盘_华硕R414U详细拆机装内存条步骤!华硕R414U手动拆解安装内存条详细步骤电脑配置不够用,想要自己手动diy,但不同类型的电脑的内部结构都不同,或与会给第一次拆解此型号电脑的小伙伴带来不少麻烦。前几天小编就给自己的电脑加装了一块内存条,今天就和大家分享一下具体的拆解过程;详细步骤见下面。小编拆解的机型是华硕的R414U,这款电脑的自带内存条是集成在主板的,但拆开后发现主板上有预留的扩展内存卡槽的;比较麻烦的是不想其它的电脑在后盖内…

    2022年5月8日
    107

发表回复

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

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