Commit Graph

747 Commits

Author SHA1 Message Date
Iampete1
c98bdd155a Plane: Quadplane: log tailsitter speed scailing in TSIT msg 2023-12-19 11:20:42 +11:00
Lachlan Conn
d5cc1d4ad0 Plane: QAssist speed warning added
Also updated the severity of other QAssist messages
2023-12-13 18:08:36 +11:00
Iampete1
41f61da0d9 Plane: Quadplane: add get_throttle_input method that behaves the same as Plane::get_throttle_input did 2023-11-29 18:15:01 +11:00
Henry Wurzburg
73f58d3624 ArduPlane: expand explanations in FWD THR docs 2023-11-07 10:57:04 +11:00
Iampete1
a6206bde3c Plane: move to new using_airspeed_sensor ahrs method 2023-10-31 10:39:21 +11:00
Michael du Breuil
b630efd4db ArduPlane: Pass the 4th parameter to ICE for engine start 2023-10-24 14:11:39 -07:00
Peter Barker
aa78f53498 Plane: use origin-relative altitudes rather than home-relative 2023-10-18 19:49:06 +11:00
Henry Wurzburg
a26ee15216 Plane:force min transition timer to 2 sec 2023-10-17 14:32:24 +11:00
Mykhailo Kuznietsov
b7c040e8bc ArduPlane: Fix some typos
Fixed some typos found in the code.
2023-10-12 18:30:42 +11:00
Andrew Tridgell
babdb3625a Plane: moved assign tilt to the run() function
this prevents double calling and fixes qhover
2023-09-27 11:43:45 +10:00
Paul Riseborough
2f0bbf14a4 Plane: fix metadata units for Q_FWD_PIT_LIM 2023-09-27 11:43:45 +10:00
Paul Riseborough
3866f2b4b5 Plane: Rework pitch limiting in QuadPlane::assign_tilt_to_fwd_thr
Don't unnecessarily increase the forward pitch limit when position control forward action is saturated.
2023-09-27 11:43:45 +10:00
Paul Riseborough
acf8dbaeee Plane: Add diagnostics logging to QuadPlane::assign_tilt_to_fwd_thr 2023-09-27 11:43:45 +10:00
Paul Riseborough
fa5aef050c Plane: Restructure throttle scaling and pitch limiting to enable logging 2023-09-27 11:43:45 +10:00
Paul Riseborough
c2d6db13ec Plane: explicitly type cast pitch limit 2023-09-27 11:43:45 +10:00
Paul Riseborough
90eacaeb88 Plane: fix centi-degree scaling bug 2023-09-27 11:43:45 +10:00
Paul Riseborough
da595bbf88 Plane: Add protection for failed quadplane forward thrust motor 2023-09-27 11:43:45 +10:00
Andrew Tridgell
e3ce7d966b Plane: fixes from review 2023-09-27 11:43:45 +10:00
Andrew Tridgell
573de2fc17 Plane: implement methods for aux switch control of vfwd code
and use a common function for the active method
2023-09-27 11:43:45 +10:00
Paul Riseborough
4993dcb814 Plane: Remove duplicated parameter check 2023-09-27 11:43:45 +10:00
Paul Riseborough
daea00168b Plane: Use Q_FWD_THR_USE parameter to control modes that use Q_FWD_THR_GAIN 2023-09-27 11:43:45 +10:00
Paul Riseborough
ed91d428e1 Plane: Default Q_FWD_THR_GAIN to 0 and update meta data 2023-09-27 11:43:45 +10:00
Paul Riseborough
7bbd0ed74e Plane: prevent wind up of Q-mode velocity controller I term 2023-09-27 11:43:45 +10:00
Paul Riseborough
b3a1807349 Plane: Fix use of q_fwd_nav_pitch_lim_cd class variable 2023-09-27 11:43:45 +10:00
Paul Riseborough
16895003df Plane: if statement cleanup in QuadPlane::assign_tilt_to_fwd_thr 2023-09-27 11:43:45 +10:00
Paul Riseborough
04e5f6b5f6 Plane: use forward tilt instead of forward throttle when close to ground 2023-09-27 11:43:45 +10:00
Paul Riseborough
8988de3c7c Plane: Allow non positive values of Q_FWD_PIT_LIM to be used 2023-09-27 11:43:45 +10:00
Paul Riseborough
e866998b21 Plane: Rename q_fwd_tilt_lim to q_fwd_pitch_lim 2023-09-27 11:43:45 +10:00
Paul Riseborough
c15bb3f1e3 Plane: remove code that can never run 2023-09-27 11:43:45 +10:00
Paul Riseborough
98220c7315 Plane: Handle reset of q_fwd_throttle in QuadPlane::mode_enter(void) 2023-09-27 11:43:45 +10:00
Paul Riseborough
2d3431a1ac Plane: Improve use of forward flight motors and tilting rotors in Q modes 2023-09-27 11:43:45 +10:00
Henry Wurzburg
f5beb4772d ArduPlane: correct/expand param metadata re synth airspeed 2023-09-26 09:04:51 +10:00
Andy Piper
f25e67e3eb Plane: add option to scale FF in VTOL modes based on ratio of angle gains 2023-09-13 18:02:44 +10:00
Andrew Tridgell
9d98244730 Plane: fixed nav_roll/nav_pitch when waiting for VTOL takeoff
the nav_roll_cd and nav_pitch_cd were not being set in the VTOL
takeoff code when disarmed. This led to small increments accumulating
in the stick mixing code, leading to large control surface movements
before arming
2023-09-03 09:51:24 +10:00
Michael du Breuil
a8102d6662 Plane: On vtol landings if from a mission perform crosstracking 2023-07-18 10:44:11 +10:00
Andrew Tridgell
40ce471fec Plane: fixed transition started airspeed message
this message was lost in recent refactoring
2023-07-04 07:22:01 +10:00
Andrew Tridgell
086d0907dd Plane: fixed TECS state reset in VTOL auto
this fixes a bug where TECS maintains its slow integrator while in a
VTOL hover mode in AUTO or GUIDED.

