【基于PID控制 + Prescan + Matlab/simulink的车辆路径规划仿真】场景绘制 | 车辆速度 | PID控制 | 仿真测试 | 全过程图文by.Akaxi
【基于PID控制 + Prescan + Matlab/simulink的车辆路径规划仿真】场景绘制 | 车辆速度 | PID控制 | 仿真测试 | 全过程图文by.Akaxi
目录
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
两江重大卓工院
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)