Main Content

Collision Mesh

Create convex mesh collision geometry

Since R2025a

  • Collision Mesh block

Libraries:
Robotics System Toolbox / Collision Detection

Description

The Collision Mesh block outputs a convex mesh collision geometry using a list of 3-D vertices relative to a pose specified in relation to the world frame.

Examples

expand all

Open the Simulink® model. This model contains all five of the collision geometry blocks in the Collision Detection library and checks for collision between any two of the collision geometries. Note that the Collision Mesh block uses vertices from the exampleMeshVertices MAT file. The model loads the exampleMeshVertices MAT file when you open the model by using the PreLoadFcn callback.

model = "CollisionCheckingBetweenGeometries.slx";
open_system(model)

Simulate the model.

out = sim("CollisionCheckingBetweenGeometries.slx")
out = 
  Simulink.SimulationOutput:

             collStatus: [1x1 timeseries] 
               geom1Idx: [1x1 timeseries] 
               geom2Idx: [1x1 timeseries] 
                logsout: [1x1 Simulink.SimulationData.Dataset] 
                sepDist: [1x1 timeseries] 
                   tout: [101x1 double] 
             witnessPts: [1x1 timeseries] 

     SimulationMetadata: [1x1 Simulink.SimulationMetadata] 
           ErrorMessage: [0x0 char] 

Get data from the simulation output.

collCheckingPairs = [out.geom1Idx.Data out.geom2Idx.Data];
collStatuses = out.collStatus.Data;
sepDistances = out.sepDist.Data;
witnessPoints = out.witnessPts.Data;

Ports

Input

expand all

Vertices of the mesh, specified as an N-by-3 matrix, where N is the number of vertices and must greater than or equal to 1. Each row of Vertices represents the coordinates of a point in 3-D space. Note that some of the points can be inside the constructed convex mesh.

Pose of the collision geometry relative to the world frame, specified as a 4-by-4 homogeneous matrix.

Output

expand all

Collision geometry, returned as a bus.

To perform collision checking, connect this output to a Check Collision block as input.

Validity of collision mesh vertices, returned as one of these values:

  • 4 — Vertices matrix contains values nonnumeric.

  • 3 — Vertices matrix contains values that are not real.

  • 2 — Vertices matrix contains nonfinite values.

  • 1 — Vertices matrix does not have three columns.

  • 0 — Vertices are valid.

To validate vertices at runtime instead, select the Enable Runtime Input Dimensions Error parameter.

Data Types: uint16

Parameters

expand all

To edit block parameters interactively, use the Property Inspector. From the Simulink® Toolstrip, on the Simulation tab, in the Prepare gallery, select Property Inspector.

Select this parameter to enable runtime validation of the collision mesh vertices and return an error if Vertices is invalid.

If you clear this parameter, the block does not error during simulation, and instead uses the ExitFlag port to identify invalid mesh vertices.

  • Interpreted execution — Simulate model using the MATLAB® interpreter. For more information, see Interpreted Execution vs. Code Generation (Simulink).

  • Code generation — Simulate model using generated C code. The first time you run a simulation, Simulink generates C code for the block. The C code is reused for subsequent simulations, as long as the model does not change.

Tunable: No

More About

expand all

Extended Capabilities

expand all

Version History

Introduced in R2025a