多轴无人驾驶平台底盘域运动系统的控制策略硬件在环【附代码】
✅博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。
✅ 如需沟通交流,扫描文章底部二维码。
(1)8×8轮毂电机驱动底盘动力学建模与横摆稳态/瞬态特性分析:
利用Trucksim搭建8×8轮式装甲底盘的高保真动力学模型,包括独立悬架、转向系统、轮胎模型及轮毂电机驱动系统,Matlab/Simulink中构建电机模型和控制器。通过稳态回转试验获得车辆不足转向梯度和稳定性因数,并由瞬态角阶跃输入试验得到横摆角速度响应时间和超调量。基于这些特性建立理想横摆参考模型,参考横摆角速度与车速和方向盘转角满足一阶线性关系,质心侧偏角限值为±3度。参考模型作为上层控制期望状态,与实际状态的偏差输入后续的横摆力矩决策层。
(2)分层式三步法横纵向融合控制策略:
底盘域控制系统采用分层三步法架构。第一层为理想状态生成器,根据驾驶员转向和加速指令实时计算理想横摆角速度和质心侧偏角;第二层为三步法误差控制器,包含稳态控制项、参考动态前馈项和误差反馈项,综合计算出所需的附加横摆力矩,其中误差反馈采用自适应滑模控制,滑模增益随附着系数估计值动态变化;第三层为力矩分配器,将附加横摆力矩依据各轮垂直载荷和轮胎工作负荷分配到8个轮毂电机,并协调第四轴转向角主动参与横摆控制,转向角分配系数与车辆侧偏角相关。Simulink仿真显示,在低附着系数路面(mu=0.3)双移线工况下,横摆角速度跟踪误差均方根为0.8 deg/s,质心侧偏角峰值<2.4度,相比无控制时改善超60%。
(3)硬件在环试验台架验证与多工况鲁棒性测试:
基于课题组自主设计的控制器硬件和NI实时仿真机搭建硬件在环平台。驾驶员操作模拟器产生实时转角/加速信号,控制器运行三步法算法计算附加横摆力矩及四轴转向角,通过CAN总线发送至Trucksim实时车辆模型。设计多种测试工况:干燥沥青(mu=1.0) 90km/h单移线、对开路面(mu=0.2/0.8)全油门加速、冰雪路面(mu=0.2)正弦转向等。试验结果表明,控制器能显著降低车辆侧滑风险,横摆角速度响应与理想值延迟不超过50ms,质心侧偏角均控制在安全范围内。在全部工况中未发生失稳,验证了算法的实时性和鲁棒性。
import numpy as np from scipy import signal # 理想横摆参考模型 def ideal_yaw_reference(vx, steer_angle, L=4.2): # 一阶参考模型 K = 0.0025 # 稳定性因数 tau = 0.12 yaw_rate_ss = vx * steer_angle / (L * (1 + K*vx**2)) # 离散一阶低通滤波 return yaw_rate_ss # 简化实时输出 # 三步法控制器核心 def three_step_controller(vx, vy, yaw_rate, beta, ref_yaw, ref_beta, mu_est): # 第一层:已在外部生成ref # 第二层:稳态控制+前馈+误差反馈 err_yaw = yaw_rate - ref_yaw; err_beta = beta - ref_beta Kp = 800 + 200*mu_est # 自适应滑模增益 s = err_yaw + 2*err_beta k_sw = 250 + 50*np.tanh(np.abs(s)) Mz_fb = -Kp*err_yaw - 200*err_beta - k_sw*np.sign(s) # 第三层:力矩分配 Fz = np.array([3500,3500,3000,3000,3000,3000,3500,3500]) # 静态载荷示例 total_Fz = np.sum(Fz) T_dist = Mz_fb / 2.0 # 粗略 torque = T_dist * (Fz / total_Fz) * 2 return np.clip(torque, -300, 300) # 硬件在环通信简化 class HILInterface: def __init__(self): self.can_buffer = [] def send_torque_command(self, torques): # 通过CAN发送8个电机力矩 pass def receive_vehicle_states(self): return dict(yaw_rate=0.1, beta=0.02, vx=25) # 测试场景执行器 def run_hil_test(controller, scenario='double_lane_change'): hil = HILInterface() for t in np.arange(0, 20, 0.01): states = hil.receive_vehicle_states() ref = ideal_yaw_reference(states['vx'], 0.05) torque = three_step_controller(states['vx'], 0, states['yaw_rate'], states['beta'], ref, 0, 0.8) hil.send_torque_command(torque) return True如有问题,可以直接沟通
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇
