From 45cad9f85ca43c99faa5d879a491f6b79a4c7f20 Mon Sep 17 00:00:00 2001 From: PX4 Build Bot Date: Wed, 3 Dec 2025 10:07:38 +1100 Subject: [PATCH] New Crowdin translations - uk (#26016) Co-authored-by: Crowdin Bot --- docs/uk/SUMMARY.md | 7 +- .../uk/advanced_config/airspeed_validation.md | 29 +- docs/uk/advanced_config/prearm_arm_disarm.md | 14 +- docs/uk/advanced_config/tuning_the_ecl_ekf.md | 54 +++ docs/uk/config/actuators.md | 52 ++- docs/uk/config_fw/airspeed_scale_handling.md | 106 +++++ docs/uk/config_fw/index.md | 4 +- .../config_fw/pid_tuning_guide_fixedwing.md | 2 + docs/uk/config_rover/basic_setup.md | 2 +- docs/uk/config_rover/position_tuning.md | 2 +- docs/uk/config_rover/velocity_tuning.md | 2 +- docs/uk/dev_log/ulog_file_format.md | 2 +- docs/uk/features_fw/gain_compression.md | 24 + docs/uk/features_fw/index.md | 5 + docs/uk/middleware/dds_topics.md | 417 +++++++++--------- docs/uk/modules/modules_driver.md | 85 ++-- docs/uk/modules/modules_driver_adc.md | 107 +++++ .../modules/modules_driver_radio_control.md | 4 + docs/uk/msg_docs/AdcReport.md | 20 +- docs/uk/msg_docs/EscReport.md | 13 + docs/uk/msg_docs/InputRc.md | 2 + docs/uk/msg_docs/SensorTemp.md | 11 + docs/uk/msg_docs/VehicleCommand.md | 2 +- docs/uk/msg_docs/index.md | 3 +- docs/uk/releases/main.md | 5 + docs/uk/sensor/barometer.md | 50 ++- 26 files changed, 699 insertions(+), 325 deletions(-) create mode 100644 docs/uk/config_fw/airspeed_scale_handling.md create mode 100644 docs/uk/features_fw/gain_compression.md create mode 100644 docs/uk/features_fw/index.md create mode 100644 docs/uk/modules/modules_driver_adc.md create mode 100644 docs/uk/msg_docs/SensorTemp.md diff --git a/docs/uk/SUMMARY.md b/docs/uk/SUMMARY.md index f8c37f188b..d7d6a83664 100644 --- a/docs/uk/SUMMARY.md +++ b/docs/uk/SUMMARY.md @@ -56,11 +56,14 @@ - [DJI F450 (CUAV v5 nano)](frames_multicopter/dji_f450_cuav_5nano.md) - [Літаки (з фіксованим крилом)](frames_plane/index.md) + - [Features](features_fw/index.md) + - [Gain compression](features_fw/gain_compression.md) - [Збірка](assembly/assembly_fw.md) - [Конфігурація/підлаштування](config_fw/index.md) - [Auto-tune](config/autotune_fw.md) - [Rate/Attitude Controller Tuning Guide](config_fw/pid_tuning_guide_fixedwing.md) - [Altitude/Position Controller Tuning Guide](config_fw/position_tuning_guide_fixedwing.md) + - [Airspeed Scale Estimate Handling](config_fw/airspeed_scale_handling.md) - [Weight & Altitude Tuning](config_fw/weight_and_altitude_tuning.md) - [Trimming Guide](config_fw/trimming_guide_fixedwing.md) - [Flying (Basics)](flying/basic_flying_fw.md) @@ -692,8 +695,6 @@ - [RoverSpeedStatus](msg_docs/RoverSpeedStatus.md) - [RoverSteeringSetpoint](msg_docs/RoverSteeringSetpoint.md) - [RoverThrottleSetpoint](msg_docs/RoverThrottleSetpoint.md) - - [RoverVelocitySetpoint](msg_docs/RoverVelocitySetpoint.md) - - [RoverVelocityStatus](msg_docs/RoverVelocityStatus.md) - [Rpm](msg_docs/Rpm.md) - [RtlStatus](msg_docs/RtlStatus.md) - [RtlTimeEstimate](msg_docs/RtlTimeEstimate.md) @@ -715,6 +716,7 @@ - [SensorOpticalFlow](msg_docs/SensorOpticalFlow.md) - [SensorPreflightMag](msg_docs/SensorPreflightMag.md) - [SensorSelection](msg_docs/SensorSelection.md) + - [SensorTemp](msg_docs/SensorTemp.md) - [SensorUwb](msg_docs/SensorUwb.md) - [SensorsStatus](msg_docs/SensorsStatus.md) - [SensorsStatusImu](msg_docs/SensorsStatusImu.md) @@ -785,6 +787,7 @@ - [Датчик швидкості обертання](modules/modules_driver_rpm_sensor.md) - [Radio Control](modules/modules_driver_radio_control.md) - [Транспондер](modules/modules_driver_transponder.md) + - [adc](modules/modules_driver_adc.md) - [Естіматори](modules/modules_estimator.md) - [Симуляції](modules/modules_simulation.md) - [Система](modules/modules_system.md) diff --git a/docs/uk/advanced_config/airspeed_validation.md b/docs/uk/advanced_config/airspeed_validation.md index 0f612d0186..a9b25c727b 100644 --- a/docs/uk/advanced_config/airspeed_validation.md +++ b/docs/uk/advanced_config/airspeed_validation.md @@ -10,36 +10,13 @@ By default, the [Missing Data](#missing-data-check), [Data Stuck](#data-stuck-ch You can configure which checks are active using the [ASPD_DO_CHECKS](#aspd_do_checks_table) parameter. ::: -## Airspeed in PX4 - -PX4 handles multiple types of airspeed: - -- **IAS (Indicated Airspeed):** The raw measurement from the airspeed sensor, directly influenced by sensor characteristics and installation effects (e.g., pitot-static errors). - -- **CAS (Calibrated Airspeed):** IAS corrected for sensor-specific and installation-related errors. - -- **EAS (Equivalent Airspeed):** _Not explicitly handled by PX4_ - Calibrated airspeed corrected for compressibility effects. - While PX4 does not currently model EAS separately, this correction is negligible at low speeds and altitudes, so EAS is treated as equivalent to CAS for simplicity. - -- **TAS (True Airspeed):** CAS adjusted for atmospheric effects such as air pressure and temperature (i.e., altitude and atmospheric conditions). - -The standard conversion chain used in PX4 is: `IAS → CAS (= EAS) → TAS`. - ## CAS Scale Estimation -PX4 estimates the IAS to CAS scale (referred to as the CAS scale) during flight using GNSS ground speed and wind estimation. -To compute the final TAS, standard environment conversions are applied (CAS → TAS). - -This CAS scaling plays an important role in keeping the [innovation check](#innovation-check) reliable, since a well-estimated CAS is key to spotting inconsistencies between measured and predicted airspeed. +Calibrated Airspeed (CAS) is the measured Indicated Airspeed (IAS) scaled to correct for sensor-specific and installation-related errors. +CAS scaling plays an important role in keeping the [innovation check](#innovation-check) reliable, since a well-estimated CAS is key to spotting inconsistencies between measured and predicted airspeed. If the estimated CAS scale is inaccurate, it can mask real airspeed faults or trigger false positives. -If you observe that the CAS scale estimate is consistently off, or if it is converging too slowly, you can manually set it using [ASPD_SCALE_n](#aspd_scale_n_table) (where `n` is the sensor number). -[ASPD_SCALE_APPLY](#aspd_scale_apply_table) can be used to configure when/if the estimated scale is applied. - -:::info -For a quick manual CAS scale estimate, compare groundspeed minus windspeed (from the [VehicleLocalPosition](../msg_docs/VehicleLocalPosition.md) and [Wind](../msg_docs/Wind.md) messages, respectively) to indicated airspeed values (in the [Airspeed](../msg_docs/Airspeed.md) message). -The ratio of indicated airspeed to groundspeed minus windspeed can provide a reasonable starting estimate for [ASPD_SCALE_n](#aspd_scale_n_table). -::: +If you observe that the CAS scale estimate is consistently off, or if it is converging too slowly, follow the steps outlined in [Airspeed Scale Handling](../config_fw/airspeed_scale_handling.md#recommended-first-flight-process). ## Validation Checks diff --git a/docs/uk/advanced_config/prearm_arm_disarm.md b/docs/uk/advanced_config/prearm_arm_disarm.md index d7da93d801..56f2f5ab9e 100644 --- a/docs/uk/advanced_config/prearm_arm_disarm.md +++ b/docs/uk/advanced_config/prearm_arm_disarm.md @@ -54,19 +54,17 @@ RC controllers will use different sticks for throttle and yaw [based on their mo - _Озброєння:_ Ліва педаль вправо, права педаль вниз. - _Вимкнення:_ Ліва педаль вліво, права педаль вниз. -The required hold time can be configured using [COM_RC_ARM_HYST](#COM_RC_ARM_HYST). Note that by default ([COM_DISARM_MAN](#COM_DISARM_MAN)) you can also disarm in flight using gestures/buttons: you may choose to disable this to avoid accidental disarming. -| Параметр | Опис | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [MAN_ARM_GESTURE](../advanced_config/parameter_reference.md#MAN_ARM_GESTURE) | Enable arm/disarm stick guesture. `0`: Disabled, `1`: Enabled (default). | -| [COM_DISARM_MAN](../advanced_config/parameter_reference.md#COM_DISARM_MAN) | Enable disarming in flight via switch/stick/button in MC manual thrust modes. `0`: Disabled, `1`: Enabled (default). | -| [COM_RC_ARM_HYST](../advanced_config/parameter_reference.md#COM_RC_ARM_HYST) | Час, протягом якого педаль RC повинна бути утримана в позиції озброєння/вимкнення перед озброєнням/вимкненням (за замовчуванням: 1 секунда). | +| Параметр | Опис | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [MAN_ARM_GESTURE](../advanced_config/parameter_reference.md#MAN_ARM_GESTURE) | Enable arm/disarm stick guesture. `0`: Disabled, `1`: Enabled (default). | +| [COM_DISARM_MAN](../advanced_config/parameter_reference.md#COM_DISARM_MAN) | Enable disarming in flight via switch/stick/button in MC manual thrust modes. `0`: Disabled, `1`: Enabled (default). | ## Arming Button/Switch {#arm_disarm_switch} Кнопку _озброєння_ або "моментальний перемикач" можна налаштувати для спрацьовування озброєння/вимикання _замість_ [озброєння за допомогою жестів](#arm_disarm_gestures) (встановлення перемикача озброєння вимикає озброєння за допомогою жестів). -Кнопку слід утримувати натиснутою протягом ([зазвичай](#COM_RC_ARM_HYST)) однієї секунди, щоб озброїти (якщо вимкнено) або вимкнути (якщо озброєно). +The button should be held down for one second to arm (when disarmed) or disarm (when armed). Двопозиційний перемикач також може використовуватися для озброєння/вимикання, при цьому відповідні команди на озброєння/вимкнення надсилаються при _перемиканні_ перемикача. @@ -79,7 +77,7 @@ Note that by default ([COM_DISARM_MAN](#COM_DISARM_MAN)) you can also disarm in | Параметр | Опис | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [RC_MAP_ARM_SW](../advanced_config/parameter_reference.md#RC_MAP_ARM_SW) | Канал перемикача озброєння радіокерування (типове значення: 0 - не призначено). Якщо визначено, вказаний канал радіокерування (кнопка/перемикач) використовується для озброєння замість жесту палиці.
**Note:**
- This setting _disables the stick gesture_!
- This setting applies to RC controllers. It does not apply to Joystick controllers that are connected via _QGroundControl_. | -| [COM_ARM_SWISBTN](../advanced_config/parameter_reference.md#COM_ARM_SWISBTN) | Перемикач озброєння є моментальною кнопкою.
- `0`: Arm switch is a 2-position switch where arm/disarm commands are sent on switch transitions.
-`1`: Arm switch is a button or momentary button where the arm/disarm command ae sent after holding down button for set time ([COM_RC_ARM_HYST](#COM_RC_ARM_HYST)). | +| [COM_ARM_SWISBTN](../advanced_config/parameter_reference.md#COM_ARM_SWISBTN) | Перемикач озброєння є моментальною кнопкою.
- `0`: Arm switch is a 2-position switch where arm/disarm commands are sent on switch transitions.
-`1`: Arm switch is a momentary button where the arm/disarm command is sent after holding down the button for one second. | :::info Перемикач також можна налаштувати як частину конфігурації _QGroundControl_ для [Режиму польоту](../config/flight_mode.md). diff --git a/docs/uk/advanced_config/tuning_the_ecl_ekf.md b/docs/uk/advanced_config/tuning_the_ecl_ekf.md index 41a92aa4a0..0755469343 100644 --- a/docs/uk/advanced_config/tuning_the_ecl_ekf.md +++ b/docs/uk/advanced_config/tuning_the_ecl_ekf.md @@ -344,6 +344,60 @@ Weightings applied by the GSF to the individual 3-state EKF outputs are in the`w Зверніть увагу, що `ekf2_gps_drift` не зафіксовано! ::: +#### GNSS Fault Detection + +PX4's GNSS fault detection protects against malicious or erroneous GNSS signals using selective fusion control based on measurement validation. + +The fault detection logic depends on the GPS mode, and also operates differently for horizontal position and altitude measurements. +The mode is set using the [EKF2_GPS_MODE](../advanced_config/parameter_reference.md#EKF2_GPS_MODE) parameter: + +- **Automatic (`0`)** (Default): Assumes that GNSS is generally reliable and is likely to be recovered. + EKF2 resets on fusion timeouts if no other source of position is available. +- **Dead-reckoning (`1`)**: Assumes that GNSS might be lost indefinitely, so resets should be avoided while we have other estimates of position data. + EKF2 may reset if no other sources of position or velocity are available. + If GNSS altitude OR horizontal position data drifts, the system disables fusion of both measurements simultaneously (even if one would still pass validation) and avoids performing resets. + +##### Detection Logic + +Horizontal Position: + +- **Automatic mode**: Horizontal position resets to GNSS data if no other horizontal position source is currently being fused (e.g., Auxiliary Global Position - AGP). +- **Dead-reckoning mode**: Horizontal position resets to GNSS data only if no other horizontal position OR velocity source is currently being fused (e.g., AGP, airspeed, optical flow). + +Altitude: + +- The altitude logic is more complex due to the height reference sensor ([EKF2_HGT_REF](../advanced_config/parameter_reference.md#EKF2_HGT_REF)) parameter, which is typically set to GNSS or baro in GNSS-denied scenarios. +- If height reference is set to baro, GNSS-based height resets are prevented (except when baro fusion fails completely and height reference automatically switches to GNSS). +- When height reference is set to GNSS: +- **Automatic mode**: Resets occur on drifting GNSS altitude measurements. +- **Dead-reckoning mode**: When validation starts failing, the system prevents GNSS altitude resets and labels the GNSS data as faulty. + +##### Faulty GNSS Data During Boot + +The system cannot automatically detect faulty GNSS data during vehicle boot as no baseline comparison exists. + +If GNSS fusion is enabled ([EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL)), operators will observe incorrect positions on maps and should disable GNSS fusion, then manually set the correct position via ground control station. +The global position gets corrected, and if [SENS_BAR_AUTOCAL](../advanced_config/parameter_reference.md#SENS_BAR_AUTOCAL) was enabled, baro offsets are automatically adjusted (through bias correction, not parameter changes). + +##### Enabling GNSS Fusion Mid-Flight + +With Faulty GNSS Data: + +- **Automatic mode**: Vehicle will reset to faulty position - potentially dangerous. +- **Dead-reckoning mode**: Large measurement differences cause GNSS rejection and fault detection activation. + +With Valid GNSS Data: + +- **Automatic mode**: Vehicle will reset to GNSS measurements. +- **Dead-reckoning mode**: If estimated position/altitude is close enough to measurements, fusion resumes; if too far apart, data gets labeled as faulty. + +##### Примітки + +- **Dual Detection**: Horizontal and altitude checks run completely separately but both lead to the same result when triggered - all GNSS fusion gets disabled. +- **Recovery**: Only the specific check that labeled data as invalid can re-enable fusion. +- **Alternative Sources**: Dead-reckoning mode provides enhanced protection by requiring absence of alternative navigation sources before allowing resets. +- **Boot Vulnerability**: Initial faulty GNSS data cannot be detected automatically; requires operator intervention and manual position correction. + ### Далекомір [Range finder](../sensor/rangefinders.md) distance to ground is used by a single state filter to estimate the vertical position of the terrain relative to the height datum. diff --git a/docs/uk/config/actuators.md b/docs/uk/config/actuators.md index 6bacb04fe6..14f62d4ae3 100644 --- a/docs/uk/config/actuators.md +++ b/docs/uk/config/actuators.md @@ -161,6 +161,7 @@ Select the **Advanced** checkbox in the top right corner of the view to display [Generally you should use the default actuator value](#actuator-roll-pitch-and-yaw-scaling). - `Trim`: An offset added to the actuator so that it is centered without input. Це може бути визначено методом проб і помилок. + Prefer using the improved `PWM_CENT` instead: [PWM control surfaces](actuators.md#pwm-control-surfaces-that-move-both-directions-about-a-neutral-point). - (Advanced) `Slew Rate`: Limits the minimum time in which the motor/servo signal is allowed to pass through its full output range, in seconds. - Параметр обмежує швидкість зміни приводу (якщо не вказано, то обмеження швидкості не застосовується). It is intended for actuators that may be damaged or cause flight disturbance if they move too fast — such as the tilting actuators on a tiltrotor VTOL vehicle, or fast moving flaps, respectively. @@ -542,12 +543,43 @@ You will almost certainly need to change the pulse rate from the default of 400H If a high rate servo is _really_ needed, DShot offers better value. ::: -#### Control surfaces that move both directions about a neutral point +##### PWM: Control surfaces that move both directions about a neutral point + +To facilitate setting the neutral point of the servos, a bilinear curve function can be defined using the following parameters `PWM_MAIN_CENTx` / `PWM_AUX_CENTx` for each servo. This allows for unequal deflections in the positive and negative direction: + +![Asymmetric Servo Deflections](../../assets/config/actuators/servo_pwm_center.png) + +To set this up: + +1. Set all surface `Trim` to `0.00` for all surfaces: + + ![PWM Trimming](../../assets/config/actuators/control_surface_trim.png) + +2. Set the `PWM_MAIN_CENTx` / `PWM_AUX_CENTx` value so that the surface will stay at the neutral (aligned with airfoil) position. + This is usually around `1500` for PWM servos (near the center of the servo range). + + ![Control Surface Trimming](../../assets/config/actuators/pwm_center_output.png) + +3. Gradually increase the `Maximum` for each servo until the desired deflection is reached. Check the deflection with a remote manual mode while [`COM_PREARM_MODE`](../advanced_config/parameter_reference.md#COM_PREARM_MODE) is set to `Always` or use the sliders. + +4. Gradually decrease the `Minimum` for each servo, until the desired deflection is reached. + +5. Set `Disarmed` value to the desired value. It is usually desirable to have it the same as the `Center` value. + +:::info +If you want to retain the linear behaviour of the servo after setting the `Center`, make sure to adjust the `Minimum` or `Maximum`, such that both intervals (`min` to `cent` & `cent` to `max`) are equally large. + +![Linear PWM Adjustment](../../assets/config/actuators/servo_pwm_linear.png) +::: + +#### Non-PWM: Control surfaces that move both directions about a neutral point Control surfaces that move either direction around a neutral point include: ailerons, elevons, V-tails, A-tails, and rudders. To set these up: +0. Set all `PWM_MAIN_CENTx` and `PWM_AUX_CENTx` to default (-1), or trimming will not be possible. + 1. Set the `Disarmed` value so that the surfaces will stay at neutral position when disarmed. This is usually around `1500` for PWM servos (near the centre of the servo range). @@ -566,17 +598,22 @@ To set these up: If the control surface moves in the opposite direction, click on the `Rev Range` checkbox to reverse the range. 3. Move the slider again to the middle and check if the Control Surfaces are aligned in the neutral position of the wing. + - If it is not aligned, you can set the **Trim** value for the control surface. - ::: info - This is done in the `Trim` setting of the Geometry panel, usually by "trial and error". - ![Control Surface Trimming](../../assets/config/actuators/control_surface_trim.png) + ::: info + This is done in the `Trim` setting of the Geometry panel, usually by "trial and error". + ![Control Surface Trimming](../../assets/config/actuators/control_surface_trim.png) ::: - After setting the trim for a control surface, move its slider away from the centre, release, and then back into disarmed (middle) position. Підтвердіть, що поверхня знаходиться в нейтральному положенні. +:::tip +If any servo has a `PWM_MAIN_CENTx` or `PWM_AUX_CENTx` not set to default (-1), the system will automatically remove `Trim` from all surfaces. This is done to prevent mixing of old and new trimming tools. +::: + :::info Another way to test without using the sliders would be to set the [`COM_PREARM_MODE`](../advanced_config/parameter_reference.md#COM_PREARM_MODE) parameter to `Always`: @@ -595,6 +632,7 @@ For a flap, that is when the flap is fully retracted and flush with the wing. One approach for setting these up is: +0. Set all `PWM_MAIN_CENTx` and `PWM_AUX_CENTx` to default (-1), or trimming will not be possible. 1. Set values `Disarmed` to `1500`, `Min` to `1200`, `Max` to `1700` so that the values are around the centre of the servo range. 2. Move the corresponding slider up and check the control moves and that it is extending (moving away from the disarmed position). If not, click on the `Rev Range` checkbox to reverse the range. @@ -604,6 +642,7 @@ One approach for setting these up is: - If the value was increased towards `Max`, then set `Max` to match `Disarmed`. 4. The value that you did _not_ set to match `Disarmed` controls the maximum amount that the control surface can extend. Set the slider to the top of the control, then change the value (`Max` or `Min`) so that the control surface is fully extended when the slider is at top. +5. (Only PWM servos) Set the `Center` value to the middle between `Min` and `Max`. :::info Special note for flaps In some vehicle builds, flaps may be configured such that both flaps are controlled from a single output. @@ -642,6 +681,11 @@ First set the _frame rate_ for the servos used in each group of outputs. - Стандартний VTOL: Двигуни, визначені як багатокоптерні двигуни, будуть вимкнені - Tiltrotors : Двигуни, які не мають пов'язаного сервоприводу нахилу, вимкнуться - Tailsitters не вимикають жодних двигунів у польоті з фіксованим крилом +- The following formula can be used to migrate from surface trim to PWM trim: + + ```plain + PWM_MAIN_CENTx = ((PWM_MAX - PWM_MIN) / 2) * CA_SV_CSx_TRIM + PWM_MIN + ((PWM_MAX - PWM_MIN) / 2) + ``` ### Реверсивні мотори diff --git a/docs/uk/config_fw/airspeed_scale_handling.md b/docs/uk/config_fw/airspeed_scale_handling.md new file mode 100644 index 0000000000..831edd4144 --- /dev/null +++ b/docs/uk/config_fw/airspeed_scale_handling.md @@ -0,0 +1,106 @@ +# Airspeed Scale Handling + +:::info +This section complements the existing [Airspeed Validation](../advanced_config/airspeed_validation.md) documentation. +::: + +The airspeed scale is used by PX4 to convert the measured airspeed (indicated airspeed) to the calibrated airspeed. +This scale can be set by [ASPD_SCALE_n](../advanced_config/parameter_reference.md#ASPD_SCALE_1) (where `n` is the sensor number), and logged in [AirspeedWind.msg](../msg_docs/AirspeedWind.md). + +Note that the airspeed scale is different from the airspeed sensor offset calibration done on the ground at 0 m/s. The airspeed scale accounts for errors in the airspeed measurement during flight, such as those caused by sensor placement or installation effects. + +This topic describes how to set an initial airspeed scale for a new fixed-wing vehicle during its first flight. Correct scale calibration ensures reliable airspeed data, accurate TAS calculation, robust PX4 airspeed validation, and consistent controller performance. + +## Airspeed in PX4 + +PX4 handles multiple types of airspeed: + +- **IAS (Indicated Airspeed):** The raw measurement from the airspeed sensor, directly influenced by sensor characteristics and installation effects (e.g., pitot-static errors). +- **CAS (Calibrated Airspeed):** IAS corrected for sensor-specific and installation-related errors. +- **EAS (Equivalent Airspeed):** _Not explicitly handled by PX4_ - Calibrated airspeed corrected for compressibility effects. + While PX4 does not currently model EAS separately, this correction is negligible at low speeds and altitudes, so EAS is treated as equivalent to CAS for simplicity. +- **TAS (True Airspeed):** CAS adjusted for atmospheric effects such as air pressure and temperature (i.e., altitude and atmospheric conditions). + +The standard conversion chain used in PX4 is: `IAS → CAS (= EAS) → TAS`. + +## CAS Scale Estimation + +PX4 estimates the IAS to CAS scale (referred to as the CAS scale) during flight using GNSS ground speed and wind estimation. +To compute the final TAS, standard environment conversions are applied (CAS → TAS). + +:::warning +Important +A GNSS is required for scale estimation. +::: + +PX4 uses a two-stage approach to robustly estimate the scale: + +1. **Continuous EKF Estimation**: A wind estimator constantly compares your measured airspeed against what it expects based on ground velocity (from GNSS) and estimated wind. + If there's a consistent bias, it adjusts the scale estimate. + The estimated scale is logged in the `AirspeedWind.msg` as the `tas_scale_raw`. +2. **Validation**: To ensure robustness, PX4 collects airspeed and ground speed data across 12 different heading segments (every 30°). + This averages out wind estimation errors. + The validated scale is only updated when the new estimate demonstrably reduces the error between predicted and actual ground speeds across all headings. + The validated scale is logged in the `AirspeedWind.msg` as the `tas_scale_validated`. + +### Understanding the Scale: Physical Intuition + +The CAS scale is essentially a correction factor that accounts for systematic errors in your airspeed sensor installation. + +- A scale of 1.0 means your sensor reads perfectly (no correction needed) +- A scale > 1.0 (e.g., 1.1) means your sensor _under-reads_ by 10%, so measured airspeed (IAS) must be multiplied by 1.1 +- A scale < 1.0 (e.g., 0.9) means your sensor _over-reads_ by ~11%, so measured airspeed (IAS) must be multiplied by 0.9 + +### What Affects the Airspeed Scale + +The primary factor influencing the airspeed scale is **sensor placement**. + +Biased readings can be reflected in the scale estimate for pitot tubes installed: + +- In regions experiencing disturbed flow (commonly near blunt aircraft noses) +- Near propellers +- Under aerodynamic surfaces +- At an angle with respect to the airflow + +### Symptoms of Incorrect Scale + +Symptoms of an incorrectly scaled airspeed measurement include: + +- Stalling or overspeeding +- Persistent under- or overestimation of the TAS relative to wind-corrected groundspeed +- False positives or missed detections in [airspeed innovation checks](../advanced_config/airspeed_validation.md#innovation-check) +- Degraded tracking of the rate controllers + +## Recommended First Flight Process + +During the first flight of a new fixed-wing vehicle, allocate time for the CAS scale to converge to a reasonable initial estimate. +Follow these steps: + +1. **Set an Initial Scale** + + Use a conservative starting point: set the CAS scale (`ASPD_SCALE_n`) slightly under 1.0 (for example 0.95). + This biases the system toward over-speed rather than under-speed, reducing stall risk. + +2. **Perform a Flight** + + After takeoff, place the vehicle in loiter for about 15 minutes to allow the scale estimation to converge. + +3. **Check Scale Convergence** + + After the flight, review the estimated scale in logs. + Verify that: + + - `tas_scale_validated` in `AirspeedWind.msg` converged during flight. + - `true_airspeed_m_s` (TAS) in [AirspeedValidated.msg](../msg_docs/AirspeedValidated.md) is consistent with groundspeed corrected for wind. + +4. **Update the Airframe Configuration** + + If using an [airframe configuration file](../dev_airframes/adding_a_new_frame.md): update `ASPD_SCALE_n`with the estimated CAS scale for future flights. + For similar vehicles with similarly mounted sensors, this value is typically a reliable starting point. + +:::info +If you are not able to perform the steps outlined above ... + +For a quick manual CAS scale estimate, compare groundspeed minus windspeed (from the [VehicleLocalPosition](../msg_docs/VehicleLocalPosition.md) and [Wind](../msg_docs/Wind.md) messages, respectively) to indicated airspeed values (in the [Airspeed](../msg_docs/Airspeed.md) message). +The ratio of indicated airspeed to groundspeed minus windspeed can provide a reasonable starting estimate for `ASPD_SCALE_n`. +::: diff --git a/docs/uk/config_fw/index.md b/docs/uk/config_fw/index.md index e66d40f837..4383423728 100644 --- a/docs/uk/config_fw/index.md +++ b/docs/uk/config_fw/index.md @@ -3,7 +3,7 @@ Fixed-wing configuration and calibration follows the same high level steps as other frames: selection of firmware, configuration of the frame including actuator/motor geometry and output mappings, sensor configuration and calibration, configuration of safety and other features, and finally tuning. :::info -This topic is the recommended entry point when performing first-time configuration and calibration of a new multicopter frame. +This topic is the recommended entry point when performing first-time configuration and calibration of a new fixed-wing frame. ::: Основними кроками є: @@ -20,3 +20,5 @@ This topic is the recommended entry point when performing first-time configurati - [Fixed-wing Altitude/Position Controller Tuning Guide](../config_fw/position_tuning_guide_fixedwing.md) - [Fixed-wing Trimming Guide](../config_fw/trimming_guide_fixedwing.md) + +- [Fixed-Wing Airspeed Scale Handling](../config_fw/airspeed_scale_handling.md) diff --git a/docs/uk/config_fw/pid_tuning_guide_fixedwing.md b/docs/uk/config_fw/pid_tuning_guide_fixedwing.md index 9384cc76cd..be3043849a 100644 --- a/docs/uk/config_fw/pid_tuning_guide_fixedwing.md +++ b/docs/uk/config_fw/pid_tuning_guide_fixedwing.md @@ -17,6 +17,8 @@ - Надмірні виграші (і швидкий рух серводвигуна) можуть порушити максимальні сили вашої конструкції повітряного корпусу - збільшуйте виграші обережно. - Налаштування крену та тангажу слідують тій самій послідовності. 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. ## Встановлення базового каркасу повітряного корпусу diff --git a/docs/uk/config_rover/basic_setup.md b/docs/uk/config_rover/basic_setup.md index 73340127eb..b01b5ebb0f 100644 --- a/docs/uk/config_rover/basic_setup.md +++ b/docs/uk/config_rover/basic_setup.md @@ -93,7 +93,7 @@ Navigate to [Parameters](../advanced_config/parameters.md) in QGroundControl and One approach to determine an appropriate value is: 1. From a standstill, give the rover full throttle until it reaches the maximum speed. - 2. Disarm the rover and plot the `measured_speed_body_x` from [RoverVelocityStatus](../msg_docs/RoverVelocityStatus.md). + 2. Disarm the rover and plot the `measured_speed_body_x` from [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md). 3. Divide the maximum speed by the time it took to reach it and set this as the value for [RO_ACCEL_LIM](#RO_ACCEL_LIM). Some RC rovers have enough torque to lift up if the maximum acceleration is not limited. diff --git a/docs/uk/config_rover/position_tuning.md b/docs/uk/config_rover/position_tuning.md index 854d1ab9b9..139b3db7aa 100644 --- a/docs/uk/config_rover/position_tuning.md +++ b/docs/uk/config_rover/position_tuning.md @@ -43,7 +43,7 @@ To tune the position controller configure the [parameters](../advanced_config/pa ::: -3. Plot the `adjusted_speed_body_x_setpoint` and `measured_speed_body_x` from the [RoverVelocityStatus](../msg_docs/RoverVelocityStatus.md) message over each other. +3. Plot the `adjusted_speed_body_x_setpoint` and `measured_speed_body_x` from the [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) message over each other. If the tracking of these setpoints is not satisfactory adjust the values for [RO_SPEED_P](../advanced_config/parameter_reference.md#RO_SPEED_P) and [RO_SPEED_I](../advanced_config/parameter_reference.md#RO_SPEED_I). ## Path Following diff --git a/docs/uk/config_rover/velocity_tuning.md b/docs/uk/config_rover/velocity_tuning.md index 5864698f4b..b7800b1822 100644 --- a/docs/uk/config_rover/velocity_tuning.md +++ b/docs/uk/config_rover/velocity_tuning.md @@ -28,7 +28,7 @@ To tune the velocity controller configure the following [parameters](../advanced 1. Set [RO_SPEED_P](#RO_SPEED_P) and [RO_SPEED_I](#RO_SPEED_I) to zero. This way the speed is only controlled by the feed-forward term, which makes it easier to tune. 2. Put the rover in [Position mode](../flight_modes_rover/manual.md#position-mode) and then move the left stick of your controller up and/or down and hold it at a few different levels for a couple of seconds each. - 3. Disarm the rover and from the flight log plot the `adjusted_speed_body_x_setpoint` and the `measured_speed_body_x` from the [RoverVelocityStatus](../msg_docs/RoverVelocityStatus.md) message over each other. + 3. Disarm the rover and from the flight log plot the `adjusted_speed_body_x_setpoint` and the `measured_speed_body_x` from the [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) message over each other. 4. If the actual speed of the rover is higher than the speed setpoint, increase [RO_MAX_THR_SPEED](#RO_MAX_THR_SPEED). If it is the other way around decrease the parameter and repeat until you are satisfied with the setpoint tracking. diff --git a/docs/uk/dev_log/ulog_file_format.md b/docs/uk/dev_log/ulog_file_format.md index 4e15845983..f091e3af8c 100644 --- a/docs/uk/dev_log/ulog_file_format.md +++ b/docs/uk/dev_log/ulog_file_format.md @@ -218,7 +218,7 @@ A key defined in the Information message must be unique. Означає, що н | `char[value_len] ver_sw_branch` | git branch | "master" | | `uint32_t ver_sw_release` | Версія програмного забезпечення (див. нижче) | 0x010401ff | | `char[value_len] sys_os_name` | Назва операційної системи | "Linux" | -| `char[value_len] sys_os_ve`r | Версія ОС (git tag) | "9f82919" | +| `char[value_len] sys_os_ver` | Версія ОС (git tag) | "9f82919" | | `uint32_t ver_os_release` | Версія ОС (див. нижче) | 0x010401ff | | `char[value_len] sys_toolchain` | Назва набору інструментів | "GNU GCC" | | `char[value_len] sys_toolchain_ver` | Версія інструментального набору | "6.2.1" | diff --git a/docs/uk/features_fw/gain_compression.md b/docs/uk/features_fw/gain_compression.md new file mode 100644 index 0000000000..e05a214b12 --- /dev/null +++ b/docs/uk/features_fw/gain_compression.md @@ -0,0 +1,24 @@ +# Gain compression + + + +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. + +![Gain compression diagram](../../assets/config/fw/gain_compression_diagram.png) + +## Використання + +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. + +## Параметри + +- [FW_GC_EN](../advanced_config/parameter_reference.md#FW_GC_EN) +- [FW_GC_GAIN_MIN](../advanced_config/parameter_reference.md#FW_GC_GAIN_MIN) diff --git a/docs/uk/features_fw/index.md b/docs/uk/features_fw/index.md new file mode 100644 index 0000000000..7eab8e9c6c --- /dev/null +++ b/docs/uk/features_fw/index.md @@ -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) diff --git a/docs/uk/middleware/dds_topics.md b/docs/uk/middleware/dds_topics.md index 7420e8b9bd..02481cb7d5 100644 --- a/docs/uk/middleware/dds_topics.md +++ b/docs/uk/middleware/dds_topics.md @@ -4,38 +4,41 @@ This document is [auto-generated](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/msg/generate_msg_docs.py) from the source code. ::: -The [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) file specifies which uORB message definitions are compiled into the [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) and/or [zenoh](../modules/modules_driver.md#zenoh) module when [PX4 is built](../middleware/uxrce_dds.md#code-generation), and hence which topics are available for ROS 2 applications to subscribe or publish (by default). +The [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) file specifies which uORB message definitions are compiled into the [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) module when [PX4 is built](../middleware/uxrce_dds.md#code-generation), and hence which topics are available for ROS 2 applications to subscribe or publish (by default). This document shows a markdown-rendered version of [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml), listing the publications, subscriptions, and so on. ## Publications -| Topic | Тип | Rate Limit | -| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | -| `/fmu/out/register_ext_component_reply` | [px4_msgs::msg::RegisterExtComponentReply](../msg_docs/RegisterExtComponentReply.md) | | -| `/fmu/out/arming_check_request` | [px4_msgs::msg::ArmingCheckRequest](../msg_docs/ArmingCheckRequest.md) | 5.0 | -| `/fmu/out/mode_completed` | [px4_msgs::msg::ModeCompleted](../msg_docs/ModeCompleted.md) | 50.0 | -| `/fmu/out/battery_status` | [px4_msgs::msg::BatteryStatus](../msg_docs/BatteryStatus.md) | 1.0 | -| `/fmu/out/collision_constraints` | [px4_msgs::msg::CollisionConstraints](../msg_docs/CollisionConstraints.md) | 50.0 | -| `/fmu/out/estimator_status_flags` | [px4_msgs::msg::EstimatorStatusFlags](../msg_docs/EstimatorStatusFlags.md) | 5.0 | -| `/fmu/out/failsafe_flags` | [px4_msgs::msg::FailsafeFlags](../msg_docs/FailsafeFlags.md) | 5.0 | -| `/fmu/out/manual_control_setpoint` | [px4_msgs::msg::ManualControlSetpoint](../msg_docs/ManualControlSetpoint.md) | 25.0 | -| `/fmu/out/message_format_response` | [px4_msgs::msg::MessageFormatResponse](../msg_docs/MessageFormatResponse.md) | | -| `/fmu/out/position_setpoint_triplet` | [px4_msgs::msg::PositionSetpointTriplet](../msg_docs/PositionSetpointTriplet.md) | 5.0 | -| `/fmu/out/sensor_combined` | [px4_msgs::msg::SensorCombined](../msg_docs/SensorCombined.md) | | -| `/fmu/out/timesync_status` | [px4_msgs::msg::TimesyncStatus](../msg_docs/TimesyncStatus.md) | 10.0 | -| `/fmu/out/vehicle_land_detected` | [px4_msgs::msg::VehicleLandDetected](../msg_docs/VehicleLandDetected.md) | 5.0 | -| `/fmu/out/vehicle_attitude` | [px4_msgs::msg::VehicleAttitude](../msg_docs/VehicleAttitude.md) | | -| `/fmu/out/vehicle_control_mode` | [px4_msgs::msg::VehicleControlMode](../msg_docs/VehicleControlMode.md) | 50.0 | -| `/fmu/out/vehicle_command_ack` | [px4_msgs::msg::VehicleCommandAck](../msg_docs/VehicleCommandAck.md) | | -| `/fmu/out/vehicle_global_position` | [px4_msgs::msg::VehicleGlobalPosition](../msg_docs/VehicleGlobalPosition.md) | 50.0 | -| `/fmu/out/vehicle_gps_position` | [px4_msgs::msg::SensorGps](../msg_docs/SensorGps.md) | 50.0 | -| `/fmu/out/vehicle_local_position` | [px4_msgs::msg::VehicleLocalPosition](../msg_docs/VehicleLocalPosition.md) | 50.0 | -| `/fmu/out/vehicle_odometry` | [px4_msgs::msg::VehicleOdometry](../msg_docs/VehicleOdometry.md) | | -| `/fmu/out/vehicle_status` | [px4_msgs::msg::VehicleStatus](../msg_docs/VehicleStatus.md) | 5.0 | -| `/fmu/out/airspeed_validated` | [px4_msgs::msg::AirspeedValidated](../msg_docs/AirspeedValidated.md) | 50.0 | -| `/fmu/out/vtol_vehicle_status` | [px4_msgs::msg::VtolVehicleStatus](../msg_docs/VtolVehicleStatus.md) | | -| `/fmu/out/home_position` | [px4_msgs::msg::HomePosition](../msg_docs/HomePosition.md) | 5.0 | +| Topic | Тип | Rate Limit | +| ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | +| `/fmu/out/register_ext_component_reply` | [px4_msgs::msg::RegisterExtComponentReply](../msg_docs/RegisterExtComponentReply.md) | | +| `/fmu/out/arming_check_request` | [px4_msgs::msg::ArmingCheckRequest](../msg_docs/ArmingCheckRequest.md) | 5.0 | +| `/fmu/out/mode_completed` | [px4_msgs::msg::ModeCompleted](../msg_docs/ModeCompleted.md) | 50.0 | +| `/fmu/out/battery_status` | [px4_msgs::msg::BatteryStatus](../msg_docs/BatteryStatus.md) | 1.0 | +| `/fmu/out/collision_constraints` | [px4_msgs::msg::CollisionConstraints](../msg_docs/CollisionConstraints.md) | 50.0 | +| `/fmu/out/estimator_status_flags` | [px4_msgs::msg::EstimatorStatusFlags](../msg_docs/EstimatorStatusFlags.md) | 5.0 | +| `/fmu/out/failsafe_flags` | [px4_msgs::msg::FailsafeFlags](../msg_docs/FailsafeFlags.md) | 5.0 | +| `/fmu/out/manual_control_setpoint` | [px4_msgs::msg::ManualControlSetpoint](../msg_docs/ManualControlSetpoint.md) | 25.0 | +| `/fmu/out/message_format_response` | [px4_msgs::msg::MessageFormatResponse](../msg_docs/MessageFormatResponse.md) | | +| `/fmu/out/position_setpoint_triplet` | [px4_msgs::msg::PositionSetpointTriplet](../msg_docs/PositionSetpointTriplet.md) | 5.0 | +| `/fmu/out/sensor_combined` | [px4_msgs::msg::SensorCombined](../msg_docs/SensorCombined.md) | | +| `/fmu/out/timesync_status` | [px4_msgs::msg::TimesyncStatus](../msg_docs/TimesyncStatus.md) | 10.0 | +| `/fmu/out/transponder_report` | [px4_msgs::msg::TransponderReport](../msg_docs/TransponderReport.md) | | +| `/fmu/out/vehicle_land_detected` | [px4_msgs::msg::VehicleLandDetected](../msg_docs/VehicleLandDetected.md) | 5.0 | +| `/fmu/out/vehicle_attitude` | [px4_msgs::msg::VehicleAttitude](../msg_docs/VehicleAttitude.md) | 50.0 | +| `/fmu/out/vehicle_control_mode` | [px4_msgs::msg::VehicleControlMode](../msg_docs/VehicleControlMode.md) | 50.0 | +| `/fmu/out/vehicle_command_ack` | [px4_msgs::msg::VehicleCommandAck](../msg_docs/VehicleCommandAck.md) | | +| `/fmu/out/vehicle_global_position` | [px4_msgs::msg::VehicleGlobalPosition](../msg_docs/VehicleGlobalPosition.md) | 50.0 | +| `/fmu/out/vehicle_gps_position` | [px4_msgs::msg::SensorGps](../msg_docs/SensorGps.md) | 50.0 | +| `/fmu/out/vehicle_local_position` | [px4_msgs::msg::VehicleLocalPosition](../msg_docs/VehicleLocalPosition.md) | 50.0 | +| `/fmu/out/vehicle_odometry` | [px4_msgs::msg::VehicleOdometry](../msg_docs/VehicleOdometry.md) | 100.0 | +| `/fmu/out/vehicle_status` | [px4_msgs::msg::VehicleStatus](../msg_docs/VehicleStatus.md) | 5.0 | +| `/fmu/out/airspeed_validated` | [px4_msgs::msg::AirspeedValidated](../msg_docs/AirspeedValidated.md) | 50.0 | +| `/fmu/out/vtol_vehicle_status` | [px4_msgs::msg::VtolVehicleStatus](../msg_docs/VtolVehicleStatus.md) | | +| `/fmu/out/home_position` | [px4_msgs::msg::HomePosition](../msg_docs/HomePosition.md) | 5.0 | +| `/fmu/out/wind` | [px4_msgs::msg::Wind](../msg_docs/Wind.md) | 1.0 | +| `/fmu/out/gimbal_device_attitude_status` | [px4_msgs::msg::GimbalDeviceAttitudeStatus](../msg_docs/GimbalDeviceAttitudeStatus.md) | 20.0 | ## Subscriptions @@ -72,6 +75,13 @@ This document shows a markdown-rendered version of [dds_topics.yaml](https://git | /fmu/in/fixed_wing_lateral_setpoint | [px4_msgs::msg::FixedWingLateralSetpoint](../msg_docs/FixedWingLateralSetpoint.md) | | /fmu/in/longitudinal_control_configuration | [px4_msgs::msg::LongitudinalControlConfiguration](../msg_docs/LongitudinalControlConfiguration.md) | | /fmu/in/lateral_control_configuration | [px4_msgs::msg::LateralControlConfiguration](../msg_docs/LateralControlConfiguration.md) | +| /fmu/in/rover_position_setpoint | [px4_msgs::msg::RoverPositionSetpoint](../msg_docs/RoverPositionSetpoint.md) | +| /fmu/in/rover_speed_setpoint | [px4_msgs::msg::RoverSpeedSetpoint](../msg_docs/RoverSpeedSetpoint.md) | +| /fmu/in/rover_attitude_setpoint | [px4_msgs::msg::RoverAttitudeSetpoint](../msg_docs/RoverAttitudeSetpoint.md) | +| /fmu/in/rover_rate_setpoint | [px4_msgs::msg::RoverRateSetpoint](../msg_docs/RoverRateSetpoint.md) | +| /fmu/in/rover_throttle_setpoint | [px4_msgs::msg::RoverThrottleSetpoint](../msg_docs/RoverThrottleSetpoint.md) | +| /fmu/in/rover_steering_setpoint | [px4_msgs::msg::RoverSteeringSetpoint](../msg_docs/RoverSteeringSetpoint.md) | +| /fmu/in/landing_gear | [px4_msgs::msg::LandingGear](../msg_docs/LandingGear.md) | ## Subscriptions Multi @@ -85,193 +95,192 @@ They are not build into the module, and hence are neither published or subscribe :::details See messages -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [EventV0](../msg_docs/EventV0.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [RoverThrottleSetpoint](../msg_docs/RoverThrottleSetpoint.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [GimbalDeviceAttitudeStatus](../msg_docs/GimbalDeviceAttitudeStatus.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [RoverAttitudeSetpoint](../msg_docs/RoverAttitudeSetpoint.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [InputRc](../msg_docs/InputRc.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [Event](../msg_docs/Event.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) - [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [RoverSteeringSetpoint](../msg_docs/RoverSteeringSetpoint.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) - [CameraCapture](../msg_docs/CameraCapture.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [RoverVelocityStatus](../msg_docs/RoverVelocityStatus.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [Ping](../msg_docs/Ping.md) -- [LedControl](../msg_docs/LedControl.md) -- [Wind](../msg_docs/Wind.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [Gripper](../msg_docs/Gripper.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [LandingGear](../msg_docs/LandingGear.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) - [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [RoverRateSetpoint](../msg_docs/RoverRateSetpoint.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [RoverVelocitySetpoint](../msg_docs/RoverVelocitySetpoint.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) - [GpioOut](../msg_docs/GpioOut.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [Gripper](../msg_docs/Gripper.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [Mission](../msg_docs/Mission.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [Rpm](../msg_docs/Rpm.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [Ping](../msg_docs/Ping.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [LedControl](../msg_docs/LedControl.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [Event](../msg_docs/Event.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) - [VelocityLimits](../msg_docs/VelocityLimits.md) - [MagWorkerData](../msg_docs/MagWorkerData.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [Rpm](../msg_docs/Rpm.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) - [Cpuload](../msg_docs/Cpuload.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [EscReport](../msg_docs/EscReport.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [TransponderReport](../msg_docs/TransponderReport.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) - [MavlinkLog](../msg_docs/MavlinkLog.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [Mission](../msg_docs/Mission.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [RoverPositionSetpoint](../msg_docs/RoverPositionSetpoint.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [SensorTemp](../msg_docs/SensorTemp.md) - [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) - [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [CameraStatus](../msg_docs/CameraStatus.md) - [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [InputRc](../msg_docs/InputRc.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [EscReport](../msg_docs/EscReport.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [EventV0](../msg_docs/EventV0.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [IrlockReport](../msg_docs/IrlockReport.md) ::: diff --git a/docs/uk/modules/modules_driver.md b/docs/uk/modules/modules_driver.md index c3ba2a16c1..eff8ae0e99 100644 --- a/docs/uk/modules/modules_driver.md +++ b/docs/uk/modules/modules_driver.md @@ -2,6 +2,7 @@ Підкатегорії: +- [Adc](modules_driver_adc.md) - [Airspeed Sensor](modules_driver_airspeed_sensor.md) - [Baro](modules_driver_baro.md) - [Camera](modules_driver_camera.md) @@ -46,66 +47,6 @@ MCP23009 [arguments...] status print status info ``` -## adc - -Source: [drivers/adc/board_adc](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/adc/board_adc) - -### Опис - -ADC driver. - -### Usage {#adc_usage} - -``` -adc [arguments...] - Commands: - start - - test - [-n] Do not publish ADC report, only system power - - stop - - status print status info -``` - -## ads1115 - -Source: [drivers/adc/ads1115](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/adc/ads1115) - -### Опис - -Driver to enable an external [ADS1115](https://www.adafruit.com/product/1085) ADC connected via I2C. - -The driver is included by default in firmware for boards that do not have an internal analog to digital converter, -such as [PilotPi](../flight_controller/raspberry_pi_pilotpi.md) or [CUAV Nora](../flight_controller/cuav_nora.md) -(search for `CONFIG_DRIVERS_ADC_ADS1115` in board configuration files). - -It is enabled/disabled using the -[ADC_ADS1115_EN](../advanced_config/parameter_reference.md#ADC_ADS1115_EN) -parameter, and is disabled by default. -If enabled, internal ADCs are not used. - -### Usage {#ads1115_usage} - -``` -ads1115 [arguments...] - Commands: - start - [-I] Internal I2C bus(es) - [-X] External I2C bus(es) - [-b ] board-specific bus (default=all) (external SPI: n-th bus - (default=1)) - [-f ] bus frequency in kHz - [-q] quiet startup (no message if no device found) - [-a ] I2C address - default: 72 - - stop - - status print status info -``` - ## atxxxx Source: [drivers/osd/atxxxx](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/osd/atxxxx) @@ -808,6 +749,30 @@ lsm303agr [arguments...] status print status info ``` +## mcp9808 + +Source: [drivers/temperature_sensor/mcp9808](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/temperature_sensor/mcp9808) + +### Usage {#mcp9808_usage} + +``` +mcp9808 [arguments...] + Commands: + start + [-I] Internal I2C bus(es) + [-X] External I2C bus(es) + [-b ] board-specific bus (default=all) (external SPI: n-th bus + (default=1)) + [-f ] bus frequency in kHz + [-q] quiet startup (no message if no device found) + [-a ] I2C address + default: 24 + + stop + + status print status info +``` + ## msp_osd Source: [drivers/osd/msp_osd](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/osd/msp_osd) diff --git a/docs/uk/modules/modules_driver_adc.md b/docs/uk/modules/modules_driver_adc.md new file mode 100644 index 0000000000..a7d153ef43 --- /dev/null +++ b/docs/uk/modules/modules_driver_adc.md @@ -0,0 +1,107 @@ +# Modules Reference: Adc (Driver) + +## TLA2528 + +Source: [drivers/adc/tla2528](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/adc/tla2528) + +### Usage {#TLA2528_usage} + +``` +TLA2528 [arguments...] + Commands: + start + [-I] Internal I2C bus(es) + [-X] External I2C bus(es) + [-b ] board-specific bus (default=all) (external SPI: n-th bus + (default=1)) + [-f ] bus frequency in kHz + [-q] quiet startup (no message if no device found) + + stop + + status print status info +``` + +## adc + +Source: [drivers/adc/board_adc](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/adc/board_adc) + +### Опис + +ADC driver. + +### Usage {#adc_usage} + +``` +adc [arguments...] + Commands: + start + + test + [-n] Do not publish ADC report, only system power + + stop + + status print status info +``` + +## ads1115 + +Source: [drivers/adc/ads1115](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/adc/ads1115) + +### Опис + +Driver to enable an external [ADS1115](https://www.adafruit.com/product/1085) ADC connected via I2C. + +The driver is included by default in firmware for boards that do not have an internal analog to digital converter, +such as [PilotPi](../flight_controller/raspberry_pi_pilotpi.md) or [CUAV Nora](../flight_controller/cuav_nora.md) +(search for `CONFIG_DRIVERS_ADC_ADS1115` in board configuration files). + +It is enabled/disabled using the +[ADC_ADS1115_EN](../advanced_config/parameter_reference.md#ADC_ADS1115_EN) +parameter, and is disabled by default. +If enabled, internal ADCs are not used. + +### Usage {#ads1115_usage} + +``` +ads1115 [arguments...] + Commands: + start + [-I] Internal I2C bus(es) + [-X] External I2C bus(es) + [-b ] board-specific bus (default=all) (external SPI: n-th bus + (default=1)) + [-f ] bus frequency in kHz + [-q] quiet startup (no message if no device found) + [-a ] I2C address + default: 72 + + stop + + status print status info +``` + +## ads7953 + +Source: [drivers/adc/ads7953](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/adc/ads7953) + +### Usage {#ads7953_usage} + +``` +ads7953 [arguments...] + Commands: + start + [-s] Internal SPI bus(es) + [-S] External SPI bus(es) + [-b ] board-specific bus (default=all) (external SPI: n-th bus + (default=1)) + [-c ] chip-select pin (for internal SPI) or index (for external SPI) + [-m ] SPI mode + [-f ] bus frequency in kHz + [-q] quiet startup (no message if no device found) + + stop + + status print status info +``` diff --git a/docs/uk/modules/modules_driver_radio_control.md b/docs/uk/modules/modules_driver_radio_control.md index 473c70c11f..f609cc7759 100644 --- a/docs/uk/modules/modules_driver_radio_control.md +++ b/docs/uk/modules/modules_driver_radio_control.md @@ -16,6 +16,10 @@ crsf_rc [arguments...] start [-d ] RC device values: , default: /dev/ttyS3 + [-b ] RC baudrate + default: 420000 + + inject Inject frame data bytes (for testing) stop diff --git a/docs/uk/msg_docs/AdcReport.md b/docs/uk/msg_docs/AdcReport.md index b7faec43a2..0865953206 100644 --- a/docs/uk/msg_docs/AdcReport.md +++ b/docs/uk/msg_docs/AdcReport.md @@ -1,13 +1,21 @@ # AdcReport (повідомлення UORB) +ADC raw data. + +Communicates raw data from an analog-to-digital converter (ADC) to other modules, such as battery status. + [source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AdcReport.msg) ```c -uint64 timestamp # time since system start (microseconds) -uint32 device_id # unique device ID for the sensor that does not change between power cycles -int16[12] channel_id # ADC channel IDs, negative for non-existent, TODO: should be kept same as array index -int32[12] raw_data # ADC channel raw value, accept negative value, valid if channel ID is positive -uint32 resolution # ADC channel resolution -float32 v_ref # ADC channel voltage reference, use to calculate LSB voltage(lsb=scale/resolution) +# ADC raw data. +# +# Communicates raw data from an analog-to-digital converter (ADC) to other modules, such as battery status. + +uint64 timestamp # [us] Time since system start +uint32 device_id # [-] unique device ID for the sensor that does not change between power cycles +int16[16] channel_id # [-] ADC channel IDs, negative for non-existent, TODO: should be kept same as array index +int32[16] raw_data # [-] ADC channel raw value, accept negative value, valid if channel ID is positive +uint32 resolution # [-] ADC channel resolution +float32 v_ref # [V] ADC channel voltage reference, use to calculate LSB voltage(lsb=scale/resolution) ``` diff --git a/docs/uk/msg_docs/EscReport.md b/docs/uk/msg_docs/EscReport.md index 8106bb4dc6..29ba577826 100644 --- a/docs/uk/msg_docs/EscReport.md +++ b/docs/uk/msg_docs/EscReport.md @@ -16,6 +16,19 @@ uint8 esc_state # State of ESC - depend on Vendor uint8 actuator_function # actuator output function (one of Motor1...MotorN) +uint8 ACTUATOR_FUNCTION_MOTOR1 = 101 +uint8 ACTUATOR_FUNCTION_MOTOR2 = 102 +uint8 ACTUATOR_FUNCTION_MOTOR3 = 103 +uint8 ACTUATOR_FUNCTION_MOTOR4 = 104 +uint8 ACTUATOR_FUNCTION_MOTOR5 = 105 +uint8 ACTUATOR_FUNCTION_MOTOR6 = 106 +uint8 ACTUATOR_FUNCTION_MOTOR7 = 107 +uint8 ACTUATOR_FUNCTION_MOTOR8 = 108 +uint8 ACTUATOR_FUNCTION_MOTOR9 = 109 +uint8 ACTUATOR_FUNCTION_MOTOR10 = 110 +uint8 ACTUATOR_FUNCTION_MOTOR11 = 111 +uint8 ACTUATOR_FUNCTION_MOTOR12 = 112 + uint16 failures # Bitmask to indicate the internal ESC faults int8 esc_power # Applied power 0-100 in % (negative values reserved) diff --git a/docs/uk/msg_docs/InputRc.md b/docs/uk/msg_docs/InputRc.md index 7982c24d97..f874bbd1ee 100644 --- a/docs/uk/msg_docs/InputRc.md +++ b/docs/uk/msg_docs/InputRc.md @@ -37,11 +37,13 @@ bool rc_lost # RC receiver connection status: True,if no frame has arrived in uint16 rc_lost_frame_count # Number of lost RC frames. Note: intended purpose: observe the radio link quality if RSSI is not available. This value must not be used to trigger any failsafe-alike functionality. uint16 rc_total_frame_count # Number of total RC frames. Note: intended purpose: observe the radio link quality if RSSI is not available. This value must not be used to trigger any failsafe-alike functionality. uint16 rc_ppm_frame_length # Length of a single PPM frame. Zero for non-PPM systems +uint16 rc_frame_rate # RC frame rate in msg/second. 0 = invalid uint8 input_source # Input source uint16[18] values # measured pulse widths for each of the supported channels int8 link_quality # link quality. Percentage 0-100%. -1 = invalid float32 rssi_dbm # Actual rssi in units of dBm. NaN = invalid +int8 link_snr # link signal to noise ratio in units of dB. -1 = invalid ``` diff --git a/docs/uk/msg_docs/SensorTemp.md b/docs/uk/msg_docs/SensorTemp.md new file mode 100644 index 0000000000..5ed50541fe --- /dev/null +++ b/docs/uk/msg_docs/SensorTemp.md @@ -0,0 +1,11 @@ +# SensorTemp (UORB message) + +[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorTemp.msg) + +```c +uint64 timestamp # time since system start (microseconds) + +uint32 device_id # unique device ID for the sensor that does not change between power cycles +float32 temperature # Temperature provided by sensor (Celsius) + +``` diff --git a/docs/uk/msg_docs/VehicleCommand.md b/docs/uk/msg_docs/VehicleCommand.md index 5ed9a339c1..c1f81bf149 100644 --- a/docs/uk/msg_docs/VehicleCommand.md +++ b/docs/uk/msg_docs/VehicleCommand.md @@ -28,7 +28,7 @@ uint16 VEHICLE_CMD_DO_ORBIT = 34 # Start orbiting on the circumference of a circ uint16 VEHICLE_CMD_DO_FIGUREEIGHT = 35 # Start flying on the outline of a figure eight defined by the parameters. |[m] Major radius|[m] Minor radius|[m/s] Velocity|Orientation|Latitude/X|Longitude/Y|Altitude/Z| uint16 VEHICLE_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras. |[@enum VEHICLE_ROI] Region of interest mode.|MISSION index/ target ID.|ROI index (allows a vehicle to manage multiple ROI's)|Unused|x the location of the fixed ROI (see MAV_FRAME)|y|z| uint16 VEHICLE_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV. |0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning|0: Disable full path planning (without resetting map), 1: Enable, 2: Enable and reset map/occupancy grid, 3: Enable and reset planned route, but not occupancy grid|Unused|[deg] [@range 0, 360] Yaw angle at goal, in compass degrees|Latitude/X of goal|Longitude/Y of goal|Altitude/Z of goal| -uint16 VEHICLE_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground / hand and transition to fixed wing. |Minimum pitch (if airspeed sensor present), desired pitch without sensor|Unused|Unused|Yaw angle (if magnetometer present), ignored without magnetometer|Latitude|Longitude|Altitude| +uint16 VEHICLE_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground / hand and transition to fixed wing. |Minimum pitch (if airspeed sensor present), desired pitch without sensor|Transition heading, 0: Default, 3: Use specified transition heading|Unused|Yaw angle (if magnetometer present), ignored without magnetometer|Latitude|Longitude|Altitude| uint16 VEHICLE_CMD_NAV_VTOL_LAND = 85 # Transition to MC and land at location. |Unused|Unused|Unused|Desired yaw angle.|Latitude|Longitude|Altitude| uint16 VEHICLE_CMD_NAV_GUIDED_LIMITS = 90 # Set limits for external control. |[s] Timeout - maximum time that external controller will be allowed to control vehicle. 0 means no timeout|[m] Absolute altitude min AMSL - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit|[m] Absolute altitude max - if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit|[m] Horizontal move limit (AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit|Unused|Unused|Unused| uint16 VEHICLE_CMD_NAV_GUIDED_MASTER = 91 # Set id of master controller. |System ID|Component ID|Unused|Unused|Unused|Unused|Unused| diff --git a/docs/uk/msg_docs/index.md b/docs/uk/msg_docs/index.md index a8fff51a29..e41ffbcd19 100644 --- a/docs/uk/msg_docs/index.md +++ b/docs/uk/msg_docs/index.md @@ -84,7 +84,7 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [ActuatorOutputs](ActuatorOutputs.md) - [ActuatorServosTrim](ActuatorServosTrim.md) — Servo trims, added as offset to servo outputs - [ActuatorTest](ActuatorTest.md) -- [AdcReport](AdcReport.md) +- [AdcReport](AdcReport.md) — ADC raw data. - [Airspeed](Airspeed.md) — Airspeed data from sensors - [AirspeedWind](AirspeedWind.md) — Wind estimate (from airspeed_selector) - [AutotuneAttitudeControlStatus](AutotuneAttitudeControlStatus.md) — Autotune attitude control status @@ -259,6 +259,7 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m The topic will not be updated when the vehicle is armed - [SensorSelection](SensorSelection.md) — Sensor ID's for the voted sensors output on the sensor_combined topic. Will be updated on startup of the sensor module and when sensor selection changes +- [SensorTemp](SensorTemp.md) - [SensorUwb](SensorUwb.md) — UWB distance contains the distance information measured by an ultra-wideband positioning system, such as Pozyx or NXP Rddrone. - [SensorsStatus](SensorsStatus.md) — Sensor check metrics. Це значення буде нульовим для датчика, який є первинним або незаповненим. diff --git a/docs/uk/releases/main.md b/docs/uk/releases/main.md index dbce991f2c..e2772ee3b7 100644 --- a/docs/uk/releases/main.md +++ b/docs/uk/releases/main.md @@ -76,6 +76,10 @@ Please continue reading for [upgrade instructions](#upgrade-guide). - Уточнюється +### RC + +- Parse ELRS Status and Link Statistics TX messages in the CRSF parser. + ### Мульти-Ротор - Removed parameters `MPC_{XY/Z/YAW}_MAN_EXPO` and use default value instead, as they were not deemed necessary anymore. ([PX4-Autopilot#25435: Add new flight mode: Altitude Cruise](https://github.com/PX4/PX4-Autopilot/pull/25435)). @@ -89,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. 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)) ### Ровер diff --git a/docs/uk/sensor/barometer.md b/docs/uk/sensor/barometer.md index 20ad975355..93f7563901 100644 --- a/docs/uk/sensor/barometer.md +++ b/docs/uk/sensor/barometer.md @@ -30,17 +30,51 @@ Note that the supported barometer part numbers can be inferred from the driver n - Change the selection order of barometers using the [CAL_BAROx_PRIO](../advanced_config/parameter_reference.md#CAL_BARO0_PRIO) parameters for each barometer. - Disable a barometer by setting its [CAL_BAROx_PRIO](../advanced_config/parameter_reference.md#CAL_BARO0_PRIO) value to `0`. -## Калібрування +## Baro Auto-Calibration (Developers) -Барометри не потребують калібрування. +:::tip +This section documents the automated calibration mechanisms that ensure accurate altitude measurements throughout flight operations. +It is intended primarily for a developer audience who want to understand the underlying mechanisms. +::: - +The system implements two complementary calibration approaches that work together to maintain altitude measurement precision. +Both calibrations are initiated at the beginning after a system boot. +Relative calibration is performed first, followed by GNSS-barometric calibration. -## Інформація для розробників +### Relative Calibration + +Relative baro calibration is **always enabled** and operates automatically during system initialization. +This calibration establishes offset corrections for all secondary baro sensors relative to the primary (selected) sensor. + +This calibration: + +- Eliminates altitude jumps when switching between baro sensors during flight. +- Ensures consistent altitude readings across all available baro sensors. +- Maintains seamless sensor redundancy and failover capability. + +### GNSS-Baro Calibration + +:::info +GNSS-baro calibration requires an operational GNSS receiver with vertical accuracy (EPV) ≤ 8 meters. +Relative calibration must already have completed. +::: + +GNSS-baro calibration adjusts baro sensor offsets to align with absolute altitude measurements from the GNSS receiver. +This calibration is controlled by the [SENS_BAR_AUTOCAL](../advanced_config/parameter_reference.md#SENS_BAR_AUTOCAL) parameter (enabled by default). + +The algorithm monitors GNSS quality, collects altitude differences over a 2-second filtered window, and verifies stability within 4m tolerance. +Once stable, it uses binary search to calculate pressure offsets that align baro altitude with GNSS altitude (0.1m precision), then applies the offset to all sensors and saves the parameters. + +Примітки: + +- **EKF Independence**: GNSS-baro calibration operates independently of EKF2 altitude fusion settings. +- **Execution Timing**: Calibration runs even when [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) altitude fusion is disabled. +- **One-Time Process**: Each calibration session completes once per system startup. +- **Persistence**: Calibration offsets are saved to parameters and persist across reboots. +- **Faulty GNSS Vulnerability**: If GNSS data is faulty during boot, the calibration will use incorrect altitude reference. + See [Faulty GNSS Data During Boot](../advanced_config/tuning_the_ecl_ekf.md#faulty-gnss-data-during-boot) for mitigation strategies. + +## Дивіться також - [Baro driver source code](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/barometer) - [Modules Reference: Baro (Driver)](../modules/modules_driver_baro.md) documentation.