Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >myAgv的slam算法学习以及动态避障下篇

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

原创
作者头像
大象机器人
发布于 2023-07-19 09:19:27
发布于 2023-07-19 09:19:27
1K0
举报
文章被收录于专栏:移动机器人移动机器人

引言

在之前的一篇文章中有提到购入了一台myAGV,以树莓派4B为控制核心的移动机器人。上篇文章中向大家介绍了myAGV如何实现建图、导航以及静态避障,但我们深知,这只是机器人自主导航能力的基础。在实际应用场景中,机器人需要面对复杂的动态环境,如人流、障碍物等,如何实现可靠的动态避障,是我们不断探索和挑战的问题。在本文中,我们将分享我们在探索动态避障方面的实践和经验,希望能够为其他创客开发者和机器人爱好者提供一些参考和启发。

产品

在此之前,还是在介绍一下myAGV,我使用的这款机器人。

myAGV是一款大象机器人公司出品的移动机器人,由树莓派4B为控制核心,内置Ubuntu18系统,ROS编译环境;360°激光雷达,内置高清摄像头。它采用了竞赛级别的麦克纳姆车轮和带有金属框架的全包裹设计。

动态避障

动态避障是指在移动机器人或自动驾驶汽车等智能移动设备在行进过程中,通过实时感知周围环境的变化,采取相应的措施以避免与障碍物发生碰撞的技术。动态避障需要实时感知环境的变化,如监测障碍物的位置、大小、形状、运动状态等,然后通过对这些信息的处理和分析,生成相应的行动指令,使机器人或汽车能够避免与障碍物发生碰撞并继续前进。

下面分享了一个视频,内容关于无人飞机进行快速动态避障的记录。

突然起来的障碍物,需要立即避开它,避免造成无人机的损伤。今天我们要实现的是myAGV在自动导航的时候也能够及时的躲避障碍物。

大象机器人提供的动态避障算法是基于TEB和DWA算法。

TEB算法

TEB(Timed-Elastic-Band)是一种用于轨迹优化的算法,可用于机器人的动态避障和路径规划。主要对全局路径规划器生成的初始全局轨迹进行后续修正,从而优化机器人的运动轨迹,属于局部路径规划。在轨迹优化过程中,该算法拥有多种优化目标,包括但不限于:整体路径长度、轨迹运行时间、与障碍物的距离、通过中间路径点以及机器人动力学、运动学以及几何约束的符合性。

起始点和目标点状态都有全局规划器制定,中间插入N个控制橡皮筋形状的控制点。这个路径是可以变形的,变形的条件就是所有约束条件,当作橡皮筋的外力,例如距离障碍物的距离,移动机器人的最大速度,最大角速度,最大转弯半径等。依靠这些约束条件来保证移动机器人的安全和稳定。

TEB算法具体实现的过程如下:

  1. 根据机器人当前位置和目标位置,生成一条初始路径。
  2. 将路径表示为一系列时间段上的线段,称为轨迹片段。每个轨迹片段表示机器人在一个时间段内沿着一条直线运动的轨迹。
  3. 对每个轨迹片段进行优化,以满足机器人的运动约束和避障需求。优化目标是使轨迹片段的长度和运动时间最小,同时避免与障碍物发生碰撞。
  4. 将优化后的轨迹片段拼接在一起,形成机器人的最终运动轨迹。如果机器人遇到障碍物,可以重新生成轨迹片段,并进行优化。

TEB算法的优点是可以在运动中实时避开障碍物,并可以处理机器人的动态运动。同时,TEB算法可以结合其他的避障算法,例如基于模型预测控制的算法,提高避障效果。

DWA算法

DWA(DynamicWindowApproach)是一种用于机器人动态避障的算法。该算法旨在在机器人的运动范围内搜索最优的运动轨迹,以避开障碍物。DWA算法通过将机器人的运动轨迹表示为一组(v,w)速度和角速度的组合,然后对这些组合进行搜索和评估,找到最优的运动轨迹。

