Public Member Functions | Public Attributes | Protected Attributes | List of all members
exotica::CollisionScene Class Referenceabstract

The class of collision scene. More...

#include <collision_scene.h>

Inheritance diagram for exotica::CollisionScene:
Inheritance graph
[legend]

Public Member Functions

void AssignScene (std::shared_ptr< Scene > scene)
 Sets a scene pointer to the CollisionScene for access to methods. More...
 
 CollisionScene ()
 
virtual std::vector< ContinuousCollisionProxyContinuousCollisionCast (const std::vector< std::vector< std::tuple< std::string, Eigen::Isometry3d, Eigen::Isometry3d >>> &)
 Performs a continuous collision check by casting the active objects passed in against the static environment. More...
 
virtual ContinuousCollisionProxy ContinuousCollisionCheck (const std::string &, const KDL::Frame &, const KDL::Frame &, const std::string &, const KDL::Frame &, const KDL::Frame &)
 Performs a continuous collision check between two objects with a linear interpolation between two given. More...
 
bool get_replace_cylinders_with_capsules () const
 
bool GetAlwaysExternallyUpdatedCollisionScene () const
 
virtual std::vector< CollisionProxyGetCollisionDistance (bool)
 Computes collision distances. More...
 
virtual std::vector< CollisionProxyGetCollisionDistance (const std::string &, const bool &)
 Gets the closest distance of any collision object which is allowed to collide with any collision object related to object o1. More...
 
virtual std::vector< CollisionProxyGetCollisionDistance (const std::string &, const bool &, const bool &)
 Gets the closest distance of any collision object which is allowed to collide with any collision object related to object o1. More...
 
virtual std::vector< CollisionProxyGetCollisionDistance (const std::string &, const std::string &)
 Computes collision distances between two objects. More...
 
virtual std::vector< CollisionProxyGetCollisionDistance (const std::vector< std::string > &, const bool &)
 Gets the closest distance of any collision object which is allowed to collide with any collision object related to any of the objects. More...
 
virtual std::vector< std::string > GetCollisionRobotLinks ()=0
 Gets the collision robot links. More...
 
virtual std::vector< std::string > GetCollisionWorldLinks ()=0
 Gets the collision world links. More...
 
bool GetReplacePrimitiveShapesWithMeshes () const
 
double GetRobotLinkPadding () const
 
double GetRobotLinkScale () const
 
virtual std::vector< CollisionProxyGetRobotToRobotCollisionDistance (double)
 Gets the closest distances between links within the robot that are closer than check_margin. More...
 
virtual std::vector< CollisionProxyGetRobotToWorldCollisionDistance (double)
 Gets the closest distances between links of the robot and the environment that are closer than check_margin. More...
 
virtual Eigen::Vector3d GetTranslation (const std::string &name)=0
 Returns the translation of the named collision object. More...
 
double GetWorldLinkPadding () const
 
double GetWorldLinkScale () const
 
virtual void InstantiateBase (const Initializer &init)
 Instantiates the base properties of the CollisionScene. More...
 
virtual bool IsAllowedToCollide (const std::string &o1, const std::string &o2, const bool &self)
 Returns whether two collision objects/shapes are allowed to collide by name. More...
 
virtual bool IsCollisionFree (const std::string &, const std::string &, double=0.0)
 Checks if two objects are in collision. More...
 
virtual bool IsStateValid (bool self=true, double safe_distance=0.0)=0
 Checks if the whole robot is valid (collision only). More...
 
void set_replace_cylinders_with_capsules (const bool value)
 
void SetACM (const AllowedCollisionMatrix &acm)
 
void SetAlwaysExternallyUpdatedCollisionScene (const bool value)
 
void SetReplacePrimitiveShapesWithMeshes (const bool value)
 
void SetRobotLinkPadding (const double padding)
 
void SetRobotLinkScale (const double scale)
 
virtual void Setup ()
 Setup additional construction that requires initialiser parameter. More...
 
