【轨迹规划论文整理(1)】UAV轨迹规划的开山之作Minimum Snap Trajectory

2024-06-21 02:52

本文主要是介绍【轨迹规划论文整理(1)】UAV轨迹规划的开山之作Minimum Snap Trajectory,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【轨迹规划论文整理(1)】UAV轨迹规划的开山之作Minimum Snap Trajectory Generation and Control for Quadrotors

本系列主要是对精读的一些关于无人机、无人车的轨迹搜索论文的整理,包括了论文所拓展的其他一些算法的改进思路。
这是本系列的第一篇文章,也是UAV轨迹规划的开山之作,是所有学习无人机方向的需要精读的第一篇文章,两个作者来自于宾夕法尼亚大学的GRASP Lab,是全球顶尖的机器人团队,也是UAV方向研究的开山鼻祖之一。

Mellinger D , Kumar V .Minimum snap trajectory generation and control for quadrotors[J].IEEE, 2011.DOI:10.1109/ICRA.2011.5980409.

1. Introduction

1.1 轨迹规划的定义

在机器人导航过程中,如何控制机器人从A点移动到B点,通常称之为运动规划。运动规划一般分为两步:

  • 路径搜索:在地图(包括给栅格、八叉树、点云地图等等) 搜索一条从A到B点的路径,这条路径通常是由一系列离散的空间点(waypoint)组成。该部分称之为前端。
  • 轨迹规划:由于路径点可能比较稀疏、而且不平滑,为了更好地控制机器人运动,需要将稀疏的路径点变成平滑的曲线或稠密的轨迹点,即轨迹。这部分称之为后端。

本文的主要工作就是一种无人机轨迹生成的方法,额外还包括了建模和控制器的设计。

2. Model

在这里插入图片描述

图中是本文定义的坐标关系,利用Z-X-Y欧拉角定义横滚角、俯仰角、偏航角(roll,pitch,yaw)作为本地坐标系统。从B至W的旋转矩阵通过 R B W = R C W R B C R_B^W=R_C^WR_B^C RBW=RCWRBC来表示, R C W R_C^W RCW代表偏航角旋转至中间坐标系(Z轴方向与世界坐标Z轴方向一致)。UAV机体在世界坐标系的角速度计算如下,p、q、r分量在记载坐标系中的分量为:

ω B W = p X B + q Y B + r Z B \omega_B^W=pX_B+qY_B+rZ_B ωBW=pXB+qYB+rZB

每个电机有角速度 ω i \omega_i ωi,产生一个力 F i F_i Fi M i M_i Mi,关系为:

F i = k F ω i 2 M i = k M ω i 2 F_i=k_F\omega_i^2 \\ M_i=k_M\omega_i^2 Fi=kFωi2Mi=kMωi2

控制输入记为u, u 1 u_1 u1为净升力, u 2 、 u 3 、 u 4 u_2、u_3、u_4 u2u3u4是机体力矩可以通过电机转速表示为(L是电机旋转中心到电机中心的距离)

u = [ k F k F k F k F 0 k F L 0 − k F L − k F L 0 k F L 0 k M − k M k M − k M ] [ ω 1 2 ω 2 2 ω 3 2 ω 4 2 ] \mathbf{u}=\begin{bmatrix}k_F&k_F&k_F&k_F\\0&k_FL&0&-k_FL\\-k_FL&0&k_FL&0\\k_M&-k_M&k_M&-k_M\end{bmatrix}\begin{bmatrix}\omega_1^2\\\omega_2^2\\\omega_3^2\\\omega_4^2\end{bmatrix} u= kF0kFLkMkFkFL0kMkF0kFLkMkFkFL0kM ω12ω22ω32ω42

机体的线加速度,其中系统受力为 − z W -z_W zW方向上的重力和四个电机的合力为 z B z_B zB方向上的 u 1 u_1 u1

m r ¨ = − m g z W + u 1 z B \begin{aligned}m\ddot{\mathbf{r}}=-mg\mathbf{z}_W+u_1\mathbf{z}_B\end{aligned} mr¨=mgzW+u1zB

用欧拉公式计算角速度如下,其中I是惯性矩矩阵:

ω ˙ B W = I − 1 [ − ω B W × I ω B W + [ u 2 u 3 u 4 ] ] \left.\dot{\omega}_{\mathcal{BW}}=\mathcal{I}^{-1}\left[-\omega_{\mathcal{BW}}\times\mathcal{I}\omega_{\mathcal{BW}}+\left[\begin{array}{c}u_2\\u_3\\u_4\end{array}\right.\right]\right] ω˙BW=I1 ωBW×IωBW+ u2u3u4

UAV系统的状态向量由质心的位置和速度、方向和角速度给出:

X = [ x , y , z , ϕ , θ , ψ , x ˙ , y ˙ , z ˙ , p , q , r ] X=[x,y,z,\phi,\theta,\psi,\dot{x},\dot{y},\dot{z},p,q,r] X=[x,y,z,ϕ,θ,ψ,x˙,y˙,z˙,p,q,r]

3. 微分平坦性

UAV的平坦输出可以写作:

σ = [ x , y , z , ψ ] T \sigma=[x,y,z,\psi]^T σ=[x,y,z,ψ]T

其中 r = [ x , y , z ] T r=[x,y,z]^T r=[x,y,z]T是世界坐标系中质心的坐标,而ψ是偏航角,这里定义轨迹 σ ( t ) \sigma(t) σ(t)为平坦输出空间中的平滑曲线:

σ ( t ) : [ t 0 , t m ] → R 3 × S O ( 2 ) \sigma(t):[t_0,t_m]\to\R^3\times SO(2) σ(t):[t0,tm]R3×SO(2)

根据微分平坦性,系统的状态和控制输入可以用 σ \sigma σ及其导数表示,具体推导参考博客。

4. 控制

本文设计了一个控制器去跟踪特定轨迹 σ T ( t ) = [ r T ( t ) T , ψ T ( t ) ] T \sigma_T(t)=[r_T(t)^T,\psi_T(t)]^T σT(t)=[rT(t)T,ψT(t)]T。首先定义位置和速度误差为

