|
mc_rtc
2.14.0
|
#include <mc_tvm/DynamicFunction.h>


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::VariableVector & | addContact (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::VectorWithProperties & | b () 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 Space & | imageSpace () const |
| int | size () const |
| int | rSize () const |
| int | tSize () const |
| const VariableVector & | variables () 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::Robot & | robot_ |
| std::vector< ForceContact > | contacts_ |
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_jdot > | JDot_ |
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_linear > | linear_ |
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_t > | inputDependencies_ |
| 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 |
Implement the equation of motion for a given robot.
It can be given contacts that will be integrated into the equation of motion (
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.
| using mc_tvm::DynamicFunction::Output = tvm::function::abstract::LinearFunction::Output |
| mc_tvm::DynamicFunction::DynamicFunction | ( | const mc_rbdyn::Robot & | robot | ) |
Construct the equation of motion for a given robot
| 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.
| frame | Contact frame |
| points | Contact points in the frame's parent body's frame |
| dir | Contact direction |
Returns the force variables that were created by this contact
| sva::ForceVecd mc_tvm::DynamicFunction::contactForce | ( | const mc_rbdyn::RobotFrame & | f | ) | const |
Returns the contact force at the given contact frame
| f | Contact frame |
| If | no contact has been added with that frame |
|
protected |
| void mc_tvm::DynamicFunction::removeContact | ( | const mc_rbdyn::RobotFrame & | frame | ) |
Removes the contact associated to the given frame
| frame | Contact frame |
|
protected |
|
protected |
|
protected |
|
protected |