0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

myAgv的slam算法学习以及动态避障

大象机器人科技 来源:大象机器人科技 作者:大象机器人科技 2023-05-26 17:03 次阅读

前言

随着科技得越来越发达,人工智能自动驾驶导航等字眼频频出现在我们得眼前。但是目前来说自动驾驶并没有得到很全面得普及,还在进行不断的开发和测试当中。从小就爱好车的我,对这项技术也很是感兴趣。

偶然间在上网的时候买了一台SLAM小车,能够利用2D激光雷达进行建图,自动导航,动态规避等功能。今天我将我在使用这台SLAM小车进行动态避障功能的实现记录下来。在进行动态避障用到的算法是DWA和TEB算法。

简单介绍一下我用到的机器

myAGV SLAM小车

myAGV 是 Elephant Robotics 的一款自动导航智能车辆。 它采用了竞赛级别的麦克纳姆车轮和带有金属框架的全包裹设计。 内置了一些SLAM算法来满足建图和导航方向的学习。

myAGV是以树莓派4B为微型控制板,以ubuntu为开发系统,这也是为什么选择它的原因,树莓派有世界上最大的活跃社区,拥有许多全世界各地的用户案例提供借鉴。

建图/Mapping

首先我得搭建一个场景,让myAGV在我搭建的场景里进行建图,自动导航,动态避障。

这是我简易搭建的一个场景,一些障碍物以及一些遮挡的物品。

现在开始我的建图。没有地图怎么进行导航呢,平时开车导航地图都是已经存在的,所以我要给场景进行建图,用到的gmapping算法。

Gmapping:

gmapping是一种用于在机器人上建立环境地图的算法。它是一种基于激光雷达数据的SLAM(Simultaneous Localization and Mapping)算法,可以在机器人运动时实时地构建环境地图,并同时确定机器人的位置。gmapping算法是ROS(Robot Operating System)机器人操作系统中的一个软件包,可以通过ROS的命令行工具或者编程接口来调用和使用它。

这里跟随Elephant Robotics 的Gitbook(有详细的操作方式)来进行操作。

利用激光雷达等传感器收集周围环境信息,然后通过计算机算法将这些信息组合成一幅环境地图。之后我就可以在这张地图上进行导航和动态避障等功能了。

PS:gmapping完成之后记得保存建好的地图。

我在这调用了myagv的一种控制方法,用键盘进行控制myAGV去执行建图。

自动导航

AMCL 定位

这里要介绍一个算法ACML算法,AMCL算法是一种概率机器人定位算法,它基于蒙特卡罗方法(Monte Carlo Method)和贝叶斯滤波(Bayesian Filtering)理论,通过对机器人搭载的传感器数据进行处理,实时估计机器人在环境中的位置,并不断更新机器人位置的概率分布。

AMCL算法通过以下步骤实现机器人的自适应定位:

  1. 初始化粒子集合:首先,在机器人初始位置周围生成一组粒子,代表机器人可能的位置。
  2. 运动模型更新:根据机器人的运动状态和控制信息,更新粒子集合中每个粒子的位置和状态信息。
  3. 测量模型更新:根据机器人搭载的传感器数据,计算每个粒子的权重(即代表机器人在该粒子位置时传感器数据与实际数据的匹配程度),并通过归一化处理,将权重转化为概率分布。
  4. 重采样:根据粒子的权重,对粒子集合进行重采样,从而提高定位精度并减少计算复杂度。
  5. 机器人定位:根据粒子集合的概率分布,确定机器人在环境中的位置,并更新机器人状态估计信息。

通过以上步骤的循环迭代,AMCL算法可以实时地估计机器人在环境中的位置,并不断更新机器人位置的概率分布。

navigation提供了一套框架,可以让我们灵活的选择global_planner、local_planner来提供路径规划功能,其中global_planner是全局规划器,而local_planner是局部路径规划器,它们之间的有些消息,例如:全局规划的轨迹,就是在框架内部传递,没有topic可以跟踪。总的说,ROS的导航模块提供了一套机制,通过选择不同的规划器,可以实现机器人的自主导航。

可以看到除了规划器,导航模块还包括 cost_map ,也就是栅格地图,并且也包括了静态障碍物的信息,也就是说哪些区域可以通过哪些不可以通过。同时动态障碍物信息是通过sensor topics来发布,然后实时更新cost_map来实现动态避障。除了地图,导航模块还需要定位信息,是由amcl模块来提供定位信息,如果想采用其它的定位模块替代,只需要发布相同的topic即可。同时还要提供tf信息,也就是说不同传感器之间的转换关系,这在机器人中非常常见。机器人的位姿信息则由odometry来提供,包括机器人的速度、角度等,提供给局部规划器来规划路径。

如果不太了解,这边推荐去查阅ROS官方文档。

我们来一起看看自动导航的效果如何

这是实现了静态的避障,能够简单的实现。但是很多场景都有不确定的因素,比如说突然走出来一个人,这个时候站在面前,如果只依靠静态避障的话,那么它就会直接撞上去,这个时候就需要用到另一种功能,动态避障。

动态避障是指机器人在移动过程中,根据环境变化实时调整路径,避开障碍物的能力。与静态环境下的避障不同,动态避障需要机器人能够实时感知周围环境的变化,并做出相应的调整,以保证机器人的安全移动,从而提高生产效率和安全性。动态避障我这边主要用到的是DWA和TEB算法。

