
附下载链接,包运行成功。原创代码,欢迎交流,但请勿翻卖
程序简介
主要作用
程面向CACC(协同自适应巡航控制)车队紧急制动场景,构建领航车急减速工况,对比普通ACC和加入安全距离约束的CACC防追尾控制。程序通过最小车间距、TTC风险指标、制动控制量和风险次数,展示安全约束对追尾风险抑制的作用,适合用于车队安全控制、AEB/CACC融合和纵向主动安全研究。
场景建模
程序围绕网联车辆控制与车路协同通行优化建立简化但完整的仿真场景,包含车辆运动状态、控制策略、扰动因素和评价指标。
对比算法
例程设置基准策略和协同/优化策略,便于观察V2X、CAV、CACC或MPC等方法对速度、间距、延误、能耗或稳定性的改善效果。
运行结果
-
紧急制动速度响应图:展示前车急刹时末车速度响应过程。

-
最小安全距离图:对比普通ACC和安全CACC的最小车间距变化。

-
碰撞风险指标图:展示TTC安全裕度和风险阈值。

-
制动控制量图:对比两种策略下末车制动控制量。

-
风险次数对比图:统计安全边界被触发的风险次数。

命令行窗口输出内容截图:

MATLAB源代码
部分代码如下:
%% CACC车队防追尾安全距离控制例程
% 作者:matlabfilter(V同号),接定位与导航、滤波相关的matlab代码定制
% 2026-08-12 / Ver1
% 本例程模拟前车紧急制动工况,对比普通ACC与带安全距离约束的CACC防追尾控制效果。
clear; clc; close all;
rng(0);
% 设置仿真参数和典型工况,保证每次运行结果可复现。
dt = 0.04; T = 45; t = (0:dt:T)'; numFollower = 5;
leadV = 23*ones(size(t));
leadA = zeros(size(t));
leadA(t>=12 & t<15.6) = -3.4;
leadA(t>=23 & t<27) = 1.7;
for k=2:numel(t)
leadV(k) = max(4, min(25, leadV(k-1)+leadA(k-1)*dt));
end
leadA = [0; diff(leadV)/dt];
leadX = cumsum(leadV)*dt;
para.d0 = 6.5; para.h = 0.68; para.length = 4.8; para.tau = 0.32;
para.aMin = -5.8; para.aMax = 2.5; para.safeMin = 10.0;
acc = simulateFleet(false, t, dt, leadX, leadV, leadA, para, numFollower);
safe = simulateFleet(true, t, dt, leadX, leadV, leadA, para, numFollower);
% 输出关键评价指标,便于从命令行直接比较不同策略。
fprintf('CACC车队防追尾安全距离控制仿真结果\n');
fprintf('普通ACC | 最小车间距 %.3f 米 | 最大制动 %.3f 米/秒^2 | 风险次数 %d\n', ...
acc.minGap, acc.maxBrake, acc.riskCount);
fprintf('安全CACC | 最小车间距 %.3f 米 | 最大制动 %.3f 米/秒^2 | 风险次数 %d\n', ...
safe.minGap, safe.maxBrake, safe.riskCount);
fprintf('安全CACC相对普通ACC最小车间距增加 %.3f 米。\n', ...
safe.minGap-acc.minGap);
% 绘制结果图窗;图窗保持纯净,不在 MATLAB 窗口内添加水印。
figure('Color','w','Units','pixels','Position',[80 80 400 400]);
plot(t, leadV, 'k-', 'LineWidth', 1.4); hold on;
plot(t, acc.v(:,end), '--', 'LineWidth', 1.4, 'Color', [0.82 0.25 0.18]);
plot(t, safe.v(:,end), '-', 'LineWidth', 1.5, 'Color', [0.08 0.42 0.68]);
grid on; box on; xlabel('时间(秒)'); ylabel('速度(米/秒)');
title('紧急制动速度响应'); legend('领航车','普通ACC末车','安全CACC末车','Location','best'); styleAxes();
% 绘制结果图窗;图窗保持纯净,不在 MATLAB 窗口内添加水印。
figure('Color','w','Units','pixels','Position',[90 90 400 400]);
plot(t, acc.minGapSeries, '--', 'LineWidth', 1.4, 'Color', [0.82 0.25 0.18]); hold on;
plot(t, safe.minGapSeries, '-', 'LineWidth', 1.5, 'Color', [0.08 0.42 0.68]);
yline(para.safeMin, ':', '安全边界'); grid on; box on;
xlabel('时间(秒)'); ylabel('最小车间距(米)'); title('最小安全距离'); legend('普通ACC','安全CACC','Location','best'); styleAxes();
% 绘制结果图窗;图窗保持纯净,不在 MATLAB 窗口内添加水印。
完整代码(包运行成功):
https://download.csdn.net/download/callmeup/93283113
如需帮助,或有车联网、网联车辆控制、交通仿真、滤波与导航相关的代码定制需求,可从个人主页左侧联系我
7511

被折叠的 条评论
为什么被折叠?



