TPIK  1.0
Task Priority Inverse Kinematics
Loading...
Searching...
No Matches
TPIK.h
Go to the documentation of this file.
1#ifndef __TPIK_H__
2#define __TPIK_H__
3
4#include "PriorityLevel.h"
5#include <eigen3/Eigen/Dense>
6#include <iostream>
7
8namespace tpik {
9/*
10* @brief TPIK class.
11* @details Implementation of the TPIK (Task Priority Inverse Kinematic) Abstract class to handle the inverse kinematic control for a single priority level.
12*/
13class TPIK {
14public:
15 /*
16 * @brief TPIK constructor.
17 * @param[in] DoF: degrees of freedom;
18 */
19 TPIK(int DoF);
20 /*
21 * @brief TPIK virtual Default de-constructor.
22 */
23 virtual ~TPIK();
24 /*
25 * @brief Pure virtual method that computes the kinematic control for a single priority level.
26 * To be implemented in the derived classes.
27 * @param[in] J: Jacobian Matrix;
28 * @param[in] A: Activation Function (Ai*Ae);
29 * @param[in] x_dot: Reference;
30 * @param[in] regularizationData: rml::RegularizationData struct.
31 */
32 virtual void ComputeVelocities(const Eigen::MatrixXd& J, const Eigen::MatrixXd& A, const Eigen::VectorXd& x_dot, rml::RegularizationData& regularizationData) = 0;
33 /*
34 * @brief Method which returns the computed velocity.
35 * @return Inverse Kinematic Velocity.
36 */
37 auto Velocities() const -> const Eigen::VectorXd& { return y_; }
38 /*
39 * @brief Method which resets the class variables in order to compute a new kinematic control.
40 */
41 void Reset();
42 /*
43 * @brief Method which returns the system Degrees of Freedom
44 * @return Degrees of freedom.
45 */
46 auto Dof() const -> int { return DoF_; }
47 /*
48 * @brief Method setting the saturation values for each dof
49 * @param[in] saturationMax maximum value
50 * @param[in] saturationMin minimum value
51 */
52 void SetSaturation(const Eigen::VectorXd &saturationMin, const Eigen::VectorXd &saturationMax);
53 /*
54 * @brief Method getting the saturation values for each dof
55 * @param[out] saturationMax maximum value
56 * @param[out] saturationMin minimum value
57 */
58 void GetSaturation(Eigen::VectorXd& saturationMin, Eigen::VectorXd& saturationMax) const;
59 /*
60 * @brief Method which returns the increment of velocities
61 */
62 auto DeltaY() const -> const Eigen::VectorXd& { return deltaY_; }
63 /*
64 * @brief Overload of the cout function
65 */
66 friend std::ostream& operator<<(std::ostream& os, TPIK const& tpik)
67 {
68 return os << "\033[1;37m"
69 << "TPIK"
70 << "\n"
71 << std::setprecision(4) << "\033[1;37m"
72 << "Y \n"
73 << "\033[0m" << tpik.y_ << "\n"
74 << "\033[1;37m"
75 << "Q \n"
76 << "\033[0m" << tpik.Q_ << "\n";
77 }
78
79protected:
80 Eigen::VectorXd y_; // The velocity.
81 Eigen::MatrixXd Q_; // The Q matrix stating the space in which the following velocities must be generated in order not to affect the velocities generated for the higher priority levels.
82 Eigen::MatrixXd I_; // The identity Matrix (DoF x DoF).
83 int DoF_; // The degrees of freedom.
84 Eigen::VectorXd deltaY_;
85 Eigen::VectorXd originalSaturationMax_; // vector containing the initial max value for saturation.
86 Eigen::VectorXd originalSaturationMin_; // vector containing the initial min value for saturation.
87 Eigen::VectorXd saturationMax_; // vector containing the max value for saturation.
88 Eigen::VectorXd saturationMin_; // vector containing the min value for saturation.
89 bool isSaturationSet_; //bool to check if the saturation has been set
90};
91}
92
93#endif
Definition TPIK.h:13
friend std::ostream & operator<<(std::ostream &os, TPIK const &tpik)
Definition TPIK.h:66
void GetSaturation(Eigen::VectorXd &saturationMin, Eigen::VectorXd &saturationMax) const
int DoF_
Definition TPIK.h:83
bool isSaturationSet_
Definition TPIK.h:89
Eigen::VectorXd originalSaturationMin_
Definition TPIK.h:86
Eigen::MatrixXd I_
Definition TPIK.h:82
void Reset()
Eigen::MatrixXd Q_
Definition TPIK.h:81
auto DeltaY() const -> const Eigen::VectorXd &
Definition TPIK.h:62
virtual void ComputeVelocities(const Eigen::MatrixXd &J, const Eigen::MatrixXd &A, const Eigen::VectorXd &x_dot, rml::RegularizationData &regularizationData)=0
Eigen::VectorXd saturationMin_
Definition TPIK.h:88
virtual ~TPIK()
auto Dof() const -> int
Definition TPIK.h:46
void SetSaturation(const Eigen::VectorXd &saturationMin, const Eigen::VectorXd &saturationMax)
Eigen::VectorXd originalSaturationMax_
Definition TPIK.h:85
Eigen::VectorXd deltaY_
Definition TPIK.h:84
auto Velocities() const -> const Eigen::VectorXd &
Definition TPIK.h:37
TPIK(int DoF)
Eigen::VectorXd y_
Definition TPIK.h:80
Eigen::VectorXd saturationMax_
Definition TPIK.h:87
Definition Action.h:9