基于二自由度汽车模型的汽车质心侧偏角估计

一、质心侧偏角介绍

在车辆坐标系中,质心侧偏角通常定义为质心速度方向与车辆前进方向的夹角。如下图所示,u为车辆前进方向,v为质心速度方向,uv之间的夹角便是质心侧偏角。

 质心侧偏角的作用有如下三点:

1、稳定性评估,转弯过程中,质心侧偏角可以反映车辆的姿态变化,过大或者过小都可能导致车辆失去稳定性,通过监控质心侧偏角,可以提高车辆在转弯时的稳定性。

2、操控性优化,合适的侧偏角可以使车辆更容易控制,提高驾驶员对车辆的操控性和响应度。

3、车辆姿态控制,质心侧偏角是很多车辆动态控制系统的重要输入参数,如ESC

质心侧偏角不容易由传感器直接测量得到,在实际应用中,质心侧偏角常常使用估算的方法得到。本篇博客中,使用卡尔曼滤波器,基于车辆二自由度模型,进行质心侧偏角估计。

关于卡尔曼滤波器的使用,可以查看博主往期文章。

三个实例迅速掌握经典卡尔曼滤波用法_卡尔曼滤波 实例-优快云博客

二、 二自由度模型的推导

在汽车理论第五章,以下三页有推导过程,心急的小伙伴可以直接看结论。

最终得到以下这组方程:

式子中,

m,整车质量;k1为前轮侧偏刚度;k2为后轮侧偏刚度;β为质心侧偏角;a为质心到前轴距离;b为质心到后轴距离;u为车速;δ为前轮转角;wr为横摆角速度;Iz为汽车转动惯量;v为车辆坐标系下的侧向速度。这几个量中,k1,k2,a,b,Iz为车辆固定参数;u为车速,直接测量得到;δ,前轮转角,也很容易由方向盘转角就可以换算得到;wr,陀螺仪直接采集得到。只有β质心侧偏角无法由传感器直接测量得到。

本篇文章中,通过已知的观测量横摆角速度Wr和方向盘转角δ,用卡尔曼观测器估计,初步估计质心侧偏角,并与carsim中质心侧偏角进行对比。

三、状态空间方程推导

四、与carsim联合仿真

目前仍在以下两问题:1、确保质心侧偏角估算准确的情况下,轮胎侧偏刚度k1,k2与carsim中的轮胎侧向力曲线对不上;2、低速(50km/h)以下时,侧偏角估算震荡。

五、模型与脚本

需要模型的同学们,还是在某宝店  极简车辆控制

包含以下几个文件

1、双击carsim图标,打开carsim,选择红框中的按钮,并continue;

2、选择文件夹中的发货文件夹中的.cpar文件,并按照提示,创建一个文件夹,用于存放carsim工程,在接下来的对话框中,直接按照默认的第一个,点击select,出现进度条,导入完成后,会弹出carsim界面。

3、更改simulink模型路径,

先解锁,再点击simlink模型名称,蓝色位置。

在这个界面中,同样需要先解锁,然后把这两个路径设置到存放simulink模型的位置。注意,路径最好不要有中文名。

4、点击home,返回主界面,点击Send to Simulink,可以打开matlab,并打开simulink模型。

5、运行simulink模型即可。

6、仿真环境

博主用的是carsim 2019+matlab2022b版本。

carsim建议用2019版本,下载及按照过程可参照b站链接:

最新!Carsim2019详细安装教程【附安装包】_哔哩哔哩_bilibili

如果你的matlab不是2022b版本,注意核对下carsim工程中这个matlab版本选项。

同时,这里选择另存的2018b版本模型。注意,路径最好不要有中文名。

### 绘制UniTire轮胎模型中偏力与向力的关系 为了绘制UniTire轮胎模型中的偏角向力之间的关系曲线,可以通过编程实现这一过程。下面分别介绍使用Python和MATLAB的方法。 #### 使用Python绘制偏角向力之间关系 在Python环境中,通常会利用`numpy`库处理数据计算以及`matplotlib.pyplot`来完成绘图工作。假设已经获取到描述该关系的数据集或者是能够通过特定公式计算得到这些数值,则具体操作如下: ```python import numpy as np import matplotlib.pyplot as plt def un tire_side_force(alpha, F_z): """ 计算基于UniTire模型下的向力 参数: alpha (float): 偏角(弧度) F_z (float): 垂直载荷 返回: float: 对应于输入偏角向力值 """ # 这里仅提供了一个简化版的例子用于说明, # 实际应用时应当依据具体的UniTire参数调整此函数逻辑。 C_alpha = 1800 * F_z / 9.81 # 轮胎偏刚度系数估计 S_alpha = 0.07 # 形状因子预估值 f_y = C_alpha * np.arctan(S_alpha * alpha) return f_y alpha_values = np.linspace(-np.pi/6, np.pi/6, num=500) # 定义一系列偏角度范围 F_z_value = 5000 # 设定垂直载荷大小为例示目的设为固定值 f_y_results = [un_tire_side_force(a, F_z_value) for a in alpha_values] plt.figure(figsize=(8, 6)) plt.plot(np.degrees(alpha_values), f_y_results) plt.title('Side Force vs Slip Angle') plt.xlabel('Slip Angle ($\\degree$)') plt.ylabel('Lateral Force (N)') plt.grid(True) plt.show() ``` 上述代码片段展示了如何创建一个简单的模拟环境并调用自定义函数`un_tire_side_force()`来进行单次仿真运算,最后将结果可视化出来[^1]。 #### 使用MATLAB绘制偏角向力间关系 对于MATLAB用户来说,可以直接采用内置的功能强大的图形界面工具箱Simulink构建更复杂的物理系统模型,也可以简单地编写脚本来快速生成所需图表。以下是后者的一个实例: ```matlab function plot_uni_tire_lateral_force_vs_slip_angle(Fz) %UNTIRE_LATERAL_FORCE_VS_SLIP_ANGLE Plots lateral force versus slip angle using UniTire model. % % Inputs: % Fz - Vertical load on the wheel. if nargin < 1 || isempty(Fz) error('Input argument "Fz" is required.'); end; alpha_deg = linspace(-30, 30, 500); % Define range of slip angles from -30° to +30° with fine resolution alpha_rad = deg2rad(alpha_deg); C_alpha = 1800 * Fz / 9.81; % Estimate side stiffness coefficient based on vertical loading S_alpha = 0.07; % Preset shape factor value fy = C_alpha .* atan(S_alpha .* alpha_rad); figure; plot(alpha_deg, fy); title({'Lateral Force Versus Slip Angle'; ... ['For Fixed Vertical Load:', num2str(Fz)]}); xlabel('Slip Angle (\circ)'); ylabel('Lateral Force (N)'); grid on; end ``` 这段MATLAB代码同样实现了对不同偏角下产生的向力进行预测,并将其以折线形式展示出来。值得注意的是,在实际工程实践中,应该根据所使用的具体版本的UniTire模型调整内部参数设置[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极简车辆控制

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值