RML  1.0
Robotics Mathematical Library
Loading...
Searching...
No Matches
NewtonEuler.h
Go to the documentation of this file.
1
8#ifndef INCLUDE_RML_NEWTONEULER_H_
9#define INCLUDE_RML_NEWTONEULER_H_
10
11#include <memory>
12
13#include "RobotModel.h"
14
15namespace rml {
16
17const double STD_GRAVITY = 9.80665;
18
47 unsigned int numJoints_;
48
49 //std::shared_ptr<RobotModel> model_;
50 std::shared_ptr<ArmModel> armModel_;
51 std::shared_ptr<RobotModel> robotModel_;
52
53 std::vector<Eigen::RotationMatrix> R_;
54 std::vector<Eigen::Vector3d> rhoVec_; // Distance between joint "i" and "i+1"
55 Eigen::VectorXd q_, q_dot_, q_ddot_, q_ddot_Ai_, qZeroVec_;
56 Eigen::VectorXd a_column;
57 std::vector<Eigen::Vector3d> omega_, omega_dot_, c_dot_, c_ddot_;
58 Eigen::Vector3d temp1_, temp2_, temp3_, temp4_, omega_prev_;
59 Eigen::Vector3d gravity_, zeroVect3_;
60 std::vector<Eigen::Vector3d> n_, f_;
61 std::vector<Eigen::Vector3d> r_qmc_, r_qpc_;
62
67 std::vector<Eigen::Vector3d> self_f_, self_n_;
68 std::vector<Eigen::Vector3d> interaction_f_, interaction_n_;
69
70 std::vector<RobotLink> links_;
71
72 std::string toolID_;
73
74 void Init();
75 void AddDummyBaseAndEE();
76 void InterMom2Torque(Eigen::VectorXd& torques) const;
77
78public:
79 //NewtonEuler();
80 NewtonEuler(std::shared_ptr<RobotModel>& model, std::string& armID, std::string& toolID);
81 virtual ~NewtonEuler();
82
83 void EvaluateAlgorithmStep(const Eigen::VectorXd& q, const Eigen::VectorXd& q_dot, const Eigen::VectorXd& q_ddot, const Eigen::Vector3d& gravity, Eigen::VectorXd& torques);
84
88 auto Gravityvector() -> Eigen::Vector3d& { return gravity_; }
89
93 Eigen::MatrixXd InertiaMatrix();
94
98 Eigen::VectorXd GravityEffect();
99
104
105 void PrintVars() const;
106};
107
108} /* namespace rml */
109
110#endif /* INCLUDE_RML_NEWTONEULER_H_ */
Implementation of the Newton-Euler equation for rigid-body chains.
Definition NewtonEuler.h:46
void EvaluateAlgorithmStep(const Eigen::VectorXd &q, const Eigen::VectorXd &q_dot, const Eigen::VectorXd &q_ddot, const Eigen::Vector3d &gravity, Eigen::VectorXd &torques)
Eigen::VectorXd GravityEffect()
void PrintVars() const
NewtonEuler(std::shared_ptr< RobotModel > &model, std::string &armID, std::string &toolID)
auto Gravityvector() -> Eigen::Vector3d &
Definition NewtonEuler.h:88
Eigen::MatrixXd InertiaMatrix()
Eigen::VectorXd CoriolisGravityExternalForcesEffect()
virtual ~NewtonEuler()
Types and algorithms for robotic mobile manipulation.
Definition ArmModel.h:19
const double STD_GRAVITY
Definition NewtonEuler.h:17