【滑模控制】从理论到实战(2):FSAE牵引力控制系统(TCS)算法设计


前言

【滑模控制】从理论到实战(1):理论基础中,介绍了滑模控制器的设计步骤(基于趋近律设计)。
本文将开始进入实战,设计基于滑模控制的FSAE牵引力控制系统(TCS)。
以下内容将包括动力学建模、控制器设计,以及如何使用MATLAB进行公式推导。

牵引力控制系统:当车辆轮胎与地面的摩擦力不足,车轮容易失去牵引力,导致打滑现象。当车轮转速过快时,车辆无法有效地加速或保持稳定行驶。牵引力控制系统通过监测车轮转速并对失去牵引力的车轮进行干预,减少或避免打滑,帮助车辆稳定行驶,提高车辆在不同路况下的适应性和稳定性。


系统建模

忽略滚动阻力等较小外力的影响,对车轮进行受力分析:
在这里插入图片描述
有:

J ω ˙ = T d − F x R e (1) J\dot{\omega}=T_d-F_xR_e \tag{1} Jω˙=TdFxRe(1)

其中, v x v_x vx为车轮纵向速度, J J J为车轮转动惯量, ω \omega ω为车轮转速, T d T_d Td为驱动力矩(系统输入), F x F_x Fx为地面对轮胎的纵向力, R e R_e Re为车轮等效半径。
为了描述车轮的滑转程度,定义在驱动下的滑移率 λ \lambda λ为:

λ = ω R e − v x v x = ω R e v x − 1 \lambda=\frac{\omega R_e-v_x}{v_x} = \frac{\omega R_e}{v_x}-1 λ=vxωRevx=vxωRe1

轮胎纵向力与载荷、滑移率有着以下曲线关系(横轴为滑移率,纵轴为轮胎纵向力,不同颜色曲线对应不同载荷):

在这里插入图片描述

如图所示,在一定载荷下,滑移率约在0.8~0.25的范围内达到最大的轮胎纵向力(牵引力),更大的滑移率反而会使牵引力下降。
在FSAE中,为了使赛车拥有最佳的加速性能,在加速过程中需要避免过大的驱动力使轮胎打滑,控制滑移率在特定范围内。

控制器设计

(1)滑模面与趋近律设计

牵引力控制系统的控制目标为控制滑移率到达某一目标值,以发挥出轮胎的最大纵向力。
定义误差为:

e = λ d − λ e=\lambda_d-\lambda e=λdλ

注意到,误差的一阶导数显含控制输入 T d T_d Td(详见下文MATLAB推导)。
故设滑模面为:

s = e s=e s=e

有:

s ˙ = λ ˙ d − λ ˙ \dot{s}=\dot{\lambda}_d - \dot{\lambda} s˙=λ˙dλ˙

路面条件和载荷一般不会剧烈变化,为了简化计算,可设 λ ˙ d = 0 \dot{\lambda}_d=0 λ˙d=0,得:

s ˙ = − λ ˙ (4) \dot{s}=-\dot{\lambda} \tag{4} s˙=λ˙(4)

注意到此时 s ˙ \dot{s} s˙可与控制输入 T d T_d Td建立方程,可在设计趋近律后求解得控制律 T d T_d Td
设计趋近律为:

s ˙ = − k 1 s g n ( e ) − k 2 e (5) \dot{s} = -k_1 \mathrm{sgn}(e) - k_2e \tag{5} s˙=k1sgn(e)k2e(5)

(2)使用MATLAB进行公式推导

求解 λ ˙ \dot{\lambda} λ˙

syms m mu Re J
syms omega(t) vx(t)
lambda = omega*Re/vx - 1;

d_lambda = diff(lambda, t);

得:

λ ˙ = R e   ω v x − R e   ω ˙   v x v x 2 (2) \dot{\lambda}=\frac{R_e\, \omega }{v_x}-\frac{R_e\,\dot{\omega} \, v_x}{{v_x}^2} \tag{2} λ˙=vxReωvx2Reω˙vx(2)

联立式(1)、式(2)消去 ω ˙ \dot{\omega} ω˙

syms T Fx x
equ1 = J*x == T - Fx*Re; % x == d_omega
d_omega = solve(equ1, x);

d_lambda1 = subs(d_lambda, diff(omega(t), t), d_omega);

得:

λ ˙ = R e   ( T − F x   R e ) J   v x − R e   ω   v ˙ x v x 2 (3) \dot{\lambda}=\frac{R_e\,\left(T-F_x\,R_e\right)}{J\,v_x}-\frac{R_e\,\omega\, \dot{v}_x}{{v_x}^2} \tag{3} λ˙=JvxRe(TFxRe)vx2Reωv˙x(3)

联立式(3)-(5)求解控制律:

syms k1 k2 e
equ2 = -d_lambda1 == -k1*sign(e)-k2*e;
syms d_vx
equ2 = subs(equ2, diff(vx(t), t), d_vx); % 存在导数diff时求解会出错,将diff(vx(t), t)记为d_vx

u = solve(equ2, T);

得:

T d = F x   R e 2   v x + J   k 1   s g n ( e )   v x 2 + J   R e   v ˙ x   ω + J   e   k 2   v x 2 R e   v x (6) T_d = \frac{F_x\,{R_e}^2\,v_x+J\,k_{1}\,\mathrm{sgn}\left(e\right)\,{v_x}^2+J\,R_e\,\dot{v}_x\,\omega+J\,e\,k_{2}\,{v_x}^2}{R_e\,v_x} \tag{6} Td=RevxFxRe2vx+Jk1sgn(e)vx2+JRev˙xω+Jek2vx2(6)

注意到式(6)中还包含未知量 F x F_x Fx F x F_x Fx可通过魔术公式等轮胎模型得到较为准确的估计,但这在实车中对车辆状态的实时感知有很高的要求,而从上一篇理论基础中可感受到滑模控制鲁棒性之强大(可适应完全未知的 f ( x ) f(x) f(x)), F x F_x Fx可粗略地计算为:

F x = μ F z F_x=\mu F_z Fx=μFz

式中, μ \mu μ为路面附着系数, F z F_z Fz为轮胎载荷,轮胎载荷也可进一步建模计算,此处不再展开。
或:

F x = ξ m A x F_x=\xi mA_x Fx=ξmAx

式中, m m m为整车质量, A x A_x Ax为车辆的纵向加速度, ξ \xi ξ为将合力 F = m A x F=mA_x F=mAx分配到目标驱动轮的系数,可结合具体情况分析。
在下文中将对比 F x F_x Fx的准确度对控制效果的影响。

(3)系统稳定性分析

联立式(3)(4)(6)反求 s ˙ \dot{s} s˙

d_error = -subs(d_lambda1, T, u);
d_error = -subs(d_error, d_vx, diff(vx(t), t));
d_error = simplify(d_error);
pretty(d_error)

得:

s ˙ = − k 1 s g n ( e ) − k 2 e \dot{s} = -k_1 \mathrm{sgn}(e) - k_2e s˙=k1sgn(e)k2e

其实就是先前设计得趋近律。
设李雅普诺夫函数 V ( s ) = 1 2 s 2 V(s)=\frac{1}{2}s^2 V(s)=21s2,有 V ˙ ( s ) = s s ˙ \dot{V}(s)=s\dot{s} V˙(s)=ss˙,显然满足:
(1) V ( s ) V(s) V(s)正定
(2) V ˙ ( s ) \dot{V}(s) V˙(s)负定
(3)当 ∣ ∣ s ∣ ∣ → ∞ ||s|| \to \infty ∣∣s∣∣ V ( s ) → ∞ V(s) \to \infty V(s)
故系统渐近稳定,有当 t → ∞ t \to \infty t s → 0 s \to 0 s0
此处滑模面 s = e s=e s=e比较特殊,但同样可使误差趋向于0。
可尝试使用 s = e ˙ + c e s=\dot{e}+ce s=e˙+ce作为滑模面,可预见的是,公式将更加复杂,并引入了更高阶的状态导数,如 v ¨ x \ddot{v}_x v¨x ω ¨ \ddot{\omega} ω¨,在实车部署时将对车辆状态感知带来挑战。

