1#ifndef WBC_CONTROLLERS_CARTPOSPDCONTROLLER_HPP
2#define WBC_CONTROLLERS_CARTPOSPDCONTROLLER_HPP
41class CartesianPosPDController {
44 types::Twist control_out_vel;
45 types::SpatialAcceleration control_out_acc;
47 Eigen::VectorXd u_max;
48 Eigen::VectorXd p_gain;
49 Eigen::VectorXd i_gain;
50 Eigen::VectorXd d_gain;
51 Eigen::VectorXd ff_gain;
52 Eigen::VectorXd windup_term;
53 Eigen::VectorXd error_accumulated;
59 types::Twist pose_diff;
63 CartesianPosPDController();
65 const types::Twist& update(
const types::Pose& ref_pose,
66 const types::Twist& ref_twist,
67 const types::Pose& pose);
69 const types::SpatialAcceleration& update(
const types::Pose& ref_pose,
70 const types::Twist& ref_twist,
71 const types::SpatialAcceleration& ref_acc,
72 const types::Pose& pose,
73 const types::Twist& twist);
75 void setPGain(
const Eigen::VectorXd &gain);
77 const Eigen::VectorXd& pGain(){
return p_gain;}
79 void setIGain(
const Eigen::VectorXd &gain);
81 const Eigen::VectorXd& iGain(){
return i_gain;}
83 void setDGain(
const Eigen::VectorXd &gain);
85 const Eigen::VectorXd& dGain(){
return d_gain;}
87 void setFFGain(
const Eigen::VectorXd &gain);
89 const Eigen::VectorXd& ffGain(){
return ff_gain;}
91 void setMaxCtrlOutput(
const Eigen::VectorXd &max_ctrl_out);
93 const Eigen::VectorXd& maxCtrlOutput(){
return u_max;}
95 void setWindup(
const Eigen::VectorXd &windup_terms);
97 const Eigen::VectorXd& windup(){
return windup_term;}
107 void applySaturation(
const Eigen::VectorXd& in,
const Eigen::VectorXd& max, Eigen::VectorXd &out);
109using CartesianPosPDControllerPtr = std::shared_ptr<CartesianPosPDController>;
Definition ContactsAccelerationConstraint.cpp:3