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

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

3天内不再提示

如何将MATLAB运动规划应用于各种自主系统

MATLAB 来源:MATLAB 作者:MATLAB 2021-09-03 10:04 次阅读

曾几何时,汽车离不开驾驶员,机器也离不开实体控制器。但现在不一样了:如今,高度智能自动驾驶汽车已经能够自己变道、礼让行人甚至侧方停车。

自动驾驶汽车、机器人操作臂、无人地面交通工具 (UGV) 和无人机等系统要实现自主,离不开三大支柱,运动规划就是其中之一。另外两大支柱则是感知和控制。

与人类非常相似,自主系统也是通过扫描环境来探索新环境,以了解自己所在的位置和周围环境。

一旦得出环境地图,运动规划算法就会规划一条通往指定目的地的无障碍路径。

算法会决定沿着路径要采取的下一步,控制器根据这一决定向作动器发送命令,使得系统移动。

什么是运动规划?

运动规划是一种计算问题,旨在寻找将机器人或车辆从初始状态移动至目标状态的动作序列。

“运动规划”和“路径规划”这两个词经常混用,但两者有一个关键区别。

运动规划在车辆位置随时间变化时生成车辆的运动,而路径规划只生成车辆的路径。

通过运动规划,车辆可以在遵循现有路径的同时改变运动,如以下两个自动驾驶汽车场景所示:

场景 1:红灯亮起时,汽车减速后停止;绿灯亮起时,汽车继续行驶,这是运动变化,不是规划路径变化。

状态空间和其他运动规划关键概念

在实际应用中,运动规划的实现有赖于多个功能部件。其中包括使用同步定位与地图构建 (SLAM) 算法生成的环境地图,以及机器人或车辆的状态(位置和方向)。

机器人的状态间变换定义了其运动。可以应用于机器人的变换集合称为状态空间或配置空间(Cspace)。配置空间可以包括自由空间(其中的机器人状态被视为有效)和障碍空间(其中的机器人状态被视为无效)。

例如,在自动驾驶汽车中,汽车的位置及其驶向或方向共同代表了它的状态。

对于自动驾驶汽车的自动泊车,停车场的地图标识了自由空间和障碍空间,状态空间表示使用运动模型定义的所有可能的前进和后退机动的集合。

路径代价、最优性和完备性

路径代价

当机器人或车辆在寻找路径时,它所采取的每一步都与代价相关联。穿越自由空间的代价通常设为零,穿越包含障碍物的空间的代价设为无穷大。

最优性

如果路径规划算法总能找到最优路径,则称其为最优算法。为了使路径最优,其转换代价(边缘代价)之和在从初始位置到目标位置的所有可能路径中必须是最低的。

完备性

在有限的时间内,当路径存在时,路径规划算法能找出路径,当路径不存在时,算法能报告路径不存在,则称该算法为完备的。

最优且完备的路径规划算法所提供的路径不一定是最短的,但代价会是最小的。

在某些特定的情况下(例如,让室内机器人沿着走廊移动),可以将机器人沿走廊中心移动的代价定义为低于靠近墙壁移动的代价。

在这种情况下,最优路径是让机器人沿着走廊中心移动,减少与墙壁碰撞的机会。

运动规划的常见类型

运动规划有许多不同类型的方法。最常见的方法如下:

基于搜索的规划和基于采样的规划方法,取决于搜索树或图的创建方式

全局和局部路径规划方法,取决于规划是在整个地图中还是在某一子集中完成

接下来我们将逐一探讨每种方法。

基于搜索的规划

基于搜索的规划创建一个可搜索的图,将每个车辆状态或配置标识为一个节点。该图从起始节点扩展到目标节点,使用基于代价和启发式的方法来寻找最短路径。

基于搜索的规划通常在离散化地图上执行,其中地图被细分为栅格单元,状态数是有限的或可数无限的(可以为每个状态分配一个唯一的整数)。

离散状态空间通常用二维栅格地图表示,其中各个网格的中心是要搜索的状态。一种常见的地图表示方法是占据栅格地图。

A* 算法是一种常用的基于搜索的方法,用于在离散栅格地图中寻找路径。

当车辆或机器人可被视为一个点且规划阶段不涉及运动模型或运动学方程时,栅格地图上基于搜索的规划通常适用。

如果路径规划算法为机器人提供了要遵循的路点,则可以使用控制算法来添加运动学约束。

基于采样的规划

在基于采样的规划中,搜索树或路线图是通过在状态空间中随机添加节点来创建的。使用连续运动模型,可以找到可能的无碰撞路径。

