9 #include "crocoddyl/core/utils/exception.hpp" 13 template <
typename Scalar>
14 DifferentialActionModelAbstractTpl<Scalar>::DifferentialActionModelAbstractTpl(boost::shared_ptr<StateAbstract> state,
15 const std::size_t& nu,
16 const std::size_t& nr)
20 unone_(VectorXs::Zero(nu)),
21 u_lb_(VectorXs::Constant(nu, -std::numeric_limits<Scalar>::infinity())),
22 u_ub_(VectorXs::Constant(nu, std::numeric_limits<Scalar>::infinity())),
23 has_control_limits_(false) {}
25 template <
typename Scalar>
26 DifferentialActionModelAbstractTpl<Scalar>::~DifferentialActionModelAbstractTpl() {}
28 template <
typename Scalar>
29 void DifferentialActionModelAbstractTpl<Scalar>::calc(
const boost::shared_ptr<DifferentialActionDataAbstract>& data,
30 const Eigen::Ref<const VectorXs>& x) {
31 calc(data, x, unone_);
34 template <
typename Scalar>
35 void DifferentialActionModelAbstractTpl<Scalar>::calcDiff(
36 const boost::shared_ptr<DifferentialActionDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x) {
37 calcDiff(data, x, unone_);
40 template <
typename Scalar>
41 boost::shared_ptr<DifferentialActionDataAbstractTpl<Scalar> >
42 DifferentialActionModelAbstractTpl<Scalar>::createData() {
43 return boost::make_shared<DifferentialActionDataAbstract>(
this);
46 template <
typename Scalar>
47 const std::size_t& DifferentialActionModelAbstractTpl<Scalar>::get_nu()
const {
51 template <
typename Scalar>
52 const std::size_t& DifferentialActionModelAbstractTpl<Scalar>::get_nr()
const {
56 template <
typename Scalar>
57 const boost::shared_ptr<StateAbstractTpl<Scalar> >& DifferentialActionModelAbstractTpl<Scalar>::get_state()
const {
61 template <
typename Scalar>
62 const typename MathBaseTpl<Scalar>::VectorXs& DifferentialActionModelAbstractTpl<Scalar>::get_u_lb()
const {
66 template <
typename Scalar>
67 const typename MathBaseTpl<Scalar>::VectorXs& DifferentialActionModelAbstractTpl<Scalar>::get_u_ub()
const {
71 template <
typename Scalar>
72 bool const& DifferentialActionModelAbstractTpl<Scalar>::get_has_control_limits()
const {
73 return has_control_limits_;
76 template <
typename Scalar>
77 void DifferentialActionModelAbstractTpl<Scalar>::set_u_lb(
const VectorXs& u_lb) {
78 if (static_cast<std::size_t>(u_lb.size()) != nu_) {
79 throw_pretty(
"Invalid argument: " 80 <<
"lower bound has wrong dimension (it should be " + std::to_string(nu_) +
")");
83 update_has_control_limits();
86 template <
typename Scalar>
87 void DifferentialActionModelAbstractTpl<Scalar>::set_u_ub(
const VectorXs& u_ub) {
88 if (static_cast<std::size_t>(u_ub.size()) != nu_) {
89 throw_pretty(
"Invalid argument: " 90 <<
"upper bound has wrong dimension (it should be " + std::to_string(nu_) +
")");
93 update_has_control_limits();
96 template <
typename Scalar>
97 void DifferentialActionModelAbstractTpl<Scalar>::update_has_control_limits() {
98 has_control_limits_ = isfinite(u_lb_.array()).any() && isfinite(u_ub_.array()).any();
Definition: action-base.hxx:11