1. 差动驱动电动汽车控制策略概述
两轮独立驱动电动汽车通过左右轮差异化扭矩分配实现转向控制,这种差动驱动方式相比传统机械差速器具有响应快、控制灵活的优势。在实际开发中,我们通常采用CarSim与Simulink联合仿真的方式验证控制策略,其中最关键的就是高低速双模式力矩分配算法。
低速工况(通常低于15kph)下,我们采用基于阿克曼转向几何的差速控制策略。这种策略的核心在于根据转向角度动态分配内外轮驱动力矩,确保轮胎不发生过度滑移。当车速超过阈值时,系统自动切换至高速控制模式,此时采用分层控制架构:上层控制器根据横摆角速度偏差计算所需的附加扭矩,下层优化分配器将总需求扭矩与附加扭矩合理分配到左右驱动轮。
2. 联合仿真环境搭建要点
2.1 CarSim参数配置
在CarSim中配置差动驱动电动汽车模型时,需要特别注意以下几个参数设置:
-
车辆动力学参数:
- 整备质量:直接影响加速度和力矩需求计算
- 轴距:决定阿克曼转向几何关系
- 轮距:影响内外轮转速差计算
- 轮胎特性:魔术公式参数版本必须与实验数据匹配
-
驱动系统配置:
cpar复制[Powertrain] Drive_Type = "Independent Rear" Motor_Max_Torque = 300 ; Nm Motor_Response_Time = 0.05 ; sec -
转向系统参数:
- 主销后倾角:建议设置为5-7度,确保方向盘自动回正特性
- 转向传动比:影响转向灵敏度
2.2 Simulink接口设计
CarSim与Simulink的接口设计直接影响联合仿真效果,关键点包括:
-
通信周期同步:
- CarSim仿真步长建议设置为0.001s
- Simulink固定步长应与CarSim保持一致
- 控制算法周期可设为0.01s(100Hz)
-
信号映射:
m复制% 输入信号 Vx = CarSimOut.Vx; % 车速 delta = CarSimOut.Steer_Angle; % 转向角 yaw_rate = CarSimOut.Yaw_Rate; % 横摆角速度 % 输出信号 CarSimIn.Torque_L = T_L; % 左轮扭矩 CarSimIn.Torque_R = T_R; % 右轮扭矩
3. 低速阿克曼差速控制实现
3.1 阿克曼转向几何建模
阿克曼转向几何决定了低速转向时内外轮的理论转速比:
code复制delta_ref = atan2(L*Kv, R + Tv)
其中:
- L:轴距(m)
- Kv:转向灵敏度系数
- R:转向半径(m)
- Tv:轮距的一半(m)
3.2 力矩分配算法
基于阿克曼几何的力矩分配采用查表法实现:
m复制breakpoints_L = [0:0.1:30]; % 转向角范围(deg)
tableData = (R./(R + Tv*tan(delta))).*T_total; % 内外轮力矩比
实际调试中发现的问题及解决方案:
- 查表精度不足导致转向抖动 → 改用三次样条插值
- 硬切换导致力矩阶跃 → 增加5kph的滞后区间
- 方向盘"抽风"现象 → 同步调整CarSim主销后倾角
重要提示:低速模式下的力矩分配曲线需要根据实车测试数据进行校准,特别是在不同路面附着系数条件下。
4. 高速分层控制策略详解
4.1 上层控制器设计
上层控制器负责根据车辆状态偏差计算附加横摆力矩:
m复制function T_add = Upper_Controller(yaw_error, beta)
% yaw_error: 横摆角速度误差
% beta: 车身侧偏角
Kp = 120; % 比例增益
Ki = 25; % 积分增益
Kd = 8; % 微分增益
persistent integral_error
if isempty(integral_error)
integral_error = 0;
end
integral_error = integral_error + yaw_error*0.01; % 积分项
T_add = Kp*yaw_error + Ki*integral_error + Kd*beta;
end
4.2 下层优化分配器
采用二次规划实现力矩优化分配:
cpp复制qpOASES::QProblem qp(2, 2); // 双变量双约束
qp.setHessianType(qpOASES::HST_POSDEF);
real_t H[2*2] = {2*rho, 0, 0, 2*rho}; // 目标函数权重
real_t A[2*2] = {1, 1, T_max, -T_max}; // 等式与不等式约束
调试经验:
- 求解器卡死 → 给力矩约束增加5%缓冲裕度
- 实时性不足 → 限制迭代次数在50次以内
- 分配结果振荡 → 增加目标函数权重系数rho
5. 模式切换逻辑优化
5.1 车速阈值确定
初始切换阈值设为15kph,但实际应用中需要根据车辆参数调整:
code复制V_threshold = sqrt(2*mu*g*L/(Kus*Tv))
其中:
- mu:路面附着系数
- g:重力加速度
- Kus:不足转向梯度
5.2 状态机设计
为避免频繁模式跳变,采用带滞环的状态机:
m复制if (Vx < V_low) && (mode == HIGH_SPEED)
mode = LOW_SPEED;
elseif (Vx > V_high) && (mode == LOW_SPEED)
mode = HIGH_SPEED;
end
建议:
- V_low = 12kph
- V_high = 18kph
- 增加最小驻留时间0.5s
6. 典型问题排查指南
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 低速转向抖动 | 查表精度不足 | 改用样条插值 |
| 高速工况力矩分配反向 | 轮胎参数版本错误 | 检查魔术公式参数 |
| 求解器卡死 | 约束条件过紧 | 增加5%缓冲裕度 |
| 方向盘"抽风" | 主销后倾角不匹配 | 调整CarSim转向参数 |
| 通信延迟明显 | 仿真步长不一致 | 统一设置为0.001s |
7. 实操建议与经验分享
-
参数调试顺序建议:
- 先调低速模式,确保阿克曼转向几何正确
- 再调高速上层控制器,保证横摆稳定性
- 最后优化下层分配器参数
-
路面附着系数自适应:
当检测到路面μ变化时,应动态调整:m复制if mu < 0.5 T_diff = T_diff * 1.18; % 增加18%力矩差 end -
实时性优化技巧:
- 将QP求解器改为热启动模式
- 预计算并存储阿克曼分配曲线
- 使用S-function替代Interpreted MATLAB Function
在最后测试阶段,建议从低速到高速进行扫频测试,重点关注15kph左右的过渡区域表现。实际工程应用中,我们发现在沥青路面(μ=0.8)到湿滑路面(μ=0.3)的转变过程中,系统能够自动调整力矩分配策略,这种自适应特性显著提升了车辆在各种工况下的稳定性。