基于采样的规划通常使用启发式方法来探索搜索空间并偏转搜索方向。创建后,树或路线图使用碰撞检查或搜索方法来寻找到达目标的最短路径。

RRT 算法是一种常用的基于采样的方法,用于在连续状态空间中寻找路径。

基于采样的运动规划适用于高维搜索空间,例如寻找一组有效的配置,使机械臂能够拾取物体。基于采样的规划广泛适用于多种实际应用,虽然不能提供完备解,但仍广受欢迎。

如果搜索树的密度使样本足够接近,则当解存在时,找到解的概率会收敛到 1。这使得一些基于采样的规划器(例如 RRT 和 RRT*)在概率上是完备的。

全局和局部路径规划

全局路径规划又称基于地图的规划,它根据有关环境的先验知识寻找最优路径。

全局规划算法规划初始路径,以避开环境中已知的静态障碍。

例如,一个自主移动机器人可以规划一条全局路径,在有墙壁等静态障碍物的走廊上,将一本书从一个办公室送到另一个办公室。

局部路径规划又称动态重规划,它重新计算路径,以避开未知的动态障碍。

局部规划算法跟踪全局规划并创建局部轨迹,同时避开新引入的障碍。

例如,一辆自动驾驶汽车可能会规划局部轨迹,变道以避开其他车辆,然后重新汇入全局路径以抵达目的地。

使用 MATLAB 进行运动规划的四步工作流

Navigation Toolbox 提供了用于实现各种规划算法的类,包括常见的基于搜索的规划器(例如 A*)和基于采样的规划器(例如 RRT 和 RRT*)。

该工具箱还提供路径指标,来评估所规划路径的避障间隙和平滑度。

此外,Navigation Toolbox 提供了一个接口,可让您在系统化的四步工作流中实现基于采样的运动规划算法:

表示状态空间。

定义状态校验器。

对新状态进行采样并检查有效性。

将一组有效状态表示为路径。

表示状态空间

自定义状态空间类 nav.StateSpace 允许您定义一个状态空间,在其中包含任何应用的可能状态或配置。例如,stateSpaceDubins 和 stateSpaceReedsShepp 通过连接状态空间中的任意两个状态来支持自动泊车规划,以便状态空间模拟汽车类机器人或带有阿克曼转向的机器人的运动。

Navigation Toolbox 提供以下现成的状态空间。

28d1574a-0bed-11ec-8fb8-12bb97331649.png

定义状态校验器

状态校验器基于状态空间,并与通过 SLAM 算法获得的地图相对应。它检查单个状态的有效性或两个采样状态之间的运动的有效性。例如,碰撞检查器是一种状态校验器,可指示机器人状态或配置与障碍物发生碰撞的情况。

Navigation Toolbox 提供以下状态校验器,用于校验二维和三维占据地图中的状态和离散化运动。

2935bfd2-0bed-11ec-8fb8-12bb97331649.png

这些状态校验器派生自工具箱中提供的自定义状态校验器 nav.StateValidator,可用于确定单个状态的有效性或任意两个状态之间的运动的有效性。

对新状态进行采样并检查有效性

基于采样的规划算法在定义的状态空间中随机对状态采样,并使用状态校验器创建从起点到目标的无障碍路径。RRT 和 PRM 等算法使用不同的采样方案对状态进行采样,并创建搜索树或路线图。

对于通过 SLAM 算法获得的地图,为对地图内的状态进行采样,会应用与地图外侧界限相对应的状态空间边界。

表示采样状态的集合

您可以使用 Navigation Toolbox 中的 plan 函数将规划算法的输出整理成树状数据结构。您可以使用 navPath 类存储给定状态空间中的状态集合,并对它们进行插值以获得路径。

运动规划函数:https://ww2.mathworks.cn/help/nav/motion-planning.html

选择运动规划算法

Navigation Toolbox 中提供了以下运动规划算法。

2944f592-0bed-11ec-8fb8-12bb97331649.png

进一

责任编辑:haq

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

    关注

    185

    文章

    2976

    浏览量

    230484
  • 控制器
    +关注

    关注

    112

    文章

    16365

    浏览量

    178075
  • 机器人
    +关注

    关注

    211

    文章

    28420

    浏览量

    207111
  • 自动驾驶
    +关注

    关注

    784

    文章

    13812

    浏览量

    166462

原文标题:自主系统 | 使用 MATLAB 进行运动规划

