Mesh plotter for bird's-eye plot
Display Actor Meshes in Driving Scenario
Display actors in a driving scenario by using their mesh representations instead of their cuboid representations.
Create a driving scenario, and add a 25-meter straight road to the scenario.
scenario = drivingScenario; roadcenters = [0 0 0; 25 0 0]; road(scenario,roadcenters);
Add a pedestrian and a vehicle to the scenario. Specify the mesh dimensions of the actors using prebuilt meshes.
Specify the pedestrian mesh as a
Specify the vehicle mesh as a
p = actor(scenario,'ClassID',4, ... 'Length',0.2,'Width',0.4, ... 'Height',1.7,'Mesh',driving.scenario.pedestrianMesh); v = vehicle(scenario,'ClassID',1, ... 'Mesh',driving.scenario.carMesh);
Add trajectories for the pedestrian and vehicle.
Specify for the pedestrian to cross the road at 1 meter per second.
Specify for the vehicle to follow the road at 10 meters per second.
waypointsP = [15 -3 0; 15 3 0]; speedP = 1; smoothTrajectory(p,waypointsP,speedP); wayPointsV = [v.RearOverhang 0 0; (25 - v.Length + v.RearOverhang) 0 0]; speedV = 10; smoothTrajectory(v,wayPointsV,speedV)
Add an egocentric plot for the vehicle. Turn the display of meshes on.
Create a bird's-eye plot in which to display the meshes. Also create a mesh plotter and lane boundary plotter. Then run the simulation loop.
Obtain the road boundaries of the road the vehicle is on.
Obtain the mesh vertices, faces, and colors of the actor meshes, with positions relative to the vehicle.
Plot the road boundaries and actor meshes on the bird's-eye plot.
Pause the scenario to allow time for the plots to update. The chase plot updates every time you advance the scenario.
bep = birdsEyePlot('XLim',[-25 25],'YLim',[-10 10]); mPlotter = meshPlotter(bep); lbPlotter = laneBoundaryPlotter(bep); legend('off') while advance(scenario) rb = roadBoundaries(v); [vertices,faces,colors] = targetMeshes(v); plotLaneBoundary(lbPlotter,rb) plotMesh(mPlotter,vertices,faces,'Color',colors) pause(0.01) end
Specify optional pairs of arguments as
the argument name and
Value is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name in quotes.
meshPlotter('FaceAlpha',0.5) sets the mesh faces to be 50%
FaceAlpha — Transparency of mesh faces
0.75 (default) | scalar in the range [0, 1]
Transparency of mesh faces, specified as the comma-separated pair consisting of
'FaceAlpha' and a scalar in the range [0, 1]. A value of
0 makes the mesh faces fully transparent. A value of
1 makes the mesh faces fully opaque.
Tag — Tag associated with plotter object
'Plotter (default) | character vector | string scalar
Tag associated with the plotter object, specified as the comma-separated pair
'Tag' and a character vector or string scalar. The
default value is
N is an integer that corresponds to the
Nth plotter associated with the input
mPlotter — Mesh plotter
Mesh plotter, returned as a
MeshPlotter object. You can modify this
object by changing its property values. The property names correspond to the name-value
pair arguments of the
In driving scenarios, a mesh is a triangle-based 3-D representation of an object. Mesh representations of objects are more detailed than the default cuboid (box-shaped) representations of objects. Meshes are useful for generating synthetic point cloud data from a driving scenario.
This table shows the difference between a cuboid representation and a mesh representation of a vehicle in a driving scenario.
Introduced in R2020b