Among other things this affects PAYLOAD_PLACE and
DO_VTOL_TRANSITION. In those states the height can change while
hovering outside the control of TECS. When TECS regains control in a
fwd transition then can lead to a very large height loss or gain until
the TECS integrator can catch up
2023-07-03 07:03:14 +10:00
Andrew Tridgell
ccd38ddee0 Plane: improved fwd throttle during VTOL landing
this sets up the vwd integrator more reasonably when we are in
POSITION1 stage of VTOL landing. We need to have enough throttle to
cope with a headwind, but want it lower when we are at or above our
target closing speed so can minimise the amount of pitch up

This also makes the landing_desired_closing_velocity() consistent with
the landing speed used in approach, using average of airspeed min and
cruise speed if TECS_LAND_ARSPD is not set

The target airspeed for TECS during airbraking is now set to
ARSPD_FBW_MIN, on the basis we are trying to slow down to min speed,
and we have VTOL support which should prevent a stall.

To cope with a high headwind where ARSPD_FBW_MIN is below the headwind
we now check for too low achieved closing speed and switch to
POSITION1 which can use vfwd to get to the landing location
2023-06-27 11:40:55 +10:00
Henry Wurzburg
c6a822abe1 Plane: fix error in Qplane wait for rudder neutral 2023-04-25 10:27:21 +10:00
Iampete1
74e4466cb4 Plane: use dedicated quadplane function for stick mixing enable 2023-04-25 10:06:50 +10:00
Henry Wurzburg
1415418d6e Plane:Takeoff on rudder arm only after return to neutral 2023-04-25 09:28:45 +10:00
Mirko Denecke
eb6c5aa7d3 ArduPlane: remove unused update_transition() definition 2023-04-25 09:10:11 +10:00
Nick Exton
674d7facde Plane: Use Location::same_loc_as() in QuadPlane::waypoint_controller() 2023-04-04 09:40:45 +10:00
Henry Wurzburg
a86ff90b97 ArduPlane: add AUTO VTOL landing abort AUX sw 2023-03-14 10:52:23 +11:00
Andrew Tridgell
38d7bcff6b Plane: re-init throttle wait on quadplane arm and disarm
this prevents yaw from rudder arming on 2nd flight
2023-02-26 07:06:09 +11:00
Andrew Tridgell
a57e6455ab Plane: use is_armed_and_safety_off()
this no longer sets soft_armed false when safety is on, and instead
uses is_armed_and_safety_off() when appropriate
2023-02-21 07:44:09 +11:00
Andrew Tridgell
99f997161a Plane: holdoff auto takeoff till rudder neutral
when arming with rudder we need to hold off the takeoff until the user
has released the rudder stick or we can yaw badly during the takeoff
2023-02-09 07:02:32 +11:00
Andrew Tridgell
2989e2deba Plane: added support for NAV_PACKAGE_PLACE mission item
this works in conjunction with a lua script to allow for a wide
variety of package place options
2023-02-09 07:02:12 +11:00
Peter Barker
648a13d3f7 ArduPlane: add and use AP_ADVANCEDFAILSAFE_ENABLED 2023-02-08 19:00:13 +11:00
Andrew Tridgell
6623f1156c Plane: transition pitch limit should not apply to FBWA
pilot should be able to override pitch, very important on motor
failure to control glide
2023-01-30 09:19:14 +11:00
Iampete1
bf9d49b72d Plane: Quadaplane: add param for min QRTL altitude when close to home 2023-01-25 19:34:53 +11:00
Henry Wurzburg
636a18f98f Plane: Update Q_OPTIONS metadata to new format 2023-01-03 10:29:44 +11:00
Iampete1
a99748a13d Plane: Quadaplane: use land_at_climb_rate_cm only when landing 2022-12-30 20:25:58 +09:00
Leonard Hall
87c684b5ee Plane: Vtol: use land_at_climb_rate_cm for vertical rate control 2022-12-30 20:25:58 +09:00
Jeremy
0db6146f60 Plane: Added Y4 config to Quadplane 2022-12-27 15:19:28 +11:00
Peter Barker
0cf56ea320 ArduPlane: make and use AP_LANDINGGEAR_ENABLED 2022-12-14 18:30:23 +11:00
Leonard Hall
16ccdeb058 Plane: Support changing update period in Motors 2022-12-13 17:10:06 +11:00
Leonard Hall
0bc5e68aed Plane: Support changing update period 2022-12-13 17:10:06 +11:00
Andrew Tridgell
99066a27f8 Plane: ensure we init z controller when inactive
this prevents us getting the AC_PosControl internal error, which is
turning up as a common false positive.
2022-12-05 07:50:05 +11:00
Peter Hall
148c8d6eec Plane: Quadplane: tiltrotor: add Q_OPTION to keep motors tilted up when disarmed in FW modes 2022-11-29 10:51:23 +11:00
Iampete1
edf89b02ea Plane: Quadplane: 0 rate_bf_yaw_target as more or less the same as radians value in cd funcion 2022-11-25 18:13:00 +11:00
Andrew Tridgell
8a0708efe8 Plane: scale VTOL angle P gains with airspeed
During POSITION1 back-transiton we scale the MC angle P gains with
airspeed to reduce the chance of oscillations. At higher airspeeds the
fixed wing controller dominates so we should use the fixed wing angle
P gain.
2022-10-18 07:38:39 +11:00
Iampete1
a774f314a2 Plane: Quadplane: SLT: enforce TECS pitch limits to beat race 2022-10-11 11:18:41 +11:00
mattbooker
821ef1d4d9 Plane: Fixed divide by zero error when transitioning to guided 2022-10-07 08:22:48 +11:00
Andrew Tridgell
22cd568a4c Plane: removed use of "blended" earth frame accel 2022-08-21 18:51:59 +10:00
Mirko Denecke
ba13f4d116 ArduPlane: remove unused limit_length calculation in overshoot 2022-08-16 12:05:00 +10:00
Michael du Breuil
f183b21fc5 Plane: Support vtol landing options on NAV_VTOL_LAND
This allows the same mission to contain both circular and straight
landing items, and doesn't require on the fly tweaking
2022-08-15 17:05:00 -07:00
Iampete1
ee778dbd3a Plane: Quadplane: add option_is_set helper for Q_OPTIONS 2022-08-09 13:21:00 +10:00
Iampete1
821053e580 Plane: Quadplane: allow servo auto trim for motors only tailsitter assist 2022-08-09 10:56:41 +10:00
Andrew Tridgell
b133e98102 Plane: improve target airspeed in landing approach
if the user hasn't set TECS_LAND_ARSPD then we can use an airspeed
between ARSPD_FBW_MIN and TRIM_ARSPD_CM when on approach

