基于优化的规划方法 - 数值优化基础 Frenet和笛卡尔的转换 问题建模 实现基于QP的路径优化算法

news2024/11/25 14:49:42

本文讲解基于优化的规划算法,将从以下几个维度讲解:数值优化基础、Frenet与Cartesian的相互转换、问题建模OSQP

1 数值优化基础

1.1 优化的概念

一般优化问题公式:
在这里插入图片描述
f ( x ) f(x) f(x):目标/成本函数
x x x:决策变量
S S S:可行域 | 约束集
在这里插入图片描述
Example:
A点是最优值
在这里插入图片描述
全局最优和局部最优的概念:
在这里插入图片描述

1.2 无约束优化

在这里插入图片描述

当函数f可微,要成为局部最小值的必要条件是 ▽ f ( x ) = 0 \bigtriangledown f(x)=0 f(x)=0

用梯度方法解决无约束优化问题
(1)梯度下降法
(2)牛顿法
(3)高斯牛顿法
(4)Levenberg-Marquardt 法

通用框架
(1)迭代公式: x ( k + 1 ) = x ( k ) + α ( k ) △ x ( k ) x^{(k+1)}=x^{(k)}+\alpha^{(k)}\bigtriangleup x^{(k)} x(k+1)=x(k)+α(k)x(k),采取一步后, f ( x ( k + 1 ) ) < f ( x ( k ) ) f(x^{(k+1)})<f(x^{(k)}) f(x(k+1))<f(x(k))

△ x \bigtriangleup x x:下降方向
α \alpha α:步长

(2)重复迭代步骤,直到满足停止标准
在这里插入图片描述
步长通过线性搜索来决定
在这里插入图片描述
非精确线性搜索方法:回溯法
在这里插入图片描述

1.2.1用梯度方法解决无约束优化问题 - 梯度下降法:一阶方法,只用到一阶信息

在这里插入图片描述
(1)梯度下降法依赖于成本函数的值再负梯度方向上下降最快。(对于可微成本函数)
(2)使用迭代框架,从起点 x 0 x_0 x0开始,每个步骤都朝着负梯度的方向前进
在这里插入图片描述

1.2.2用梯度方法解决无约束优化问题 - 牛顿法:二阶方法,用到二阶信息

在这里插入图片描述
通过不断二次函数逼近原函数去找到局部最优
在这里插入图片描述
与梯度下降不一样的地方就是上图的第五行
用牛顿法要求函数二阶可导

1.2.3 用梯度方法解决无约束优化问题 - 高斯 - 牛顿法

高斯-牛顿法是一种优化算法,用于最小化成本函数,该函数写成平方和(最小二乘)
在这里插入图片描述
(1)考虑向量值函数的最小化
在这里插入图片描述
(2)对 F F F做一阶泰勒展开
在这里插入图片描述
(3)解决以下的问题得到 δ \delta δ
在这里插入图片描述
(4)Gauss-Newton 搜索方向 δ = − ( J T J ) − 1 J T F \delta =-(J^TJ)^{-1}J^TF δ=(JTJ)1JTF
在这里插入图片描述

1.2.4 用梯度方法解决无约束优化问题 - L-M法

(1)对于高斯-牛顿法,可能会发生 J T J J^TJ JTJ是奇异矩阵或者是近似程度不高的病态条件。此时下降方向的稳定性较差,导致算法发散
(2)LM法在梯度下降和高斯牛顿法之间通过参数 λ \lambda λ的影响进行调整
在这里插入图片描述
在这里插入图片描述

1.3 二次规划QP
凸函数和凸集

#pic_center

凸优化问题:

在这里插入图片描述
f 0 , f 1 , . . . , f m f_0,f_1,...,f_m f0,f1,...,fm都是凸函数

(1)可行域是凸的
(2)局部最优解就是全局最优解
(3)理论上和实践上,相对好解决

在这里插入图片描述
凸优化问题的层次结构:

LP:线性规划
QP:二次规划
SOCP:二阶锥规划
SDP:半正定规划
CP:锥规划

QP

在这里插入图片描述
P:半正定矩阵
二次规划的所有约束都是线性的
在这里插入图片描述
图中 P P P就是一个可行集,就是 G x ≤ h Gx≤h Gxh

QP求解器

OSQP
在这里插入图片描述
在这里插入图片描述
就是把 P , q , A , l , u P,q,A,l,u P,q,A,l,u矩阵全部定义好,调用求解器

1.4 非线性规划 NLP

在这里插入图片描述
目标函数和约束都是非凸的
求解NLP的方法:
(1)序列二次规划 SQP:把复杂问题拆分成一个一个小的QP问题,依次求解每个QP问题,通过外层迭代找到复杂问题的最优解
(2)内点法 IPM:先找到可行集的内点,从这个点开始迭代,迭代过程中不断去搜索可行域达到最终满足约束的最优解

非线性优化求解器 Ipopt

Ipopt(内点优化器):用于大规模非线性优化的开源软件包。可用于解决如下形式的一般非线性规划问题
在这里插入图片描述

2 Frenet与Cartesian的相互转换

路径优化在Frenet坐标系下
在这里插入图片描述

状态转换(Frenet | Cartesian)

在这里插入图片描述
在这里插入图片描述
Frenet坐标系
在这里插入图片描述
找投影点 ( x r , y r ) (x_r,y_r) (xr,yr)
利用点乘法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结:

在这里插入图片描述

https://github.com/ApolloAuto/apollo/blob/master/modules/common/math/cartesian_frenet_conversion.cc

在这里插入图片描述

3 问题建模

(1)定义优化变量
在这里插入图片描述
根据空间参数离散化路径函数 l ( s ) l(s) l(s)到某个分辨率 Δ s \Delta s Δs,并用这些离散点控制路径的形状
在这里插入图片描述
使用恒定的三阶导数连接连续的离散点
在这里插入图片描述
(2)最优性建模
在这里插入图片描述
1 无碰撞:与环境中的障碍物不相撞
2 最小横向偏差:在不影响安全性的情况下尽可能靠近车道中心线
3 最小的横向运动:横向运动尽可能平缓
4 最大障碍物距离:保持对环境中障碍物的距离

在这里插入图片描述
(3)约束的设计
1、连续性约束
在这里插入图片描述
2、初始状态约束
在这里插入图片描述
3、状态约束
在这里插入图片描述
4、最大曲率约束
在这里插入图片描述
问题建模
在这里插入图片描述
Use OSQP
在这里插入图片描述
给定四个点 P 1 、 P 2 、 P 3 、 P 4 P_1、P_2、P_3、P_4 P1P2P3P4
1、定义优化变量:
x = [ l 1 l 2 l 3 l 4 l 1 ′ l 2 ′ l 3 ′ l 4 ′ l 1 ′ ′ l 2 ′ ′ l 3 ′ ′ l 4 ′ ′ ] x=\begin{bmatrix} l_1\\ l_2\\ l_3\\ l_4\\ l_1^{'}\\ l_2^{'}\\ l_3^{'}\\ l_4^{'}\\ l_1^{''}\\ l_2^{''}\\ l_3^{''}\\ l_4^{''} \end{bmatrix} x= l1l2l3l4l1l2l3l4l1′′l2′′l3′′l4′′
2、Cost function设计
在这里插入图片描述
在这里插入图片描述
3、约束的设计
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Python圣诞树代码

Python圣诞树代码 # 小黄 2023/12/25import turtle as t # as就是取个别名&#xff0c;后续调用的t都是turtle from turtle import * import random as rn 100.0speed(20) # 定义速度 pensize(5) # 画笔宽度 screensize(800, 800, bgblack) # 定义背景颜色&#xff0c;可…

共建鸿蒙世界,信息流合作突破500家;程序员能入局吗?

12月28日&#xff0c;华为信息流在上海举办了创作者系列沙龙。HarmonyOS是面向万物互联全场景时代的智能终端操作系统&#xff0c;鸿蒙正致力于打造“一切皆服务&#xff0c;万物可分享”自主创新的移动应用生态。到目前为止&#xff0c;鸿蒙生态的设备数量已经超过7亿&#xf…

Spire.Office for Java 8.12.0

Spire.Office for Java 8.12.0 发布。在该版本中&#xff0c;Spire.XLS for Java支持检索使用WPS工具添加的嵌入图像&#xff1b;Spire.PDF for Java 增强了从 PDF 到 SVG、PDF/A1B 和 PDF/A2A 的转换。此外&#xff0c;该版本还修复了许多已知问题。下面列出了更多详细信息。 …

Modbus转Profinet,不会编程也能用!轻松快上手!

Modbus转Profinet是一种用于工业自动化领域的通信协议转换器&#xff0c;可以将Modbus协议转换为Profinet协议&#xff0c;实现设备之间的数据交换与通信。这个工具的使用非常简单&#xff0c;即使没有编程经验的人也可以轻松上手。即使不会编程的人也可以轻松快速上手使用Modb…

全球知名数字资产平台LBank 与 The Sandbox Korea 达成战略合作

全球知名数字资产平台LBank&#xff0c;携手韩国元宇宙创新者The Sandbox Korea&#xff0c;共同开启了一场数字与虚拟世界的奇妙之旅。自2023年11月22日起&#xff0c;这两大巨头正式结成战略联盟&#xff0c;以提升用户体验为核心目标&#xff0c;开启了全新的合作篇章。 在…

51系列--数码管显示的4X4矩阵键盘设计

本文介绍基于51单片机的4X4矩阵键盘数码管显示设计&#xff08;完整Proteus仿真源文件及C代码见文末链接&#xff09; 一、系统及功能介绍 本设计主控芯片选用51单片机&#xff0c;主要实现矩阵键盘对应按键键值在数码管上显示出来&#xff0c;矩阵键盘是4X4共计16位按键&…

Apipost一键压测参数化功能详解

最近更新中Apipost对UI页面进行了一些调整&#xff0c;另外一键压测功能支持参数化&#xff01;本篇文章将详细介绍这些改动&#xff01; API调试页面的细节改动 在请求区填入请求参数或脚本时会有相应的标识 如在Query中填入多个参数时上方会展示数量 在预、后执行脚本中写…

