自动驾驶---Motion Planning之轨迹Path优化

1 背景

        在之前的几篇文章中,不管是通过构建SL图《自动驾驶---Motion Planning之Path Boundary》,ST图《自动驾驶---Motion Planning之Speed Boundary》,又或者是构建SLT图《自动驾驶---Motion Planning之构建SLT Driving Corridor》,最终我们都是为了得到boundary的信息。

        构造优化问题求解的前提:首先确定问题的代价函数,有初值,有边界(约束),然后进行求解。笔者会先阐述Apollo中轨迹横纵向优化的问题,接下来会在后面的博客中继续讲解STSC中的轨迹优化问题。

2 轨迹横向优化

        总体流程图以车道保持场景为例子进行说明。task的主要功能位于Process()函数中。规划模块的运动总体流程图如下:

82a3236d32ca47acafb65bb3bb7696d6.png

         首先有一点值得注意:在Apollo中,横纵向的优化求解是解耦开的,因此在横纵向分别需要求解一次,最终得到得到横纵向的轨迹信息(s,s',s'',l,l',l'')------这里的 eq?l%27 是 eq?l 关于 eq?s 的一阶导数, eq?s%27 是 eq?s 关于 eq?t 的一阶导数

        整体轨迹优化器的代码位于/apollo/modules/planning/tasks/optimizers。

d451c6f850db404eb37cd7dbb5272ee6.png

        见到下图,看过笔者之前的博客《自动驾驶---Motion Planning之参考线Path平滑》就非常熟悉了,之前在参考线平滑中详细讲解了这部分的内容。

030457801c22443f9511740e8bd483ec.png

        但是这次与参考线平滑不同的是:代价函数的定义。本篇博客主要讲解横向Path的优化过程,在下一篇为读者讲解纵向Speed的优化过程。

二次规划问题的形式:

eq?min%28%5Ccfrac%7B1%7D%7B2%7Dx%5ETHx+g%5ETx%29%20%5C%5C%20%5C%5C%20s.t.%20a_i%5ETx%20%3D%20b_i%2C%20i%5Cin%7BE%7D%20%5C%5C%20h_j%5ETx%5Cle%7Bt_j%7D%2C%20j%5Cin%7BI%7D

        其中eq?H是由二阶导构成的Hessian矩阵,eq?g%5ET是由梯度构成的Jacobi矩阵;然后包括m个等式约束集合和n个不等约束集合。

        Path优化问题的自变量为:eq?x%3D%5Bl_0%2Cl_1...l_%7Bn-1%7D%2Cl%27_0%2Cl%27_1%2Cl%27_2...l%27_%7Bn-1%7D%2Cl%27%27_0%2Cl%27%27_1...l%27%27_%7Bn-1%7D%5D

2.1.1 优化目标

        优化目标中主要考虑了:1)横向位移 ;2)横向速度;3)横向加速度;4)横向Jerk;5)障碍物的距离。

d2140fb606d643a48fbdad637bddbe08.png

 (注意:论文这里的代价函数与Apollo源码中有些差异,源码中没有考虑障碍物,而是增加了更接近参考点的代价以及终点的代价)

 %5CDelta%20s%29%5E2+w_%7Blend%7D%28l_%7Bn-1%7D-%20l_%7Bendl%7D%29%5C%5C%5C%5C+w_%7Bl%27end%7D%28l%27_%7Bn-1%7D-l%27_%7Bendl%7D%29+w_%7Bl%27%27end%7D%28l%27%27_%7Bn-1%7D-l%27%27_%7Bendl%7D%29

        这里提到了一个概念:分段加加速度。为了有效地制定优化问题并在实践中评估约束满意度,论文中根据空间参数 eq?s 将路径函数 eq?l%28s%29 离散到一定的分辨率 eq?%5CDelta%20s,并使用这些离散点来控制路径的形状,并近似地评估约束满意度。关键思想是将一维函数离散到二阶导数,并使用常数的三阶导数项来“连接”连续的离散点。位置变量的三阶

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

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

相关文章

OpenCV实战:智能人脸识别打卡系统

1、介绍 目前,很多公司对员工的考勤同时通过打卡机或者钉钉之类的打卡软件,传统的员工打卡方式有很多,例如点名、签字、刷卡、指纹等等 然而随机机器视觉、计算机视觉的不断发展,算力的不断提升,人工智能对人脸检测的…

如何用联合(共用体)union验证系统大小端

一:思路 由联合体的特点,可知上图,char c 和 int i 共用四个字节,假设是小端,则由左到右是低地址到高地址,四个字节的内容如图所示01 00 00 00 代码展示: 如果第一个字节是1,则证明…

python练习01

1.单击 import win32com.client import time import pyautogui import random#随机数 sj random.randint(1, 3)time.sleep(sj) dmwin32com.client.Dispatch(dm.dmsoft)#调用大漠插件,获取大漠对象 print(dm.ver()) #显示版本3.1233表示调用成功# 设置大漠插件的路径 dm.SetP…

洛谷入门——P2669 [NOIP2015 普及组] 金币

[NOIP2015 普及组] 金币 题目背景 NOIP2015 普及组 T1 题目描述 国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天&…

<Linux> 线程池

目录 前言: 一、线程池概念 (一)池化技术 (二)优点 (三)应用场景 二、线程池的实现 (一)线程池_V1(朴素版) (二)线…

