Tesseract
Motion Planning Environment
|
Namespaces | |
namespace | FLOAT_MATH |
namespace | RAYCAST_MESH |
namespace | tesseract_collision_bullet |
namespace | tesseract_collision_fcl |
namespace | test_suite |
namespace | VHACD |
Classes | |
struct | CollisionCheckConfig |
This is a high level structure containing common information that collision checking utilities need. The goal of this config is to allow all collision checking utilities and planners to use the same data structure. More... | |
struct | ContactManagerConfig |
Contains parameters used to configure a contact manager before a series of contact checks. More... | |
class | ContactManagersPluginFactory |
struct | ContactRequest |
The ContactRequest struct. More... | |
struct | ContactResult |
class | ContactResultMap |
This structure hold contact results for link pairs. More... | |
struct | ContactTestData |
This data is intended only to be used internal to the collision checkers as a container and should not be externally used by other libraries or packages. More... | |
class | ContinuousContactManager |
class | ContinuousContactManagerFactory |
Define a continuous contact manager plugin which the factory can create an instance. More... | |
class | ConvexDecomposition |
class | ConvexDecompositionHACD |
class | ConvexDecompositionVHACD |
class | DiscreteContactManager |
class | DiscreteContactManagerFactory |
Define a discrete contact manager plugin which the factory can create an instance. More... | |
struct | HACDParameters |
class | ProgressCallback |
struct | VHACDParameters |
Typedefs | |
using | ObjectPairKey = std::pair< std::string, std::string > |
using | CollisionShapesConst = std::vector< tesseract_geometry::Geometry::ConstPtr > |
using | CollisionShapeConstPtr = tesseract_geometry::Geometry::ConstPtr |
using | CollisionShapePtr = tesseract_geometry::Geometry::Ptr |
using | CollisionMarginData = tesseract_common::CollisionMarginData |
using | CollisionMarginOverrideType = tesseract_common::CollisionMarginOverrideType |
using | PairsCollisionMarginData = tesseract_common::PairsCollisionMarginData |
using | IsContactAllowedFn = std::function< bool(const std::string &, const std::string &)> |
Should return true if contact allowed, otherwise false. More... | |
using | ContactResultVector = tesseract_common::AlignedVector< ContactResult > |
using | IsContactResultValidFn = std::function< bool(const ContactResult &)> |
Should return true if contact results are valid, otherwise false. More... | |
Enumerations | |
enum class | ContinuousCollisionType { CCType_None , CCType_Time0 , CCType_Time1 , CCType_Between } |
enum class | ContactTestType { FIRST = 0 , CLOSEST = 1 , ALL = 2 , LIMITED = 3 } |
enum class | CollisionEvaluatorType { NONE , DISCRETE , LVS_DISCRETE , CONTINUOUS , LVS_CONTINUOUS } |
High level descriptor used in planners and utilities to specify what kind of collision check is desired. More... | |
enum class | ACMOverrideType { NONE , ASSIGN , AND , OR } |
Identifies how the provided AllowedCollisionMatrix should be applied relative to the isAllowedFn in the contact manager. More... | |
Functions | |
int | createConvexHull (tesseract_common::VectorVector3d &vertices, Eigen::VectorXi &faces, const tesseract_common::VectorVector3d &input, double shrink=-1, double shrinkClamp=-1) |
Create a convex hull from vertices using Bullet Convex Hull Computer. More... | |
tesseract_geometry::ConvexMesh::Ptr | makeConvexMesh (const tesseract_geometry::Mesh &mesh) |
std::vector< ObjectPairKey > | getCollisionObjectPairs (const std::vector< std::string > &active_links, const std::vector< std::string > &static_links, const IsContactAllowedFn &acm=nullptr) |
Get a vector of possible collision object pairs. More... | |
bool | isLinkActive (const std::vector< std::string > &active, const std::string &name) |
This will check if a link is active provided a list. If the list is empty the link is considered active. More... | |
bool | isContactAllowed (const std::string &name1, const std::string &name2, const IsContactAllowedFn &acm, bool verbose=false) |
Determine if contact is allowed between two objects. More... | |
ContactResult * | processResult (ContactTestData &cdata, ContactResult &contact, const std::pair< std::string, std::string > &key, bool found) |
processResult Processes the ContactResult based on the information in the ContactTestData More... | |
void | scaleVertices (tesseract_common::VectorVector3d &vertices, const Eigen::Vector3d ¢er, const Eigen::Vector3d &scale) |
Apply scaling to the geometry coordinates. More... | |
void | scaleVertices (tesseract_common::VectorVector3d &vertices, const Eigen::Vector3d &scale) |
Apply scaling to the geometry coordinates. More... | |
bool | writeSimplePlyFile (const std::string &path, const tesseract_common::VectorVector3d &vertices, const std::vector< Eigen::Vector3i > &vectices_color, const Eigen::VectorXi &faces, int num_faces) |
Write a simple ply file given vertices and faces. More... | |
bool | writeSimplePlyFile (const std::string &path, const tesseract_common::VectorVector3d &vertices, const Eigen::VectorXi &faces, int num_faces) |
Write a simple ply file given vertices and faces. More... | |
int | loadSimplePlyFile (const std::string &path, tesseract_common::VectorVector3d &vertices, Eigen::VectorXi &faces, bool triangles_only=false) |
Loads a simple ply file given a path. More... | |
IsContactAllowedFn | combineContactAllowedFn (const IsContactAllowedFn &original, const IsContactAllowedFn &override, ACMOverrideType type=ACMOverrideType::OR) |
Combines two IsContactAllowedFns using the override type. More... | |
template<typename ManagerType > | |
void | applyIsContactAllowedFnOverride (ManagerType &manager, const tesseract_common::AllowedCollisionMatrix &acm, ACMOverrideType type) |
Applies ACM to contact manager using override type. More... | |
template<typename ManagerType > | |
void | applyModifyObjectEnabled (ManagerType &manager, const std::unordered_map< std::string, bool > &modify_object_enabled) |
Loops over the map and for every object string either enables or disables it based on the value (true=enable, false=disable) More... | |
Variables | |
static const std::vector< std::string > | ContactTestTypeStrings |
using tesseract_collision::CollisionMarginOverrideType = typedef tesseract_common::CollisionMarginOverrideType |
using tesseract_collision::CollisionShapesConst = typedef std::vector<tesseract_geometry::Geometry::ConstPtr> |
using tesseract_collision::ContactResultVector = typedef tesseract_common::AlignedVector<ContactResult> |
using tesseract_collision::IsContactAllowedFn = typedef std::function<bool(const std::string&, const std::string&)> |
Should return true if contact allowed, otherwise false.
Also the order of strings should not matter, the function should handled by the function.
using tesseract_collision::IsContactResultValidFn = typedef std::function<bool(const ContactResult&)> |
Should return true if contact results are valid, otherwise false.
This is used so users may provide a callback to reject/approve collision results in various algorithms.
using tesseract_collision::ObjectPairKey = typedef std::pair<std::string, std::string> |
using tesseract_collision::PairsCollisionMarginData = typedef tesseract_common::PairsCollisionMarginData |
|
strong |
Identifies how the provided AllowedCollisionMatrix should be applied relative to the isAllowedFn in the contact manager.
|
strong |
High level descriptor used in planners and utilities to specify what kind of collision check is desired.
DISCRETE - Discrete contact manager using only steps specified LVS_DISCRETE - Discrete contact manager interpolating using longest valid segment CONTINUOUS - Continuous contact manager using only steps specified LVS_CONTINUOUS - Continuous contact manager interpolating using longest valid segment
|
strong |
|
strong |
|
inline |
Applies ACM to contact manager using override type.
manager | Manager whose IsContactAllowedFn will be overwritten |
acm | ACM used to create IsContactAllowedFn |
type | Determines how the two IsContactAllowedFns are combined |
|
inline |
Loops over the map and for every object string either enables or disables it based on the value (true=enable, false=disable)
manager | Manager that will be modified |
modify_object_enabled | Map of [key]:value = [object name]:disable or enable |
IsContactAllowedFn tesseract_collision::combineContactAllowedFn | ( | const IsContactAllowedFn & | original, |
const IsContactAllowedFn & | override, | ||
ACMOverrideType | type = ACMOverrideType::OR |
||
) |
Combines two IsContactAllowedFns using the override type.
original | Original IsContactAllowedFns. This will be returned if ACMOverrideType is None |
override | Overriding IsContactAllowedFns. This will be returned if ACMOverrideType is ASSIGN |
type | Override type used to combine the IsContactAllowedFns |
int tesseract_collision::createConvexHull | ( | tesseract_common::VectorVector3d & | vertices, |
Eigen::VectorXi & | faces, | ||
const tesseract_common::VectorVector3d & | input, | ||
double | shrink = -1 , |
||
double | shrinkClamp = -1 |
||
) |
Create a convex hull from vertices using Bullet Convex Hull Computer.
(Output) | vertices A vector of vertices |
(Output) | faces The first values indicates the number of vertices that define the face followed by the vertices index |
(input) | input A vector of point to create a convex hull from |
(input) | shrink If positive, the convex hull is shrunken by that amount (each face is moved by "shrink" length units towards the center along its normal). |
(input) | shrinkClamp If positive, "shrink" is clamped to not exceed "shrinkClamp * innerRadius", where "innerRadius" is the minimum distance of a face to the center of the convex hull. |
std::vector< ObjectPairKey > tesseract_collision::getCollisionObjectPairs | ( | const std::vector< std::string > & | active_links, |
const std::vector< std::string > & | static_links, | ||
const IsContactAllowedFn & | acm = nullptr |
||
) |
Get a vector of possible collision object pairs.
active_links | The active link names |
static_links | The static link names |
acm | The is contact allowed function |
bool tesseract_collision::isContactAllowed | ( | const std::string & | name1, |
const std::string & | name2, | ||
const IsContactAllowedFn & | acm, | ||
bool | verbose = false |
||
) |
Determine if contact is allowed between two objects.
name1 | The name of the first object |
name2 | The name of the second object |
acm | The contact allowed function |
verbose | If true print debug information |
bool tesseract_collision::isLinkActive | ( | const std::vector< std::string > & | active, |
const std::string & | name | ||
) |
This will check if a link is active provided a list. If the list is empty the link is considered active.
active | List of active link names |
name | The name of link to check if it is active. |
int tesseract_collision::loadSimplePlyFile | ( | const std::string & | path, |
tesseract_common::VectorVector3d & | vertices, | ||
Eigen::VectorXi & | faces, | ||
bool | triangles_only = false |
||
) |
Loads a simple ply file given a path.
path | The file path |
vertices | A vector of vertices |
faces | The first values indicates the number of vertices that define the face followed by the vertice index |
triangles_only | Convert to only include triangles |
tesseract_geometry::ConvexMesh::Ptr tesseract_collision::makeConvexMesh | ( | const tesseract_geometry::Mesh & | mesh | ) |
ContactResult * tesseract_collision::processResult | ( | ContactTestData & | cdata, |
ContactResult & | contact, | ||
const std::pair< std::string, std::string > & | key, | ||
bool | found | ||
) |
processResult Processes the ContactResult based on the information in the ContactTestData
cdata | Information used to process the results |
contact | Contacts from the collision checkers that will be processed |
key | Link pair used as a key to look up pair specific settings |
found | Specifies whether or not a collision has already been found |
void tesseract_collision::scaleVertices | ( | tesseract_common::VectorVector3d & | vertices, |
const Eigen::Vector3d & | center, | ||
const Eigen::Vector3d & | scale | ||
) |
Apply scaling to the geometry coordinates.
Given a scaling factor s, and center c, a given vertice v is transformed according to s (v - c) + c.
vertices | The vertices to scale |
center | The point at which to scale the data about |
scale | The scale factor to apply to the vertices. |
void tesseract_collision::scaleVertices | ( | tesseract_common::VectorVector3d & | vertices, |
const Eigen::Vector3d & | scale | ||
) |
Apply scaling to the geometry coordinates.
Given a scaling factor s, and center c, a given vertice v is transformed according to s (v - c) + c.
vertices | The vertices to scale |
scale | The scale factor to apply to the vertices. |
bool tesseract_collision::writeSimplePlyFile | ( | const std::string & | path, |
const tesseract_common::VectorVector3d & | vertices, | ||
const Eigen::VectorXi & | faces, | ||
int | num_faces | ||
) |
Write a simple ply file given vertices and faces.
path | The file path |
vertices | A vector of vertices |
faces | The first values indicates the number of vertices that define the face followed by the vertice index |
num_faces | The number of faces |
bool tesseract_collision::writeSimplePlyFile | ( | const std::string & | path, |
const tesseract_common::VectorVector3d & | vertices, | ||
const std::vector< Eigen::Vector3i > & | vectices_color, | ||
const Eigen::VectorXi & | faces, | ||
int | num_faces | ||
) |
Write a simple ply file given vertices and faces.
path | The file path |
vertices | A vector of vertices |
vertices_color | The vertices color (0-255,0-255,0-255), if empty uses a default color |
faces | The first values indicates the number of vertices that define the face followed by the vertice index |
num_faces | The number of faces |
|
static |