Browse Source

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.
sbg
Matthias Grob 6 years ago committed by Lorenz Meier
parent
commit
9ba748e67e
  1. 5
      src/modules/mc_att_control/mc_att_control_main.cpp

5
src/modules/mc_att_control/mc_att_control_main.cpp

@ -500,7 +500,10 @@ MulticopterAttitudeControl::generate_attitude_setpoint(float dt, bool reset_yaw_ @@ -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);

Loading…
Cancel
Save