基于cilqr的纵向跟车功能

在控制领域,LQR(线性-二次调节器)是少见的能在理论上得到解析解的模型,被誉为控制皇冠上的明珠。但传统的lqr不能直接应用于非线性系统和处理约束条件,而非线性和约束在现实系统中又是无处不在的,为此发展出了cilqr(Constrained Iterative LQR)[1];

本文根据车辆的运动学模型,基于cilqr算法来实现ACC跟车功能;

lqr简介

ilqr的基本知识和求解过程可参考[2][3];

求解标准lqr的步骤如下,主要分为两步,后向递归和前向递归,迭代次数均为T,T为轨迹步长。

设状态变量个数为m,控制变量个数为n,则上式中主要变量的维数为:

Q_t,C_t\in{R^{(m+n)\times(m+n)}} \\ F_t\in{R^{m\times(m+n)}}\\ V_t,Q_{xx}\in{R^{m\times{m}}}\\ q_t,c_t\in{R^{(m+n)\times{1}}}\\ f_t,v_t,q_x\in{R^{m\times{1}}}\\ Q_{xu}\in{R^{m\times{n}}}\\ K\in{R^{n\times{m}}}\\ Q_{uu}\in{R^{n\times{n}}}\\ k\in{R^{n\times{1}}}

ilqr的求解步骤如下:

状态方程

目标函数

约束条件及其处理

主要对状态变量和控制变量的约束

x_{min} \le x_i\le x_{max} (1 \le i \le N)

u_{min} \le u_i\le u_{max} (1 \le i \le N)

使用如下障碍函数将约束作为惩罚项合并到目标函数中,从而化成标准的无约束lqr形式;

指数障碍函数

对数障碍函数

ilqr求解

综合后的目标函数如下:

c(x_i,u_i)=f_w(x_i,u_i)+f_b(x_i,u_i) \textcircled{2}

差分处理转为增量形式

\delta{x_i}=x_i-x_t\\ \delta{u_i}=u_i-u_t

将状态方程和目标函数在(xt,ut)处分别进行一阶Taylor和二阶Taylor展开,化成标准lqr格式

仿真结果

前车(橙线)先匀速行驶,后恒加速度刹停,自车(蓝线)初始为静止,所以先加速追上前车,稳定跟车后跟随前车刹停;

绿线为巡航车速(速度约束),加速度上限为2mpss(加速度约束);

分析与总结

初始值的影响

定速巡航模式,巡航速度为8.0,轨迹长度30个cycle;

自车初始状态x=[0.0,7.5,0.0],控制jerk u=[4.0],运行10步;

x=[0.0,7.5,0.0],u=[-0.2]

上述对比结果表明,可行的初始解能显著降低收敛所需的迭代次数,降低运行时间;

使用指数障碍函数将硬约束转化为软约束,所以规划的轨迹有时不完全满足约束;

调试过程中发现,给的初解轻微违反约束,lqr迭代几次可以收敛,但是如果违反太多,就会发散,导致轨迹完全不可用;

算法复杂度分析

  1. 标准lqr的一步运行只涉及十几次的小矩阵(维度为m+n)的乘法和一次矩阵求逆,具体复杂度为T(m+n)^3,非常高效;

  2. ilqr的主要时间瓶颈在于最外层的收敛步骤,这个和初始值的选取密切相关,好的初始值能大大降低运行时间;

  3. 一般地,cost函数需要考虑每个变量,即权重系数的个数为(m+n),约束主要是对变量的上下界进行约束,所以约束个数为2(m+n),相应的约束权重的数量为2(m+n)*a,a为障碍函数中的参数个数,总的需要调试的参数数量为(2a+1)(m+n);

不同障碍函数的影响

下图是使用对数障碍函数仿真的结果

指数障碍函数有2个参数,对数障碍函数有1个参数;

指数障碍函数允许轨迹超过bound,使用对数障碍函数一般不会发生这种情况;

实际调参过程中,对数障碍函数对初始值和参数更敏感,很容易出现发散的情况;

[1] Jianyu Chen, Wei Zhan, and Masayoshi Tomizuka. Autonomous driving motion planning with constrained iterative lqr. IEEE Transactions on Intelligent Vehicles, 4(2):244–254, 2019

[2] https://www.imgeorgiev.com/2023-02-01-ddp/

[3] https://zhuanlan.zhihu.com/p/101129909

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值