智能驾驶规划控制理论学习07-规划算法整体框架

news2025/1/15 19:31:59

一、解耦合策略

1、路径-速度解耦策略概述

        路径-速度解耦指的是将车辆的运动分成路径规划和速度规划两部分,对两个部分分别进行研究。

  • 路径规划:

        假设环境是“静态的”,将障碍物投射到参考路径上,并规划一条避开它们的路径;

  • 速度规划:

        接收路径规划中给定的路径,将静态和动态障碍物都投影到st图上,并在图中规划大致的速度。

        在路径规划中,基于当前的“静态”环境,生成路径边界来描述可通过的区域。并且这个可通行区域一般要求是凸集,这样能保证优化的质量。

        并且路径规划在frenet坐标系和cartesian坐标系下都可实现,如下图所示:

        在速度规划中,投影就是根据障碍物的预测信息,用红色和橙色标记为阻挡路径的障碍物。通过st图中障碍物投影与自车运动曲线(下图中红色曲线)的相对关系可以判断自车做出了何种策略。如假定最上方红色曲线为自车运动曲线,则自车对黄车做出了抢行的行为,因为在相同时间t,自车曲线具有更大的s;而对于下方第二条自车运动曲线,则是对黄车做出了让行的行为。

        s(t)的高阶导数信息也包含在st图中。

        在论文a real-time motion planner with trajectory optimization for autonomous vehicles中给出了路径速度解耦合的框架。

 

        在该论文中作者使用四次螺旋多项式对路径进行规划生成轨迹,再在速度规划中利用三次多项式在st图中生成对应的曲线。 路径速度解耦方法中,是先通过路径的集合和速度的集合生成对应轨迹的集合,再经过代价值计算选取最优曲线,再对最优曲线中的路径和速度进行优化。

        上图是百度Apollo EM Motion Planner的框架,它的大体思想是对多条lane进行并行操作,生成对应的轨迹并打分,选择其中最优的。在每条lane的内部处理中分为E-step和M-step,E-step主要是进行障碍物的投影,M-step则是进行路径或速度的动态规划和二次规划,结合路径和速度的规划生成轨迹交给控制模块处理,同样也传送给最初的输入。大致流程和上篇论文的思想相同,下面对这个EM Planner进行一些具体的介绍。

2、EM Planner路径规划

SL Projection

        路径优化器使用上一个周期的大致速度来估计与迎面来车和低速动态障碍物的相互作用。基于这个投影的过程,我们可以假设得到一个“静态的”环境 。

DP Path Decision        

        在该部分,在自车前采样多行点。行点之间的间距取决于车速、道路结构等;不同行的离散点通过五次多项式曲线进行平滑连接;通过上述步骤得到的一系列曲线,我们可以使用DP(动态规划)在图中找到最优路径,这样就得到了一条能够避开障碍物类似安全通道的粗略解。

        在动态规划过程中每条边的代价值计算设计如下:

        这个代价函数还是比较好理解的,第一项C_{smooth}是衡量驾驶平顺性,主要考虑车辆的速度、加速度和加加速度三个指标;第二项C_{obs}主要考量车辆与障碍物的距离,采用分段函数的思想设置不同的值:当距离大于安全距离d_{n}时为0,小于危险距离d_{c}时给定一个较大的值C_{collision},当介于安全距离和危险距离也根据距离设置惩罚值;第三项C_{guidance}主要为车辆离道路中心的偏移距离设置代价值。

QP Path Optimization

        虽然DP方法有最优性保证,但搜索出来得到最优解只是在离散的图上达到最优,在连续空间上无法实现最优。为了保证最终下发的质量足够高要对dp的结果进行二次优化。在经过DP后,我们得到了一个可通行区域(凸集),对应上图黄色阴影部分,利用五次样条二次规划进行优化,目标函数的设计如下:

        在该函数中g(s)表示DP得到的最优路径,而不是上一步的车道中心线。

        在这一步中,对车辆施加线性化约束,不再看做简单的质点模型,此时车辆的运动要考虑航向的影响。

         该不等式成立,要满足航向角\theta足够小。

        一般来说,在优化问题中若生成的最终曲线是多条五次样条曲线组合而成的,需要施加显性约束保证连接处的状态连续,即连接处的ll{}'l{}''相等。

2、EM Planner速度规划

 SL Projection 

        与EM Planner路径规划的第一步相同,也是将障碍物投影到st中,只是在路径规划中只针对静态障碍物和低速的动态障碍物,而在速度规划中,将静态障碍物和动态障碍物都投影到路径规划器计算得到的路径上。

        速度规划的任务就是在st上找到最优曲线s(t)。

