mirror of https://github.com/ArduPilot/ardupilot
169 lines
6.6 KiB
Markdown
169 lines
6.6 KiB
Markdown
# VTOL QuickTune
|
|
|
|
This script implements a fast VTOL tuning system for multicopters and
|
|
quadplanes. This script can be used to automate the process of
|
|
producing a good "manual tune" for the VTOL rate control parameters.
|
|
|
|
The script is designed to be used in QLOITER mode for quadplanes or
|
|
LOITER mode in multicopters, although it can also be used in other
|
|
VTOL modes.
|
|
|
|
# Parameters
|
|
|
|
The script adds 7 parameters to control it's behaviour. The parameters
|
|
are:
|
|
|
|
## QUIK_ENABLE
|
|
|
|
this must be set to 1 to enable the script
|
|
|
|
## QUIK_RC_FUNC
|
|
|
|
The RCz_OPTIONS scripting function binding to be used for this script.
|
|
Default RCz_OPTIONS binding is 300 (scripting1).
|
|
|
|
## QUIK_AXES
|
|
|
|
This is the set of axes that the tune will run on. The default is 7,
|
|
which means roll, pitch and yaw. It is a bitmask, so if you want just
|
|
roll and pitch then set this to 3. For just yaw you would set it to 4.
|
|
|
|
## QUIK_DOUBLE_TIME
|
|
|
|
This controls how quickly a gain is raised while tuning. It is a time
|
|
in seconds for the gain to double. Most users will want to leave this
|
|
at the default of 10 seconds.
|
|
|
|
## QUIK_GAIN_MARGIN
|
|
|
|
This is the percentage gain margin to use. Once the oscillation point
|
|
for a gain is found the gain is reduced by this percentage. The
|
|
default of 60% is good for most users.
|
|
|
|
## QUIK_OSC_SMAX
|
|
|
|
This is the oscillation threshold in Hertz for detecting oscillation
|
|
when a gain is raised. The default of 5Hz is good for most vehicles,
|
|
but on very large vehicles you may wish to lower this. For a vehicle
|
|
of 50kg a value of 3 is likely to be good. For a vehicle of 100kg a
|
|
value of 1.5 is likely to be good.
|
|
|
|
You can tell you have this set too high if you still have visible
|
|
oscillations after a parameter has completed tuning. In that case
|
|
halve this parameter and try again.
|
|
|
|
## QUIK_YAW_P_MAX
|
|
|
|
This sets a limit on the YAW_P rate gain. The yaw axis on most
|
|
multirotor style vehicles needs to have a much lower limit on the P
|
|
gain than the oscillation limit to ensure that enough control remains
|
|
for roll, pitch and thrust. A maximum of 0.5 is good for most VTOL
|
|
vehicles.
|
|
|
|
## QUIK_YAW_D_MAX
|
|
|
|
This sets a limit on the YAW_D rate gain. The yaw axis on most
|
|
multirotor style vehicles needs to have a much lower limit on the D
|
|
gain than the oscillation limit to ensure that enough control remains
|
|
for roll, pitch and thrust. A maximum of 0.01 is good for most VTOL
|
|
vehicles.
|
|
|
|
## QUIK_RP_PI_RATIO
|
|
|
|
This is the ratio for P to I for roll and pitch axes. This should
|
|
normally be 1, but on some large vehicles a value of up to 3 can be
|
|
used if the I term in the PID is causing too much phase lag.
|
|
|
|
If QUIK_RP_PI_RATIO is less than 1 then the I value will not be
|
|
changed at all when P is changed.
|
|
|
|
## QUIK_Y_PI_RATIO
|
|
|
|
This is the ratio for P to I for the yax axis. This should
|
|
normally be 10, but a different value may be needed on some vehicle
|
|
types.
|
|
|
|
If QUIK_Y_PI_RATIO is less than 1 then the I value will not be
|
|
changed at all when P is changed.
|
|
|
|
## QUIK_AUTO_FILTER
|
|
|
|
This enables automatic setting of the PID filters based on the
|
|
INS_GYRO_FILTER value. Set to zero to disable this feature.
|
|
|
|
## QUIK_AUTO_SAVE
|
|
|
|
This enables automatic saving of the tune if this number of seconds
|
|
pass after the end of the tune without reverting the tune. Setting
|
|
this to a non-zero value allows you to use quicktune with a 2-position
|
|
switch, with the switch settings as low and mid positions. A zero
|
|
value disables auto-save and you need to have a 3 position switch.
|
|
|
|
## QUIK_MAX_REDUCE
|
|
|
|
This controls how much quicktune is allowed to lower gains from the
|
|
original gains. If the vehicle already has a reasonable tune and is
|
|
not oscillating then you can set this to zero to prevent gain
|
|
reductions. The default of 20% is reasonable for most vehicles. Using
|
|
a maximum gain reduction lowers the chance of an angle P oscillation
|
|
happening if quicktune gets a false positive oscillation at a low
|
|
gain, which can result in very low rate gains and a dangerous angle P
|
|
oscillation.
|
|
|
|
# Operation
|
|
|
|
First you should setup harmonic notch filtering using the guide in the
|
|
ArduPilot wiki. This tuning system relies on you already having
|
|
reduced gyro noise using the harmonic notch filter. It will fail if
|
|
your noise is too high.
|
|
|
|
Install the lua script in the APM/SCRIPTS directory on the flight
|
|
controllers microSD card, then set SCR_ENABLE to 1. Reboot, and
|
|
refresh parameters. Then set QUIK_ENABLE to 1.
|
|
|
|
You will then need to setup a 3 position switch on an available RC
|
|
input channel for controlling the tune (or 2 position if you set
|
|
QUIK_AUTO_SAVE). If for example channel 6 is available with a 3
|
|
position switch then you should set RC6_OPTION=300 (scripting1) to associate the
|
|
tuning control with that switch.
|
|
|
|
If needed, the QUIK_RC_FUNC option can be used to associate the tuning switch
|
|
with a different scripting binding such as RCz_OPTION = 302 (scripting3).
|
|
|
|
You should then takeoff and put the vehicle into QLOITER mode (for
|
|
quadplanes) or LOITER mode (for multicopters) and have it in a steady
|
|
hover in low wind.
|
|
|
|
Then move the control switch you setup with option 300 (or via QUIK_RC_FUNC)
|
|
to the middle position. This will start the tuning process. You will see text
|
|
messages on the ground station showing the progress of the tune. As
|
|
the aircraft reaches the oscillation limit of each parameter it will
|
|
start a small oscillation, then it will reduce that gain by the
|
|
configured QUIK_GAIN_MARGIN percentage and then move onto the next
|
|
parameter.
|
|
|
|
With default settings the parameters to be tuned will be:
|
|
|
|
- RLL_D
|
|
- RLL_P
|
|
- PIT_D
|
|
- PIT_P
|
|
- YAW_D
|
|
- YAW_P
|
|
|
|
The script will also adjust filter settings using the following rules:
|
|
|
|
- the FLTD and FLTT settings will be set to half of the INS_GYRO_FILTER value
|
|
- the YAW_FLTE filter will be set to a maximum of 2Hz
|
|
- if no SMAX is set for a rate controller than the SMAX will be set to 50Hz
|
|
|
|
Once the tuning is finished you will see a "Tuning: done" message. You
|
|
can save the tune by moving the switch to the high position (Tune Save). You
|
|
should do this to save before you land and disarm. If you save before the tune is completed the tune will pause, and any parameters completed will be saved and the current value of the one being actively tuned will remain active. You can resume tuning by returning the switch again to the middle position, or if moved to the low position, the parameter currently being tuned will be reverted but any previously saved parameters will remain.
|
|
|
|
If you move the switch to the low position at any time in the tune before using the Tune Save switch position, then all parameters will be reverted to their original
|
|
values. Parameters will also be reverted if you disarm before saving.
|
|
|
|
If the pilot gives roll, pitch or yaw input while tuning then the tune
|
|
is paused until 4 seconds after the pilot input stops.
|