Describes a volume centered on a vertex of the target object; The id's of all vertices within this volume form a patch on the target object's surface. More...
#include <finger.h>
Public Member Functions | |
InclusionRule () | |
InclusionRule (double rule_parameter_in, RuleType rule_type_t_in=Sphere, bool filter_in=false) | |
Constructs an inclusion rule. Default values are chose when input values are out of scope. | |
bool | inclusionTest (ContactPoint const *center_point, ContactPoint const *test_point) const |
Public Attributes | |
bool | filter_inside_points_ |
double | rule_parameter_ |
RuleType | rule_type_ |
Friends | |
std::ostream & | operator<< (std::ostream &stream, InclusionRule const &inclusion_rule) |
Describes a volume centered on a vertex of the target object; The id's of all vertices within this volume form a patch on the target object's surface.
Each ICR::MultiPointContactModel has an inclusion rule as a member. Those inclusion rules can differ between fingers. If they do, a separate list of patches will be created for each finger during initialization of the grasp. If the flag ICR::InclusionRule::filter_inside_points_ is true, all patches corresponding to the respective finger only contain the center-point and border points. Here, the border is defined by those points having neighbors which don't qualify for patch inclusion. Right now, the inclusion rule is governed only by the scalar ICR::InclusionRule::rule_parameter_ which gives the radius of a sphere centered at a given center-point on the target object. One possibility to generalize this struct would be to change the rule parameter to a 3x3 Matrix parametrizing an ellipsoid and add an additional rotation matrix to give the orientation of this ellipsoid w.r.t the target object. An even more sophisticated possibility would be to formulate the rule parameter as a mesh describing the respective finger tip with a given offset. Maybe also change the name to ICR::PatchRule or something like that to avoid confusion with ICR::IndependentContactRegions::searchZoneInclusionTest and ICR::IndependentContactRegions::primitiveSearchZoneInclusionTest.
Definition at line 12 of file finger.cpp.
ICR::InclusionRule::InclusionRule | ( | double | rule_parameter_in, |
RuleType | rule_type_t_in = Sphere , |
||
bool | filter_in = false |
||
) |
Constructs an inclusion rule. Default values are chose when input values are out of scope.
rule_parameter_in | [in] In current config, it is radius of a sphere must be > 0. otherwise default value is chosen. |
Definition at line 17 of file finger.cpp.
bool ICR::InclusionRule::inclusionTest | ( | ContactPoint const * | center_point, |
ContactPoint const * | test_point | ||
) | const |
Returns true if the volume parametrized by ICR::InclusionRule::rule_parameter_, which is centered at center_point, contains test_point
Definition at line 33 of file finger.cpp.
std::ostream& operator<< | ( | std::ostream & | stream, |
InclusionRule const & | inclusion_rule | ||
) | [friend] |
Definition at line 49 of file finger.cpp.