Crocoddyl
ActuationModelFloatingBaseThrustersTpl< _Scalar > Class Template Reference

Actuation models for floating base systems actuated with thrusters. More...

#include <floating-base-thrusters.hpp>

Inheritance diagram for ActuationModelFloatingBaseThrustersTpl< _Scalar >:
ActuationModelAbstractTpl< _Scalar > ActuationModelBase

Public Types

typedef ActuationModelAbstractTpl< Scalar > Base
 
typedef ActuationDataAbstractTpl< Scalar > Data
 
typedef MathBaseTpl< Scalar > MathBase
 
typedef MathBase::MatrixXs MatrixXs
 
typedef StateMultibodyTpl< Scalar > StateMultibody
 
typedef ThrusterTpl< Scalar > Thruster
 
typedef MathBase::Vector3s Vector3s
 
typedef MathBase::VectorXs VectorXs
 
- Public Types inherited from ActuationModelAbstractTpl< _Scalar >
typedef ActuationDataAbstractTpl< Scalar > ActuationDataAbstract
 
typedef MathBaseTpl< Scalar > MathBase
 
typedef MathBase::MatrixXs MatrixXs
 
typedef StateAbstractTpl< Scalar > StateAbstract
 
typedef MathBase::VectorXs VectorXs
 

Public Member Functions

 ActuationModelFloatingBaseThrustersTpl (std::shared_ptr< StateMultibody > state, const std::vector< Thruster > &thrusters)
 Initialize the floating base actuation model equipped with thrusters. More...
 
virtual void calc (const std::shared_ptr< Data > &data, const Eigen::Ref< const VectorXs > &, const Eigen::Ref< const VectorXs > &u) override
 Compute the actuation signal and actuation set from its thrust and joint torque inputs \(\mathbf{u}\in\mathbb{R}^{nu}\). More...
 
virtual void calcDiff (const std::shared_ptr< Data > &data, const Eigen::Ref< const VectorXs > &, const Eigen::Ref< const VectorXs > &) override
 Compute the Jacobians of the floating base thruster actuation function. More...
 
template<typename NewScalar >
ActuationModelFloatingBaseThrustersTpl< NewScalar > cast () const
 
virtual void commands (const std::shared_ptr< Data > &data, const Eigen::Ref< const VectorXs > &, const Eigen::Ref< const VectorXs > &tau) override
 Compute the joint torque input from the generalized torques. More...
 
virtual std::shared_ptr< DatacreateData () override
 Create the floating base thruster actuation data. More...
 
EIGEN_MAKE_ALIGNED_OPERATOR_NEW CROCODDYL_DERIVED_CAST (ActuationModelBase, ActuationModelFloatingBaseThrustersTpl) typedef _Scalar Scalar
 
std::size_t get_nthrusters () const
 Return the number of thrusters.
 
const MatrixXs & get_S () const
 
const std::vector< Thruster > & get_thrusters () const
 Return the vector of thrusters.
 
const MatrixXs & get_Wthrust () const
 
void print (std::ostream &os) const override
 Print relevant information of the residual model. More...
 
void set_thrusters (const std::vector< Thruster > &thrusters)
 Modify the vector of thrusters. More...
 
virtual void torqueTransform (const std::shared_ptr< Data > &data, const Eigen::Ref< const VectorXs > &, const Eigen::Ref< const VectorXs > &) override
 Compute the torque transform from generalized torques to joint torque inputs. More...
 
- Public Member Functions inherited from ActuationModelAbstractTpl< _Scalar >
 ActuationModelAbstractTpl (std::shared_ptr< StateAbstract > state, const std::size_t nu)
 Initialize the actuation model. More...
 
void calc (const std::shared_ptr< ActuationDataAbstract > &data, const Eigen::Ref< const VectorXs > &x)
 Ignore the computation of the actuation signal. More...
 
void calcDiff (const std::shared_ptr< ActuationDataAbstract > &data, const Eigen::Ref< const VectorXs > &x)
 Ignore the computation of the Jacobians of the actuation function. More...
 
std::size_t get_nu () const
 Return the dimension of the joint-torque input.
 
const std::shared_ptr< StateAbstract > & get_state () const
 Return the state.
 

Protected Attributes

MatrixXs Mtau_
 
std::size_t n_thrusters_
 Number of thrusters.
 
std::size_t nu_
 Dimension of joint torque inputs.
 
MatrixXs S_
 Selection matrix for under-actuation part.
 
std::shared_ptr< StateAbstractstate_
 Model of the state.
 
std::vector< Thrusterthrusters_
 Vector of thrusters.
 
bool update_data_
 
MatrixXs W_thrust_
 Matrix from thrusters thrusts to body wrench.
 
- Protected Attributes inherited from ActuationModelAbstractTpl< _Scalar >
std::size_t nu_
 Dimension of joint torque inputs.
 
std::shared_ptr< StateAbstractstate_
 Model of the state.
 

Additional Inherited Members

- Public Attributes inherited from ActuationModelAbstractTpl< _Scalar >
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar
 

Detailed Description

template<typename _Scalar>
class crocoddyl::ActuationModelFloatingBaseThrustersTpl< _Scalar >

