目录

一、设计任务

二、设计报告

2.1 道路场景搭建

2.2 车辆速度曲线

2.3 前车速度引出

2.4 主车PID控制

2.5 仿真测试

三、另外信息

3.1 前车变换车道

3.2 十字路口红绿灯控制(matlab代码 + prescan仿真)


最终效果:

prescan工程文件.pex和matlab文件.cs在本文末

------------------------全文2366字48图一步一步完成大约耗时1h------------------------

一、设计任务

构建200米简易路况,放置主车和前车,两者处于统一车道,相隔10米。设置前车三段不同的速度(加速、匀速、减速),使用前车的运动参数控制主车的运动。在主车上方设置摄像头,拍摄整个运动过程,使用PID方法进行车辆跟踪。

二、设计报告

2.1 道路场景搭建

添加道路元素以及两辆车(主车在后,前车在前面)

添加viewer

设置仿真频率为5

build一下,然后打开matlab的simulink仿真

打开:

可以看到simulink里面只有一辆车,需要给主车加上一个传感器才能够在matlab中正常显示:

回到prescan给主车加上摄像头:

并且为主车添加viewer:

再次build打开matlab即可看到两辆车:

2.2 车辆速度曲线

点击前车edit

设置给前车的速度曲线

可以看到前车的速度是先加速再匀速在减速,符合任务要求。

2.3 前车速度引出

回到matlab,点击前车:

拖动前车的速度输出,并且双击添加goto模块

goto取个别名叫v_qian

并且将变量改为全局变量

2.4 主车PID控制

我们需要搭建这样的模块:

需要点击主车

然后点击下箭头,进入此界面:

添加函数模块:

添加pid代码

function [PID_output,ErrorDiff,ErrorInte,ErrorPre,ErrorCurrent] = pid(target,CurrentValue,ErrorDiff,ErrorInte,ErrorPre,ErrorCurrent)   
    Error=target-CurrentValue;%get divation
    ErrorDiff=ErrorCurrent-ErrorPre;%diff divation
    ErrorInte=ErrorInte+Error;%cumulated divation
    ErrorPre=ErrorCurrent;%swith current divation to previous divation 
    ErrorCurrent=Error; %save current divation
    PID_output=0.5.*Error+0.1.*ErrorInte+0.1.*ErrorDiff;
end

可以看到pid模块:

从前车引入速度:(from模块)

引入v_qian

给主车也添加goto:

变量名v_hou,全局变量,引入到currentvalue

并且添加示波器scolpe,然后引入积分模块integrator,在pid速度输出拉一条线给x主车的距离输出

然后添加memory模块,连线,可以反转一下:

最后连线:

2.5 仿真测试

点击run,可以看到pid控制成功:

三、另外信息

3.1 前车变换车道

额外添加一条车道,并且将后面的车道设置成2,这样两条道路都是右行

前车goto角速度:

3.2 十字路口红绿灯控制(matlab代码 + prescan仿真)

构建一个十字路口,主车停于红绿灯前,初始情况下是黄灯。构建红绿灯变换逻辑,使红灯10秒、绿灯10秒、黄灯3秒,自动循环变化。

画图并且添加车辆、车轨迹、红绿灯:车停在红绿灯前面

并且把红绿灯的三个灯颜色打开

现在红绿灯是全亮,没有代码逻辑:

在matlab中打开,并且重新生成:

可以看到我的主车和红绿灯,然后点击红绿灯模块:

添加数字时钟与函数模块,并且编程:

function [red, org, gre] = light(clok)
red = [255,0,0];
org = [255,128,0];
gre = [0,255,0];
time = mod(clok,23);
if time < 3
    red = [0,0,0];
    org = [255,128,0];
    gre = [0,0,0];
elseif time <13
    red = [255,0,0];
    org = [0,0,0];
    gre = [0,0,0];
else
    red = [0,0,0];
    org = [0,0,0];
    gre = [0,255,0];
end
end

仿真测试:

可以看到红绿灯正常循环显示~~~

----------------------------------------------------------------------------------------------------

⭐ prescan工程文件.pex和matlab仿真文件.cs 

 【金山文档 | WPS云文档】 基于PID控制 + Prescan + Matlabsimulink的车辆路径规划仿真
https://kdocs.cn/l/cazoDr7HcxdP

----------------------------------------------------------------------------------------------------

相信读到这里的朋友,一定是坚持且优秀的

给博主一个免费的赞👍吧

扫描二维码进博主交流群,问题交流 | 吹吹水 | 一起变得更加优秀
————————————————

2025.4.11

两江重大卓工院

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