Display object meshes on bird's-eye plot
displays meshes composed of the specified vertices and faces on a bird's-eye plot. To
obtain the mesh vertices and faces of an object in a driving scenario, use the
function. The mesh plotter,
mPlotter, is associated with a
birdsEyePlot object and configures the display of the meshes.
The bird's-eye plot assigns a different color to each actor, based on the default color
Axes objects. For more details, see the
To remove all meshes associated with mesh plotter
function and specify
mPlotter as the input argument.
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; trajectory(p,waypointsP,speedP); wayPointsV = [v.RearOverhang 0 0; (25 - v.Length + v.RearOverhang) 0 0]; speedV = 10; trajectory(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
vertices— Mesh vertices of each actor
Mesh vertices of each actor, specified as an N-element cell array, where N is the number of actors.
Each element in
vertices must be a V-by-3
real-valued matrix containing the vertices of an actor, where:
V is the number of vertices.
Each row defines the 3-D
(x,y,z) position of a
vertex. When you use the
targetMeshes function to obtain mesh vertices, the vertex positions
are relative to the position of the actor that is input to that function. Units are
faces— Mesh faces of each actor
Mesh faces of each actor, specified as an N-element cell array, where N is the number of actors.
Each element in
faces must be an F-by-3
integer-valued matrix containing the faces of an actor, where:
F is the number of faces.
Each row defines a triangle of vertex IDs that make up the face. The vertex IDs
correspond to row numbers within
Suppose the first face of the
ith element of
faces has these vertex IDs.
ans = 1 2 3
ith element of
vertices, rows 1, 2,
and 3 contain the (x, y, z)
positions of the vertices that make up this face.
ans = 3.7000 0.9000 0.8574 3.7000 -0.9000 0.8574 3.7000 -0.9000 0.3149
colors— Color of mesh faces for each actor
ith row of
colors is the RGB color value
of the faces in the
ith element of
function applies the same color to all mesh faces of an actor.
An RGB triplet is a three-element row vector whose elements specify the intensities
of the red, green, and blue components of the color. The intensities must be in the
range [0, 1]. For example,
[0.4 0.6 0.7].
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.