Actuation models for floating base systems actuated with thrusters.

This actuation model models floating base robots equipped with thrusters, e.g., multicopters or marine robots equipped with manipulators. It control inputs are the thrusters' thrust (i.e., forces) and joint torques.

Both actuation and Jacobians are computed analytically by calc and calcDiff, respectively.

We assume the robot velocity to zero for easily related square thruster velocities with thrust and torque generated. This approach is similarly implemented in M. Geisert and N. Mansard, "Trajectory generation for quadrotor based systems using numerical optimal control", (ICRA). See Section III.C.

See also
ActuationModelAbstractTpl, calc(), calcDiff(), createData()

Definition at line 136 of file floating-base-thrusters.hpp.

Constructor & Destructor Documentation

◆ ActuationModelFloatingBaseThrustersTpl()

ActuationModelFloatingBaseThrustersTpl ( std::shared_ptr< StateMultibody state,
const std::vector< Thruster > &  thrusters 
)
inline

Initialize the floating base actuation model equipped with thrusters.

Parameters
[in]stateState of the dynamical system
[in]thrustersVector of thrusters

Definition at line 160 of file floating-base-thrusters.hpp.

Member Function Documentation

◆ calc()

virtual void calc ( const std::shared_ptr< Data > &  data,
const Eigen::Ref< const VectorXs > &  ,
const Eigen::Ref< const VectorXs > &  u 
)
inlineoverridevirtual

Compute the actuation signal and actuation set from its thrust and joint torque inputs \(\mathbf{u}\in\mathbb{R}^{nu}\).

Parameters
[in]dataFloating base thrusters actuation data
[in]xState point \(\mathbf{x}\in\mathbb{R}^{ndx}\)
[in]uJoint-torque input \(\mathbf{u}\in\mathbb{R}^{nu}\)

Implements ActuationModelAbstractTpl< _Scalar >.

Definition at line 200 of file floating-base-thrusters.hpp.

◆ calcDiff()

virtual void calcDiff ( const std::shared_ptr< Data > &  data,
const Eigen::Ref< const VectorXs > &  ,
const Eigen::Ref< const VectorXs > &   
)
inlineoverridevirtual

Compute the Jacobians of the floating base thruster actuation function.

Parameters
[in]dataFloating base thrusters actuation data
[in]xState point \(\mathbf{x}\in\mathbb{R}^{ndx}\)
[in]uJoint-torque input \(\mathbf{u}\in\mathbb{R}^{nu}\)

Implements ActuationModelAbstractTpl< _Scalar >.

Definition at line 223 of file floating-base-thrusters.hpp.

◆ commands()

virtual void commands ( const std::shared_ptr< Data > &  data,
const Eigen::Ref< const VectorXs > &  x,
const Eigen::Ref< const VectorXs > &  tau 
)
inlineoverridevirtual

Compute the joint torque input from the generalized torques.

It stores the results in ActuationDataAbstractTpl::u.

Parameters
[in]dataActuation data
[in]xState point \(\mathbf{x}\in\mathbb{R}^{ndx}\)
[in]tauGeneralized torques \(\mathbf{u}\in\mathbb{R}^{nv}\)

Implements ActuationModelAbstractTpl< _Scalar >.

Definition at line 236 of file floating-base-thrusters.hpp.

◆ torqueTransform()

virtual void torqueTransform ( const std::shared_ptr< Data > &  data,
const Eigen::Ref< const VectorXs > &  x,
const Eigen::Ref< const VectorXs > &  u 
)
inlineoverridevirtual

Compute the torque transform from generalized torques to joint torque inputs.

It stores the results in ActuationDataAbstractTpl::Mtau.

Parameters
[in]dataActuation data
[in]xState point \(\mathbf{x}\in\mathbb{R}^{ndx}\)
[in]tauJoint-torque inputs \(\mathbf{u}\in\mathbb{R}^{nu}\)

Reimplemented from ActuationModelAbstractTpl< _Scalar >.

Definition at line 243 of file floating-base-thrusters.hpp.

◆ createData()

virtual std::shared_ptr<Data> createData ( )
inlineoverridevirtual

Create the floating base thruster actuation data.

Returns
the actuation data

Reimplemented from ActuationModelAbstractTpl< _Scalar >.

Definition at line 260 of file floating-base-thrusters.hpp.

◆ set_thrusters()

void set_thrusters ( const std::vector< Thruster > &  thrusters)
inline

Modify the vector of thrusters.

Since we don't want to allocate data, we request to pass the same number of thrusters.

Parameters
[in]thrustersVector of thrusters

Definition at line 297 of file floating-base-thrusters.hpp.

◆ print()

void print ( std::ostream &  os) const
inlineoverridevirtual

Print relevant information of the residual model.

Parameters
[out]osOutput stream object

Reimplemented from ActuationModelAbstractTpl< _Scalar >.

Definition at line 331 of file floating-base-thrusters.hpp.

Member Data Documentation

◆ Mtau_

MatrixXs Mtau_
protected

Constaint torque transform from generalized torques to joint torque inputs

Definition at line 344 of file floating-base-thrusters.hpp.


The documentation for this class was generated from the following file: