算法简介#
算法思想#
多项式曲线#
-
多项式曲线分为三次多项式曲线、五次多项式曲线、七次多项式曲线;
-
我们注意到上述的多项式曲线都是奇数次,事实上,多项式曲线一般而言都是奇数次,这是由边界条件引起的。边界条件一般包括车辆的起始状态和终止状态(如换道轨迹的起点状态和终点状态),由于偶数个状态导致有唯一解的方程系数为偶数,故偶数个系数的多项式也就是奇数多项式。
-
三次多项式曲线:最多能确定每一个期望点的两个维度的期望状态,一般来说就是位置和速度
{x(t)=a0+a1t+a2t2+a3t3y(t)=b0+b1t+b2t2+b3t3
- 五次多项式曲线:最多能确定每一个期望点的三个维度的期望状态,一般来说就是位置、速度和加速度
{x(t)=a0+a1t+a2t2+a3t3+a4t4+a5t5y(t)=b0+b1t+b2t2+b3t3+b4t4+b5t5
- 七次多项式曲线:最多能确定每一个期望点的三个维度的期望状态,一般来说就是位置、速度、加速度和加加速度(冲击度,jerk)
{x(t)=a0+a1t+a2t2+a3t3+a4t4+a5t5+a6t6+a7t7y(t)=b0+b1t+b2t2+b3t3+b4t4+b5t5+b6t6+b7t7
曲线插值法(以五次多项式为例)#
- 首先,我们定义如下的五次多项式:
{x(t)=a0+a1t+a2t2+a3t3+a4t4+a5t5y(t)=b0+b1t+b2t2+b3t3+b4t4+b5t5
-
我们将起始时刻定义为t0,起始时刻的位置、速度和加速度均已知,我们构造如下的纵向和横向方程:
{x(t0)=a0+a1t0+a2t20+a3t30+a4t40+a5t50y(t0)=b0+b1t0+b2t20+b3t30+b4t40+b5t50
{x′(t0)=a1+2a2t0+3a3t20+4a4t30+5a5t40y′(t0)=b1+2b2t0+3b3t20+4b4t30+5b5t40
{x′′(t0)=2a2+6a3t0+12a4t20+20a5t30y′′(t0)=2b2+6b3t0+12b4t20+20b5t30
-
同理,我们可以构造终止时刻t1的的横向和纵向方程,这里就不再详细描述;
-
我们将起始位置和终止位置的横纵向方程统一用矩阵表达为:
X=⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣x0x′0x′′0x1x′1x′′1⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦=⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣t50t40t30t20t015t404t303t202t101020t3012t206t0200t51t41t31t21t115t414t313t212t111020t3112t216t1200⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣a5a4a3a2a1a0⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦=T×A
Y=⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣y0y′0y′′0y1y′1y′′1⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦=⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣t50t40t30t20t015t404t303t202t101020t3012t206t0200t51t41t31t21t115t414t313t212t111020t3112t216t1200⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣b5b4b3b2b1b0⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦=T×B
- 对上述矩阵进行求解(A=T−1×X,B=T−1×Y),我们可以得到唯一的系数矩阵解,即得到唯一的多项式曲线,该曲线上每一点的导数代表着车辆经过该点时的速度。多项式曲线插值法轨迹规划出的曲线是路径+速度的耦合结果。
注意:曲线插值法得到的轨迹曲线是关于时间t的函数,而非坐标y关于坐标x的函数。
与双圆弧段换道轨迹进行对比:
- 双圆弧段换道轨迹由弧AC+线段CD+弧DF构成,如下图所示:

- 在C点,轨迹曲率由弧AC段的定值突变为0,考虑到方向盘的转角是一个连续缓变的过程,为了让车辆能够完全跟随轨迹,车辆行驶到C点后必须速度为0,让方向盘回正后才能沿给定的轨迹继续行驶,因此双圆弧段换道无法应用于行车路径规划,而应用于泊车路径规划。
代码实现#
待更新,后续会上传到Github上。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)