Commit Graph

300 Commits

Author SHA1 Message Date
Michael du Breuil b2ef6b901e Plane: Cope with AC_PosControl renaming 2018-09-20 15:15:45 -07:00
Michael du Breuil b6efc8a20b Plane: reduce some copy pasted code 2018-09-20 13:47:21 -07:00
Leonard Hall 13c27e0eb8 Plane: Missing Loiter Init on accel 2018-09-19 17:29:55 +09:00
Andrew Tridgell 5136b90d27 Plane: do attitude relax after 100ms 2018-09-15 11:00:29 +10:00
Leonard Hall 7372a7b5f9 QuadPlane: Remove repeat I term reset 2018-09-15 11:00:29 +10:00
Andrew Tridgell ef154cf3fa Plane: fixed relaxing of attitude controller on transition
this fixes an issue found by Leonard where the attitude controller
could have residual control left over from a previous transition when
engaging the VTOL attitude controller
2018-09-15 11:00:29 +10:00
Michael du Breuil f9e56f9d12 Plane: Respect frame type on VTOL_TAKEOFF commands
allow missioncommands to fail to start
2018-09-11 06:42:00 +10:00
Michael du Breuil 925d76bb8c Plane: Small cleanup to quadplane const (and clarity) 2018-09-04 15:11:41 +10:00
Leonard Hall e11c7c6069 QuadPlane: remove true from init of loiter 2018-09-04 13:37:28 +09:00
Michael du Breuil 3d923d0572 Plane: Send a quadplane version of NAV_CONTROLLER_OUTPUT 2018-08-07 09:49:01 +10:00
Andrew Tridgell 16c7ab81dc Plane: pass rc_speed to motor backend constructors
this sets the right speed as early as possible
2018-07-28 15:25:57 +10:00
IamPete1 20c67019b0 Plane: added Q_TAILSIT_THSCMX
this provides more flexibility in tailsitter throttle scaling
2018-07-19 09:48:25 +10:00
Andrew Tridgell d8a7618e15 Plane: update use of AC_Loiter controller for quadplane
this changes the way the loiter controller is initialised for QLOITER,
after discussions with Leonard.

The way we were doing it could cause a sudden acceleration demand when
switching into QLOITER.

