自动驾驶-运动学模型
- unicycle car model
- length scale
- time scale
normalize tf:
dx * dt -> dx
- collision
自行车模型
自行车模型中心点位于后车轮中心。$L$为前后轮距。
- state:
- x:
- y
- $\theta$: heading angle
- v: velocity
- $\kappa$: curvature
- control:
- $\phi$: steer angle
- a: acceleration
- $\delta$: steer angle rate
- $\alpha$: sharpness, curvature rate
- other parameters
- s: path length
model1
推倒关系式:
linealize
You can get a discrete-time mode with Forward Euler Discretization with sampling time dt.
Using first degree Tayer expantion around zbar and ubar
where:
轨迹上的运动学模型(不包括速度)
对于任一变量 a:
因此上述运动学模型变为:
或者从曲线几何的角度也可一推倒出上述模型,其中注意到$\frac{tan(\phi)}{L}$实际就是由于方向盘转弯而导致的曲率,对于自行车模型.曲率和方向盘转角是一一对应的,因此运动学模型也可以写为:
曲率变化
曲率和方向盘转角是一一对应的,因此可以根据方向盘转角的范围求出曲率的范围,因此曲率的取值范围也是确定的. 但是考虑到舒适性以及可跟踪性,需要对曲率的变化率作出限制,在优化问题的求解上可以有多种处理办法.
第一种,把曲率$\kappa$本身作为控制量,限制曲率的取值范围.曲率的变化率的限制可以写入损失函数里面:
第二种,把曲率写成关于路径长度的函数表达式(表达式上保证连续变化),优化问题转变为求解表达式的参数. 比如把曲率写成关于路径长度多项式:
路径长度
在使用此模型通过优化的方法进行轨迹规划的问题上,这里的s的总长度是不确定的,因此如何对优化问题进行离散也是一个问题.
上述模型其实是一个非线性模型,需要对其进行线性化. 线性化的离散过程依赖路径的离散长度$ds = \eta$. 由于总路径长度不确定,因此我们可以固定离散个数,同时把$\eta$当作一个变量,并限定$\eta$的范围:$\eta \in [0, \eta_{max}]$,线性化后的模型:
控制量为${\eta_i, \kappa_i}$
另一种方法为把总长S当作一个变量,固定离散个数,每次迭代通过S/n得到离散的$\Delta s$