12 #ifndef __SOT_reactive_lqr_controller_HH__ 13 #define __SOT_reactive_lqr_controller_HH__ 20 #include <dynamic-graph/linear-algebra.h> 24 #include <dynamic-graph/signal-time-dependent.h> 25 #include <dynamic-graph/signal-ptr.h> 26 #include <dynamic-graph/entity.h> 41 void init (
const double& step){};
45 static const double TIME_STEP_DEFAULT;
49 static const std::string CLASS_NAME;
50 virtual const std::string& getClassName(
void )
const {
return CLASS_NAME;}
54 SignalPtr<dg::Vector, int> com_posSIN;
55 SignalPtr<dg::Vector, int> com_velSIN;
56 SignalPtr<dg::Vector, int> com_oriSIN;
57 SignalPtr<dg::Vector, int> com_ang_velSIN;
58 SignalPtr<dg::Vector, int> end_eff_pos_12dSIN;
59 SignalPtr<dg::Vector, int> des_fffSIN;
60 SignalPtr<dg::Vector, int> cnt_valueSIN;
61 SignalPtr<dg::Vector, int> cnt_sensor_valueSIN;
62 SignalPtr<dg::Vector, int> state_vectorSIN;
63 SignalPtr<dg::Vector, int> massSIN;
64 SignalPtr<dg::Matrix, int> inertiaSIN;
66 SignalPtr<dg::Vector, int> horizonSIN;
67 SignalPtr<dg::Matrix, int> qSIN;
68 SignalPtr<dg::Matrix, int> rSIN;
71 SignalTimeDependent<dg::Matrix, int> lqr_gainsSOUT;
77 double& setsize(
int dimension);
79 Eigen::VectorXd compute_dyn_(Eigen::Vector3d com_pos, Eigen::Vector3d com_vel, Eigen::Quaternion<double> ori, Eigen::Vector3d com_ang_vel,
80 Eigen::VectorXd end_eff_pos_12d, Eigen::VectorXd des_fff, Eigen::Vector4d cnt_value,
double mass,
81 Eigen::MatrixXd inertia, Eigen::MatrixXd& A_t, Eigen::MatrixXd& B_t);
82 void compute_lin_dyn_(Eigen::MatrixXd lin_A_t, Eigen::MatrixXd lin_B_t);
83 void compute_num_lin_dyn_(
84 Eigen::Vector3d com_pos_t, Eigen::VectorXd com_vel, Eigen::Vector3d com_ang_vel_t,
85 Eigen::Quaternion<double> ori_t, Eigen::VectorXd end_eff_pos_12d_t,
86 Eigen::Vector4d cnt_value_t,
87 Eigen::Vector3d com_pos_t1, Eigen::Vector3d com_vel_t1, Eigen::Vector3d com_ang_vel_t1,
88 Eigen::Quaternion<double> ori_t1,
89 Eigen::VectorXd end_eff_pos_12d_t1, Eigen::Vector4d cnt_value_t1,
90 Eigen::VectorXd des_fff,
double mass, Eigen::MatrixXd inertia,
91 Eigen::MatrixXd& lin_A_t, Eigen::MatrixXd& lin_B_t);
94 Eigen::MatrixXd compute_r_cross_mat_(Eigen::VectorXd end_eff_pos, Eigen::Vector3d com_pos );
96 void compute_lqr_gains_(Eigen::MatrixXd Q, Eigen::MatrixXd R, Eigen::MatrixXd lin_A,
97 Eigen::MatrixXd lin_B, Eigen::MatrixXd P_prev, Eigen::MatrixXd &P, Eigen::MatrixXd &K);
99 Eigen::MatrixXd omega;
101 Eigen::MatrixXd inertia_global_inv;
102 Eigen::MatrixXd mass_inv_identity;
103 Eigen::MatrixXd R_cross_mat;
104 Eigen::MatrixXd R_cross_mat_fl;
105 Eigen::MatrixXd R_cross_mat_fr;
106 Eigen::MatrixXd R_cross_mat_hl;
107 Eigen::MatrixXd R_cross_mat_hr;
112 Eigen::MatrixXd A_t1;
113 Eigen::MatrixXd B_t1;
115 Eigen::VectorXd unit_vec;
116 Eigen::Vector3d com_pos_pd;
117 Eigen::Vector3d com_vel_pd;
118 Eigen::Vector3d com_ang_vel_pd;
119 Eigen::Quaternion<double> com_ori_pd;
123 dynamicgraph::Matrix& return_lqr_gains_(dynamicgraph::Matrix & lqr_gains,
int t);
124 Eigen::MatrixXd P_prev;
125 Eigen::MatrixXd K_prev;
133 Eigen::VectorXd com_pos_t;
134 Eigen::VectorXd com_vel_t;
135 Eigen::VectorXd com_ang_vel_t;
136 Eigen::VectorXd ori_tmp;
137 Eigen::Quaternion<double> com_ori_t;
138 Eigen::VectorXd des_fff_t;
139 Eigen::VectorXd cnt_value_t;
140 Eigen::VectorXd end_eff_pos_12d_t;
141 Eigen::VectorXd xd_t;
145 Eigen::VectorXd com_pos_t1;
146 Eigen::VectorXd com_vel_t1;
147 Eigen::VectorXd com_ang_vel_t1;
148 Eigen::Quaternion<double> com_ori_t1;
149 Eigen::VectorXd des_fff_t1;
150 Eigen::VectorXd cnt_value_t1;
151 Eigen::VectorXd end_eff_pos_12d_t1;
152 Eigen::VectorXd xd_t1;
154 Eigen::MatrixXd lin_A_ht;
155 Eigen::MatrixXd lin_B_ht;
Definition: reactive_lqr_controller.hpp:34
Definition: ComImpedanceController.hpp:31