showCollisionArray
Description
[___] = showCollisionArray(___,
specifies additional options using one or more name-value arguments in addition to all
arguments from the previous syntax. For example, Name=Value
)Parent=ax1
specifies
ax1
as the axes in which to draw the collision objects.
Examples
Decompose Non-Convex Meshes for Collision Checking
Load an STL file containing a rectangular bin triangulation, and then visualize the bin triangulation.
meshTri = stlread("bin.stl"); trisurf(meshTri) axis equal
Create a collision mesh using the points from the triangulation of the bin, and then visualize the mesh. Note that, when you approximate the bin triangulation as one collision mesh, the collisionMesh
object uses the convex hull of the bin triangulation to approximate the bin. As a result the collision mesh is convex, unlike the non-convex bin triangulation. The collisionMesh
object does this because collision checking is most efficient with convex meshes. However, this convex approximation is not ideal for bins because robots can manipulate bins or objects inside of bins.
meshColl = collisionMesh(meshTri.Points); [~,p] = show(meshColl); view(145,30) % Change view so it is easier to view the inside of bin axis equal hold on
Create a soda can using a collision cylinder, and set the pose such that it sits in the center of the bin. Then, show it in the convex collision mesh.
sodacan = collisionCylinder(0.1,0.4,Pose=trvec2tform([0 0 .3])); show(sodacan);
Set the box to be transparent so that you can see the overlap between the bin and the soda can.
p.FaceAlpha = 0.25;
hold off
Check collision between the soda can and the convex approximation of the bin, and note that they are in collision.
isCollidingConvex = checkCollision(sodacan,meshColl)
isCollidingConvex = 1
To get a better approximation of the bin for collision checking, decompose the original non-convex mesh into multiple convex meshes using voxelized hierarchical approximate convex decomposition (V-HACD).
Use the collisionVHACD
function to decompose the original non-convex triangulation into convex collision meshes. Then, show the decomposed bin with the soda can.
decomposedBin = collisionVHACD(meshTri);
showCollisionArray([decomposedBin {sodacan}]);
view(145,30)
axis equal
Check collision with all the meshes that approximate the bin. Note that the soda can is not in collision with the decomposed non-convex approximation of the bin. If you require a more accurate decomposition of the bin, you can specify custom solver options using the vhacdOptions
object.
isColliding = false(1,length(decomposedBin)); for i = 1:length(decomposedBin) isColliding(i) = checkCollision(sodacan,decomposedBin{i}); end isCollidingAll = all(isColliding)
isCollidingAll = logical
0
Input Arguments
collArray
— Collision objects
N-element cell array of collision geometry objects
Collision objects, specified as an N-element cell array of collision geometry objects. N is the number of collision objects in the cell array. A collision object must be one of these objects:
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
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.
Example: showCollisionArray(collArr,Parent=ax1)
specifies
ax1
as the axes in which to draw the collision objects.
Parent
— Parent axes
Axes
object
Parent axes, specified as an Axes
object in which to draw the
collision objects in collArray
. By default, the function plots
the collision objects in the active axes. For more information, see Axes Properties.
ColorOrder
— Color order
three-column matrix of RGB triplets
Color order, specified as a three-column matrix of RGB triplets. This property defines the palette of colors MATLAB® uses to create plot objects such as Line
, Scatter
, and Bar
objects. Each row of the matrix is an RGB triplet. An RGB triplet is a three-element vector whose elements specify the intensities of the red, green, and blue components of a color. The intensities must be in the range [0, 1].
This table lists the default colors.
RGB Triplet | Hexadecimal Color Code | Appearance |
---|---|---|
[0 0.4470 0.7410] | "#0072BD" | |
[0.8500 0.3250 0.0980] | "#D95319" | |
[0.9290 0.6940 0.1250] | "#EDB120" | |
[0.4940 0.1840 0.5560] | "#7E2F8E" | |
[0.4660 0.6740 0.1880] | "#77AC30" | |
[0.3010 0.7450 0.9330] | "#4DBEEE" | |
[0.6350 0.0780 0.1840] | "#A2142F" |
MATLAB assigns colors to objects according to their order of creation. For example, when plotting lines, the first line uses the first color, the second line uses the second color, and so on. If there are more lines than colors, then the cycle repeats.
Changing Color Order Before or After Plotting
You can change the color order in either of these ways:
Call the
colororder
function to change the color order for all the axes in a figure. The colors of existing plots in the figure update immediately. If you place additional axes into the figure, those axes also use the new color order. If you continue to call plotting commands, those commands also use the new colors.Set the
ColorOrder
property of the axes, call thehold
function to set the axes hold state to"on"
, and then call the desired plotting functions. Unlike calling thecolororder
function, this process sets the color order for only the specified axes, not the entire figure. You must set thehold
state to"on"
to ensure that subsequent plotting commands do not reset the axes to use the default color order.
Output Arguments
ax
— Axes graphic handle
Axes
object
Axes graphic handle, returned as an Axes
object. This object
contains the properties of the figure that you plot the collision objects onto. For more
information, see Axes Properties.
patches
— Patches of collision objects
N-element Patch
array
Patches of collision objects, returned as N-element
Patch
array corresponding to the collision objects.
N is the number of collision objects in the Patch
array. For more information, see Patch Properties.
Version History
Introduced in R2023b
See Also
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)