自动驾驶场景构建方法(matlab源码)/采用编程方法构建驾驶场景

场景是自动驾驶测试系统中相当重要的一环,测试场景的多样性、覆盖性、典型性等能够影响到测试结果的准确性,从而保证自动驾驶的安全与质量。

场景,指的是行驶场合和驾驶情景的组合,它受行驶环境的深刻影响,如道路、交通、天气、光照等因素,共同构成整个场景概念。场景是在一定时间和空间范围内环境与驾驶行为的综合反映,描述了道路、交通设施、气象条件、交通参与物等外部状态以及自车的驾驶任务和状态等信息。从场景架构来看,有不同的行驶场合,像高速公路、乡村道路、城市工况、机场、码头、封闭园区等;在该场合下,如何驾驶、驾驶任务、驾驶速度、驾驶模式等一起构成了整个场景的三维架构。

与传统汽车的物理性能测试评价体系不同,自动驾驶汽车在测试评价内容形式上都有明显不同,在传统汽车测试基础上发生了根本性的改变:传统汽车测试注重评价机器在执行命令时的表现,自动驾驶测试重视评价整车多传感器的配合以及传感器融合输出的感知、判断和决策能力;传统测试的场景存在固定模式和情境,但自动驾驶汽车的测试场景需要具备多样化、典型性等特点,需要尽可能覆盖所有复杂的特殊场景;自动驾驶测试的软件系统和硬件设备也都发生了天翻地覆的变化。

目前自动驾驶领域安全事故频发,安全成为自动驾驶领域要解决的本质问题,业界和社会都需要具备更高可靠性的自动驾驶技术来夯实发展基础,其中,挖掘测试场景、丰富和完善测试技术是提高自动驾驶安全性能的极重要一步。

1.场景构建有三种方法

       编程方法

       图形化界面方法

       场景库方法

2.采用编程方法构建驾驶场景(每一段代码单独运行)

构建并显示空的驾驶场景

s=drivingScenario;
plot(s)

构建道路

直路

s=drivingScenario;
roadCenters=[0,0;100,0];
roadWidth=16;
road(s,roadCenters,roadWidth);
plot(s)

十字交叉路

s=drivingScenario;
roadCenters=[0,0;100,0];
roadWidth=16;
road(s,roadCenters,roadWidth);
roadCenters=[50,-50;50,50];
road(s,roadCenters,roadWidth);
plot(s)

丁字路

s=drivingScenario;
roadCenters=[0,0;92,0];
roadWidth=16;
road(s,roadCenters,roadWidth);
roadCenters=[92,-50;92,50];
road(s,roadCenters,roadWidth);
plot(s)

弯道

s=drivingScenario;
roadCenters=[0,0;40,-10;100,-60];
roadWidth=16;
road(s,roadCenters,roadWidth);
plot(s)

环道

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

8字型道路

s=drivingScenario;
roadCenters=[0,0,1,;20,-20,1;20,20,1;-20,-20,1;-20,20,1;0,0,1];
roadWidth=3;
bankAngle=[0,15,15,-15,-15,0];
road(s,roadCenters,roadWidth,bankAngle)
plot(s)

3.构建道路的车道

双向6车道直路

s=drivingScenario;
roadCenters=[0,0;100,0];
road(s,roadCenters,"Lanes",lanespec([3 3]));
plot(s,"RoadCenters","on")

双向4车道直路

s=drivingScenario;
roadCenters=[0,0;100,0];
lm=[laneMarking("Solid"),laneMarking("Dashed"),...
    laneMarking("SolidDashed","Color","y"),...
    laneMarking("Dashed"),laneMarking("Solid")];
ls=lanespec(4,"marking",lm);
road(s,roadCenters,"Lanes",ls);
plot(s)

4.添加交通参与者

在长100m,宽16m的道路上添加一辆车,车辆位于道路中心,速度为50km/h

s=drivingScenario;
roadCenters=[0,0;100,0];
roadWidth=16;
road(s,roadCenters,roadWidth);
plot(s)
egocar=vehicle(s);
waypoints=roadCenters;
speed=13.89;
trajectory(egocar,waypoints,speed);
while advance(s)
    pause(0.01);
end

车辆在十字路口左转弯的场景

s=drivingScenario;
road(s,[0,-25;0,25],7);
road(s,[-25,0;25,0],7);
Car=vehicle(s);
waypoints=[-24.0,-7.0,-3.5,-3.0,1.5,1.5,1.5,-1.5,-1.5,-1.5,-1.5,3.0,3.5,21.0]';
speed=[20.0,0.0,5.0,5.0,10.0,12.0,20.0];
trajectory(Car,waypoints,speed);
plot(s,"waypoints","on","Centerline","on");
while advance(s)
    pause(0.01);
end

构建一个驾驶场景,包含一条弯道和两条直道,其中弯道半径为200m,弯道宽度为10m,弯道上有一辆汽车;一条直道上有一辆自行车,另一条直道上有一行人

s=drivingScenario;
angs= [0:5:90]';
R=200;
roadCenters=R*[cosd(angs),sind(angs),zeros(size(angs))];
roadWidth=10;
road(s,roadCenters,roadWidth);
roadCenters=[160,20,0;0,20,0];
road(s,roadCenters)
roadCenters=[160,50,0;0,50,0];
road(s,roadCenters)
rbdry=roadBoundaries(s);
car=vehicle(s,"Position",[0,200,0]);
bicycle=actor(s,"Position",[0,50,0]);
pedestrian=actor(s,"Position",[0,20,0]);
plot(s,"Centerline","on","RoadCenters","on")

下一章节:通过图形化界面构建驾驶场景

  • 9
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力把公司干倒闭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值