本篇博客主要介绍一些路径规划中常用的几何曲线,包括贝塞尔曲线(Bezier Curve),样条曲线(Spline Curve)
1. 贝塞尔曲线(Bezier Curve)
1.1 定义
贝塞尔曲线最初是用于汽车主体的设计,后被广泛应用于图形设计和路径规划中。
贝塞尔曲线由首尾起始点以及中间的控制点相互作用生成,其中起始点是曲线的必经点又称为锚点,控制点的作用是用来改变曲线的曲率及形状,n个点对应 n-1阶贝塞尔曲线。
1.2 伯恩斯坦多项式(Bernstein Polynomial)
伯恩斯坦多项式(Bernstein polynomial)逼近连续函数的一系列多项式, 其公式的表达形式与bezier曲线的表达形式相辅相成,因此常用来作为bezier曲线的计算公式。
1.3 公式推导
变量物理意义
- B ( t ) B(t) B(t)表示 t t t时刻下的点的坐标
- P 0 P_0 P0表示起点, P n P_n Pn表示终点, P i P_i Pi为控制点
值得注意的是,bezier的相关公式推导是具有强烈的递归性质的, 通过下面的公式多阶公式推导可以看出此特性
一阶贝塞尔曲线
一阶贝塞尔曲线其实就是一条线段,动图如下所示:
由此开始推导公式:
首先,根据向量计算可得,
B ( t ) = P 0 + ( P 1 − P 0 ) ∗ t , t ∈ [ 0 , 1 ] B(t) = P_0 + (P_1 - P_0) * t, \ t \in [0, 1] B(t)=P0+(P1−P0)∗t, t∈[0,1]
变形后可得,
B ( t ) = ( 1 − t ) P 0 + t P 1 , t ∈ [ 0 , 1 ] B(t) = (1 - t)P_0 + t P_1, \ t \in [0, 1] B(t)=(1−t)P0+tP1, t∈[0,1]
上述公式描述了一个连续点构成的直线线段
二阶贝塞尔曲线
二阶贝塞尔曲线是一个抛物线,动图如下图所示:
其中, P 0 ′ P_0' P0′