Commit Graph

278 Commits

Author SHA1 Message Date
Andrew Tridgell fd5faa866f Plane: always log QPOS when changing control state 2021-09-27 21:21:53 +10:00
Peter Hall e83b598040 Plane: Quadplane: check attitude relax before running controllers, don't run controls if not going to output 2021-09-25 12:53:11 +10:00
Iampete1 cc89a8cc48 Plane: remove airmode Q_OPTION 2021-09-21 09:36:24 +10:00
Iampete1 c4a1ae42e5 Plane: Quadpalne: move tiltrotor functionality to own class 2021-09-17 08:24:17 +10:00
Peter Barker 3d34e061fe ArduPlane: add and use HAL_QUADPLANE_ENABLED 2021-09-14 11:23:18 +10:00
Iampete1 c73207b4b0 Plane: quadplane: remove init mode and control run methods 2021-09-08 18:06:58 +10:00
Iampete1 f1477a6c29 Plane: quadplane: add assisted flight only airmode 2021-09-01 08:33:24 +10:00
Hwurzburg 551d55a85c ArduPlane: add thr position trigger to ThrLandCtrl Q_OPTION 2021-08-25 12:32:59 +10:00
Iampete1 d372907a98 Plane: Quadplane: add Q_OPTION to only allow arming in Qmodes and auto. 2021-08-24 10:39:12 +10:00
Peter Hall 2527117cf9 Quadplane: combine assistance_needed and assistance_safe functions 2021-08-08 19:41:22 +10:00
Iampete1 7ff592d29e Plane: Quadplane: move mode functions to mode classes in-place 2021-08-03 12:28:31 +10:00
Iampete1 2bc2b9533b Plane: QuadPlane: move tailsitter to class 2021-07-27 09:08:34 +10:00
Peter Barker 06c2faaec5 ArduPlane: rename for AHRS restructuring 2021-07-21 21:01:39 +10:00
Andrew Tridgell 50e6d67a66 Plane: update for new double precision position APIs 2021-06-24 21:34:30 +10:00
Hwurzburg 4f48233b43 ArduPlane: add QRTL always as Q_RTL_MODE option 2021-06-14 09:08:20 +10:00
Andrew Tridgell f749c2c3ad Plane: fixed issue with overspeed in QPOS_POSITIION1
this fixes the backflip issue on the convergence that Henry found
2021-06-13 07:50:02 +10:00
Andrew Tridgell 74ac9964f1 Plane: improved POSITION1 speed profile
allow acceleration up to the Q_WP_SPEED, and assume a decel profile
matching Q_TRANS_DECEL for approach speed
2021-06-10 13:50:29 +10:00
Andrew Tridgell 3611b1dbf7 Plane: added check for QPOS initialisation
thanks to Kris for noticing this!
2021-06-10 13:50:29 +10:00
Andrew Tridgell db34577755 Plane: use a separate bit for landing reposition in quadplanes
when repositioning stop descent
2021-06-10 13:50:29 +10:00
Andrew Tridgell 06cd077c36 Plane: fixed stick mixing with land reposition in quadplanes
prevent stick mixing overriding landing control
2021-06-10 13:50:29 +10:00
Andrew Tridgell 0ecc02c53a Plane: fixed constructor of accel_ef filter 2021-06-08 11:14:52 +10:00
Andrew Tridgell aa904d6bbc Plane: fixed guided mode handling with new approach code
ensure we treat guided approach as not a vtol mode
2021-06-05 13:05:30 +10:00
Andrew Tridgell 0232fa7456 Plane: cope with fwd thrust loss in Q approach
if throttle is saturated and descending and low airspeed then declare
thrust loss
2021-06-05 13:05:30 +10:00
Andrew Tridgell a7b809d5d4 Plane: added approach and airbrake options
this defaults VTOL landings to have an approach and airbraking stage,
allowing for more efficient landings. Can be disabled by setting
Q_OPTIONS bit 16
2021-06-05 13:05:30 +10:00
Andrew Tridgell b4992cc226 Plane: added accessors for poscontrol state
allows for time since state entered
2021-06-05 13:05:30 +10:00
Andrew Tridgell f1f7f01300 Plane: slave fixed wing desired rate to multicopter desired rate
this ensures that the two rate controllers don't fight each other when
in a VTOL mode
2021-06-05 13:05:30 +10:00
Andrew Tridgell d1f6d913d5 Plane: adjust reposition landing code
use accel with 1s timeconstant
2021-05-24 20:13:37 +10:00
Andrew Tridgell 71fa52d5c6 Plane: fixed slowing descent in final phase of QLAND 2021-05-24 20:13:37 +10:00
Andrew Tridgell ec1cbb06fd Plane: allow reposition in auto land 2021-05-24 20:13:37 +10:00
Andrew Tridgell 6eafcdb558 Plane: added Q_OPTION bit for throttle control of landing speed 2021-05-24 20:13:37 +10:00
Andrew Tridgell 5a880c74b6 Plane: use input shaping from pos_control
smoother navigation with new input shaping code
2021-05-24 20:13:37 +10:00
Andrew Tridgell a6ec7d9f23 Plane: ensure xy controller is initialised 2021-05-24 20:13:37 +10:00
Iampete1 572e401894 Plane: fix QRTl terrain following 2021-05-02 18:51:27 +10:00
Peter Hall 33f9e3d4b6 plane: add tailsitter transision rates, give more info in transision complete messages 2021-04-07 17:55:48 +10:00
Iampete1 e81dc36ed6 Plane: add option do do a VTOL approach RTL 2021-03-29 11:29:12 +11:00
Hwurzburg 8aabf7c22a Plane: Add VTOL descent rate, convert existing rate to climb rate only
Co-authored-by: Reko Merio K9260@student.jamk.fi
Co-authored-by: Peter Barker <pb-gh@barker.dropbear.id.au>
2021-03-23 14:32:46 +11:00
Iampete1 1d050a01ce Plane: Quadplane: add Q_OPTION to ignore forward flight angle limits in Q modes 2021-03-02 11:16:35 +11:00
Mark Whitehorn 236961f17f Plane: use get_frame_class/type string methods
use AP_Enum<> for frame_class/type
remove invalid copterTS check
improve quadplane setup failure message

Co-authored-by: Peter Barker <pb-gh@barker.dropbear.id.au>
2021-02-09 12:43:53 +11:00
Patrick José Pereira cdc7f891a9 ArduPlane: Add missing const in member functions
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2021-02-03 18:45:14 +11:00
Iampete1 e4fbe64616 Plane: add QuadPlane singleton 2021-01-19 11:18:10 +11:00
Andrew Tridgell a0fcef6ceb Plane: added tilt vectoring in fixed wing modes
this allows for vectoring for roll and pitch in fixed wing modes on
tilt-vectored quadplanes
2021-01-05 08:23:28 +11:00
Iampete1 c8b3c91ae5 Plane: Tailsitter add disk theory and altitude gain scailing 2020-12-22 11:00:59 +11:00
Mark Whitehorn 24508f08dc Plane: don't relax pitch attitude controller for vectored tailsitters in throttle_wait
add is_vectored_tailsitter()
instantiate AC_AttitudeControl_TS for tailsitters
2020-12-21 12:56:24 +11:00
Andrew Tridgell e94cf561d0 Plane: use rull euler control for fwd transition of tilt vectored planes
this gives strong yaw control and wind handling for tilt vectored
planes in forward transitions. It relaxes the yaw if the user either
demands yaw with stick input or plane navigation is demanding a roll
angle for a turn

When navigation is demanded we setup yaw rate for a coordinated turn
2020-12-21 12:05:50 +11:00
Andrew Tridgell abd5f8351d Plane: don't reset yaw target in TRANSITION_TIMER for tilt-vectored quadplanes 2020-12-21 12:05:50 +11:00
Andrew Tridgell ad14e153e8 Plane: fixed tilt vectoring to cope with large tilt angles
This uses vectoring for both roll and yaw when tilted, and uses
differential thrust for yaw when tilted
2020-12-16 08:45:11 +11:00
Andrew Tridgell d984ddc163 Plane: apply circular limits to QLOITER pilot angles
This uses the same logic as Copters get_pilot_desired_angle() to apply
a circular limit and the limits in Q_ANGLE_MAX and Q_LOIT_ANG_MAX to
loiter pilot angles.

Co-authored-by: Kris <kris968658@gmail.com>
2020-12-01 11:22:49 +11:00
Iampete1 c03de6bdbe Plane: log Qassist state 2020-11-17 10:15:27 +11:00
Andrew Tridgell eea62bf733 Plane: added optional ground effect compensation for quadplanes
this allows for landings in aircraft badly effected by ground effect
to be compensated for
2020-11-10 12:05:48 +11:00
Iampete1 2d80dcd937 Plane: remove tailsitter VTOL transition race condition 2020-11-04 18:34:00 +11:00
Iampete1 b225ae43ab Plane: always log tailsitter scalefactor 2020-11-03 10:38:51 +11:00
Iampete1 840f129153 Plane: remove unused tailsitter scailing option 2020-11-03 10:38:51 +11:00
Iampete1 e6ba53856a Plane: tailsitter: ask for FW state don't check 2020-10-27 11:04:52 +11:00
Iampete1 0201692eeb Plane: Q_OPTION to disable synthetic airspeed assist 2020-10-07 18:20:08 +11:00
Iampete1 6621b69836 Plane: log quadplane transision state 2020-09-30 18:15:42 +10:00
Iampete1 f972d3dc2f Plane: Quadplane: tailsitter only change view once transision is complete 2020-09-30 18:15:42 +10:00
Mark Whitehorn 629f2153e0 Plane: move arming delay logic into AP_Arming_Plane 2020-09-08 10:54:42 +10:00
Mark Whitehorn 2b4772269d Plane: tiltrotors: allow vectored yaw motor tilt when disarmed
add disarm tilt delay
add arming delay
add Q_OPTIONS for disarmed motor tilt and delayed arming
add comment explaining arming delay option
eliminate millis() wrap in arming delay
2020-09-08 10:54:42 +10:00
Samuel Tabor 06eea6ed9f Plane: Move navigation functions into flight mode classes. 2020-08-20 13:02:06 +10:00
Mark Whitehorn e22d9398d3 Plane: add AirMode RC option for quadplanes
add Q_OPTION for AirMode (auto-enabled if RCx_OPTION ARMDISARM assigned)
    bugfix: manual throttle mix for qacro
    qualify auto airmode on/off
    add Air Mode to Plane RC_OPTION metadata
    restrict airmode to manual throttle modes
    add qhover to manual throttle mix
    move air_mode from Plane to QuadPlane
    add Mode::is_vtol_man_throttle()
2020-08-13 08:47:27 +10:00
Iampete1 08a710235d Plane: add tailsitter assist with motors only option 2020-07-09 06:49:24 +10:00
Iampete1 6710bab006 Plane: add Q_OPTIONS to defaut to Qassist force enabled 2020-07-09 06:49:24 +10:00
Mark Whitehorn d5b1b20274 Plane: implement manual forward throttle for QACRO, QSTABILIZE and QHOVER
add parameter Q_FWD_THR_MAX for scaling manual throttle
allow forward motor tilt when disarmed
add FWD_THR_CH as an RC option
change Q_FWD_THR_MAX to percent
change RC_OPTION FWD_THR to 209
move assignment of rc_fwd_thr_ch to one_second_loop
move arming check from forward_throttle_pct to set_servos
change Q_FWD_THR_MAX TO Q_FWD_MANTHR_MAX
expand description of Q_FWD_MANTHR_MAX
add pre-arm check for VTOL manual forward throttle
change VTOL fwd throttle input to percent
2020-07-07 08:37:46 +10:00
Andrew Tridgell 3a0538449c Plane: added Q_ASSIST_DELAY parameter
this allows tuning of the time between assistance thresholds being met
and assistance kicking in. It also changes the default delay from 1s
down to 0.5s based on analysis of a flight where assistance was too
slow
2020-07-01 20:57:32 +10:00
Andrew Tridgell 568e13fbb9 Plane: allow for continue after land for quadplanes
this allows for a new takeoff after a quadplane auto landing
2020-06-02 09:12:22 +09:00
Peter Hall 7688430029 Plane: allow Qassit for fw to vtol transision 2020-05-26 09:01:47 +10:00
Peter Hall 87cd9a4791 Plane: allow Qassist for tailsitters 2020-05-26 09:01:47 +10:00
Peter Hall 2467d7b5c7 Plane: add Qassist switch 2020-05-26 09:01:47 +10:00
Paul Riseborough 40cc5a5006 ArduPlane: Improve EKF failsafe in VTOL modes
Replicates Copter behaviour with a three step process if the EKF sustains a loss of navigation as detected by high GPS innovation test ratios:

1) Attempts a yaw reset using the GSF estimate if available
2) Attempts a lane switch
3) Falls back to a non-position mode
2020-05-14 10:40:48 +10:00
Randy Mackay 59a2667870 Plane: quadplane's throttle mix uses filtered accelerations 2020-05-12 09:56:09 +10:00
Henry Wurzburg 6c730ccfec Plane: start tailsitter forward transition from current pitch angle 2020-04-21 09:50:57 +10:00
Andrew Tridgell c6a6427d6a Plane: prevent lidar glitches from triggering land final
this prevents short term lidar glitches from triggering the change
from descend to final in quadplane
2020-02-27 13:15:46 +11:00
Randy Mackay f2ab428cdd Plane: rename update_throttle_mix
was called update_throttle_thr_mix
also minor format fixes
2020-02-25 16:52:40 +09:00
Gone4Dirt 760909d046 Plane: Prevent FS action overiding VTOL land 2019-12-31 11:42:59 +11:00
Mark Whitehorn 56b2c697d2 Plane: change tailsitter_input to bitmask
update parameter metadata for Q_TAILSIT_INPUT and Q_FRAME_TYPE
2019-12-18 08:33:29 +11:00
Mark Whitehorn 14fc6c5446 Plane: add logging for tailsitter gainscaling and clean up tailsitter body-frame roll input handling
fix metadata for tailsitter param GSCMSK
rework roll/yaw scaling for body-frame roll options
add constraints on body-frame roll and yaw inputs
move speed_scaler logging into QTUN message
2019-12-18 08:33:29 +11:00
kd0aij 95da094bfe Plane: update tailsitter speedscaling logic
add tailsitter gain scaling option mask and logging
tailsitter qassist bugfix; thanks, @iampete
apply roll limit in tailsitter bodyframe roll control
add define for future exclusion of tailsitter gainscaling debug code/logging
tailsitter bodyframe roll and qacro input scaling bugfixes:
  respect Q_TAILSIT_RLL_MX and roll/yaw scale parameters in bodyframe roll modes
  fix unintended swap of Q_ACRO_RLL/YAW_RATE params in QACRO mode
don't scale motor tilt