This also changes the default loiter parameters to reduce the maximum
acceleration that will be applied in QLOITER. Many thanks to Leonard for
the advice
2018-06-11 08:40:58 +09:00
Andrew Tridgell d07f8aa42b Plane: fixed a bug in transition to QSTABILIZE for tailsitters
this bug was found bug Marco on his tailsitter. It resulted in zero
throttle for 2s in transition from FBWA to QSTABILIZE
2018-04-25 18:01:12 +10:00
Randy Mackay 840a6e4147 Plane: quadplane uses AC_Loiter
includes param conversion
2018-04-04 10:45:10 +09:00
Peter Barker f6a185a3c3 Plane: factor vehicle's mavlink send_heartbeat 2018-04-03 13:05:19 +01:00
Randy Mackay 548a7f8fcf Plane: add minor comment to quadplane 2018-03-16 13:50:57 +09:00
Leonard Hall ee745d2cd2 Plane: quad plane uses rate-control control during transitions 2018-03-16 13:50:57 +09:00
Leonard Hall a16d4ddad7 Plane: quadplane uses poscontrol instead of loiter 2018-03-16 13:50:57 +09:00
Randy Mackay c5d838125b Plane: quadplane logs PSC message 2018-03-16 13:50:57 +09:00
Randy Mackay 09cad7c59d Plane: quadplane integrates attitude control inertial_frame_reset 2018-03-16 13:50:57 +09:00
Randy Mackay 03c162432e Plane: quadplane provides dt to AC_WPNav::set_pilot_desired_acceleration 2018-03-16 13:50:57 +09:00
Randy Mackay a0a9a68fbc Plane: quadplane smoothing gain replaced by Q_A_INPUT_TC
Q_A_INPUT_TC parameter allows this to be tuned and a single value (which defaults to a value between the two previously used values) is used for all modes
2018-03-16 13:50:57 +09:00
Leonard Hall aa47b19dea Plane: remove quadplane calls to multicopter poscontrol's freeze_ff_xy 2018-03-16 13:50:57 +09:00
Randy Mackay ddcd08d6b6 Plane: PSC_ACCZ param name shortened 2018-01-31 08:48:21 +09:00
Michael du Breuil aec7521da4 Plane: Fix truncation of a time interval
Truncating the a millisecond time delta to uint16_t causes it to wrap
every 65 seconds, which could momentarily reset the desired climb rate
2018-01-25 14:30:49 +11:00
Randy Mackay d579e086cf Plane: quadplane param index comment for moved PIDs 2018-01-24 21:14:53 +09:00
Andrew Tridgell 20b05e4228 Plane: added conversion code for PID layout change
this copes with the move of multicopter PIDs inside the position
controller
2018-01-24 18:23:59 +11:00
Randy Mackay 7b1157e2d8 Plane: remove setting accel_z PID controller's dt
This is handled within pos-controller's set_dt function
2018-01-23 12:00:43 +09:00
Randy Mackay f41f4dc6e5 Plane: move pos-control pids to pos-control library 2018-01-23 12:00:43 +09:00
Randy Mackay 017e71a748 Plane: quadplane velocity pi moves to position control library 2018-01-23 12:00:43 +09:00
luweikxy 25224cd261 Plane: remove dead code from do_vtol_land 2017-12-14 20:52:18 +09:00
Andrew Tridgell f7a735b990 Plane: fixed transitions for tailsitters after auto-takeoff
need to use angle wait
2017-11-19 16:06:02 +11:00
Andrew Tridgell 957c1f6d23 Plane: extend QLOITER transition pitch limit
use twice transition time for pitch envelope to reduce QLOITER
transition harshness
2017-11-05 21:35:32 +11:00
Andrew Tridgell 9c8cd6c1cc Plane: added Q_TRANS_DECEL
this gives a deceleration rate for QRTL transition from RTL, and also
for transitions to QLOITER
2017-11-05 20:44:42 +11:00
Andrew Tridgell e27c54a312 Plane: smooth out fwd tailsitter transition
use Q_TRANSITION_MS and the transition angle to pitch forward more
slowly
2017-11-05 17:25:00 +11:00
Michael du Breuil d52f5155f0 Plane: Rename rc failsafe state members 2017-11-02 16:46:08 -07:00
nick2204 7d91755bd1 Plane: update Q_OPTIONS docs
Made q_options description a little clearer
2017-11-01 09:38:42 +11:00
Andrew Tridgell 1085069851 Plane: use WP_LOITER_RAD if RTL_RADIUS is 0 for QRTL 2017-10-30 16:52:19 +11:00
Andrew Tridgell 552faa8f67 Plane: smoother tailsitter transitions
this smooths out tailsitter transitions in both directions, adding a
new FW to VTOL transition state
2017-10-30 16:30:38 +11:00
Andrew Tridgell af893ddde7 Plane: implement Q_OPTIONS
this allows for NAV_TAKEOFF to be treated as NAV_VTOL_TAKEOFF in
quadplanes, and for level flight to be maintained during quadplane
transitions
2017-10-30 16:30:10 +11:00
Andrew Tridgell 02f8d888c3 Plane: relax controllers when disarmed
this prevents any remaining integrator from a previous flight stage from
affecting flight across a disarm
2017-10-30 16:30:10 +11:00
Andrew Tridgell 92ee05b925 Plane: fixed motor channel handling 2017-10-25 11:39:11 +11:00
Andrew Tridgell 6526ff504d Plane: fix for changes to AP_Motors API 2017-10-22 15:52:50 +11:00
Andrew Tridgell e008559b6e Plane: support LOITER_TO_ALT in quadplanes 2017-10-21 18:50:01 +11:00
Andrew Tridgell 8178ab4037 Plane: make mav_type in HEARTBEAT configurable
needed for qgc to setup for quadplanes
2017-10-20 15:41:06 +11:00
Andrew Tridgell 0aed5a9a57 Plane: prevent controller windup on ground
when on the ground in an auto-throttle mode lik FBWB or CRUISE, we may
have the throttle suppressed. In that case we should not run the
multicopter controller on quadplanes, or it may build up control which
will then apply on takeoff. This is particularly severe for aircraft
that are not level on the ground, such as taildragger quadplanes

