aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/examples/jetdrive_control/jetdrive_control_main.cpp35
-rw-r--r--src/examples/jetdrive_control/jetdrive_control_params.c27
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);