文章目录
0. 参考文献
前置:
【1】https://blog.csdn.net/l898985121/article/details/109048855
这个是之前写的一篇文章,讲了frenet坐标的推导过程
【2】https://blog.csdn.net/l898985121/article/details/115702160
前面写的关于李雅普诺夫稳定的一篇转载文章
参考:
【3】https://zhuanlan.zhihu.com/p/46377932
【3.1】https://arxiv.org/abs/1604.07446
这个是横向控制综述,看里面的后轴反馈方法
【4】https://github.com/AtsushiSakai/PythonRobotics/blob/master/PathTracking/rear_wheel_feedback/rear_wheel_feedback.py
这个是后轴反馈控制的python代码
1. 简单推导
1.1 frenet 坐标
长成这个样子:

从这个当中,我们选择后面两行,构成一个非线性的系统方程,系统的状态量是横向偏差 e e e和航向角偏差 ψ e \psi_e ψe。我们可以控制的输入是 ω \omega ω。
当然也可以选择其他的状态量当做系统方程,这个在后文答案二中讨论
1.2 笔者的思路
然后,采用李雅普诺夫第二方法,寻找一个状态量的方程 V ( x ) V(\pmb{x}) V(xxx),也就是 V ( e , ψ e ) V(e,\psi_e) V(e,ψe),满足三个条件,就能得到一个渐进稳定的系统,为了满足这三个条件,我们需要设计 ω \omega ω。
我们选择的一个李雅普诺夫函数如下:
V ( e , ψ e ) = e 2 + ψ e 2 V(e,\psi_e) = e^2 + \psi_e^2 V(e,ψe)=e2+ψe2
求导得到:
V ˙ = 2 e e ˙ + 2 ψ e ψ ˙ e \dot{V}=2e\dot{e}+2 \psi_e \dot{\psi}_e V˙=2ee˙+2ψeψ˙e
将上面的状态方程带入,得到:
V ˙ = 2 e v r sin ( ψ e ) + 2 ψ e ( ω − v r κ cos ( ψ e ) 1 − κ e ) \dot{V}=2 e v_r \sin (\psi_e) + 2 \psi_e (\omega - \frac{v_r \kappa \cos (\psi_e)}{1- \kappa e}) V˙=2evrsin(ψe)+2ψe(ω−1−κevrκcos(ψe))
观察上面这个式子,如何设计一个 ω \omega ω,使得这个式子小于0(系统渐进稳定)。
后续:这里其实确实可以瞎J设计,只要稳定就行,然后通过添加奇怪的系数k,可以进一步控制系统收敛的过程。
下面让我们先看几个答案
1.3 答案一
来自《A Survey of Motion Planning and Control Techniques for Self-driving Urban Vehicles》这篇文章
选择李雅普诺夫函数为:
V ( e , ψ e ) = e 2 + ψ e 2 k e V(e,\psi_e) = e^2 + \frac{\psi_e^2}{k_e} V(e,ψe)=e2+keψe2
求导得到:
V ˙ = 2 e e ˙ + 2 ψ e ψ ˙ e k e \dot{V}=2e\dot{e}+\frac{2 \psi_e \dot{\psi}_e}{k_e} V˙=2ee˙+ke2ψeψ

本文探讨了自动驾驶路径跟踪控制的稳定性问题,利用李雅普诺夫第二方法分析了Frenet坐标系下的横向偏差和航向角偏差。提出了两种不同的系统状态方程和相应的李雅普诺夫函数设计,通过控制车辆的角速度ω来实现系统渐进稳定。第一种方案中,ω的设计考虑了速度、曲率和偏差角度;第二种方案则基于车辆的加速度和曲率。文章还给出了Python代码示例,展示了实际的控制算法实现。

2959

被折叠的 条评论
为什么被折叠?



