Fix problems with master after stabilization and chibi merges (#3280)

Co-authored-by: Freek van Tienen <freek.v.tienen@gmail.com>
This commit is contained in:
Christophe De Wagter
2024-05-30 09:25:58 +02:00
committed by GitHub
parent 41af453cd5
commit 4c97648080
42 changed files with 94 additions and 52 deletions
@@ -31,7 +31,7 @@
#include "firmwares/rotorcraft/stabilization/stabilization_attitude.h"
#include "firmwares/rotorcraft/stabilization/stabilization_attitude_common_float.h"
extern stabilization_attitude_euler_float_init(void);
extern void stabilization_attitude_euler_float_init(void);
extern struct FloatAttitudeGains stabilization_gains;
extern struct FloatEulers stabilization_att_sum_err;
@@ -25,7 +25,7 @@
#include "firmwares/rotorcraft/stabilization/stabilization_attitude.h"
#include "firmwares/rotorcraft/stabilization/stabilization_attitude_common_int.h"
extern stabilization_attitude_euler_int_init(void);
extern void stabilization_attitude_euler_int_init(void);
extern struct Int32Eulers stabilization_att_sum_err;
@@ -146,7 +146,7 @@ void stabilization_rate_run(bool in_flight, struct StabilizationSetpoint *rate_s
cmd[COMMAND_ROLL] = stabilization_rate_fb_cmd.p;
cmd[COMMAND_PITCH] = stabilization_rate_fb_cmd.q;
cmd[COMMAND_YAW] = stabilization_rate_fb_cmd.r;
cmd[COMMAND_THRUST] = th_sp_to_thrust_i(th, 0, THRUST_AXIS_Z);
cmd[COMMAND_THRUST] = th_sp_to_thrust_i(thrust, 0, THRUST_AXIS_Z);
/* bound the result */
BoundAbs(cmd[COMMAND_ROLL], MAX_PPRZ);
@@ -87,14 +87,20 @@ static inline void main_init(void)
static inline void main_periodic(void)
{
{
// generated macro from airframe file
AllActuatorsCommit();
// Downlink the actuators raw driver values
int16_t v[ACTUATORS_NB] = {0};
for (int i = 0; i < ACTUATORS_NB; i++) {
v[i] = actuators[i].driver_val;
}
LED_PERIODIC();
RunOnceEvery(100, {DOWNLINK_SEND_ALIVE(DefaultChannel, DefaultDevice, 16, MD5SUM);});
RunOnceEvery(300, DOWNLINK_SEND_ACTUATORS(DefaultChannel, DefaultDevice, ACTUATORS_NB, actuators));
RunOnceEvery(300, DOWNLINK_SEND_ACTUATORS(DefaultChannel, DefaultDevice, ACTUATORS_NB, v));
modules_periodic_task();
}
@@ -43,8 +43,6 @@ extern bool force_forward;
#endif
extern float nav_max_deceleration_sp;
extern void nav_rotorcraft_hybrid_init(void);
#endif
+8 -1
View File
@@ -98,11 +98,18 @@ static inline void main_periodic(void)
SetActuatorsFromCommands(commands, 0);
// Downlink the actuators raw driver values
int16_t v[ACTUATORS_NB] = {0};
for (int i = 0; i < ACTUATORS_NB; i++) {
v[i] = actuators[i].driver_val;
}
LED_PERIODIC();
RunOnceEvery(512, {DOWNLINK_SEND_ALIVE(DefaultChannel, DefaultDevice, 16, MD5SUM);});
RunOnceEvery(100, {DOWNLINK_SEND_RC(DefaultChannel, DefaultDevice, RADIO_CONTROL_NB_CHANNEL, radio_control.values);});
RunOnceEvery(101, {DOWNLINK_SEND_COMMANDS(DefaultChannel, DefaultDevice, COMMANDS_NB, commands);});
RunOnceEvery(102, {DOWNLINK_SEND_ACTUATORS(DefaultChannel, DefaultDevice, ACTUATORS_NB, actuators);});
RunOnceEvery(102, {DOWNLINK_SEND_ACTUATORS(DefaultChannel, DefaultDevice, ACTUATORS_NB, v);});
}
+2 -2
View File
@@ -272,6 +272,8 @@ let print_actuators_idx = fun out ->
Hashtbl.iter (fun s (d, i) ->
(* Set servo macro *)
fprintf out "#define Set_%s_Servo(actuator_value_pprz) { \\\n" s;
fprintf out " int32_t servo_value;\\\n";
fprintf out " int32_t command_value;\\\n\\\n";
fprintf out " actuators[SERVO_%s_IDX].pprz_val = ClipAbs( actuator_value_pprz, MAX_PPRZ); \\\n" s;
fprintf out " command_value = actuator_value_pprz * (actuator_value_pprz>0 ? SERVO_%s_TRAVEL_UP_NUM : SERVO_%s_TRAVEL_DOWN_NUM); \\\n" s s;
fprintf out " command_value /= actuator_value_pprz>0 ? SERVO_%s_TRAVEL_UP_DEN : SERVO_%s_TRAVEL_DOWN_DEN; \\\n" s s;
@@ -434,8 +436,6 @@ let rec parse_section = fun out ac_id s ->
fprintf out "}\n\n";
(* print actuators from commands macro *)
fprintf out "#define SetActuatorsFromCommands(values, AP_MODE) { \\\n";
fprintf out " int32_t servo_value;\\\n";
fprintf out " int32_t command_value;\\\n\\\n";
fprintf out " int32_t actuator_value_pprz;\\\n\\\n";
List.iter (parse_command_laws out) (Xml.children s);
fprintf out " AllActuatorsCommit(); \\\n";