mc_rtc  2.14.0
mc_tvm::DynamicFunction Struct Reference

#include <mc_tvm/DynamicFunction.h>

Inheritance diagram for mc_tvm::DynamicFunction:
Collaboration diagram for mc_tvm::DynamicFunction:

Classes

struct  ForceContact
 

Public Types

using Output = tvm::function::abstract::LinearFunction::Output
 
- Public Types inherited from tvm::graph::internal::AbstractNode
enum  Update_
 
typedef AbstractNode UpdateParent
 
typedef AbstractNode UpdateBase
 
- Public Types inherited from tvm::graph::internal::Inputs
typedef std::unordered_map< abstract::Outputs *, std::set< int > > inputs_t
 
typedef std::unordered_set< std::shared_ptr< abstract::Outputs > > store_t
 
- Public Types inherited from tvm::graph::abstract::Outputs
enum  Output_
 
typedef Outputs OutputParent
 
typedef Outputs OutputBase
 

Public Member Functions

 DynamicFunction (const mc_rbdyn::Robot &robot)
 
const tvm::VariableVectoraddContact (const mc_rbdyn::RobotFrame &frame, std::vector< sva::PTransformd > points, double dir)
 
void removeContact (const mc_rbdyn::RobotFrame &frame)
 
sva::ForceVecd contactForce (const mc_rbdyn::RobotFrame &f) const
 
- Public Member Functions inherited from tvm::function::abstract::LinearFunction
void updateValue ()
 
void updateVelocity ()
 
void resizeCache () override
 
const tvm::internal::VectorWithPropertiesb () const
 
- Public Member Functions inherited from tvm::function::abstract::Function
virtual const Eigen::VectorXd & velocity () const
 
virtual const Eigen::VectorXd & normalAcceleration () const
 
virtual MatrixConstRef JDot (const Variable &x) const
 
- Public Member Functions inherited from tvm::internal::FirstOrderProvider
virtual const Eigen::VectorXd & value () const
 
virtual MatrixConstRefWithProperties jacobian (const Variable &x) const
 
bool linearIn (const Variable &x) const
 
const SpaceimageSpace () const
 
int size () const
 
int rSize () const
 
int tSize () const
 
const VariableVectorvariables () const
 
- Public Member Functions inherited from tvm::graph::internal::AbstractNode
bool isUpdateEnabled (EnumT e) const
 
virtual bool isUpdateStaticallyEnabled (int) const
 
virtual bool isUpdateCustomEnabled (int) const
 
virtual ~AbstractNode ()=default
 
void update (int i)
 
- Public Member Functions inherited from tvm::graph::internal::Inputs
virtual ~Inputs ()=default
 
void addInput (std::shared_ptr< T > source, EnumI i, Args... args)
 
void addInput (T &source, EnumI i, Args... args)
 
void removeInput (T *source)
 
void removeInput (T *source, Args... args)
 
Iterator getInput (T *source)
 
Iterator getInput (const std::shared_ptr< T > &source)
 
- Public Member Functions inherited from tvm::graph::abstract::Outputs
virtual ~Outputs ()=default
 
bool isOutputEnabled (EnumT e) const
 
bool isOutputEnabled (int i) const
 
virtual bool isOutputStaticallyEnabled (int) const
 
virtual bool isOutputCustomEnabled (int) const
 

Protected Member Functions

void updateb ()
 
std::vector< ForceContact >::const_iterator findContact (const mc_rbdyn::RobotFrame &frame) const
 
void updateJacobian ()
 
- Protected Member Functions inherited from tvm::function::abstract::LinearFunction
 LinearFunction (int m)
 
virtual void updateValue_ ()
 
virtual void updateVelocity_ ()
 
void setDerivativesToZero ()
 
- Protected Member Functions inherited from tvm::function::abstract::Function
 Function (int m=0)
 
 Function (Space image)
 
void resizeVelocityCache ()
 
void resizeNormalAccelerationCache ()
 
void resizeJDotCache ()
 
void addVariable_ (VariablePtr v) override
 
void removeVariable_ (VariablePtr v) override
 
- Protected Member Functions inherited from tvm::internal::FirstOrderProvider
 FirstOrderProvider (int m)
 
 FirstOrderProvider (Space image)
 
void resizeValueCache ()
 
void resizeJacobianCache ()
 
void addVariable (VariablePtr v, bool linear)
 
void removeVariable (VariablePtr v)
 
void addVariable (const VariableVector &v, bool linear)
 
void splitJacobian (const MatrixConstRef &J, const std::vector< VariablePtr > &vars, bool keepProperties=false)
 
void splitJacobian (const MatrixConstRef &J, const VariableVector &vars, bool keepProperties=false)
 
void resize (int m)
 
- Protected Member Functions inherited from Node< FirstOrderProvider >
void registerUpdates (EnumT u, void(U::*fn)(), Args... args)
 
void registerUpdates (EnumT u, void(U::*fn)())
 
