Cheetah Software  1.0
LegController.h
Go to the documentation of this file.
1 
11 #ifndef PROJECT_LEGCONTROLLER_H
12 #define PROJECT_LEGCONTROLLER_H
13 
14 #include <eigen3/Eigen/Dense>
15 #include "leg_control_command_lcmt.hpp"
16 #include "leg_control_data_lcmt.hpp"
17 #include "Dynamics/Quadruped.h"
20 #include "cppTypes.h"
21 
22 template <typename T>
24  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
26 
27  void zero();
28 
31 };
32 
33 template <typename T>
35  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
37 
38  void setQuadruped(Quadruped<T>& quad) { quadruped = &quad; }
39 
40  void zero();
41 
42  Vec3<T> q, qd, p, v;
46 };
47 
48 template <typename T>
50  public:
51  LegController(Quadruped<T>& quad) : _quadruped(quad) {
52  for (auto& data : datas) data.setQuadruped(_quadruped);
53  }
54 
55  void zeroCommand();
56  void edampCommand(RobotType robot, T gain);
57  void updateData(const SpiData* spiData);
58  void updateData(const TiBoardData* tiBoardData);
59  void updateCommand(SpiCommand* spiCommand);
60  void updateCommand(TiBoardCommand* tiBoardCommand);
61  void setEnabled(bool enabled) { _legsEnabled = enabled; };
62  void setLcm(leg_control_data_lcmt* data, leg_control_command_lcmt* command);
63 
67  void setMaxTorqueCheetah3(T tau) { _maxTorque = tau; }
68 
72  bool _legsEnabled = false;
73  T _maxTorque = 0;
74 };
75 
76 template <typename T>
78  Vec3<T>* p, int leg);
79 
80 #endif // PROJECT_LEGCONTROLLER_H
void computeLegJacobianAndPosition(Quadruped< T > &quad, Vec3< T > &q, Mat3< T > *J, Vec3< T > *p, int leg)
Quadruped< T > * quadruped
Definition: LegController.h:45
void setQuadruped(Quadruped< T > &quad)
Definition: LegController.h:38
EIGEN_MAKE_ALIGNED_OPERATOR_NEW LegControllerData()
Definition: LegController.h:36
typename Eigen::Matrix< T, 3, 3 > Mat3
Definition: cppTypes.h:54
Vec3< T > forceFeedForward
Definition: LegController.h:29
Data structure containing parameters for quadruped robot.
Vec3< T > tauEstimate
Definition: LegController.h:44
typename Eigen::Matrix< T, 3, 1 > Vec3
Definition: cppTypes.h:26
LegController(Quadruped< T > &quad)
Definition: LegController.h:51
EIGEN_MAKE_ALIGNED_OPERATOR_NEW LegControllerCommand()
Definition: LegController.h:25
Vec3< T > tauFeedForward
Definition: LegController.h:29
void setMaxTorqueCheetah3(T tau)
Definition: LegController.h:67
Spine Board Code, used to simulate the SpineBoard.
Quadruped< T > & _quadruped
Definition: LegController.h:71
void setEnabled(bool enabled)
Definition: LegController.h:61
RobotType
Definition: cppTypes.h:120