昆明企业网站排名公司,使用循环视频做背景的网站,薄荷网wordpress,安阳网站建设优化渠道自动驾驶横纵向控制#xff0c;纵向采用pid控制#xff0c;横向采用mpc控制#xff0c;根据的是车辆二自由度车辆动力学模型#xff0c;得到各矩阵之后在S函数里面进行编写#xff0c;纵向参考百度Apollo纵向双环PID控制算法#xff0c;横向参考百度Apollo中mpc控制算法编…自动驾驶横纵向控制纵向采用pid控制横向采用mpc控制根据的是车辆二自由度车辆动力学模型得到各矩阵之后在S函数里面进行编写纵向参考百度Apollo纵向双环PID控制算法横向参考百度Apollo中mpc控制算法编写规划的轨迹为五次多项式函数形式。 控制效果车辆侧向位移和纵向位移跟踪效果很好纵向车速跟随也较好但有一定的误差。 Matlab/Simulink版本:2021a Carsim版本2019.0 有完整的仿真演示运行视频小白也能学会。 提供参考资料最近在学习自动驾驶的控制算法终于完成了横纵向控制的仿真感觉整个过程挺有成就感的想和大家分享一下我的学习心得和实现过程。一、控制算法的选择与实现纵向控制PID控制纵向控制我参考了百度Apollo的双环PID控制算法这个算法在Apollo的开源代码中用得比较多实现起来相对直观。PID控制的核心在于调节三个参数比例系数P、积分系数I和微分系数D。通过调节这三个参数可以实现对车速的有效控制。% 纵向PID控制算法实现 function [throttle, brake] longitudinalPID(current_speed, target_speed, dt) % PID参数 Kp 0.5; Ki 0.1; Kd 0.2; % 计算误差 error target_speed - current_speed; integral integral error * dt; derivative (error - last_error) / dt; % 计算控制量 output Kp * error Ki * integral Kd * derivative; % 分配油门和刹车 if output 0 throttle output; brake 0; else throttle 0; brake -output; end % 更新last_error last_error error; end横向控制MPC控制横向控制我选择了模型预测控制MPC这个算法在Apollo中也有应用主要通过预测未来的轨迹来优化当前的控制输入。MPC的核心在于建立车辆的动力学模型并通过求解优化问题来得到最优控制量。% MPC控制算法实现 function [steering] mpcControl(state, reference, dt, T) % 状态变量[x, y, yaw, v] % 参考轨迹五次多项式 % 优化问题求解 % 这里省略优化问题的具体实现具体可以参考Apollo的MPC实现 % 优化目标最小化与参考轨迹的偏差 % 约束条件方向盘转角限制、加速度限制等 % 优化求解 [steering] optimizeControl(state, reference, dt, T); end二、车辆动力学模型我选择了二自由度车辆动力学模型这个模型可以较好地描述车辆的运动特性同时又不至于过于复杂。模型主要包括纵向运动学和侧向动力学两部分。% 车辆动力学模型 function [next_state] vehicleDynamics(state, control, dt) % 状态变量[x, y, yaw, v] % 控制量[throttle, brake, steering] % 计算加速度 acceleration (throttle - brake) * engine_torque / vehicle_mass; % 更新纵向速度 next_state.v state.v acceleration * dt; % 计算侧向加速度 lateral_acceleration next_state.v * tan(steering) / wheelbase; % 更新 yaw 角速度 yaw_rate lateral_acceleration / state.v; % 更新位置 next_state.x state.x state.v * cos(state.yaw) * dt; next_state.y state.y state.v * sin(state.yaw) * dt; % 更新 yaw 角 next_state.yaw state.yaw yaw_rate * dt; end三、仿真效果与分析经过多次仿真测试控制效果总体上还是比较令人满意的。车辆能够很好地跟踪给定的参考轨迹侧向位移和纵向位移的跟踪误差都控制在较小的范围内纵向车速也能够较好地跟随目标速度。不过也有一些需要改进的地方比如在高速工况下纵向速度的跟踪误差会稍微大一些这可能和PID的参数设置有关也可能是因为MPC的预测时间窗口设置得不够合理。四、工具与资源Matlab/Simulink版本2021aCarsim版本2019.0参考资料1. 百度Apollo开源代码2. 《车辆动力学与控制》3. MPC控制算法相关论文五、仿真视频演示为了让各位更直观地了解控制效果我已经录制了完整的仿真演示视频相信即使是刚接触自动驾驶控制的小白也能通过视频快速上手。总的来说这次的仿真经历让我对自动驾驶的控制算法有了更深入的理解也让我意识到理论与实践结合的重要性。希望这篇分享对你有所帮助如果有任何问题欢迎随时交流