Recursive newton euler inverse dynamics solver for kinematic trees. More...
#include <treeidsolver_recursive_newton_euler.hpp>
Public Member Functions | |
int | CartToJnt (const JntArray &q, const JntArray &q_dot, const JntArray &q_dotdot, const WrenchMap &f_ext, JntArray &torques) |
TreeIdSolver_RNE (const Tree &tree, Vector grav) | |
virtual void | updateInternalDataStructures () |
Private Member Functions | |
void | initAuxVariables () |
Helper function to initialize private members X, S, v, a, f. | |
void | rne_step (SegmentMap::const_iterator segment, const JntArray &q, const JntArray &q_dot, const JntArray &q_dotdot, const WrenchMap &f_ext, JntArray &torques) |
One recursion step. | |
Private Attributes | |
std::map< std::string, Twist > | a |
Twist | ag |
std::map< std::string, Wrench > | f |
unsigned int | nj |
unsigned int | ns |
std::map< std::string, Twist > | S |
const Tree & | tree |
std::map< std::string, Twist > | v |
std::map< std::string, Frame > | X |
Recursive newton euler inverse dynamics solver for kinematic trees.
It calculates the torques for the joints, given the motion of the joints (q,qdot,qdotdot), external forces on the segments (expressed in the segments reference frame) and the dynamical parameters of the segments.
This is an extension of the inverse dynamic solver for kinematic chains,
Definition at line 41 of file treeidsolver_recursive_newton_euler.hpp.
KDL::TreeIdSolver_RNE::TreeIdSolver_RNE | ( | const Tree & | tree, |
Vector | grav | ||
) |
Constructor for the solver, it will allocate all the necessary memory
tree | The kinematic tree to calculate the inverse dynamics for, an internal reference will be stored. |
grav | The gravity vector to use during the calculation. |
Definition at line 28 of file treeidsolver_recursive_newton_euler.cpp.
int KDL::TreeIdSolver_RNE::CartToJnt | ( | const JntArray & | q, |
const JntArray & | q_dot, | ||
const JntArray & | q_dotdot, | ||
const WrenchMap & | f_ext, | ||
JntArray & | torques | ||
) | [virtual] |
Function to calculate from Cartesian forces to joint torques. Input parameters;
q | The current joint positions |
q_dot | The current joint velocities |
q_dotdot | The current joint accelerations |
f_ext | The external forces (no gravity) on the segments Output parameters: |
torques | the resulting torques for the joints |
Implements KDL::TreeIdSolver.
Definition at line 52 of file treeidsolver_recursive_newton_euler.cpp.
void KDL::TreeIdSolver_RNE::initAuxVariables | ( | ) | [private] |
Helper function to initialize private members X, S, v, a, f.
Definition at line 41 of file treeidsolver_recursive_newton_euler.cpp.
void KDL::TreeIdSolver_RNE::rne_step | ( | SegmentMap::const_iterator | segment, |
const JntArray & | q, | ||
const JntArray & | q_dot, | ||
const JntArray & | q_dotdot, | ||
const WrenchMap & | f_ext, | ||
JntArray & | torques | ||
) | [private] |
One recursion step.
Definition at line 78 of file treeidsolver_recursive_newton_euler.cpp.
void KDL::TreeIdSolver_RNE::updateInternalDataStructures | ( | ) | [virtual] |
Update the internal data structures. This is required if the number of segments or number of joints of a chain/tree have changed. This provides a single point of contact for solver memory allocations.
Implements KDL::SolverI.
Definition at line 35 of file treeidsolver_recursive_newton_euler.cpp.
std::map<std::string,Twist> KDL::TreeIdSolver_RNE::a [private] |
Definition at line 78 of file treeidsolver_recursive_newton_euler.hpp.
Twist KDL::TreeIdSolver_RNE::ag [private] |
Definition at line 80 of file treeidsolver_recursive_newton_euler.hpp.
std::map<std::string,Wrench> KDL::TreeIdSolver_RNE::f [private] |
Definition at line 79 of file treeidsolver_recursive_newton_euler.hpp.
unsigned int KDL::TreeIdSolver_RNE::nj [private] |
Definition at line 73 of file treeidsolver_recursive_newton_euler.hpp.
unsigned int KDL::TreeIdSolver_RNE::ns [private] |
Definition at line 74 of file treeidsolver_recursive_newton_euler.hpp.
std::map<std::string,Twist> KDL::TreeIdSolver_RNE::S [private] |
Definition at line 76 of file treeidsolver_recursive_newton_euler.hpp.
const Tree& KDL::TreeIdSolver_RNE::tree [private] |
Definition at line 72 of file treeidsolver_recursive_newton_euler.hpp.
std::map<std::string,Twist> KDL::TreeIdSolver_RNE::v [private] |
Definition at line 77 of file treeidsolver_recursive_newton_euler.hpp.
std::map<std::string,Frame> KDL::TreeIdSolver_RNE::X [private] |
Definition at line 75 of file treeidsolver_recursive_newton_euler.hpp.