文章出处:【微信号:MATLAB,微信公众号:MATLAB】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何将FMEA应用于PCB设计第一阶段?

    的每一个环节都充满了挑战和不确定性,稍有不慎就可能引发故障。 为了应对这些挑战,FMEA(Failure Modes and Effects Analysis,即故障模式与效应分析)应用于PCB设计的第一阶段显得尤为重要。FMEA是一种
    的头像 发表于 12-03 11:19 208次阅读

    TI TSC应用于各种和多种功能

    电子发烧友网站提供《TI TSC应用于各种和多种功能.pdf》资料免费下载
    发表于 10-22 10:15 0次下载
    <b class='flag-5'>将</b>TI TSC<b class='flag-5'>应用于</b><b class='flag-5'>各种</b>和多种功能

    如何将 THVD8000 应用于星型网络系统

    电子发烧友网站提供《如何将 THVD8000 应用于星型网络系统.pdf》资料免费下载
    发表于 09-12 10:36 0次下载
    <b class='flag-5'>如何将</b> THVD8000 <b class='flag-5'>应用于</b>星型网络<b class='flag-5'>系统</b>

    基于MATLAB的通信系统设计

    在通信系统设计领域,MATLAB作为一款强大的数学计算与仿真软件,广泛应用于信号处理、通信系统建模与仿真等方面。本文详细介绍一个基于
    的头像 发表于 07-18 15:52 1526次阅读

    如何将精益思维应用于传统工厂的数字化转型?

    随着科技的不断进步和市场竞争的日益激烈,传统工厂正面临着前所未有的挑战。如何在这场数字化浪潮中站稳脚跟,甚至实现弯道超车?答案或许就在精益思维中。今天,深圳天行健企业管理咨询公司就来解析如何将精益
    的头像 发表于 07-18 09:43 225次阅读

    利用Matlab函数实现深度学习算法

    Matlab中实现深度学习算法是一个复杂但强大的过程,可以应用于各种领域,如图像识别、自然语言处理、时间序列预测等。这里,我概述一个基本的流程,包括环境设置、数据准备、模型设计、训
    的头像 发表于 07-14 14:21 2226次阅读

    matlab预测模型怎么用

    MATLAB预测模型是一种基于统计和数学方法的预测工具,广泛应用于各种领域,如金融、气象、生物医学等。本文介绍MATLAB预测模型的使用方
    的头像 发表于 07-11 14:33 615次阅读

    如何使用MATLAB创建预测模型

    在这篇文章中,我们讨论如何使用MATLAB创建预测模型。MATLAB(矩阵实验室)是一种用于数值计算、可视化和编程的高级编程语言和交互式环境。它广泛
    的头像 发表于 07-11 14:29 682次阅读

    matlab预测模型有哪些

    MATLAB(Matrix Laboratory)是一款由MathWorks公司开发的数学计算软件,广泛应用于工程、科学研究和教育领域。MATLAB具有强大的数值计算能力、丰富的函数库和灵活的编程
    的头像 发表于 07-11 14:27 769次阅读

    MATLAB如何使用训练好的网络

    引言 在本文中,我们探讨如何在MATLAB中使用训练好的神经网络。神经网络是一种强大的机器学习技术,广泛应用于图像识别、自然语言处理、预测建模等领域。MATLAB提供了丰富的工具箱,
    的头像 发表于 07-03 10:06 1155次阅读

    运动控制系统由什么组成

    运动控制系统是一种用于控制机械运动系统,它能够根据预定的轨迹和速度对机械进行精确控制。运动控制
    的头像 发表于 06-12 10:51 1509次阅读

    运动控制系统的组成与作用

    运动控制系统作为现代自动化技术的核心之一,其广泛应用于工业自动化、机器人技术、精密制造等领域。它通过控制电机或其他执行器,使机器或设备按照预期的轨迹和速度运动,实现自动化操作。本文将对
    的头像 发表于 06-05 16:35 2521次阅读

    如何将增量旋转编码器与Arduino连接

    在本教程中,您将学习如何将增量旋转编码器与Arduino连接,以读取旋钮的运动。这对于在机器人和其他应用程序中创建用户界面或读取机械位置非常有用。
    的头像 发表于 02-11 10:00 1440次阅读
    <b class='flag-5'>如何将</b>增量旋转编码器与Arduino连接

    自主机器人近距离操作运动路径规划算法

    自主控制技术研究至今,先后出现了多种体系结构形式,目前被广泛应用于实践的是分布式体系结构,其各个功能模块作为相对独立的单元参与整个体系。
    发表于 01-12 10:42 693次阅读
    <b class='flag-5'>自主</b>机器人近距离操作<b class='flag-5'>运动</b>路径<b class='flag-5'>规划</b>算法

    如何将UCOSIII系统移植到ADSPBF609建立的工程文件中?

    如何将UCOSIII系统移植到ADSPBF609建立的工程文件中,编译环境是CCES
    发表于 01-12 08:20