仿真与分析

仿真将通过CarSim与Simulink联合仿真进行。

(1)代码实现

式(6)给出了TCS的目标转矩(记为 T t T_{t} Tt),但在车辆运行中TCS应只在车手给出的驱动转矩(记为 T r T_r Tr)过大时才介入,且 T t ≥ 0 T_{t} \ge 0 Tt0,最终输出的转矩 T d T_d Td为:

T d = m i n ( T r , m a x ( T t , 0 ) ) T_d=\mathrm{min}(T_r, \mathrm{max}(T_t,0)) Td=min(Tr,max(Tt,0))

在Simulink建立仿真模型:

在这里插入图片描述

(2)仿真结果分析

上帝模式(使用CarSim提供的准确 F x F_x Fx

将参数 k 2 k_2 k2设为500, k 1 k_1 k1设为0,假设车手进行全力加速(设 T r = 800 T_r=800 Tr=800Nm),得到的控制效果如下:
在这里插入图片描述
(图中kappa为滑移率、目标滑移率为0.12,error为误差,Torque为驱动轮输出的扭转)
将参数 k 2 k_2 k2设为500, k 1 k_1 k1设为100,假设车手进行全力加速(设 T r = 800 T_r=800 Tr=800Nm),得到的控制效果如下:
在这里插入图片描述
可见,系统建模足够准确时,
k 1 k_1 k1设为0,即不引入滑模等速趋近项 s ˙ 1 = − k 1 s g n ( e ) \dot{s}_1=-k_1 \mathrm{sgn}(e) s˙1=k1sgn(e)也可取得很好的效果(类似于反演控制器),
k 1 k_1 k1设为100后,即引入滑模等速趋近项 s ˙ 1 = − k 1 s g n ( e ) \dot{s}_1=-k_1 \mathrm{sgn}(e) s˙1=k1sgn(e)(也称滑模项,滑模控制的灵魂),出现了滑模控制常见的抖动问题,且剧烈跳变的控制动作需要我们关注和优化。

常规模式(设 F x F_x Fx为常值)

将参数 k 2 k_2 k2设为500, k 1 k_1 k1设为0,假设车手进行全力加速(设 T r = 800 T_r=800 Tr=800Nm),得到的控制效果如下:
在这里插入图片描述
将参数 k 2 k_2 k2设为500, k 1 k_1 k1设为100,假设车手进行全力加速(设 T r = 800 T_r=800 Tr=800Nm),得到的控制效果如下:
在这里插入图片描述
对比可见引入滑模等速趋近项 s ˙ 1 = − k 1 s g n ( e ) \dot{s}_1=-k_1 \mathrm{sgn}(e) s˙1=k1sgn(e)的优越性,滑模控制强大的鲁棒性可兼容不准确的系统模型。

注意:本文TCS存在参数、抖动问题等必须优化的地方,应用时需针对特定车辆进行优化。尤其在实车部署时需注意安全!在实车中,影响驱动力矩的控制策略具有危险性,任意的BUG可能会造成严重后果,部署控制策略前应针对实车进行充分的验证与评估,实验时做好防护工作,谨防失控!

结语:在中国大学生方程式赛事中,一些强队拥有研究生成员来进行整车控制策略开发,但大部分车队还是靠本专科阶段的学生进行设计,其实现已有许多书籍、文献给出了相关控制器设计方案,对于初学阶段的本专科学生而言,可能还比较缺乏查找和翻阅相关专业资料的能力,希望本文能给大家在车辆控制的路上提供帮助。

未来计划:
写博客还是比较耗时间,如果能为大家提供帮助的话,后续将陆续分享整车动力学建模、基于LQR/MPC的自动驾驶控制算法等。
如果觉得文章对您有帮助,可以通过打赏功能为控制老哥加鸡腿>>欢迎大家点赞、关注、在评论区留言讨论<<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车队老哥记录生活

支持作者创作更多免费好文~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值