主要思想:前端考虑动力学进行规划,后端轨迹优化利用B样条曲线的性质。
优点:
1、使轨迹向梯度场小的方向移动,设计出来的轨迹在障碍物中间,相较其他方法会更加安全。
2、利用了B样条曲线,带来了很大的便利,因为B样条曲线具有以下性质:
改变任意控制点,只改变有限时间段的轨迹。
B样条曲线的导数仍为B曲线。
缺点:
贝塞尔曲线(Bezier Curve)
B样条曲线(B-Spline)
定义
C ( t ) = ∑ i = 0 n N i , p ( t ) Q i \mathbf{C}(t)=\sum_{i=0}^{n} N_{i, p}(t) \mathbf{Q}_{i} C(t)=i=0∑nNi,p(t)Qi
性质
一个时间段的轨迹由有限的点决定
如图, [ u 3 , u 4 ) [u_{3},u_{4}) [u3,u4)的时间段只受到 Q 0 、 Q 1 、 Q 2 、 Q 3 Q_{0}、Q_{1}、Q_{2}、Q_{3} Q0、Q1、Q2、Q3控制点的作用。
p>=1具有轨迹连续性质
推到出C(t)的表达式易证。
B样条的导数还是B样条
凸包性质(Convex Hull Property)
时间均匀的B样条可以化成特殊的表达形式(Fast Planner中使用
通式:
当p = 3, m = 3:
p ( s ( u ) ) = s ( u ) T M 4 q 3 s ( u ) = [ 1 s ( u ) s 2 ( u ) s 3 ( u ) ] T q 3 = [ Q 0 Q 1 Q 2 Q 3 ] T s ( u ) = ( u − u 3 ) / Δ u \begin{aligned} \mathbf{p}(s(u)) &=\mathbf{s}(u)^{\mathrm{T}} \mathbf{M}_{4} \mathbf{q}_{3} \\ \mathbf{s}(u) &=\left[\begin{array}{llll} 1 & s(u) & s^{2}(u) & s^{3}(u) \end{array}\right]^{\mathrm{T}} \\ \mathbf{q}_{3} &=\left[\begin{array}{llll} \mathbf{Q}_{0} & \mathbf{Q}_{1} & \mathbf{Q}_{2} & \mathbf{Q}_{3} \end{array}\right]^{\mathrm{T}} \\ s(u) &=\left(u-u_{3}\right) / \Delta u \end{aligned} p(s(u))s(u)q3s(u)=s(u)TM4q3=[1s(u)s2(u)s3(u)]T=[Q0Q1Q2Q3]T=(u−u3)/Δu
推导:
N 0 , 3 ( t ) = 1 6 { t 3 t ∈ [ 0 , 1 ) t 2 ( 2 − t ) + t ( 3 − t ) ( t − 1 ) + ( 4 − t ) ( t − 1 ) 2 t ∈ [ 1 , 2 ) t ( 3 − t ) 2 + ( t − 1 ) ( 3 − t ) ( 4 − t ) + ( 4 − t ) 2 ( t − 2 ) t ∈ [ 2 , 3 ) ( 4 − t ) 3 t ∈ [ 3 , 4 ) N_{0,3}(t)=\frac{1}{6}\left\{\begin{array}{cl} t^{3} & t \in[0,1) \\ t^{2}(2-t)+t(3-t)(t-1)+(4-t)(t-1)^{2} & t \in[1,2) \\ t(3-t)^{2}+(t-1)(3-t)(4-t)+(4-t)^{2}(t-2) & t \in[2,3) \\ (4-t)^{3} & t \in[3,4) \end{array}\right. N0,3(t)=61⎩⎪⎪⎨⎪⎪⎧t3t2(2−t)+t(3−t)(t−1)+(4−t)(t−1)2t(3−t)2+(t−1)(3−t)(4−t)+(4−t)2(t−2)(4−t)3t∈[0,1)t∈[1,2)t∈[2,3)t∈[3,4)
N 1 , 3 ( t ) = 1 6 { ( t − 1 ) 3 t ∈ [ 1 , 2 ) ( t − 1 ) 2 ( 1 − t ) + ( t − 1 ) ( 2 − t ) ( t − 2 ) + ( 3 − t ) ( t − 2 ) 2 t ∈ [ 2 , 3 ) ( t − 1 ) ( 2 − t ) 2 + ( t − 2 ) ( 2 − t ) ( 3 − t ) + ( 3 − t ) 2 ( t − 3 ) t ∈ [ 3 , 4 ) ( 3 − t ) 3 t ∈ [ 4 , 5 ) . . . N_{1,3}(t)=\frac{1}{6}\left\{\begin{array}{cl} (t-1)^{3} & t \in[1,2) \\ (t-1)^{2}(1-t)+(t-1)(2-t)(t-2)+(3-t)(t-2)^{2} & t \in[2,3) \\ (t-1)(2-t)^{2}+(t-2)(2-t)(3-t)+(3-t)^{2}(t-3) & t \in[3,4) \\ (3-t)^{3} & t \in[4,5) \end{array}\right. \\... N1,3(t)=61⎩⎪⎪⎨⎪⎪⎧(t−1)3(t−1)2(1−t)+(t−1)(2−t)(t−2)+(3−t)(t−2)2(t−1)(2−t)2+(t−2)(2−t)(3−t)+(3−t)2(t−3)(3−t)3t∈[1,2)t∈[2,3)t∈[3,4)t∈[4,5)...
可计算 t ∈ [ u 3 , u 4 ) t \in[u_{3},u_{4}) t∈[u3,u4)段的轨迹:
推广到 t ∈ [ u m , u m + 1 ) t \in[u_{m},u_{m+1}) t∈[um,um+1)段的轨迹:
结论:由公式看出,只需要 Q m − 3 、 Q m − 2 、 Q m − 1 、 Q m Q_{m-3}、Q_{m-2}、Q_{m-1}、Q_{m} Qm−3、Qm−2、Qm−1、Qm的点,分配时间 Δ u \Delta u Δu,就可以确定` t ∈ [ u m , u m + 1 ) t \in[u_{m},u_{m+1}) t∈[um,um+1)段轨迹。
p ( s ( u ) ) = s ( u ) T M 4 q m s ( u ) = [ 1 s ( u ) s 2 ( u ) s 3 ( u ) ] T q m = [ Q m − 3 Q m − 2 Q m − 1 Q m ] T s ( u ) = ( u − u m ) / Δ u \begin{aligned} \mathbf{p}(s(u)) &=\mathbf{s}(u)^{\mathrm{T}} \mathbf{M}_{4} \mathbf{q}_{m} \\ \mathbf{s}(u) &=\left[\begin{array}{llll} 1 & s(u) & s^{2}(u) & s^{3}(u) \end{array}\right]^{\mathrm{T}} \\ \mathbf{q}_{m} &=\left[\begin{array}{llll} \mathbf{Q}_{m-3} & \mathbf{Q}_{m-2} & \mathbf{Q}_{m-1} & \mathbf{Q}_{\mathrm{m}} \end{array}\right]^{\mathrm{T}} \\ s(u) &=\left(\begin{array}{llll} \left.u-u_{m}\right) / \Delta u \end{array}\right.\\ \end{aligned} p(s(u))s(u)qms(u)=s(u)TM4qm=[1s(u)s2(u)s3(u)]T=[Qm−3Qm−2Qm−1Qm]T=(u−um)/Δu
M 4 = 1 3 ! [ 1 4 0 0 − 3 0 3 0 3 − 6 3 0 − 1 3 − 3 1 ] \mathbf{M}_{4}=\frac{1}{3 !}\left[\begin{array}{cccc} 1 & 4 & 0 & 0 \\ -3 & 0 & 3 & 0 \\ 3 & -6 & 3 & 0 \\ -1 & 3 & -3 & 1 \end{array}\right] M4=3!1⎣⎢⎢⎡1−33−140−63033−30001⎦⎥⎥⎤
可以看出: 0阶时轨迹就是控制点。1阶时控制点连线的直线。2阶导时控制点有光滑曲线连接(轨迹连续可导)。
代价函数的设计
时间调整
《深蓝学院》移动机器人运动规划第8章