this also fixes landing_desired_closing_velocity() to never go above
the landing target speed, so we don't try to speed up if we are
starting the landing sequence too early
2022-08-03 12:26:57 +10:00
Andrew Tridgell
f9f0f60815 Plane: base yaw in overshoot on target speed not scaled speed
this prevents an oscillating due to the speed changing as we yaw,
resulting in a different yaw target
2022-08-02 07:49:34 +10:00
Andrew Tridgell
5bdd43457c Plane: in overshoot allow up to the Q WP speed
this prevents us using too much battery when we are a long way from
the landing point
2022-08-02 07:49:34 +10:00
Andrew Tridgell
fa371b92a8 Plane: limit target accel in POSITION1
don't ask for more than 2* transition limit, and reset when we enter
overshoot case
2022-08-02 07:49:34 +10:00
Andrew Tridgell
afd21298d5 Plane: adjust target vector for wind in overshoot
at low speeds we want to keep the nose pointed into the wind on
landings
2022-08-02 07:49:34 +10:00
Andrew Tridgell
a1e7072cb1 Plane: cope with overshoot in POSITION1 VTOL land state
when we overshoot run a simple position controller that tries to point
the nose at the landing point and aims for the position2 speed
threshold
2022-08-02 07:49:34 +10:00
Iampete1
a592f76282 ArduPlane: change AC_FENCE to AP_FENCE_ENABLED 2022-07-27 19:04:56 +10:00
Peter Barker
b0bee613d4 ArduPlane: add and use AP_ICENGINE_ENABLE 2022-07-22 08:48:16 +10:00
Iampete1
712611c50e Plane: Quadplane: add yaw command model 2022-07-13 18:26:36 +10:00
Henry Wurzburg
6bb567465a Plane: fixed misspellings of 'transition' 2022-07-01 11:54:16 -07:00
Mirko Denecke
463aed4b8f ArduPlane: fix Q_RTL_MODE parameter doc 2022-06-30 10:50:09 +10:00
Iampete1
0cd1f605f6 Plane: Quadplane: always reset to QPOS_NONE on mode entry 2022-06-23 08:37:00 +10:00
Iampete1
f2a162b963 Plane: rotate Qassist desired rates correctly 2022-06-21 10:01:30 +10:00
Iampete1
d251c51ca1 Plane: Quadplane: QRTL climb to QRTL alt first if in Q mode 2022-06-21 09:11:08 +10:00
Andrew Tridgell
42f553626e Plane: adjust down default quadplane gains
make it better for a typical quadplane, the defaults were more
suitable on smaller aircraft
2022-06-16 21:26:49 +10:00
Iampete1
34609d327d Plane: Quadplane: force convertions of Q_M_PMW_* params if invalid and add arming check 2022-06-08 17:08:23 +10:00
Andrew Tridgell
6423a2dfb9 Plane: use pos_control for weathervane attitude
this makes no difference as wp_nav just passes through, but right API
to call
2022-06-03 18:19:53 +10:00
Andrew Tridgell
ae6b877fd3 Plane: added Q_NAVALT_MIN
this is equivalent to copters WP_NAVALT_MIN parameter for takeoff. Not
implemented for land yet