Fixes https://discuss.ardupilot.org/t/quadplane-flips-on-takeoff/22095

many thanks to Sriram for reporting
2017-10-20 15:41:04 +11:00
Andrew Tridgell 1a95dcbdd7 Plane: update docs for Q_YAW_RATE_MAX 2017-10-20 15:40:58 +11:00
Andrew Tridgell f5b4d8d99c Plane: added frame type 11 for FlreFlyY6 2017-10-06 11:36:34 +11:00
Ferruccio Vicari 85ab3edc5f Plane: Smoother transition to QLOITER and QLAND
Use estimated stopping position
2017-09-21 07:57:38 +10:00
mirkix 7c6be7c421 Plane: change format of reset alt target message 2017-09-20 20:28:53 +10:00
mirkix b682f3f6d9 Plane: fix parameter units 2017-09-19 11:34:26 +10:00
Andrew Tridgell 35c1a732a6 Plane: allow takeoff in guided then fw loiter
this allows for quadplane takeoff in GUIDED with Q_GUIDED_MODE=0. The
takeoff will be VTOL, but subsequent guided points will be fixed wing
2017-09-18 10:21:53 +10:00
Tom Pittenger 85b7f1bbb4 Plane: guided takeoff success should return true 2017-09-13 14:46:22 -07:00
Andrew Tridgell 600a5c44d2 Plane: allow changing of target altitude in GUIDED 2017-09-09 08:14:09 +10:00
Andrew Tridgell bc17c26dbf Plane: limit pitch in transition to QLOITER and QLAND
when switching to QLOITER or QLAND when in forward flight, limit the
maximum pitch to prevent a sudden decelleration
2017-09-09 08:14:09 +10:00
Andrew Tridgell b6809655d4 Plane: smooth the transition to LAND_FINAL in quadplanes
this makes for a much smoother change to LAND_FINAL, without a jerk as
it changes vertical speed
2017-09-09 08:14:09 +10:00
Andrew Tridgell 8411ac5c57 Plane: fixed a problem with descent rate in landings for quadplanes
use xy controller instead of xyz controller, which prevents calling z
controller twice, which led to poor height control
2017-09-09 08:14:09 +10:00
Andrew Tridgell baee71a5b4 Plane: added GUIDED takeoff for quadplanes
this allows takeoff in GUIDED mode in the same way as copters
2017-09-09 08:14:09 +10:00
Andrew Tridgell a88e663191 Plane: adjust target altitude slowly in QRTL mode
this fixes a sudden throttle drop when starting the descent in QRTL mode
thanks to Marco for finding this issue
2017-09-07 07:22:13 +10:00
Andrew Tridgell 909f109b3f Plane: don't start a transition while disarmed
this can caused flooding of the GCS console while disarmed in FBWA
mode
2017-07-30 12:39:36 -07:00
Peter Barker c058fba5ac Plane: eliminate GCS_MAVLINK::send_statustext_all 2017-07-11 23:53:53 +01:00
Peter Barker 5a8f01c19c Plane: use send_text method on the GCS singleton 2017-07-09 17:17:29 -04:00
Pierre Kancir 5d0972f589 Arduplane: fix implicit cast to double warning in quadplane 2017-06-14 12:40:47 +01:00
Andrew Tridgell 1455c23230 Plane: fixed docs for tailsitter 2017-06-10 18:41:34 +10:00
Dr.-Ing. Amilcar Do Carmo Lucas 2f5f8eb323 Plane: Use SI units conventions in parameter units
Follow the rules from:
http://physics.nist.gov/cuu/Units/units.html
http://physics.nist.gov/cuu/Units/outside.html
and
http://physics.nist.gov/cuu/Units/checklist.html
one further constrain is that only printable (7bit) ASCII characters are allowed
2017-05-17 18:07:25 +10:00
Andrew Tridgell 6eaad59115 Plane: improve vectored tailsitter takeoff
this gives extra pitch input when taking off a vectored tailsitter,
allowing the motors to point straight up for easy takeoff

