Aikido
|
A testable that uses a collision detector to check whether a metakeleton state (configuration) results in collision between and within specified collision groups. More...
#include <aikido/constraint/dart/CollisionFree.hpp>
Public Member Functions | |
CollisionFree (statespace::dart::ConstMetaSkeletonStateSpacePtr _metaSkeletonStateSpace, ::dart::dynamics::MetaSkeletonPtr _metaskeleton, std::shared_ptr<::dart::collision::CollisionDetector > _collisionDetector, ::dart::collision::CollisionOption _collisionOptions=::dart::collision::CollisionOption(false, 1, std::make_shared<::dart::collision::BodyNodeCollisionFilter >())) | |
Constructs an empty constraint that uses _collisionDetector to test for collision. More... | |
statespace::ConstStateSpacePtr | getStateSpace () const override |
Returns StateSpace in which this constraint operates. More... | |
bool | isSatisfied (const aikido::statespace::StateSpace::State *_state, TestableOutcome *outcome=nullptr) const override |
Returns true if state satisfies this constraint. More... | |
std::unique_ptr< TestableOutcome > | createOutcome () const override |
Return an instance of a TestableOutcome derivative class that corresponds to this constraint class. More... | |
void | addPairwiseCheck (std::shared_ptr<::dart::collision::CollisionGroup > _group1, std::shared_ptr<::dart::collision::CollisionGroup > _group2) |
Checks collision between group1 and group2. More... | |
void | removePairwiseCheck (std::shared_ptr<::dart::collision::CollisionGroup > _group1, std::shared_ptr<::dart::collision::CollisionGroup > _group2) |
Remove collision check between group1 and group2. More... | |
void | addSelfCheck (std::shared_ptr<::dart::collision::CollisionGroup > _group) |
Checks collision within group. More... | |
void | removeSelfCheck (std::shared_ptr<::dart::collision::CollisionGroup > _group) |
Remove self-collision check within group. More... | |
![]() | |
virtual | ~Testable ()=default |
Private Types | |
using | CollisionGroup = ::dart::collision::CollisionGroup |
Private Attributes | |
aikido::statespace::dart::ConstMetaSkeletonStateSpacePtr | mMetaSkeletonStateSpace |
::dart::dynamics::MetaSkeletonPtr | mMetaSkeleton |
std::shared_ptr<::dart::collision::CollisionDetector > | mCollisionDetector |
::dart::collision::CollisionOption | mCollisionOptions |
std::vector< std::pair< std::shared_ptr< CollisionGroup >, std::shared_ptr< CollisionGroup > > > | mGroupsToPairwiseCheck |
std::vector< std::shared_ptr< CollisionGroup > > | mGroupsToSelfCheck |
A testable that uses a collision detector to check whether a metakeleton state (configuration) results in collision between and within specified collision groups.
|
private |
aikido::constraint::dart::CollisionFree::CollisionFree | ( | statespace::dart::ConstMetaSkeletonStateSpacePtr | _metaSkeletonStateSpace, |
::dart::dynamics::MetaSkeletonPtr | _metaskeleton, | ||
std::shared_ptr<::dart::collision::CollisionDetector > | _collisionDetector, | ||
::dart::collision::CollisionOption | _collisionOptions = ::dart::collision::CollisionOption(false, 1, std::make_shared<::dart::collision::BodyNodeCollisionFilter >()) |
||
) |
Constructs an empty constraint that uses _collisionDetector
to test for collision.
You should call addPairWiseCheck
and addSelfCheck
to register collision checks before calling isSatisfied
.
_metaSkeletonStateSpace | state space on which the constraint operates |
_metaskeleton | MetaSkeleton to test with |
_collisionDetector | collision detector used to test for collision |
_collisionOptions | options passed to _collisionDetector |
void aikido::constraint::dart::CollisionFree::addPairwiseCheck | ( | std::shared_ptr<::dart::collision::CollisionGroup > | _group1, |
std::shared_ptr<::dart::collision::CollisionGroup > | _group2 | ||
) |
Checks collision between group1 and group2.
_group1 | First collision group. |
_group2 | Second collision group. |
void aikido::constraint::dart::CollisionFree::addSelfCheck | ( | std::shared_ptr<::dart::collision::CollisionGroup > | _group | ) |
Checks collision within group.
_group | Collision group. |
|
overridevirtual |
Return an instance of a TestableOutcome derivative class that corresponds to this constraint class.
Ensures that correct outcome object is passed to isSatisfied (and casts, etc do not explode).
Implements aikido::constraint::Testable.
|
overridevirtual |
Returns StateSpace in which this constraint operates.
Implements aikido::constraint::Testable.
|
overridevirtual |
Returns true if state satisfies this constraint.
[in] | _state | given state to test. |
[in] | outcome | pointer to TestableOutcome derivative instance that method will populate with useful information. Each derivative class of Testable may expect outcome to be a different derivative class of TestableOutcome (this casting and population is done under the hood). If this argument is missing, it is ignored. |
Implements aikido::constraint::Testable.
void aikido::constraint::dart::CollisionFree::removePairwiseCheck | ( | std::shared_ptr<::dart::collision::CollisionGroup > | _group1, |
std::shared_ptr<::dart::collision::CollisionGroup > | _group2 | ||
) |
Remove collision check between group1 and group2.
_group1 | First collision group. |
_group2 | Second collision group. |
void aikido::constraint::dart::CollisionFree::removeSelfCheck | ( | std::shared_ptr<::dart::collision::CollisionGroup > | _group | ) |
Remove self-collision check within group.
_group | Collision group. |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |