diff options
author | Diogo Machado <dmachado@lsa.isep.ipp.pt> | 2014-02-28 16:24:15 +0000 |
---|---|---|
committer | Diogo Machado <dmachado@lsa.isep.ipp.pt> | 2014-02-28 16:24:15 +0000 |
commit | 0789189c0588ebebd24a523f9639411be89c6a9b (patch) | |
tree | 13110760dd6cde12235d6d1e9d9ca66e3ff70fe8 /src | |
parent | be4af0ab3bd1b4313ba23cbe4c7e2702d56d3644 (diff) | |
download | px4-firmware-0789189c0588ebebd24a523f9639411be89c6a9b.tar.gz px4-firmware-0789189c0588ebebd24a523f9639411be89c6a9b.tar.bz2 px4-firmware-0789189c0588ebebd24a523f9639411be89c6a9b.zip |
- Added JC params to jetdrive control example app.
- fixed offboard control mode rates
Diffstat (limited to 'src')
-rw-r--r-- | src/examples/jetdrive_control/jetdrive_control_main.cpp | 35 | ||||
-rw-r--r-- | src/examples/jetdrive_control/jetdrive_control_params.c | 27 |
2 files changed, 36 insertions, 26 deletions
diff --git a/src/examples/jetdrive_control/jetdrive_control_main.cpp b/src/examples/jetdrive_control/jetdrive_control_main.cpp index 01435f572..bb72f14e0 100644 --- a/src/examples/jetdrive_control/jetdrive_control_main.cpp +++ b/src/examples/jetdrive_control/jetdrive_control_main.cpp @@ -95,19 +95,19 @@ JetdriveControl::JetdriveControl() : I.identity(); - _params_handles.roll_p = param_find("MC_ROLL_P"); - _params_handles.roll_rate_p = param_find("MC_ROLLRATE_P"); - _params_handles.roll_rate_i = param_find("MC_ROLLRATE_I"); - _params_handles.roll_rate_d = param_find("MC_ROLLRATE_D"); - _params_handles.pitch_p = param_find("MC_PITCH_P"); - _params_handles.pitch_rate_p = param_find("MC_PITCHRATE_P"); - _params_handles.pitch_rate_i = param_find("MC_PITCHRATE_I"); - _params_handles.pitch_rate_d = param_find("MC_PITCHRATE_D"); - _params_handles.yaw_p = param_find("MC_YAW_P"); - _params_handles.yaw_rate_p = param_find("MC_YAWRATE_P"); - _params_handles.yaw_rate_i = param_find("MC_YAWRATE_I"); - _params_handles.yaw_rate_d = param_find("MC_YAWRATE_D"); - _params_handles.yaw_ff = param_find("MC_YAW_FF"); + _params_handles.roll_p = param_find("JC_ROLL_P"); + _params_handles.roll_rate_p = param_find("JC_ROLLRATE_P"); + _params_handles.roll_rate_i = param_find("JC_ROLLRATE_I"); + _params_handles.roll_rate_d = param_find("JC_ROLLRATE_D"); + _params_handles.pitch_p = param_find("JC_PITCH_P"); + _params_handles.pitch_rate_p = param_find("JC_PITCHRATE_P"); + _params_handles.pitch_rate_i = param_find("JC_PITCHRATE_I"); + _params_handles.pitch_rate_d = param_find("JC_PITCHRATE_D"); + _params_handles.yaw_p = param_find("JC_YAW_P"); + _params_handles.yaw_rate_p = param_find("JC_YAWRATE_P"); + _params_handles.yaw_rate_i = param_find("JC_YAWRATE_I"); + _params_handles.yaw_rate_d = param_find("JC_YAWRATE_D"); + _params_handles.yaw_ff = param_find("JC_YAW_FF"); _params_handles.rc_scale_yaw = param_find("RC_SCALE_YAW"); @@ -463,6 +463,11 @@ JetdriveControl::control_attitude_rates(float dt) /* angular rates error */ math::Vector<3> rates_err = _rates_sp - rates; + + // _att_control will be loaded to controls + // + // _att_control = (JC_XXXRATE_P * rates_err) + (JC_XXXRATE_D * (_rates_prev - rate) / dt) + _rates_int; + _att_control = _params.rate_p.emult(rates_err) + _params.rate_d.emult(_rates_prev - rates) / dt + _rates_int; _rates_prev = rates; @@ -597,6 +602,10 @@ JetdriveControl::task_main() /* attitude controller disabled */ // TODO poll 'attitude_rates_setpoint' topic vehicle_rates_setpoint_poll(); + _rates_sp(0) = _v_rates_sp.roll; + _rates_sp(1) = _v_rates_sp.pitch; + _rates_sp(2) = _v_rates_sp.yaw; + _thrust_sp = _v_rates_sp.thrust; // _rates_sp.zero(); // _thrust_sp = 0.0f; } diff --git a/src/examples/jetdrive_control/jetdrive_control_params.c b/src/examples/jetdrive_control/jetdrive_control_params.c index 27a45b6bb..14831ecf7 100644 --- a/src/examples/jetdrive_control/jetdrive_control_params.c +++ b/src/examples/jetdrive_control/jetdrive_control_params.c @@ -41,16 +41,17 @@ #include <systemlib/param/param.h> -PARAM_DEFINE_FLOAT(MC_ROLL_P, 6.0f); -PARAM_DEFINE_FLOAT(MC_ROLLRATE_P, 0.1f); -PARAM_DEFINE_FLOAT(MC_ROLLRATE_I, 0.0f); -PARAM_DEFINE_FLOAT(MC_ROLLRATE_D, 0.002f); -PARAM_DEFINE_FLOAT(MC_PITCH_P, 6.0f); -PARAM_DEFINE_FLOAT(MC_PITCHRATE_P, 0.1f); -PARAM_DEFINE_FLOAT(MC_PITCHRATE_I, 0.0f); -PARAM_DEFINE_FLOAT(MC_PITCHRATE_D, 0.002f); -PARAM_DEFINE_FLOAT(MC_YAW_P, 2.0f); -PARAM_DEFINE_FLOAT(MC_YAWRATE_P, 0.3f); -PARAM_DEFINE_FLOAT(MC_YAWRATE_I, 0.0f); -PARAM_DEFINE_FLOAT(MC_YAWRATE_D, 0.0f); -PARAM_DEFINE_FLOAT(MC_YAW_FF, 0.5f); + +PARAM_DEFINE_FLOAT(JC_ROLL_P, 6.0f); +PARAM_DEFINE_FLOAT(JC_ROLLRATE_P, 0.1f); +PARAM_DEFINE_FLOAT(JC_ROLLRATE_I, 0.0f); +PARAM_DEFINE_FLOAT(JC_ROLLRATE_D, 0.002f); +PARAM_DEFINE_FLOAT(JC_PITCH_P, 6.0f); +PARAM_DEFINE_FLOAT(JC_PITCHRATE_P, 0.1f); +PARAM_DEFINE_FLOAT(JC_PITCHRATE_I, 0.0f); +PARAM_DEFINE_FLOAT(JC_PITCHRATE_D, 0.002f); +PARAM_DEFINE_FLOAT(JC_YAW_P, 2.0f); +PARAM_DEFINE_FLOAT(JC_YAWRATE_P, 0.3f); +PARAM_DEFINE_FLOAT(JC_YAWRATE_I, 0.0f); +PARAM_DEFINE_FLOAT(JC_YAWRATE_D, 0.0f); +PARAM_DEFINE_FLOAT(JC_YAW_FF, 0.5f); |