this is useful for vehicles with significant GPS velocity noise on
takeoff, preventing dragging the landing gear
2022-06-03 18:19:53 +10:00
Andrew Tridgell
fa26b69298 Plane: fixed false positive in landing detector
this fixes a case where we can get false positive on the landing
detector for quadplanes.

The issue happens if we cross the LAND_DESCEND to LAND_FINAL threshold
while pilot repositioning is active, with stale information in
landing_detect.lower_limit_start_ms as we don't run should_relax() in
LAND_DESCEND
2022-05-23 13:05:17 +10:00
Andrew Tridgell
56db91d0c3 Plane: 32 servo conversion 2022-05-22 12:07:37 +10:00
Andrew Tridgell
86c2404654 Plane: increased safety of guided -> auto quadplane takeoff
when we arm in guided mode then enter a special guided_wait_takeoff
state. We keep motors suppressed until one of the following happens

  1) disarm
  2) guided takeoff command
  3) change to AUTO with a takeoff waypoint as first nav waypoint
  4) change to another mode

while in this state we don't go to throttle unlimited, and will refuse
a change to AUTO mode if the first waypoint is not a takeoff. If we
try to switch to RTL then we will instead use QLAND

This state is needed to cope with the takeoff sequence used by QGC on
common controllers such as the MX16, which do this on a "takeoff"
swipe:

  - changes mode to GUIDED
  - arms
  - changes mode to AUTO
