【机器人】无人车-运动规划-高阶多项式曲线方程求解

本文探讨了在自动驾驶领域如何利用高阶多项式曲线进行运动规划。详细介绍了从3阶到5阶多项式曲线的求解过程,包括曲线方程、导数方程的构建以及方程组的求解。还提到了Apollo项目中的实现,如CubicPolynomialCurve1d、QuarticPolynomialCurve1d和QuinticPolynomialCurve1d等子类的运用。
摘要由CSDN通过智能技术生成

高阶多项式曲线拟合方程求解

已知参数(2个位置点)

起点状态(3组已知值)

( p 0 , x 0 ) , ( p 0 , x 0 ′ ) , ( p 0 , x 0 ′ ′ ) (p_0, x_0),(p_0, x_0'),(p_0, x_0'') (p0,x0),(p0,x0),(p0,x0)

终点状态(3组已知值)

( p 1 , x 1 ) , ( p 1 , x 1 ′ ) , ( p 1 , x 1 ′ ′ ) (p_1, x_1),(p_1, x_1'),(p_1, x_1'') (p1,x1),(p1,x1),(p1,x1)

n阶多项式曲线(n+1个未知参数)

基本形式

  • 输入: p p p
  • 输出: x x x
  • 系数: w 0 , w 1 … … w n w_0,w_1……w_n w0,w1wn
  • 方程: x = w n p n + w n − 1 p n − 1 + w n − 2 p n − 2 + … … + w 1 p 1 + w 0 x = w_np^n+w_{n-1}p^{n-1}+w_{n-2}p^{n-2}+……+w_{1}p^1+w_0 x=wnpn+wn1pn1+wn2pn2++w1p1+w0

基本特性

  • n阶多项式共有n+1个参数,要想求的唯一解需要n+1组已知量才能求得。
  • 对于超过5阶的多项式,仅知道两个点的0、1、2阶导数(共6组参数)是无法求的唯一解的。

高阶曲线拟合示意图

高阶多项式曲线公式推导

3阶多项式曲线(4个未知参数)

需要4组已知值,才能求得唯一解

曲线方程

x = a p 3 + b p 2 + c p + d \begin{aligned} x &= ap^3+bp^2+cp+d \end{aligned} x=ap3+bp2+cp+d

导数方程

x ′ = 3 a p 2 + 2 b p + c x ′ ′ = 6 a p + 2 b \begin{aligned} x' &= 3ap^2+2bp+c \\ x'' &= 6ap+2b \\ \end{aligned} xx=3ap2+2bp+c=6ap+2b

构建方程组

{ x 0 = a p 0 3 + b p 0 2 + c p 0 + d x 0 ′ = 3 a p 0 2 + 2 b p 0 + c x 0 ′ ′ = 6 a p 0 + 2 b x 1 = a p 1 3 + b p 1 2 + c p 1 + d x 1 ′ = 3 a p 1 2 + 2 b p 1 + c x 1 ′ ′ = 6 a p 1 + 2 b \begin{cases} x_0 &= ap_0^3+bp_0^2+cp_0+d \\ x_0' &= 3ap_0^2+2bp_0+c \\ x_0'' &= 6ap_0+2b \\ x_1 &= ap_1^3+bp_1^2+cp_1+d \\ x_1' &= 3ap_1^2+2bp_1+c \\ x_1'' &= 6ap_1+2b \\ \end{cases} x0x0x0x1x1x1=ap03+bp02+cp0+d=3ap02+2bp0+c=6ap0+2b=ap13+bp12+cp1+d=3ap12+2bp1+c=6ap1+2b

系数求解

  • 方程组中有4个未知参数,只需要4个方程即可获得唯一解,
  • 此处采用 ( p 0 , x 0 ) , ( p 0 , x 0 ′ ) , ( p 0 , x 0 ′ ′ ) , ( p 1 , x 1 ) (p_0, x_0),(p_0, x_0'),(p_0, x_0''),(p_1, x_1) (p0,x0),(p0,x0),(p0,x0),(p1,x1) 4个已知条件进行求解,
  • 因此只需要选择1、2、3、4共4子方程构造新的方程组

{ x 0 = a p 0 3 + b p 0 2 + c p 0 + d x 0 ′ = 3 a p 0 2 + 2 b p 0 + c x 0 ′ ′ = 6 a p 0 + 2 b x 1 = a p 1 3 + b p 1 2 + c p 1 + d \begin{cases} x_0 &= ap_0^3+bp_0^2+cp_0+d \\ x_0' &= 3ap_0^2+2bp_0+c \\ x_0'' &= 6ap_0+2b \\ x_1 &= ap_1^3+bp_1^2+cp_1+d \\ \end{cases} x0x0x0x1=ap03+bp02+cp0+d=3ap02+2bp0+c=6ap0+2b=ap13+bp12+cp1+d
方程组整理可得:
d = x 0 − ( a p 0 3 + b p 0 2 + c p 0 ) c = x 0 ′ − ( 3 a p 0 2 + 2 b p 0 ) b = x 0 ′ ′ − 6 a p 0 2 a = x 1 − d − c p 1 − b p 1 2 p 1 3 \begin{aligned} d &= x_0 - (ap_0^3+bp_0^2+cp_0)\\ c &= x_0' - (3ap_0^2+2bp_0)\\ b &= \frac{x_0''-6ap_0}{2} \\ a &= \frac{x_1-d-cp_1-bp_1^2}{p_1^3}\\ \end{aligned} dcba=x0(ap03+bp02+cp0)=x0(3ap02+2bp0)=2x06ap0=p13x1​<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值