diff --git a/conf/airframes/tudelft/rot_wing_v3d.xml b/conf/airframes/tudelft/rot_wing_v3d.xml index 8104e725df..235fe332c3 100644 --- a/conf/airframes/tudelft/rot_wing_v3d.xml +++ b/conf/airframes/tudelft/rot_wing_v3d.xml @@ -233,9 +233,6 @@ - - - diff --git a/sw/airborne/firmwares/rotorcraft/autopilot_firmware.c b/sw/airborne/firmwares/rotorcraft/autopilot_firmware.c index 422a67d7bc..87bd7e7c09 100644 --- a/sw/airborne/firmwares/rotorcraft/autopilot_firmware.c +++ b/sw/airborne/firmwares/rotorcraft/autopilot_firmware.c @@ -225,6 +225,7 @@ static void send_rotorcraft_rc(struct transport_tx *trans, struct link_device *d } #endif +#if defined(COMMAND_ROLL) && defined(COMMAND_PITCH) && defined(COMMAND_YAW) static void send_rotorcraft_cmd(struct transport_tx *trans, struct link_device *dev) { pprz_msg_send_ROTORCRAFT_CMD(trans, dev, AC_ID, @@ -233,6 +234,9 @@ static void send_rotorcraft_cmd(struct transport_tx *trans, struct link_device * &stabilization_cmd[COMMAND_YAW], &stabilization_cmd[COMMAND_THRUST]); } +#else +static void send_rotorcraft_cmd(struct transport_tx *trans UNUSED, struct link_device *dev UNUSED) {} +#endif void autopilot_firmware_init(void) diff --git a/sw/airborne/firmwares/rotorcraft/autopilot_utils.c b/sw/airborne/firmwares/rotorcraft/autopilot_utils.c index c7f53b8cd1..457af67cc5 100644 --- a/sw/airborne/firmwares/rotorcraft/autopilot_utils.c +++ b/sw/airborne/firmwares/rotorcraft/autopilot_utils.c @@ -121,7 +121,7 @@ uint8_t ap_mode_of_two_switches(void) void WEAK set_rotorcraft_commands(pprz_t *cmd_out, int32_t *cmd_in, bool in_flight __attribute__((unused)), bool motors_on __attribute__((unused))) { #if !ROTORCRAFT_IS_HELI -#if !ROTORCRAFT_COMMANDS_YAW_ALWAYS_ENABLED +#if !ROTORCRAFT_COMMANDS_YAW_ALWAYS_ENABLED && defined(COMMAND_YAW) if (!in_flight) { cmd_in[COMMAND_YAW] = 0; } @@ -130,9 +130,15 @@ void WEAK set_rotorcraft_commands(pprz_t *cmd_out, int32_t *cmd_in, bool in_flig cmd_in[COMMAND_THRUST] = 0; } #endif +#ifdef COMMAND_ROLL cmd_out[COMMAND_ROLL] = cmd_in[COMMAND_ROLL]; +#endif +#ifdef COMMAND_PITCH cmd_out[COMMAND_PITCH] = cmd_in[COMMAND_PITCH]; +#endif +#ifdef COMMAND_YAW cmd_out[COMMAND_YAW] = cmd_in[COMMAND_YAW]; +#endif cmd_out[COMMAND_THRUST] = cmd_in[COMMAND_THRUST]; } diff --git a/sw/airborne/firmwares/rotorcraft/guidance/guidance_flip.c b/sw/airborne/firmwares/rotorcraft/guidance/guidance_flip.c index 331abc8505..57bf409771 100644 --- a/sw/airborne/firmwares/rotorcraft/guidance/guidance_flip.c +++ b/sw/airborne/firmwares/rotorcraft/guidance/guidance_flip.c @@ -64,6 +64,8 @@ void guidance_flip_enter(void) void guidance_flip_run(void) { +#if defined(COMMAND_ROLL) && defined(COMMAND_PITCH) && defined(COMMAND_YAW) + uint32_t timer; int32_t phi; static uint32_t timer_save = 0; @@ -138,4 +140,8 @@ void guidance_flip_run(void) stabilization_cmd[COMMAND_THRUST] = 8000; //Some thrust to come out of the roll? break; } +#else + autopilot_set_mode(autopilot_mode_old); + stab_att_sp_euler.psi = heading_save; +#endif } diff --git a/sw/airborne/firmwares/rotorcraft/guidance/guidance_h.c b/sw/airborne/firmwares/rotorcraft/guidance/guidance_h.c index 563320be5a..4f6221d2c1 100644 --- a/sw/airborne/firmwares/rotorcraft/guidance/guidance_h.c +++ b/sw/airborne/firmwares/rotorcraft/guidance/guidance_h.c @@ -83,6 +83,7 @@ static void send_href(struct transport_tx *trans, struct link_device *dev) &guidance_h.ref.accel.y); } +#if defined(COMMAND_ROLL) && defined(COMMAND_PITCH) && defined(COMMAND_YAW) static void send_tune_hover(struct transport_tx *trans, struct link_device *dev) { pprz_msg_send_ROTORCRAFT_TUNE_HOVER(trans, dev, AC_ID, @@ -97,6 +98,9 @@ static void send_tune_hover(struct transport_tx *trans, struct link_device *dev) &(stateGetNedToBodyEulers_i()->theta), &(stateGetNedToBodyEulers_i()->psi)); } +#else +static void send_tune_hover(struct transport_tx *trans UNUSED, struct link_device *dev UNUSED) {} +#endif #endif @@ -426,9 +430,15 @@ void guidance_h_from_nav(bool in_flight) } if (nav.horizontal_mode == NAV_HORIZONTAL_MODE_MANUAL) { + #ifdef COMMAND_ROLL stabilization_cmd[COMMAND_ROLL] = nav.cmd_roll; + #endif + #ifdef COMMAND_PITCH stabilization_cmd[COMMAND_PITCH] = nav.cmd_pitch; + #endif + #ifdef COMMAND_YAW stabilization_cmd[COMMAND_YAW] = nav.cmd_yaw; + #endif } else if (nav.horizontal_mode == NAV_HORIZONTAL_MODE_ATTITUDE) { if (nav.setpoint_mode == NAV_SETPOINT_MODE_QUAT) { // directly apply quat setpoint diff --git a/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_none.c b/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_none.c index 876f495e92..90cfc96084 100644 --- a/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_none.c +++ b/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_none.c @@ -56,7 +56,13 @@ void stabilization_none_enter(void) void stabilization_none_run(bool in_flight __attribute__((unused))) { /* just directly pass rc commands through */ +#ifdef COMMAND_ROLL stabilization_cmd[COMMAND_ROLL] = stabilization_none_rc_cmd.p; +#endif +#ifdef COMMAND_PITCH stabilization_cmd[COMMAND_PITCH] = stabilization_none_rc_cmd.q; +#endif +#ifdef COMMAND_YAW stabilization_cmd[COMMAND_YAW] = stabilization_none_rc_cmd.r; +#endif }