thanks to Leonard for the idea!
2017-05-07 09:10:44 +10:00
Andrew Tridgell 7ea0f65590 Plane: removed incorrect comment 2017-04-24 16:56:23 +10:00
Andrew Tridgell 06b0742481 Plane: fixed jump in qhover on takeoff
Z controller PID is from -1 to 1

thanks to Leonard for spotting this
2017-04-24 16:55:41 +10:00
Andrew Tridgell aab20317a0 Plane: fixed position control in QLAND_FINAL 2017-04-24 16:55:41 +10:00
Andrew Tridgell b1f1ace736 Plane: support vectored yaw tiltrotors
this adds support for tiltrotors which control yaw by vectoring the
forward motors. This avoids the need for the rear motor on a
tilt-tricopter to have a tilt servo
2017-04-24 16:54:41 +10:00
Andrew Tridgell 2d9c3e3d93 Plane: added EKF yaw reset handling to quadplane
this follows the implementation from copter. Thanks to Leonard for the
suggestion
2017-04-24 16:52:16 +10:00
Andrew Tridgell 88e02c7b35 Plane: log the throttle mix for quadplane copter control 2017-04-19 09:08:43 +10:00
Andrew Tridgell d5ec7b0aad Plane: fixed a sign error in the angle assist code
thanks to Leonard for finding this!
2017-04-18 22:09:22 +10:00
Andrew Tridgell b15b11e32d Plane: always stabilize with tailsitters 2017-04-14 12:48:08 +10:00
Andrew Tridgell 46d910539c Plane: fixed a warning 2017-04-11 17:34:40 +10:00
Andrew Tridgell 642a6acfcb Plane: support thrust vectoring in tailsitters
adds Q_TAILSIT_VHGAIN and Q_TAILSIT_VFGAIN, allowing for thust
vectoring in both fixed wing and hover
2017-04-11 17:34:40 +10:00
Andrew Tridgell 664e41cec6 Plane: bring in demanded climb rate over 1 second
when we engage the Z controller in quadplane we bring in the climb
rate slowly to prevent a sudden change in motor demand
2017-04-09 16:45:19 +10:00
Andrew Tridgell 0cf571d338 Plane: moved Z altitude target reset
reset alt target whenever we have not run Z controller for 2s
2017-04-09 16:45:19 +10:00
Mark Whitehorn 7679b758b0 Plane: add parameter RUDD_DT_GAIN for dual motor tailsitter
controls rudder to differential thrust mixing in FW mode
2017-04-06 08:29:44 +10:00
Andrew Tridgell acaef22416 Plane: improve transition from QSTABILIZE to FBWA or QHOVER 2017-04-05 20:00:29 +10:00
Andrew Tridgell 36d8f730e1 Plane: setup better defaults for tailsitters 2017-04-04 10:15:08 +10:00
Andrew Tridgell 5d06e4238f Plane: make the quadplane motors var_info dynamic
this will allow for more quadplane motors class types
2017-03-25 16:22:10 +11:00
Andrew Tridgell af97a3974b Plane: initialise target height correctly on quadplane transition
this fixes a bug where a plane in QSTABILIZE would drop suddenly if
switched to FBWA when the target altitude had not been initialised
2017-03-22 21:34:40 +11:00
Andrew Tridgell bb158a437e Plane: handle bad Q_FRAME_CLASS
default to quad with a warning. This prevents users getting stuck
without being able to set Q_ENABLE=1

