3 #include <dart/dart.hpp>
13 extern template class RConstantSampler<0>;
15 extern template class RConstantSampler<1>;
17 extern template class RConstantSampler<2>;
19 extern template class RConstantSampler<3>;
21 extern template class RConstantSampler<6>;
23 extern template class RConstantSampler<Eigen::Dynamic>;
29 class RnConstantSamplerSampleGenerator :
public constraint::SampleGenerator
32 using VectorNd = Eigen::Matrix<double, N, 1>;
34 RnConstantSamplerSampleGenerator(
35 std::shared_ptr<
const statespace::R<N>> _space,
const VectorNd& _value);
39 bool sample(statespace::StateSpace::State* _state)
override;
41 int getNumSamples()
const override;
43 bool canSample()
const override;
46 std::shared_ptr<const statespace::R<N>>
mSpace;
50 EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(VectorNd::NeedsToAlign)
55 RnConstantSamplerSampleGenerator<N>::RnConstantSamplerSampleGenerator(
56 std::shared_ptr<
const statespace::R<N>> _space,
const VectorNd& _value)
65 RnConstantSamplerSampleGenerator<N>::getStateSpace()
const
72 bool RnConstantSamplerSampleGenerator<N>::sample(
73 statespace::StateSpace::State* _state)
76 static_cast<typename statespace::R<N>::State*
>(_state),
mValue);
83 int RnConstantSamplerSampleGenerator<N>::getNumSamples()
const
90 bool RnConstantSamplerSampleGenerator<N>::canSample()
const
104 throw std::invalid_argument(
"StateSpace is null.");
106 if (
mSpace->getDimension() !=
static_cast<std::size_t
>(
mValue.size()))
108 std::stringstream msg;
109 msg <<
"Value has incorrect dimension: expected " <<
mSpace->getDimension()
110 <<
", got " <<
mValue.size() <<
".";
111 throw std::invalid_argument(msg.str());
124 std::unique_ptr<constraint::SampleGenerator>
127 return ::aikido::common::make_unique<RnConstantSamplerSampleGenerator<N>>(