2022-05-18 06:43:16 +10:00
Andrew Tridgell
a22e181acb Plane: account for sprung throttle in VTOL throttle suppression
when RC_OPTIONS has been changed to not check throttle for arming then
treat this like a sprung throttle for quadplane throttle suppression
in auto-throttle modes, and only unsuppress when throttle goes above
trim+dz
2022-05-15 21:17:50 +10:00
Andrew Tridgell
86d2ccf0e7 Plane: update gyro fft throttle
allows for updating or learned FFT freq
2022-05-10 08:08:56 +10:00
Henry Wurzburg
0d01ac389c Plane: add Q_OPTION for RTL always on RC failsafe for ship landing 2022-04-19 19:58:46 +10:00
Andrew Tridgell
8e37c93e7d Plane: fixed rudder control when ARMING_RUDDER != 2
when rudder disarm is disabled we should allow full yaw control
regardless of throttle level. We should also only disable left yaw
when throttle is at zero, as right yaw does not indicate pilot may be
trying to disarm
2022-04-03 09:12:03 +10:00
Peter Barker
2c42c056d8 Plane: correct EnableLandResponsition->EnableLandReposition 2022-03-31 20:30:55 +11:00
Andrew Tridgell
48881eeb55 Plane: fixed yaw on the ground when rudder disarming in AUTO
when a quadplane touches down in an auto throttle mode the pilot may
use rudder to disarm. The check for rudder disarm was only active in
modes without auto-throttle. This expands it to all modes if the
throttle has hit the lower limit
2022-03-24 07:44:40 +11:00
Andrew Tridgell
d82a306cc2 Plane: when shutting down motors force outputs to minimum
this fixes issue #20354 where a long spool time can lead to motors
running without control for an extended period of time.
2022-03-23 18:20:42 +11:00
Peter Barker
1f5165349e Plane: correct compilation when airspeed disabled 2022-03-20 21:47:05 +11:00
Henry Wurzburg
14700063d2 ArduPlane: convert floating point divides into multiplys 2022-03-18 15:26:44 +11:00
Andrew Tridgell
6ebefbdb16 Plane: added airspeed based pitch limit check
prevent using too much pitch when at low airspeed, which can lead to
severe instability in SLT quadplanes
2022-03-18 13:36:16 +11:00