机器人中的数值优化之罚函数法

欢迎大家关注我的B站&#xff1a; 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 本文ppt来自深蓝学院《机器人中的数值优化》 目录 1 L2-Penalty Method 1.1等式约束 1.2不等式约束 2 L1-Penalty Method 3 Barrier Method …

并发编程大杀器,京东多线程编排工具asyncTool

一、简介 并发编程大杀器&#xff0c;京东多线程编排工具asyncTool&#xff0c;可以解决任意的多线程并行、串行、阻塞、依赖、回调的并行框架&#xff0c;可以任意组合各线程的执行顺序&#xff0c;带全链路执行结果回调。多线程编排一站式解决方案。 二、特点 多线程编排&am…

数据结构学习 Leetcode72 编辑距离

关键词&#xff1a;动态规划 最长公共子序列 题目&#xff1a; 思路&#xff1a; 这题我虽然做出来了但是还是有点迷糊。首先&#xff0c;这道题一定是和最长公共子序列相似的。 所以往最长公共子序列方向思考&#xff0c;考虑的它的状态和转移方程以及边界。 状态和转移方…

PAT乙级 1025 反转链表

给定一个常数 K 以及一个单链表 L&#xff0c;请编写程序将 L 中每 K 个结点反转。例如&#xff1a;给定 L 为 1→2→3→4→5→6&#xff0c;K 为 3&#xff0c;则输出应该为 3→2→1→6→5→4&#xff1b;如果 K 为 4&#xff0c;则输出应该为 4→3→2→1→5→6&#xff0c;即…

web自动化上传文件

1&#xff0c;web 自动化文件上传不要太简单 熟悉 web 自动化测试的大佬应该都懂&#xff0c;当采用 js 调用原生控件进行文件上传的时候&#xff0c;最常用的是使用 pywin32 等系统交互库。 当看到 pywin32 那丑陋的 api 封装只能爆粗口。就为了输入一个文件地址&#xff0c;…

微生信 -- 0代码科研绘图,助力发高分文章

1&#xff0c;粘贴数据&#xff0c;一键出图 www.bioinformatics.com.cn微生信云平台以220多款在线绘图、分析模块为基础&#xff0c;致力于0代码在线分析数据&#xff0c;0代码在线绘制科研图片。让不会编写代码的科研工作者&#xff0c;贴贴数据&#xff0c;点点鼠标就能够进…

大模型中的LM-BFF

LM-BFF paper: 2020.12 Making Pre-trained Language Models Better Few-shot Learners Prompt: 完形填空自动搜索prompt Task: Text Classification Model: Bert or Roberta Take Away: 把人工构建prompt模板和标签词优化为自动搜索 LM-BFF是陈丹琦团队在20年底提出的针对…

基于yolov2深度学习网络的血细胞检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1YOLOv2算法原理 4.2 YOLOv2网络结构 4.3 血细胞检测算法实现 数据集准备 数据预处理 网络训练 模型评估与优化 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MAT…

Unity中Shader裁剪空间推导(透视相机到裁剪空间的转化矩阵)

文章目录 前言一、简单看一下 观察空间—>裁剪空间—>屏幕空间 的转化1、观察空间&#xff08;右手坐标系、透视相机&#xff09;2、裁剪空间&#xff08;左手坐标系、且转化为了齐次坐标&#xff09;3、屏幕空间&#xff08;把裁剪坐标归一化设置&#xff09;4、从观察空…

Java学习——设计模式——结构型模式1

文章目录 结构型模式代理模式适配器模式 结构型模式 结构型模式主要涉及如何组合各种对象以便获得更好、更灵活的结构。虽然面向对象的继承机制提供了最基本的子类扩展父类的功能&#xff0c;但结构型模式不仅仅简单地使用继承&#xff0c;而更多地通过组合与运行期的动态组合来…

开关量信号隔离器在水泥厂的应用

安科瑞 崔丽洁 摘要&#xff1a;在水泥厂生产过程中&#xff0c;需要皮带与提升机进行运输物料&#xff0c;回转下料器进行投放物料。其中涉及大量电动机相关的机械运动&#xff0c;对这些机械运动状态进行检测&#xff0c;可以及时发现问题避免造成事故。针对机械位置检测&…

前端图片适配不同屏幕方案

预备知识&#xff1a; 设备独立像素,以下图的iphone12 Pro为例&#xff0c;390*844表示的就是设备独立像素&#xff08;DIP&#xff09;,也可以理解为CSS像素 物理像素&#xff08;设备像素&#xff09;&#xff0c;就是屏幕的分辨率&#xff0c;显示屏就是由一个个物理像素…

基于EMD的滚动轴承故障诊断算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1EMD的基本原理 固有模态函数&#xff08;IMF&#xff09; 筛分过程 4.2 基于EMD的滚动轴承故障诊断算法 信号预处理 EMD分解 特征提取 故障诊断 5.算法完整程序工程 1.算法运行效…