rm_controllers
Loading...
Searching...
No Matches
VMC.h
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4
6{
7struct LegPos
8{
9 double L0{ 0.0 };
10 double theta{ 0.0 };
11};
12
13struct LegSpd
14{
15 double dL0{ 0.0 };
16 double dTheta{ 0.0 };
17};
18
20{
21 double F{ 0.0 };
22 double Tp{ 0.0 };
23};
24
25class VMC
26{
27public:
28 virtual ~VMC() = default;
29
30 virtual void leg_pos(double phi1, double phi4) = 0;
31 virtual void calc_jacobian(double phi1, double phi4) = 0;
32
33 void leg_spd(double dphi1, double dphi4);
34 void leg_conv(double F, double Tp, double T[2]) const;
35 void leg_conv_t(double T1, double T2);
36
37 double getL1() const;
38 double getL2() const;
39 double getL3() const;
40 double getL4() const;
41 double getL5() const;
42 const LegPos& getPos() const;
43 const LegSpd& getSpd() const;
44 const LegForce& getForceReal() const;
45
46protected:
47 VMC(double l1, double l2, double l3, double l4, double l5);
48
49 void clearJacobian();
50
51 double J_[2][2]{};
53
54 const double l1_;
55 const double l2_;
56 const double l3_;
57 const double l4_;
58 const double l5_;
59
60private:
61 LegSpd spd_;
62 LegForce force_real_;
63 double filtered_dL0_{ 0.0 };
64 double filtered_dTheta_{ 0.0 };
65 bool speed_filter_initialized_{ false };
66};
67
68using VMCPtr = std::shared_ptr<VMC>;
69} // namespace rm_chassis_controllers
Definition VMC.h:26
const LegForce & getForceReal() const
Definition VMC.cpp:92
void leg_spd(double dphi1, double dphi4)
Definition VMC.cpp:11
const double l2_
Definition VMC.h:55
double getL2() const
Definition VMC.cpp:62
void leg_conv_t(double T1, double T2)
Definition VMC.cpp:38
const double l1_
Definition VMC.h:54
double getL3() const
Definition VMC.cpp:67
LegPos pos_
Definition VMC.h:52
double getL5() const
Definition VMC.cpp:77
const LegPos & getPos() const
Definition VMC.cpp:82
const double l4_
Definition VMC.h:57
double getL1() const
Definition VMC.cpp:57
virtual void calc_jacobian(double phi1, double phi4)=0
const LegSpd & getSpd() const
Definition VMC.cpp:87
double J_[2][2]
Definition VMC.h:51
virtual ~VMC()=default
double getL4() const
Definition VMC.cpp:72
const double l5_
Definition VMC.h:58
void clearJacobian()
Definition VMC.cpp:51
const double l3_
Definition VMC.h:56
VMC(double l1, double l2, double l3, double l4, double l5)
Definition VMC.cpp:7
void leg_conv(double F, double Tp, double T[2]) const
Definition VMC.cpp:32
virtual void leg_pos(double phi1, double phi4)=0
Definition active_suspension.h:16
std::shared_ptr< VMC > VMCPtr
Definition VMC.h:68
double Tp
Definition VMC.h:22
double F
Definition VMC.h:21
double L0
Definition VMC.h:9
double theta
Definition VMC.h:10
double dTheta
Definition VMC.h:16
double dL0
Definition VMC.h:15