曲线插值方法简介(五次多项式路径规划)

曲线插值的方法是按照车辆在某些特定条件(安全、快速、高效)下,进行路线拟合,常见的有多项式曲线双圆弧曲线正弦函数曲线贝塞尔曲线B样条曲线

曲线插值的法的核心思想就是基于预先构造的曲线类型,根据车辆期望达到的状态(比如要求车辆到达某点的速度和加速度为期望值),将此期望值作为边界条件代入曲线类型进行方程求解,获得曲线的相关系数。

曲线的相关系数一旦确定,轨迹就随之确定完成。

针对三次多项式曲线,最多能确定每一个期望点的两个维度的期望状态,一般来说就是位置和速度。针对五次多项式曲线,最多能确定每一个期望点的三个维度的期望状态,一般来说就是位置、速度、加速度。针对七次多项式曲线,最多能确定每一个期望点的四个维度的期望状态,一般来说就是位置、速度、加速度加加速度(冲击度,jerk)。故根据自身轨迹规划的需求,合理选择对应的多项式曲线。

以五次多项式曲线为例讲解曲线插值法轨迹规划:

位置:x(t_{0}) = a_{0} + a_{1}t_{0} + a_{2}t_{0}^{2} + a_{3}t_{0}^{3} + a_{4}t_{0}^{4} + a_{5}t_{0}^{5}

           y(t_{0}) = b_{0} + b_{1}t_{0} + b_{2}t_{0}^{2} + b_{3}t_{0}^{3} + b_{4}t_{0}^{4} + b_{5}t_{0}^{5}

速度:{x}'(t_{0})_ = a_{1} + 2a_{2}t_{0}^{} + 3a_{3}t_{0}^{2} + 4a_{4}t_{0}^{3} + 5a_{5}t_{0}^{4}

           {y}'(t_{0})_ = b_{1} + 2b_{2}t_{0}^{} + 3b_{3}t_{0}^{2} + 4b_{4}t_{0}^{3} + 5b_{5}t_{0}^{4}

加速度:{x}''1(t_{0})_ = 2a_{2}t_{0} + 6a_{3}t_{0}^{1} + 12a_{4}t_{0}^{2} + 20a_{5}t_{0}^{3}

                {y}''1(t_{0})_ = 2b_{2}t_{0} + 6b_{3}t_{0}^{1} + 12b_{4}t_{0}^{2} + 20b_{5}t_{0}^{3}

定义换道终点时间为t1,横纵向均有期望的位置、速度加速度,又分别可以得到三个方程,不再列出。

因此把起末两点的横纵向方程统一用矩阵表达为:

\begin{bmatrix}x_{0} \\ x'_{0} \\ x''_{0} \\ x_{1} \\ x'_{1} \\ x''_{1} \end{bmatrix} =\begin{bmatrix} t_{0}^{5}&t_{0}^{4} &t_{0}^{3} &t_{0}^{2} &t_{0}^{} & 1\\ 5t_{0}^{4}&4t_{0}^{3} &3t_{0}^{2} &2t_{0}^{} &1 &0 \\ 20t_{0}^{3}& 12t_{0}^{2} & 6t_{0}^{} & 2 & 0 & 0\\ t_{1}^{5}&t_{1}^{4} &t_{1}^{3} &t_{1}^{2} &t_{1}^{} & 1\\ 5t_{1}^{4}&4t_{1}^{3} &3t_{1}^{2} &2t_{1}^{} &1 &0 \\ 20t_{1}^{3}& 12t_{1}^{2} & 6t_{1}^{} & 2 & 0 & 0 \end{bmatrix} \begin{bmatrix} a_{5} \\ a_{4} \\ a_{3} \\ a_{2} \\ a_{1} \\ a_{0} \end{bmatrix}= T\times A