thanks to Leonard for noticing
2017-03-18 22:10:20 +11:00
Andrew Tridgell 3f7e7d456f Plane: in fixed wing mode slave quadplane attitude rate controller
For quadplanes this uses the attitude controller from fixed wing
when using the multicopter controller to assist fixed wing
flight. This prevents a rate mismatch between the two controller
leading to oscillation
2017-03-14 14:42:20 +11:00
Andrew Tridgell 2db8589f49 Plane: smarter Z controller initialisation for quadplanes
this is more generic than the previous one used only for the full
position controller
2017-03-14 14:42:20 +11:00
Andrew Tridgell 4ff5bf5af5 Plane: zero integrators and set throttle mix
this zeros fixed wing integrators during TRANSITION_AIRSPEED_WAIT and
uses a zero throttle mix during TRANSITION_TIMER. This should allow
the fixed wing controller more time to adapt to forward flight
2017-02-26 09:20:51 +11:00
Andrew Tridgell c061d5615b Plane: added manual input mask for tailsitter prop-hang
This adds new parameters Q_TAILSIT_MASK and Q_TAILSIT_MASKCH. These
parameters allow a user to use the tailsitter capabilities of a 3D
plane to teach themselves to prop-hang.

It works by allowing the user to setup a switch on their transmitter
to enable manual pass-thru of a set of the input channels to outputs
when in tailsitter hover. The user can then use that switch to allow
learning of hover control in a 3D plane one channel (or two channels)
at a time.
2017-02-26 09:20:13 +11:00
Andrew Tridgell 3bb25eb194 Plane: added Q_TAILSIT_INPUT
this allows the user to control tailsitters either in body frame (like
a plane) or in earth frame (like a multicopter). This is useful for
people wanting to learn to fly prop-hang on 3D planes
2017-02-26 09:20:13 +11:00
Andrew Tridgell ea5186340b Plane: added Q_TILT_RATE_UP and Q_TILT_RATE_DN as separate parameters
allow control of tilt rate separately for UP and DOWN

always allow at least 90 degrees/second for switching to MANUAL
2017-02-25 17:53:26 +11:00
Andrew Tridgell e8b11924f8 Plane: split out the tailsitter transition complete code
use both roll and pitch to trigger completion of transition. This
copes with situations where the plane has managed to get itself rolled
over far enough that it can't recover into hover
2017-02-18 17:26:43 +11:00
Andrew Tridgell d5a3f844f1 Plane: changes for AC_WPNav 2017-02-18 17:26:43 +11:00
Andrew Tridgell c787f4c56f Plane: initial support for tailsitter transitions 2017-02-18 17:26:43 +11:00
Andrew Tridgell 83f3cee99e Plane: initial hooks for tailsitter support 2017-02-18 17:26:43 +11:00
Andrew Tridgell 0fc04b0158 Plane: setup plane frame type parameter flags 2017-02-14 19:50:01 +11:00
Andrew Tridgell c294519925 Plane: lower default Q_M_SPOOL_TIME to 0.25 2017-02-14 09:23:17 +09:00
priseborough 013eb254a2 Plane: use standard unit descriptor for milliseconds 2017-01-27 16:57:42 +09:00
Andrew Tridgell 07cedd8a66 Plane: prevent stability shutdown in transition
this prevents the vertical motors from shutting down while
transitioning if the desired throttle was too low at the start of the
transition
2017-01-25 19:01:15 +11:00
Andrew Tridgell 0d4405106f Plane: removed forcing of trim for motors in quadplane
this caused problems with tricopter tail servos
2017-01-25 19:01:15 +11:00