总结

动态避障的算法需要涉及的知识较多,本篇的文章就记录到这里,后续我会将DWA和TEB算法写在另一篇文章中,如果你觉得我写的还不错,或者有啥需要改进的地方请在下方留言。

这里在写一下对myAGV的使用下来的感受,首先呢它的外观是很好的,它能够搭载机械臂作为一个复合机器人去实现很多任务。我买他的初衷主要是为了学习SLAM小车的一些知识,实现自主导航等依靠雷达的功能,它搭载这树莓派4B全球最大的硬件开发社区,有很多的资源提供,这也是选择它的理由。

除此之外,它也不是完美的,它的电池消耗的很快,最长待机时间是2小时,如果使用的频率较高的话,一小时左右就快没电了。这是使用下来我觉得需要提升的地方,后续也继续更新使用myAGV的感受。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    210

    文章

    28266

    浏览量

    206722
  • 人工智能
    +关注

    关注

    1791

    文章

    46952

    浏览量

    237810
  • SLAM
    +关注

    关注

    23

    文章

    419

    浏览量

    31797
  • AGV
    AGV
    +关注

    关注

    27

    文章

    1286

    浏览量

    41033
  • 自动导航
    +关注

    关注

    0

    文章

    7

    浏览量

    1961
收藏 人收藏

    评论

    相关推荐

    红外是数码管停止动态显示怎么解决

    求助,红外小车是时间停止动态显示时间是什么问题,怎么解决
    发表于 12-12 22:45

    循迹小车

    我是一名电子信息工程的大一新生,目前没有学习专业知识,想要自己做一个循迹小车,想要一个制作循迹小车的全部信息来
    发表于 10-02 00:09

    贪心算法学习

    算法学习之路——贪心
    发表于 09-04 07:17

    模拟退火的算法学习

    模拟退火算法学习
    发表于 06-16 11:02

    有感FOC算法学习与实现总结

    原文:https://blog.csdn.net/u010632165/article/details/103656254文章目录基于STM32的有感FOC算法学习与实现总结1 前言2 FOC算法
    发表于 07-05 06:45

    基于SLAM的移动机器人设计

    )Kinect摄像头  7)激光雷达2、已完成的部分,成果展示  根据Kinect摄像头,小车能够自主  利用Kinect摄像头和slam算法,小车能在室内建...
    发表于 11-08 06:17

    树莓派ROS stm32 slam Freertos VFH+A路径如何规划?

    树莓派ROS stm32 slam Freertos VFH+A路径如何规划?
    发表于 02-09 07:09

    移动机器人动态算法

    把滚动规划和径向基函数神经网络(RBFNN)预测相结合,提出一种动态不确定环境下移动机器人局部路径规划过程中,针对动态障碍物的新的混合算法
    发表于 03-01 18:09 36次下载

    红外小车设计论文

    红外小车设计论文红外小车设计论文红外小车设计论文
    发表于 11-13 15:57 1次下载

    论文1

    小车模糊控制算法的设计与仿真。本文详细阐述了智能小车的模糊控制算法设计。
    发表于 05-10 15:12 36次下载

    吸尘机器人系统设计与算法研究

    吸尘机器人系统设计与算法研究
    发表于 09-25 09:25 4次下载
    吸尘机器人系统设计与<b class='flag-5'>避</b><b class='flag-5'>障</b><b class='flag-5'>算法</b>研究

    如何解决机器人“”的问题

    SLAM是既有联系又有区别的两个不同功能,虽然SLAM在建图过程中,已经通过一种或多种传感器进行了周边环境的障碍物检测,但是受限于目前主流SL
    发表于 07-24 11:23 4522次阅读

    智能寻迹小车系统设计的资料说明

    报警,当退出障碍时报警声也消失。通过该项目的学习与实践,可以让读者获得如下知识和技能:1掌握红外线收、发对管的的原理与控制方法;2 掌握蜂鸣器报警的控制方法; 3掌握比较芯片L393的工作原理与控制方法; 4能够编写
    发表于 04-16 08:00 15次下载
    智能寻迹<b class='flag-5'>避</b><b class='flag-5'>障</b>小车<b class='flag-5'>避</b><b class='flag-5'>障</b>系统设计的资料说明

    myAgvslam算法学习以及动态下篇

    引言 在之前的一篇文章中有提到购入了一台myAGV,以树莓派4B为控制核心的移动机器人。上篇文章中向大家介绍了myAGV如何实现建图、导航以及静态
    的头像 发表于 07-19 16:37 1245次阅读
    <b class='flag-5'>myAgv</b>的<b class='flag-5'>slam</b><b class='flag-5'>算法学习</b><b class='flag-5'>以及</b><b class='flag-5'>动态</b><b class='flag-5'>避</b><b class='flag-5'>障</b>下篇

    Jetson Nano集成探索大象机器人myAGV上的 SLAM 算法

    引言 大家好,最近新入手了一台myAGV JN这是elephant robotics在myAGV升级后的版本。最近有对SLAM相关知识感兴趣,想深入了解一些关于ROS中SLAM的一些
    的头像 发表于 06-03 14:13 425次阅读
    Jetson Nano集成探索大象机器人<b class='flag-5'>myAGV</b>上的 <b class='flag-5'>SLAM</b> <b class='flag-5'>算法</b>!