首页/文章/ 详情

Matlab/Simulink中如何创建道路模型

1年前浏览1828


大家好,我是团长。


用于学到道路模型搭建环节了。


这次主要用到的函数是:【drivingScenario】,这个函数是用来定义一个驾驶场景,然后我们需要在这个场景里创建道路,需要进一步调用【road】函数。一条道路需要一些参数控制:首尾点坐标、宽度等。


我们先用这些套路来创建一个简单点的道路。






s = drivingScenario;L1 = [-50,50,0;0,50,20];road(s,L1,5);plot(s);




接下来,再复杂一点,给这条路接上一条圆弧的道路。只需要另外定义一天曲线和第一条曲线相连即可。








  
s = drivingScenario;L1 = [-50,50,0;0,50,20];theta = 0:90;L2 = [50*cosd(theta)',50*sind(theta)',20*ones(91,1)];road(s,L1,5);road(s,L2,5);plot(s)  



十字路口的道路创建。
不需要重复定义四条道路连接到一起,只需要定义两条直线,互相覆盖就可以了。如下所示:







  
s = drivingScenario;L = [0,0;100,0];road(s,L,10);L = [50,-50;50,50];road(s,L,10);plot(s)  

怎么来构建环道呢?
曲线的构建其实是构建多个点拟合成曲线而成,默认情况下,场景构建的道路在端点处没有曲率。要形成环道,要重复第一点和最后一点。下面是一个有四个出口的环道。













  
s = drivingScenario;L = [-15,-15;    15,-15;    15,15;    -15,15;    -15,-15;];road(s,L,10);road(s,[-35,0;-20,0],10)road(s,[20,0;35,0],10)road(s,[0,35;0,20],10)road(s,[0,-35;0,-20],10)plot(s);  

如何构建道路的车道呢?
这里需要用到【lanespec】来定义。车道有几个关键参数需要定义:

1)车道数。车道数用[left right]来定义,其中left定义左边车道的数量,right定义右边车道的数量。
2)车道宽度。当宽度是标量时,对所有车道应用相同的车道宽度值。当宽度是矢量,则应该从左到右依次指定车道宽度。车道宽度的默认宽度是3.6m。
3)车道线。车道线用laneMarking表示。其中Unmarked表示没有车道线,Solid表示车道线为实线,Dashed表示车道为虚线,DoubleSolid表示车道线为两条实线,DoubleDashed表示车道线为两条虚线,SolidDashed表示左边是实线右边是虚线,DashedSolid反之。

如下展示一个例子:









  
s = drivingScenario;L = [0,0;100,0];solidW = laneMarking('Solid','Width',0.3);dashW = laneMarking('Dashed','Space',5);doubleY = laneMarking('DoubleSolid','Color','yellow');lspec = lanespec([2 2],'Width',[5 5 5 5], ...    'Marking',[solidW dashW doubleY dashW solidW]);road(s,roadCenters,'Lanes',lspec);plot(s)  


本文完。


来源:车路慢慢
Simulink控制数控
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-21
最近编辑:1年前
李慢慢
硕士 自动驾驶仿真工程师一枚
获赞 11粉丝 63文章 122课程 0
点赞
收藏
未登录
1条评论
G&W
签名征集中
1年前
请问为什么最后显示未定义lanemarking
回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