rm_controllers
Loading...
Searching...
No Matches
recover.h
Go to the documentation of this file.
1//
2// Created by guanlin on 25-9-3.
3//
4
5#pragma once
6
7#include <hardware_interface/joint_command_interface.h>
8#include <control_toolbox/pid.h>
9
12
14{
15class Recover : public ModeBase
16{
17 typedef enum
18 {
19 ForwardSlip,
20 BackwardSlip,
21 } RecoveryChassisState;
22
23 typedef enum
24 {
25 INITIALIZED,
26 START,
27 MOVING,
28 MOVING_TOGETHER,
29 STOP,
30 } LegRecoveryCalibratedState;
31
32 typedef enum
33 {
34 NotReady,
35 Ready
36 } LegRecoveryState;
37
38public:
39 Recover(BipedalControllerInterface* controller_, const std::vector<hardware_interface::JointHandle*>& joint_handles,
40 const std::vector<control_toolbox::Pid*>& pid_legs, const std::vector<control_toolbox::Pid*>& pid_thetas,
41 control_toolbox::Pid* pid_theta_diff);
42 void execute(const ros::Time& time, const ros::Duration& period) override;
43 inline void detectChassisStateToRecover();
44 inline void detectLegRecoveryState(LegRecoveryState& recovery_state, const double& leg_pos);
45 const char* name() const override
46 {
47 return "RECOVER";
48 }
49
50private:
51 std::vector<hardware_interface::JointHandle*> joint_handles_;
52 std::vector<control_toolbox::Pid*> pid_legs_, pid_thetas_;
53 control_toolbox::Pid* pid_theta_diff_;
54 double leg_recovery_velocity_{ 5.0 }, threshold_{ 0.05 }, leg_theta_diff_{ 0.0 }, desired_leg_length_{ 0.36 };
55 double left_leg_recovery_feed_forward{ 10.0 }, right_leg_recovery_feed_forward{ 10.0 };
56 const double leg_recovery_velocity_const_{ 5.0 };
57 LegRecoveryState left_recovery_leg, right_recovery_leg;
58 RecoveryChassisState recovery_chassis_state_{ ForwardSlip };
59 bool detectd_flag{ false };
60 ChassisState chassis_state_;
61};
62} // namespace rm_chassis_controllers
Definition controller_interface.h:13
Definition mode_base.h:20
Definition recover.h:16
void execute(const ros::Time &time, const ros::Duration &period) override
Definition recover.cpp:22
const char * name() const override
Definition recover.h:45
void detectLegRecoveryState(LegRecoveryState &recovery_state, const double &leg_pos)
Definition recover.cpp:157
void detectChassisStateToRecover()
Definition recover.cpp:142
Recover(BipedalControllerInterface *controller_, const std::vector< hardware_interface::JointHandle * > &joint_handles, const std::vector< control_toolbox::Pid * > &pid_legs, const std::vector< control_toolbox::Pid * > &pid_thetas, control_toolbox::Pid *pid_theta_diff)
Definition recover.cpp:10
Definition active_suspension.h:16