mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-28 10:46:33 +08:00
fw gain compression: add docs
This commit is contained in:
committed by
Mathieu Bresciani
parent
3646032296
commit
4fbff2cdd9
Binary file not shown.
|
Before Width: | Height: | Size: 240 KiB After Width: | Height: | Size: 89 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
@@ -56,6 +56,8 @@
|
|||||||
- [DJI F450 (CUAV v5 nano)](frames_multicopter/dji_f450_cuav_5nano.md)
|
- [DJI F450 (CUAV v5 nano)](frames_multicopter/dji_f450_cuav_5nano.md)
|
||||||
|
|
||||||
- [Planes (Fixed-Wing)](frames_plane/index.md)
|
- [Planes (Fixed-Wing)](frames_plane/index.md)
|
||||||
|
- [Features](features_fw/index.md)
|
||||||
|
- [Gain compression](features_fw/gain_compression.md)
|
||||||
- [Assembly](assembly/assembly_fw.md)
|
- [Assembly](assembly/assembly_fw.md)
|
||||||
- [Config/Tuning](config_fw/index.md)
|
- [Config/Tuning](config_fw/index.md)
|
||||||
- [Auto-tune](config/autotune_fw.md)
|
- [Auto-tune](config/autotune_fw.md)
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ Manual tuning is recommended for frames where autotuning does not work, or where
|
|||||||
- Excessive gains (and rapid servo motion) can violate the maximum forces of your airframe - increase gains carefully.
|
- Excessive gains (and rapid servo motion) can violate the maximum forces of your airframe - increase gains carefully.
|
||||||
- Roll and pitch tuning follow the same sequence.
|
- Roll and pitch tuning follow the same sequence.
|
||||||
The only difference is that pitch is more sensitive to trim offsets, so [trimming](../config_fw/trimming_guide_fixedwing.md) has to be done carefully and integrator gains need more attention to compensate this.
|
The only difference is that pitch is more sensitive to trim offsets, so [trimming](../config_fw/trimming_guide_fixedwing.md) has to be done carefully and integrator gains need more attention to compensate this.
|
||||||
|
- Disable automatic [gain compression](../features_fw/gain_compression.md) ([FW_GC_EN](../advanced_config/parameter_reference.md#FW_GC_EN)) to avoid over-tuning.
|
||||||
|
Remember to re-enable it when tuning is done.
|
||||||
|
|
||||||
## Establishing the Airframe Baseline
|
## Establishing the Airframe Baseline
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# Gain compression
|
||||||
|
|
||||||
|
<Badge type="tip" text="main (planned for: PX4 v1.17)" />
|
||||||
|
|
||||||
|
Automatic gain compression reduces the gains of the angular-rate PID whenever oscillations are detected.
|
||||||
|
It monitors the angular-rate controller output through a band-pass filter to identify these oscillations.
|
||||||
|
|
||||||
|
This approach is a safe adaptive mechanism for stable aircraft: the PID gains remain unchanged when no oscillations are present, they are never increased beyond their nominal values, and they are bounded by a minimum limit.
|
||||||
|
|
||||||
|
Gain compression can help prevent actuator damage and even loss of the vehicle in cases such as airspeed-sensor failure (loss of airspeed scaling) or in-flight changes in dynamics (e.g.: CG shifts, inertia changes), or other failures that could cause the angular-rate loop to become oscillatory.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Gain compression is enabled by default ([FW_GC_EN](../advanced_config/parameter_reference.md#FW_GC_EN)).
|
||||||
|
|
||||||
|
It should be disabled during fixed wing [manual tuning](../config_fw/pid_tuning_guide_fixedwing.md) to avoid over-tuning.
|
||||||
|
It does not need to be disabled when autotuning.
|
||||||
|
|
||||||
|
## Parameters
|
||||||
|
|
||||||
|
- [FW_GC_EN](../advanced_config/parameter_reference.md#FW_GC_EN)
|
||||||
|
- [FW_GC_GAIN_MIN](../advanced_config/parameter_reference.md#FW_GC_GAIN_MIN)
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Fixedwing-Specific Features
|
||||||
|
|
||||||
|
This section lists features that are specific to (or customised for) fixed-wings:
|
||||||
|
|
||||||
|
- [Gain Compression](../features_fw/gain_compression.md)
|
||||||
@@ -93,6 +93,7 @@ Please continue reading for [upgrade instructions](#upgrade-guide).
|
|||||||
|
|
||||||
- [Fixed Wing Takeoff mode](../flight_modes_fw/takeoff.md) will now keep climbing with level wings on position loss.
|
- [Fixed Wing Takeoff mode](../flight_modes_fw/takeoff.md) will now keep climbing with level wings on position loss.
|
||||||
A target takeoff waypoint can be set to control takeoff course and loiter altitude. ([PX4-Autopilot#25083](https://github.com/PX4/PX4-Autopilot/pull/25083)).
|
A target takeoff waypoint can be set to control takeoff course and loiter altitude. ([PX4-Autopilot#25083](https://github.com/PX4/PX4-Autopilot/pull/25083)).
|
||||||
|
- Automatically suppress angular rate oscillations using [Gain compression](../features_fw/gain_compression.md). ([PX4-Autopilot#25840: FW rate control: add gain compression algorithm](https://github.com/PX4/PX4-Autopilot/pull/25840))
|
||||||
|
|
||||||
### Rover
|
### Rover
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
uint64 timestamp # Time since system start (microseconds)
|
uint64 timestamp # Time since system start (microseconds)
|
||||||
|
|
||||||
float32[3] compression_gains # [-] Multiplicative gain to modify the output of the controller per axis [@frame FRD], [@range 0, 1]
|
float32[3] compression_gains # [-] [@frame FRD] [@range 0, 1] Multiplicative gain to modify the output of the controller per axis
|
||||||
float32[3] spectral_damper_hpf # Squared output of the spectral damper’s high-pass filter [@frame FRD]
|
float32[3] spectral_damper_hpf # [-] [@frame FRD] Squared output of spectral damper high-pass filter
|
||||||
float32[3] spectral_damper_out # Spectral damper's output squared [@frame FRD]
|
float32[3] spectral_damper_out # [-] [@frame FRD] Spectral damper output squared
|
||||||
float32[3] input # Torque input [@frame FRD]
|
|
||||||
|
|||||||
@@ -88,7 +88,6 @@ void GainCompression3d::update(const Vector3f &input, const float dt)
|
|||||||
_gains.copyTo(msg.compression_gains);
|
_gains.copyTo(msg.compression_gains);
|
||||||
hpf.copyTo(msg.spectral_damper_hpf);
|
hpf.copyTo(msg.spectral_damper_hpf);
|
||||||
lpf.copyTo(msg.spectral_damper_out);
|
lpf.copyTo(msg.spectral_damper_out);
|
||||||
input.copyTo(msg.input);
|
|
||||||
_gain_compression_pub.publish(msg);
|
_gain_compression_pub.publish(msg);
|
||||||
|
|
||||||
_time_last_publication = now;
|
_time_last_publication = now;
|
||||||
|
|||||||
Reference in New Issue
Block a user