From 9ba748e67ea9329fc141faef1b8b06357173aecd Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Sat, 11 May 2019 21:40:07 +0200 Subject: [PATCH] mc_att_control: fix having high thrust when disarmed After boot the user is in manual mode and if he has an RC but doesn't switch out the thrust gets set to the throttle stick position. When he then starts a takeoff from tablet the thrust is still high while arming and the land detector immediately sees a takeoff skiping smooth takeoff from the position controller. --- src/modules/mc_att_control/mc_att_control_main.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/modules/mc_att_control/mc_att_control_main.cpp b/src/modules/mc_att_control/mc_att_control_main.cpp index b12bdaed6e..2e5e84fc4b 100644 --- a/src/modules/mc_att_control/mc_att_control_main.cpp +++ b/src/modules/mc_att_control/mc_att_control_main.cpp @@ -500,7 +500,10 @@ MulticopterAttitudeControl::generate_attitude_setpoint(float dt, bool reset_yaw_ q_sp.copyTo(attitude_setpoint.q_d); attitude_setpoint.q_d_valid = true; - attitude_setpoint.thrust_body[2] = -throttle_curve(_manual_control_sp.z); + // hotfix: make sure to leave a zero thrust setpoint for position controller to take over after initialization in manual mode + // without this the actuator_controls thrust stays like it was set here when switching to a position controlled mode and the + // land detector will immediately detect takeoff when arming + attitude_setpoint.thrust_body[2] = _v_control_mode.flag_armed ? -throttle_curve(_manual_control_sp.z) : 0.0f; attitude_setpoint.timestamp = hrt_absolute_time(); if (_attitude_sp_id != nullptr) { orb_publish_auto(_attitude_sp_id, &_vehicle_attitude_setpoint_pub, &attitude_setpoint, nullptr, ORB_PRIO_DEFAULT);