![]() |
RML
1.0
Robotics Mathematical Library
|
Implementation of the Newton-Euler equation for rigid-body chains. More...
#include <NewtonEuler.h>
Public Member Functions | |
| NewtonEuler (std::shared_ptr< RobotModel > &model, std::string &armID, std::string &toolID) | |
| virtual | ~NewtonEuler () |
| void | EvaluateAlgorithmStep (const Eigen::VectorXd &q, const Eigen::VectorXd &q_dot, const Eigen::VectorXd &q_ddot, const Eigen::Vector3d &gravity, Eigen::VectorXd &torques) |
| auto | Gravityvector () -> Eigen::Vector3d & |
| Eigen::MatrixXd | InertiaMatrix () |
| Eigen::VectorXd | GravityEffect () |
| Eigen::VectorXd | CoriolisGravityExternalForcesEffect () |
| void | PrintVars () const |
Implementation of the Newton-Euler equation for rigid-body chains.
This class makes use of rml::RobotModel to find the forces and moments acting on the manipulator. Some facilites equations are provided to use the class in order to simulated dynamic systems. The nomenclature used for the manipulators dynamic equation is the following:
![]()
where
are the external forces.
I can evaluate the various A, B, C matrix by imposing q_dot, q_ddot equal to zero. After, I can compute q_ddot by inverting the above mentioned formula. Defined
, we can write:
![]()
The newton euler algorithm can be used to evaulate the
matrix and the
, and the functions InertiaMatrix() and CoriolisGravityExternalForcesEffect() provide this functionalities.
| rml::NewtonEuler::NewtonEuler | ( | std::shared_ptr< RobotModel > & | model, |
| std::string & | armID, | ||
| std::string & | toolID | ||
| ) |
|
virtual |
| Eigen::VectorXd rml::NewtonEuler::CoriolisGravityExternalForcesEffect | ( | ) |
| void rml::NewtonEuler::EvaluateAlgorithmStep | ( | const Eigen::VectorXd & | q, |
| const Eigen::VectorXd & | q_dot, | ||
| const Eigen::VectorXd & | q_ddot, | ||
| const Eigen::Vector3d & | gravity, | ||
| Eigen::VectorXd & | torques | ||
| ) |
| Eigen::VectorXd rml::NewtonEuler::GravityEffect | ( | ) |
|
inline |
set the gravity vector
| Eigen::MatrixXd rml::NewtonEuler::InertiaMatrix | ( | ) |
| void rml::NewtonEuler::PrintVars | ( | ) | const |