1 #ifndef AIKIDO_STATESPACE_COMPOUNDSTATESPACE_HPP_ 2 #define AIKIDO_STATESPACE_COMPOUNDSTATESPACE_HPP_ 5 #include "aikido/statespace/ScopedState.hpp" 6 #include "aikido/statespace/StateSpace.hpp" 11 AIKIDO_DECLARE_POINTERS(CartesianProduct)
35 explicit CartesianProduct(std::vector<ConstStateSpacePtr> _subspaces);
48 std::size_t getNumSubspaces()
const;
55 template <
class Space = StateSpace>
56 std::shared_ptr<const Space> getSubspace(std::size_t _index)
const;
64 template <
class Space = StateSpace>
65 typename Space::State* getSubState(
State* _state, std::size_t _index)
const;
74 template <
class Space = StateSpace>
75 const typename Space::State* getSubState(
76 const State* _state, std::size_t _index)
const;
85 template <
class Space = StateSpace>
86 typename Space::StateHandle getSubStateHandle(
87 State* _state, std::size_t _index)
const;
97 template <
class Space = StateSpace>
98 typename Space::StateHandleConst getSubStateHandle(
99 const State* _state, std::size_t _index)
const;
102 std::size_t getStateSizeInBytes()
const override;
124 std::size_t getDimension()
const override;
156 std::vector<ConstStateSpacePtr> mSubspaces;
157 std::vector<std::size_t> mOffsets;
158 std::size_t mSizeInBytes;
175 #include "detail/CartesianProduct-impl.hpp" 177 #endif // AIKIDO_STATESPACE_COMPOUNDSTATESPACE_HPP_ CRTP RAII wrapper for a StateHandle.
Definition: ScopedState.hpp:15
Represents the Cartesian product of other StateSpaces.
Definition: CartesianProduct.hpp:18
Definition: gtest-tuple.h:113
virtual void compose(const State *_state1, const State *_state2, State *_out) const =0
Lie group operation for this StateSpace.
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
A tuple of states where the i-th state is from the i-th subspace.
Definition: CartesianProduct.hpp:162
StateHandle for a CartesianProduct.
Definition: CartesianProduct.hpp:15
Represents a Lie group and its associated Lie algebra, i.e.
Definition: StateSpace.hpp:33