e p = r − r T , e v = r ˙ − r ˙ T e_p=r-r_T,e_v=\dot{r}-\dot{r}_T ep=rrT,ev=r˙r˙T

计算控制器所需要的力矢量:

F d e s = − K p e p − K v e v + m g z W + m r ¨ T F_{des}=-K_pe_p-K_ve_v+mgz_W+m\ddot{r}_T Fdes=KpepKvev+mgzW+mr¨T

将所需的力矢量投影到实际的身体坐标系z轴上,从而计算第一输入的所需力:

u 1 = F d e s ⋅ z B u_1=F_{des}\cdot z_B u1=FdeszB

理想的 Z B , d e s Z_{B,des} ZB,des一定沿着理想推力方向:

Z B , d e s = F d e s ∣ ∣ F d e s ∣ ∣ Z_{B,des}=\frac{F_{des}}{||F_{des}||} ZB,des=∣∣Fdes∣∣Fdes

此时,理想的旋转 R B W R_B^W RBW为:

R d e s e 3 = Z B , d e s R_{des}e_3=Z_{B,des} Rdese3=ZB,des

其他理想状态量:

x C , d e s = [ cos ⁡ ψ T , sin ⁡ ψ T , 0 ] T , and y B , d e s = z B , d e s × x C , d e s ∥ z B , d e s × x C , d e s ∥ , x B , d e s = y B , d e s × z B , d e s , \mathbf{x}_{C,des}=\left[\cos\psi_T, \sin\psi_T, 0\right]^T,\\\text{and}\\\mathbf{y}_{B,des}=\frac{\mathbf{z}_{B,des}\times\mathbf{x}_{C,des}}{\|\mathbf{z}_{B,des}\times\mathbf{x}_{C,des}\|}, \mathbf{x}_{B,des}=\mathbf{y}_{B,des}\times\mathbf{z}_{B,des}, xC,des=[cosψT,sinψT,0]T,andyB,des=zB,des×xC,deszB,des×xC,des,xB,des=yB,des×zB,des,

Z B , X B , Y B Z_B,X_B,Y_B ZB,XB,YB构成了旋转矩阵,从而获得了理想的旋转矩阵

定义旋转误差:

e R = 1 2 ( R d e s T R B W − R B W T R d e s ) ∨ \mathbf{e}_R=\frac{1}{2}(R_{des}^T{}R_B^W-R_B^W{}^TR_{des})^\vee eR=21(RdesTRBWRBWTRdes)

角速度误差(机身系):

e ω = ω − ω T e_\omega=\omega-\omega_T eω=ωωT

另外三个输入的计算如下,两个K都是对角增益矩阵:

[ u 2 , u 3 , u 4 ] T = − K R e R − K ω e ω [u_2,u_3,u_4]^T=-K_Re_R-K_\omega e_\omega [u2,u3,u4]T=KReRKωeω

5. 轨迹生成(本文最重要部分)

生成的轨迹可以写成m个时间间隔上的n阶分段多项式函数:

σ T ( t ) = { ∑ i = 0 n σ T i 1 t i t 0 ≤ t < t 1 ∑ i = 0 n σ T i 2 t i t 1 ≤ t < t 2 ⋮ ∑ i = 0 n σ T i m t i t m − 1 ≤ t ≤ t m \sigma_T(t)=\left\{\begin{array}{cc}\sum_{i=0}^n\sigma_{Ti1}t^i&t_0\leq t<t_1\\\sum_{i=0}^n\sigma_{Ti2}t^i&t_1\leq t<t_2\\\vdots\\\sum_{i=0}^n\sigma_{Tim}t^i&t_{m-1}\leq t\leq t_m\end{array}\right. σT(t)= i=0nσTi1tii=0nσTi2tii=0nσTimtit0t<t1t1t<t2tm1ttm

根据上一节的微分平坦性,这里的 σ T = [ x T , y T , z T , ψ T ] T \sigma_T=[x_T,y_T,z_T,\psi_T]^T σT=[xT,yT,zT,ψT]T σ i = [ x i , y i , z i , ψ i ] T \sigma_i=[x_i,y_i,z_i,\psi_i]^T σi=[xi,yi,zi,ψi]T。上述中要求相邻两段轨迹相同的时间节点是 r T r_T rT微分连续。

建立二次规划问题,c是一个4nm*1的向量,包含了 σ T i j = [ x T i j , y T i j , z T i j , ψ T i j ] T \sigma_{T_{ij}}=[x_{T_{ij}},y_{T_{ij}},z_{T_{ij}},\psi_{T_{ij}}]^T σTij=[xTij,yTij,zTij,ψTij]T及它们的导数:

min ⁡ c T H c + f T c s . t . A c ≤ b \min c^THc+f^Tc\\s.t. Ac\le b mincTHc+fTcs.t.Acb

接下来的解析我觉得文章本身不是很清晰,但是结合深蓝学院的课程和其他博客的思路,重新解读一下。

5.1 一段多项式轨迹

N+1个已知参数点可以拟合N次函数,对于首尾位置、速度、加速度已知的条件(相当于6个已知参数),可以唯一确定一个五次多项式。

5.2 多段多项式轨迹

本文提出了一个经过多个中间航迹点的轨迹,分别使用多个轨迹段进行拟合。但是相对于一段轨迹我们指定了节点的PVA,对于多段轨迹的中间点我们很难给定UAV经过这些航点的VAJ等信息,此时我们将中间速度、加速度等信息看作一个可以自由变化的状态,对于中间状态不确定的问题,可以构建一个优化问题,使得中间状态取得某一个值时,制定的代价函数达到最小值。

Minimum Snap的核心思路就是多端轨迹的中间航点的变量如何取值可以使机器人能量耗费最少。

5.3 Minimum Snap

UAV的轨迹再各个坐标轴上是独立的,因此可以对其分别进行轨迹拟合。即xyz轴上路径生成可以直接将三个轴合成就得到一个完整的空间轨迹。下面的推导均在一维上进行。

第m段轨迹表示如下:

P m ( t ) = p m , 0 t 0 + p m , 1 t 1 + ⋯ + p m , N t N = [ p m , 0 p m , 1 ⋯ p m , N ] [ t 0 t 1 ⋮ t N ] \mathrm{P_m\left(t\right)=p_{m,0}t^0+p_{m,1}t^1+\cdots+p_{m,N}t^N}\\=\begin{bmatrix}\mathrm{p_{m,0}}&\mathrm{p_{m,1}}&\cdots&\mathrm{p_{m,N}}\end{bmatrix}\begin{bmatrix}\mathrm{t^0}\\\mathrm{t^1}\\\vdots\\\mathrm{t^N}\end{bmatrix} Pm(t)=pm,0t0+pm,1t1++pm,NtN=[pm,0pm,1pm,N] t0t1tN

这个多项式就有N+1个未知系数。

对其分别求一阶、二阶、三阶导,获得它的速度、加速度、Jerk函数函数如下:

d P ( t ) d t = [ p m , 0 p m , 1 ⋯ p m , N ] [ 0 1 ⋮ N t N − 1 ] d 2 P ( t ) d t 2 = [ p m , 0 p m , 1 ⋯ p m , N ] [ 0 1 ∗ 0 2 ∗ 1 ⋮ N ( N − 1 ) t N − 2 ] \begin{aligned}\frac{\mathrm{dP}\left(\mathrm{t}\right)}{\mathrm{dt}}&=\begin{bmatrix}\mathrm{p}_{\mathrm{m},0}&\mathrm{p}_{\mathrm{m},1}&\cdots&\mathrm{p}_{\mathrm{m},\mathrm{N}}\end{bmatrix}\begin{bmatrix}0\\1\\\vdots\\\mathrm{N} \mathrm{t}^{\mathrm{N}-1}\end{bmatrix}\\\\\ \frac{\mathrm{d}^2\mathrm{P}\left(\mathrm{t}\right)}{\mathrm{d}\mathrm{t}^2}&=\begin{bmatrix}\mathrm{p}_{\mathrm{m},0}&\mathrm{p}_{\mathrm{m},1}&\cdots&\mathrm{p}_{\mathrm{m},\mathrm{N}}\end{bmatrix}\begin{bmatrix}0\\1*0\\2*1\\\vdots\\\mathrm{N}\left(\mathrm{N}-1\right)\mathrm{t}^{\mathrm{N}-2}\end{bmatrix}\end{aligned} dtdP(t) dt2d2P(t)=[pm,0pm,1pm,N] 01NtN1 =[pm,0pm,1pm,N] 01021N(N1)tN2

d 3 P ( t ) d t 3 = [ p m , 0 p m , 1 ⋯ p m , N ] [ 0 ∗ 0 ∗ 0 1 ∗ 0 ∗ 0 2 ∗ 1 ∗ 0 ⋮ N ( N − 1 ) ( N − 2 ) t N − 3 ] d 4 P ( t ) d t 4 = [ p m , 0 p m , 1 ⋯ p m , N ] [ 0 ∗ 0 ∗ 0 ∗ 0 1 ∗ 0 ∗ 0 ∗ 0 2 ∗ 1 ∗ 0 ∗ 0 3 ∗ 2 ∗ 1 ∗ 0 ⋮ N ( N − 1 ) ( N − 2 ) ( N − 3 ) t N − 4 ] \frac{\mathrm{d}^3\mathrm{P}\left(\mathrm{t}\right)}{\mathrm{d}\mathrm{t}^3}=\begin{bmatrix}\mathrm{p}_{\mathrm{m},0}&\mathrm{p}_{\mathrm{m},1}&\cdots&\mathrm{p}_{\mathrm{m},\mathrm{N}}\end{bmatrix}\begin{bmatrix}0*0*0\\1*0*0\\2*1*0\\\vdots\\\mathrm{N}(\mathrm{N}-1)(\mathrm{N}-2)\mathrm{t}^{\mathrm{N}-3}\end{bmatrix} \\\mathrm{\frac{d^4P(t)}{dt^4}}\:=\:\begin{bmatrix}\mathrm{p_{m,0}}&\mathrm{p_{m,1}}&\cdots&\mathrm{p_{m,N}}\end{bmatrix}\:\begin{bmatrix}0*0*0*0\\1*0*0*0\\2*1*0*0\\3*2*1*0\\\vdots\\\mathrm{N(N-1)(N-2)(N-3)t^{N-4}}\end{bmatrix} dt3d3P(t)=[pm,0pm,1pm,N] 000100210N(N1)(N2)tN3 dt4d4P(t)=[pm,0pm,1pm,N] 0000100021003210N(N1)(N2)(N3)tN4

在论文中提出了一个代价函数 J m J_m Jm,对应的是一段多项式轨迹的四阶导数(snap)平方的积分,具体公式如下:

J m = ∫ T m − 1 T m ( d 4 P ( t ) d t 4 ) 2 = ∫ T m − 1 T m [ p N p N − 1 ⋮ p 0 ] T [ N ( N − 1 ) ( N − 2 ) ( N − 3 ) t N − 4 ⋮ 3 ∗ 2 ∗ 1 ∗ 0 2 ∗ 1 ∗ 0 ∗ 0 1 ∗ 0 ∗ 0 ∗ 0 0 ∗ 0 ∗ 0 ∗ 0 ] [ N ( N − 1 ) ( N − 2 ) ( N − 3 ) t N − 4 ⋮ 3 ∗ 2 ∗ 1 ∗ 0 2 ∗ 1 ∗ 0 ∗ 0 1 ∗ 0 ∗ 0 ∗ 0 0 ∗ 0 ∗ 0 ∗ 0 ] T [ p N ⋮ p N − 1 ⋮ p 0 ] = P m T Q m P m \mathrm{J_m=\int_{T_{m-1}}^{T_m}(\frac{d^4P\left(t\right)}{dt^4})^2}\\=\int_{\mathrm{T_{m-1}}}^{\mathrm{T_m}}\begin{bmatrix}\mathrm{p_N}\\\mathrm{p_{N-1}}\\\vdots\\\mathrm{p_0}\end{bmatrix}^{\mathrm{T}}\begin{bmatrix}\mathrm{N(N-1)(N-2)(N-3)t^{N-4}}\\\vdots\\3*2*1*0\\2*1*0*0\\1*0*0*0\\0*0*0*0\end{bmatrix}\begin{bmatrix}\mathrm{N(N-1)(N-2)(N-3)t^{N-4}}\\\vdots\\3*2*1*0\\2*1*0*0\\1*0*0*0\\0*0*0*0\end{bmatrix}^{\mathrm{T}}\begin{bmatrix}\mathrm{p_N}\\\vdots\\\mathrm{p_{N-1}}\\\vdots\\\mathrm{p_0}\end{bmatrix}\\=P_m^TQ_mP_m Jm=Tm1Tm(dt4d4P(t))2=Tm1Tm pNpN1p0 T N(N1)(N2)(N3)tN43210210010000000 N(N1)(N2)(N3)tN43210210010000000 T pNpN1p0 =PmTQmPm

其中 Q m Q_m Qm如下:

[ N ( N − 1 ) ( N − 2 ) ( N − 3 ) N ( N − 1 ) ( N − 2 ) ( N − 3 ) ( T m − T m − 1 ) N + N − 7 N + N − 7 N ( N − 1 ) ( N − 2 ) ( N − 3 ) ( N − 1 ) ( N − 2 ) ( N − 3 ) ( N − 4 ) ( T m − T m − 1 ) N + N − 1 − 7 N + N − 1 − 7 ⋯ ⋮ ⋮ ⋮ ⋯ i ( i − 1 ) ( i − 2 ) ( i − 3 ) ( i − 1 ) ( i − 2 ) ( T m − T m − 1 ) i + 1 − 7 i + 1 − 7 ⋯ ⋮ ⋮ ⋮ 0 0 ⋯ ] \begin{bmatrix}\frac{\mathrm{N}\left(\mathrm{N}-1\right)\left(\mathrm{N}-2\right)\left(\mathrm{N}-3\right)\mathrm{N}\left(\mathrm{N}-1\right)\left(\mathrm{N}-2\right)\left(\mathrm{N}-3\right)\left(\mathrm{T}_{{\mathrm{m}}}-\mathrm{T}_{{\mathrm{m}-1}}\right)^{{\mathrm{N}+\mathrm{N}-7}}}{\mathrm{N}+\mathrm{N}-7}&\frac{\mathrm{N}\left(\mathrm{N}-1\right)\left(\mathrm{N}-2\right)\left(\mathrm{N}-3\right)\left(\mathrm{N}-1\right)\left(\mathrm{N}-2\right)\left(\mathrm{N}-3\right)\left(\mathrm{N}-4\right)\left(\mathrm{T}_{{\mathrm{m}}}-\mathrm{T}_{{\mathrm{m}-1}}\right)^{{\mathrm{N}+\mathrm{N}-1-7}}}{\mathrm{N}+\mathrm{N}-1-7}&\cdots\\\varvdots&\varvdots&\varvdots\\\cdots&\frac{\mathrm{i}\left(\mathrm{i}-1\right)\left(\mathrm{i}-2\right)\left(\mathrm{i}-3\right)\left(\mathrm{i}-1\right)\left(\mathrm{i}-2\right)\left(\mathrm{T}_{{\mathrm{m}}}-\mathrm{T}_{{\mathrm{m}-1}}\right)^{{\mathrm{i}+1-7}}}{\mathrm{i}+1-7}&\cdots\\\varvdots&\varvdots&\varvdots\\0&0&\cdots\end{bmatrix} N+N7N(N1)(N2)(N3)N(N1)(N2)(N3)(TmTm1)N+N70N+N17N(N1)(N2)(N3)(N1)(N2)(N3)(N4)(TmTm1)N+N17i+17i(i1)(i2)(i3)(i1)(i2)(TmTm1)i+170

上式中 T m − T m − 1 T_m-T_{m-1} TmTm1实际就是该段轨迹运动所用的时长,为了不让每一段轨迹的时间差过大,这里采用相对时间来表示,对于每一段轨迹认为它们的时间都是 ( 0 , T m ) (0,T_m) (0,Tm)

总的代价函数

假设现在有M段轨迹,那么每段轨迹都是一个高阶的多项式函数,写出代价函数如下:

J = J 0 + J 1 + ⋯ + J M = ∑ m = 0 M P m ⃗ T Q m P m ⃗ = [ P 0 P 1 ⋮ P M ] T [ Q 0 0 ⋯ ⋯ 0 0 Q 1 0 ⋯ 0 ⋮ ⋮ ⋮ ⋯ ⋮ 0 0 0 ⋯ Q M ] [ P 0 P 1 ⋮ P M ] \begin{gathered}\mathrm{J}=\mathrm{J}_{0}+\mathrm{J}_{1}+\cdots+\mathrm{J}_{\mathrm{M}} \\=\sum_{\mathrm{m=0}}^\mathrm{M}\vec{\mathrm{P_m}}^\mathrm{T}\mathrm{Q_m}\vec{\mathrm{P_m}} \\\left.=\begin{bmatrix}\mathrm{P}_0\\\mathrm{P}_1\\\vdots\\\mathrm{P}_\mathrm{M}\end{bmatrix}\right.^\mathrm{T}\begin{bmatrix}\mathrm{Q}_0&0&\cdots&\cdots&0\\0&\mathrm{Q}_1&0&\cdots&0\\\vdots&\vdots&\vdots&\cdots&\vdots\\0&0&0&\cdots&\mathrm{Q}_\mathrm{M}\end{bmatrix}\begin{bmatrix}\mathrm{P}_0\\\mathrm{P}_1\\\vdots\\\mathrm{P}_\mathrm{M}\end{bmatrix} \end{gathered} J=J0+J1++JM=m=0MPm TQmPm = P0P1PM T Q0000Q100000QM P0P1PM

代价函数完成了,但是还缺少约束,即每个中间航点在前后两段轨迹的速度、加速度或者jerk是连续的,如此运动轨迹才是平滑的。

5.4 约束

连续性约束

限制中间的航迹点在两段轨迹的接合处是左右两边状态连续的,写成数学形式如下:

P m ( k ) ( T m ) = P m + 1 ( k ) ( T m ) P_m^{(k)}(T_m)=P_{m+1}^{(k)}(T_m) Pm(k)(Tm)=Pm+1(k)(Tm)

即轨迹段 P m P_m Pm P m + 1 P_{m+1} Pm+1 T m T_m Tm时刻具有相同的k阶导数。

P m ( k ) ( T m ) = P m + 1 ( k ) ( T m ) ⇒ ∑ i ≥ k i ! ( i − k ) ! T m i − k p m , i − ∑ l ≥ k l ! ( l − k ) ! T m l − k p m + 1 , l = 0 ⇒ [ A m − A m + 1 ] [ P m P m + 1 ] = 0 \begin{aligned}\mathrm{P_{m}^{(k)}(T_{m})=P_{m+1}^{(k)}(T_{m})}\\\Rightarrow\sum_{{\mathrm{i\geq k}}}\frac{\mathrm{i!}}{(\mathrm{i-k})!}\mathrm{T_{m}^{i-k}p_{m,i}-\sum_{{\mathrm{l\geq k}}}\frac{l!}{(l-k)!}T_{m}^{l-k}p_{m+1,l}=0}\\\Rightarrow\begin{bmatrix}\mathrm{A_{m}}&-\mathrm{A_{m+1}}\end{bmatrix}\begin{bmatrix}\mathrm{P_{m}}\\\mathrm{P_{m+1}}\end{bmatrix}=0\end{aligned} Pm(k)(Tm)=Pm+1(k)(Tm)ik(ik)!i!Tmikpm,ilk(lk)!l!Tmlkpm+1,l=0[AmAm+1][PmPm+1]=0

微分约束

启动和终点的PVA使用确定值限制,即 P 0 ( 0 ) , P 0 ( 1 ) ( 0 ) , P 0 ( 2 ) ( 0 ) , P M ( T M ) , P M ( 1 ) ( T M ) , P M ( 2 ) ( T M ) P_0(0),P_0^{(1)}(0),P_0^{(2)}(0),P_M(T_M),P_M^{(1)}(T_M),P_M^{(2)}(T_M) P0(0),P0(1)(0),P0(2)(0),PM(TM),PM(1)(TM),PM(2)(TM)已知。

中间航迹点的位置确定,即 P m ( 0 ) 和 P M ( T m ) P_{m}(0)和P_{M}(T_m) Pm(0)PM(Tm)已知。

融合上述的约束得到:

[ A 0 0 0 0 ⋯ 0 A 0 − A 1 0 0 ⋯ 0 0 A 1 0 0 ⋯ 0 0 A 1 − A 2 0 ⋯ 0 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ 0 0 0 0 0 A M ] [ P 0 P 1 P 2 P 3 ⋮ P M ] = [ d 0 0 d 1 0 ⋮ d M ] \begin{bmatrix}\mathrm{A}_0&0&0&0&\cdots&0\\\mathrm{A}_0&-\mathrm{A}_1&0&0&\cdots&0\\0&\mathrm{A}_1&0&0&\cdots&0\\0&\mathrm{A}_1&-\mathrm{A}_2&0&\cdots&0\\\vdots&\vdots&\vdots&\vdots&\vdots&\vdots\\0&0&0&0&0&\mathrm{A}_\mathrm{M}\end{bmatrix}\begin{bmatrix}\mathrm{P}_0\\\mathrm{P}_1\\\mathrm{P}_2\\\mathrm{P}_3\\\vdots\\\mathrm{P}_\mathrm{M}\end{bmatrix}=\begin{bmatrix}\mathrm{d}_0\\0\\\mathrm{d}_1\\0\\\vdots\\\mathrm{d}_\mathrm{M}\end{bmatrix} A0A00000A1A1A10000A200000000000AM P0P1P2P3PM = d00d10dM

到此,整个QP问题构建完毕。

5.5 求解QP

多项式轨迹中的系数 p p p没有具体的物理意义,通过无约束方程求解的p可能会出现一些特别小的值,受计算精度影响,导致数值不稳定。

Polynomial Trajectory Planning for Aggressive Quadrotor Flight in Dense Indoor Environments, Charles Richter, Adam Bry, and Nicholas Roy.

为了解决这个系数不稳定的问题,在上文中提出了将系数通过一个映射矩阵转换成轨迹端点的导数,也就是说我们不再优化轨迹的系数,而是对轨迹在端点处的位置、速度、加速度、Jerk等进行优化,由于这些量都是有实际物理含义,不会出现太离谱的数值,所以在一定程度上是比较稳定的。

以最小化Jerk为例,此时是多项式是一个5次多项式轨迹,那么它有6个未知的系数,需要提供轨迹两端的位置、速度、加速度约束,对轨迹进行过次求导:

[ P m ( t ) P m ( 1 ) ( t ) P m ( 2 ) ( t ) ] = [ p m , 5 t 5 p m , 4 t 4 p m , 3 t 3 p m , 2 t 2 p m , 1 t 1 p m , 0 t 0 5 p m , 5 t 4 4 p m , 4 t 3 3 p m , 3 t 2 2 p m , 2 t 1 p m , 1 t 0 0 5 ∗ 4 p m , 5 t 3 4 ∗ 3 p m , 4 t 2 3 ∗ 2 p m , 3 t 1 2 ∗ 1 p m , 2 t 0 0 0 ] = [ t 5 t 4 t 3 t 2 t 1 t 0 5 t 4 4 t 3 3 t 2 2 t 1 t 0 0 5 ∗ 4 t 3 4 ∗ 3 t 2 3 ∗ 2 t 1 2 ∗ 1 t 0 0 0 ] [ p m , 5 p m , 4 p m , 3 p m , 2 p m , 1 p m , 0 ] \begin{aligned}\begin{bmatrix}\mathrm{P}_{\mathrm{m}}\left(\mathrm{t}\right)\\\mathrm{P}_{\mathrm{m}}^{\left(1\right)}\left(\mathrm{t}\right)\\\mathrm{P}_{\mathrm{m}}^{\left(2\right)}\left(\mathrm{t}\right)\end{bmatrix}&=\begin{bmatrix}\mathrm{p}_{\mathrm{m},5}\mathrm{t}^5&\mathrm{p}_{\mathrm{m},4}\mathrm{t}^4&\mathrm{p}_{\mathrm{m},3}\mathrm{t}^3&\mathrm{p}_{\mathrm{m},2}\mathrm{t}^2&\mathrm{p}_{\mathrm{m},1}\mathrm{t}^1&\mathrm{p}_{\mathrm{m},0}\mathrm{t}^0\\5\mathrm{p}_{\mathrm{m},5}\mathrm{t}^4&4\mathrm{p}_{\mathrm{m},4}\mathrm{t}^3&3\mathrm{p}_{\mathrm{m},3}\mathrm{t}^2&2\mathrm{p}_{\mathrm{m},2}\mathrm{t}^1&\mathrm{p}_{\mathrm{m},1}\mathrm{t}^0&0\\5*4\mathrm{p}_{\mathrm{m},5}\mathrm{t}^3&4*3\mathrm{p}_{\mathrm{m},4}\mathrm{t}^2&3*2\mathrm{p}_{\mathrm{m},3}\mathrm{t}^1&2*1\mathrm{p}_{\mathrm{m},2}\mathrm{t}^0&0&0\end{bmatrix}\\&=\begin{bmatrix}\mathrm{t}^5&\mathrm{t}^4&\mathrm{t}^3&\mathrm{t}^2&\mathrm{t}^1&\mathrm{t}^0\\5\mathrm{t}^4&4\mathrm{t}^3&3\mathrm{t}^2&2\mathrm{t}^1&\mathrm{t}^0&0\\5*4\mathrm{t}^3&4*3\mathrm{t}^2&3*2\mathrm{t}^1&2*1\mathrm{t}^0&0&0\end{bmatrix}\begin{bmatrix}\mathrm{p}_{\mathrm{m},5}\\\mathrm{p}_{\mathrm{m},4}\\\mathrm{p}_{\mathrm{m},3}\\\mathrm{p}_{\mathrm{m},2}\\\mathrm{p}_{\mathrm{m},1}\\\mathrm{p}_{\mathrm{m},0}\end{bmatrix}\end{aligned} Pm(t)Pm(1)(t)Pm(2)(t) = pm,5t55pm,5t454pm,5t3pm,4t44pm,4t343pm,4t2pm,3t33pm,3t232pm,3t1pm,2t22pm,2t121pm,2t0pm,1t1pm,1t00pm,0t000 = t55t454t3t44t343t2t33t232t1t22t121t0t1t00t000 pm,5pm,4pm,3pm,2pm,1pm,0

带入两端的时间,得到多项式系数到运动微分的映射关系:

[ P ( 0 ) P ( 1 ) ( 0 ) P ( 2 ) ( 0 ) P ( T ) P ( 1 ) ( T ) P ( 2 ) ( T ) ] = [ 0 5 0 4 0 3 0 2 0 1 0 0 5 ∗ 0 4 4 ∗ 0 3 3 ∗ 0 2 2 ∗ 0 1 0 0 0 5 ∗ 4 ∗ 0 3 4 ∗ 3 ∗ 0 2 3 ∗ 2 ∗ 0 1 2 ∗ 1 ∗ 0 0 0 0 T 5 T 4 T 3 T 2 T 1 T 0 5 ∗ T 4 4 ∗ T 3 3 ∗ T 2 2 ∗ T 1 T 0 0 5 ∗ 4 ∗ T 3 4 ∗ 3 ∗ T 2 3 ∗ 2 ∗ T 1 2 ∗ 1 ∗ T 0 0 0 ] [ p 5 p 4 p 3 p 2 p 1 p 0 ] ⇒ d m = A m P m ⇒ P m = A m − 1 d m \begin{aligned}\begin{bmatrix}\mathrm{P}\left(0\right)\\\mathrm{P}^{\left(1\right)}\left(0\right)\\\mathrm{P}^{\left(2\right)}\left(0\right)\\\mathrm{P}\left(\mathrm{T}\right)\\\mathrm{P}^{\left(1\right)}\left(\mathrm{T}\right)\\\mathrm{P}^{\left(2\right)}\left(\mathrm{T}\right)\end{bmatrix}&=\begin{bmatrix}0^5&0^4&0^3&0^2&0^1&0^0\\5*0^4&4*0^3&3*0^2&2*0^1&0^0&0\\5*4*0^3&4*3*0^2&3*2*0^1&2*1*0^0&0&0\\\mathrm{T}^5&\mathrm{T}^4&\mathrm{T}^3&\mathrm{T}^2&\mathrm{T}^1&\mathrm{T}^0\\5*\mathrm{T}^4&4*\mathrm{T}^3&3*\mathrm{T}^2&2*\mathrm{T}^1&\mathrm{T}^0&0\\5*4*\mathrm{T}^3&4*3*\mathrm{T}^2&3*2*\mathrm{T}^1&2*1*\mathrm{T}^0&0&0\end{bmatrix}\begin{bmatrix}\mathrm{p}_5\\\mathrm{p}_4\\\mathrm{p}_3\\\mathrm{p}_2\\\mathrm{p}_1\\\mathrm{p}_0\end{bmatrix}\\&\Rightarrow\mathrm{d}_{\mathrm{m}}=\mathrm{A}_{\mathrm{m}}\mathrm{P}_{\mathrm{m}}\\&\Rightarrow\mathrm{P}_{\mathrm{m}}=\mathrm{A}_{\mathrm{m}}^{-1}\mathrm{d}_{\mathrm{m}}\end{aligned} P(0)P(1)(0)P(2)(0)P(T)P(1)(T)P(2)(T) = 055045403T55T454T3044034302T44T343T2033023201T33T232T1022012100T22T121T001000T1T000000T000 p5p4p3p2p1p0 dm=AmPmPm=Am1dm

得到映射矩阵:

A m = [ 0 N 0 N − 1 ⋯ 0 2 0 1 0 0 N ∗ 0 N − 1 ( N − 1 ) ∗ 0 N − 2 ⋯ 2 ∗ 0 1 0 0 0 N ( N − 1 ) ∗ 0 N − 2 ( N − 1 ) ( N − 2 ) ∗ 0 N − 3 ⋯ 2 ∗ 1 ∗ 0 0 0 0 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ T N T N − 1 ⋯ T 2 T 1 T 0 N ∗ T N − 1 ( N − 1 ) ∗ T N − 2 ⋯ 2 ∗ T 1 T 0 0 N ( N − 1 ) ∗ T N − 2 ( N − 1 ) ( N − 2 ) ∗ T N − 3 ⋯ 2 ∗ 1 ∗ T 0 0 0 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ] \mathrm{A_m=\begin{bmatrix}0^N&0^{N-1}&\cdots&0^2&0^1&0^0\\\mathrm{N*0^{N-1}}&(\mathrm{N-1})*0^{N-2}&\cdots&2*0^1&0^0&0\\\mathrm{N(N-1)*0^{N-2}}&(\mathrm{N-1})(\mathrm{N-2})*0^{N-3}&\cdots&2*1*0^0&0&0\\\vdots&\vdots&\vdots&\vdots&\vdots&\vdots\\\mathrm{T^N}&\mathrm{T^{N-1}}&\cdots&\mathrm{T^2}&\mathrm{T^1}&\mathrm{T^0}\\\mathrm{N*T^{N-1}}&(\mathrm{N-1})*\mathrm{T^{N-2}}&\cdots&2*\mathrm{T^1}&\mathrm{T^0}&0\\\mathrm{N(N-1)*T^{N-2}}&(\mathrm{N-1})(\mathrm{N-2})*\mathrm{T^{N-3}}&\cdots&2*1*\mathrm{T^0}&0&0\\\vdots&\vdots&\vdots&\vdots&\vdots&\vdots\end{bmatrix}} Am= 0NN0N1N(N1)0N2TNNTN1N(N1)TN20N1(N1)0N2(N1)(N2)0N3TN1(N1)TN2(N1)(N2)TN3022012100T22T121T001000T1T000000T000

将代价函数中的系数向量通过映射矩阵 A m A_m Am进行替换,得到下式:

min ⁡ [ P 0 P 1 ⋮ P M ] T [ Q 0 0 ⋯ ⋯ ⋯ 0 0 Q 1 0 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 0 ⋯ Q M ] [ P 0 P 1 ⋮ P M ] min ⁡ [ d 1 d 1 ⋮ d M ] T [ A 0 0 ⋯ ⋯ 0 0 A 1 0 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ A M ] T [ Q 0 0 ⋯ ⋯ 0 0 Q 1 0 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 0 ⋯ Q M ] [ A 0 0 ⋯ ⋯ 0 0 A 1 0 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 0 ⋯ A M ] − 1 [ P 0 P 1 ⋮ P M ] ⇒ min ⁡ d T A − T Q A − 1 d \min\left[\begin{array}{c}\mathrm{P_{0}}\\\mathrm{P_{1}}\\\vdots\\\mathrm{P_{M}}\end{array}\right]^{\mathrm{T}}\begin{bmatrix}\mathrm{Q_{0}}&0&\cdots&\cdots&\cdots&0\\0&\mathrm{Q_{1}}&0&\cdots&0\\\vdots&\vdots&\vdots&\ddots&\vdots\\0&0&0&\cdots&\mathrm{Q_{M}}\end{bmatrix}\begin{bmatrix}\mathrm{P_{0}}\\\mathrm{P_{1}}\\\vdots\\\mathrm{P_{M}}\end{bmatrix}\\\min\left[\begin{array}{c}\mathrm{d_{1}}\\\mathrm{d_{1}}\\\vdots\\\mathrm{d_{M}}\end{array}\right]^{\mathrm{T}}\begin{bmatrix}\mathrm{A_{0}}&0&\cdots&\cdots&0\\0&\mathrm{A_{1}}&0&\cdots&0\\\vdots&\vdots&\vdots&\ddots&\vdots\\0&0&\cdots&\mathrm{A_{M}}\end{bmatrix}^{\mathrm{T}}\begin{bmatrix}\mathrm{Q_{0}}&0&\cdots&\cdots&0\\0&\mathrm{Q_{1}}&0&\cdots&0\\\vdots&\vdots&\vdots&\ddots&\vdots\\0&0&0&\cdots&\mathrm{Q_{M}}\end{bmatrix}\begin{bmatrix}\mathrm{A_{0}}&0&\cdots&\cdots&0\\0&\mathrm{A_{1}}&0&\cdots&0\\\vdots&\vdots&\vdots&\ddots&\vdots\\0&0&0&\cdots&\mathrm{A_{M}}\end{bmatrix}^{-1}\begin{bmatrix}\mathrm{P_{0}}\\\mathrm{P_{1}}\\\vdots\\\mathrm{P_{M}}\end{bmatrix}\\\Rightarrow\min\mathrm{d^{T}A^{-T}QA^{-1}d} min P0P1PM T Q0000Q10000QM0 P0P1PM min d1d1dM T A0000A100AM00 T Q0000Q100000QM A0000A100000AM 1 P0P1PM mindTATQA1d

如此一来,微分约束已经融入到了PQ问题当中,但是连续性约束还没有引入到代价函数当中。

本文中引入了一个permutation Matrix(置换矩阵)C来将连续性约束引入到代价函数当中。C矩阵本身是一个只包含0和1的矩阵,它的作用是将向量 [ d 0 , d 1 , . . . , d M ] [d_0,d_1,...,d_M] [d0,d1,...,dM]进行一个组合,将固定的变量放在头部,将需要优化的变量放在尾部,并且对于连续性约束的变量值相等,因此只选择其中一个来表达连续性变量。

换言之,首尾状态和中间点航点是已知的设为 d m F d_{mF} dmF,中间点除位置信息外其他状态是代价函数再优化时需要分配的最优值,即需要优化的变量设为 d m P d_{mP} dmP

将置换矩阵带入到代价函数当中:

J = min ⁡ [ d F d P ] T C A − T Q A − 1 C T [ d F d P ] \mathrm{J}=\min\begin{bmatrix}\mathrm{d}_{\mathrm{F}}\\\mathrm{d}_{\mathrm{P}}\end{bmatrix}^{\mathrm{T}}\mathrm{C}\mathrm{A}^{{-\mathrm{T}}}\mathrm{Q}\mathrm{A}^{-1}\mathrm{C}^{\mathrm{T}}\begin{bmatrix}\mathrm{d}_{\mathrm{F}}\\\mathrm{d}_{\mathrm{P}}\end{bmatrix} J=min[dFdP]TCATQA1CT[dFdP]

R = C A − T Q A − 1 C T R=CA^{-T}QA^{-1}C^T R=CATQA1CT。对R矩阵根据 d F d_F dF d P d_P dP的尺寸进行分块,得到如下变换:

J = min ⁡ [ d F d P ] T C A − T Q A − 1 C T [ d F d P ] = J = min ⁡ [ d F d P ] T R [ d F d P ] = min ⁡ [ d F d P ] T [ R F F R F P R P F R P P ] [ d F d P ] = d F T R F F d F + d F T R F P d P + d P T R P F d F + d P T R P P d P \begin{gathered}\mathrm J=\operatorname*{min}\left[\begin{matrix}{\mathrm d_{\mathrm F}}\\{\mathrm d_{\mathrm P}}\\\end{matrix}\right]^{\mathrm T}\mathrm C\mathrm A^{-\mathrm T}\mathrm Q\mathrm A^{-1}\mathrm C^{\mathrm T}\left[\begin{matrix}{\mathrm d_{\mathrm F}}\\{\mathrm d_{\mathrm P}}\\\end{matrix}\right]=\mathrm J=\operatorname*{min}\left[\begin{matrix}{\mathrm d_{\mathrm F}}\\{\mathrm d_{\mathrm P}}\\\end{matrix}\right]^{\mathrm T}\mathrm R\left[\begin{matrix}{\mathrm d_{\mathrm F}}\\{\mathrm d_{\mathrm P}}\\\end{matrix}\right] \\=\min\begin{bmatrix}\mathrm{d_F}\\\mathrm{d_P}\end{bmatrix}^\mathrm{T}\begin{bmatrix}\mathrm{R_FF}&\mathrm{R_FP}\\\mathrm{R_PF}&\mathrm{R_PP}\end{bmatrix}\begin{bmatrix}\mathrm{d_F}\\\mathrm{d_P}\end{bmatrix} \\=\mathrm{d_F^TR_{FF}~d_F~+d_F^TR_{FP}~d_P~+d_P^TR_{PF}~d_F~+d_P^TR_{PP}~d_P} \end{gathered} J=min[dFdP]TCATQA1CT[dFdP]=J=min[dFdP]TR[dFdP]=min[dFdP]T[RFFRPFRFPRPP][dFdP]=dFTRFF dF +dFTRFP dP +dPTRPF dF +dPTRPP dP

对于上式J是一个标量,并且Q矩阵是对称阵,所以R矩阵也是对称阵,则 R P F = R F P T R_{PF}=R_{FP}^T RPF=RFPT。对于上式我们要求的变量是 d p d_p dp,对其求导得到

∂ J ∂ d P = 2 d F T R F P + 2 R P P d P = 0 ⇒ d P ∗ = − R P P − 1 R F P T d F \begin{aligned}\frac{\partial\mathcal{J}}{\partial\mathcal{d}_{{\mathcal{P}}}}&=2\mathrm{d}_{{\mathcal{F}}}^{{\mathcal{T}}}\mathcal{R}_{{\mathcal{F}\mathcal{P}}}+2\mathrm{R}_{{\mathcal{P}\mathcal{P}}}\mathrm{~d}_{{\mathcal{P}}}=0\\&\Rightarrow\mathrm{d}_{{\mathcal{P}}}^{*}=-\mathrm{R}_{{\mathcal{P}\mathcal{P}}}^{-1}\mathrm{R}_{{\mathcal{F}\mathcal{P}}}^{{\mathcal{T}}}\mathrm{~d}_{{\mathcal{F}}}\end{aligned} dPJ=2dFTRFP+2RPP dP=0dP=RPP1RFPT dF

然后反求得到多项式系数:

P = A − 1 C T [ d F d P ∗ ] \mathrm{P~=A^{-1}C^T~\begin{bmatrix}d_F\\d_P^*\end{bmatrix}} P =A1CT [dFdP]

这篇关于【轨迹规划论文整理(1)】UAV轨迹规划的开山之作Minimum Snap Trajectory的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080007

相关文章

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

轨迹规划-B样条

B样条究竟是干啥的?白话就是给出一堆点,用样条的方式,给这些点连接起来,并保证丝滑的。 同时B样条分为准均匀和非均匀,以下为准均匀为例。 参考链接1:https://zhuanlan.zhihu.com/p/50626506https://zhuanlan.zhihu.com/p/50626506 参考链接2: https://zhuanlan.zhihu.com/p/536470972h