diff options
author | Thomas Gubler <thomasgubler@gmail.com> | 2013-10-20 21:51:45 +0200 |
---|---|---|
committer | Thomas Gubler <thomasgubler@gmail.com> | 2013-10-24 10:29:17 +0200 |
commit | 1cb73687f7acd4ae3263c40940afe057b1b7d368 (patch) | |
tree | 376708ac0dc7dcbd6bde18b647366e9b010c76b7 /src/lib/ecl | |
parent | cc324f2624cc3a4347d736fd5634672d5a2716e9 (diff) | |
download | px4-firmware-1cb73687f7acd4ae3263c40940afe057b1b7d368.tar.gz px4-firmware-1cb73687f7acd4ae3263c40940afe057b1b7d368.tar.bz2 px4-firmware-1cb73687f7acd4ae3263c40940afe057b1b7d368.zip |
added parameter for maximal roll angle
Diffstat (limited to 'src/lib/ecl')
-rw-r--r-- | src/lib/ecl/l1/ecl_l1_pos_controller.cpp | 2 | ||||
-rw-r--r-- | src/lib/ecl/l1/ecl_l1_pos_controller.h | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/lib/ecl/l1/ecl_l1_pos_controller.cpp b/src/lib/ecl/l1/ecl_l1_pos_controller.cpp index daf136d49..196ded26c 100644 --- a/src/lib/ecl/l1/ecl_l1_pos_controller.cpp +++ b/src/lib/ecl/l1/ecl_l1_pos_controller.cpp @@ -43,7 +43,7 @@ float ECL_L1_Pos_Controller::nav_roll() { float ret = atanf(_lateral_accel * 1.0f / CONSTANTS_ONE_G); - ret = math::constrain(ret, (-M_PI_F) / 2.0f, M_PI_F / 2.0f); + ret = math::constrain(ret, -_roll_lim_rad, _roll_lim_rad); return ret; } diff --git a/src/lib/ecl/l1/ecl_l1_pos_controller.h b/src/lib/ecl/l1/ecl_l1_pos_controller.h index 5a17346cb..7a3c42a92 100644 --- a/src/lib/ecl/l1/ecl_l1_pos_controller.h +++ b/src/lib/ecl/l1/ecl_l1_pos_controller.h @@ -222,6 +222,15 @@ public: _K_L1 = 4.0f * _L1_damping * _L1_damping; } + + /** + * Set the maximum roll angle output in radians + * + */ + void set_l1_roll_limit(float roll_lim_rad) { + _roll_lim_rad = roll_lim_rad; + } + private: float _lateral_accel; ///< Lateral acceleration setpoint in m/s^2 @@ -238,6 +247,8 @@ private: float _K_L1; ///< L1 control gain for _L1_damping float _heading_omega; ///< Normalized frequency + float _roll_lim_rad; ///<maximum roll angle + /** * Convert a 2D vector from WGS84 to planar coordinates. * |