分布式驱动汽车稳定性控制:从模型搭建到控制策略探索
分布式驱动汽车稳定性控制。 采用纯Simulink模型搭建,包括控制策略和车辆动力学模型。 采用分层式直接横摆力矩控制,上层包括模型预测MPC,滑模控制SMC,PID控制,LQR控制。 可灵活对四种控制器对比和选择。 另外下层基于轮胎滑移率最优分配。 四种控制均可跟踪横摆角速度和质心侧偏角期望值。 车辆被控对象采用七自由度整车模型输出实际质心侧偏角和横摆角速度,二自由度模型输出理想质心侧偏角和横摆角速度。

在汽车领域,分布式驱动汽车稳定性控制一直是个热门且关键的研究方向。今天就和大家聊聊我在这方面采用纯Simulink模型搭建所做的一些工作,包括控制策略和车辆动力学模型的构建。
模型搭建
我们采用纯Simulink模型搭建整个系统,这其中车辆动力学模型至关重要。车辆被控对象采用七自由度整车模型,这个模型能够输出实际质心侧偏角和横摆角速度,比如通过如下代码(伪代码示例)来大概描述其核心部分:
% 七自由度整车模型核心部分代码示意
% 定义一些常量和初始参数
m = 1500; % 车辆质量
Iz = 2500; % 绕z轴转动惯量
lf = 1.2; % 前轴到质心距离
lr = 1.3; % 后轴到质心距离
% 状态变量:质心侧偏角beta,横摆角速度r,车速u
beta = 0;
r = 0;
u = 20;
% 一些计算,这里简化示意
Fyf = 1000; % 假设的前轮侧向力
Fyr = 1200; % 假设的后轮侧向力
% 横摆力矩
Mz = lf * Fyf - lr * Fyr;
% 更新横摆角速度
r_dot = Mz / Iz;
r = r + r_dot * dt;
% 更新质心侧偏角
beta_dot = (Fyf + Fyr) / (m * u) - r;
beta = beta + beta_dot * dt;
上述代码简单展示了七自由度整车模型中横摆角速度和质心侧偏角的更新计算逻辑。同时,我们还有二自由度模型,它输出理想质心侧偏角和横摆角速度。
分层式直接横摆力矩控制
采用分层式直接横摆力矩控制是这个项目的亮点。上层包含多种控制策略,有模型预测MPC、滑模控制SMC、PID控制以及LQR控制,这使得我们可以灵活地对这四种控制器进行对比和选择。
MPC控制
模型预测控制(MPC),它基于预测未来系统状态并通过优化目标函数来确定控制输入。在Simulink中搭建MPC控制器时,我们需要定义预测时域、控制时域等参数。代码方面,以Matlab的MPC设计为例:
% MPC设计代码示意
% 定义系统模型
sys = ss(A, B, C, D);
% 设置MPC参数
mpcobj = mpc(sys);
mpcobj.Np = 10; % 预测时域
mpcobj.Nc = 3; % 控制时域
% 设置权重矩阵
mpcobj.Wu = 1;
mpcobj.Wy = 10;
这段代码创建了一个简单的MPC对象,并设置了预测时域、控制时域以及权重矩阵等关键参数。MPC通过不断滚动优化来跟踪横摆角速度和质心侧偏角期望值。
SMC滑模控制
滑模控制(SMC)则是通过设计一个滑模面,使系统状态在滑模面上滑动并最终达到稳定。在Simulink中搭建SMC控制器的关键在于滑模面的设计和控制律的推导。假设滑模面为:$s = Cx - r{ref}$($x$为系统状态,$r{ref}$为横摆角速度期望值),控制律可能类似这样(代码示意):
% SMC控制律代码示意
% 定义参数
k = 5; % 控制增益
epsilon = 0.1; % 边界层厚度
% 滑模面计算
s = C * x - r_ref;
% 控制律
if abs(s) > epsilon
u = -k * sign(s);
else
u = -k * s / epsilon;
end
上述代码展示了简单的滑模控制律计算逻辑,通过调整控制增益$k$和边界层厚度$\epsilon$来优化控制效果,实现对期望值的跟踪。
PID控制
PID控制大家都比较熟悉,它通过比例(P)、积分(I)、微分(D)环节对误差进行调节。在Simulink中搭建PID控制器很方便,在代码实现上,比如简单的PID控制代码(以跟踪横摆角速度为例):
% PID控制代码示意
% 定义参数
Kp = 10;
Ki = 0.1;
Kd = 1;
% 误差和积分项初始化
error_prev = 0;
integral = 0;
% 当前误差
error = r_ref - r;
% 积分项更新
integral = integral + error * dt;
% 微分项计算
derivative = (error - error_prev) / dt;
% PID输出
u = Kp * error + Ki * integral + Kd * derivative;
error_prev = error;
这段代码实现了基本的PID控制逻辑,通过调整$Kp$、$Ki$、$Kd$参数来优化控制性能,跟踪横摆角速度期望值。
LQR控制
线性二次型调节器(LQR)通过最小化一个二次型性能指标来确定最优控制律。在Matlab中实现LQR控制,示例代码如下:
% LQR控制代码示意
% 定义系统矩阵
A = [0 1; -1 -2];
B = [0; 1];
% 定义权重矩阵
Q = [1 0; 0 1];
R = 1;
% 求解LQR增益
[K, S, E] = lqr(A, B, Q, R);
上述代码计算出了LQR控制的增益$K$,通过这个增益来对系统进行控制,实现对横摆角速度和质心侧偏角期望值的跟踪。
下层基于轮胎滑移率最优分配
下层基于轮胎滑移率最优分配,这是为了更好地实现上层控制器输出的横摆力矩需求。通过合理分配轮胎的驱动力矩,使得每个轮胎在最优滑移率附近工作,从而提高车辆的操纵稳定性。虽然这里没有给出具体代码,但大家可以想象这是一个基于轮胎力学特性和车辆状态信息,通过算法不断调整轮胎驱动力矩分配比例的过程。

分布式驱动汽车稳定性控制。 采用纯Simulink模型搭建,包括控制策略和车辆动力学模型。 采用分层式直接横摆力矩控制,上层包括模型预测MPC,滑模控制SMC,PID控制,LQR控制。 可灵活对四种控制器对比和选择。 另外下层基于轮胎滑移率最优分配。 四种控制均可跟踪横摆角速度和质心侧偏角期望值。 车辆被控对象采用七自由度整车模型输出实际质心侧偏角和横摆角速度,二自由度模型输出理想质心侧偏角和横摆角速度。

通过这样一套从模型搭建到分层控制策略,再到轮胎滑移率最优分配的完整体系,能够有效实现分布式驱动汽车稳定性控制,并且可以通过对上层四种控制策略的灵活对比和选择,找到最适合特定工况的控制方案。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)