16#if defined(ARDUINO_TEENSY36) || defined(ARDUINO_TEENSY41)
50 virtual ~_Controller(){};
58 virtual float calc_motor_cmd() = 0;
63 void reset_integral();
75 float _t_helper_context;
76 float _t_helper_delta_t;
96 float _pid(
float cmd,
float measurement,
float p_gain,
float i_gain,
float d_gain);
99 std::pair<float, float> measurements;
100 std::pair<float, float> outputs;
101 std::pair<float, float> phi;
109 float _cf_mfac(
float reference,
float current_measurement);
112class PropulsiveAssistive :
public _Controller
116 ~PropulsiveAssistive(){};
118 float calc_motor_cmd();
120 void _update_reference_angles(
LegData* leg_data,
ControllerData* controller_data,
float percent_grf);
133class ProportionalJointMoment :
public _Controller
137 ~ProportionalJointMoment(){};
139 float calc_motor_cmd();
141 std::pair<float, float> _stance_thresholds_left, _stance_thresholds_right;
143 float _inclination_scaling{1.0f};
154class ZeroTorque :
public _Controller
160 float calc_motor_cmd();
170class Stasis :
public _Controller
176 float calc_motor_cmd();
190class HeelToe:
public _Controller
196 float calc_motor_cmd();
201 float prev_percent_gait;
211 float previous_state_4_duration;
213 float state_4_start_cmd;
216 float swing_duration;
244class ExtensionAngle:
public _Controller
250 float calc_motor_cmd();
257 void _update_max_angle(
float angle);
264 void _update_state(
float angle);
269 void _reset_angles();
293class BangBang:
public _Controller
299 float calc_motor_cmd();
306 void _update_max_angle(
float angle);
313 void _update_state(
float angle);
318 void _reset_angles();
339class LateStance :
public _Controller
345 float calc_motor_cmd();
347 void _update_max_angle(
float angle);
348 void _update_state(
float angle);
349 void _reset_angles();
373class GaitPhase :
public _Controller
379 float calc_motor_cmd();
395class Parabolic :
public _Controller
401 float calc_motor_cmd();
419class ZhangCollins:
public _Controller
425 float calc_motor_cmd();
427 float _spline_generation(
float node1,
float node2,
float node3,
float torque_magnitude,
float percent_gait);
452class FranksCollinsHip:
public _Controller
456 ~FranksCollinsHip(){};
458 float calc_motor_cmd();
460 float _spline_generation(
float node1,
float node2,
float node3,
float torque_magnitude,
float shifted_percent_gait);
462 float last_percent_gait;
463 float last_start_time;
501class Sine:
public _Controller
507 float calc_motor_cmd();
523class Perturbation :
public _Controller
529 float calc_motor_cmd();
532class ConstantTorque :
public _Controller
536 ~ConstantTorque() {};
538 float calc_motor_cmd();
540 float current_torque;
544class ElbowMinMax :
public _Controller
550 float calc_motor_cmd();
554class PtbGeneral :
public _Controller
560 float calc_motor_cmd();
563class CalibrManager :
public _Controller
569 float calc_motor_cmd();
Declares a class used to store data for the Exo to access.
Declares the functions needed and defines mapping between the INI keys and the exo components.
class to store information related to controllers.
Definition ControllerData.h:301
Class to store all the data related to the exo.
Definition ExoData.h:38
class to store information related to joint.
Definition JointData.h:33
class to store information related to the leg.
Definition LegData.h:30
Definition Time_Helper.h:33
joint_id
Definition ParseIni.h:106
float degrees_to_radians(float angle_deg)
converts from degrees to radians
Definition Utilities.cpp:88