Reference Line Smoother¶
Tip: to read the equations in the document, you are recommended to use Chrome with a plugin or copy the latex equation to an online editor
Quadratic programming + Spline interpolation
1. Objective function¶
1.1 Segment routing path¶
Segment routing path into n segments. each segment trajectory is defined by two polynomials:
$$
x = f_i(t)
= a_{i0} + a_{i1} * t + a_{i2} * t^2 + a_{i3} * t^3 + a_{i4} * t^4 + a_{i5} * t^5
$$
$$
y = g_i(t) = b_{i0} + b_{i1} * t + b_{i2} * t^2 + b_{i3} * t^3 + b_{i4} * t^4 + b_{i5} * t^5
$$
1.2 Define objective function of optimization for each segment¶
$$
cost =
\sum_{i=1}^{n}
\Big(
\int\limits_{0}^{t_i} (f_i''')^2(t) dt
+ \int\limits_{0}^{t_i} (g_i''')^2(t) dt
\Big)
$$
1.3 Convert the cost function to QP formulation¶
QP formulation:
$$
\frac{1}{2} \cdot x^T \cdot H \cdot x + f^T \cdot x
\\
s.t. LB \leq x \leq UB
\\
A_{eq}x = b_{eq}
\\
Ax \leq b
$$
2 Constraints¶
2.1 Joint smoothness constraints¶
This constraint smoothes the spline joint. Let’s assume two segments, \(seg_k\) and \(seg_{k+1}\), are connected and the accumulated s of segment \(seg_k\) is \(s_k\). Calculate the constraint equation as:
$$
f_k(s_k) = f_{k+1} (s_0)
$$
Similarly the formula works for the equality constraints, such as:
$$
f'_k(s_k) = f'_{k+1} (s_0)
\\
f''_k(s_k) = f''_{k+1} (s_0)
\\
f'''_k(s_k) = f'''_{k+1} (s_0)
\\
g_k(s_k) = g_{k+1} (s_0)
\\
g'_k(s_k) = g'_{k+1} (s_0)
\\
g''_k(s_k) = g''_{k+1} (s_0)
\\
g'''_k(s_k) = g'''_{k+1} (s_0)
$$
2.2 Sampled points for boundary constraint¶
Evenly sample m points along the path and check the predefined boundaries at those points.
$$
f_i(t_l) - x_l< boundary
\\
g_i(t_l) - y_l< boundary
$$