规划决策篇:2.5 凸空间内二次规划求路径

514 阅读1分钟

问题描述

在2.4的文章中我们已经求出了一个可行的凸空间

convexS={(s1,l1min,l1max),(s2,l2min,l2max),...(sn,lnmin,lnmax)}convexS=\{(s_1,l^{min}_{1},l^{max}_{1}),(s_2,l^{min}_{2},l^{max}_{2}),...(s_n,l^{min}_{n},l^{max}_{n})\}

我们需要在这个凸空间内求解一条满足车辆动力学特性、边界约束的轨迹pathpath

path={(s1,l1),((s2,l2),...((sn,ln)}path=\{(s_1,l_{1}),((s_2,l_{2}),...((s_n,l_{n})\}

[s1,s2,...,sn][s_1,s_2,...,s_n]已知,实际上我们的决策变量为x\pmb{x}

x=[l1,l1,l1,l2,l2,l2,...,ln,ln,ln]\pmb{x}=[l_1,l^{'}_1,l^{''}_1,l_2,l^{'}_2,l^{''}_2,...,l_n,l^{'}_n,l^{''}_n]

约束条件

车辆动力学约束

这个约束的推导使用分段加加速度法,即认为在slsl空间下,车辆的合理轨迹中:相邻的两个轨迹点之间的三阶导数为常数,即jerkjerk为常数,4阶等更高阶的导数为0。

image.png

我们使用泰勒展开:

image.png

相邻点之间存在一次约束计算,共n1n-1次约束计算:

image.png

凸空间边界约束

边界约束要考虑车辆的形状,如果只考虑车辆中心点在凸空间内,无法保证整车均在凸空间范围内。

image.png

我们考虑车辆的形状为矩形

image.png

车辆中心的坐标为(si,li)(s_i,l_i),考虑四个角点P1,P2,P3,P4P_1,P_2,P_3,P_4ll坐标为liP1,liP2,liP3,liP4l^{P_1}_i,l^{P_2}_i,l^{P_3}_i,l^{P_4}_i,依据的简单的几何关系我们可以得到下式(由于三角函数值是非线性的,我们做了偏于安全的近似处理)

image.png

P1,P2,P3,P4P_1,P_2,P_3,P_4所处的ss坐标附近的凸空间边界最大ll值分别为:lbuip1,lbuip2,lbuip3,lbuip4lbu^{p_1}_i,lbu^{p_2}_i,lbu^{p_3}_i,lbu^{p_4}_i,最小ll值分别为:lblip1,lblip2,lblip3,lblip4lbl^{p_1}_i,lbl^{p_2}_i,lbl^{p_3}_i,lbl^{p_4}_i,四个角点分别满足凸空间边界限制: image.png

大于等于的不等式约束改为小于等于约束: image.png

写为决策变量表示的矩阵形式: image.png

每个轨迹点处有一个边界约束,共nn个约束,使用矩阵形式表示: image.png

约束总结

因此我们的约束条件共有两个:

一个等式约束:

A1x=0\pmb{A_{1}}·\pmb{x}=\pmb{0}

一个不等式约束:

A2x<=bbou\pmb{A_{2}}·\pmb{x}<=\pmb{b_{bou}}

目标函数

参考线代价

轨迹点的lil_i坐标代表了点到参考线的距离,所以参考线代价项:

costref=i=1nli2cost_{ref}=\sum_{i=1}^nl^{2}_{i}

image.png 所以矩阵形式为:

costref=xTArefxcost_{ref}=\pmb{x^{T}}·\pmb{A_{ref}}·\pmb{x}

平滑代价

平滑代价由一阶导数项、二阶导数项、三阶导数项构成: image.png

一阶导数项、二阶导数项使用矩阵形式表达: image.png

三阶导数项使用矩阵形式表达:

image.png

所以矩阵形式为:

costsmooth=xTAs1x+xTAs2x+xTB1xcost_{smooth}=\pmb{x^{T}}·\pmb{A_{s1}}·\pmb{x}+\pmb{x^{T}}·\pmb{A_{s2}}·\pmb{x}+\pmb{x^{T}}·\pmb{B_1}·\pmb{x}

凸空间中心代价

我们希望车辆的轨迹不要离凸空间的中心线太远,所以设置了凸空间中心代价:

costcen=i=1n(lilimax+limin2)2cost_{cen}=\sum_{i=1}^n(l_i-\frac{l^{max}_i+l^{min}_i}{2})^2

image.png

image.png

目标函数总结

由于二次规划问题的一般形式为:

min:12xTHx+fTxst:Ax<=b,Aeqx=beq,lb<x<ub其中:x,b,beq,lb,ubRn,HRnnmin: \frac{1}{2}\pmb{x^{T}}·\pmb{H}·\pmb{x}+\pmb{f^{T}}·\pmb{x}\\ st: \pmb{A}·\pmb{x}<=\pmb{b},\pmb{Aeq}·\pmb{x}=\pmb{beq},\pmb{lb}<\pmb{x}<\pmb{ub}\\ 其中:\pmb{x},\pmb{b},\pmb{beq},\pmb{lb},\pmb{ub}∈R^{n},\pmb{H}∈R^{n*n}

在本文描述的问题中,参考线代价、平滑代价、凸空间中心代价构成了模型的目标函数:

image.png

HHff的计算如上图所示,约束项矩阵、向量:

Aeq=A1beq=0A=A2b=bbou\pmb{Aeq}=\pmb{A_1}\\ \pmb{beq}=\pmb{0}\\ \pmb{A}=\pmb{A_2}\\ \pmb{b}=\pmb{b_{bou}}\\

二次规划问题求解

直接使用matlab的二次规划求解函数或者python的二次规划求解函数即可。

代码实现

还没写完,写完更新。

参考来源

space.bilibili.com/287989852