DWA算法的具体实现过程如下:

  1. 根据机器人当前位置和目标位置,生成一组速度和角速度的候选集合,称为速度窗口。
  2. 对速度窗口中的每个速度和角速度组合,计算机器人在接下来的一段时间内所能到达的位置,即运动轨迹。
  3. 对每个运动轨迹进行评估,以确定是否与障碍物发生碰撞。评估的方法包括计算轨迹上的代价函数,例如与障碍物的距离和速度等。
  4. 根据评估结果,选择代价函数最小的运动轨迹,并将该轨迹作为机器人的运动指令。

这个视频能够辅助了解DWA算法。

TEB-DWA算法

TEB在实现动态避障方面具有一定的优势。然而,TEB算法也存在一些局限性,其中包括:

●对初始路径依赖性强:TEB算法的性能很大程度上依赖于初始路径的质量。如果初始路径存在较大的偏差或错误,TEB算法很可能会陷入无法解决的困境。

●对环境模型的依赖性强:TEB算法需要准确的环境模型,包括障碍物的位置和形状等信息。如果环境模型存在偏差或误差,TEB算法可能会出现路径规划错误的情况。

●对计算资源的要求高:TEB算法需要进行大量的计算和优化,时间复杂度较高,对计算资源的要求也较高。

DWA算法也具有能对轨迹进行搜索和评估,选出最优路径解,但也有一定的局限性:

●无法处理高速运动的障碍物:DWA算法是基于机器人的运动模型和环境感知,通过搜索和评估速度和角速度的组合,找到最优的运动轨迹,以避开障碍物。然而,在高速运动的障碍物出现时,DWA算法可能无法及时感知和处理,从而导致机器人的碰撞和安全问题。

●对环境模型的要求较高:DWA算法需要机器人具有较好的环境感知能力,以获取环境中障碍物的位置、形状和大小等信息。如果环境模型不准确或者不完整,DWA算法可能无法正确地评估运动轨迹的代价函数,从而导致机器人的错误运动和避障失败。

●无法处理不确定的环境:DWA算法是基于静态环境的假设,即环境中的障碍物位置不会发生变化。然而,在一些不确定的环境中,例如动态障碍物频繁出现的场景,DWA算法可能无法有效地避开障碍物,从而导致机器人的碰撞和安全问题。

●难以处理多机器人协同避障:DWA算法通常是针对单个机器人的避障问题进行设计的,难以处理多机器人协同避障的问题。在多机器人协同避障时,需要考虑机器人之间的相互作用和协调,从而进行更加复杂和高级的避障算法设计。

为了解决TEB和DWA算法的局限性,实现更加精细和高效的动态避障和路径规划,有人提出了TEB-DWA算法,TEB-DWA算法的核心思想是通过将TEB算法和DWA算法的优点结合起来,设计出一种更加精细和高效的动态避障算法。具体来说,TEB-DWA算法采用TEB算法的弹性带方法,实现路径规划和优化,同时采用DWA算法的速度窗口方法,实现速度和角速度的搜索和评估,从而实现机器人的动态避障和路径规划。

teb-dwa算法的实现过程是啥

TEB-DWA算法的实现过程主要分为以下几个步骤:

  1. 机器人运动模型的建立:根据机器人的运动约束和动力学模型,建立机器人的运动模型,用于计算机器人的运动轨迹和速度约束。
  2. 环境感知和障碍物检测:通过机器人的传感器获取环境中障碍物的位置、形状和大小等信息,进行障碍物检测和分类,以确定机器人的运动路径和避障策略。
  3. 弹性带路径规划:根据机器人的起点和终点,利用弹性带方法生成机器人的运动路径,并考虑机器人的运动约束和避障需求,以实现路径规划和优化。
  4. 速度窗口搜索和评估:根据机器人的运动模型和环境感知信息,利用DWA算法搜索机器人的最优速度和角速度组合,并评估每个速度和角速度组合的代价函数,以确定机器人的运动轨迹和避障策略。
  5. 运动控制和执行:根据计算得到的最优速度和角速度组合,利用控制算法实现机器人的运动控制和执行,以实现机器人的动态避障和路径跟踪。

