|
| | Robot (Clock &clock, const std::string &name, rbd::MultiBodyGraph &mbg, rbd::MultiBody mb, rbd::MultiBodyConfig mbc, const rbd::parsers::Limits &limits={{}, {}, {}, {}}) |
| |
| const std::string & | name () const |
| |
| double | mass () const |
| |
| const VariableVector & | q () const |
| |
| VariableVector & | q () |
| |
| const VariablePtr & | qFreeFlyer () const |
| |
| VariablePtr & | qFreeFlyer () |
| |
| const VariablePtr & | qJoints () const |
| |
| VariablePtr & | qJoints () |
| |
| const VariablePtr & | tau () const |
| |
| VariablePtr & | tau () |
| |
| const rbd::MultiBody & | mb () const |
| |
| rbd::MultiBody & | mb () |
| |
| const rbd::MultiBodyConfig & | mbc () const |
| |
| rbd::MultiBodyConfig & | mbc () |
| |
| const std::vector< sva::MotionVecd > & | normalAccB () const |
| |
| std::vector< sva::MotionVecd > & | normalAccB () |
| |
| const Eigen::VectorXd & | lQBound () const |
| |
| Eigen::VectorXd & | lQBound () |
| |
| const Eigen::VectorXd & | uQBound () const |
| |
| Eigen::VectorXd & | uQBound () |
| |
| const Eigen::VectorXd & | lVelBound () const |
| |
| Eigen::VectorXd & | lVelBound () |
| |
| const Eigen::VectorXd & | uVelBound () const |
| |
| Eigen::VectorXd & | uVelBound () |
| |
| const Eigen::VectorXd & | lTauBound () const |
| |
| Eigen::VectorXd & | lTauBound () |
| |
| const Eigen::VectorXd & | uTauBound () const |
| |
| Eigen::VectorXd & | uTauBound () |
| |
| const Eigen::MatrixXd & | H () const |
| |
| const Eigen::VectorXd & | C () const |
| |
| const Eigen::Vector3d & | com () const |
| |
| const sva::PTransformd & | bodyTransform (const std::string &b) const |
| |
| template<typename EnumT > |
| bool | isUpdateEnabled (EnumT e) const |
| |
| virtual bool | isUpdateStaticallyEnabled (int) const |
| |
| virtual bool | isUpdateCustomEnabled (int) const |
| |
| virtual | ~AbstractNode ()=default |
| |
| void | update (int i) |
| |
| virtual | ~Inputs ()=default |
| |
| template<typename T , typename EnumI , typename... Args> |
| void | addInput (std::shared_ptr< T > source, EnumI i, Args... args) |
| |
| template<typename T , typename EnumI , typename... Args, typename std::enable_if< std::is_base_of< abstract::Outputs, T >::value, int >::type = 0> |
| void | addInput (T &source, EnumI i, Args... args) |
| |
| template<typename T > |
| void | removeInput (T *source) |
| |
| template<typename T , typename... Args> |
| void | removeInput (T *source, Args... args) |
| |
| template<typename T > |
| Iterator | getInput (T *source) |
| |
| template<typename T > |
| Iterator | getInput (const std::shared_ptr< T > &source) |
| |
| virtual | ~Outputs ()=default |
| |
| template<typename EnumT > |
| bool | isOutputEnabled (EnumT e) const |
| |
| bool | isOutputEnabled (int i) const |
| |
| virtual bool | isOutputStaticallyEnabled (int) const |
| |
| virtual bool | isOutputCustomEnabled (int) const |
| |
|
| enum class | Update_ |
| |
| using | UpdateParent = AbstractNode |
| |
| using | UpdateBase = AbstractNode |
| |
| using | inputs_t = std::unordered_map< abstract::Outputs *, std::set< int > > |
| |
| using | store_t = std::unordered_set< std::shared_ptr< abstract::Outputs > > |
| |
| enum class | Output_ |
| |
| using | OutputParent = Outputs |
| |
| using | OutputBase = Outputs |
| |
| static constexpr const char * | UpdateName (Update_) |
| |
| template<typename EnumT > |
| static constexpr bool | UpdateStaticallyEnabled (EnumT) |
| |
| static constexpr const char * | OutputName (Output_) |
| |
| template<typename EnumT > |
| static constexpr bool | OutputStaticallyEnabled (EnumT) |
| |
| static constexpr unsigned int | UpdateSize = 0 |
| |
| static constexpr auto | UpdateBaseName = "AbstractNode" |
| |
| static constexpr unsigned int | OutputSize = 0 |
| |
| static constexpr auto | OutputBaseName = "Outputs" |
| |
| using | input_dependency_t = std::map< Outputs *, std::set< int > > |
| |
| 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) |
| |
| 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_ |
| |
| bool | is_node_ = false |
| |
Represent a Robot
A robot is constructed by providing instances of MultiBodyGraph, MultiBody and MultiBodyConfig that are created from each other. It provides signals that are relevant for computing quantities related to a robot.
Variables:
- q (split between free-flyer and joints)
- tau (see Outputs)
Individual outputs:
- FK: forward kinematics (computed by RBDyn::FK)
- FV: forward velocity (computed by RBDyn::FV), depends on FK
- FA: forward acceleration (computed by RBDyn::FA), depends on FV
- NormalAcceleration: update bodies' normal acceleration, depends on FA
- tau: generalized torque vector, this output isn't currently linked to any computation
- CoM: center of mass signal, depends on FK
- H: inertia matrix signal, depends on FV
- C: non-linear effect vector signal (Coriolis, gravity, external forces), depends on FV
Meta outputs: These outputs are provided for convenience sake
- Geometry: depends on CoM (i.e. CoM + FK)
- Dynamics: depends on FA + normalAcceleration (i.e. everything)