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
Public Member Functions inherited from