✨ 长期致力于铰接车、建模、路径跟踪、稳定性控制、虚拟现实、驾驶员在环研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。
✅ 专业定制毕设、代码
✅如需沟通交流,点击《获取方式》
(1)非线性全液压转向系统动态补偿建模:
针对传统铰接车模型忽略液压转向系统内部泄漏与非线性摩擦的问题,提出一种基于动态摩擦记忆效应的补偿建模方法。该方法引入分数阶LuGre模型描述转向缸内密封件的粘滑特性,将摩擦力表示为速度与位移的分数阶导数函数。在Simulink中构建了包含转向阀死区、液压油弹性模量随压力变化以及管路柔度的十二阶状态空间模型。针对35吨级轮式装载机,采集了实车转向阶跃响应数据,利用递推极大似然估计算法辨识模型参数,其中转向阀死区宽度为0.35毫米,油液有效体积弹性模量从标称值1.2GPa下降至0.85GPa时的非线性补偿因子被拟合为三次样条曲线。仿真显示,加入动态摩擦补偿后,折腰角跟随误差的均方根值从2.1度降低至0.45度,系统相位滞后减少约40毫秒。
(2)基于虚拟地形场的路径跟踪与驾驶员意图融合控制:
设计了一种结合驾驶操纵习惯与动态虚拟势场的路径跟踪架构。首先通过方向盘转角传感器与驾驶员面部姿态识别模块,实时估计驾驶员的期望折腰角变化率,形成前馈控制项。然后建立动态虚拟地形场,其截面函数由基本高斯曲面与动态惩罚项叠加而成,其中基本地形基于道路中心线生成横向偏移势能,动态惩罚项根据车辆侧向加速度与轮胎滑移率实时调整。采用直接侧偏角补偿方法,将虚拟地形场产生的等效侧向力转换为附加折腰角指令。在环形道路测试中,当车速为25km/h时,该策略将最大横向偏差从0.8米缩减至0.22米,方向盘修正次数减少52%。在双移线工况下,通过虚拟道路侧倾控制方法产生的车身侧倾补偿力矩使横摆角速度峰值降低31%。
(3)多模式切换的LQR横摆稳定性与防滑协同控制:
针对铰接车在湿滑路面转向时的横摆失稳与轮胎打滑耦合问题,设计了基于状态观测器的协同控制器。将系统分为直线行驶、小角度转向与大角度转向三种模式,每种模式采用不同的权重矩阵。在大角度模式下,利用扩展卡尔曼滤波器实时估计路面附着系数与车身侧偏角,将侧偏角约束作为LQR优化的不等式条件。同时引入最优轮胎利用率分配策略,通过二次规划求解前后桥驱动转矩与制动压力,使得每个车轮的滑移率保持在0.08至0.12之间。针对全液压转向系统无法自动回正的问题,增加了基于等效扭转刚度估计的回正力矩补偿器,通过电流控制比例减压阀主动施加回正力。在Carsim与Matlab联合仿真中,对颠簸路面下的蛇形工况进行测试,所提协同控制将铰接车的峰值横摆角速度从0.65rad/s降低到0.31rad/s,轮胎滑移率方差减少67%。在驾驶员在环实验中,系统对方向盘突加阶跃信号的响应时间由1.2秒缩短至0.55秒,且折腰角回正残余误差小于0.3度。
import numpy as np import control as ct from scipy.integrate import solve_ivp from scipy.optimize import minimize def friction_memory_model(v, sigma0, sigma1, sigma2, fs, fc, vs): # 分数阶LuGre摩擦力模型,用于液压转向补偿 z_dot = v - sigma0 * np.abs(v) / (fc + (fs - fc) * np.exp(-(v/vs)**2)) * z f = sigma0 * z + sigma1 * z_dot + sigma2 * v return f def virtual_terrain_potential(y, y_ref, vx, slip_ratio): # 动态虚拟地形场截面函数 gaussian_base = 5.0 * np.exp(-(y - y_ref)**2 / 4.0) penalty = 12.0 * np.abs(slip_ratio) * vx**2 * np.tanh(2*y) return gaussian_base + penalty def lqr_modal_control(x, mode, Qlist, Rlist, A, B): # 多模式切换LQR控制器 if mode == 'straight': Q = Qlist[0]; R = Rlist[0] elif mode == 'small_turn': Q = Qlist[1]; R = Rlist[1] else: Q = Qlist[2]; R = Rlist[2] K, S, E = ct.lqr(A, B, Q, R) return -K @ x def tire_force_allocation(Fx_des, mu_est, Fz, max_torque): # 基于二次规划的转矩分配 n = len(Fz) H = np.eye(n) * 2.0 f = -2 * (mu_est * Fz) / max_torque A_eq = np.ones((1, n)) b_eq = np.array([Fx_des]) lb = -max_torque * np.ones(n) ub = max_torque * np.ones(n) res = minimize(lambda u: 0.5*u@H@u + f@u, np.zeros(n), constraints={'type':'eq','fun':lambda u: A_eq@u - b_eq}, bounds=list(zip(lb, ub)), method='SLSQP') return res.x # 主仿真循环示意 if __name__ == '__main__': # 车辆状态: x=[折腰角, 横摆角速度, 侧偏角, 滑移率] A = np.array([[0,1,0,0],[-5,-0.8,2,0],[0.2,0.3,-1.5,0.1],[0,0.5,0,-2]]) B = np.array([[0],[1],[0.2],[0.5]]) Qlist = [np.diag([10,5,20,8]), np.diag([15,10,30,12]), np.diag([25,20,50,18])] R = 1.0 x0 = np.array([0.05, 0.0, 0.02, 0.1]) t_span = (0, 20) # 模拟仿真 print('开始铰接车稳定性控制仿真,模式自适应切换中...')