void addOutputDependency (EnumO o, EnumU u)
 
void addOutputDependency (std::initializer_list< EnumO > os, EnumU u)
 
void addInternalDependency (EnumU1 uDependent, EnumU2 u)
 
void addInputDependency (EnumU u, std::shared_ptr< S > source, EnumO i, Args... args)
 
void addInputDependency (EnumU u, S &source, EnumO i, Args... args)
 
void addDirectDependency (EnumO o, std::shared_ptr< S > source, EnumI i)
 
void addDirectDependency (EnumO o, S &source, EnumI i)
 

Protected Attributes

const mc_rbdyn::Robotrobot_
 
std::vector< ForceContactcontacts_
 
- Protected Attributes inherited from tvm::function::abstract::LinearFunction
tvm::internal::VectorWithProperties b_
 
- Protected Attributes inherited from tvm::function::abstract::Function
Eigen::VectorXd velocity_
 
Eigen::VectorXd normalAcceleration_
 
utils::internal::MapWithVariableAsKey< Eigen::MatrixXd, slice_jdotJDot_
 
- Protected Attributes inherited from tvm::internal::FirstOrderProvider
Eigen::VectorXd value_
 
utils::internal::MapWithVariableAsKey< MatrixWithProperties, slice_matrix, true > jacobian_
 
Space imageSpace_
 
VariableVector variables_
 
utils::internal::MapWithVariableAsKey< bool, slice_linearlinear_
 
- Protected Attributes inherited from tvm::graph::internal::AbstractNode
std::map< int, std::function< void(AbstractNode &)> > updates_
 
std::map< int, std::vector< int > > outputDependencies_
 
std::map< int, std::vector< int > > internalDependencies_
 
std::map< int, input_dependency_tinputDependencies_
 
std::map< int, std::pair< Outputs *, int > > directDependencies_
 
- Protected Attributes inherited from tvm::graph::abstract::Outputs
bool is_node_
 

Additional Inherited Members

- Static Public Member Functions inherited from tvm::graph::internal::AbstractNode
static constexpr const char * UpdateName (Update_)
 
static constexpr bool UpdateStaticallyEnabled (EnumT)
 
- Static Public Member Functions inherited from tvm::graph::abstract::Outputs
static constexpr const char * OutputName (Output_)
 
static constexpr bool OutputStaticallyEnabled (EnumT)
 
- Static Public Attributes inherited from tvm::graph::internal::AbstractNode
static constexpr unsigned int UpdateSize
 
static constexpr auto UpdateBaseName
 
- Static Public Attributes inherited from tvm::graph::abstract::Outputs
static constexpr unsigned int OutputSize
 
static constexpr auto OutputBaseName
 
- Protected Types inherited from tvm::graph::internal::AbstractNode
typedef std::map< Outputs *, std::set< int > > input_dependency_t
 

Detailed Description

Implement the equation of motion for a given robot.

It can be given contacts that will be integrated into the equation of motion (

See also
DynamicFunction::addContact).

It manages the force variables related to these contacts.

Notably, it does not take care of enforcing Newton 3rd law of motion when two actuated robots are in contact.

Member Typedef Documentation

◆ Output

using mc_tvm::DynamicFunction::Output = tvm::function::abstract::LinearFunction::Output

Constructor & Destructor Documentation

◆ DynamicFunction()

mc_tvm::DynamicFunction::DynamicFunction ( const mc_rbdyn::Robot robot)

Construct the equation of motion for a given robot

Member Function Documentation

◆ addContact()

const tvm::VariableVector& mc_tvm::DynamicFunction::addContact ( const mc_rbdyn::RobotFrame frame,
std::vector< sva::PTransformd points,
double  dir 
)

Add a contact to the function

This adds forces variables for every contact point belonging to the robot of this dynamic function.

Parameters
frameContact frame
pointsContact points in the frame's parent body's frame
dirContact direction

Returns the force variables that were created by this contact

◆ contactForce()

sva::ForceVecd mc_tvm::DynamicFunction::contactForce ( const mc_rbdyn::RobotFrame f) const

Returns the contact force at the given contact frame

Parameters
fContact frame
Exceptions
Ifno contact has been added with that frame

◆ findContact()

std::vector<ForceContact>::const_iterator mc_tvm::DynamicFunction::findContact ( const mc_rbdyn::RobotFrame frame) const
protected

◆ removeContact()

void mc_tvm::DynamicFunction::removeContact ( const mc_rbdyn::RobotFrame frame)

Removes the contact associated to the given frame

Parameters
frameContact frame

◆ updateb()

void mc_tvm::DynamicFunction::updateb ( )
protected

◆ updateJacobian()

void mc_tvm::DynamicFunction::updateJacobian ( )
protected

Member Data Documentation

◆ contacts_

std::vector<ForceContact> mc_tvm::DynamicFunction::contacts_
protected

◆ robot_

const mc_rbdyn::Robot& mc_tvm::DynamicFunction::robot_
protected

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