void SetWorldLinkPadding (const double padding)
 
void SetWorldLinkScale (const double scale)
 
virtual void UpdateCollisionObjects (const std::map< std::string, std::weak_ptr< KinematicElement >> &objects)=0
 Creates the collision scene from kinematic elements. More...
 
virtual void UpdateCollisionObjectTransforms ()=0
 Updates collision object transformations from the kinematic tree. More...
 
virtual ~CollisionScene ()
 
- Public Member Functions inherited from exotica::Object
std::string GetObjectName ()
 
void InstantiateObject (const Initializer &init)
 
 Object ()
 
virtual std::string Print (const std::string &prepend) const
 
virtual std::string type () const
 Type Information wrapper: must be virtual so that it is polymorphic... More...
 
virtual ~Object ()
 
- Public Member Functions inherited from exotica::Uncopyable
 Uncopyable ()=default
 
 ~Uncopyable ()=default
 
- Public Member Functions inherited from exotica::InstantiableBase
virtual std::vector< InitializerGetAllTemplates () const =0
 
virtual Initializer GetInitializerTemplate ()=0
 
 InstantiableBase ()=default
 
virtual void InstantiateInternal (const Initializer &init)=0
 
virtual ~InstantiableBase ()=default
 

Public Attributes

bool debug_ = false
 
- Public Attributes inherited from exotica::Object
bool debug_
 
std::string ns_
 
std::string object_name_
 

Protected Attributes

AllowedCollisionMatrix acm_
 The allowed collision matrix. More...
 
bool always_externally_updated_collision_scene_ = false
 Whether the collision scene is automatically updated - if not, update on queries. More...
 
bool needs_update_of_collision_objects_ = true
 Indicates whether TriggerUpdateCollisionObjects needs to be called. More...
 
bool replace_cylinders_with_capsules_ = false
 Replace cylinders with capsules internally. More...
 
bool replace_primitive_shapes_with_meshes_ = false
 Replace primitive shapes with meshes internally (e.g. when primitive shape algorithms are brittle, i.e. in FCL) More...
 
double robot_link_padding_ = 0.0
 Robot link padding. More...
 
std::string robot_link_replacement_config_ = ""
 Filename for config file (YAML) which contains shape replacements. More...
 
double robot_link_scale_ = 1.0
 Robot link scaling. More...
 
std::weak_ptr< Scenescene_
 Stores a pointer to the Scene which owns this CollisionScene. More...
 
double world_link_padding_ = 0.0
 World link padding. More...
 
double world_link_scale_ = 1.0
 World link scaling. More...
 

Detailed Description

The class of collision scene.

Definition at line 152 of file collision_scene.h.

Constructor & Destructor Documentation

◆ CollisionScene()

exotica::CollisionScene::CollisionScene ( )
inline

Definition at line 155 of file collision_scene.h.

◆ ~CollisionScene()

virtual exotica::CollisionScene::~CollisionScene ( )
inlinevirtual

Definition at line 156 of file collision_scene.h.

Member Function Documentation

◆ AssignScene()

void exotica::CollisionScene::AssignScene ( std::shared_ptr< Scene scene)
inline

Sets a scene pointer to the CollisionScene for access to methods.

Definition at line 305 of file collision_scene.h.

◆ ContinuousCollisionCast()

virtual std::vector<ContinuousCollisionProxy> exotica::CollisionScene::ContinuousCollisionCast ( const std::vector< std::vector< std::tuple< std::string, Eigen::Isometry3d, Eigen::Isometry3d >>> &  )
inlinevirtual

Performs a continuous collision check by casting the active objects passed in against the static environment.

Parameters
[in]motion_transformsA tuple consisting out of collision object name and its beginning and final transform.
Returns
Vector of deepest ContinuousCollisionProxy (one per dimension).

Definition at line 229 of file collision_scene.h.

◆ ContinuousCollisionCheck()

