Aikido
RnBoxConstraint.hpp
Go to the documentation of this file.
1 #ifndef AIKIDO_CONSTRAINT_UNIFORM_RNBOXCONSTRAINT_HPP_
2 #define AIKIDO_CONSTRAINT_UNIFORM_RNBOXCONSTRAINT_HPP_
3 
9 
10 namespace aikido {
11 namespace constraint {
12 namespace uniform {
13 
16 template <int N>
20  , public constraint::Sampleable
21  , public constraint::Testable
22 {
23 public:
26 
27  using VectorNd = Eigen::Matrix<double, N, 1>;
28 
37  std::shared_ptr<const statespace::R<N>> _space,
38  std::unique_ptr<common::RNG> _rng,
39  const VectorNd& _lowerLimits,
40  const VectorNd& _upperLimits);
41 
42  // Documentation inherited.
44 
45  // Documentation inherited.
46  std::size_t getConstraintDimension() const override;
47 
48  // Documentation inherited.
49  std::vector<constraint::ConstraintType> getConstraintTypes() const override;
50 
51  // Documentation inherited.
52  bool isSatisfied(
53  const statespace::StateSpace::State* state,
54  TestableOutcome* outcome = nullptr) const override;
55 
58  std::unique_ptr<TestableOutcome> createOutcome() const override;
59 
60  // Documentation inherited.
61  bool project(
63  statespace::StateSpace::State* _out) const override;
64 
65  // Documentation inherited.
66  void getValue(const statespace::StateSpace::State* _s, Eigen::VectorXd& _out)
67  const override;
68 
69  // Documentation inherited.
70  void getJacobian(
72  Eigen::MatrixXd& _out) const override;
73 
74  // Documentation inherited.
75  std::unique_ptr<constraint::SampleGenerator> createSampleGenerator()
76  const override;
77 
79  auto getLowerLimits() const -> const VectorNd&;
80 
82  auto getUpperLimits() const -> const VectorNd&;
83 
84 private:
85  std::shared_ptr<const statespace::R<N>> mSpace;
86  std::unique_ptr<common::RNG> mRng;
89 
90 public:
91  EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(VectorNd::NeedsToAlign)
92 };
93 
99 using RnBoxConstraint = RBoxConstraint<Eigen::Dynamic>;
100 
101 } // namespace uniform
102 } // namespace constraint
103 } // namespace aikido
104 
105 #include "aikido/constraint/uniform/detail/RnBoxConstraint-impl.hpp"
106 
107 #endif // AIKIDO_CONSTRAINT_UNIFORM_RNBOXCONSTRAINT_HPP_
aikido::statespace::R
Represents a N-dimensional real vector space with vector addition as the group operation.
Definition: Rn.hpp:18
aikido::constraint::Differentiable
A differentiable constraint.
Definition: Differentiable.hpp:27
aikido::constraint::uniform::RBoxConstraint::mUpperLimits
VectorNd mUpperLimits
Definition: RnBoxConstraint.hpp:88
aikido::constraint::uniform::RBoxConstraint::getJacobian
void getJacobian(const statespace::StateSpace::State *_s, Eigen::MatrixXd &_out) const override
Get the jacobian of constraints evaluated at _s, expressed in the frame each state space is expressed...
Definition: RnBoxConstraint-impl.hpp:255
aikido
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
Differentiable.hpp
aikido::constraint::uniform::RBoxConstraint::getValue
void getValue(const statespace::StateSpace::State *_s, Eigen::VectorXd &_out) const override
Get the value of constraints at _s.
Definition: RnBoxConstraint-impl.hpp:233
aikido::constraint::Testable
Constraint which can be tested.
Definition: Testable.hpp:17
aikido::constraint::uniform::RBoxConstraint::mSpace
std::shared_ptr< const statespace::R< N > > mSpace
Definition: RnBoxConstraint.hpp:85
aikido::statespace::ConstStateSpacePtr
std::shared_ptr< const StateSpace > ConstStateSpacePtr
Definition: StateSpace.hpp:15
aikido::constraint::Projectable::project
virtual bool project(const statespace::StateSpace::State *_s, statespace::StateSpace::State *_out) const =0
Projection _s to _out.
aikido::constraint::uniform::RBoxConstraint::getStateSpace
statespace::ConstStateSpacePtr getStateSpace() const override
Gets the StateSpace that this constraint operates on.
Definition: RnBoxConstraint-impl.hpp:155
aikido::constraint::uniform::RBoxConstraint::isSatisfied
bool isSatisfied(const statespace::StateSpace::State *state, TestableOutcome *outcome=nullptr) const override
Returns true if state satisfies this constraint.
Definition: RnBoxConstraint-impl.hpp:178
aikido::constraint::uniform::RBoxConstraint::mLowerLimits
VectorNd mLowerLimits
Definition: RnBoxConstraint.hpp:87
aikido::constraint::Sampleable
Constraint that may be sampled from.
Definition: Sampleable.hpp:27
aikido::constraint::uniform::RBoxConstraint::getLowerLimits
auto getLowerLimits() const -> const VectorNd &
Returns lower limits of this constraint.
Definition: RnBoxConstraint-impl.hpp:301
aikido::constraint::uniform::RBoxConstraint::VectorNd
Eigen::Matrix< double, N, 1 > VectorNd
Definition: RnBoxConstraint.hpp:27
aikido::constraint::uniform::RBoxConstraint::createSampleGenerator
std::unique_ptr< constraint::SampleGenerator > createSampleGenerator() const override
Creates a SampleGenerator for sampling from this constraint.
Definition: RnBoxConstraint-impl.hpp:278
aikido::constraint::uniform::RBoxConstraint::getUpperLimits
auto getUpperLimits() const -> const VectorNd &
Returns upper limits of this constraint.
Definition: RnBoxConstraint-impl.hpp:308
aikido::constraint::Projectable
A projectable constraint.
Definition: Projectable.hpp:12
aikido::constraint::uniform::RBoxConstraint::getConstraintDimension
std::size_t getConstraintDimension() const override
Size of constraints.
Definition: RnBoxConstraint-impl.hpp:162
Sampleable.hpp
aikido::constraint::uniform::RBoxConstraint::mRng
std::unique_ptr< common::RNG > mRng
Definition: RnBoxConstraint.hpp:86
aikido::constraint::uniform::RBoxConstraint::getConstraintTypes
std::vector< constraint::ConstraintType > getConstraintTypes() const override
Returns a vector of constraints' types, i-th element correspoinding to the type of i-th constraint.
Definition: RnBoxConstraint-impl.hpp:170
Projectable.hpp
aikido::constraint::TestableOutcome
Base class for constraint outcomes.
Definition: TestableOutcome.hpp:13
aikido::constraint::uniform::RBoxConstraint::project
bool project(const statespace::StateSpace::State *_s, statespace::StateSpace::State *_out) const override
Projection _s to _out.
Definition: RnBoxConstraint-impl.hpp:211
Testable.hpp
aikido::constraint::Differentiable::getValueAndJacobian
virtual void getValueAndJacobian(const statespace::StateSpace::State *_s, Eigen::VectorXd &_val, Eigen::MatrixXd &_jac) const
Get both Value and Jacobian.
Rn.hpp
aikido::statespace::StateSpace::State
Definition: StateSpace.hpp:167
aikido::constraint::uniform::RBoxConstraint::createOutcome
std::unique_ptr< TestableOutcome > createOutcome() const override
Return an instance of DefaultTestableOutcome, since this class doesn't have a more specialized Testab...
Definition: RnBoxConstraint-impl.hpp:204
aikido::constraint::uniform::RBoxConstraint
A BoxConstraint on RealVectorStates.
Definition: RnBoxConstraint.hpp:17
aikido::constraint::uniform::RBoxConstraint::RBoxConstraint
RBoxConstraint(std::shared_ptr< const statespace::R< N >> _space, std::unique_ptr< common::RNG > _rng, const VectorNd &_lowerLimits, const VectorNd &_upperLimits)
Constructor.
Definition: RnBoxConstraint-impl.hpp:109