wbc
CartesianPosPDController.hpp
Go to the documentation of this file.
1#ifndef WBC_CONTROLLERS_CARTPOSPDCONTROLLER_HPP
2#define WBC_CONTROLLERS_CARTPOSPDCONTROLLER_HPP
3
4#include "../types/Pose.hpp"
5#include "../types/Twist.hpp"
7#include <memory>
8
9namespace wbc {
10
41class CartesianPosPDController {
42protected:
43 uint dim_controller;
44 types::Twist control_out_vel;
45 types::SpatialAcceleration control_out_acc;
46 Eigen::VectorXd u;
47 Eigen::VectorXd u_max;
48 Eigen::VectorXd p_gain;
49 Eigen::VectorXd d_gain;
50 Eigen::VectorXd ff_gain;
51 Eigen::VectorXd x;
52 Eigen::VectorXd v;
53 Eigen::VectorXd rx;
54 Eigen::VectorXd rv;
55 Eigen::VectorXd ra;
56 types::Twist pose_diff;
57
58public:
60 CartesianPosPDController();
62 const types::Twist& update(const types::Pose& ref_pose,
63 const types::Twist& ref_twist,
64 const types::Pose& pose);
66 const types::SpatialAcceleration& update(const types::Pose& ref_pose,
67 const types::Twist& ref_twist,
68 const types::SpatialAcceleration& ref_acc,
69 const types::Pose& pose,
70 const types::Twist& twist);
72 void setPGain(const Eigen::VectorXd &gain);
74 const Eigen::VectorXd& pGain(){return p_gain;}
76 void setDGain(const Eigen::VectorXd &gain);
78 const Eigen::VectorXd& dGain(){return d_gain;}
80 void setFFGain(const Eigen::VectorXd &gain);
82 const Eigen::VectorXd& ffGain(){return ff_gain;}
84 void setMaxCtrlOutput(const Eigen::VectorXd &max_ctrl_out);
86 const Eigen::VectorXd& maxCtrlOutput(){return u_max;}
95 void applySaturation(const Eigen::VectorXd& in, const Eigen::VectorXd& max, Eigen::VectorXd &out);
96};
97using CartesianPosPDControllerPtr = std::shared_ptr<CartesianPosPDController>;
98
99}
100#endif
Definition ContactsAccelerationConstraint.cpp:3