virtual ContinuousCollisionProxy exotica::CollisionScene::ContinuousCollisionCheck ( const std::string &  ,
const KDL::Frame &  ,
const KDL::Frame &  ,
const std::string &  ,
const KDL::Frame &  ,
const KDL::Frame &   
)
inlinevirtual

Performs a continuous collision check between two objects with a linear interpolation between two given.

Parameters
[in]o1The first collision object, by name.
[in]tf1_begThe beginning transform for o1.
[in]tf1_endThe end transform for o1.
[in]o2The second collision object, by name.
[in]tf2_begThe beginning transform for o2.
[in]tf2_endThe end transform for o2.
Returns
ContinuousCollisionProxy.

Definition at line 225 of file collision_scene.h.

◆ get_replace_cylinders_with_capsules()

bool exotica::CollisionScene::get_replace_cylinders_with_capsules ( ) const
inline

Definition at line 295 of file collision_scene.h.

◆ GetAlwaysExternallyUpdatedCollisionScene()

bool exotica::CollisionScene::GetAlwaysExternallyUpdatedCollisionScene ( ) const
inline

Definition at line 239 of file collision_scene.h.

◆ GetCollisionDistance() [1/5]

virtual std::vector<CollisionProxy> exotica::CollisionScene::GetCollisionDistance ( bool  )
inlinevirtual

Computes collision distances.

Parameters
selfIndicate if self collision check is required.
Returns
Collision proximity objects for all colliding pairs of shapes.

Definition at line 183 of file collision_scene.h.

◆ GetCollisionDistance() [2/5]

virtual std::vector<CollisionProxy> exotica::CollisionScene::GetCollisionDistance ( const std::string &  ,
const bool &   
)
inlinevirtual

Gets the closest distance of any collision object which is allowed to collide with any collision object related to object o1.

Parameters
[in]o1Name of object 1.
Returns
Vector of proximity objects.

Definition at line 192 of file collision_scene.h.

◆ GetCollisionDistance() [3/5]

virtual std::vector<CollisionProxy> exotica::CollisionScene::GetCollisionDistance ( const std::string &  ,
const bool &  ,
const bool &   
)
inlinevirtual

Gets the closest distance of any collision object which is allowed to collide with any collision object related to object o1.

Parameters
[in]o1Name of object 1.
[in]disable_collision_scene_updateAllows disabling of collision object transforms (requires manual update).
Returns
Vector of proximity objects.

Definition at line 197 of file collision_scene.h.

◆ GetCollisionDistance() [4/5]

virtual std::vector<CollisionProxy> exotica::CollisionScene::GetCollisionDistance ( const std::string &  ,
const std::string &   
)
inlinevirtual

Computes collision distances between two objects.

Parameters
o1Name of object 1.
o2Name of object 2.
Returns
Vector of proximity objects.

Definition at line 188 of file collision_scene.h.

◆ GetCollisionDistance() [5/5]

virtual std::vector<CollisionProxy> exotica::CollisionScene::GetCollisionDistance ( const std::vector< std::string > &  ,
const bool &   
)
inlinevirtual

Gets the closest distance of any collision object which is allowed to collide with any collision object related to any of the objects.

Parameters
[in]objectsVector of object names.
Returns
Vector of proximity objects.

Definition at line 202 of file collision_scene.h.

◆ GetCollisionRobotLinks()

virtual std::vector<std::string> exotica::CollisionScene::GetCollisionRobotLinks ( )
pure virtual

Gets the collision robot links.

Returns
The collision robot links.

◆ GetCollisionWorldLinks()

virtual std::vector<std::string> exotica::CollisionScene::GetCollisionWorldLinks ( )
pure virtual

Gets the collision world links.

Returns
The collision world links.

◆ GetReplacePrimitiveShapesWithMeshes()

bool exotica::CollisionScene::GetReplacePrimitiveShapesWithMeshes ( ) const
inline

Definition at line 281 of file collision_scene.h.

◆ GetRobotLinkPadding()

double exotica::CollisionScene::GetRobotLinkPadding ( ) const
inline

Definition at line 263 of file collision_scene.h.

◆ GetRobotLinkScale()

double exotica::CollisionScene::GetRobotLinkScale ( ) const
inline

Definition at line 245 of file collision_scene.h.

◆ GetRobotToRobotCollisionDistance()

virtual std::vector<CollisionProxy> exotica::CollisionScene::GetRobotToRobotCollisionDistance ( double  )
inlinevirtual

Gets the closest distances between links within the robot that are closer than check_margin.

Parameters
[in]check_marginMargin for distance checks - only objects closer than this margin will be checked

Definition at line 205 of file collision_scene.h.

◆ GetRobotToWorldCollisionDistance()

virtual std::vector<CollisionProxy> exotica::CollisionScene::GetRobotToWorldCollisionDistance ( double  )
inlinevirtual

Gets the closest distances between links of the robot and the environment that are closer than check_margin.

Parameters
[in]check_marginMargin for distance checks - only objects closer than this margin will be checked

Definition at line 208 of file collision_scene.h.

◆ GetTranslation()

virtual Eigen::Vector3d exotica::CollisionScene::GetTranslation ( const std::string &  name)
pure virtual

Returns the translation of the named collision object.

Parameters
[in]nameName of the collision object to query.

◆ GetWorldLinkPadding()

double exotica::CollisionScene::GetWorldLinkPadding ( ) const
inline

Definition at line 272 of file collision_scene.h.

◆ GetWorldLinkScale()

double exotica::CollisionScene::GetWorldLinkScale ( ) const
inline

Definition at line 254 of file collision_scene.h.

◆ InstantiateBase()

void exotica::CollisionScene::InstantiateBase ( const Initializer init)
virtual

Instantiates the base properties of the CollisionScene.

Reimplemented from exotica::InstantiableBase.

Definition at line 42 of file collision_scene.cpp.

◆ IsAllowedToCollide()

bool exotica::CollisionScene::IsAllowedToCollide ( const std::string &  o1,
const std::string &  o2,
const bool &  self 
)
virtual

Returns whether two collision objects/shapes are allowed to collide by name.

Parameters
o1Name of the frame of the collision object (e.g., base_link_collision_0)
o2Name of the frame of the other collision object (e.g., base_link_collision_0)
Returns
true The two objects are allowed to collide.
false The two objects are excluded, e.g., by an ACM.

Definition at line 58 of file collision_scene.cpp.

◆ IsCollisionFree()

virtual bool exotica::CollisionScene::IsCollisionFree ( const std::string &  ,
const std::string &  ,
double  = 0.0 
)
inlinevirtual

Checks if two objects are in collision.

Parameters
o1Name of object 1.
o2Name of object 2.
Returns
True is the two objects are not colliding.

Definition at line 178 of file collision_scene.h.

◆ IsStateValid()

virtual bool exotica::CollisionScene::IsStateValid ( bool  self = true,
double  safe_distance = 0.0 
)
pure virtual

Checks if the whole robot is valid (collision only).

Parameters
selfIndicate if self collision check is required.
Returns
True, if the state is collision free..

◆ set_replace_cylinders_with_capsules()

void exotica::CollisionScene::set_replace_cylinders_with_capsules ( const bool  value)
inline

Definition at line 296 of file collision_scene.h.

◆ SetACM()

void exotica::CollisionScene::SetACM ( const AllowedCollisionMatrix acm)
inline

Definition at line 234 of file collision_scene.h.

◆ SetAlwaysExternallyUpdatedCollisionScene()

void exotica::CollisionScene::SetAlwaysExternallyUpdatedCollisionScene ( const bool  value)
inline

Definition at line 240 of file collision_scene.h.

◆ SetReplacePrimitiveShapesWithMeshes()

void exotica::CollisionScene::SetReplacePrimitiveShapesWithMeshes ( const bool  value)
inline

Definition at line 282 of file collision_scene.h.

◆ SetRobotLinkPadding()

