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

一、解耦合策略

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.mzph.cn/news/726429.shtml

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

相关文章

【C语言】linux内核napi_gro_receive和netif_napi_add

napi_gro_receive 一、注释 // napi_gro_receive是网络设备接口的一个函数,它被NAPI(New API)网络轮询机制使用,用于接收和处理接收到的数据包。 // 这个函数通过通用接收分组(GRO,Generic Receive Offlo…

Ubuntu安装conda以后,给jupyter安装C++内核

前言 大家都知道,jupyter notebook 可以支持python环境,可以在不断点调试的情况下,打印出当前结果,如果代码错了也不影响前面的内容。于是我就想有没有C环境的,结果还真有。 参考文章: 【分享】Ubuntu安装…

【金三银四的季节看下Java ORM的走向和性能对比】总结

写在最后 经过将近一周时间的框架收集、学习、实验、编码、测试市面上常见的ORM框架,过程中拜读了很多作者的博文、样例,学习很多收获很多。 重新梳理下整理的框架:mybatis-plus、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp、jpa、…

什么是工业交换机?

如今,工业交换机在能源、环保、交通、智慧城市监控等各个行业都发挥着至关重要的作用,其需求也日益增长。本文将全面介绍工业交换机,帮助你进一步加深了解。 什么是工业交换机? 工业交换机,又称工业以太网交换机&…

《探索自动驾驶技术的前景与挑战》

自动驾驶技术,作为现代科技的一大突破,正逐渐改变着我们的交通方式、生活方式以及整个社会结构。本文将围绕自动驾驶技术的现状、优势、局限性以及未来发展趋势展开探讨。 自动驾驶技术的现状概述 自动驾驶技术作为当今科技领域的一项前沿技术,已经取得了巨大的进展并在不同…

安卓开发之资源概述、优劣分析与优化方案

摘要 随着智能手机的普及,Android操作系统已成为全球最广泛使用的移动平台之一。在Android应用开发中,资源管理是构建高效、响应迅速且用户友好的应用程序的关键要素。 本文主要探讨了安卓应用程序开发过程中的资源管理机制,包括其基本结构、…

一键清除JavaScript代码中的注释:使用正则表达式实现

这个正则表达式可以有效地匹配 JavaScript 代码中的各种注释&#xff0c;并且跳过了以 http: 或 https: 开头的链接。 /\/\*[\s\S]*?\*\/|\/\/[^\n]*|<!--[\s\S]*?-->|(?<!http:|https:)\/\/[^\n]*/gvscode 实战&#xff0c;ctrlF 调出查找替换工具&#xff0c;点…

如何把网页调用变为代码调用

1.背景 最近有一个需求&#xff0c;猜测一段十六进制流的校验方式&#xff0c;挨个尝试非常耗时&#xff0c;需要写代码&#xff0c;调用网页上的功能。 2.解决方案 可以使用Python的 requests 库来发起HTTP请求&#xff0c;并通过POST请求将数据发送给服务器进行计算CRC校验和…

【备战蓝桥杯系列】Java组国二选手笔记一:蓝桥杯中的常用语法特性

蓝桥杯Java国二选手笔记一&#xff1a;蓝桥杯中的常用语法特性 前言 参加了好几次蓝桥杯了&#xff0c;C组参加了&#xff0c;Java也参加过&#xff0c;也会用python刷算法。下面给出常用的Java语法特性在蓝桥杯中的使用&#xff0c;以及常见的需要注意的Java语法规范。有准备…

【MySQL】-知识点整理

1、存储引擎 -- 查询数据库支持的存储引擎 show engines; -- 查询当前数据库使用的存储引擎 show variables like %storage_engines%; 主要的存储引擎说明&#xff1a; 1&#xff09;MyISAM&#xff1a;无外键、表锁、所有索引都是非聚簇索引、无事务、记录表总条数、删除表…

基于el-tree实现懒加载穿梭条

一、关键代码 <template><div><!-- 左侧待选列表 --><div class"left-box"><p>待选列表</p><el-input placeholder"输入关键词过滤" v-model"leftFilterText" clearable/><el-treeref"tree…

便捷在线导入:完整Axure元件库集合,让你的设计更高效!

Axure元件库包含基本的工具组件&#xff0c;可以使原型绘制节省大量的重复工作&#xff0c;保持整个设计页面的一致性和标准化&#xff0c;同时显得专业。Axure元件库就像我们日常生活中的门把手、自行车踏板和桌子上的螺丝钉&#xff0c;需要组装才能使用。作为一名成熟的产品…

【Web - 框架 - Vue】随笔 - Vue的简单使用(02) - 快速上手

【Web - 框架 - Vue】随笔 - Vue的简单使用(02) - 快速上手 Vue模板代码 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Vue模板</title> </head> <body> <div id"…

redis 性能优化二

前言 性能优化的第二篇文章&#xff0c;将重点讲一下Redis 的响应延迟&#xff0c;响应延迟如何对redis 进行优化。这个延迟不是说一个命令或者几个命令变慢了&#xff0c;延迟了几秒&#xff0c;就说Redis 变慢了。在不同的软硬件环境下&#xff0c;Redis 本身的绝对性能并不…

基于STM32开路清障车控制系统设计

目 录 摘 要 I Abstract II 引 言 1 1总体方案论证与设计 3 1.1设计方案 3 1.2主控模块的选型和论证 3 2系统硬件电路设计 5 2.1主控模块设计 5 2.1.1 STM32单片机概述 5 2.1.2 STM32单片机最小系统电路 5 2.2 MCU主要实现功能 6 2.3火焰传感器 7 2.4超声波模块 8 2.5驱动模块…

Docker-自定义镜像

目录 1 前言 2 构建java应用的步骤及镜像结构图 2.1 构建步骤 2.2 镜像结构图 3 Dockerfile常用指令 4 Dockerfile的内容举例 4.1 一般形式 4.2 一般形式的优化 5 构建镜像 5.1 指令 5.2 实操 5.2.1 加载jdk镜像(基础镜像) 5.2.2 构建我们的镜像 5.2.3 使用我们的…

SpringCloud微服务-RabbitMQ快速入门

文章目录 RabbitMQ快速入门1、什么是MQ&#xff1f;2、RabbitMQ概述3、RabbitMQ的结构和概念4、常见消息模型5、HelloWorld RabbitMQ快速入门 1、什么是MQ&#xff1f; MQ &#xff08;MessageQueue&#xff09;&#xff0c;中文是消息队列&#xff0c;字面来看就是存放消息的…

Linux nmcli命令使用教程(nmcli指令)

文章目录 先区分两个概念&#xff1a;网络设备和网络连接网络设备网络连接网络连接的UUID nmcli可以为一个网络设备创建多个网络连接&#xff0c;但同一时刻只有一个能生效 Mastering Network Management with nmcli in Linux&#xff08;掌握Linux中使用nmcli进行网络管理&…

掌握 Vue3、Vite 和 SCSS 实现一键换肤的魔法步骤

前言 一个网站的换肤效果算是一个比较常见的功能&#xff0c;尤其是在后台管理系统中&#xff0c;我们几乎都能看到他的身影&#xff0c;这里给大家提供一个实现思路。 搭建项目 vitevue3搭建项目这里就不演示了&#xff0c;vite官网里面讲得很清楚。 注&#xff1a;这里使…

【Java项目介绍和界面搭建】拼图小游戏——作弊码、查看完整图片

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …