Description
Geometric model for the custom multicore Chrono collision system.
#include <ChCollisionModelChrono.h>
Public Member Functions | |
virtual ChCollisionSystemType | GetType () const override |
Return the type of this collision model. | |
virtual int | ClearModel () override |
Deletes all inserted geometries. More... | |
virtual int | BuildModel () override |
Builds the BV hierarchy. More... | |
virtual void | SyncPosition () override |
Sets the position and orientation of the collision model as the rigid body current position. | |
virtual void | SetContactable (ChContactable *mc) override |
Sets the pointer to the contactable object. | |
virtual bool | AddSphere (std::shared_ptr< ChMaterialSurface > material, double radius, const ChVector<> &pos=ChVector<>()) override |
Add a sphere shape to this collision model. More... | |
virtual bool | AddEllipsoid (std::shared_ptr< ChMaterialSurface > material, double axis_x, double axis_y, double axis_z, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1)) override |
Add an ellipsoid shape to this collision model. More... | |
virtual bool | AddBox (std::shared_ptr< ChMaterialSurface > material, double size_x, double size_y, double size_z, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1)) override |
Add a box shape to this collision model. More... | |
virtual bool | AddRoundedBox (std::shared_ptr< ChMaterialSurface > material, double size_x, double size_y, double size_z, double sphere_r, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1)) override |
Add a rounded box shape to this collision model. More... | |
virtual bool | AddTriangle (std::shared_ptr< ChMaterialSurface > material, ChVector<> A, ChVector<> B, ChVector<> C, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1)) |
Add a triangle shape to this model, for collision purposes. More... | |
virtual bool | AddCylinder (std::shared_ptr< ChMaterialSurface > material, double radius, double height, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1)) override |
Add a cylinder to this collision model (axis in Z direction). More... | |
virtual bool | AddCylindricalShell (std::shared_ptr< ChMaterialSurface > material, double radius, double height, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1)) override |
Add a cylindrical shell to this collision model (axis in Z direction). More... | |
virtual bool | AddRoundedCylinder (std::shared_ptr< ChMaterialSurface > material, double radius, double height, double sphere_r, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1)) override |
Add a rounded cylinder to this collision model (axis in Z direction). More... | |
virtual bool | AddCone (std::shared_ptr< ChMaterialSurface > material, double radius, double height, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1)) override |
Add a cone to this collision model (axis in Z direction). More... | |
virtual bool | AddCapsule (std::shared_ptr< ChMaterialSurface > material, double radius, double height, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1)) override |
Add a capsule to this collision model (axis in Z direction). More... | |
virtual bool | AddConvexHull (std::shared_ptr< ChMaterialSurface > material, const std::vector< ChVector< double >> &pointlist, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1)) override |
Add a convex hull to this collision model. More... | |
virtual bool | AddTriangleMesh (std::shared_ptr< ChMaterialSurface > material, std::shared_ptr< geometry::ChTriangleMesh > trimesh, bool is_static, bool is_convex, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1), double sphereswept_thickness=0.0) override |
Add a triangle mesh to this collision model. More... | |
virtual bool | AddBarrel (std::shared_ptr< ChMaterialSurface > material, double Y_low, double Y_high, double axis_vert, double axis_hor, double R_offset, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1)) override |
Add a barrel-like shape to this collision model (main axis on Y direction). More... | |
virtual bool | AddCopyOfAnotherModel (ChCollisionModel *another) override |
Add all shapes already contained in another model. | |
virtual void | GetAABB (ChVector<> &bbmin, ChVector<> &bbmax) const override |
Return the axis aligned bounding box for this collision model. | |
virtual ChCoordsys | GetShapePos (int index) const override |
Return the position and orientation of the collision shape with specified index, relative to the model frame. | |
virtual std::vector< double > | GetShapeDimensions (int index) const override |
Return shape characteristic dimensions. More... | |
ChBody * | GetBody () const |
Return a pointer to the associated body. | |
void | SetBody (ChBody *body) |
Set the pointer to the owner rigid body. | |
Public Member Functions inherited from chrono::collision::ChCollisionModel | |
bool | AddCylinder (std::shared_ptr< ChMaterialSurface > material, double radius, const ChVector<> &p1, const ChVector<> &p2) |
Add a cylinder specified through a radius and end points. More... | |
virtual bool | Add2Dpath (std::shared_ptr< ChMaterialSurface > material, std::shared_ptr< geometry::ChLinePath > mpath, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1), const double thickness=0.001) |
Add a 2D closed line, defined on the XY plane passing by pos and aligned as rot, that defines a 2D collision shape that will collide with another 2D line of the same type if aligned on the same plane. More... | |
virtual bool | AddPoint (std::shared_ptr< ChMaterialSurface > material, double radius=0, const ChVector<> &pos=ChVector<>()) |
Add a point-like sphere, that will collide with other geometries, but won't ever create contacts between them. More... | |
virtual bool | AddConvexHullsFromFile (std::shared_ptr< ChMaterialSurface > material, ChStreamInAscii &mstream, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1)) |
Add a cluster of convex hulls specified in a '.chulls' file description. More... | |
ChContactable * | GetContactable () |
Get the pointer to the contactable object. | |
virtual ChPhysicsItem * | GetPhysicsItem () |
Get the pointer to the client owner ChPhysicsItem. More... | |
virtual void | SetFamily (int mfamily) |
By default, all collision objects belong to family n.0, but you can set family in range 0..15. More... | |
virtual int | GetFamily () |
virtual void | SetFamilyMaskNoCollisionWithFamily (int mfamily) |
By default, family mask is all turned on, so all families can collide with this object, but you can turn on-off some bytes of this mask so that some families do not collide. More... | |
virtual void | SetFamilyMaskDoCollisionWithFamily (int mfamily) |
virtual bool | GetFamilyMaskDoesCollisionWithFamily (int mfamily) |
Tells if the family mask of this collision object allows for the collision with another collision object belonging to a given family. More... | |
virtual short int | GetFamilyGroup () const |
Return the collision family group of this model. More... | |
virtual void | SetFamilyGroup (short int group) |
Set the collision family group of this model. More... | |
virtual short int | GetFamilyMask () const |
Return the collision mask for this model. More... | |
virtual void | SetFamilyMask (short int mask) |
Set the collision mask for this model. More... | |
virtual void | SetSafeMargin (double amargin) |
Set the suggested collision 'inward safe margin' for the shapes to be added from now on. More... | |
virtual float | GetSafeMargin () |
Returns the inward safe margin (see SetSafeMargin() ) | |
virtual void | SetEnvelope (double amargin) |
Set the suggested collision outward 'envelope' used from shapes added from now on. More... | |
virtual float | GetEnvelope () |
Return the outward safe margin (see SetEnvelope() ) | |
virtual void | ArchiveOut (ChArchiveOut &marchive) |
Method to allow serialization of transient data to archives. | |
virtual void | ArchiveIn (ChArchiveIn &marchive) |
Method to allow de-serialization of transient data from archives. | |
int | GetNumShapes () const |
Return the number of collision shapes in this model. | |
const std::vector< std::shared_ptr< ChCollisionShape > > & | GetShapes () const |
Get the list of collision shapes in this model. | |
std::shared_ptr< ChCollisionShape > | GetShape (int index) |
Get the collision shape with specified index. | |
void | SetShapeMaterial (int index, std::shared_ptr< ChMaterialSurface > mat) |
Set the contact material for the collision shape with specified index. | |
void | SetAllShapesMaterial (std::shared_ptr< ChMaterialSurface > mat) |
Set the contact material for all collision shapes in the model (all shapes will share the material). More... | |
Public Attributes | |
std::vector< real3 > | local_convex_data |
ChVector | aabb_min |
ChVector | aabb_max |
Protected Attributes | |
ChBody * | mbody |
Protected Attributes inherited from chrono::collision::ChCollisionModel | |
float | model_envelope |
Maximum envelope: surrounding volume from surface to the exterior. | |
float | model_safe_margin |
Maximum margin value to be used for fast penetration contact detection. | |
ChContactable * | mcontactable |
Pointer to the contactable object. | |
short int | family_group |
Collision family group. | |
short int | family_mask |
Collision family mask. | |
std::vector< std::shared_ptr< ChCollisionShape > > | m_shapes |
list of collision shapes in model | |
Additional Inherited Members | |
Static Public Member Functions inherited from chrono::collision::ChCollisionModel | |
static void | SetDefaultSuggestedEnvelope (double menv) |
Using this function BEFORE you start creating collision shapes, it will make all following collision shapes to take this collision envelope (safe outward layer) as default. More... | |
static void | SetDefaultSuggestedMargin (double mmargin) |
Using this function BEFORE you start creating collision shapes, it will make all following collision shapes to take this collision margin (inward penetration layer) as default. More... | |
static double | GetDefaultSuggestedEnvelope () |
static double | GetDefaultSuggestedMargin () |
Protected Member Functions inherited from chrono::collision::ChCollisionModel | |
void | CopyShapes (ChCollisionModel *other) |
Copy the collision shapes from another model. | |
virtual float | GetSuggestedFullMargin () |
Member Function Documentation
◆ AddBarrel()
|
overridevirtual |
Add a barrel-like shape to this collision model (main axis on Y direction).
The barrel shape is made by lathing an arc of an ellipse around the vertical Y axis. The center of the ellipse is on Y=0 level, and it is offsetted by R_offset from the Y axis in radial direction. The two axes of the ellipse are axis_vert (for the vertical direction, i.e. the axis parallel to Y) and axis_hor (for the axis that is perpendicular to Y). Also, the solid is clamped with two discs on the top and the bottom, at levels Y_low and Y_high. Currently not supported.
- Parameters
-
material surface contact material Y_low bottom level Y_high top level axis_vert ellipse axis in vertical direction axis_hor ellipse axis in horizontal direction R_offset lateral offset (radius at top and bottom) pos center position in model coordinates rot rotation in model coordinates
Implements chrono::collision::ChCollisionModel.
◆ AddBox()
|
overridevirtual |
Add a box shape to this collision model.
- Parameters
-
material surface contact material size_x x dimension size_y y dimension size_z z dimension pos center position in model coordinates rot rotation in model coordinates
Implements chrono::collision::ChCollisionModel.
Reimplemented in chrono::collision::ChCollisionModelDistributed.
◆ AddCapsule()
|
overridevirtual |
Add a capsule to this collision model (axis in Z direction).
- Parameters
-
material surface contact material radius radius height height of cylindrical portion pos center position in model coordinates rot rotation in model coordinates
Implements chrono::collision::ChCollisionModel.
◆ AddCone()
|
overridevirtual |
Add a cone to this collision model (axis in Z direction).
- Parameters
-
material surface contact material radius radius height height pos base center position in model coordinates rot rotation in model coordinates
Implements chrono::collision::ChCollisionModel.
◆ AddConvexHull()
|
overridevirtual |
Add a convex hull to this collision model.
A convex hull is simply a point cloud that describe a convex polytope. Connectivity between the vertexes, as faces/edges in triangle meshes is not necessary. Points are passed as a list which is then copied into the model.
- Parameters
-
material surface contact material pointlist list of hull points pos origin position in model coordinates rot rotation in model coordinates
Implements chrono::collision::ChCollisionModel.
◆ AddCylinder()
|
overridevirtual |
Add a cylinder to this collision model (axis in Z direction).
- Parameters
-
material surface contact material radius radius height height pos center position in model coordinates rot rotation in model coordinates
Implements chrono::collision::ChCollisionModel.
◆ AddCylindricalShell()
|
overridevirtual |
Add a cylindrical shell to this collision model (axis in Z direction).
- Parameters
-
material surface contact material radius radius height height pos center position in model coordinates rot rotation in model coordinates
Implements chrono::collision::ChCollisionModel.
◆ AddEllipsoid()
|
overridevirtual |
Add an ellipsoid shape to this collision model.
- Parameters
-
material surface contact material axis_x x axis length axis_y y axis length axis_z z axis length pos center position in model coordinates rot rotation in model coordinates
Implements chrono::collision::ChCollisionModel.
◆ AddRoundedBox()
|
overridevirtual |
Add a rounded box shape to this collision model.
- Parameters
-
material surface contact material size_x x dimension size_y y dimension size_z z dimension sphere_r radius of sweeping sphere pos center position in model coordinates rot rotation in model coordinates
Implements chrono::collision::ChCollisionModel.
◆ AddRoundedCylinder()
|
overridevirtual |
Add a rounded cylinder to this collision model (axis in Z direction).
- Parameters
-
material surface contact material radius radius height height sphere_r radius of sweeping sphere pos center position in model coordinates rot rotation in model coordinates
Implements chrono::collision::ChCollisionModel.
◆ AddSphere()
|
overridevirtual |
Add a sphere shape to this collision model.
- Parameters
-
material surface contact material radius sphere radius pos center position in model coordinates
Implements chrono::collision::ChCollisionModel.
Reimplemented in chrono::collision::ChCollisionModelDistributed.
◆ AddTriangle()
|
virtual |
Add a triangle shape to this model, for collision purposes.
- Parameters
-
material surface contact material A triangle vertex A B triangle vertex B C triangle vertex C pos center position in model coordinates rot rotation in model coordinates
Reimplemented in chrono::collision::ChCollisionModelDistributed.
◆ AddTriangleMesh()
|
overridevirtual |
Add a triangle mesh to this collision model.
Add a triangle mesh to this model.
Note: if possible, for better performance, avoid triangle meshes and prefer simplified representations as compounds of primitive convex shapes (boxes, sphers, etc).
- Parameters
-
material surface contact material trimesh the triangle mesh is_static true if model doesn't move. May improve performance. is_convex if true, a convex hull is used. May improve robustness. pos origin position in model coordinates rot rotation in model coordinates sphereswept_thickness outward sphere-swept layer (when supported)
Implements chrono::collision::ChCollisionModel.
◆ BuildModel()
|
overridevirtual |
Builds the BV hierarchy.
Call this function AFTER adding the geometric description. MUST be inherited by child classes! (ex for bulding BV hierarchies)
Implements chrono::collision::ChCollisionModel.
◆ ClearModel()
|
overridevirtual |
Deletes all inserted geometries.
Also, if you begin the definition of a model, AFTER adding the geometric description, remember to call the ClearModel(). MUST be inherited by child classes! (ex for resetting also BV hierarchies)
Implements chrono::collision::ChCollisionModel.
Reimplemented in chrono::collision::ChCollisionModelDistributed.
◆ GetShapeDimensions()
|
overridevirtual |
Return shape characteristic dimensions.
The following collision shapes are supported:
SPHERE radius BOX x-halfdim y-halfdim z-halfdim ELLIPSOID x-radius y-radius z-radius CYLINDER x-radius z-radius halflength CYLSHELL radius halflength CONE x-radius z-radius halfheight CAPSULE radius halflength ROUNDEDBOX x-halfdim y-halfdim z-halfdim sphere_rad ROUNDEDCYL x-radius z-radius halflength sphere_rad
Implements chrono::collision::ChCollisionModel.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono/collision/ChCollisionModelChrono.h
- /builds/uwsbel/chrono/src/chrono/collision/ChCollisionModelChrono.cpp