void exotica::CollisionScene::SetRobotLinkPadding ( const double  padding)
inline

Definition at line 264 of file collision_scene.h.

◆ SetRobotLinkScale()

void exotica::CollisionScene::SetRobotLinkScale ( const double  scale)
inline

Definition at line 246 of file collision_scene.h.

◆ Setup()

virtual void exotica::CollisionScene::Setup ( )
inlinevirtual

Setup additional construction that requires initialiser parameter.

Definition at line 161 of file collision_scene.h.

◆ SetWorldLinkPadding()

void exotica::CollisionScene::SetWorldLinkPadding ( const double  padding)
inline

Definition at line 273 of file collision_scene.h.

◆ SetWorldLinkScale()

void exotica::CollisionScene::SetWorldLinkScale ( const double  scale)
inline

Definition at line 255 of file collision_scene.h.

◆ UpdateCollisionObjects()

virtual void exotica::CollisionScene::UpdateCollisionObjects ( const std::map< std::string, std::weak_ptr< KinematicElement >> &  objects)
pure virtual

Creates the collision scene from kinematic elements.

Parameters
objectsVector kinematic element pointers of collision objects.

◆ UpdateCollisionObjectTransforms()

virtual void exotica::CollisionScene::UpdateCollisionObjectTransforms ( )
pure virtual

Updates collision object transformations from the kinematic tree.

Member Data Documentation

◆ acm_

AllowedCollisionMatrix exotica::CollisionScene::acm_
protected

The allowed collision matrix.

Definition at line 318 of file collision_scene.h.

◆ always_externally_updated_collision_scene_

bool exotica::CollisionScene::always_externally_updated_collision_scene_ = false
protected

Whether the collision scene is automatically updated - if not, update on queries.

Definition at line 321 of file collision_scene.h.

◆ debug_

bool exotica::CollisionScene::debug_ = false

Definition at line 302 of file collision_scene.h.

◆ needs_update_of_collision_objects_

bool exotica::CollisionScene::needs_update_of_collision_objects_ = true
protected

Indicates whether TriggerUpdateCollisionObjects needs to be called.

Definition at line 312 of file collision_scene.h.

◆ replace_cylinders_with_capsules_

bool exotica::CollisionScene::replace_cylinders_with_capsules_ = false
protected

Replace cylinders with capsules internally.

Definition at line 339 of file collision_scene.h.

◆ replace_primitive_shapes_with_meshes_

bool exotica::CollisionScene::replace_primitive_shapes_with_meshes_ = false
protected

Replace primitive shapes with meshes internally (e.g. when primitive shape algorithms are brittle, i.e. in FCL)

Definition at line 336 of file collision_scene.h.

◆ robot_link_padding_

double exotica::CollisionScene::robot_link_padding_ = 0.0
protected

Robot link padding.

Definition at line 330 of file collision_scene.h.

◆ robot_link_replacement_config_

std::string exotica::CollisionScene::robot_link_replacement_config_ = ""
protected

Filename for config file (YAML) which contains shape replacements.

Definition at line 342 of file collision_scene.h.

◆ robot_link_scale_

double exotica::CollisionScene::robot_link_scale_ = 1.0
protected

Robot link scaling.

Definition at line 324 of file collision_scene.h.

◆ scene_

std::weak_ptr<Scene> exotica::CollisionScene::scene_
protected

Stores a pointer to the Scene which owns this CollisionScene.

Definition at line 315 of file collision_scene.h.

◆ world_link_padding_

double exotica::CollisionScene::world_link_padding_ = 0.0
protected

World link padding.

Definition at line 333 of file collision_scene.h.

◆ world_link_scale_

double exotica::CollisionScene::world_link_scale_ = 1.0
protected

World link scaling.

Definition at line 327 of file collision_scene.h.


The documentation for this class was generated from the following files:


exotica_core
Author(s): Yiming Yang, Michael Camilleri
autogenerated on Fri Aug 2 2024 08:43:03