大家好,在此前的文章中,尝试成功了如何创建道路,也成功添加车辆到道路中进行了动力学仿真,获得了最简单的仿真模型。
今天更进一步,来研究下如何对交通参与者进行选择。所谓交通参与者,我理解为会占用道路的东西,比如轿车、卡车、自行车、行人、障碍物等等。在利用vehicle函数定义车辆时如果不采用额外的描述,那么默认定义的会是个看不出是个什么东西的盒子,比如像下面这样来定义:
s = drivingScenario;
road(s,[-25,0;25,0],7);
car = vehicle(s);
plot(s);
顺便说一句,这个长方形的盒子的大小也是可以控制的,就像这样:
car = vehicle(s,'Length',5.0,'Width',2.5,'Height',1.5);
先不管盒子的大小,怎么定义能显示出来这个盒子是个什么东西呢?我们来对上面的代码进行改造。 s = drivingScenario;
road(s,[-25,0;25,0],7);
car = vehicle(s,'ClassID',1,'Mesh',driving.scenario.carMesh);
plot(s,'Meshes','on');
车辆的显示类型是由【Mesh】在控制,其实以上也就是细化定义了一下车辆的类型和显示类型,以及设置激活显示Mesh而已。(ps:分类标识符‘ClassID’:1代表轿车;2代表卡车;3代表自行车,4代表行人,5代表障碍物)。运行后放大效果如下:Matlab是个数学工具,只适合做算法,在3D显示方面比较鸡肋,如果需要非常“仿真”,那还真是需要和其它软件(如CarSim、Prescan、Carmaker等)联合进行了。如果我们不关注图形显示,仅仅是看看算法的效果的话,那Matlab其实也够用了。
然后,我们继续来看怎么创建出来一个“卡车”,还是简单来改改以上的代码,如下:
s = drivingScenario;
road(s,[-25,0;25,0],7);
car = vehicle(s,'ClassID',2,'Mesh',driving.scenario.truckMesh);
plot(s,'Meshes','on');
然后,我们继续来看怎么创建出来一个“行人”,还是简单来改改以上的代码,如下: s = drivingScenario;
road(s,[-25,0;25,0],7);
pedestrian = actor(s,'ClassID',4,...
'Length',0.24,'Width',0.45,'Height',1.7,...
'Mesh',driving.scenario.pedestrianMesh);
plot(s,'Meshes','on');
这个时候需要用actor这个函数了,为了防止行人大小“走形”,还是得设置下长宽高,运行后效果如下:
改一改上面的代码,就可以生成一辆“自行车”了,如下:
s = drivingScenario;
road(s,[-25,0;25,0],7);
bicycle = actor(s,'ClassID',3,...
'Length',1.7,'Width',0.45,'Height',1.7,...
'Mesh',driving.scenario.bicycleMesh);
plot(s,'Meshes','on');