YeeKal
planning

轨迹优化之轨迹拟合

YeeKal
"#planning"

2003-Reactive Nonholonomic Trajectory Generation via Parametric Optimal Control

Abstract

  1. parametric trajectory reduce computation time, at the cost os potentially introducing suboptimality

Formulation for a vehicle actuated in curvature and speed:

from time to distance(以行驶举例作为参数):

变分法把最优控制问题转化为非线性优化问题。

solution using polynominal spirals

spiral.png

polytraj 代码原理

  • path:只有路径,以曲率为路径长度的函数

    • start($x_s,y_s,\theta_s,\kappa_s$)
    • end($x_e,y_e,\theta_e,\kappa_e$)
    • 初始化一个曲率多项式: $\kappa(s) =a+b s+c s^{2}+d s^{3}+\cdots$
    • 根据动力学约束根据起点求终点, 并最小化终点误差:

    $end_state=\int_0^1g(\kappa) \ \min_{s,a,b,\cdots} \quad J=||\Delta e||^2$ - 在代码中使用了Simpson积分公式,首先估计了路径总长度,然后根据路径点均分。 - trajectory:加入了速度和加速度,一条曲线为曲率函数,一条为加速度 - start($x_s,y_s,\theta_s,\kappa_s, v_s, a_s$) - end($x_e,y_e,\theta_e,\kappa_e$)

参数方程/参数曲线/样条曲线:五次样条和三次螺旋线对比

都是参数方程:样条曲线可以选择一个定义域为[0,1]的控制量

  • quintic splines: 对于二维平面,x和y分别由一个五次样条参数曲线生成,一共有12个参数。在设置完边界条件之后存在封闭解。但是难以对于曲率做控制。

曲率变化

  • Polynomial Spirals:曲率被定义为路径长度的多项式函数,方便对曲率做控制。由于曲率值不会像在五次样条曲线中那样迅速变化。一般通过限制螺旋线和螺旋线中仅几个点的曲率,就很可能满足了整个曲线上的曲率约束。但是由于位置的计算是三角函数的积分形式,难以找出封闭解,因此需要数值逼近。

曲率约束:除了边界点之外,把线段分成三段,对中间两个点($/frac{1}{3}s, frac{2}{3}s$)作曲率约束。

parameter remapping

参数重映射:选取三段平分点的曲率和弧长作为五个参数,反解原始曲率曲线参数的a,b,c,d.降低数值迭代的不稳定性

ref