The ElevateAndCompress scaling mode doesn't scale linearly as intended
and causes motors to reach the max limit prematurely.
A new mode, MoveAndCompress, has been implemented to get better linear
scaling of the motor output values.
--- RELEASE-15.05.01 HOTFIX --- Banana Split ---
This release fixes an important bug. All Revolution hardware running 15.05 should upgrade to 15.05.01. Note that this is a hotfix; it can
simply be flashed without an erase settings. Furthermore, please review your vtolpathfollowersettings:HorizontalVelMax; a value of around 4m/s would be more appropriate for preliminary trialing of a new release and will be changed in future.
Release Notes - OP Next Generation - Version OP15.05.01
** Bug
* [NG-55] - 15.05 PositionHold exhibits fly-away behaviour at the vtolpathfollowersettings maxRollPitch and HorizontalVelMax values.
---
WHATSNEW.txt | 13 ++++++++++-
flight/libraries/pid/pidcontroldown.cpp | 26 ++++++++++-----------
flight/libraries/plans.c | 28 +++++++++++++++++++----
flight/modules/PathFollower/inc/pidcontrolne.h | 1 -
flight/modules/PathFollower/pidcontrolne.cpp | 23 +++++++++++++++----
flight/modules/PathFollower/vtolflycontroller.cpp | 16 ++++++++-----
6 files changed, 77 insertions(+), 30 deletions(-)
Both TPS and Acroplus had settings initialized in SettingsUpdatedCb.
These values comes from stabSettings.stabBank, which isn't initialzed
when SettingsUpdatedCb is first called.
The patch moves the setup of the affected settings values to
BankUpdatedCb, where other bank specific settings are updated.
The previous scaling function used in scaleMotor could end up with
output values below the neutral point.
This patch adds a new scaling mode that will try to scale the output
proportionally while still keep all outputs within neutral and max.
The user can select three different modes:
1) NoScaling - Only cap the output values between neutral and max.
2) AddAndSubtract - The previous output scaling method, which moves the
output values directly proportionally to the amount the max/min motor
is out of the limits.
3) ElevateAndCompress - The new mode, which elevates all motor values by
the percentage needed to bring the min motor to neutral, and then
compress all motor values by the percentage needed to bring the max
motor down to max.
The motor scaling mode can be selected by setting the
FlightModeSettings.MotorScalingMode UAVO field.
The new setting will work this way:
- Input (knob) value is used straight as roll or pitch P term;
- P term is mutliplied by two configurable factors and used as D and I terms;
- (Optionally) Yaw P term is calculated from a mean of roll and pitch P terms multiplied by a configurable factor.
- yaw P term is multiplied by other two configurable factors and used as yaw D and I terms.
1. Forced disarm via guidance alarm critical on disarm state
2. Continue to zero stabi including yaw during disarm state just in case it doesn't actually disarm.
1. Fix autoyaw to 0 attitude on takeoff post launch.
2. An error condition abort now properly disarms and continues to contrain thrust and stabi during disarmed state.
3. Increase thrustdown time from 2 to 5 seconds on an error condition (e.g. if 3 m deviation from takeoff position on NE).
I decided to not check throttle when re-enabling stabii control. It can feel as though the mode is defective. I would rather someone have immediate always-there ability to overridwe gps hold.
Replace PositionRoam with VelocityRoam
Make VelocityRoam an explicit flight mode to simplify access
Disable PositionRoam as not supported and not suitable to retain.
Set assisted control state to HOLD when Brake controller transitions to HOLD. This impacts throttle stick behavior as it is different during braking and on brake completion in the hold state.
Also cleanuped and removed unused/old code that triggered HOLD in plans.c
1. Update vtol vertical pids
2. Reduce deadband on throttle in gpsassist auto throttle to avoid large deviations in throttle change from neutral
3. Reinitialise assisted control state on mode change where the flight is the same but only gpsassist is going from disabled to enabled or enabled to disabled.