Co-authored-by: IamPete1 <33176108+IamPete1@users.noreply.github.com>
2019-12-18 08:33:29 +11:00
Andrew Tridgell 36baaeb3a0 Plane: added option to run idle governor in MANUAL mode
useful for quadplane testing
2019-11-17 20:10:54 +11:00
Andrew Tridgell e5bad28f1d Plane: added Q_ASSIST_ALT parameter
this allows for quadplane assistance in fixed wing modes when the
aircraft drops below a given altitude. This could help save an
aircraft that is flying badly in fixed wing mode
2019-11-09 20:17:36 +11:00
Mark Whitehorn 1a2abae902 Plane: reduce QTUN log rate to 25Hz 2019-10-20 06:24:46 +11:00
sas 9405fd6958 Plane: remove unused location argument to control_auto 2019-10-08 10:49:51 +11:00
Andrew Tridgell 5c43b18672 Plane: fixed height_above_ground() for case when rangefinder is below min
this prevents a rangefinder that goes below min distance from causing
the calculations that depend on height above ground to fail
2019-09-17 09:36:26 +10:00
Michael du Breuil 4f22dff14d Plane: Add an airspeed limit for quadplane takeoffs 2019-09-09 22:06:25 -06:00
Michael du Breuil 77afcf6a1b Plane: Abort takeoffs that take to long to complete 2019-09-09 22:06:25 -06:00
Hwurzburg 44f6f7335e Plane: Added Quadplane option for QRTL failsafe action 2019-07-05 11:25:56 +10:00
IamPete1 76663d66e8 Plane: support bicopter tiltrotors 2019-07-02 10:15:17 +10:00
Mark Whitehorn 4a7ce1b384 Plane: clean up qacro 2019-05-08 08:44:52 +10:00
Mark Whitehorn f054301ec2 Plane: add QACRO roll/pitch/yaw rate params 2019-04-23 09:46:38 +10:00
Mark Whitehorn 8bcf2439ad Plane: quadplane stabilize manual throttle midpoint and expo
move throttle curve logic to AP_Math

use parameter THROTTLE_EXPO in get_pilot_throttle
2019-04-23 09:46:38 +10:00
Tom Pittenger 0270c57530 Plane: massive refactor and creation of Mode class 2019-04-02 16:28:52 +11:00
Mark Whitehorn e0765747e7 Plane: add new tailsitter bodyframe roll option 2019-03-26 14:50:37 +11:00
Peter Barker 1a55f0ffab Plane: FrSky support has moved to GCS 2019-03-19 14:39:14 +11:00
Andrew Tridgell 2b6210d594 Plane: use WP height for height above ground in vtol landing
this allows for landings above or below the takeoff height without
requiring the use of terrain data. It allows both the use of vfwd
motor for holding against wind, and the correct height for land final
descent rate
2019-03-18 14:47:27 +11:00
Peter Barker cf45b54070 Plane: quadplane use prearm checks from Attitude and Position controllers 2019-03-12 10:14:14 +11:00
Mark Whitehorn 4a6b97828f ArduPlane: add tailsitter input type TAILSITTER_INPUT_BF_ROLL 2019-03-06 15:48:51 +11:00
Mark Whitehorn 6e4a2b97f9 ArduPlane:add subclass for copter tailsitters
cleanup and add tailsit_motmx
add constexpr and motor mask check
add support for tricopter tailsitter
don't call output_motor_mask unless armed
fix whitespace
2019-03-06 07:53:46 +09:00
Mark Whitehorn 487ad7a90f Plane: add QACRO mode for quadplanes
use acro_r/p/y_rate params in qacro
port ACRO throttle handling from copter

handle non-tailsitter controls
2019-03-05 10:13:20 +11:00
Andrew Tridgell 136e10a781 Plane: handle VTOL landing with incorrect height
if landing above expected height then run landing detector to allow a
switch from LAND_DESCEND to LAND_FINAL

this prevents the plane sitting on the ground until the battery runs
out
2019-02-26 11:12:58 +11:00
Michael du Breuil b290148ed0 Plane: Don't overwrite the quadplane loiter relax 2019-02-23 11:08:21 +11:00
Michael du Breuil c15983c690 Plane: prevent loss of control when Q_ENABLE is set while flying
Also rename check_throttle_suppression
2019-02-21 21:38:03 -07:00