汽车二自由度与三自由度模型:Simulink 初学者指南
汽车二自由度模型和三自由度模型 三种不同方法搭的汽车线性二自由度simulink模型,文档里包含有具体的车辆数值 还包括关于汽车simulink仿真实例 适合初学者学习simulink使用(模型输入为前轮转角,输出为横摆角速度和速度)也有说明文档
嘿,各位想踏入汽车动力学仿真领域的小伙伴们!今天咱来聊聊汽车的二自由度模型和三自由度模型,还会讲讲用三种不同方法搭建的汽车线性二自由度 Simulink 模型,非常适合初学者上手 Simulink 哦。
汽车二自由度模型和三自由度模型基础
二自由度模型
汽车二自由度模型主要考虑车辆的侧向运动和横摆运动。想象一下,车在行驶时,不仅会直直地向前走,遇到转弯啥的,还会有侧向的移动和围绕垂直轴的转动。这就好比你开车时打方向盘,车就会转弯,同时车身还会伴随一些微小的侧向偏移。
在数学模型上,它一般基于以下动力学方程来描述:
\[
\begin{cases}
m(\dot{v}y + \omegar vx) = F{yf} + F_{yr} \\
Iz \dot{\omega}r = aF{yf} - bF{yr}

\end{cases}
\]
这里 \(m\) 是车辆质量,\(vy\) 是侧向速度,\(\omegar\) 是横摆角速度,\(vx\) 是纵向速度,\(F{yf}\) 和 \(F{yr}\) 分别是前后轮的侧向力,\(Iz\) 是车辆绕垂直轴的转动惯量,\(a\) 和 \(b\) 分别是质心到前轴和后轴的距离。
三自由度模型
相比二自由度模型,三自由度模型在侧向和横摆运动基础上,又多考虑了车辆的侧倾运动。就像你高速过弯时,车除了转弯和侧向移动,车身还会倾斜,这就是侧倾运动啦。三自由度模型更复杂一些,它的方程会在二自由度基础上增加描述侧倾的部分。不过今天咱主要先搞懂二自由度模型搭建,三自由度以后有机会再深入。
三种搭建汽车线性二自由度 Simulink 模型的方法
方法一:基于基本模块搭建
首先,打开 Simulink 新建一个模型文件。我们从最基础的模块开始搭起,比如输入模块我们选用 “In1” 来接收前轮转角输入。
% 这部分代码假设在 MATLAB 脚本中设置车辆参数
m = 1500; % 车辆质量 1500kg
Iz = 2500; % 绕垂直轴转动惯量 2500 kg·m²
a = 1.2; % 质心到前轴距离 1.2m
b = 1.5; % 质心到后轴距离 1.5m
这些参数在 Simulink 模型里后续计算力和运动时会用到。接着,通过 “Gain” 模块来实现各种系数运算,用 “Sum” 模块来进行力和力矩的求和运算。例如,计算侧向力合力的部分:
\[ F{total} = F{yf} + F_{yr} \]
汽车二自由度模型和三自由度模型 三种不同方法搭的汽车线性二自由度simulink模型,文档里包含有具体的车辆数值 还包括关于汽车simulink仿真实例 适合初学者学习simulink使用(模型输入为前轮转角,输出为横摆角速度和速度)也有说明文档
在 Simulink 里就可以用 “Sum” 模块轻松实现,将前后轮侧向力信号接入 “Sum” 模块的输入端口。再通过 “Integrator” 模块来对加速度进行积分得到速度,对速度积分得到位移。像计算横摆角速度 \(\omegar\) 时,先根据力矩方程得到横摆角加速度 \(\dot{\omega}r\),然后经过 “Integrator” 模块就得到了 \(\omega_r\)。
方法二:利用 State - Space 模块搭建
State - Space 模块可以更简洁地描述系统动态。我们先根据二自由度模型的动力学方程,整理出状态空间表达式:
\[

\begin{cases}
\dot{\mathbf{x}} = A\mathbf{x} + B\mathbf{u} \\
\mathbf{y} = C\mathbf{x} + D\mathbf{u}
\end{cases}
\]
这里 \(\mathbf{x} = \begin{bmatrix} vy \\ \omegar \end{bmatrix}\) 是状态变量,\(\mathbf{u} = \deltaf\) 是输入(前轮转角),\(\mathbf{y} = \begin{bmatrix} \omegar \\ v_x \end{bmatrix}\) 是输出。矩阵 \(A\)、\(B\)、\(C\)、\(D\) 根据车辆参数和动力学方程计算得出。
% 计算状态空间矩阵
A = [(-2 * (Caf + Car)) / (m * vx), (-2 * (a * Caf - b * Car)) / (m * vx) - vx;
(-2 * (a * Caf - b * Car)) / Iz, (-2 * (a^2 * Caf + b^2 * Car)) / (Iz * vx)];
B = [2 * Caf / m; 2 * a * Caf / Iz];
C = [0, 1; 1, 0];
D = [0; 0];
然后在 Simulink 里拖入 “State - Space” 模块,将计算好的 \(A\)、\(B\)、\(C\)、\(D\) 值填入模块参数设置中。这样就快速搭建好了基于 State - Space 的二自由度模型。
方法三:使用 Vehicle Dynamics Blockset 搭建
MATLAB 有专门的 Vehicle Dynamics Blockset,里面有很多现成的车辆相关模块,方便我们搭建模型。先在库里找到车辆模型相关模块,比如 “Vehicle Body” 模块,它可以设置车辆的基本参数如质量、轴距等。再连接 “Steering Wheel” 模块作为前轮转角输入,“Sensors” 模块来获取横摆角速度和速度输出。这个方法对于初学者来说最直观,因为很多复杂的计算都被封装在模块里了,只要设置好参数就行。
汽车 Simulink 仿真实例
假设我们设置前轮转角输入为一个阶跃信号,模拟突然打方向盘的情况。在 Simulink 模型里,添加一个 “Step” 模块作为前轮转角输入,设置好阶跃的时间和幅值。运行仿真后,就可以从输出端口看到横摆角速度和速度的变化曲线。
比如,当我们看到横摆角速度曲线在阶跃输入后快速上升,然后逐渐稳定,这就反映了车辆在打方向盘后横摆运动的响应过程。通过观察这些曲线,我们能更好地理解二自由度模型下车辆的运动特性。

而且文档里有具体的车辆数值,大家可以根据自己的需求修改参数,看看不同参数对车辆运动响应的影响。比如改变车辆质量,观察横摆角速度和速度变化的快慢,是不是很有趣呢?
希望通过这篇博文,大家对汽车二自由度模型和三自由度模型有了初步认识,也学会了用三种方法搭建汽车线性二自由度 Simulink 模型。赶紧动手试试吧,在实践中加深对 Simulink 和汽车动力学的理解!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)