DP Speed Decision 

         与路径优化器类似,速度优化器也是在st图上找到最佳速度曲线,dp的结果包括各分段的大致速度,一个可行的凸区域以及障碍物速度决策。

        在离散栅格中,用有限差分法逼近导数:

        代价函数可设计为:

 QP Speed Optimization 

        分段线性速度曲线不能满足动态要求,需要样条QP曲线步骤来填补这一空白。与路径优化器中类似,使用基于五次样条的二次规划来生成更精细的廓形。五次样条速度优化的目标函数设计为:

         对该目标函数有如下线性约束:

         下面对EM Planner路径规划和速度规划中的DP和QP目的进行总结:

  • 使用DP是在网格内进行搜索得到一个粗略的解;
  • DP的解用于生成凸区域并指导QP过程;
  • QP用于在最有可能包含全局最优的凸区域中搜索最优解。

3、EM Planner缺陷

  • 动态规划的耗时太长

        DP为了获得最优解需要遍历图中的所有节点;

        相对于基于A*的算法,一个好的启发式函数能够快速地指导算法找到最优解。

  • EM Planner中的速度规划是次优的

        例如,如果速度限制是与位置相关的,那么对应于相同时间戳的速度约束将会随着优化过程速度轮廓的更新而不断变化,这使得问题是非凸的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1497062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

004-执行上下文事件循环

执行上下文&事件循环 1、执行上下文2、执行上下文类型3、执行上下文的生命周期4、示例说明5、事件循环机制6、宏任务7、微任务8、同步任务、宏任务、微任务9、代码执行顺序 - 示例 💡 Tips:用于说明 浏览器 对 JavaScript 执行顺序,涉及知…

web学习笔记(二十七)PC端网页特效

目录 1.元素偏移量offset 1.1什么是offset 1.2offset系列常用属性 1.3offset总结 1.4offset 与 style 区别 2.元素可视区client 3.元素滚动scroll 4.总结 4.1三大系列总结 4.2 mouseenter 和mouseover的区别 1.元素偏移量offset 1.1什么是offset offset就是偏移量…

TikTok小店如何批量生成/上传产品视频?

有许多Shopee卖家都会遇到这样的问题:明明产品标题、描述优化了,产品主图也认真做了,但是自己的Shopee店铺还是没转化! 可能是忽略了产品视频。 在Shopee官方的交流沙龙中,Shopee官方讲师提及:“有视频的产品比没有视…

Linux(Centos7)安装Docker 教程

目录 1,卸载旧版本2,安装docker软件包3,设置镜像仓库地址4,安装最新版Docker Engine容器5,启动Docker 要安装Docker Engine,您需要CentOS 7或8的维护版本。不支持或未测试存档版本。 1,卸载旧版本 sudo yum remove do…

2023 最新 IntelliJ IDEA 2023.3 详细配置步骤演示:新入职如何快速配置 IntelliJ IDEA?

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

基于UDP实现的网络聊天室

服务器&#xff1a; #include <myhead.h> struct msg {char type;char name[20];char text[1024]; };int main(int argc, const char *argv[]) {if(argc!3){printf("input error\n");printf("./a.out IP地址 端口号\n");return -1;}//1、创建用于通…

企业级Avatar道具解决方案

美摄科技&#xff0c;作为业界领先的多媒体解决方案提供商&#xff0c;近日推出了一款革命性的Avatar道具解决方案&#xff0c;旨在帮助企业打造独特且高度个性化的数字形象&#xff0c;从而提升企业品牌的吸引力和影响力。 这款解决方案的核心在于其先进的单摄像头Avatar生成…

MYSQL使用mysqldump备份、复原数据库

参考 添加链接描述 1. 备份数据库 C:\Windows\system32>mysqldump -uroot -p test student>C:\student.sql Enter password: ****2. 备份多个数据库 mysqldump -u root -p --databases test mysql>C:\testandmysql.sql3. 备份所有数据库 mysqldump -u root -p -…

R实现热图与网络图组合并显示显著性

大家好&#xff0c;我是带我去滑雪&#xff01; 热图和网络图分别展示了数据的不同方面。热图可用于显示变量之间的相关性或模式&#xff0c;而网络图则可用于显示节点之间的连接关系。通过将它们组合在一起&#xff0c;可以更全面地展示数据之间的关系和结构。下面开始代码实战…

数据结构界的终极幻神----树

目录 一.数的概念和分类 种类 二.重点概念 哈希树: 二叉树的线索化 什么是线索化 为什么要线索化 特殊的查找树 完全二叉树 三.手撕完全二叉树(堆) 重点讲解 向上搜索算法 向下搜索算法 一.数的概念和分类 树&#xff08;tree&#xff09;是包含 n(n≥0) [2] 个节…

机器学习笔记 DeepFakes和换脸技术简述

一、简述 人脸检测一直是 2000 年代初的主要研究课题。差不多二十年后,这个问题基本上得到了解决,并且人脸检测在大多数编程语言中都可以作为库使用。甚至换脸技术也不是什么新鲜事,并且已经存在了好些年了。 早在2016年左右就有基于OpenCV进行面部交换的方式了,主要是基于…

安卓玩机工具推荐----高通芯片9008端口读写分区 备份分区 恢复分区 制作线刷包 工具操作解析

上期解析了下adb端口备份分区的有关操作 安卓玩机工具推荐----ADB状态读写分区 备份分区 恢复分区 查看分区号 工具操作解析 在以往的博文中对于高通芯片机型的分区读写已经分享了很多。相关类似博文 安卓备份分区----手动查询安卓系统分区信息 导出系统分区的一些基本操作 …

【C++】C/C++内存管理详解

个人主页 &#xff1a; zxctscl 文章封面来自&#xff1a;艺术家–贤海林 如有转载请先通知 目录 1. 前言2. C/C内存分布3. C语言中动态内存管理方式4. C中动态内存管理4.1 new/delete操作内置类型4.2 new和delete操作自定义类型 5. operator new与operator delete函数5.1 oper…

【MySQL】not in遇上null的坑

今天遇到一个问题&#xff1a; 1、当 in 内的字段包含 null 的时候&#xff0c;正常过滤&#xff1b; 2、当 not in 内的字段包含 null 的时候&#xff0c;不能正常过滤&#xff0c;即使满足条件&#xff0c;最终结果也为 空。 测试如下&#xff1a; select * from emp e;当…

SoundTouch对音频处理(Android)

SoundTouch对音频处理&#xff08;Android&#xff09; SoundTouch介绍 SoundTouch 是一个用于音频处理的开源库&#xff0c;主要用于改变音频的速度、音调和音量等特征。您可以在项目中使用 SoundTouch 库来实现音频处理的功能&#xff0c;比如变速播放、音高变化、混响效果…

设计模式之模版方法实践

模版方法实践案例 实践之前还是先了解一下模版方法的定义 定义 模板方法模式是一种行为设计模式&#xff0c;它定义了一个骨架&#xff0c;并允许子类在不改变结构的情况下重写的特定步骤。模板方法模式通过在父类中定义一个模板方法&#xff0c;其中包含了主要步骤&#xf…

绳牵引并联机器人动态避障方法

绳牵引并联机器人在受限空间中如何躲避动态障碍物&#xff0c;是个有挑战的课题。 来自哈尔滨工业大学&#xff08;深圳&#xff09;的熊昊老师团队&#xff0c;开展了一项有趣的研究&#xff0c;论文《Dynamic Obstacle Avoidance for Cable-Driven Parallel Robots With Mob…

MySQL实战45讲——30答疑文章(二):用动态的观点看加锁

目录 不等号条件里的等值查询 等值查询的过程 怎么看死锁&#xff1f; 怎么看锁等待&#xff1f; update 的例子 小结 上期问题时间 提示 文章摘自林晓斌老师《MySQL实战45讲》&#xff0c;作为笔记而用&#xff0c;故有加一些自己的理解。在第[20]和[21]篇文章中&…

【Python】3. 基础语法(2) -- 语句篇

顺序语句 默认情况下, Python 的代码执行顺序是按照从上到下的顺序, 依次执行的. print("1") print("2") print("3")执行结果一定为 “123”, 而不会出现 “321” 或者 “132” 等. 这种按照顺序执行的代码, 我们称为 顺序语句. 这个顺序是很关…

2-web端管理界面使用rabbitmq

Web管理界面可以直接操作RabbitMQ&#xff0c;下面进行操作并记录步骤 1、添加交换器&#xff1a; Add a new exchange 中&#xff0c;Name是交换器名称&#xff0c;Type是交换器类型&#xff0c;有direce、fanout、heders、topic 4种。 这里先只填Name和选个类型&#xff0c;…