\begin{bmatrix}y_{0} \\ y'_{0} \\ y''_{0} \\ y_{1} \\ y'_{1} \\ y''_{1} \end{bmatrix} =\begin{bmatrix} t_{0}^{5}&t_{0}^{4} &t_{0}^{3} &t_{0}^{2} &t_{0}^{} & 1\\ 5t_{0}^{4}&4t_{0}^{3} &3t_{0}^{2} &2t_{0}^{} &1 &0 \\ 20t_{0}^{3}& 12t_{0}^{2} & 6t_{0}^{} & 2 & 0 & 0\\ t_{1}^{5}&t_{1}^{4} &t_{1}^{3} &t_{1}^{2} &t_{1}^{} & 1\\ 5t_{1}^{4}&4t_{1}^{3} &3t_{1}^{2} &2t_{1}^{} &1 &0 \\ 20t_{1}^{3}& 12t_{1}^{2} & 6t_{1}^{} & 2 & 0 & 0 \end{bmatrix} \begin{bmatrix}b_{5} \\ b_{4} \\ b_{3} \\ b_{2} \\ b_{1} \\ b_{0} \end{bmatrix}= T\times B

多项式曲线的自变量为时间t,故一旦求解系数矩阵,曲线唯一确定后,则曲线上每一点的导数就代表了车辆经过该点时的速度。这表明多项式曲线换道轨迹规划是路径+速度的耦合结果。

五次多项式换道轨迹曲线特指横向位置/纵向位置是关于时间t的五次多项式,而不是指纵向位置y关于横向位置x的五次多项式。

双圆弧段换道轨迹由弧AC+线段CD+弧DF构成;

在c点,轨迹曲率由弧AC段的定值突变为0,故为了让车辆能完全跟随轨迹,考虑到方向盘转角是一个连续缓变过程,车辆行驶到在C点后必须速度为0,让方向盘回正后才能继续行驶,因此无法应用于行车路径规划,而应用于泊车路径规划。

此代码可定义换道场景、车道标准宽度、直线段长度、车宽、车长,换道前后的起始状态和终止状态等。

下图为换道轨迹曲线:

下图为换道的纵向速度变化,本代码纵向速度保持不变,(可根据需要自行修改,更改成纵向速度变化的)

下图为横向速度、横向加速度变化曲线:

此代码可计算并画出J的变化曲线,可自定义ay_max,t1_max等:

同时为对比不同曲线效果:博主开发了不同曲线的对比,效果如下,可自行修改代码,得出需要的曲线:

代码放在咸鱼,账号名称:咸鱼程序猿,有需要可自取,可定制化开发,可继续修改。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Matlab中,可以使用五次多项式轨迹规划方法实现路径规划。首先,需要构建路径规划的模型,并给定相应的参数。然后,可以使用Matlab对模型进行求解,得到路径规划的结果。 例如,可以使用以下代码来构建五次多项式轨迹规划的模型并求解: ```matlab clear; clc; syms T; syms orgAngle orgSpeed orgAcc tarAngle tarSpeed tarAcc; b = [orgAngle; orgSpeed; orgAcc; tarAngle; tarSpeed; tarAcc]; A = [1 0 0 0 0 0; 0 1 0 0 0 0; 0 0 2 0 0 0; 1 T T.^2 T.^3 T.^4 T.^5; 0 1 2*T 3*T.^2 4*T.^3 5*T.^4; 0 0 2 6*T 12*T.^2 20*T.^3]; r = pinv(A) * b; simple_r = simplify(r); ``` 这段代码中,`T`表示时间,`orgAngle`、`orgSpeed`、`orgAcc`、`tarAngle`、`tarSpeed`和`tarAcc`分别表示起始点角度、起始点速度、起始点加速度、目标点角度、目标点速度和目标点加速度。通过求解上述方程,可以得到五次多项式轨迹规划的结果。 请注意,以上代码只是一个示例,实际的路径规划问题可能需要根据具体的情况进行调整和修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [使用MATLAB求解机器人五次多项式轨迹规划](https://blog.csdn.net/Mingrenjiuwei/article/details/100565544)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [自动驾驶(二)三次多项式五次多项式路径规划和Matlab代码实现](https://blog.csdn.net/weixin_49322998/article/details/119764865)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值