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.
Moved flight make code into flight/Makefile. This should speed up
rebuilds for GCS and keeps the top level Makefile tidier.
Change-Id: I9d33cb5c223b6a8ed2821435a5d63ecf4b97c6b8
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.