* Allow ANDing of multiple channel ranges in mode activation conditions (CLI: set and_mode_conditions=ON)
* Moved mode logic operator to Profile (modeActivationConditions are part of profile already); Created a lookup table for logic operator
* Closes#212
AIRMODE: Air mode anti-windup improvements
PID: Remove integer PID (leave only one PID controller), remove pid_controller setting, remove float-point PID parameters (scale integer parameters to use in float-point PIDC)
PID: New set of PID tuning multipliers for better tuning range
PID: Make max_angle_inclination a PID-profile variable
PID: Reinstate yaw_p_limit
PID: Switch to a noise-robust differentiator
Remove GTUNE
PID: Use same self-leveling strength for ANGLE and HORIZON
PID: Self-leveling LPF to smooth out leveling response to rapid attitude or target angle change
Automatic magnetic declination from GPS coordinates (approximate to 1-2 degrees) (disabled)
Accelerometer bias compensation
Quaternion-based Mahony's DCM IMU (implementation by S. Madgwick)
Ability to lock heading to GPS cource for airplanes
Faster acquisition by initial attitude by using higher DCM kP gain on powerup
Changes to mag calibration algorithm (@HaukeRa's code). Compass calibration now independent from align_mag.
Changed acc calibration to proper 3-axis offset calculation code (same code as for mag). Changed board alignment angles to decidegrees (configurator incompatibility). Removed accelerometer trims (values passed thru MSP are ignored). Accel trim stick combo now adjusts board alignment directly (real-time, without reboot). Removed inflight acc calibration.
FIR filter implementation for different looptimes. Option gyro_cut_hz replaced with gyro_fir_enable (default gyro_soft_filter=3 preset - a very pessimistic filter with fairly large delay but low cutoff frequency for large or very noisy copters)
iNav-related PIDs renamed in CLI to avoid re-usage of old values when restoring config dumps.
PID with back-calculation and I-term anti-windup. Smarter max acceleration and jerk limiting
Initial support for airplane navigation. ALTHOLD, POSHOLD (circular loiter around the waypoint) and RTH should work. UNTESTED! RTH altitude probably needs some work. Autolanding will NOT function at the moment - the AUTOLAND phase will never complete. Absolutely no throttle control at the moment (fully manual control).
Increase delay for bmp085 baro detection. Resolves an issue with bmp085 not being detected sometimes on powerup
Fixed the missing checks for MIXER_CUSTOM_AIRPLANE
Lots of small fixes
G++ supports a more limited version of designated initialisers.
Reorder fields to be in the right order. Make nested initialisers
explicit.
Signed-off-by: Michael Hope <mlhx@google.com>
This primarily is to avaoid stalling the main loop when beeping and
flashing.
This is needed because oneshot ESCs do not receive updates when the main
loop is stalled.
Additionally the beeper code for sticks held in disarm position is
changed since it also clashed with profile selection. Now profile
selections can be seen and heard clearly.
Other subsections of the system that changed the LED0 state while the
main loop is running have been updated to use the status indicator API
instead of blindly hitting the hardware which previously caused lots of
odd LED flashing behaviour - now it is consistent.
ensures that the durations of one or more confirmation beeps can never
get out of sync when the code is changed. Renamed queueConfirmationBeep
to beeperConfirmationBeeps - nothing was actually queued.
* fixes issue where indicators would flash when SBus RX entered failsafe
mode.
* fixes bug where turning off a TX for an SBus RX would instantly disarm
when using a switch to arm when the channel went outside the arming
range.
* introduces failsafe phases to make the system more understandable.
* allows the system to ask if rxSignalIsBeing received for all RX
systems: PPM/PWM/SerialRX/MSP. Also works when a serial data signal is
still being received but the data stream indicates a failsafe condition
- e.g. SBus failsafe flags.
* failsafe settings are no-longer per-profile.
Untested: Sumd/Sumh/XBus/MSP (!)
Tested: SBus X8R, Lemon RX Sat, X8R in PWM, Spektrum PPM.
Previously it was possible to set roll/pitch rate > 1.0 using MSP, but
not using the CLI. Roll/pitch rate > 1.0 is meaningless.
TPA is also limited to 1.0.
and simply run the motors at constant minthrottle. This allowed the chance
for the quad to lose control during flight if the throttle was set to minimum,
say, to drop from a high altitude to a lower one.
With this edit, the quad will still self-level at minimum throttle when armed,
allowing for safe decents from altitude. To prevent motors spinning when
arming/disarming, the yaw input is ignored if the throttle is at minimum and
we're using the sticks to arm/disarm.
Conflicts:
src/main/flight/mixer.c
# The first commit's message is:
Previously, at minimum throttle, the quad would do absolutely no self-leveling
and simply run the motors at constant minthrottle. This allowed the chance
for the quad to lose control during flight if the throttle was set to minimum,
say, to drop from a high altitude to a lower one.
With this edit, the quad will still self-level at minimum throttle when armed,
allowing for safe decents from altitude. To prevent motors spinning when
arming/disarming, the yaw input is ignored if the throttle is at minimum and
we're using the sticks to arm/disarm.
Conflicts:
src/main/flight/mixer.c
# This is the 2nd commit message:
added cli command disable_pid_at_min_throttle
Note: not working on the sparky, MPU9150 needs passthough enabling but
when enabled the mag and gyro won't ack on the default addresses. Needs
further investigation.
applied. The existing modes are 'step'. A new mode is 'select'.
The other unit tests need fixing up so that appropriate code is compiled
as C and not C++ code.