diff options
author | Thomas Gubler <thomasgubler@gmail.com> | 2013-10-15 22:00:56 +0200 |
---|---|---|
committer | Thomas Gubler <thomasgubler@gmail.com> | 2013-10-24 17:40:03 +0200 |
commit | b21b9078e2d719bfd7af9580ac3b9b5957ef1d57 (patch) | |
tree | 32c0bffeecc3621453bc51f2bc0d2a3b007b612f /src/lib/ecl/attitude_fw/ecl_pitch_controller.h | |
parent | 17e0c5053ece4cbf53e659b5f60d640beaab7d50 (diff) | |
download | px4-firmware-b21b9078e2d719bfd7af9580ac3b9b5957ef1d57.tar.gz px4-firmware-b21b9078e2d719bfd7af9580ac3b9b5957ef1d57.tar.bz2 px4-firmware-b21b9078e2d719bfd7af9580ac3b9b5957ef1d57.zip |
wip, fw attitude ctrl: split into attitude and rate, compiles, untested
Diffstat (limited to 'src/lib/ecl/attitude_fw/ecl_pitch_controller.h')
-rw-r--r-- | src/lib/ecl/attitude_fw/ecl_pitch_controller.h | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/lib/ecl/attitude_fw/ecl_pitch_controller.h b/src/lib/ecl/attitude_fw/ecl_pitch_controller.h index 41aa48677..ef6129d02 100644 --- a/src/lib/ecl/attitude_fw/ecl_pitch_controller.h +++ b/src/lib/ecl/attitude_fw/ecl_pitch_controller.h @@ -36,6 +36,7 @@ * Definition of a simple orthogonal pitch PID controller. * * @author Lorenz Meier <lm@inf.ethz.ch> + * @author Thomas Gubler <thomasgubler@gmail.com> * * Acknowledgements: * @@ -51,13 +52,18 @@ #include <stdbool.h> #include <stdint.h> -class __EXPORT ECL_PitchController +class __EXPORT ECL_PitchController //XXX: create controller superclass { public: ECL_PitchController(); - float control(float pitch_setpoint, float pitch, float pitch_rate, float roll, float yaw_rate, float scaler = 1.0f, - bool lock_integrator = false, float airspeed_min = 0.0f, float airspeed_max = 0.0f, float airspeed = (0.0f / 0.0f)); + float control_attitude(float pitch_setpoint, float roll, float pitch, float airspeed); + + + float control_bodyrate(float roll, float pitch, + float pitch_rate, float yaw_rate, + float yaw_rate_setpoint, + float airspeed_min = 0.0f, float airspeed_max = 0.0f, float airspeed = (0.0f / 0.0f), float scaler = 1.0f, bool lock_integrator = false); void reset_integrator(); @@ -94,6 +100,10 @@ public: return _rate_setpoint; } + float get_desired_bodyrate() { + return _bodyrate_setpoint; + } + private: uint64_t _last_run; @@ -109,6 +119,7 @@ private: float _integrator; float _rate_error; float _rate_setpoint; + float _bodyrate_setpoint; float _max_deflection_rad; }; |