simulink和carsim联合仿真的mpc轨迹跟踪模型。
simulink和carsim联合仿真的mpc轨迹跟踪模型。MPC模型预测控制轨迹跟踪模型在Simulink和Carsim联合仿真中通过构建车辆动力学模型、设计MPC控制器实现对车辆轨迹的精准跟踪。其代码涉及车辆状态方程、MPC优化算法等核心部分。左上图 (Road Wheel Steer Angles)显示了车轮转角在正负之间大幅度切换打方向盘这是泊车入库的典型特征。左下图 (Vehicle yaw)显示了车辆横摆角Yaw先增加后减小对应车辆倒入车位并回正的过程。右下图 (Longitudinal Speed)速度很低0 到 -5 km/h且主要在倒车。MATLAB 绘图复现代码这段代码模拟了泊车过程中的方向盘操作、速度变化和车身姿态变化并绘制了与原图布局一致的图表。% 清除环境clear; clc; close all;% % 1. 模拟泊车数据生成 (复现 Carsim 图表逻辑)% % 时间轴0 到 6秒t 0:0.05:6;% — 模拟车轮转角 (Road Wheel Steer Angles) —% 逻辑先向右打死(-30度)回正再向左打死(15度)最后回正Steer_FL zeros(size(t));Steer_FR zeros(size(t)); % 假设左右轮角度近似Steer_RL zeros(size(t)); % 后轮转向假设为0或跟随Steer_RR zeros(size(t));for i 1:length(t)time t(i);if time 33, Yaw(i) 33; endend% % 2. 绘图 (复现 Carsim VS Visualizer 布局)% figure(‘Color’, ‘w’, ‘Name’, ‘Carsim Parking Simulation Results’);% — 子图1车轮转角 —subplot(2, 2, 1);plot(t, Steer_FL, ‘b-’, ‘LineWidth’, 1.5); hold on;plot(t, Steer_FR, ‘r–’, ‘LineWidth’, 1);plot(t, Steer_RL, ‘k:’, ‘LineWidth’, 1);plot(t, Steer_RR, ‘m-.’, ‘LineWidth’, 1);grid on;title(‘Road Wheel Steer Angles - demo_parking’);xlabel(‘Time - s’); ylabel(‘Angle - deg’);legend(‘Wheel steer L1’, ‘Wheel steer R1’, ‘Wheel steer L2’, ‘Wheel steer R2’, ‘Location’, ‘SouthEast’);ylim([-40, 40]);% — 子图2纵向速度 —subplot(2, 2, 2);plot(t, Vx, ‘b-’, ‘LineWidth’, 1.5); hold on;yline(-3.5, ‘g–’); % 参考线grid on;title(‘Longitudinal Speed (Vx_Fus) vs. Time - demo_parking’);xlabel(‘Time - s’); ylabel(‘Longitudinal speed - km/h’);legend(‘Vx’, ‘Ref’);ylim([-6, 1]);% — 子图3车辆横摆角 —subplot(2, 2, [3, 4]); % 占据下方整行plot(t, Yaw, ‘b-’, ‘LineWidth’, 2); hold on;% 添加图中所示的垂直参考线xline(3.3, ‘k–’, ‘LineWidth’, 1);grid on;title(‘Yaw Angle of Sprung Masses vs. Time - demo_parking’);xlabel(‘Time - s’); ylabel(‘Yaw, vehicle - deg’);ylim([0, 40]);代码解析数据模拟逻辑转角模拟了“右打死 - 回正 - 左打死 - 回正”的经典泊车方向盘操作序列。速度模拟了低速倒车状态数值在 -3 到 -5 km/h 之间波动。横摆角 (Yaw)模拟了车辆从平行于车位到斜插入车位角度达到峰值 33°最后回正的过程。绘图布局使用了 subplot(2, 2, …) 来完美复刻原图中的 2x2 布局右下角合并。轨迹图显示车辆从起点沿曲线行驶到目标点的路径。前轮转角变化显示为了跟踪轨迹方向盘前轮转角随时间的动态调整。横摆角变化显示车辆车身姿态航向角随时间的变化。MATLAB 绘图复现代码% 清除环境clear; clc; close all;% % 1. 模拟仿真数据 (根据图片趋势构造)% % 时间轴 0-7秒t 0:0.05:7;% — 模拟数据生成 —% 1. 横摆角 (Yaw Angle) - 对应中间的 Figure 3% 趋势先上升中间有个小波动再下降yaw_angle 0.15 * t .* exp(-0.2t) 0.1 * sin(1.t) . exp(-0.3t);% 修正趋势以匹配图片先升到0.6再降yaw_angle 0.6 * (t/3.5) .* exp(1 - t/3.5);yaw_angle(40:end) yaw_angle(40:end) - 0.05 * (t(40:end)-3.5).^2; % 后半段下降% 2. 前轮转角 (Steering Angle) - 对应右侧的 Figure 4% 趋势M型波动最后趋于稳定steer_angle 0.2 * sin(0.8t) 0.3 * sin(1.5t);steer_angle abs(steer_angle); % 取绝对值模拟图示形态steer_angle(steer_angle0.1) 0.1; % 底部截断% 增加图片中的尖峰特征steer_angle steer_angle [zeros(1,20), 0.2, -0.1, 0.3, -0.2, 0.2, zeros(1, length(t)-25)];steer_angle smoothdata(steer_angle, ‘movmean’, 5); % 平滑处理% 3. 轨迹图 (Trajectory) - 对应左侧的 Figure% 基于横摆角积分得到轨迹x cumsum(0.5 * cos(yaw_angle)); % 假设速度恒定0.5y cumsum(0.5 * sin(yaw_angle));% % 2. 绘图 (复现图片布局)% % — 绘制轨迹图 (左侧窗口) —figure(‘Name’, ‘轨迹图’, ‘Position’, [100, 100, 400, 300]);plot(x, y, ‘g-’, ‘LineWidth’, 2);grid on;title(‘轨迹图’, ‘FontWeight’, ‘bold’);xlabel(‘横向坐标 X / m’);ylabel(‘纵向坐标 Y / m’);axis equal;xlim([min(x)-0.5, max(x)0.5]);ylim([min(y)-0.5, max(y)0.5]);% — 绘制横摆角变化 (中间窗口 Figure 3) —figure(‘Name’, ‘Figure 3’, ‘Position’, [550, 150, 400, 300]);plot(t, yaw_angle, ‘g-’, ‘LineWidth’, 2);grid on;title(‘横摆角变化’, ‘FontWeight’, ‘bold’);xlabel(‘时间 T / s’);ylabel(‘横摆角 / rad’);xlim([0, 7]);ylim([0, 0.75]);% — 绘制前轮转角变化 (右侧窗口 Figure 4) —figure(‘Name’, ‘Figure 4’, ‘Position’, [1000, 100, 400, 300]);plot(t, steer_angle, ‘g-’, ‘LineWidth’, 2);grid on;title(‘前轮转角变化’, ‘FontWeight’, ‘bold’);xlabel(‘时间 T / s’);ylabel(‘转角 / rad’); % 假设单位为radxlim([0, 7]);ylim([0, 0.65]);
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2493629.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!