Nginx发布之后可以使用IP访问,不能使用localhost访问, Nginx发布之后可以使用localhost访问,不能使用IP访问,

如标题所说 Nginx发布之后可以使用IP访问,不能使用localhost访问, Nginx发布之后可以使用localhost访问,不能使用IP访问, 修改配置文件也没有用 清除浏览器缓存数据

配置DHCPV6

组网需求 如果大量的企业用户IPv6地址都是手动配置,那么网络管理员工作量大,而且可管理性很差。管理员希望实现公司用户IPv6地址和网络配置参数的自动获取,便于统一管理,实现IPv6的层次布局。 图1 DHCPv6服务器组网图 配置思路 …

自动化改变金融科技文档生命周期

金融科技公司可能处于软件开发的最前沿,但即使是最先进的系统也必须能够支持金融服务领域采用的一系列文档密集型程序。因此,绝大多数金融科技企业都使用数字文档管理解决方案,无论是内部构建的还是由第三方供应商开发的。金融科技公司可以通…

JavaScript 权威指南第七版(GPT 重译)(七)

第十六章:用 Node 进行服务器端 JavaScript Node 是 JavaScript 与底层操作系统的绑定,使得编写 JavaScript 程序读写文件、执行子进程和在网络上通信成为可能。这使得 Node 作为以下用途变得有用: 现代替代 shell 脚本的方式,不…

UI自动化测试面试题小结

列举web自动化中常见的元素定位方式? id:根据id来获取元素,返回单个元素,id值一般是唯一的; name:根据元素的name属性定位; tagName:根据元素的标签名定位; className…

深入理解XML技术(看这一篇就够了)

目录: XMLXML的功能XML基本语法XML组成部分约束DTD约束Schema约束 Jsoup解析器DOMSAXXML常见解析器DOM4JJsoupXPath解析 XML 概念 XML(Extensible Markup Language):可扩展标记语言 可扩展:标签都是自定义的。 发展历…

arkUI自定义组件、状态组件管理、任务进度Demo

arkUI自定义组件 公共头部文件 Component export struct Header{private title: ResourceStrbuild(){Row() {Image($r(app.media.ic_public_back)).width(30).height(30)Text(this.title).fontSize(30).fontWeight(FontWeight.Bold)Blank()Image($r(app.media.ic_public_emai…

[ C++ ] STL---仿函数与priority_queue

目录 仿函数 示例一: 示例二 : 常见的仿函数 priority_queue简介 priority_queue的常用接口 priority_queue的模拟实现 基础接口 push() 堆的向上调整算法 堆的插入 pop() 堆的向下调整算法 堆的删除 priority_queue最终实现 仿函数 仿函数&#xff…

MusicHiFi: Fast High-Fidelity Stereo Vocoding

MusicHiFi: Fast High-Fidelity Stereo Vocoding 相关链接:arxiv github 关键字:音乐生成、高保真立体声、立体声编解码器、生成对抗网络、频带扩展 摘要 MusicHiFi是一种高效的高保真立体声编解码器,它通过将低分辨率的mel频谱图转换为音频…

《桥接模式(极简c++)》

本文章属于专栏《设计模式(极简c版)》 继续上一篇《原型模式(极简c)》。本章简要说明桥接模式。本文分为模式说明、本质思想、实践建议、代码示例四个部分。 模式说明 方案: 将抽象部分与它的实现部分分离&#xff0c…

【Vue】Vue集成Element-UI框架

🙋‍ 一日之际在于晨 ⭐本期内容:Vue集成Element-UI框架 🏆系列专栏:从0开始的Vue之旅 文章目录 Element-UI简介安装Element-UInpm安装CDN安装 引入Element-UI测试是否引入成功总结 Element-UI简介 Element-UI官网:点…

极大提高工作效率的 Linux 命令

作为一名软件开发人员,掌握 Linux 命令是必不可少的技能。即使你使用 Windows 或 macOS,你总会遇到需要使用 Linux 命令的场合。例如,大多数 Docker 镜像都基于 Linux 系统。要进行 DevOps 工作,你需要熟悉Linux,至少要…

C语言例3-32:使用位移位运算符的例子

设 unsigned short a 0101 ;short b -6 ; a 为无符号八进制整数,对应的二进制数为0000 0000 0100 0001b 为有符号十进制整数,对应的二进制数为1111 1111 1111 1010 !!! 计算机系统中整型数一律采用补码表示&#…

vue-quill-editor和vue-ueditor-wrap富文本编辑器应用

目录 一、vue-quill-editor 1.1、界面展示 1.2、代码介绍 1.2.1、安装 1.2.2、配置 1.2.3、代码应用 1.2.4、提取内容 二、vue-ueditor-wrap 2.1、界面展示 2.2、代码介绍 2.2.1、安装 2.2.2、配置 2.2.3、代码应用 一、vue-quill-editor 1.1、界面展示 文本输出…

Vue响应式原理全解析

前言 大家好,我是程序员蒿里行。浅浅记录一下面试中的高频问题,请你谈一下Vue响应式原理。 必备前置知识,​​Vue2​​官方文档中​​深入响应式原理​​​及​​Vue3​​官方文档中​​深入响应式系统​​。 什么是响应式 响应式本质是当…