基于扩展卡尔曼滤波(EKF)的车辆状态估计——为初学者开启的探索之旅
基于扩展卡尔曼滤波(EKF)的车辆状态估计(采用基于Dugoff轮胎的七自由度车辆动力学模型,B09商品基础上建模) 1.软件: MATLAB 2018以上;CarSim 2020.0 2.商品介绍: (1)基于Dugoff轮胎模型和车身动力学公式,搭建7DOF车辆动力学Simulink模型,对相关变量(质心侧偏角,横摆角速度,纵、横向速度及加速度)进行CarSim对比验证。 (2)采用EKF估计车辆质心侧偏角、横摆角速度及纵向车速。 包括:S函数编写EKF、Simulink自带EKF模块两种方式。 (3)在线性状态方程下使用的EKF,即质心侧偏角、横摆角速度的表达式是线性方程。 整体逻辑清晰,界面整洁舒适,适合初学者入门学习。

在车辆动力学研究领域,准确估计车辆状态至关重要。今天咱们就来讲讲基于扩展卡尔曼滤波(EKF)的车辆状态估计,采用的可是基于 Dugoff 轮胎的七自由度车辆动力学模型,而且是在 B09 商品基础上建模哦。
一、软件准备
本次研究用到的软件是 MATLAB 2018 以上版本以及 CarSim 2020.0 。MATLAB 强大的计算与仿真能力,搭配 CarSim 专业的车辆动力学仿真功能,简直是天作之合。
二、商品介绍
1. 搭建 7DOF 车辆动力学 Simulink 模型
基于 Dugoff 轮胎模型和车身动力学公式,咱们搭建 7DOF 车辆动力学 Simulink 模型。这个模型可不简单,它能对质心侧偏角、横摆角速度、纵横向速度及加速度这些关键变量进行精确模拟。

比如说,在 Simulink 里搭建模型的时候,就像搭乐高一样,每个模块都有它的作用。以质心侧偏角的计算模块为例:
% 假设这里有一些基础参数
m = 1500; % 车辆质量
lf = 1.2; % 质心到前轴距离
lr = 1.5; % 质心到后轴距离
v = 20; % 车速
% 质心侧偏角近似计算公式
beta = atan((lr * delta_f - lf * delta_r) / (lf + lr)) / v;
这里通过车辆的一些基本参数(质量、轴距分配等),再结合前后轮转角,就可以近似计算出质心侧偏角。然后把这些模块按照车辆动力学的逻辑关系连接起来,就构成了完整的 7DOF 模型。最后还要和 CarSim 进行对比验证,确保模型的准确性。
2. 采用 EKF 估计车辆状态
S 函数编写 EKF
咱们可以通过 S 函数来编写 EKF。S 函数就像是一个自定义的小工厂,按照我们的要求生产数据。
function [sys,x0,str,ts] = ekf_sfunc(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 2,
sys=mdlUpdate(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
case 4,
sys=mdlGetTimeOfNextVarHit(t,x,u);
case 9,
sys=mdlTerminate(t,x,u);
otherwise
DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
end
这段代码是 S 函数的基本框架,不同的 case 对应不同的功能。case 0 初始化参数,case 1 计算导数(在 EKF 里可能用不到),case 2 更新状态,case 3 输出估计值等等。我们在这个框架里填充 EKF 的具体算法,就可以实现对质心侧偏角、横摆角速度及纵向车速的估计。
Simulink 自带 EKF 模块
Simulink 本身也提供了 EKF 模块,使用起来更加方便。就像直接买了个组装好的玩具,只要把参数设置好就能用。我们只需要把车辆模型的输出连接到 EKF 模块的输入,再设置好状态转移矩阵、观测矩阵等参数,就能轻松得到估计值。
3. 线性状态方程下的 EKF
这里我们使用的是线性状态方程下的 EKF,也就是说质心侧偏角、横摆角速度的表达式是线性方程。这样做的好处是计算相对简单,对于初学者来说更容易理解和上手。

基于扩展卡尔曼滤波(EKF)的车辆状态估计(采用基于Dugoff轮胎的七自由度车辆动力学模型,B09商品基础上建模) 1.软件: MATLAB 2018以上;CarSim 2020.0 2.商品介绍: (1)基于Dugoff轮胎模型和车身动力学公式,搭建7DOF车辆动力学Simulink模型,对相关变量(质心侧偏角,横摆角速度,纵、横向速度及加速度)进行CarSim对比验证。 (2)采用EKF估计车辆质心侧偏角、横摆角速度及纵向车速。 包括:S函数编写EKF、Simulink自带EKF模块两种方式。 (3)在线性状态方程下使用的EKF,即质心侧偏角、横摆角速度的表达式是线性方程。 整体逻辑清晰,界面整洁舒适,适合初学者入门学习。

比如说质心侧偏角的线性表达式:
beta_dot = - (C_f + C_r) / (m * v) * beta - (C_f * lf - C_r * lr) / (m * v^2) * r + C_f / m * delta_f;
这里 betadot 是质心侧偏角的变化率,Cf、Cr 分别是前后轮侧偏刚度,deltaf 是前轮转角。通过这样的线性方程,我们可以在 EKF 算法里更好地处理和估计质心侧偏角的状态。

整个研究从模型搭建到状态估计,逻辑清晰,界面也尽量做到整洁舒适,特别适合初学者入门学习。希望大家通过这篇博文,对基于 EKF 的车辆状态估计有更深入的了解,也能在自己的学习和研究中顺利上手。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)