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 x;
51 Eigen::VectorXd v;
52 Eigen::VectorXd rx;
53 Eigen::VectorXd rv;
54 Eigen::VectorXd ra;
55 types::Twist pose_diff;
56
57public:
59 CartesianPosPDController();
61 const types::Twist& update(const types::Pose& ref_pose,
62 const types::Twist& ref_twist,
63 const types::Pose& pose);
65 const types::SpatialAcceleration& update(const types::Pose& ref_pose,
66 const types::Twist& ref_twist,
67 const types::SpatialAcceleration& ref_acc,
68 const types::Pose& pose,
69 const types::Twist& twist);
71 void setPGain(const Eigen::VectorXd &gain);
73 const Eigen::VectorXd& pGain(){return p_gain;}
75 void setDGain(const Eigen::VectorXd &gain);
77 const Eigen::VectorXd& dGain(){return d_gain;}
79 void setMaxCtrlOutput(const Eigen::VectorXd &max_ctrl_out);
81 const Eigen::VectorXd& maxCtrlOutput(){return u_max;}
90 void applySaturation(const Eigen::VectorXd& in, const Eigen::VectorXd& max, Eigen::VectorXd &out);
91};
92using CartesianPosPDControllerPtr = std::shared_ptr<CartesianPosPDController>;
93
94}
95#endif
Definition ContactsAccelerationConstraint.cpp:3