news 2026/6/10 14:59:52

基于扩展卡尔曼滤波(EKF)的车辆状态估计——为初学者开启的探索之旅

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于扩展卡尔曼滤波(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,也就是说质心侧偏角、横摆角速度的表达式是线性方程。这样做的好处是计算相对简单,对于初学者来说更容易理解和上手。

比如说质心侧偏角的线性表达式:

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是质心侧偏角的变化率,CfCr分别是前后轮侧偏刚度,deltaf是前轮转角。通过这样的线性方程,我们可以在 EKF 算法里更好地处理和估计质心侧偏角的状态。

整个研究从模型搭建到状态估计,逻辑清晰,界面也尽量做到整洁舒适,特别适合初学者入门学习。希望大家通过这篇博文,对基于 EKF 的车辆状态估计有更深入的了解,也能在自己的学习和研究中顺利上手。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 7:54:14

从海外硕士到AI产品经理,他的转型之路藏着一个关键选择

一、 一段“跨界”成功的启示近日,一位拥有韩国知名大学硕士学位的朱同学,成功斩获了令人心动的AI产品经理Offer。这份工作,无论在薪资待遇、团队氛围还是未来平台上,都完全符合甚至超出了他最初的预期。他的故事并非简单的“学霸…

作者头像 李华
网站建设 2026/6/9 9:29:50

华硕笔记本性能调优新选择:G-Helper实战经验分享

华硕笔记本性能调优新选择:G-Helper实战经验分享 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: ht…

作者头像 李华
网站建设 2026/6/10 9:19:04

(新卷,200分)- 最长子字符串的长度(二)(Java JS Python C)

(新卷,200分)- 最长子字符串的长度(二)(Java & JS & Python & C)题目描述给你一个字符串 s,字符串 s 首尾相连成一个环形,请你在环中找出 l、o、x 字符都恰好出现了偶数次最长子字符串的长度。输入描述输入是一串小写…

作者头像 李华
网站建设 2026/6/10 9:22:10

(新卷,200分)- 字符串比较(Java JS Python)

(新卷,200分)- 字符串比较(Java & JS & Python)题目描述给定字符串A、B和正整数V,A的长度与B的长度相等, 请计算A中满足如下条件的最大连续子串的长度:该连续子串在A和B中的位置和长度均相同。该连续子串|A[i]…

作者头像 李华
网站建设 2026/6/10 9:22:13

OpenHarmony LiteOS-A/M 版本迭代与演进对照

一、内核与系统类型对应表系统类型适用内核最小内存硬件架构典型设备OpenHarmony主版本支持轻量系统LiteOS-M128KBCortex-M3/M4/M7, RISC-V传感器、智能手环、IoT模组1.0小型系统LiteOS-A1MBCortex-A系列(带MMU)IP Camera、电子猫眼、路由器2.0小型系统L…

作者头像 李华