9#ifndef CROCODDYL_MULTIBODY_TASKS_JOINT_POSITION_HPP_ 10#define CROCODDYL_MULTIBODY_TASKS_JOINT_POSITION_HPP_ 12#include "crocoddyl/core/data/joint.hpp" 13#include "crocoddyl/core/task-base.hpp" 14#include "crocoddyl/multibody/data/multibody.hpp" 15#include "crocoddyl/multibody/fwd.hpp" 16#include "crocoddyl/multibody/states/multibody.hpp" 41template <
typename _Scalar>
44 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
47 typedef _Scalar Scalar;
54 typedef typename MathBase::VectorXs VectorXs;
65 const VectorXs& xref,
const VectorXs& aref,
66 const std::size_t nu);
78 const VectorXs& xref,
const VectorXs& aref);
88 const VectorXs& xref,
const std::size_t nu);
99 const VectorXs& xref);
102 virtual void calc(
const std::shared_ptr<TaskDataAbstract>& data,
103 const Eigen::Ref<const VectorXs>& x,
104 const Eigen::Ref<const VectorXs>& u)
override;
106 virtual void calcDiff(
const std::shared_ptr<TaskDataAbstract>& data,
107 const Eigen::Ref<const VectorXs>& x,
108 const Eigen::Ref<const VectorXs>& u)
override;
111 DataCollectorAbstract*
const data)
override;
113 template <
typename NewScalar>
116 const VectorXs& get_reference()
const;
117 const VectorXs& get_acceleration_reference()
const;
118 void set_reference(
const VectorXs& xref);
119 void set_acceleration_reference(
const VectorXs& aref);
121 virtual void print(std::ostream& os)
const override;
136template <
typename _Scalar>
138 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
140 typedef _Scalar Scalar;
144 typedef typename MathBase::VectorXs VectorXs;
145 typedef typename MathBase::MatrixXs MatrixXs;
154 template <
template <
typename Scalar>
class Model>
156 DataCollectorAbstract*
const data)
159 dx(model->get_state()->get_ndx()),
160 Jdiff(model->get_state()->get_ndx(), model->get_state()->get_ndx()) {
178 pinocchio::DataTpl<Scalar>*
180 std::shared_ptr<JointDataAbstractTpl<Scalar>>
191#include "crocoddyl/multibody/tasks/joint-position.hxx" State multibody representation.
TaskModelAbstractTpl(std::shared_ptr< StateAbstract > state, const std::size_t nr, const std::size_t nu, const bool q_dependent=true, const bool v_dependent=true, const bool u_dependent=true, const bool has_acceleration=true)
Initialize the task model.
Joint-position task model.
virtual void calcDiff(const std::shared_ptr< TaskDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override
Compute task Jacobians using values stored by calc().
TaskModelJointPositionTpl(std::shared_ptr< StateMultibody > state, const VectorXs &xref, const VectorXs &aref)
Initialize with state and acceleration references.
TaskModelJointPositionTpl(std::shared_ptr< StateMultibody > state, const VectorXs &xref, const std::size_t nu)
Initialize with a state reference and zero acceleration reference.
virtual std::shared_ptr< TaskDataAbstract > createData(DataCollectorAbstract *const data) override
Allocate task data and bind it to the action model's shared data.
virtual void calc(const std::shared_ptr< TaskDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override
Compute the task quantity, rate, and acceleration.
TaskModelJointPositionTpl(std::shared_ptr< StateMultibody > state, const VectorXs &xref, const VectorXs &aref, const std::size_t nu)
Initialize with state and acceleration references.
TaskModelJointPositionTpl(std::shared_ptr< StateMultibody > state, const VectorXs &xref)
Initialize with a state reference and zero acceleration reference.
virtual void print(std::ostream &os) const override
Print relevant information about the task model.
Preallocated values and derivatives produced by a task model.
TaskDataAbstractTpl(TaskModelAbstract *const model, DataCollectorAbstract *const data)
Allocate and initialize the common task data.
DataCollectorAbstract * shared
Cached values and derivatives for the joint-position task.
TaskDataJointPositionTpl(Model< Scalar > *const model, DataCollectorAbstract *const data)
Bind the task data to the available generalized-acceleration data.
std::shared_ptr< JointDataAbstractTpl< Scalar > > joint
DataCollectorAbstract * shared
pinocchio::DataTpl< Scalar > * pinocchio