Browse Source

Plane: quadplane: tailsitter: always relax pitch after transtion

gps-1.3.1
Peter Hall 3 years ago committed by Andrew Tridgell
parent
commit
9df753551e
  1. 2
      ArduPlane/quadplane.cpp
  2. 8
      ArduPlane/tailsitter.cpp
  3. 8
      ArduPlane/tailsitter.h

2
ArduPlane/quadplane.cpp

@ -906,7 +906,7 @@ void QuadPlane::relax_attitude_control() @@ -906,7 +906,7 @@ void QuadPlane::relax_attitude_control()
{
// disable roll and yaw control for vectored tailsitters
// if not a vectored tailsitter completely disable attitude control
attitude_control->relax_attitude_controllers(tailsitter._is_vectored);
attitude_control->relax_attitude_controllers(!tailsitter.relax_pitch());
}
/*

8
ArduPlane/tailsitter.cpp

@ -685,6 +685,14 @@ void Tailsitter::speed_scaling(void) @@ -685,6 +685,14 @@ void Tailsitter::speed_scaling(void)
}
}
// return true if pitch control should be relaxed
// on vectored belly sitters the pitch control is not relaxed in order to keep motors pointing and avoid risk of props hitting the ground
// always relax after a transition
bool Tailsitter::relax_pitch()
{
return !enabled() || !_is_vectored || (transition->vtol_limit_start_ms != 0);
}
/*
update for transition from quadplane to fixed wing mode
*/

8
ArduPlane/tailsitter.h

@ -62,9 +62,8 @@ public: @@ -62,9 +62,8 @@ public:
// return the transition_angle_vtol value
int8_t get_transition_angle_vtol() const;
// true when flying a tilt-vectored tailsitter
bool _is_vectored;
// return true if pitch control should be relaxed
bool relax_pitch();
// tailsitter speed scaler
float last_spd_scaler = 1.0f; // used to slew rate limiting with TAILSITTER_GSCL_ATT_THR option
@ -111,6 +110,9 @@ private: @@ -111,6 +110,9 @@ private:
bool setup_complete;
// true when flying a tilt-vectored tailsitter
bool _is_vectored;
// refences for convenience
QuadPlane& quadplane;
AP_MotorsMulticopter*& motors;

Loading…
Cancel
Save