📈 算法与建模 | 专注数据分析与智能模型设计
✨ 擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。
💡 matlab、python、仿真、PLC设计、信号数据

✅ 具体问题可以私信或查看文章底部二维码

✅ 感恩科研路上每一位志同道合的伙伴!

(1)分布式线控底盘车辆模型的建立
分布式线控底盘车辆因其驱动、转向、制动等系统均采用线控技术,具备高度模块化、控制灵活、信息感知能力强等优势,为车辆状态估计与故障诊断提供了良好的硬件基础。在构建车辆状态估计算法前,必须建立能够准确反映车辆动态特性的动力学模型。本文所建立的模型以四轮独立驱动、四轮独立转向的分布式线控底盘为基础,综合考虑纵向、侧向与横摆运动,并引入非线性轮胎模型以提升模型在极限工况下的准确性。模型中,车辆被简化为具有六个自由度的刚体系统,包括三个平动自由度(纵向、侧向、垂向)和三个转动自由度(横摆、侧倾、俯仰),其中垂向、侧倾和俯仰运动在低速和常规行驶工况下对状态估计影响较小,因此在状态估计算法中主要关注纵向、侧向与横摆三个自由度。轮胎模型采用修正的Pacejka魔术公式,能够较好地描述轮胎在不同附着系数、侧偏角和垂直载荷下的非线性特性。此外,模型还考虑了四轮独立驱动带来的驱动力矩分配特性,以及四轮独立转向带来的转向几何变化,从而更真实地反映分布式线控底盘车辆的运动行为。为验证所建模型的准确性,选取典型工况如双移线、蛇形绕桩、阶跃转向等,在CarSim中建立相同参数的车辆模型进行对比仿真。仿真结果显示,在相同输入条件下,所建模型与CarSim模型在横摆角速度、质心侧偏角、纵向与侧向加速度等关键状态变量上的误差均控制在5%以内,表明所建非线性动力学模型具备较高的精度,能够满足后续状态估计与故障诊断算法对模型准确性的要求。

(2)车轮转角传感器故障诊断算法的建立
车轮转角作为车辆状态估计和线控转向控制的关键输入量,其准确性直接影响整车控制性能。然而,在实际运行中,车轮转角传感器易受电磁干扰、机械磨损、连接松动或环境温湿度变化等因素影响,导致信号漂移、阶跃跳变、完全失效等故障。为解决该问题,本文提出一种基于线控转向电机模型与扩展卡尔曼滤波(EKF)相结合的车轮转角软测量与故障诊断方法。首先,针对线控转向系统中的转向电机,建立其机电耦合动态模型,将电机电流、电压、转速等可测信号作为输入,通过模型推导出车轮转角的理论估计值。该模型充分考虑了电机反电动势、电感、电阻、摩擦力矩及传动机构间隙等非线性因素,确保在传感器正常时估计值与实测值高度一致。在此基础上,设计扩展卡尔曼滤波器,将电机模型作为系统方程,将传感器实测值作为观测值,实时估计车轮转角状态。滤波器输出的估计值与传感器实测值之间形成残差信号,该残差在传感器正常工作时应服从零均值高斯分布。当传感器发生故障时,残差幅值显著增大或统计特性发生偏移。为此,引入卡方检验方法对残差进行在线统计分析,设定合理的阈值窗口,一旦残差超出置信区间,则判定为传感器故障。故障诊断触发后,系统立即切换至EKF估计值作为车轮转角输入,确保后续状态估计与控制算法不受影响。为验证算法鲁棒性,设计多种典型故障场景,包括缓慢漂移故障(模拟传感器老化)、阶跃跳变故障(模拟信号干扰)、完全失效故障(模拟断线)等,在MATLAB/Simulink中搭建闭环仿真平台,结合所建车辆模型进行测试。仿真结果表明,所提方法能够在100毫秒内准确识别各类故障,并在故障后维持车轮转角估计误差在±0.5°以内,满足线控底盘对高精度转向信息的需求。此外,算法计算量适中,可在车载嵌入式平台实时运行,具备良好的工程应用前景。

