Aikido
CollisionFree.hpp
Go to the documentation of this file.
1 #ifndef AIKIDO_CONSTRAINT_DART_COLLISIONFREE_HPP_
2 #define AIKIDO_CONSTRAINT_DART_COLLISIONFREE_HPP_
3 
4 #include <memory>
5 #include <tuple>
6 #include <vector>
7 
8 #include <dart/collision/CollisionDetector.hpp>
9 #include <dart/collision/CollisionFilter.hpp>
10 #include <dart/collision/CollisionGroup.hpp>
11 #include <dart/collision/CollisionOption.hpp>
12 
17 
18 namespace aikido {
19 namespace constraint {
20 namespace dart {
21 
23 
24 class CollisionFree : public Testable
28 {
29 public:
41  ::dart::dynamics::MetaSkeletonPtr _metaskeleton,
42  std::shared_ptr<::dart::collision::CollisionDetector> _collisionDetector,
43  ::dart::collision::CollisionOption _collisionOptions
44  = ::dart::collision::CollisionOption(
45  false,
46  1,
47  std::make_shared<::dart::collision::BodyNodeCollisionFilter>()));
48 
49  // Documentation inherited.
51 
56  bool isSatisfied(
58  TestableOutcome* outcome = nullptr) const override;
59 
62  std::unique_ptr<TestableOutcome> createOutcome() const override;
63 
67  void addPairwiseCheck(
68  std::shared_ptr<::dart::collision::CollisionGroup> _group1,
69  std::shared_ptr<::dart::collision::CollisionGroup> _group2);
70 
75  std::shared_ptr<::dart::collision::CollisionGroup> _group1,
76  std::shared_ptr<::dart::collision::CollisionGroup> _group2);
77 
80  void addSelfCheck(std::shared_ptr<::dart::collision::CollisionGroup> _group);
81 
84  void removeSelfCheck(
85  std::shared_ptr<::dart::collision::CollisionGroup> _group);
86 
87 private:
88  using CollisionGroup = ::dart::collision::CollisionGroup;
89 
92  ::dart::dynamics::MetaSkeletonPtr mMetaSkeleton;
93  std::shared_ptr<::dart::collision::CollisionDetector> mCollisionDetector;
94  ::dart::collision::CollisionOption mCollisionOptions;
95  std::vector<std::pair<
96  std::shared_ptr<CollisionGroup>,
97  std::shared_ptr<CollisionGroup>>>
99  std::vector<std::shared_ptr<CollisionGroup>> mGroupsToSelfCheck;
100 };
101 
102 } // namespace dart
103 } // namespace constraint
104 } // namespace aikido
105 
106 #endif // AIKIDO_CONSTRAINT_DART_COLLISIONFREE_HPP_
aikido::statespace::dart::ConstMetaSkeletonStateSpacePtr
std::shared_ptr< const MetaSkeletonStateSpace > ConstMetaSkeletonStateSpacePtr
Definition: MetaSkeletonStateSpace.hpp:17
CollisionFreeOutcome.hpp
aikido::constraint::dart::CollisionFree::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.
aikido::constraint::dart::CollisionFree::mCollisionDetector
std::shared_ptr<::dart::collision::CollisionDetector > mCollisionDetector
Definition: CollisionFree.hpp:93
aikido::constraint::dart::CollisionFree::mCollisionOptions
::dart::collision::CollisionOption mCollisionOptions
Definition: CollisionFree.hpp:94
aikido
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
aikido::constraint::dart::CollisionFree::createOutcome
std::unique_ptr< TestableOutcome > createOutcome() const override
Return an instance of a TestableOutcome derivative class that corresponds to this constraint class.
aikido::constraint::dart::CollisionFree::mMetaSkeleton
::dart::dynamics::MetaSkeletonPtr mMetaSkeleton
Definition: CollisionFree.hpp:92
aikido::constraint::Testable
Constraint which can be tested.
Definition: Testable.hpp:17
aikido::statespace::ConstStateSpacePtr
std::shared_ptr< const StateSpace > ConstStateSpacePtr
Definition: StateSpace.hpp:15
aikido::constraint::dart::CollisionFree::removeSelfCheck
void removeSelfCheck(std::shared_ptr<::dart::collision::CollisionGroup > _group)
Remove self-collision check within group.
aikido::constraint::dart::CollisionFree::isSatisfied
bool isSatisfied(const aikido::statespace::StateSpace::State *_state, TestableOutcome *outcome=nullptr) const override
Returns true if state satisfies this constraint.
aikido::constraint::TestableOutcome
Base class for constraint outcomes.
Definition: TestableOutcome.hpp:13
pointers.hpp
aikido::constraint::dart::CollisionFree::getStateSpace
statespace::ConstStateSpacePtr getStateSpace() const override
Returns StateSpace in which this constraint operates.
aikido::constraint::dart::CollisionFree::mGroupsToSelfCheck
std::vector< std::shared_ptr< CollisionGroup > > mGroupsToSelfCheck
Definition: CollisionFree.hpp:99
aikido::constraint::dart::CollisionFree::mMetaSkeletonStateSpace
aikido::statespace::dart::ConstMetaSkeletonStateSpacePtr mMetaSkeletonStateSpace
Definition: CollisionFree.hpp:91
aikido::constraint::dart::CollisionFree::mGroupsToPairwiseCheck
std::vector< std::pair< std::shared_ptr< CollisionGroup >, std::shared_ptr< CollisionGroup > > > mGroupsToPairwiseCheck
Definition: CollisionFree.hpp:98
Testable.hpp
MetaSkeletonStateSpace.hpp
aikido::constraint::dart::CollisionFree::CollisionGroup
::dart::collision::CollisionGroup CollisionGroup
Definition: CollisionFree.hpp:88
aikido::constraint::dart::CollisionFree::removePairwiseCheck
void removePairwiseCheck(std::shared_ptr<::dart::collision::CollisionGroup > _group1, std::shared_ptr<::dart::collision::CollisionGroup > _group2)
Remove collision check between group1 and group2.
aikido::constraint::dart::CollisionFree::addSelfCheck
void addSelfCheck(std::shared_ptr<::dart::collision::CollisionGroup > _group)
Checks collision within group.
aikido::statespace::StateSpace::State
Definition: StateSpace.hpp:167
dart
Definition: FrameMarker.hpp:11
AIKIDO_DECLARE_POINTERS
#define AIKIDO_DECLARE_POINTERS(X)
Definition: pointers.hpp:21
aikido::constraint::dart::CollisionFree::addPairwiseCheck
void addPairwiseCheck(std::shared_ptr<::dart::collision::CollisionGroup > _group1, std::shared_ptr<::dart::collision::CollisionGroup > _group2)
Checks collision between group1 and group2.
aikido::constraint::dart::CollisionFree
A testable that uses a collision detector to check whether a metakeleton state (configuration) result...
Definition: CollisionFree.hpp:27