实际操作

在ROS中,可以使用MoveBase包来实现TEB-DWA算法。MoveBase是ROS中常用的路径规划和导航包,提供了多种路径规划算法和导航功能,包括TEB-DWA算法。下面是使用ROS中TEB-DWA算法的步骤:

  1. 安装MoveBase包:在ROS中安装MoveBase包,可以使用以下命令:“sudoapt-getinstallros--move-base”
  2. 配置MoveBase参数:在使用TEB-DWA算法之前,需要配置MoveBase的参数。可以使用move_base.launch文件来配置参数,例如设置机器人的起点和终点、地图信息、运动约束和避障参数等。可以根据具体的应用场景和任务需求,进行参数的调整和优化。
  3. 运行MoveBase节点:在配置好参数之后,可以使用以下命令来启动MoveBase节点:”roslaunchmove_basemove_base.launch“
  4. 发布目标点:在运行MoveBase节点之后,可以使用move_base/goal话题来发布机器人的目标点。例如使用rostopicpub命令来发布目标点:
  1. 监听机器人状态和反馈:在机器人开始运动之后,可以使用/move_base/status话题来监听机器人的状态和反馈信息。例如使用rostopicecho命令来监听状态和反馈信息:

建图

我们快速的建图,进行避障的实验。

打开终端运行命令,启动雷达

cdmyagv_ros

source./devel/setup.bash

roslaunchmyagv_odometrymyagv_active.launch

然后运行gmapping算法建图

roslaunchmyagv_navigationmyagv_slam_laser.launch

动态避障

我们使用默认的配置,看看效果如何。

这似乎看起来实现了动态避障,但是似乎看起来有些许的愚蠢,在发现障碍物的时候还绕了一圈扫描环境。

调整了一下规划的频率(plannedfrequency)重新进行了一次测试。

这样看起来效果就好多了。

总结

对myAGV也使用了有一段的时间了,首先我是十分喜欢它的外观的,很酷炫,没有结构件在外面展露出来,内部包裹的很好,发生了碰撞也会有一定的保护作用。其次是它配套的资料都非常地详细,能够提供一个快速上手地模板使用,对于刚接触一款全新未知的产品很有帮助。

使用下来的整体感受还是不错的,连接显示器就能够使用,基于树莓派也有很多的社区能够提供帮助,有许多优秀的案例。此外也有一些需要提升的地方,在进行建图的时候,有时候并不是那么的准确,可能是因为外壳的原因?遮挡住了雷达的范围。也希望使用时间上能够更长。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SLAM+路径规划:巡检机器人算法设计
标题:Research on SLAM and Path Planning Method of Inspection Robot in Complex Scenarios
一点人工一点智能
2023/05/30
1.3K0
SLAM+路径规划:巡检机器人算法设计
SLAM+路径规划:巡检机器人算法设计
标题:Research on SLAM and Path Planning Method of Inspection Robot in Complex Scenarios
一点人工一点智能
2023/08/25
1.7K0
SLAM+路径规划:巡检机器人算法设计
myAgv的slam算法学习以及动态避障
随着科技得越来越发达,人工智能,自动驾驶导航等字眼频频出现在我们得眼前。但是目前来说自动驾驶并没有得到很全面得普及,还在进行不断的开发和测试当中。从小就爱好车的我,对这项技术也很是感兴趣。
大象机器人
2023/05/25
8560
myAgv的slam算法学习以及动态避障
【C++】ROS:navigation导航模块学习与算法示例
导航模块是机器人系统中的一个重要组件,用于实现机器人在环境中的自主导航和路径规划。
DevFrank
2024/07/24
6880
激光slam_高德导航术语理解
注:最近学习ROS的激光导航知识,需要理清ROS的SLAM、环境感知(costmap)、与导航算法。为防止自己忘记,将觉得有价值的内容收集于此。对AGV来说,SLAM是个大大坑,环境感知和局部运动控制也是大坑,学习的过程就是学会怎么从坑里爬出来的过程
全栈程序员站长
2022/09/24
1.3K0
激光slam_高德导航术语理解
ROS机器人虚拟仿真挑战赛本地电脑环境配置测试
在进行ROS机器人虚拟仿真挑战赛前,需要完成本地电脑的环境配置。这通常包括安装ROS系统、配置ROS环境变量、安装必要的ROS包以及设置工作空间等。参考“ROS机器人虚拟仿真挑战赛本地电脑环境配置记录”和“个人问题汇总”两篇博客,可以帮助我们避免一些常见的配置错误,并提前解决可能出现的问题。
zhangrelay
2024/05/25
1770
ROS机器人虚拟仿真挑战赛本地电脑环境配置测试
机器人运动|浅谈Time Elastic Band算法
在自主移动机器人路径规划的学习与开发过程中,我接触到Time Elastic Band算法,并将该算法应用于实际机器人,用于机器人的局部路径规划。在此期间,我也阅读了部分论文、官方文档以及多位大佬的文章,在此对各位大佬的分享表示感谢。在本文中,我将分享Time Elastic Band算法的原理、个人对Time Elastic Band算法的理解以及在ROS下通过teb_local_planner对该算法进行演示和讲解。
一点人工一点智能
2023/03/09
9240
机器人运动|浅谈Time Elastic Band算法
机器人视觉避障原来是这样的
避障是指移动机器人在行走过程中,通过传感器感知到在其规划路线上存在静态或动态障碍物时,按照 一定的算法实时更新路径,绕过障碍物,最后达到目标点。
小白学视觉
2019/11/12
1.5K0
机器人导航报告半成品-60分模板-tianbot mini
机器人发布nav_msgs/Odometry格式的里程计信息,相应的TF变换给导航功能包,然后导航功能包输出geometry_msgs/Twist格式的控制指令,最终通过这些指令控制机器人完成相应的运动。
zhangrelay
2022/10/04
5950
机器人导航报告半成品-60分模板-tianbot mini
移动机器人的几种视觉算法
谈到移动机器人,大家第一印象可能是服务机器人,实际上无人驾驶汽车、可自主飞行的无人机等等都属于移动机器人范畴。它们能和人一样能够在特定的环境下自由行走/飞行,都依赖于各自的定位导航、路径规划以及避障等功能,而视觉算法则是实现这些功能关键技术。
机器人网
2018/07/23
1.2K0
移动机器人的几种视觉算法
考虑绕障时耗的四轮全向移动机器人轨迹跟踪控制
为保证移动机器人动态环境下的运行安全性,须结合轨迹重规划实现实时绕障;针对路径重规划会带来额外的计算负担、难以保证控制系统实时性的问题,为实现高效高精移动机器人运动控制,提出考虑绕障时耗的四轮全向移动机器人轨迹跟踪控制器。
一点人工一点智能
2023/07/16
8240
考虑绕障时耗的四轮全向移动机器人轨迹跟踪控制
重大装备制造多机器人任务分配与运动规划技术研究综述
飞机蒙皮、船舶舱体、高铁车身等大型复杂部件高效高品质制造是航空航天、海洋舰船、轨道交通等领域重大装备发展的根基,是国家加快培育及发展的战略性新兴产业,在引领国民经济发展、服务国家重大需求等过程中发挥着至关重要的作用[1]。
一点人工一点智能
2024/01/08
1.2K0
重大装备制造多机器人任务分配与运动规划技术研究综述
自动驾驶安全挑战:行为决策与运动规划
在自动驾驶技术发展中,安全性一直作为首要因素被业界重视。行为决策与运动规划系统作为该技术的关键环节,对智慧属性具有更高要求,需要不断地随着环境变化做出当前的最优策略与行为,确保车辆行驶过程中的安全,文中分别对行为决策和运动规划系统进行深层次阐述。首先,介绍行为决策中基于规则的决策算法、基于监督学习的决策算法、基于强化学习的决策算法的算法理论及其在实车中的应用,然后,介绍运动规划中基于采样的规划算法、基于图搜索的规划算法、基于数值优化的规划算法和基于交互性的规划算法,并对算法的设计展开讨论,从安全角度分析行为决策和运动规划,对比各类方法的优缺点。最后,展望自动驾驶领域未来的安全研究方向及挑战。
一点人工一点智能
2023/08/25
1.2K0
自动驾驶安全挑战:行为决策与运动规划
机器人编程趣味实践19-武林秘籍(文档)
机器人技术快速发展,教程等迭代速度非常快,周期在1-2年,新生期都是如此,进入成熟期会好很多,文档迭代周期会延长至3-5年。至于那些经典技术通常生命周期长达10年或更久。
zhangrelay
2021/12/02
5910
机器人编程趣味实践19-武林秘籍(文档)
未知障碍环境中移动机器人编队切换的优化与性能评估
原文:Adaptive virtual leader–leader–follower based formation switching for multiple autonomous tracked mobile robots in unknown obstacle environments
一点人工一点智能
2024/05/08
2870
未知障碍环境中移动机器人编队切换的优化与性能评估
自动驾驶的“大脑”——决策规划篇
自动驾驶的“大脑”——决策规划篇 中国人工智能系列白皮书-智能驾驶2017 ▌决策规划技术概述 ---- 智能汽车 ( Intelligent Vehicles) 是智能交通系统(Intelligent Transportation Systems) 的重要组成部分。智能汽车根据传感器输入的各种参数等生成期望的路径,并将相应的控制量提供给后续的控制器。所以决策规划是一项重要的研究内容,决定了车辆在行驶过程中车辆能否顺畅、准确得完成各种驾驶行为。 决策规划是自动驾驶的关键部分之一,它首先融合多传感信
WZEARW
2018/04/10
3.1K0
自动驾驶的“大脑”——决策规划篇
结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(上)
本项目致力于探索和实现一种高度集成的机器人系统,旨在通过结合现代机器人操作系统(ROS)和先进的硬件组件,解决特定的自动化任务和挑战。一部分是基于Jetson Orin主板的LIMO PPRO SLAM雷达小车,它具备自主导航、地图构建和路径规划的能力;另一部分是Mycobot 280 M5机械臂,这是一个具有六自由度、工作半径280mm的紧凑型机械臂,能够进行精确的物品搬运和操作。
大象机器人
2024/03/07
4140
结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(上)
机器人如何使用 RRT 进行路径规划?
最近,我一直在和实验室的研究生一起研究移动机器人。我们通过尝试替换ROS中的一些默认包,学习了解了一个典型的机器人技术栈的各种算法。我的主要研究领域是规划和强化学习,而不是机器人学,所以学习曲线挺陡峭的。机器人需要知道如何在环境中定位自己,或者找到自己的位置,即时绘制环境地图,避开随时可能出现的障碍物,控制自己的电动机以改变速度或方向,制定解决任务的计划等等。
McGL
2020/09/03
1.6K0
RRT: 机器人路径规划RRT算法(1)
RRT*算法是一种基于随机采样的路径规划方法,不仅具有概率完备性,还具有渐进优化能力。假设 代表 维构型空间,
ZC_Robot机器人技术
2021/04/18
4.1K0
RRT: 机器人路径规划RRT算法(1)
移动机器人设计与实践-基础概念汇总
人类社会经历过农业时代(最强代表汉唐)-工业时代(最强代表日不落帝国)-信息时代(最强代表美利坚合众国),目前全力升级到智能时代(刚开始)。 
zhangrelay
2023/04/27
6720
移动机器人设计与实践-基础概念汇总
推荐阅读
相关推荐
SLAM+路径规划:巡检机器人算法设计
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档