(3)车辆状态估计算法的设计
在分布式线控底盘中,尽管可获取四轮转角、各轮驱动力矩、电机转速等丰富信息,但车辆关键状态如质心侧偏角、横摆角速度、纵向/侧向速度等仍难以直接测量,需依赖状态估计算法。传统基于固定参数模型的估计算法(如卡尔曼滤波、无迹卡尔曼滤波)在车辆质量参数(如整车质量、质心位置)发生显著变化(如载重变化、乘客上下车)时,估计精度会明显下降,甚至导致控制失稳。为此,本文提出一种融合车辆质量在线估计与双无迹粒子滤波(Dual UPF)架构的车辆状态估计算法。首先,设计车辆质量融合估计器:一方面,利用递归最小二乘法(RLS)基于纵向动力学方程(驱动力=质量×加速度+阻力)实时辨识整车质量;另一方面,构建K-最邻近(KNN)回归模型,以历史行驶数据(如加速度、驱动力、坡度、车速)为输入,预测当前质量。两种方法输出通过加权融合策略进行整合,其中RLS适用于稳态工况,KNN适用于瞬态或复杂工况,融合后可提升质量估计的鲁棒性与精度。其次,构建双观测器架构的状态估计器:主观测器采用无迹粒子滤波,利用车辆非线性动力学模型和传感器数据(包括经故障诊断后可靠的车轮转角、轮速、IMU数据等)估计车辆运动状态;辅助观测器则专注于模型参数(主要是质量)的估计,并将实时更新的质量参数反馈至主观测器模型中,形成闭环校正。该架构有效解耦了状态与参数估计,避免了传统联合估计中计算复杂度高、收敛慢的问题。为进一步提升KNN算法的适应性,设计数据集自更新机制:在车辆正常行驶过程中,持续采集高质量的运行数据(如通过高精度RTK-GPS与惯导融合获得的真值),对KNN训练集进行滚动更新,剔除老旧或低质量样本,加入新工况数据,从而实现算法的在线自学习与性能提升。

function [wheel_angle_est, fault_flag, vehicle_states] = main_estimation(t, u, y)
persistent x_ekf P_ekf x_upf P_upf mass_est mass_knn mass_fused dataset_knn kdtree_knn time_init
if isempty(time_init)
    x_ekf = zeros(2,1);
    P_ekf = eye(2)*0.1;
    x_upf = zeros(6,100);
    for i=1:100
        x_upf(:,i) = [10; 0; 0; 0; 0.1; 1500];
    end
    P_upf = eye(6);
    mass_est = 1500;
    mass_knn = 1500;
    mass_fused = 1500;
    dataset_knn = [10*rand(1,50); 2*rand(1,50); 0.5*rand(1,50); 0.1*rand(1,50); 1500+200*randn(1,50)]';
    kdtree_knn = KDTreeSearcher(dataset_knn(:,1:4));
    time_init = 1;
end

dt = t(2)-t(1);
wheel_angle_sensor = y(1);
motor_current = u(1);
motor_voltage = u(2);
v_long = y(2);
v_lat = y(3);
yaw_rate = y(4);
ax = y(5);
ay = y(6);
T_drive = u(3);

[x_ekf, P_ekf] = ekf_wheel_angle(x_ekf, P_ekf, motor_current, motor_voltage, wheel_angle_sensor, dt);
residual = wheel_angle_sensor - x_ekf(1);
S = P_ekf(1,1) + 0.01;
T2 = (residual^2)/S;
fault_flag = T2 > chi2inv(0.99,1);
if fault_flag
    wheel_angle_est = x_ekf(1);
else
    wheel_angle_est = wheel_angle_sensor;
end

mass_est = rls_mass_est(mass_est, ax, T_drive, v_long, dt);
mass_knn = knn_mass_est(kdtree_knn, dataset_knn, [v_long; ax; ay; yaw_rate]);
w_rls = 0.7;
w_knn = 0.3;
mass_fused = w_rls*mass_est + w_knn*mass_knn;

x_upf = dual_upf_update(x_upf, wheel_angle_est, v_long, v_lat, yaw_rate, ax, ay, T_drive, mass_fused, dt);
vehicle_states = mean(x_upf,2);

if mod(length(t),100)==0
    new_sample = [v_long; ax; ay; yaw_rate; mass_fused];
    dataset_knn = [dataset_knn; new_sample'];
    if size(dataset_knn,1)>200
        dataset_knn = dataset_knn(end-199:end,:);
    end
    kdtree_knn


如有问题,可以直接沟通

👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇

更多推荐