KDL
1.3.0
|
Recursive newton euler inverse dynamics solver. More...
#include <src/chainidsolver_recursive_newton_euler.hpp>
Public Member Functions | |
ChainIdSolver_RNE (const Chain &chain, Vector grav) | |
Constructor for the solver, it will allocate all the necessary memory. More... | |
~ChainIdSolver_RNE () | |
int | CartToJnt (const JntArray &q, const JntArray &q_dot, const JntArray &q_dotdot, const Wrenches &f_ext, JntArray &torques) |
Function to calculate from Cartesian forces to joint torques. More... | |
Private Attributes | |
Chain | chain |
unsigned int | nj |
unsigned int | ns |
std::vector< Frame > | X |
std::vector< Twist > | S |
std::vector< Twist > | v |
std::vector< Twist > | a |
std::vector< Wrench > | f |
Twist | ag |
Recursive newton euler inverse dynamics solver.
The algorithm implementation is based on the book "Rigid Body Dynamics Algorithms" of Roy Featherstone, 2008 (ISBN:978-0-387-74314-1) See page 96 for the pseudo-code.
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.
Constructor for the solver, it will allocate all the necessary memory.
chain | The kinematic chain to calculate the inverse dynamics for, an internal copy will be made. |
grav | The gravity vector to use during the calculation. |
References ag, and KDL::Vector::Zero().
|
inline |
References CartToJnt().
|
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::ChainIdSolver.
References a, ag, chain, KDL::dot(), f, KDL::Segment::getInertia(), KDL::Segment::getJoint(), KDL::Chain::getSegment(), KDL::Joint::getType(), nj, KDL::Joint::None, ns, KDL::Segment::pose(), KDL::JntArray::rows(), S, KDL::Segment::twist(), v, and X.
Referenced by KDL::ChainDynParam::JntToCoriolis(), KDL::ChainDynParam::JntToGravity(), and ~ChainIdSolver_RNE().
|
private |
Referenced by CartToJnt().
|
private |
Referenced by CartToJnt(), and ChainIdSolver_RNE().
|
private |
Referenced by CartToJnt().
|
private |
Referenced by CartToJnt().
|
private |
Referenced by CartToJnt().
|
private |
Referenced by CartToJnt().
|
private |
Referenced by CartToJnt().
|
private |
Referenced by CartToJnt().
|
private |
Referenced by CartToJnt().