From 5f0e3f600f558911ca3250b4534f390b258636bb Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Thu, 12 Feb 2026 02:06:31 +0000 Subject: [PATCH 01/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/config/_autotune.md | 5 +- docs/en/middleware/dds_topics.md | 364 ++++++++++++++-------------- docs/en/releases/release_process.md | 12 +- 3 files changed, 189 insertions(+), 192 deletions(-) diff --git a/docs/en/config/_autotune.md b/docs/en/config/_autotune.md index c782f212a6..fe5373b169 100644 --- a/docs/en/config/_autotune.md +++ b/docs/en/config/_autotune.md @@ -84,10 +84,7 @@ The test steps are: 1. In QGroundControl, open the menu **Vehicle setup > PID Tuning**: - ![Tuning Setup > Autotune Enabled](../../assets/qgc/setup/autotune/autotune.png) - 2. Select either the _Rate Controller_ or _Attitude Controller_ tabs. - 3. Ensure that the **Autotune enabled** button is enabled (this will display the **Autotune** button and remove the manual tuning selectors). - 4. Read the warning popup and click on **OK** to start tuning. + ![Tuning Setup > Autotune Enabled](../../assets/qgc/setup/autotune/autotune.png) 2. Select either the _Rate Controller_ or _Attitude Controller_ tabs. 3. Ensure that the **Autotune enabled** button is enabled (this will display the **Autotune** button and remove the manual tuning selectors). 4. Read the warning popup and click on **OK** to start tuning.
diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index fa3d583d32..d62a81ab36 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [EventV0](../msg_docs/EventV0.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) - [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [Vtx](../msg_docs/Vtx.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [Gripper](../msg_docs/Gripper.md) - [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [LedControl](../msg_docs/LedControl.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [InputRc](../msg_docs/InputRc.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) - [MagWorkerData](../msg_docs/MagWorkerData.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [Rpm](../msg_docs/Rpm.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [Event](../msg_docs/Event.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [Gripper](../msg_docs/Gripper.md) +- [InputRc](../msg_docs/InputRc.md) - [CellularStatus](../msg_docs/CellularStatus.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [Mission](../msg_docs/Mission.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [EscReport](../msg_docs/EscReport.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [SystemPower](../msg_docs/SystemPower.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) - [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) - [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) - [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [Vtx](../msg_docs/Vtx.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [Ping](../msg_docs/Ping.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [Mission](../msg_docs/Mission.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) - [PowerButtonState](../msg_docs/PowerButtonState.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [Rpm](../msg_docs/Rpm.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [EscReport](../msg_docs/EscReport.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) - [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) - [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [TuneControl](../msg_docs/TuneControl.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) - [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [LedControl](../msg_docs/LedControl.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) - [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [Ping](../msg_docs/Ping.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [Event](../msg_docs/Event.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [EventV0](../msg_docs/EventV0.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) - [GimbalControls](../msg_docs/GimbalControls.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) ::: diff --git a/docs/en/releases/release_process.md b/docs/en/releases/release_process.md index bcf013935a..73745a0cd3 100644 --- a/docs/en/releases/release_process.md +++ b/docs/en/releases/release_process.md @@ -18,12 +18,12 @@ Releases are tracked on the [PX4 Release Project Board](https://github.com/orgs/ Release branches go through the following tag stages: -| Stage | Example | Branch Status | What Gets Merged | -|-------|---------|---------------|------------------| -| **Alpha** | `v1.18.0-alpha1` | Open for fixes | Bug fixes and regression fixes only | -| **Beta** | `v1.18.0-beta1` | Open for fixes | Bug fixes and regression fixes only | -| **RC** | `v1.18.0-rc1` | Frozen | Nothing (unless veto vote passes) | -| **Stable** | `v1.18.0` | Open for fixes | Bug fixes and regression fixes (for point releases) | +| Stage | Example | Branch Status | What Gets Merged | +| ---------- | ---------------- | -------------- | --------------------------------------------------- | +| **Alpha** | `v1.18.0-alpha1` | Open for fixes | Bug fixes and regression fixes only | +| **Beta** | `v1.18.0-beta1` | Open for fixes | Bug fixes and regression fixes only | +| **RC** | `v1.18.0-rc1` | Frozen | Nothing (unless veto vote passes) | +| **Stable** | `v1.18.0` | Open for fixes | Bug fixes and regression fixes (for point releases) | ::: info New features are never merged to release branches. Once a release branch is created from `main`, only bug fixes and regression fixes are accepted. New features must target `main` and will be included in the next release cycle. From e239c017d19f38fc677c0b56909855689636ba1a Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Thu, 12 Feb 2026 13:03:35 +1300 Subject: [PATCH 02/83] Revert "CI: add ccache to macOS" This reverts commit f751974b41c2e0d4c4e7074bc895e0d2068f5e7f. --- Tools/setup/macos.sh | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Tools/setup/macos.sh b/Tools/setup/macos.sh index d1750bcb3d..a3457129ee 100755 --- a/Tools/setup/macos.sh +++ b/Tools/setup/macos.sh @@ -66,12 +66,6 @@ else fi fi -# Install ccache (used by cmake/ccache.cmake to speed up builds) -if ! command -v ccache &> /dev/null; then - echo "[macos.sh] Installing ccache" - brew install ccache -fi - # Python dependencies echo "[macos.sh] Installing Python3 dependencies" # We need to have future to install pymavlink later. From 41179125061eb065190ed37d0b6a6f3572085c95 Mon Sep 17 00:00:00 2001 From: fakerror <7368920+fakerror@users.noreply.github.com> Date: Thu, 12 Feb 2026 13:25:12 +0800 Subject: [PATCH 03/83] docs: clarify rover MAVLink offboard support (#26411) * docs: clarify rover MAVLink offboard support * Apply suggestion from @hamishwillee --------- Co-authored-by: Hamish Willee --- docs/en/flight_modes/offboard.md | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/docs/en/flight_modes/offboard.md b/docs/en/flight_modes/offboard.md index 58143c0605..353c9b75a0 100644 --- a/docs/en/flight_modes/offboard.md +++ b/docs/en/flight_modes/offboard.md @@ -228,7 +228,7 @@ The following MAVLink messages and their particular fields and field values are - Position setpoint **and** velocity setpoint (the velocity setpoint is used as feedforward; it is added to the output of the position controller and the result is used as the input to the velocity controller). - - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL). + - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT). - [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) - The following input combinations are supported: @@ -271,7 +271,7 @@ The following MAVLink messages and their particular fields and field values are - 12288: Loiter setpoint (fly a circle centred on setpoint). - 16384: Idle setpoint (zero throttle, zero roll / pitch). - - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL). + - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT). - [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) - The following input combinations are supported: @@ -280,7 +280,29 @@ The following MAVLink messages and their particular fields and field values are ### Rover -Rover does not support a MAVLink offboard API (ROS2 is supported). +Rover supports offboard control using the generic MAVLink position/velocity setpoint messages listed below. +These are converted into a [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) internally, and then into rover setpoints by the rover offboard modes. +For rover-specific control setpoints and better behaviour we recommend using the [Rover Setpoints](#rover-setpoints) via ROS 2. + +::: info +Rover MAVLink setpoints are gated by the MAVLink parameter [MAV_FWDEXTSP](../advanced_config/parameter_reference.md#MAV_FWDEXTSP) (Forward external setpoint messages). +::: + +- [SET_POSITION_TARGET_LOCAL_NED](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_LOCAL_NED) + - Position setpoint: `x`, `y` in [MAV_FRAME_LOCAL_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_LOCAL_NED) (`z` is ignored by rover modules). + - Velocity setpoint: `vx`, `vy` in [MAV_FRAME_LOCAL_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_LOCAL_NED) or [MAV_FRAME_BODY_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_BODY_NED). + - `yaw`/`yaw_rate`: + - Ackermann/Differential: ignored (in velocity control the yaw setpoint is derived from the velocity direction). + - Mecanum: can be controlled independently (decoupled) using `yaw`/`yaw_rate`. + - Acceleration setpoints (`afx`, `afy`, `afz`) are ignored by rover modules. + +- [SET_POSITION_TARGET_GLOBAL_INT](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_GLOBAL_INT) + - Position setpoint: `lat_int`, `lon_int`, `alt` (converted into local NED internally; rover modules only use the horizontal components). + - Velocity setpoint: `vx`, `vy`, `vz` (rover modules use only the horizontal components). + - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT). + +- [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) + - Not supported for rover offboard control. ## Offboard Parameters From d6c4dd22da73daec44b02cce8ce93459a3cea7bc Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Thu, 12 Feb 2026 05:32:38 +0000 Subject: [PATCH 04/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/middleware/dds_topics.md | 374 +++++++++++++++---------------- 1 file changed, 187 insertions(+), 187 deletions(-) diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index d62a81ab36..a986a30818 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [Gripper](../msg_docs/Gripper.md) -- [InputRc](../msg_docs/InputRc.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [Vtx](../msg_docs/Vtx.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [Ping](../msg_docs/Ping.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [Mission](../msg_docs/Mission.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [SystemPower](../msg_docs/SystemPower.md) - [SensorSelection](../msg_docs/SensorSelection.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [GpioIn](../msg_docs/GpioIn.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [MissionResult](../msg_docs/MissionResult.md) - [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [Rpm](../msg_docs/Rpm.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [Gripper](../msg_docs/Gripper.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [SensorAccel](../msg_docs/SensorAccel.md) - [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) - [IrlockReport](../msg_docs/IrlockReport.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [EscReport](../msg_docs/EscReport.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [LedControl](../msg_docs/LedControl.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [Airspeed](../msg_docs/Airspeed.md) - [SensorUwb](../msg_docs/SensorUwb.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [Event](../msg_docs/Event.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [EventV0](../msg_docs/EventV0.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [GpioOut](../msg_docs/GpioOut.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) - [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) - [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [Mission](../msg_docs/Mission.md) - [VehicleRoi](../msg_docs/VehicleRoi.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [LedControl](../msg_docs/LedControl.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [InputRc](../msg_docs/InputRc.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [Vtx](../msg_docs/Vtx.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [EventV0](../msg_docs/EventV0.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [Event](../msg_docs/Event.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [Rpm](../msg_docs/Rpm.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [EscReport](../msg_docs/EscReport.md) +- [Ping](../msg_docs/Ping.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) ::: From 53a14d10cdbd94a281945ba6c9039a659fadb154 Mon Sep 17 00:00:00 2001 From: Hamish Willee Date: Thu, 12 Feb 2026 16:39:11 +1100 Subject: [PATCH 05/83] docs: Rover flashing update (#26409) --- docs/en/config_rover/index.md | 44 +++++++++++++++++++++-------------- docs/en/frames_rover/index.md | 6 +++++ 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/docs/en/config_rover/index.md b/docs/en/config_rover/index.md index 6c14cc41fb..366377c8ab 100644 --- a/docs/en/config_rover/index.md +++ b/docs/en/config_rover/index.md @@ -18,27 +18,37 @@ A drive mode will only work properly if all the configuration for the preceding ## Flashing the Rover Build -Rovers use a custom build that must be flashed onto your flight controller instead of the default PX4 build: +Rover is built as a [firmware variant](../dev_setup/building_px4.md#px4-make-build-targets), and must be installed as "Custom Firmware" in QGC (other vehicles are present in the default variant). -1. First build the rover firmware for your flight controller from the `main` branch (there is no release build, so you can't just select this build from QGroundControl). +The release versions of Rover firmware for different boards are attached to the associated GitHub release tag. +For example, you can find `px4_fmu-v5x_rover.px4` on [PX4-Autopilot/releases/tag/v1.16.1](https://github.com/PX4/PX4-Autopilot/releases/tag/v1.16.1). +For the `main` branch version of Rover you will need to [build the firmware](#building-rover). - To build for rover with the `make` command, replace the `_default` suffix with `_rover`. - For example, to build rover for px4_fmu-v6x boards, you would use the command: +Load the firmware onto your flight controller as "Custom Firmware" (see [Loading Firmware > Installing PX4 Main, Beta or Custom Firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware)). - ```sh - make px4_fmu-v6x_rover - ``` +## Building Rover - ::: info - You can also enable the modules in default builds by adding these lines to your [board configuration](../hardware/porting_guide_config.md) (e.g. for fmu-v6x you might add them to [`main/boards/px4/fmu-v6x/default.px4board`](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board)): +Rover is built as the `rover` [firmware variant](../dev_setup/building_px4.md#px4-make-build-targets). +What this means is that when building the firmware with the `make` command, you replace the `_default` suffix in the configuration target with `_rover`. - ```sh - CONFIG_MODULES_ROVER_ACKERMANN=y - CONFIG_MODULES_ROVER_DIFFERENTIAL=y - CONFIG_MODULES_ROVER_MECANUM=y - ``` +For example, to build rover for `px4_fmu-v6x` boards, you would use the following command: - Note that adding the rover modules may lead to flash overflow, in which case you will need to disable modules that you do not plan to use (such as those related to multicopter or fixed wing). - ::: +```sh +make px4_fmu-v6x_rover +``` -2. Load the **custom firmware** that you just built onto your flight controller (see [Loading Firmware > Installing PX4 Main, Beta or Custom Firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware)). +Note that configuration targets are constructed with the format "VENDOR_MODEL_VARIANT". + +The built firmware can be installed as custom firmware, as shown above in in [Flashing the Rover Build](#flashing-the-rover-build). + +::: info +You can also enable the modules in default builds by adding these lines to your [board configuration](../hardware/porting_guide_config.md) (e.g. for fmu-v6x you might add them to [`main/boards/px4/fmu-v6x/default.px4board`](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board)): + +```sh +CONFIG_MODULES_ROVER_ACKERMANN=y +CONFIG_MODULES_ROVER_DIFFERENTIAL=y +CONFIG_MODULES_ROVER_MECANUM=y +``` + +Adding the rover modules may lead to flash overflow, in which case you will need to disable modules that you do not plan to use (such as those related to multicopter or fixed wing). +::: diff --git a/docs/en/frames_rover/index.md b/docs/en/frames_rover/index.md index b3a705ed31..f897cf6275 100644 --- a/docs/en/frames_rover/index.md +++ b/docs/en/frames_rover/index.md @@ -7,6 +7,12 @@ Support for rover is [experimental](../airframes/index.md#experimental-vehicles) Maintainer volunteers, [contribution](../contribute/index.md) of new features, new frame configurations, or other improvements would all be very welcome! ::: +::: tip +Rover is not in the default PX4 firmware downloaded from QGC. +Unlike for other vehicle types you will need to install it as custom firmware. +For more information see [Flashing the Rover Build](../config_rover/index.md#flashing-the-rover-build). +::: + ![Rovers](../../assets/airframes/rover/rovers.png) PX4 provides support for the three most common types of rovers: From ec278758eda642005a479e2f8d278f2be8795eaf Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Thu, 12 Feb 2026 05:57:26 +0000 Subject: [PATCH 06/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/middleware/dds_topics.md | 372 +++++++++++++++---------------- 1 file changed, 186 insertions(+), 186 deletions(-) diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index a986a30818..91e30ef6cd 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [SensorSelection](../msg_docs/SensorSelection.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [RtlStatus](../msg_docs/RtlStatus.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [DebugValue](../msg_docs/DebugValue.md) - [MissionResult](../msg_docs/MissionResult.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [Gripper](../msg_docs/Gripper.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [Mission](../msg_docs/Mission.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [LedControl](../msg_docs/LedControl.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [InputRc](../msg_docs/InputRc.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [PwmInput](../msg_docs/PwmInput.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) - [Vtx](../msg_docs/Vtx.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [EventV0](../msg_docs/EventV0.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [GimbalControls](../msg_docs/GimbalControls.md) - [Event](../msg_docs/Event.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [SensorMag](../msg_docs/SensorMag.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [InputRc](../msg_docs/InputRc.md) - [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [PpsCapture](../msg_docs/PpsCapture.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [EscReport](../msg_docs/EscReport.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [Mission](../msg_docs/Mission.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [LedControl](../msg_docs/LedControl.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [EventV0](../msg_docs/EventV0.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [Rpm](../msg_docs/Rpm.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [Gripper](../msg_docs/Gripper.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) - [AirspeedWind](../msg_docs/AirspeedWind.md) - [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [Rpm](../msg_docs/Rpm.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) - [BatteryInfo](../msg_docs/BatteryInfo.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [EscReport](../msg_docs/EscReport.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) - [Ping](../msg_docs/Ping.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) - [GpioIn](../msg_docs/GpioIn.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [CameraStatus](../msg_docs/CameraStatus.md) ::: From 7edf21414ebec7b619db969da3dcfa39f6f008bc Mon Sep 17 00:00:00 2001 From: alexcekay Date: Thu, 12 Feb 2026 14:24:11 +0100 Subject: [PATCH 07/83] manifest: reserve ID for Skynode-N --- platforms/common/pab_manifest.c | 47 +++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/platforms/common/pab_manifest.c b/platforms/common/pab_manifest.c index 5e0cee9a30..c6560d6803 100644 --- a/platforms/common/pab_manifest.c +++ b/platforms/common/pab_manifest.c @@ -402,6 +402,52 @@ static const px4_hw_mft_item_t base_configuration_18[] = { }, }; +// BASE ID 19 Auterion Skynode N +static const px4_hw_mft_item_t base_configuration_19[] = { + { + .id = PX4_MFT_PX4IO, + .present = 0, + .mandatory = 0, + .connection = px4_hw_con_unknown, + }, + { + .id = PX4_MFT_USB, + .present = 0, + .mandatory = 0, + .connection = px4_hw_con_unknown, + }, + { + .id = PX4_MFT_CAN2, + .present = 1, + .mandatory = 1, + .connection = px4_hw_con_onboard, + }, + { + .id = PX4_MFT_CAN3, + .present = 0, + .mandatory = 0, + .connection = px4_hw_con_unknown, + }, + { + .id = PX4_MFT_PM2, + .present = 0, + .mandatory = 0, + .connection = px4_hw_con_unknown, + }, + { + .id = PX4_MFT_ETHERNET, + .present = 1, + .mandatory = 1, + .connection = px4_hw_con_onboard, + }, + { + .id = PX4_MFT_T100_ETH, + .present = 1, + .mandatory = 1, + .connection = px4_hw_con_onboard, + }, +}; + // BASE ID 0x100 Holybro Pixhawk Jetson Baseboard Alaised to ID 0 // BASE ID 0x150 ZeroOne Pixhawk Baseboard Alaised to ID 0 // BASE ID 0x200 AmovLab Pixhawk Baseboard Alaised to ID 0 @@ -419,6 +465,7 @@ static px4_hw_mft_list_entry_t mft_lists[] = { {HW_BASE_ID(16), base_configuration_0, arraySize(base_configuration_0)}, // Auterion Skynode ver 16 {HW_BASE_ID(17), base_configuration_17, arraySize(base_configuration_17)}, // Auterion Skynode ver 17 {HW_BASE_ID(18), base_configuration_18, arraySize(base_configuration_18)}, // Auterion Skynode S ver 18 + {HW_BASE_ID(19), base_configuration_19, arraySize(base_configuration_19)}, // Auterion Skynode N {HW_BASE_ID(0x100), base_configuration_0, arraySize(base_configuration_0)}, // Holybro Pixhawk Jetson Baseboard ver 0x100 Alaised to ID 0 {HW_BASE_ID(0x150), base_configuration_0, arraySize(base_configuration_0)}, // ZeroOne Pixhawk Baseboard ver 0x150 {HW_BASE_ID(0x200), base_configuration_0, arraySize(base_configuration_0)}, // AmovLab Pixhawk Baseboard ver 0x150 From 731d754a1525b152e33c6f9724d8f064956f73a6 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Wed, 11 Feb 2026 20:50:47 -0800 Subject: [PATCH 08/83] ci: enable VOXL2 CI builds with private Docker container Remove modalai_voxl2 and qurt from CI exclusion lists and add container overrides to use the private ghcr.io/px4/px4-dev-voxl2 image which contains the Qualcomm Hexagon SDK. - Add voxl2 build group with x64 runner for cross-compilation - Add GHCR credentials to workflow for private container pull - Add packages:read permission to workflow - Auto-build libfc_sensor.so stub during cmake configure - Handle missing .px4/.elf gracefully in artifact packaging Signed-off-by: Ramon Roche --- .github/workflows/build_all_targets.yml | 4 ++++ Tools/ci/generate_board_targets_json.py | 30 +++++++++++++++++++++---- Tools/ci/package_build_artifacts.sh | 4 ++-- boards/modalai/voxl2/cmake/init.cmake | 16 +++++++++++++ 4 files changed, 48 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build_all_targets.yml b/.github/workflows/build_all_targets.yml index 56e6a6ee1a..cf02ac2e77 100644 --- a/.github/workflows/build_all_targets.yml +++ b/.github/workflows/build_all_targets.yml @@ -29,6 +29,7 @@ concurrency: permissions: contents: write actions: read + packages: read jobs: group_targets: @@ -94,6 +95,9 @@ jobs: fail-fast: false container: image: ${{ matrix.container }} + credentials: + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} steps: - uses: runs-on/action@v2 - uses: actions/checkout@v4 diff --git a/Tools/ci/generate_board_targets_json.py b/Tools/ci/generate_board_targets_json.py index b251d74b51..214edd8186 100755 --- a/Tools/ci/generate_board_targets_json.py +++ b/Tools/ci/generate_board_targets_json.py @@ -36,11 +36,20 @@ if args.filter: target_filter.append(target) default_container = 'ghcr.io/px4/px4-dev:v1.16.0-rc1-258-g0369abd556' +voxl2_container = 'ghcr.io/px4/px4-dev-voxl2:v1.5' build_configs = [] grouped_targets = {} -excluded_boards = ['modalai_voxl2', 'px4_ros2', 'espressif_esp32'] # TODO: fix and enable +excluded_boards = ['px4_ros2', 'espressif_esp32'] # TODO: fix and enable excluded_manufacturers = ['atlflight'] -excluded_platforms = ['qurt'] +excluded_platforms = [] + +# Container overrides for platforms/boards that need a non-default container +platform_container_overrides = { + 'qurt': voxl2_container, +} +board_container_overrides = { + 'modalai_voxl2': voxl2_container, +} excluded_labels = [ 'stackcheck', 'nolockstep', 'replay', 'test', @@ -88,7 +97,20 @@ def process_target(px4board_file, target_name): if platform not in excluded_platforms: container = default_container - if platform == 'posix': + + # Extract board name (manufacturer_board) from target name + board_name = '_'.join(target_name.split('_')[:2]) + + # Apply container overrides for specific platforms or boards + if platform in platform_container_overrides: + container = platform_container_overrides[platform] + if board_name in board_container_overrides: + container = board_container_overrides[board_name] + + # Boards with container overrides get their own group + if board_name in board_container_overrides or platform in platform_container_overrides: + group = 'voxl2' + elif platform == 'posix': group = 'base' if toolchain: if toolchain.startswith('aarch64'): @@ -203,7 +225,7 @@ if (args.group): if(verbose): print(f'=:Architectures: [{grouped_targets.keys()}]') for arch in grouped_targets: - runner = 'x64' if arch == 'nuttx' else 'arm64' + runner = 'x64' if arch in ('nuttx', 'voxl2') else 'arm64' if(verbose): print(f'=:Processing: [{arch}]') temp_group = [] diff --git a/Tools/ci/package_build_artifacts.sh b/Tools/ci/package_build_artifacts.sh index f5ebb73fa0..aaf978b19f 100755 --- a/Tools/ci/package_build_artifacts.sh +++ b/Tools/ci/package_build_artifacts.sh @@ -1,8 +1,8 @@ #!/bin/bash mkdir artifacts -cp **/**/*.px4 artifacts/ -cp **/**/*.elf artifacts/ +cp **/**/*.px4 artifacts/ 2>/dev/null || true +cp **/**/*.elf artifacts/ 2>/dev/null || true for build_dir_path in build/*/ ; do build_dir_path=${build_dir_path::${#build_dir_path}-1} build_dir=${build_dir_path#*/} diff --git a/boards/modalai/voxl2/cmake/init.cmake b/boards/modalai/voxl2/cmake/init.cmake index 357d1d45ec..04f4b65a88 100644 --- a/boards/modalai/voxl2/cmake/init.cmake +++ b/boards/modalai/voxl2/cmake/init.cmake @@ -32,3 +32,19 @@ ############################################################################ include_directories(${PX4_BOARD_DIR}/libfc-sensor-api/inc) + +# Build libfc_sensor.so stub library automatically if not already built +set(FC_SENSOR_LIB ${PX4_BOARD_DIR}/libfc-sensor-api/build/libfc_sensor.so) +if(NOT EXISTS ${FC_SENSOR_LIB}) + execute_process( + COMMAND ${CMAKE_COMMAND} -E make_directory ${PX4_BOARD_DIR}/libfc-sensor-api/build + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} .. + WORKING_DIRECTORY ${PX4_BOARD_DIR}/libfc-sensor-api/build + ) + execute_process( + COMMAND ${CMAKE_COMMAND} --build . + WORKING_DIRECTORY ${PX4_BOARD_DIR}/libfc-sensor-api/build + ) +endif() From d641cc3986938843ce781ab89f5de6efd7ecd5e7 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Wed, 11 Feb 2026 21:18:43 -0800 Subject: [PATCH 09/83] ci: init libfc-sensor-api submodule before building stub The libfc-sensor-api submodule was not being initialized in CI, causing the stub library build to fail silently. Use the existing check_submodules.sh mechanism to ensure the submodule is fetched before attempting to build, and add RESULT_VARIABLE checks so cmake configuration and build failures are caught early. Signed-off-by: Ramon Roche --- boards/modalai/voxl2/cmake/init.cmake | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/boards/modalai/voxl2/cmake/init.cmake b/boards/modalai/voxl2/cmake/init.cmake index 04f4b65a88..4a60cb5d91 100644 --- a/boards/modalai/voxl2/cmake/init.cmake +++ b/boards/modalai/voxl2/cmake/init.cmake @@ -31,6 +31,12 @@ # ############################################################################ +# Initialize libfc-sensor-api submodule (fetches from GitLab if not present) +execute_process( + COMMAND Tools/check_submodules.sh boards/modalai/voxl2/libfc-sensor-api + WORKING_DIRECTORY ${PX4_SOURCE_DIR} +) + include_directories(${PX4_BOARD_DIR}/libfc-sensor-api/inc) # Build libfc_sensor.so stub library automatically if not already built @@ -42,9 +48,17 @@ if(NOT EXISTS ${FC_SENSOR_LIB}) execute_process( COMMAND ${CMAKE_COMMAND} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} .. WORKING_DIRECTORY ${PX4_BOARD_DIR}/libfc-sensor-api/build + RESULT_VARIABLE FC_SENSOR_CMAKE_RESULT ) + if(NOT FC_SENSOR_CMAKE_RESULT EQUAL 0) + message(FATAL_ERROR "Failed to configure libfc_sensor stub library") + endif() execute_process( COMMAND ${CMAKE_COMMAND} --build . WORKING_DIRECTORY ${PX4_BOARD_DIR}/libfc-sensor-api/build + RESULT_VARIABLE FC_SENSOR_BUILD_RESULT ) + if(NOT FC_SENSOR_BUILD_RESULT EQUAL 0) + message(FATAL_ERROR "Failed to build libfc_sensor stub library") + endif() endif() From a38b10c9d03d3c15823aeb3b351b40823c5790a3 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Thu, 12 Feb 2026 13:55:29 -0800 Subject: [PATCH 10/83] docs: modernize README (#26458) * docs: modernize README with hero logo, vehicle icons, and fixed links Add PX4 and Dronecode SVG logos to the repo, replace broken external Dronecode logo URL, fix SITL badge branch from master to main, and restructure the README with centered branding, airframe icon row, quick-start section, and consolidated documentation links. --- README.md | 121 ++++++++++++++------- docs/.vitepress/config.mjs | 66 ++++++++++- docs/assets/site/dronecode_logo.svg | 86 +++++++++++++++ docs/assets/site/px4_logo.svg | 163 ++++++++++++++++++++++++++++ docs/en/index.md | 90 ++++----------- docs/index.md | 33 +++--- docs/public/og-image.png | Bin 0 -> 146077 bytes 7 files changed, 435 insertions(+), 124 deletions(-) create mode 100644 docs/assets/site/dronecode_logo.svg create mode 100644 docs/assets/site/px4_logo.svg create mode 100644 docs/public/og-image.png diff --git a/README.md b/README.md index 8353f3add6..bf4d74bb76 100644 --- a/README.md +++ b/README.md @@ -1,62 +1,109 @@ -# PX4 Drone Autopilot +

+ + PX4 Autopilot + +

-[![Releases](https://img.shields.io/github/release/PX4/PX4-Autopilot.svg)](https://github.com/PX4/PX4-Autopilot/releases) [![DOI](https://zenodo.org/badge/22634/PX4/PX4-Autopilot.svg)](https://zenodo.org/badge/latestdoi/22634/PX4/PX4-Autopilot) +

+ The autopilot stack the industry builds on. +

-[![Build Targets](https://github.com/PX4/PX4-Autopilot/actions/workflows/build_all_targets.yml/badge.svg?branch=main)](https://github.com/PX4/PX4-Autopilot/actions/workflows/build_all_targets.yml) [![SITL Tests](https://github.com/PX4/PX4-Autopilot/workflows/SITL%20Tests/badge.svg?branch=master)](https://github.com/PX4/PX4-Autopilot/actions?query=workflow%3A%22SITL+Tests%22) +

+ Releases + DOI + Build Targets + Discord +

-[![Discord Shield](https://discordapp.com/api/guilds/1022170275984457759/widget.png?style=shield)](https://discord.gg/dronecode) +--- -This repository holds the [PX4](http://px4.io) flight control solution for drones, with the main applications located in the [src/modules](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules) directory. It also contains the PX4 Drone Middleware Platform, which provides drivers and middleware to run drones. +## About -PX4 is highly portable, OS-independent and supports Linux, NuttX and MacOS out of the box. +PX4 is an open-source autopilot stack for drones and unmanned vehicles. It supports multirotors, fixed-wing, VTOL, rovers, and many more experimental platforms from racing quads to industrial survey aircraft. It runs on [NuttX](https://nuttx.apache.org/), Linux, and macOS. Licensed under [BSD 3-Clause](LICENSE). -* Official Website: http://px4.io (License: BSD 3-clause, [LICENSE](https://github.com/PX4/PX4-Autopilot/blob/main/LICENSE)) -* [Supported airframes](https://docs.px4.io/main/en/airframes/airframe_reference.html) ([portfolio](https://px4.io/ecosystem/commercial-systems/)): - * [Multicopters](https://docs.px4.io/main/en/frames_multicopter/) - * [Fixed wing](https://docs.px4.io/main/en/frames_plane/) - * [VTOL](https://docs.px4.io/main/en/frames_vtol/) - * [Autogyro](https://docs.px4.io/main/en/frames_autogyro/) - * [Rover](https://docs.px4.io/main/en/frames_rover/) - * many more experimental types (Blimps, Boats, Submarines, High Altitude Balloons, Spacecraft, etc) -* Releases: [Downloads](https://github.com/PX4/PX4-Autopilot/releases) +## Why PX4 -## Releases +**Modular architecture.** PX4 is built around [uORB](https://docs.px4.io/main/en/middleware/uorb.html), a [DDS](https://docs.px4.io/main/en/middleware/uxrce_dds.html)-compatible publish/subscribe middleware. Modules are fully parallelized and thread safe. You can build custom configurations and trim what you don't need. -Release notes and supporting information for PX4 releases can be found on the [Developer Guide](https://docs.px4.io/main/en/releases/). +**Wide hardware support.** PX4 runs on a wide range of [autopilot boards](https://docs.px4.io/main/en/flight_controller/) and supports an extensive set of sensors, telemetry radios, and actuators through the [Pixhawk](https://pixhawk.org/) ecosystem. -## Building a PX4 based drone, rover, boat or robot +**Developer friendly.** First-class support for [MAVLink](https://mavlink.io/) and [DDS / ROS 2](https://docs.px4.io/main/en/ros2/) integration. Comprehensive [SITL simulation](https://docs.px4.io/main/en/simulation/), hardware-in-the-loop testing, and [log analysis](https://docs.px4.io/main/en/log/flight_log_analysis.html) tools. An active developer community on [Discord](https://discord.gg/dronecode) and the [weekly dev call](https://docs.px4.io/main/en/contribute/). -The [PX4 User Guide](https://docs.px4.io/main/en/) explains how to assemble [supported vehicles](https://docs.px4.io/main/en/airframes/airframe_reference.html) and fly drones with PX4. See the [forum and chat](https://docs.px4.io/main/en/#getting-help) if you need help! +**Vendor neutral governance.** PX4 is hosted under the [Dronecode Foundation](https://www.dronecode.org/), part of the Linux Foundation. Business-friendly BSD-3 license. No single vendor controls the roadmap. +## Supported Vehicles -## Changing Code and Contributing + + + + + + + +
+ + Multicopter
+ Multicopter +
+
+ + Fixed Wing
+ Fixed Wing +
+
+ + VTOL
+ VTOL +
+
+ + Rover
+ Rover +
+
-This [Developer Guide](https://docs.px4.io/main/en/development/development.html) is for software developers who want to modify the flight stack and middleware (e.g. to add new flight modes), hardware integrators who want to support new flight controller boards and peripherals, and anyone who wants to get PX4 working on a new (unsupported) airframe/vehicle. +…and many more: helicopters, autogyros, airships, submarines, boats, and other experimental platforms. These frames have basic support but are not part of the regular flight-test program. See the full airframe reference. -Developers should read the [Guide for Contributions](https://docs.px4.io/main/en/contribute/). -See the [forum and chat](https://docs.px4.io/main/en/#getting-help) if you need help! +## Quick Start +```bash +git clone https://github.com/PX4/PX4-Autopilot.git --recursive +cd PX4-Autopilot +make px4_sitl +``` -## Weekly Dev Call +> [!NOTE] +> See the [Development Guide](https://docs.px4.io/main/en/development/development.html) for toolchain setup and build options. -The PX4 Dev Team syncs up on a [weekly dev call](https://docs.px4.io/main/en/contribute/). +## Documentation & Resources -> **Note** The dev call is open to all interested developers (not just the core dev team). This is a great opportunity to meet the team and contribute to the ongoing development of the platform. It includes a QA session for newcomers. All regular calls are listed in the [Dronecode calendar](https://www.dronecode.org/calendar/). +| Resource | Description | +| --- | --- | +| [User Guide](https://docs.px4.io/main/en/) | Build, configure, and fly with PX4 | +| [Developer Guide](https://docs.px4.io/main/en/development/development.html) | Modify the flight stack, add peripherals, port to new hardware | +| [Airframe Reference](https://docs.px4.io/main/en/airframes/airframe_reference.html) | Full list of supported frames | +| [Autopilot Hardware](https://docs.px4.io/main/en/flight_controller/) | Compatible flight controllers | +| [Release Notes](https://docs.px4.io/main/en/releases/) | What's new in each release | +| [Contribution Guide](https://docs.px4.io/main/en/contribute/) | How to contribute to PX4 | +## Community -## Maintenance Team +- **Weekly Dev Call** — open to all developers ([Dronecode calendar](https://www.dronecode.org/calendar/)) +- **Discord** — [Join the Dronecode server](https://discord.gg/dronecode) +- **Discussion Forum** — [PX4 Discuss](https://discuss.px4.io/) +- **Maintainers** — see [`MAINTAINERS.md`](MAINTAINERS.md) +- **Contributor Stats** — [LFX Insights](https://insights.lfx.linuxfoundation.org/foundation/dronecode) -See the latest list of maintainers on [MAINTAINERS](MAINTAINERS.md) file at the root of the project. +## Contributing -For the latest stats on contributors please see the latest stats for the Dronecode ecosystem in our project dashboard under [LFX Insights](https://insights.lfx.linuxfoundation.org/foundation/dronecode). For information on how to update your profile and affiliations please see the following support link on how to [Complete Your LFX Profile](https://docs.linuxfoundation.org/lfx/my-profile/complete-your-lfx-profile). Dronecode publishes a yearly snapshot of contributions and achievements on its [website under the Reports section](https://dronecode.org). +We welcome contributions of all kinds — bug reports, documentation, new features, and code reviews. Please read the [Contribution Guide](https://docs.px4.io/main/en/contribute/) to get started. -## Supported Hardware +## Governance -For the most up to date information, please visit [PX4 User Guide > Autopilot Hardware](https://docs.px4.io/main/en/flight_controller/). +The PX4 Autopilot project is hosted by the [Dronecode Foundation](https://www.dronecode.org/), a [Linux Foundation](https://www.linuxfoundation.org/) Collaborative Project. Dronecode holds all PX4 trademarks and serves as the project's legal guardian, ensuring vendor-neutral stewardship — no single company owns the name or controls the roadmap. The source code is licensed under the [BSD 3-Clause](LICENSE) license, so you are free to use, modify, and distribute it in your own projects. -## Project Governance - -The PX4 Autopilot project including all of its trademarks is hosted under [Dronecode](https://www.dronecode.org/), part of the Linux Foundation. - -Dronecode Logo -
 
+

+ + Dronecode Logo + +

diff --git a/docs/.vitepress/config.mjs b/docs/.vitepress/config.mjs index e9190be018..c12b4e27ef 100644 --- a/docs/.vitepress/config.mjs +++ b/docs/.vitepress/config.mjs @@ -254,7 +254,63 @@ export default defineConfig({ head.push(["link", { rel: "canonical", href: canonicalUrlToAdd }]); } - // Add any other custom head tags you might want later + // Build version-aware site URL for OG tags + const branch = process.env.BRANCH_NAME || "main"; + const siteUrl = `https://docs.px4.io/${branch}`; + + // OG image — same image for all pages, but URL includes version base + const ogImage = + pageData.frontmatter.ogImage || `${siteUrl}/og-image.png`; + + // Build the actual page URL (version-aware, includes locale prefix) + let ogPath = pageData.relativePath.replace(/\.md$/, ""); + if (ogPath === "index") ogPath = ""; + else if (ogPath.endsWith("/index")) + ogPath = ogPath.slice(0, -"/index".length); + const ogUrl = `${siteUrl}/${ogPath}`; + + // Open Graph + head.push( + [ + "meta", + { + property: "og:title", + content: pageData.title || "PX4 Autopilot", + }, + ], + [ + "meta", + { + property: "og:description", + content: + pageData.description || + "Open-source flight stack for drones and autonomous vehicles.", + }, + ], + ["meta", { property: "og:url", content: ogUrl }], + ["meta", { property: "og:image", content: ogImage }], + ); + + // Twitter Card + head.push( + [ + "meta", + { + name: "twitter:title", + content: pageData.title || "PX4 Autopilot", + }, + ], + [ + "meta", + { + name: "twitter:description", + content: + pageData.description || + "Open-source flight stack for drones and autonomous vehicles.", + }, + ], + ["meta", { name: "twitter:image", content: ogImage }], + ); // Return head that will be merged. return head; @@ -276,6 +332,14 @@ export default defineConfig({ gtag('js', new Date()); gtag('config', 'G-91EWVWRQ93');`, ], + // Open Graph + ["meta", { property: "og:site_name", content: "PX4 Autopilot" }], + ["meta", { property: "og:type", content: "website" }], + ["meta", { property: "og:image:width", content: "1200" }], + ["meta", { property: "og:image:height", content: "630" }], + ["meta", { property: "og:image:type", content: "image/png" }], + // Twitter Card + ["meta", { name: "twitter:card", content: "summary_large_image" }], ], vue: { diff --git a/docs/assets/site/dronecode_logo.svg b/docs/assets/site/dronecode_logo.svg new file mode 100644 index 0000000000..c9315f6b57 --- /dev/null +++ b/docs/assets/site/dronecode_logo.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/site/px4_logo.svg b/docs/assets/site/px4_logo.svg new file mode 100644 index 0000000000..ade96659ab --- /dev/null +++ b/docs/assets/site/px4_logo.svg @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/en/index.md b/docs/en/index.md index 53bcd97f66..f361486948 100644 --- a/docs/en/index.md +++ b/docs/en/index.md @@ -3,19 +3,11 @@ import { useData } from 'vitepress' const { site } = useData(); -
- # PX4 Autopilot User Guide [![Releases](https://img.shields.io/badge/release-main-blue.svg)](https://github.com/PX4/PX4-Autopilot/releases) [![Discuss](https://img.shields.io/badge/discuss-px4-ff69b4.svg)](https://discuss.px4.io//) [![Discord](https://discordapp.com/api/guilds/1022170275984457759/widget.png?style=shield)](https://discord.gg/dronecode) -PX4 is the _Professional Autopilot_. -Developed by world-class developers from industry and academia, and supported by an active world wide community, it powers all kinds of vehicles from racing and cargo drones through to ground vehicles and submersibles. - -:::tip -This guide contains everything you need to assemble, configure, and safely fly a PX4-based vehicle. -Interested in contributing? Check out the [Development](development/development.md) section. -::: +PX4 is an open-source autopilot for drones and autonomous vehicles. It runs on multirotors, fixed-wing, VTOL, helicopters, rovers, and more. This guide covers everything from assembly and configuration to flight operations and development.
@@ -29,83 +21,43 @@ Documented changes since the stable release are captured in the evolving [releas
-## How Do I Get Started? +## For Developers -[Basic Concepts](getting_started/px4_basic_concepts.md) should be read by all users! -It provides an overview of PX4, including features provided by the flight stack (flight modes and safety features) and the supported hardware (flight controller, vehicle types, telemetry systems, RC control systems). +:::tip +Building on PX4 or extending the platform? Start here: [Development Guide](development/development.md). Set up your [dev environment](dev_setup/config_initial.md), [build from source](dev_setup/building_px4.md), run [SITL simulation](simulation/index.md), or integrate via [ROS 2](ros2/index.md) and [MAVSDK](https://mavsdk.mavlink.io/). +::: -Depending on what you want to achieve, the following tips will help you navigate through this guide: +## Getting Started -### I want a vehicle that works with PX4 +Start with [Basic Concepts](getting_started/px4_basic_concepts.md) for an overview of the flight stack, flight modes, safety features, and supported hardware. -In the [Multicopter](frames_multicopter/index.md), [VTOL](frames_vtol/index.md), and [Plane (Fixed-Wing)](frames_plane/index.md) sections you'll find topics like the following (these links are for multicopter): +## Build a Vehicle -- [Complete Vehicles](complete_vehicles_mc/index.md) list "Ready to Fly" (RTF) pre-built vehicles -- [Kits](frames_multicopter/kits.md) lists drones that you have to build yourself from a set of preselected parts -- [DIY Builds](frames_multicopter/diy_builds.md) shows some examples of drones that have been built using parts that were sourced individually +Pick your frame type: [Multicopter](frames_multicopter/index.md), [Fixed-Wing](frames_plane/index.md), [VTOL](frames_vtol/index.md), [Helicopter](frames_helicopter/index.md), or [Rover](frames_rover/index.md). Each section covers complete vehicles, kits, and DIY builds. For assembly instructions see [Assembling a Multicopter](assembly/assembly_mc.md) or the equivalent for your frame. -Both kits and complete vehicles usually include everything you need except for a battery and RC System. -Kits are usually not hard to build, provide a good introduction to how drones fit together, and are relatively inexpensive. -We provide generic instructions for assembly, such as [Assembling a Multicopter](assembly/assembly_mc.md), and most kits come with specific instructions too. +## Configure and Tune -If the kits and complete drones aren't quite right for you then you can build a vehicle from scratch, but this requires more knowledge. -[Airframe Builds](airframes/index.md) lists the supported frame starting points to give you some idea of what is possible. +Once assembled, follow the configuration guide for your vehicle type (e.g. [Multicopter Configuration](config_mc/index.md)). This covers sensor calibration, flight mode setup, and tuning. -Once you have a vehicle that supports PX4 you will need to configure it and calibrate the sensors. -Each vehicle type has its own configuration section that explains the main steps, such as [Multicopter Configuration/Tuning](config_mc/index.md). +## Hardware -### I want to add a payload/camera +The [Hardware Selection & Setup](hardware/drone_parts.md) section covers flight controllers, sensors, telemetry, RC systems, and payloads. See [Payloads](payloads/index.md) for camera and delivery integrations. -The [Payloads](payloads/index.md) section describes how to add a camera and how to configure PX4 to enable you to deliver packages. +## Fly -### I am modifying a supported vehicle +Read [Operations](config/operations.md) to understand safety features and failsafe behavior before your first flight. Then see [Basic Flying (Multicopter)](flying/basic_flying_mc.md) or the equivalent for your frame type. -The [Hardware Selection & Setup](hardware/drone_parts.md) section provides both high level and product-specific information about hardware that you might use with PX4 and its configuration. -This is the first place you should look if you want to modify a drone and add new components. +## Support -### I want to fly - -Before you fly you should read [Operations](config/operations.md) to understand how to set up the safety features of your vehicle and the common behaviours of all frame types. -Once you've done that you're ready to fly. - -Basic instructions for flying each vehicle type are provided in the respective sections, such as [Basic Flying (Multicopter)](flying/basic_flying_mc.md). - -### I want to run PX4 on a new Flight Controller and extend the platform - -The [Development](development/development.md) section explains how to support new airframes and types of vehicles, modify flight algorithms, add new modes, integrate new hardware, communicate with PX4 from outside the flight controller, and contribute to PX4. - -## Getting Help - -The [Support](contribute/support.md) page explains how to get help from the core dev team and the wider community. - -Among other things it covers: - -- [Forums where you can get help](contribute/support.md#forums-and-chat) -- [Diagnosing issues](contribute/support.md#diagnosing-problems) -- [How to report bugs](contribute/support.md#issue-bug-reporting) -- [Weekly dev call](contribute/support.md#weekly-dev-call) - -## Reporting Bugs & Issues - -If you have any problems using PX4 first post them on the [support forums](contribute/support.md#forums-and-chat) (as they may be caused by vehicle configuration). - -If directed by the development team, code issues may be raised on [Github here](https://github.com/PX4/PX4-Autopilot/issues). -Where possible provide [flight logs](getting_started/flight_reporting.md) and other information requested in the issue template. +Get help on the [discussion forums](https://discuss.px4.io/) or [Discord](https://discord.gg/dronecode). See the [Support](contribute/support.md) page for diagnosing problems, reporting bugs, and joining the [weekly dev call](contribute/dev_call.md). ## Contributing -Information on how to contribute to code and documentation can be found in the [Contributing](contribute/index.md) section: - -- [Code](contribute/index.md) -- [Documentation](contribute/docs.md) -- [Translation](contribute/translation.md) +See the [Contributing](contribute/index.md) section for code, [documentation](contribute/docs.md), and [translation](contribute/translation.md) guidelines. ## Translations -There are several [translations](contribute/translation.md) of this guide. -You can access these from the Languages menu (top right): - -![Language Selector](../assets/vuepress/language_selector.png) +There are several [translations](contribute/translation.md) of this guide. Use the language selector in the top navigation. @@ -141,9 +93,9 @@ The following icons used in this library are licensed separately (as shown below ## Governance -The PX4 flight stack is hosted under the governance of the [Dronecode Project](https://dronecode.org/). +The PX4 Autopilot project is hosted by the [Dronecode Foundation](https://www.dronecode.org/), a [Linux Foundation](https://www.linuxfoundation.org/) Collaborative Project. Dronecode holds all PX4 trademarks and serves as the project's legal guardian, ensuring vendor-neutral stewardship. No single company owns the name or controls the roadmap. The source code is licensed under the [BSD 3-Clause](https://opensource.org/license/BSD-3-Clause) license, so you are free to use, modify, and distribute it in your own projects. -Dronecode Logo +Dronecode Logo Linux Foundation Logo
 
diff --git a/docs/index.md b/docs/index.md index 20f2371f3e..6ac4d4ab85 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,9 +4,9 @@ layout: home hero: name: "PX4" - text: "User Guide" - tagline: PX4 is the Open Source Autopilot for Professional Drone Developers. - image: /logo_pro_small.png + text: "Autopilot" + tagline: Open-source flight stack for drones and autonomous vehicles. BSD-3 licensed. Vendor neutral. + image: /px4-logo.svg actions: - theme: brand text: Read the docs @@ -20,22 +20,21 @@ hero: features: - title: Modular Architecture - details: PX4 is highly modular and extensible both in terms of hardware and software. It utilizes a port-based architecture - which means when developers add components, the extended system does not lose robustness or performance. - - title: Open Source - details: PX4 is co-developed with a global development community. The flightstack is not just fulfilling the needs of one lab or one company, but has been intended as a general toolkit and is widely used and adopted in the industry. - - title: Configurability - details: PX4 offers optimised APIs and SDKs for developers working with integrations. All the modules are self-contained and can be easily exchanged against a different module without modifying the core. Features are easy to deploy and reconfigure. - - title: Autonomy Stack - details: PX4 is designed to be deeply coupled with embedded computer vision for autonomous capabilities . The framework lowers the barrier of entry for developers working on localization and obstacle detection algorithms. - - title: Real-world Validation - details: Thousands of commercial PX4 based systems have been deployed worldwide. In parallel, dedicated flight test team clocking up thousands of flight hours each month running hardware and software tests to ensure the codebase's safety and reliability. + details: Built on uORB, a DDS-compatible publish/subscribe middleware. Every module runs as its own thread, fully parallelized and thread safe. Build custom configurations and strip out what you don't need. + - title: Wide Hardware Support + details: Supports Pixhawk-standard flight controllers and a growing range of boards beyond that standard. DroneCAN peripherals run PX4 firmware in CAN node mode. No vendor lock-in. + - title: Developer Friendly + details: First-class MAVLink and DDS/ROS 2 integration. Comprehensive SITL simulation, hardware-in-the-loop testing, and log analysis tools. MAVSDK provides a high-level SDK/API for programmatic vehicle interaction. + - title: Autonomy Ready + details: Extensible architecture for advanced autonomy. External modes, offboard control, and DDS/ROS 2 interfaces provide the building blocks for computer vision, GPS-denied navigation, and custom flight behaviors. + - title: Proven at Scale + details: Millions of vehicles deployed worldwide across commercial, defense, and research applications. Continuous flight testing validates the codebase across multirotors, fixed-wing, VTOL, helicopters, rovers, and more. - title: Permissive License - details: PX4 is free to use and modify under the terms of the permissive BSD 3-clause license. Which means the software also allows proprietary use and allows the releases under the license to be incorporated into proprietary products. + details: BSD 3-Clause. Use it, modify it, ship it in proprietary products. You only need to include the original copyright notice and license text. - title: Interoperability - details: Beyond being a robust flight stack, PX4 offers an ecosystem of supported devices. The project also leads the standardarization effort for the advancement of communications, peripherals integration, and power management solutions. - - - title: Powerful Safety Features - details: Great safety features including automated failsafe behaviour, support for different return modes, parachutes etc. are by default already included in the codebase. The features are easily configurable and tunable for custom systems. + details: Part of a modular ecosystem. PX4 (autopilot), MAVLink (protocol), QGroundControl (ground station), Pixhawk (hardware standard), MAVSDK (SDK/API), and ROS 2 via DDS or Zenoh. All Dronecode projects, all open source. + - title: Vendor Neutral Governance + details: Hosted by the Dronecode Foundation under the Linux Foundation. No single company owns the name or controls the roadmap. Community-driven with a weekly open dev call. search: false footer: BSD 3-clause license diff --git a/docs/public/og-image.png b/docs/public/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..5625b82550b2dda50172af7f39f4dc76d335df92 GIT binary patch literal 146077 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

OO#_5NgG5 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 literal 0 HcmV?d00001 From 6a123298e5a6adcdbef0e63024b236209b6be3fe Mon Sep 17 00:00:00 2001 From: Aaron1356 Date: Thu, 12 Feb 2026 15:57:48 -0600 Subject: [PATCH 11/83] [Documentation] Small Doc Update to params for GRF lidars (#26445) * small Doc Update to params for GRF lidars --- docs/en/SUMMARY.md | 2 +- docs/en/sensor/sfxx_lidar.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/SUMMARY.md b/docs/en/SUMMARY.md index 173abd0f54..261c8995d4 100644 --- a/docs/en/SUMMARY.md +++ b/docs/en/SUMMARY.md @@ -253,7 +253,7 @@ - [Benewake TFmini Lidar](sensor/tfmini.md) - [LeddarOne Lidar](sensor/leddar_one.md) - [Lidar-Lite](sensor/lidar_lite.md) - - [Lightware Lidars (SF/LW)](sensor/sfxx_lidar.md) + - [Lightware Lidars (SF/LW/GRF)](sensor/sfxx_lidar.md) - [Lightware SF45 Rotary Lidar](sensor/sf45_rotating_lidar.md) - [TeraRanger](sensor/teraranger.md) - [✘ Lanbao PSK-CM8JL65-CC5](sensor/cm8jl65_ir_distance_sensor.md) diff --git a/docs/en/sensor/sfxx_lidar.md b/docs/en/sensor/sfxx_lidar.md index 40d21ada31..e225422805 100644 --- a/docs/en/sensor/sfxx_lidar.md +++ b/docs/en/sensor/sfxx_lidar.md @@ -1,4 +1,4 @@ -# LightWare Lidar (SF1X/SF02/LW20/SF45) +# LightWare Lidar (SF1X/SF02/LW20/SF45/GRF250/GRF500) LightWare develops a range of light-weight, general purpose, laser altimeters ("Lidar") suitable for mounting on UAVs. These are useful for applications including terrain following, precision hovering (e.g. for photography), warning of regulatory height limits, anti-collision sensing etc. From f518f87d0f843d765ccaa6e2f8ece20fa45170fa Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Thu, 12 Feb 2026 22:05:22 +0000 Subject: [PATCH 12/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/middleware/dds_topics.md | 360 +++++++++++++++---------------- 1 file changed, 180 insertions(+), 180 deletions(-) diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index 91e30ef6cd..ae78fbc9fa 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [Vtx](../msg_docs/Vtx.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [Event](../msg_docs/Event.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [InputRc](../msg_docs/InputRc.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) - [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [RaptorInput](../msg_docs/RaptorInput.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) - [LogMessage](../msg_docs/LogMessage.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) - [SensorAirflow](../msg_docs/SensorAirflow.md) -- [ActionRequest](../msg_docs/ActionRequest.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [Mission](../msg_docs/Mission.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [LedControl](../msg_docs/LedControl.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [InputRc](../msg_docs/InputRc.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) - [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) - [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [EventV0](../msg_docs/EventV0.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) - [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [EscReport](../msg_docs/EscReport.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [ActionRequest](../msg_docs/ActionRequest.md) - [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [Rpm](../msg_docs/Rpm.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) - [GeneratorStatus](../msg_docs/GeneratorStatus.md) - [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) - [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [Mission](../msg_docs/Mission.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [LedControl](../msg_docs/LedControl.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [EventV0](../msg_docs/EventV0.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) - [EstimatorStates](../msg_docs/EstimatorStates.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [GpioRequest](../msg_docs/GpioRequest.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) - [SatelliteInfo](../msg_docs/SatelliteInfo.md) - [IrlockReport](../msg_docs/IrlockReport.md) -- [Rpm](../msg_docs/Rpm.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [Gripper](../msg_docs/Gripper.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) - [Ping](../msg_docs/Ping.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [UlogStream](../msg_docs/UlogStream.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [Vtx](../msg_docs/Vtx.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [EscReport](../msg_docs/EscReport.md) +- [Gripper](../msg_docs/Gripper.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [Event](../msg_docs/Event.md) +- [RadioStatus](../msg_docs/RadioStatus.md) - [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [CameraStatus](../msg_docs/CameraStatus.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) ::: From d9996742bee2d87e0a90d771da10c641cbbe1603 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Wed, 11 Feb 2026 10:27:13 -0800 Subject: [PATCH 13/83] setup: drop Ubuntu 18.04/20.04 support from ubuntu.sh Remove Gazebo Classic installation branches for Ubuntu 18.04 and 20.04. The script now only supports Ubuntu 22.04 and 24.04 with Gazebo Harmonic. Supported Ubuntu LTS versions going forward: - Ubuntu 24.04 (primary, used in CI and release builds) - Ubuntu 22.04 (secondary, still supported) When Ubuntu 26.04 LTS releases we will bump to 26.04/24.04. Signed-off-by: Ramon Roche --- Tools/setup/ubuntu.sh | 43 ++++++++++++------------------------------- 1 file changed, 12 insertions(+), 31 deletions(-) diff --git a/Tools/setup/ubuntu.sh b/Tools/setup/ubuntu.sh index a1cbc78864..f84db9a603 100755 --- a/Tools/setup/ubuntu.sh +++ b/Tools/setup/ubuntu.sh @@ -6,9 +6,9 @@ set -e ## Can also be used in docker. ## ## Installs: -## - Common dependencies and tools for nuttx, jMAVSim, Gazebo +## - Common dependencies and tools for nuttx, Gazebo ## - NuttX toolchain (omit with arg: --no-nuttx) -## - jMAVSim and Gazebo9 simulator (omit with arg: --no-sim-tools) +## - Gazebo Harmonic simulator (omit with arg: --no-sim-tools) ## INSTALL_NUTTX="true" @@ -207,37 +207,18 @@ if [[ $INSTALL_SIM == "true" ]]; then bc \ ; - # Gazebo / Gazebo classic installation - if [[ "${UBUNTU_RELEASE}" == "18.04" || "${UBUNTU_RELEASE}" == "20.04" ]]; then - sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list' - wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add - - # Update list, since new gazebo-stable.list has been added - sudo apt-get update -y --quiet + # Gazebo Harmonic installation (Ubuntu 22.04+) + echo "[ubuntu.sh] Gazebo (Harmonic) will be installed" + # Add Gazebo binary repository + sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null + sudo apt-get update -y --quiet - # Install Gazebo classic - if [[ "${UBUNTU_RELEASE}" == "18.04" ]]; then - gazebo_classic_version=9 - gazebo_packages="gazebo$gazebo_classic_version libgazebo$gazebo_classic_version-dev" - else - # default and Ubuntu 20.04 - gazebo_classic_version=11 - gazebo_packages="gazebo$gazebo_classic_version libgazebo$gazebo_classic_version-dev" - fi - else - # Expects Ubuntu 22.04 > by default - echo "[ubuntu.sh] Gazebo (Harmonic) will be installed" - echo "[ubuntu.sh] Earlier versions will be removed" - # Add Gazebo binary repository - sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null - sudo apt-get update -y --quiet + # Install Gazebo + gazebo_packages="gz-harmonic libunwind-dev" - # Install Gazebo - gazebo_packages="gz-harmonic libunwind-dev" - - if [[ "${UBUNTU_RELEASE}" == "24.04" ]]; then - gazebo_packages="$gazebo_packages cppzmq-dev" - fi + if [[ "${UBUNTU_RELEASE}" == "24.04" ]]; then + gazebo_packages="$gazebo_packages cppzmq-dev" fi sudo DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \ From df242827d2cd2376f5b1eb5d76571bce258230aa Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Wed, 11 Feb 2026 10:28:18 -0800 Subject: [PATCH 14/83] docs: remove outdated Ubuntu/GCC references from build instructions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove Ubuntu 18.04 troubleshooting sections (compile errors, VSCode inotify) — Ubuntu 18.04 is no longer supported - Remove Gazebo Classic SITL dropdown from first build section - Update FMUv2 flash warning to reference gcc-arm-none-eabi from current Ubuntu LTS instead of vague "CI/docker" reference - Update flash overflow guidance to point at Ubuntu LTS toolchain - Simplify "too many open files" error example (remove old GCC 7.2.1 path from 2017) Signed-off-by: Ramon Roche --- docs/en/dev_setup/building_px4.md | 40 +++---------------------------- 1 file changed, 3 insertions(+), 37 deletions(-) diff --git a/docs/en/dev_setup/building_px4.md b/docs/en/dev_setup/building_px4.md index b5ab7ccdc3..4e941d2fb6 100644 --- a/docs/en/dev_setup/building_px4.md +++ b/docs/en/dev_setup/building_px4.md @@ -39,15 +39,6 @@ Navigate into the **PX4-Autopilot** directory and start [Gazebo SITL](../sim_gaz make px4_sitl gz_x500 ``` -::: details If you installed Gazebo Classic -Start [Gazebo Classic SITL](../sim_gazebo_classic/index.md) using the following command: - -```sh -make px4_sitl gazebo-classic -``` - -::: - This will bring up the PX4 console: ![PX4 Console](../../assets/toolchain/console_gazebo.png) @@ -126,7 +117,7 @@ The following list shows the build commands for the [Pixhawk standard](../flight - [Pixhawk 1 (FMUv2)](../flight_controller/pixhawk.md): `make px4_fmu-v2_default` :::warning - You **must** use a supported version of GCC to build this board (e.g. the same as used by [CI/docker](../test_and_ci/docker.md)) or remove modules from the build. Building with an unsupported GCC may fail, as PX4 is close to the board's 1MB flash limit. + You **must** use a supported version of GCC to build this board (e.g. the `gcc-arm-none-eabi` package from the current Ubuntu LTS, which is the same toolchain used by CI) or remove modules from the build. Building with an unsupported GCC may fail, as PX4 is close to the board's 1MB flash limit. ::: - Pixhawk 1 with 2 MB flash: `make px4_fmu-v3_default` @@ -191,7 +182,7 @@ The `region 'flash' overflowed by XXXX bytes` error indicates that the firmware This is common for `make px4_fmu-v2_default` builds, where the flash size is limited to 1MB. If you're building the _vanilla_ master branch, the most likely cause is using an unsupported version of GCC. -In this case, install the version specified in the [Developer Toolchain](../dev_setup/dev_env.md) instructions. +In this case, install the `gcc-arm-none-eabi` package from the current Ubuntu LTS as described in the [Developer Toolchain](../dev_setup/dev_env.md) instructions. If building your own branch, it is possible that you have increased the firmware size over the 1MB limit. In this case you will need to remove any drivers/modules that you don't need from the build. @@ -204,7 +195,7 @@ The PX4 build system opens a large number of files, so you may exceed this numbe The build toolchain will then report `Too many open files` for many files, as shown below: ```sh -/usr/local/Cellar/gcc-arm-none-eabi/20171218/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/ld: cannot find NuttX/nuttx/fs/libfs.a: Too many open files +arm-none-eabi-ld: cannot find NuttX/nuttx/fs/libfs.a: Too many open files ``` The solution is to increase the maximum allowed number of open files (e.g. to 300). @@ -227,31 +218,6 @@ xcode-select --install sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/ ``` -### Ubuntu 18.04: Compile errors involving arm_none_eabi_gcc - -Build issues related to `arm_none_eabi_gcc`may be due to a broken g++ toolchain installation. -You can verify that this is the case by checking for missing dependencies using: - -```sh -arm-none-eabi-gcc --version -arm-none-eabi-g++ --version -arm-none-eabi-gdb --version -arm-none-eabi-size --version -``` - -Example of bash output with missing dependencies: - -```sh -arm-none-eabi-gdb --version -arm-none-eabi-gdb: command not found -``` - -This can be resolved by removing and [reinstalling the compiler](https://askubuntu.com/questions/1243252/how-to-install-arm-none-eabi-gdb-on-ubuntu-20-04-lts-focal-fossa). - -### Ubuntu 18.04: Visual Studio Code is unable to watch for file changes in this large workspace - -See [Visual Studio Code IDE (VSCode) > Troubleshooting](../dev_setup/vscode.md#troubleshooting). - ### Failed to import Python packages "Failed to import" errors when running the `make px4_sitl jmavsim` command indicates that some Python packages are not installed (where expected). From 103a61450ee4e2f675423e61fb9f9eb411cf0dfe Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Wed, 11 Feb 2026 10:29:10 -0800 Subject: [PATCH 15/83] docs: update Ubuntu dev env to reflect supported LTS versions - Replace "older version" collapsible with info block stating supported versions: Ubuntu 24.04 (primary) and 22.04 - Remove Gazebo Classic references (Ubuntu 22.04 section, install step) - Note that GCC version comes from Ubuntu package manager - Clarify that GCC version depends on Ubuntu release Signed-off-by: Ramon Roche --- docs/en/dev_setup/dev_env_linux_ubuntu.md | 25 ++++++++--------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/docs/en/dev_setup/dev_env_linux_ubuntu.md b/docs/en/dev_setup/dev_env_linux_ubuntu.md index 2c80b959ce..0c7917c8d3 100644 --- a/docs/en/dev_setup/dev_env_linux_ubuntu.md +++ b/docs/en/dev_setup/dev_env_linux_ubuntu.md @@ -4,20 +4,14 @@ The following instructions use a bash script to set up the PX4 development envir The environment includes: -- [Gazebo Simulator](../sim_gazebo_gz/index.md) ("Harmonic") -- [Build toolchain for Pixhawk (and other NuttX-based hardware)](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards). - -On Ubuntu 22.04: - -- [Gazebo Classic Simulator](../sim_gazebo_classic/index.md) can be used instead of Gazebo. - Gazebo is nearing feature-parity with Gazebo-Classic on PX4, and will soon replace it for all use cases. +- [Gazebo Simulator](../sim_gazebo_gz/index.md) (Gazebo Harmonic) +- [Build toolchain for Pixhawk (and other NuttX-based hardware)](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards) using the `gcc-arm-none-eabi` compiler from the Ubuntu package manager. The build toolchain for other flight controllers, simulators, and working with ROS are discussed in the [Other Targets](#other-targets) section below. -::: details Can I use an older version of Ubuntu? -PX4 supports the current and last Ubuntu LTS release where possible. -Older releases are not supported (so you can't raise defects against them), but may still work. -For example, Gazebo Classic setup is included in our standard build instructions for macOS, Ubuntu 18.04 and 20.04, and Windows on WSL2 for the same hosts. +:::info +PX4 targets the **current Ubuntu LTS** (24.04) for CI and release builds, with the **previous LTS** (22.04) also supported. +Older Ubuntu versions are not supported and may not work. ::: ## Simulation and NuttX (Pixhawk) Targets @@ -50,19 +44,18 @@ To install the toolchain: - Acknowledge any prompts as the script progress. - You can use the `--no-nuttx` and `--no-sim-tools` options to omit the NuttX and/or simulation tools. -3. If you need Gazebo Classic (Ubuntu 22.04 only) then you can manually remove Gazebo and install it by following the instructions in [Gazebo Classic > Installation](../sim_gazebo_classic/index.md#installation). - -4. Restart the computer on completion. +3. Restart the computer on completion. :::details Additional notes These notes are provided "for information only": - This setup is supported by the PX4 Dev Team. The instructions may also work on other Debian Linux based systems. -- You can verify the NuttX installation by confirming the `gcc` version as shown: +- You can verify the NuttX installation by confirming `gcc` is available. + The version depends on your Ubuntu release (e.g. GCC 13.2.1 on Ubuntu 24.04): ```sh - $arm-none-eabi-gcc --version + $ arm-none-eabi-gcc --version arm-none-eabi-gcc (15:13.2.rel1-2) 13.2.1 20231009 Copyright (C) 2023 Free Software Foundation, Inc. From 8017baa6e6ebec2de97cce19998322c29a3ea865 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Wed, 11 Feb 2026 10:31:45 -0800 Subject: [PATCH 16/83] docs: remove outdated Ubuntu/Gazebo Classic references docker.md: - Update container hierarchy from focal to jammy - Replace ROS Noetic/Foxy references with ROS 2 Humble - Update docker run example to use humble container - Update SITL example from gazebo-classic to gz_x500 - Update VM tested version from Ubuntu 14.04 to 22.04 vscode.md: - Remove "Ubuntu 18.04" from inotify troubleshooting header (this issue is not Ubuntu-version-specific) dev_env_linux_centos.md: - Update GCC warning to reference current Ubuntu LTS toolchain instead of old Focal Docker file Signed-off-by: Ramon Roche --- docs/en/dev_setup/dev_env_linux_centos.md | 5 +++-- docs/en/dev_setup/vscode.md | 4 ++-- docs/en/test_and_ci/docker.md | 25 ++++++++++------------- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/docs/en/dev_setup/dev_env_linux_centos.md b/docs/en/dev_setup/dev_env_linux_centos.md index e9b23dee5f..92398f30d8 100644 --- a/docs/en/dev_setup/dev_env_linux_centos.md +++ b/docs/en/dev_setup/dev_env_linux_centos.md @@ -39,8 +39,9 @@ You may want to also install `python-pip` and `screen`. Execute the script below to install GCC 7-2017-q4: :::warning -This version of GCC is out of date. -At time of writing the current version on Ubuntu is `9-2020-q2-update` (see [focal nuttx docker file](https://github.com/PX4/PX4-containers/blob/master/docker/Dockerfile_nuttx-focal#L28)) +This version of GCC is very outdated. +PX4 now uses the `gcc-arm-none-eabi` package from the current Ubuntu LTS (GCC 13.2.1 on Ubuntu 24.04). +This CentOS guide is community-maintained and may not produce working builds. ::: ```sh diff --git a/docs/en/dev_setup/vscode.md b/docs/en/dev_setup/vscode.md index 302e68b250..9a4b60a480 100644 --- a/docs/en/dev_setup/vscode.md +++ b/docs/en/dev_setup/vscode.md @@ -124,10 +124,10 @@ Once that is done you don't need to do anything else; the toolchain will automat This section includes guidance on setup and build errors. -### Ubuntu 18.04: "Visual Studio Code is unable to watch for file changes in this large workspace" +### "Visual Studio Code is unable to watch for file changes in this large workspace" This error surfaces on startup. -On some systems, there is an upper-limit of 8192 file handles imposed on applications, which means that VSCode might not be able to detect file modifications in `/PX4-Autopilot`. +On some systems, there is an upper-limit on file handles imposed on applications, which means that VSCode might not be able to detect file modifications in `/PX4-Autopilot`. You can increase this limit to avoid the error, at the expense of memory consumption. Follow the [instructions here](https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc). diff --git a/docs/en/test_and_ci/docker.md b/docs/en/test_and_ci/docker.md index 43f0ee5eb8..03121ff5ab 100644 --- a/docs/en/test_and_ci/docker.md +++ b/docs/en/test_and_ci/docker.md @@ -1,6 +1,6 @@ # PX4 Docker Containers -Docker containers are provided for the complete [PX4 development toolchain](../dev_setup/dev_env.md#supported-targets) including NuttX and Linux based hardware, [Gazebo Classic](../sim_gazebo_classic/index.md) simulation, and [ROS](../simulation/ros_interface.md). +Docker containers are provided for the complete [PX4 development toolchain](../dev_setup/dev_env.md#supported-targets) including NuttX and Linux based hardware, [Gazebo](../sim_gazebo_gz/index.md) simulation, and [ROS 2](../ros2/user_guide.md). This topic shows how to use the [available docker containers](#px4_containers) to access the build environment in a local Linux computer. @@ -41,22 +41,19 @@ The available containers are on [GitHub here](https://github.com/PX4/PX4-contain These allow testing of various build targets and configurations (the included tools can be inferred from their names). The containers are hierarchical, such that containers have the functionality of their parents. -For example, the partial hierarchy below shows that the docker container with NuttX build tools (`px4-dev-nuttx-focal`) does not include ROS 2, while the simulation containers do: +For example, the partial hierarchy below shows that the docker container with NuttX build tools (`px4-dev-nuttx-jammy`) does not include ROS 2, while the simulation containers do: ```plain -- px4io/px4-dev-base-focal - - px4io/px4-dev-nuttx-focal - - px4io/px4-dev-simulation-focal - - px4io/px4-dev-ros-noetic - - px4io/px4-dev-ros2-foxy - - px4io/px4-dev-ros2-rolling - px4io/px4-dev-base-jammy - px4io/px4-dev-nuttx-jammy + - px4io/px4-dev-simulation-jammy + - px4io/px4-dev-ros2-humble + - px4io/px4-dev-ros2-rolling ``` -The most recent version can be accessed using the `latest` tag: `px4io/px4-dev-nuttx-focal:latest` +The most recent version can be accessed using the `latest` tag: `px4io/px4-dev-nuttx-jammy:latest` (available tags are listed for each container on _hub.docker.com_. -For example, the `px4io/px4-dev-nuttx-focal` tags can be found on [hub.docker.com here](https://hub.docker.com/r/px4io/px4-dev-nuttx-focal/tags?page=1&ordering=last_updated)). +For example, the `px4io/px4-dev-nuttx-jammy` tags can be found on [hub.docker.com here](https://hub.docker.com/r/px4io/px4-dev-nuttx-jammy/tags?page=1&ordering=last_updated)). :::tip Typically you should use a recent container, but not necessarily the `latest` (as this changes too often). @@ -137,7 +134,7 @@ docker run -it --privileged \ -v /tmp/.X11-unix:/tmp/.X11-unix:ro \ -e DISPLAY=:0 \ --network host \ ---name=px4-ros px4io/px4-dev-ros2-foxy:2022-07-31 bash +--name=px4-ros px4io/px4-dev-ros2-humble:latest bash ``` ::: info @@ -155,7 +152,7 @@ Verify if everything works by running, for example, SITL: ```sh cd src/PX4-Autopilot #This is -make px4_sitl_default gazebo-classic +make px4_sitl gz_x500 ``` ### Re-enter the Container @@ -219,7 +216,7 @@ This ensures that all files created within the container will be accessible on t #### Graphics Driver Issues -It's possible that running Gazebo Classic will result in a similar error message like the following: +It's possible that running Gazebo will result in a similar error message like the following: ```sh libGL error: failed to load driver: swrast @@ -239,7 +236,7 @@ Any recent Linux distribution should work. The following configuration is tested: -- OS X with VMWare Fusion and Ubuntu 14.04 (Docker container with GUI support on Parallels make the X-Server crash). +- OS X with VMWare Fusion and Ubuntu 22.04 (Docker container with GUI support on Parallels make the X-Server crash). **Memory** From aecd1461d73b341f2f96dff25ea816a145074741 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Wed, 11 Feb 2026 10:40:33 -0800 Subject: [PATCH 17/83] docs: document px4-dev as the recommended container The new px4-dev container replaces the old per-distro container hierarchy from PX4/PX4-containers. It is: - Multi-architecture (linux/amd64 + linux/arm64) - Based on Ubuntu 24.04 - Built from the in-tree Dockerfile via GitHub Actions - Published to both ghcr.io and Docker Hub - Tagged with PX4 versions (e.g. px4-dev:v1.16.0) Mark the legacy per-distro containers (px4-dev-nuttx-jammy, px4-dev-ros2-humble, etc.) as deprecated, note that px4-sim is planned for simulation workflows. Update all examples to use px4-dev instead of legacy containers. Signed-off-by: Ramon Roche --- docs/en/dev_setup/building_px4.md | 10 +++++++ docs/en/test_and_ci/docker.md | 45 +++++++++++++++++-------------- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/docs/en/dev_setup/building_px4.md b/docs/en/dev_setup/building_px4.md index 4e941d2fb6..c683627102 100644 --- a/docs/en/dev_setup/building_px4.md +++ b/docs/en/dev_setup/building_px4.md @@ -79,6 +79,16 @@ cd PX4-Autopilot make px4_fmu-v5_default ``` +:::tip +You can also build using the [px4-dev Docker container](../test_and_ci/docker.md) without installing the toolchain locally. +From the PX4-Autopilot directory: + +```sh +./Tools/docker_run.sh 'make px4_fmu-v5_default' +``` + +::: + A successful run will end with similar output to: ```sh diff --git a/docs/en/test_and_ci/docker.md b/docs/en/test_and_ci/docker.md index 03121ff5ab..82308fe62f 100644 --- a/docs/en/test_and_ci/docker.md +++ b/docs/en/test_and_ci/docker.md @@ -5,8 +5,7 @@ Docker containers are provided for the complete [PX4 development toolchain](../d This topic shows how to use the [available docker containers](#px4_containers) to access the build environment in a local Linux computer. ::: info -Dockerfiles and README can be found on [Github here](https://github.com/PX4/PX4-containers/tree/master?tab=readme-ov-file#container-hierarchy). -They are built automatically on [Docker Hub](https://hub.docker.com/u/px4io/). +The recommended `px4-dev` container is built from the [Dockerfile in the PX4-Autopilot source tree](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/setup/Dockerfile) by the [Container build workflow](https://github.com/PX4/PX4-Autopilot/actions/workflows/dev_container.yml). ::: ## Prerequisites @@ -35,30 +34,36 @@ sudo usermod -aG docker $USER # Log in/out again before using docker! ``` -## Container Hierarchy {#px4_containers} +## px4-dev Container (Recommended) {#px4_containers} -The available containers are on [GitHub here](https://github.com/PX4/PX4-containers/tree/master?tab=readme-ov-file#container-hierarchy). +The **`px4-dev`** container is the recommended container for building PX4 firmware. +It is a single, multi-architecture container (linux/amd64 and linux/arm64) based on Ubuntu 24.04 that includes everything needed to build PX4 for NuttX hardware targets. -These allow testing of various build targets and configurations (the included tools can be inferred from their names). -The containers are hierarchical, such that containers have the functionality of their parents. -For example, the partial hierarchy below shows that the docker container with NuttX build tools (`px4-dev-nuttx-jammy`) does not include ROS 2, while the simulation containers do: +It is published to both registries simultaneously: -```plain -- px4io/px4-dev-base-jammy - - px4io/px4-dev-nuttx-jammy - - px4io/px4-dev-simulation-jammy - - px4io/px4-dev-ros2-humble - - px4io/px4-dev-ros2-rolling -``` +- **GitHub Container Registry:** [ghcr.io/px4/px4-dev](https://github.com/PX4/PX4-Autopilot/pkgs/container/px4-dev) +- **Docker Hub:** [px4io/px4-dev](https://hub.docker.com/r/px4io/px4-dev) -The most recent version can be accessed using the `latest` tag: `px4io/px4-dev-nuttx-jammy:latest` -(available tags are listed for each container on _hub.docker.com_. -For example, the `px4io/px4-dev-nuttx-jammy` tags can be found on [hub.docker.com here](https://hub.docker.com/r/px4io/px4-dev-nuttx-jammy/tags?page=1&ordering=last_updated)). +The container includes: + +- Ubuntu 24.04 base +- ARM cross-compiler (`gcc-arm-none-eabi`) and Xtensa compiler (for ESP32 targets) +- Build tools: `cmake`, `ninja`, `ccache`, `make` +- Python 3 with PX4 build dependencies +- NuttX toolchain libraries (`libnewlib-arm-none-eabi`, etc.) + +The container is built from the [Dockerfile](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/setup/Dockerfile) in the PX4 source tree using the [Container build workflow](https://github.com/PX4/PX4-Autopilot/actions/workflows/dev_container.yml). +Images are tagged with the PX4 version (e.g. `px4io/px4-dev:v1.16.0`). :::tip -Typically you should use a recent container, but not necessarily the `latest` (as this changes too often). +A `px4-sim` container with simulation tools (Gazebo Harmonic) is planned to complement `px4-dev` for simulation workflows. ::: +### Legacy Containers + +The older per-distro containers from [PX4/PX4-containers](https://github.com/PX4/PX4-containers) (e.g. `px4-dev-nuttx-jammy`, `px4-dev-ros2-humble`, etc.) are no longer recommended. +They will be replaced by `px4-dev` (for builds) and the upcoming `px4-sim` (for simulation). + ## Use the Docker Container The following instructions show how to build PX4 source code on the host computer using a toolchain running in a docker container. @@ -118,7 +123,7 @@ Where, - ``: The host computer directory to be mapped to `` in the container. This should normally be the **PX4-Autopilot** directory. - ``: The location of the shared (source) directory when inside the container. - ``: A name for the docker container being created. This can later be used if we need to reference the container again. -- `:`: The container with version tag to start - e.g.: `px4io/px4-dev-ros:2017-10-23`. +- `:`: The container with version tag to start - e.g.: `px4io/px4-dev:v1.16.0`. - ``: The command to invoke on the new container. E.g. `bash` is used to open a bash shell in the container. The concrete example below shows how to open a bash shell and share the directory **~/src/PX4-Autopilot** on the host computer. @@ -134,7 +139,7 @@ docker run -it --privileged \ -v /tmp/.X11-unix:/tmp/.X11-unix:ro \ -e DISPLAY=:0 \ --network host \ ---name=px4-ros px4io/px4-dev-ros2-humble:latest bash +--name=px4-dev px4io/px4-dev:v1.16.0 bash ``` ::: info From ad0b6bdc6b6738bf98f0fd4664148272068ba5d6 Mon Sep 17 00:00:00 2001 From: Hamish Willee Date: Thu, 12 Feb 2026 15:07:31 +1100 Subject: [PATCH 18/83] Subedit --- docs/en/dev_setup/building_px4.md | 5 +++-- docs/en/dev_setup/config_initial.md | 8 ++++---- docs/en/dev_setup/dev_env.md | 6 +++--- docs/en/dev_setup/dev_env_windows_wsl.md | 16 ++++++++-------- docs/en/ros/mavros_installation.md | 4 ++-- 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/docs/en/dev_setup/building_px4.md b/docs/en/dev_setup/building_px4.md index c683627102..576266ae4d 100644 --- a/docs/en/dev_setup/building_px4.md +++ b/docs/en/dev_setup/building_px4.md @@ -127,7 +127,8 @@ The following list shows the build commands for the [Pixhawk standard](../flight - [Pixhawk 1 (FMUv2)](../flight_controller/pixhawk.md): `make px4_fmu-v2_default` :::warning - You **must** use a supported version of GCC to build this board (e.g. the `gcc-arm-none-eabi` package from the current Ubuntu LTS, which is the same toolchain used by CI) or remove modules from the build. Building with an unsupported GCC may fail, as PX4 is close to the board's 1MB flash limit. + You **must** use a supported version of GCC to build this board (e.g. the `gcc-arm-none-eabi` package from the current Ubuntu LTS, which is the same toolchain used by CI) or remove modules from the build. + Building with an unsupported GCC may fail, as PX4 is close to the board's 1MB flash limit. ::: - Pixhawk 1 with 2 MB flash: `make px4_fmu-v3_default` @@ -238,7 +239,7 @@ You may need to install it using: pip3 install --user jinja2 ``` -If you have already installed these dependencies this may be because there is more than one Python version on the computer (e.g. Python 2.7.16 Python 3.8.3), and the module is not present in the version used by the build toolchain. +If you have already installed these dependencies this may be because there is more than one Python version on the computer (e.g. Python 2.7.16 and Python 3.8.3), and the module is not present in the version used by the build toolchain. You should be able to fix this by explicitly installing the dependencies as shown: diff --git a/docs/en/dev_setup/config_initial.md b/docs/en/dev_setup/config_initial.md index f636aef195..b98f0bf24e 100644 --- a/docs/en/dev_setup/config_initial.md +++ b/docs/en/dev_setup/config_initial.md @@ -20,7 +20,7 @@ The equipment below is highly recommended: ::: - Lenovo Thinkpad with i5-core running Windows 11 - MacBook Pro (early 2015 and later) with macOS 10.15 or later - - Lenovo Thinkpad i5 with Ubuntu Linux 20.04 or later + - Lenovo Thinkpad i5 with Ubuntu Linux 22.04 or later - **Ground control station** (computer or tablet): - iPad (may require Wifi telemetry adapter) @@ -39,9 +39,9 @@ Install the [QGroundControl Daily Build](../dev_setup/qgc_daily_build.md) for a To configure the vehicle: 1. [Install PX4 firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware) (including "custom" firmware with your own changes). -1. [Start with the airframe](../config/airframe.md) that best-matches your vehicle from the [airframe reference](../airframes/airframe_reference.md). -1. [Basic Configuration](../config/index.md) explains how to perform basic configuration. -1. [Parameter Configuration](../advanced_config/parameters.md) explains how you can find and modify individual parameters. +2. [Start with the airframe](../config/airframe.md) that best-matches your vehicle from the [airframe reference](../airframes/airframe_reference.md). +3. [Basic Configuration](../config/index.md) explains how to perform basic configuration. +4. [Parameter Configuration](../advanced_config/parameters.md) explains how you can find and modify individual parameters. ::: info diff --git a/docs/en/dev_setup/dev_env.md b/docs/en/dev_setup/dev_env.md index b57ab037c0..5d4810e00a 100644 --- a/docs/en/dev_setup/dev_env.md +++ b/docs/en/dev_setup/dev_env.md @@ -2,7 +2,7 @@ The _supported platforms_ for PX4 development are: -- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended +- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) - [Windows (10/11)](../dev_setup/dev_env_windows_wsl.md) — via WSL2 - [macOS](../dev_setup/dev_env_mac.md) @@ -15,9 +15,9 @@ The table below shows what PX4 targets you can build on each OS. | **NuttX based hardware:** [Pixhawk Series](../flight_controller/pixhawk_series.md), [Crazyflie](../complete_vehicles_mc/crazyflie2.md) | ✓ | ✓ | ✓ | | **Linux-based hardware:** [Raspberry Pi 2/3](../flight_controller/raspberry_pi_navio2.md) | ✓ | | | | **Simulation:** [Gazebo SITL](../sim_gazebo_gz/index.md) | ✓ | ✓ | ✓ | -| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | ✓ | ✓ | ✓ | -| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | ✓ | | ✓ | | **Simulation:** ROS 2 with Gazebo | ✓ | | ✓ | +| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | | ✓ | ✓ | +| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | | | ✓ | Experienced Docker users can also build with the containers used by our continuous integration system: [Docker Containers](../test_and_ci/docker.md) diff --git a/docs/en/dev_setup/dev_env_windows_wsl.md b/docs/en/dev_setup/dev_env_windows_wsl.md index 92e0de4cbd..98e640124e 100644 --- a/docs/en/dev_setup/dev_env_windows_wsl.md +++ b/docs/en/dev_setup/dev_env_windows_wsl.md @@ -58,20 +58,20 @@ To install WSL2 with Ubuntu on a new installation of Windows 10 or 11: wsl --install ``` - - Ubuntu 20.04 ([Gazebo-Classic Simulation](../sim_gazebo_classic/index.md)) - - ```sh - wsl --install -d Ubuntu-20.04 - ``` - - Ubuntu 22.04 ([Gazebo Simulation](../sim_gazebo_gz/index.md)) ```sh wsl --install -d Ubuntu-22.04 ``` + - Ubuntu 24.04 ([Gazebo Simulation](../sim_gazebo_gz/index.md)) + + ```sh + wsl --install -d Ubuntu-24.04 + ``` + ::: info - You can also install[Ubuntu 20.04](https://www.microsoft.com/store/productId/9MTTCL66CPXJ) and [Ubuntu 22.04](https://www.microsoft.com/store/productId/9PN20MSR04DW) from the store, which allows you to delete the application using the normal Windows Add/Remove settings: + You can also [Ubuntu 24.04](https://www.microsoft.com/store/productId/9nz3klhxdjp5) or [Ubuntu 22.04](https://www.microsoft.com/store/productId/9PN20MSR04DW) from Microsoft Store, which allows you to delete the application using the normal Windows Add/Remove settings. ::: 1. WSL will prompt you for a user name and password for the Ubuntu installation. @@ -106,7 +106,7 @@ To open a WSL shell using a command prompt: ``` ```sh - wsl -d Ubuntu-20.04 + wsl -d Ubuntu-24.04 ``` If you only have one version of Ubuntu, you can just use `wsl`. diff --git a/docs/en/ros/mavros_installation.md b/docs/en/ros/mavros_installation.md index 0929b843df..b8c395e468 100644 --- a/docs/en/ros/mavros_installation.md +++ b/docs/en/ros/mavros_installation.md @@ -26,7 +26,7 @@ They cover the _ROS Melodic and Noetic_ releases. ::: tab ROS Noetic (Ubuntu 20.04) -If you're working with [ROS Noetic](https://wiki.ros.org/noetic) on Ubuntu 20.04: +If you're working with [ROS "Noetic"](https://wiki.ros.org/noetic) on Ubuntu 20.04: 1. Install PX4 without the simulator toolchain: 1. [Download PX4 Source Code](../dev_setup/building_px4.md): @@ -57,7 +57,7 @@ If you're working with [ROS Noetic](https://wiki.ros.org/noetic) on Ubuntu 20.04 ::: tab ROS Melodic (Ubuntu 18.04) -If you're working with ROS "Melodic on Ubuntu 18.04: +If you're working with ROS "Melodic" on Ubuntu 18.04: 1. Download the [ubuntu_sim_ros_melodic.sh](https://raw.githubusercontent.com/PX4/Devguide/master/build_scripts/ubuntu_sim_ros_melodic.sh) script in a bash shell: From 8a3e227dc03efc9927f9882e826155fd088e5e4b Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Thu, 12 Feb 2026 08:08:36 -0800 Subject: [PATCH 19/83] docs: address review feedback on build docs - Update "Failed to import Python packages" section to reference gz_x500 instead of jmavsim, and point to Tools/setup/requirements.txt instead of listing individual packages - Fix :::info admonition spacing in Ubuntu dev env docs Signed-off-by: Ramon Roche --- docs/en/dev_setup/building_px4.md | 6 +++--- docs/en/dev_setup/dev_env_linux_ubuntu.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/en/dev_setup/building_px4.md b/docs/en/dev_setup/building_px4.md index 576266ae4d..4d54522bb4 100644 --- a/docs/en/dev_setup/building_px4.md +++ b/docs/en/dev_setup/building_px4.md @@ -231,7 +231,7 @@ sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /us ### Failed to import Python packages -"Failed to import" errors when running the `make px4_sitl jmavsim` command indicates that some Python packages are not installed (where expected). +"Failed to import" errors when running the `make px4_sitl gz_x500` command indicates that some Python packages are not installed (where expected). ```sh Failed to import jinja2: No module named 'jinja2' @@ -241,10 +241,10 @@ You may need to install it using: If you have already installed these dependencies this may be because there is more than one Python version on the computer (e.g. Python 2.7.16 and Python 3.8.3), and the module is not present in the version used by the build toolchain. -You should be able to fix this by explicitly installing the dependencies as shown: +You should be able to fix this by installing the dependencies from the repository's requirements file: ```sh -pip3 install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging +pip3 install --user -r Tools/setup/requirements.txt ``` ## PX4 Make Build Targets diff --git a/docs/en/dev_setup/dev_env_linux_ubuntu.md b/docs/en/dev_setup/dev_env_linux_ubuntu.md index 0c7917c8d3..4edfd5793d 100644 --- a/docs/en/dev_setup/dev_env_linux_ubuntu.md +++ b/docs/en/dev_setup/dev_env_linux_ubuntu.md @@ -9,7 +9,7 @@ The environment includes: The build toolchain for other flight controllers, simulators, and working with ROS are discussed in the [Other Targets](#other-targets) section below. -:::info +::: info PX4 targets the **current Ubuntu LTS** (24.04) for CI and release builds, with the **previous LTS** (22.04) also supported. Older Ubuntu versions are not supported and may not work. ::: From 841fccf6b9b35fb089960358a4de608a4ef75239 Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Fri, 13 Feb 2026 02:35:53 +0000 Subject: [PATCH 20/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/middleware/dds_topics.md | 370 +++++++++++++++---------------- 1 file changed, 185 insertions(+), 185 deletions(-) diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index ae78fbc9fa..787e08ff11 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [GpioIn](../msg_docs/GpioIn.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [Mission](../msg_docs/Mission.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) - [Airspeed](../msg_docs/Airspeed.md) -- [LedControl](../msg_docs/LedControl.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [InputRc](../msg_docs/InputRc.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [Rpm](../msg_docs/Rpm.md) - [SensorSelection](../msg_docs/SensorSelection.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) - [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) - [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) - [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) - [SensorBaro](../msg_docs/SensorBaro.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [LedControl](../msg_docs/LedControl.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [EscReport](../msg_docs/EscReport.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [Ping](../msg_docs/Ping.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [InputRc](../msg_docs/InputRc.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [EventV0](../msg_docs/EventV0.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) - [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) - [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [EventV0](../msg_docs/EventV0.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [Rpm](../msg_docs/Rpm.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [Ping](../msg_docs/Ping.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [Vtx](../msg_docs/Vtx.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [EscReport](../msg_docs/EscReport.md) -- [Gripper](../msg_docs/Gripper.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [GimbalControls](../msg_docs/GimbalControls.md) +- [MissionResult](../msg_docs/MissionResult.md) - [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) - [Event](../msg_docs/Event.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [Vtx](../msg_docs/Vtx.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [Gripper](../msg_docs/Gripper.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [Mission](../msg_docs/Mission.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) ::: From 87163c1578297e2239ac8d808c247288d3811975 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Fri, 13 Feb 2026 04:22:19 +0100 Subject: [PATCH 21/83] uavcan esc: initializers cosmetics (#26470) --- src/drivers/uavcan/actuators/esc.cpp | 2 +- src/drivers/uavcan/actuators/esc.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/drivers/uavcan/actuators/esc.cpp b/src/drivers/uavcan/actuators/esc.cpp index 33a955be8e..9e4bb64509 100644 --- a/src/drivers/uavcan/actuators/esc.cpp +++ b/src/drivers/uavcan/actuators/esc.cpp @@ -89,7 +89,7 @@ UavcanEscController::update_outputs(uint16_t outputs[MAX_ACTUATORS], uint8_t out _prev_cmd_pub = timestamp; - uavcan::equipment::esc::RawCommand msg = {}; + uavcan::equipment::esc::RawCommand msg{}; for (unsigned i = 0; i < output_array_size; i++) { msg.cmd.push_back(static_cast(outputs[i])); diff --git a/src/drivers/uavcan/actuators/esc.hpp b/src/drivers/uavcan/actuators/esc.hpp index 1170e67574..1a8e45c608 100644 --- a/src/drivers/uavcan/actuators/esc.hpp +++ b/src/drivers/uavcan/actuators/esc.hpp @@ -97,7 +97,7 @@ private: typedef uavcan::MethodBinder TimerCbBinder; - bool _initialized{}; + bool _initialized = false; esc_status_s _esc_status{}; From a235b5c87faa69f1e1589fa0b00088e4feaa3668 Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Fri, 13 Feb 2026 03:30:17 +0000 Subject: [PATCH 22/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/middleware/dds_topics.md | 360 +++++++++++++++---------------- 1 file changed, 180 insertions(+), 180 deletions(-) diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index 787e08ff11..ba072996fd 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [Rpm](../msg_docs/Rpm.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [AdcReport](../msg_docs/AdcReport.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) - [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) - [RcParameterMap](../msg_docs/RcParameterMap.md) - [HealthReport](../msg_docs/HealthReport.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) - [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) - [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) - [ButtonEvent](../msg_docs/ButtonEvent.md) - [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [LedControl](../msg_docs/LedControl.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) - [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [EscReport](../msg_docs/EscReport.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [Ping](../msg_docs/Ping.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [InputRc](../msg_docs/InputRc.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [EventV0](../msg_docs/EventV0.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [Event](../msg_docs/Event.md) - [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [Vtx](../msg_docs/Vtx.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) - [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [Event](../msg_docs/Event.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) - [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [Ping](../msg_docs/Ping.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [EscReport](../msg_docs/EscReport.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [EventV0](../msg_docs/EventV0.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [Gripper](../msg_docs/Gripper.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [InputRc](../msg_docs/InputRc.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [GainCompression](../msg_docs/GainCompression.md) - [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) - [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [Gripper](../msg_docs/Gripper.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [FollowTarget](../msg_docs/FollowTarget.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [CameraCapture](../msg_docs/CameraCapture.md) - [Mission](../msg_docs/Mission.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [AdcReport](../msg_docs/AdcReport.md) - [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [Vtx](../msg_docs/Vtx.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [Rpm](../msg_docs/Rpm.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [LedControl](../msg_docs/LedControl.md) ::: From c511e72d4fc468d3ae3b0a41670fc1ca573198e9 Mon Sep 17 00:00:00 2001 From: cuav-chen2 Date: Fri, 13 Feb 2026 09:57:39 +0800 Subject: [PATCH 23/83] cuav_nora: 5V power overcurrent detection pin default to pull-up --- boards/cuav/nora/src/board_config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/boards/cuav/nora/src/board_config.h b/boards/cuav/nora/src/board_config.h index 56dbf9cc8c..0f289730d2 100644 --- a/boards/cuav/nora/src/board_config.h +++ b/boards/cuav/nora/src/board_config.h @@ -127,8 +127,8 @@ #define GPIO_VDD_5V_RC_EN /* PG5 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTG|GPIO_PIN5) #define GPIO_VDD_3V3_SD_CARD_EN /* PG7 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTG|GPIO_PIN7) -#define GPIO_VDD_5V_HIPOWER_OC /* PJ3 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_PORTJ|GPIO_PIN3) -#define GPIO_nVDD_5V_PERIPH_OC /* PJ4 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_PORTJ|GPIO_PIN4) +#define GPIO_VDD_5V_HIPOWER_OC /* PJ3 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTJ|GPIO_PIN3) +#define GPIO_nVDD_5V_PERIPH_OC /* PJ4 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTJ|GPIO_PIN4) /* Power switch controls ******************************************************/ #define VDD_5V_PERIPH_EN(on_true) px4_arch_gpiowrite(GPIO_nVDD_5V_PERIPH_EN, (on_true)) From c29630f6aedb76e933dfe6c8fc3f21d425eb1016 Mon Sep 17 00:00:00 2001 From: Marco Hauswirth Date: Wed, 28 Jan 2026 17:51:33 +0100 Subject: [PATCH 24/83] adjust clang-tidy checks and workflow --- .clang-tidy | 32 ++++++++++++++++++++++++++++++++ .github/workflows/clang-tidy.yml | 14 ++++++++++++-- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 81f2d62596..6507139938 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -105,6 +105,38 @@ Checks: '*, -readability-redundant-declaration, -readability-static-accessed-through-instance, -readability-static-definition-in-anonymous-namespace, + -altera-struct-pack-align, + -bugprone-easily-swappable-parameters, + -concurrency-mt-unsafe, + -cppcoreguidelines-avoid-const-or-ref-data-members, + -cppcoreguidelines-macro-usage, + -cppcoreguidelines-non-private-member-variables-in-classes, + -hicpp-uppercase-literal-suffix, + -llvm-qualified-auto, + -misc-non-private-member-variables-in-classes, + -misc-use-anonymous-namespace, + -modernize-concat-nested-namespaces, + -readability-const-return-type, + -readability-identifier-length, + -readability-isolate-declaration, + -readability-qualified-auto, + -readability-redundant-access-specifiers, + -cppcoreguidelines-avoid-do-while, + -misc-include-cleaner, + -misc-const-correctness, + -llvm-else-after-return, + -readability-function-cognitive-complexity, + -cppcoreguidelines-init-variables, + -bugprone-reserved-identifier, + -cert-dcl37-c, + -cert-dcl51-cpp, + -modernize-use-nodiscard, + -misc-confusable-identifiers, + -cert-err33-c, + -readability-redundant-inline-specifier, + -readability-uppercase-literal-suffix, + -bugprone-narrowing-conversions, + -cppcoreguidelines-narrowing-conversions, ' WarningsAsErrors: '*' CheckOptions: diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index b373c59765..0828e01f91 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -11,6 +11,7 @@ on: - '**' paths-ignore: - 'docs/**' + jobs: build: runs-on: ubuntu-latest @@ -18,13 +19,22 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 + fetch-tags: true + + - name: Determine PX4 version for container image + id: px4_version + run: | + echo "px4_version=$(git describe --tags --match 'v[0-9]*')" >> $GITHUB_OUTPUT - name: Testing (clang-tidy) uses: addnab/docker-run-action@v3 with: - image: px4io/px4-dev-clang:2021-09-08 + image: px4io/px4-dev:${{ steps.px4_version.outputs.px4_version }} options: -v ${{ github.workspace }}:/workspace run: | cd /workspace - git config --global --add safe.directory /workspace + apt install clang-tidy-18 -y + update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-18 100 + update-alternatives --install /usr/bin/clang clang /usr/bin/clang-18 100 + update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-18 100 make clang-tidy From 767eb756629b33b233a8e312d9e71cbe5f6067d3 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Wed, 4 Feb 2026 18:44:03 +0100 Subject: [PATCH 25/83] gyro_fft: fix clang build error on Linux arm64 Extend the -Wno-asm-operand-widths workaround to include Linux aarch64 in addition to Apple Silicon. CMSIS DSP contains ARM Cortex-M specific assembly that clang (but not gcc) warns about on 64-bit ARM platforms. The assembly code is unused on POSIX builds - only the C fallback implementations are executed in SITL. This fixes clang-tidy CI failing on arm64 runners. Signed-off-by: Ramon Roche --- src/modules/gyro_fft/CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/gyro_fft/CMakeLists.txt b/src/modules/gyro_fft/CMakeLists.txt index 9bf6832ed4..b342ef250f 100644 --- a/src/modules/gyro_fft/CMakeLists.txt +++ b/src/modules/gyro_fft/CMakeLists.txt @@ -38,8 +38,10 @@ if(${PX4_PLATFORM} MATCHES "NuttX") add_compile_options(-DARM_MATH_DSP) endif() -# Disable 32-bit assembly warnings on apple silicon. Triggered by unused code only. -if(${PX4_PLATFORM} MATCHES "posix" AND APPLE AND ${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "arm64") +# Disable 32-bit assembly warnings on arm64 platforms (Apple Silicon, Linux aarch64). +# CMSIS DSP contains ARM Cortex-M assembly that triggers clang warnings on 64-bit ARM. +# This code is unused on POSIX platforms - only the C fallback implementations run. +if(${PX4_PLATFORM} MATCHES "posix" AND ${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "arm64|aarch64") add_compile_options(-Wno-asm-operand-widths) endif() From dc4aa749d3b2805e18a9bbc3f6383d8a8c9d23e4 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Wed, 4 Feb 2026 21:23:17 +0100 Subject: [PATCH 26/83] Tools/run-clang-tidy: add -exclude argument for file filtering Add regex-based file exclusion to the clang-tidy runner script. This allows excluding paths (submodules, vendored code, tests) from static analysis without modifying .clang-tidy files in each directory. The -exclude argument accepts a regex pattern that is matched against file paths from the compilation database. Matching files are skipped. Example: -exclude="src/lib/foo|src/modules/bar" This prepares for the clang-tidy v6 to v18 migration where we need to exclude external code that we consume but don't maintain. Signed-off-by: Ramon Roche --- Tools/run-clang-tidy.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Tools/run-clang-tidy.py b/Tools/run-clang-tidy.py index 4f29868bee..764edd6581 100755 --- a/Tools/run-clang-tidy.py +++ b/Tools/run-clang-tidy.py @@ -144,6 +144,8 @@ def main(): help='number of tidy instances to be run in parallel.') parser.add_argument('files', nargs='*', default=['.*'], help='files to be processed (regex on path)') + parser.add_argument('-exclude', dest='exclude', default=None, + help='regular expression matching files to exclude') parser.add_argument('-fix', action='store_true', help='apply fix-its') parser.add_argument('-format', action='store_true', help='Reformat code ' 'after applying fixes') @@ -192,6 +194,7 @@ def main(): # Build up a big regexy filter from all command line arguments. file_name_re = re.compile('(' + ')|('.join(args.files) + ')') + exclude_re = re.compile(args.exclude) if args.exclude else None try: # Spin up a bunch of tidy-launching threads. @@ -205,6 +208,8 @@ def main(): # Fill the queue with files. for name in files: if file_name_re.search(name): + if exclude_re and exclude_re.search(name): + continue queue.put(name) # Wait for all threads to be done. From d196d37ef207d2b12443f08410f2404d01f6fea9 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Wed, 4 Feb 2026 21:23:54 +0100 Subject: [PATCH 27/83] clang-tidy: auto-exclude submodules and third-party code Automatically generate the clang-tidy exclusion list from .gitmodules so new submodules are excluded without manual intervention. Changes: - Makefile: Generate CLANG_TIDY_SUBMODULES from .gitmodules paths - Makefile: Add CLANG_TIDY_EXCLUDE_EXTRA for manual exclusions: - src/systemcmds/tests (test code, looser style allowed) - src/examples (educational code, not production) - src/modules/gyro_fft/CMSIS_5 (vendored ARM DSP library) - Delete src/systemcmds/tests/.clang-tidy (stale since 2019) - Delete src/modules/gyro_fft/CMSIS_5/.clang-tidy (redundant) Rationale: Submodules and vendored code should be linted in their upstream repositories, not here. This reduces noise and focuses clang-tidy on code that PX4 maintainers actually edit. Contributors adding vendored (non-submodule) third-party code should add their path to CLANG_TIDY_EXCLUDE_EXTRA in the Makefile. Signed-off-by: Ramon Roche --- Makefile | 16 ++- src/modules/gyro_fft/CMSIS_5/.clang-tidy | 120 ----------------------- src/systemcmds/tests/.clang-tidy | 119 ---------------------- 3 files changed, 14 insertions(+), 241 deletions(-) delete mode 100644 src/modules/gyro_fft/CMSIS_5/.clang-tidy delete mode 100644 src/systemcmds/tests/.clang-tidy diff --git a/Makefile b/Makefile index 2d33363206..e3fd7d26f3 100644 --- a/Makefile +++ b/Makefile @@ -492,13 +492,25 @@ px4_sitl_default-clang: @cd "$(SRC_DIR)"/build/px4_sitl_default-clang && cmake "$(SRC_DIR)" $(CMAKE_ARGS) -G"$(PX4_CMAKE_GENERATOR)" -DCONFIG=px4_sitl_default -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ @$(PX4_MAKE) -C "$(SRC_DIR)"/build/px4_sitl_default-clang +# Paths to exclude from clang-tidy (auto-generated from .gitmodules + manual additions): +# - All submodules (external code we consume, not edit) +# - Test code (allowed looser style) +# - Example code (educational, not production) +# - Vendored third-party code (e.g., CMSIS_5) +# +# To add manual exclusions, append to CLANG_TIDY_EXCLUDE_EXTRA below. +# Submodules are automatically excluded - no action needed when adding new ones. +CLANG_TIDY_SUBMODULES := $(shell git config --file .gitmodules --get-regexp path | awk '{print $$2}' | tr '\n' '|' | sed 's/|$$//') +CLANG_TIDY_EXCLUDE_EXTRA := src/systemcmds/tests|src/examples|src/modules/gyro_fft/CMSIS_5 +CLANG_TIDY_EXCLUDE := $(CLANG_TIDY_SUBMODULES)|$(CLANG_TIDY_EXCLUDE_EXTRA) + clang-tidy: px4_sitl_default-clang - @cd "$(SRC_DIR)"/build/px4_sitl_default-clang && "$(SRC_DIR)"/Tools/run-clang-tidy.py -header-filter=".*\.hpp" -j$(j_clang_tidy) -p . + @cd "$(SRC_DIR)"/build/px4_sitl_default-clang && "$(SRC_DIR)"/Tools/run-clang-tidy.py -header-filter=".*\.hpp" -j$(j_clang_tidy) -exclude="$(CLANG_TIDY_EXCLUDE)" -p . # to automatically fix a single check at a time, eg modernize-redundant-void-arg # % run-clang-tidy-4.0.py -fix -j4 -checks=-\*,modernize-redundant-void-arg -p . clang-tidy-fix: px4_sitl_default-clang - @cd "$(SRC_DIR)"/build/px4_sitl_default-clang && "$(SRC_DIR)"/Tools/run-clang-tidy.py -header-filter=".*\.hpp" -j$(j_clang_tidy) -fix -p . + @cd "$(SRC_DIR)"/build/px4_sitl_default-clang && "$(SRC_DIR)"/Tools/run-clang-tidy.py -header-filter=".*\.hpp" -j$(j_clang_tidy) -exclude="$(CLANG_TIDY_EXCLUDE)" -fix -p . # TODO: Fix cppcheck errors then try --enable=warning,performance,portability,style,unusedFunction or --enable=all cppcheck: px4_sitl_default diff --git a/src/modules/gyro_fft/CMSIS_5/.clang-tidy b/src/modules/gyro_fft/CMSIS_5/.clang-tidy deleted file mode 100644 index 64e1b8f404..0000000000 --- a/src/modules/gyro_fft/CMSIS_5/.clang-tidy +++ /dev/null @@ -1,120 +0,0 @@ ---- -Checks: '*, - -android*, - -bugprone-integer-division, - -cert-dcl50-cpp, - -cert-env33-c, - -cert-err34-c, - -cert-err58-cpp, - -cert-msc30-c, - -cert-msc50-cpp, - -cert-flp30-c, - -clang-analyzer-core.CallAndMessage, - -clang-analyzer-core.NullDereference, - -clang-analyzer-core.UndefinedBinaryOperatorResult, - -clang-analyzer-core.uninitialized.Assign, - -clang-analyzer-core.VLASize, - -clang-analyzer-cplusplus.NewDelete, - -clang-analyzer-cplusplus.NewDeleteLeaks, - -clang-analyzer-deadcode.DeadStores, - -clang-analyzer-optin.cplusplus.VirtualCall, - -clang-analyzer-optin.performance.Padding, - -clang-analyzer-security.FloatLoopCounter, - -clang-analyzer-security.insecureAPI.strcpy, - -clang-analyzer-unix.API, - -clang-analyzer-unix.cstring.BadSizeArg, - -clang-analyzer-unix.Malloc, - -clang-analyzer-unix.MallocSizeof, - -cppcoreguidelines-c-copy-assignment-signature, - -cppcoreguidelines-interfaces-global-init, - -cppcoreguidelines-no-malloc, - -cppcoreguidelines-owning-memory, - -cppcoreguidelines-pro-bounds-array-to-pointer-decay, - -cppcoreguidelines-pro-bounds-constant-array-index, - -cppcoreguidelines-pro-bounds-pointer-arithmetic, - -cppcoreguidelines-pro-type-const-cast, - -cppcoreguidelines-pro-type-cstyle-cast, - -cppcoreguidelines-pro-type-member-init, - -cppcoreguidelines-pro-type-reinterpret-cast, - -cppcoreguidelines-pro-type-union-access, - -cppcoreguidelines-pro-type-vararg, - -cppcoreguidelines-special-member-functions, - -fuchsia-default-arguments, - -fuchsia-overloaded-operator, - -google-build-using-namespace, - -google-explicit-constructor, - -google-global-names-in-headers, - -google-readability-braces-around-statements, - -google-readability-casting, - -google-readability-function-size, - -google-readability-namespace-comments, - -google-readability-todo, - -google-runtime-int, - -google-runtime-references, - -hicpp-braces-around-statements, - -hicpp-deprecated-headers, - -hicpp-explicit-conversions, - -hicpp-function-size, - -hicpp-member-init, - -hicpp-no-array-decay, - -hicpp-no-assembler, - -hicpp-no-malloc, - -hicpp-signed-bitwise, - -hicpp-special-member-functions, - -hicpp-use-auto, - -hicpp-use-equals-default, - -hicpp-use-equals-delete, - -hicpp-use-override, - -hicpp-vararg, - -llvm-header-guard, - -llvm-include-order, - -llvm-namespace-comment, - -misc-incorrect-roundings, - -misc-macro-parentheses, - -misc-misplaced-widening-cast, - -misc-redundant-expression, - -misc-unconventional-assign-operator, - -misc-unused-parameters, - -modernize-deprecated-headers, - -modernize-loop-convert, - -modernize-pass-by-value, - -modernize-return-braced-init-list, - -modernize-use-auto, - -modernize-use-bool-literals, - -modernize-use-default-member-init, - -modernize-use-emplace, - -modernize-use-equals-default, - -modernize-use-equals-delete, - -modernize-use-override, - -modernize-use-using, - -performance-inefficient-string-concatenation, - -performance-unnecessary-value-param, - -readability-avoid-const-params-in-decls, - -readability-braces-around-statements, - -readability-container-size-empty, - -readability-delete-null-pointer, - -readability-else-after-return, - -readability-function-size, - -readability-implicit-bool-cast, - -readability-implicit-bool-conversion, - -readability-inconsistent-declaration-parameter-name, - -readability-named-parameter, - -readability-non-const-parameter, - -readability-redundant-control-flow, - -readability-redundant-declaration, - -readability-redundant-member-init, - -readability-simplify-boolean-expr, - -readability-static-accessed-through-instance, - -readability-static-definition-in-anonymous-namespace, - ' -WarningsAsErrors: '*' -CheckOptions: - - key: google-readability-braces-around-statements.ShortStatementLines - value: '1' - - key: google-readability-function-size.BranchThreshold - value: '600' - - key: google-readability-function-size.LineThreshold - value: '4000' - - key: google-readability-function-size.StatementThreshold - value: '4000' -... diff --git a/src/systemcmds/tests/.clang-tidy b/src/systemcmds/tests/.clang-tidy deleted file mode 100644 index 9d2589717a..0000000000 --- a/src/systemcmds/tests/.clang-tidy +++ /dev/null @@ -1,119 +0,0 @@ ---- -Checks: '*, - -android*, - -bugprone-integer-division, - -cert-dcl50-cpp, - -cert-env33-c, - -cert-err34-c, - -cert-err58-cpp, - -cert-msc30-c, - -cert-msc50-cpp, - -cert-flp30-c, - -clang-analyzer-core.CallAndMessage, - -clang-analyzer-core.NullDereference, - -clang-analyzer-core.UndefinedBinaryOperatorResult, - -clang-analyzer-core.uninitialized.Assign, - -clang-analyzer-core.VLASize, - -clang-analyzer-cplusplus.NewDelete, - -clang-analyzer-cplusplus.NewDeleteLeaks, - -clang-analyzer-deadcode.DeadStores, - -clang-analyzer-optin.cplusplus.VirtualCall, - -clang-analyzer-optin.performance.Padding, - -clang-analyzer-security.FloatLoopCounter, - -clang-analyzer-security.insecureAPI.strcpy, - -clang-analyzer-unix.API, - -clang-analyzer-unix.cstring.BadSizeArg, - -clang-analyzer-unix.Malloc, - -clang-analyzer-unix.MallocSizeof, - -cppcoreguidelines-c-copy-assignment-signature, - -cppcoreguidelines-interfaces-global-init, - -cppcoreguidelines-no-malloc, - -cppcoreguidelines-owning-memory, - -cppcoreguidelines-pro-bounds-array-to-pointer-decay, - -cppcoreguidelines-pro-bounds-constant-array-index, - -cppcoreguidelines-pro-bounds-pointer-arithmetic, - -cppcoreguidelines-pro-type-const-cast, - -cppcoreguidelines-pro-type-cstyle-cast, - -cppcoreguidelines-pro-type-member-init, - -cppcoreguidelines-pro-type-reinterpret-cast, - -cppcoreguidelines-pro-type-union-access, - -cppcoreguidelines-pro-type-vararg, - -cppcoreguidelines-special-member-functions, - -fuchsia-default-arguments, - -fuchsia-overloaded-operator, - -google-build-using-namespace, - -google-explicit-constructor, - -google-global-names-in-headers, - -google-readability-casting, - -google-readability-function-size, - -google-readability-namespace-comments, - -google-readability-todo, - -google-runtime-int, - -google-runtime-references, - -hicpp-braces-around-statements, - -hicpp-deprecated-headers, - -hicpp-explicit-conversions, - -hicpp-function-size, - -hicpp-member-init, - -hicpp-no-array-decay, - -hicpp-no-assembler, - -hicpp-no-malloc, - -hicpp-signed-bitwise, - -hicpp-special-member-functions, - -hicpp-use-auto, - -hicpp-use-equals-default, - -hicpp-use-equals-delete, - -hicpp-use-override, - -hicpp-vararg, - -llvm-header-guard, - -llvm-include-order, - -llvm-namespace-comment, - -misc-incorrect-roundings, - -misc-macro-parentheses, - -misc-misplaced-widening-cast, - -misc-redundant-expression, - -misc-unconventional-assign-operator, - -misc-unused-parameters, - -modernize-deprecated-headers, - -modernize-loop-convert, - -modernize-pass-by-value, - -modernize-return-braced-init-list, - -modernize-use-auto, - -modernize-use-bool-literals, - -modernize-use-default-member-init, - -modernize-use-emplace, - -modernize-use-equals-default, - -modernize-use-equals-delete, - -modernize-use-override, - -modernize-use-using, - -performance-inefficient-string-concatenation, - -performance-unnecessary-value-param, - -readability-avoid-const-params-in-decls, - -readability-braces-around-statements, - -readability-container-size-empty, - -readability-delete-null-pointer, - -readability-else-after-return, - -readability-function-size, - -readability-implicit-bool-cast, - -readability-implicit-bool-conversion, - -readability-inconsistent-declaration-parameter-name, - -readability-named-parameter, - -readability-non-const-parameter, - -readability-redundant-control-flow, - -readability-redundant-declaration, - -readability-redundant-member-init, - -readability-simplify-boolean-expr, - -readability-static-accessed-through-instance, - -readability-static-definition-in-anonymous-namespace, - ' -WarningsAsErrors: '*' -CheckOptions: - - key: google-readability-braces-around-statements.ShortStatementLines - value: '1' - - key: google-readability-function-size.BranchThreshold - value: '600' - - key: google-readability-function-size.LineThreshold - value: '4000' - - key: google-readability-function-size.StatementThreshold - value: '4000' -... From 23c9af20dacd86a3437590da0c64f5d18f14b111 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Wed, 4 Feb 2026 21:24:11 +0100 Subject: [PATCH 28/83] clang-tidy: disable new checks for v18 compatibility Update .clang-tidy configuration to maintain compatibility with clang-tidy 18 in the new px4io/px4-dev:v1.17.0-alpha1 container. The previous CI container used clang-tidy 6.0 (2018) with ~213 checks. The new container has clang-tidy 18 (2024) with ~537 checks - adding ~324 new checks that would fail without configuration changes. This commit disables the new checks to preserve the existing code quality baseline. The disabled checks can be evaluated and enabled incrementally in future PRs as the codebase is updated to comply. New checks disabled (partial list): - bugprone-assignment-in-if-condition - bugprone-casting-through-void - bugprone-multi-level-implicit-pointer-conversion - cppcoreguidelines-avoid-do-while - cppcoreguidelines-avoid-goto - cppcoreguidelines-avoid-non-const-global-variables - misc-definitions-in-headers - misc-header-include-cycle - misc-no-recursion - modernize-macro-to-enum - modernize-type-traits - performance-enum-size - readability-avoid-nested-conditional-operator - readability-convert-member-functions-to-static - readability-redundant-string-init - readability-simplify-boolean-expr - (and ~35 more) See full list in .clang-tidy. Each check is prefixed with '-' to disable it while keeping WarningsAsErrors: '*' active for enabled checks. Signed-off-by: Ramon Roche --- .clang-tidy | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/.clang-tidy b/.clang-tidy index 6507139938..9293603c71 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -137,6 +137,57 @@ Checks: '*, -readability-uppercase-literal-suffix, -bugprone-narrowing-conversions, -cppcoreguidelines-narrowing-conversions, + -bugprone-switch-missing-default-case, + -cppcoreguidelines-avoid-goto, + -hicpp-avoid-goto, + -bugprone-branch-clone, + -bugprone-unhandled-self-assignment, + -cert-oop54-cpp, + -performance-enum-size, + -readability-avoid-nested-conditional-operator, + -cppcoreguidelines-prefer-member-initializer, + -cppcoreguidelines-explicit-virtual-functions, + -cppcoreguidelines-virtual-class-destructor, + -readability-convert-member-functions-to-static, + -readability-make-member-function-const, + -bugprone-assignment-in-if-condition, + -bugprone-implicit-widening-of-multiplication-result, + -bugprone-incorrect-roundings, + -bugprone-macro-parentheses, + -bugprone-multi-level-implicit-pointer-conversion, + -bugprone-signed-char-misuse, + -bugprone-too-small-loop-variable, + -cppcoreguidelines-avoid-non-const-global-variables, + -cppcoreguidelines-use-default-member-init, + -hicpp-multiway-paths-covered, + -hicpp-named-parameter, + -misc-header-include-cycle, + -misc-no-recursion, + -performance-no-int-to-ptr, + -readability-avoid-return-with-void-value, + -readability-avoid-unconditional-preprocessor-if, + -readability-delete-null-pointer, + -readability-duplicate-include, + -readability-redundant-casting, + -readability-redundant-member-init, + -readability-reference-to-constructed-temporary, + -readability-simplify-boolean-expr, + -bugprone-unsafe-functions, + -cert-msc24-c, + -cert-msc32-c, + -cert-msc33-c, + -cert-msc51-cpp, + -cert-str34-c, + -cppcoreguidelines-macro-to-enum, + -modernize-macro-to-enum, + -abseil-string-find-str-contains, + -bugprone-suspicious-include, + -clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling, + -clang-analyzer-optin.core.EnumCastOutOfRange, + -modernize-type-traits, + -misc-definitions-in-headers, + -bugprone-casting-through-void, + -readability-redundant-string-init, ' WarningsAsErrors: '*' CheckOptions: From 385450ca370bce8b3bf252cd0999278928c623b3 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Wed, 4 Feb 2026 21:40:31 +0100 Subject: [PATCH 29/83] CI: pin clang-tidy workflow to px4-dev:v1.17.0-beta1 container Pin the container image to v1.17.0-beta1 which includes clang-tidy 18 and all required clang dependencies pre-installed. This removes the need to install clang-tidy via apt on each workflow run. Signed-off-by: Ramon Roche --- .github/workflows/clang-tidy.yml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index 0828e01f91..38763d3097 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -21,20 +21,11 @@ jobs: fetch-depth: 0 fetch-tags: true - - name: Determine PX4 version for container image - id: px4_version - run: | - echo "px4_version=$(git describe --tags --match 'v[0-9]*')" >> $GITHUB_OUTPUT - - name: Testing (clang-tidy) uses: addnab/docker-run-action@v3 with: - image: px4io/px4-dev:${{ steps.px4_version.outputs.px4_version }} + image: px4io/px4-dev:v1.17.0-beta1 options: -v ${{ github.workspace }}:/workspace run: | cd /workspace - apt install clang-tidy-18 -y - update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-18 100 - update-alternatives --install /usr/bin/clang clang /usr/bin/clang-18 100 - update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-18 100 make clang-tidy From 021eee0c5c927ec2d860faeb3468009bf292f4fd Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 11:27:13 -0800 Subject: [PATCH 30/83] CI: use 16-core runs-on runner for clang-tidy workflow The free GitHub runner (4 vCPUs) takes ~22 minutes. Switch to a 16-core runs-on runner and bump parallelism to -j16 to reduce clang-tidy analysis time. Signed-off-by: Ramon Roche --- .github/workflows/clang-tidy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index 38763d3097..09d9f0729b 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -14,7 +14,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: [runs-on, runner=16cpu-linux-x64, "run-id=${{ github.run_id }}"] steps: - uses: actions/checkout@v4 with: @@ -28,4 +28,4 @@ jobs: options: -v ${{ github.workspace }}:/workspace run: | cd /workspace - make clang-tidy + make -j16 clang-tidy From e831c66ae11ac2a18355363856adf947a52b73aa Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 11:29:21 -0800 Subject: [PATCH 31/83] CI: add ccache and S3 caching to clang-tidy workflow - Switch from addnab/docker-run-action to native container directive - Use runs-on 16-core runner with S3 cache (extras=s3-cache) - Add ccache setup matching build_all_targets pattern - Run clang-tidy with -j16 to leverage all cores Signed-off-by: Ramon Roche --- .github/workflows/clang-tidy.yml | 43 ++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index 09d9f0729b..0187cbcd47 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -14,18 +14,45 @@ on: jobs: build: - runs-on: [runs-on, runner=16cpu-linux-x64, "run-id=${{ github.run_id }}"] + runs-on: [runs-on, runner=16cpu-linux-x64, "run-id=${{ github.run_id }}", "extras=s3-cache"] + container: + image: px4io/px4-dev:v1.17.0-beta1 steps: + - uses: runs-on/action@v2 - uses: actions/checkout@v4 with: fetch-depth: 0 fetch-tags: true - - name: Testing (clang-tidy) - uses: addnab/docker-run-action@v3 + - name: Git ownership workaround + run: git config --system --add safe.directory '*' + + - name: ccache cache + id: cc_restore + uses: runs-on/cache@v4 with: - image: px4io/px4-dev:v1.17.0-beta1 - options: -v ${{ github.workspace }}:/workspace - run: | - cd /workspace - make -j16 clang-tidy + path: ~/.ccache + key: ccache-clang-tidy-${{ github.ref_name }} + restore-keys: | + ccache-clang-tidy-${{ github.ref_name }}- + ccache-clang-tidy-main- + ccache-clang-tidy- + + - name: ccache config and stats + run: | + mkdir -p ~/.ccache + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf + echo "compression = true" >> ~/.ccache/ccache.conf + echo "compression_level = 6" >> ~/.ccache/ccache.conf + echo "max_size = 120M" >> ~/.ccache/ccache.conf + echo "hash_dir = false" >> ~/.ccache/ccache.conf + echo "compiler_check = content" >> ~/.ccache/ccache.conf + ccache -s + ccache -z + + - name: Testing (clang-tidy) + run: make -j16 clang-tidy + + - name: ccache post-build stats + if: always() + run: ccache -s From 8a007d38e7356778288705e7cc93d98d2032af09 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 14:12:44 -0800 Subject: [PATCH 32/83] CI: split ccache into restore/save so cache persists on failure Use separate cache/restore and cache/save steps with if: always() on the save step, matching the build_all_targets pattern. Signed-off-by: Ramon Roche --- .github/workflows/clang-tidy.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index 0187cbcd47..8eb8cc7a35 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -27,9 +27,9 @@ jobs: - name: Git ownership workaround run: git config --system --add safe.directory '*' - - name: ccache cache + - name: ccache cache restore id: cc_restore - uses: runs-on/cache@v4 + uses: runs-on/cache/restore@v4 with: path: ~/.ccache key: ccache-clang-tidy-${{ github.ref_name }} @@ -56,3 +56,10 @@ jobs: - name: ccache post-build stats if: always() run: ccache -s + + - name: ccache cache save + if: always() + uses: runs-on/cache/save@v4 + with: + path: ~/.ccache + key: ${{ steps.cc_restore.outputs.cache-primary-key }} From 618a6aa98f60186c0d925d056eb65a26634c433d Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 14:15:50 -0800 Subject: [PATCH 33/83] CI: add explicit permissions block to clang-tidy workflow Set minimal permissions (contents: read) as flagged by CodeQL. Signed-off-by: Ramon Roche --- .github/workflows/clang-tidy.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index 8eb8cc7a35..f3b917cbd0 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -12,6 +12,9 @@ on: paths-ignore: - 'docs/**' +permissions: + contents: read + jobs: build: runs-on: [runs-on, runner=16cpu-linux-x64, "run-id=${{ github.run_id }}", "extras=s3-cache"] From 29fefeeada10d30ffa1e297a947a0300f1ffeb36 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 14:28:48 -0800 Subject: [PATCH 34/83] CI: fix ccache key to use branch name instead of merge ref github.ref_name resolves to '26367/merge' for pull_request events, causing cache misses. Use github.head_ref (PR source branch) with fallback to github.ref_name for push events. Signed-off-by: Ramon Roche --- .github/workflows/clang-tidy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index f3b917cbd0..46e1247c68 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -35,9 +35,9 @@ jobs: uses: runs-on/cache/restore@v4 with: path: ~/.ccache - key: ccache-clang-tidy-${{ github.ref_name }} + key: ccache-clang-tidy-${{ github.head_ref || github.ref_name }} restore-keys: | - ccache-clang-tidy-${{ github.ref_name }}- + ccache-clang-tidy-${{ github.head_ref || github.ref_name }}- ccache-clang-tidy-main- ccache-clang-tidy- From d9b3e48ec5907b479b60256a9a027e9d4856e95a Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 14:42:45 -0800 Subject: [PATCH 35/83] CI: improve clang-tidy workflow naming and use standard cache actions Rename workflow to "Static Analysis" with job name "Clang-Tidy" for clearer GitHub Checks UI. Use Title Case action-verb step names. Switch from runs-on/cache to actions/cache since the runs-on Magic Cache sidecar transparently handles S3 backing. Signed-off-by: Ramon Roche --- .github/workflows/clang-tidy.yml | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index 46e1247c68..fc3c5a46ea 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -1,4 +1,4 @@ -name: Clang Tidy +name: Static Analysis on: push: @@ -16,7 +16,8 @@ permissions: contents: read jobs: - build: + clang_tidy: + name: Clang-Tidy runs-on: [runs-on, runner=16cpu-linux-x64, "run-id=${{ github.run_id }}", "extras=s3-cache"] container: image: px4io/px4-dev:v1.17.0-beta1 @@ -27,12 +28,12 @@ jobs: fetch-depth: 0 fetch-tags: true - - name: Git ownership workaround + - name: Configure Git Safe Directory run: git config --system --add safe.directory '*' - - name: ccache cache restore + - name: Restore Compiler Cache id: cc_restore - uses: runs-on/cache/restore@v4 + uses: actions/cache/restore@v4 with: path: ~/.ccache key: ccache-clang-tidy-${{ github.head_ref || github.ref_name }} @@ -41,7 +42,7 @@ jobs: ccache-clang-tidy-main- ccache-clang-tidy- - - name: ccache config and stats + - name: Configure Compiler Cache run: | mkdir -p ~/.ccache echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf @@ -53,16 +54,16 @@ jobs: ccache -s ccache -z - - name: Testing (clang-tidy) + - name: Run Clang-Tidy Analysis run: make -j16 clang-tidy - - name: ccache post-build stats + - name: Compiler Cache Stats if: always() run: ccache -s - - name: ccache cache save + - name: Save Compiler Cache if: always() - uses: runs-on/cache/save@v4 + uses: actions/cache/save@v4 with: path: ~/.ccache key: ${{ steps.cc_restore.outputs.cache-primary-key }} From 0646fa6c9d5d8a69f23958ba96dff3d86f8ec69f Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 15:09:29 -0800 Subject: [PATCH 36/83] logger: add unit test for ULog INFO message serialization Add a gtest that validates the exact binary layout of INFO and INFO_MULTIPLE messages against the ULog spec. This exercises the same packing logic as write_info/write_info_multiple and will catch any accidental changes to the wire format (e.g. including a null terminator in msg_size). Signed-off-by: Ramon Roche --- src/modules/logger/CMakeLists.txt | 2 + src/modules/logger/ULogMessageInfoTest.cpp | 106 +++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 src/modules/logger/ULogMessageInfoTest.cpp diff --git a/src/modules/logger/CMakeLists.txt b/src/modules/logger/CMakeLists.txt index 9ff775f220..5212717925 100644 --- a/src/modules/logger/CMakeLists.txt +++ b/src/modules/logger/CMakeLists.txt @@ -60,3 +60,5 @@ px4_add_module( version component_general_json # for checksums.h ) + +px4_add_unit_gtest(SRC ULogMessageInfoTest.cpp) diff --git a/src/modules/logger/ULogMessageInfoTest.cpp b/src/modules/logger/ULogMessageInfoTest.cpp new file mode 100644 index 0000000000..682a4b6447 --- /dev/null +++ b/src/modules/logger/ULogMessageInfoTest.cpp @@ -0,0 +1,106 @@ +/**************************************************************************** + * + * Copyright (C) 2025 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include +#include "messages.h" + +TEST(ULogMessageInfo, InfoMessageLayout) +{ + const char *name = "hello"; + const char *value = "world"; + const size_t vlen = strlen(value); + + ulog_message_info_s msg = {}; + uint8_t *buffer = reinterpret_cast(&msg); + msg.msg_type = static_cast(ULogMessageType::INFO); + + msg.key_len = snprintf(msg.key_value_str, sizeof(msg.key_value_str), + "char[%zu] %s", vlen, name); + size_t msg_size = sizeof(msg) - sizeof(msg.key_value_str) + msg.key_len; + + ASSERT_LT(vlen, sizeof(msg) - msg_size); + memcpy(&buffer[msg_size], value, vlen); + msg_size += vlen; + + msg.msg_size = msg_size - ULOG_MSG_HEADER_LEN; + + // msg_size == key_len + vlen + 1 (the +1 is the key_len field itself) + EXPECT_EQ(msg.msg_size, msg.key_len + vlen + 1); + EXPECT_EQ(msg.msg_type, static_cast('I')); + + const char expected_key[] = "char[5] hello"; + EXPECT_EQ(msg.key_len, strlen(expected_key)); + + const size_t header_size = sizeof(msg) - sizeof(msg.key_value_str); + const uint8_t *value_start = &buffer[header_size + msg.key_len]; + EXPECT_EQ(memcmp(value_start, "world", vlen), 0); + + // msg_size must not account for a null terminator + EXPECT_EQ(msg_size, header_size + msg.key_len + vlen); +} + +TEST(ULogMessageInfo, InfoMultipleMessageLayout) +{ + const char *name = "ver"; + const char *value = "1.0"; + const size_t vlen = strlen(value); + + ulog_message_info_multiple_s msg = {}; + uint8_t *buffer = reinterpret_cast(&msg); + msg.msg_type = static_cast(ULogMessageType::INFO_MULTIPLE); + msg.is_continued = false; + + msg.key_len = snprintf(msg.key_value_str, sizeof(msg.key_value_str), + "char[%zu] %s", vlen, name); + size_t msg_size = sizeof(msg) - sizeof(msg.key_value_str) + msg.key_len; + + ASSERT_LT(vlen, sizeof(msg) - msg_size); + memcpy(&buffer[msg_size], value, vlen); + msg_size += vlen; + + msg.msg_size = msg_size - ULOG_MSG_HEADER_LEN; + + const size_t header_size = sizeof(msg) - sizeof(msg.key_value_str); + EXPECT_EQ(msg.msg_size, msg_size - ULOG_MSG_HEADER_LEN); + EXPECT_EQ(msg.msg_type, static_cast('M')); + + const char expected_key[] = "char[3] ver"; + EXPECT_EQ(msg.key_len, strlen(expected_key)); + + const uint8_t *value_start = &buffer[header_size + msg.key_len]; + EXPECT_EQ(memcmp(value_start, "1.0", vlen), 0); + + EXPECT_EQ(msg_size, header_size + msg.key_len + vlen); +} From 83a4d648e35493d10b690929c567ec747e2fd85a Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 15:09:52 -0800 Subject: [PATCH 37/83] logger: copy null terminator in write_info memcpy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit clang-tidy flags the memcpy of vlen bytes as bugprone-not-null-terminated-result because the destination buffer region is left unterminated in memory. Copy vlen + 1 bytes (including the source null terminator) so the buffer is null-terminated in memory. The ULog msg_size is not incremented for the extra byte — the null sits in the struct's key_value_str padding and is never written to the log file, preserving the ULog wire format which does not include a null terminator for string values. The bounds check (vlen < sizeof(msg) - msg_size) guarantees at least one byte of headroom beyond vlen, so vlen + 1 is always within the struct. Signed-off-by: Ramon Roche --- src/modules/logger/logger.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/logger/logger.cpp b/src/modules/logger/logger.cpp index 196550615e..7e65cf448c 100644 --- a/src/modules/logger/logger.cpp +++ b/src/modules/logger/logger.cpp @@ -1890,7 +1890,7 @@ void Logger::write_info(LogType type, const char *name, const char *value) /* copy string value directly to buffer */ if (vlen < (sizeof(msg) - msg_size)) { - memcpy(&buffer[msg_size], value, vlen); + memcpy(&buffer[msg_size], value, vlen + 1); msg_size += vlen; msg.msg_size = msg_size - ULOG_MSG_HEADER_LEN; @@ -1916,7 +1916,7 @@ void Logger::write_info_multiple(LogType type, const char *name, const char *val /* copy string value directly to buffer */ if (vlen < (sizeof(msg) - msg_size)) { - memcpy(&buffer[msg_size], value, vlen); + memcpy(&buffer[msg_size], value, vlen + 1); msg_size += vlen; msg.msg_size = msg_size - ULOG_MSG_HEADER_LEN; From 5d151c54a4bafb3e176fdc96e4de321329ea0ff4 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 15:10:11 -0800 Subject: [PATCH 38/83] flight_mode_manager: call direct parent instead of grandparent FlightTaskManualAcceleration and FlightTaskOrbit both inherit from FlightTaskManualAltitudeSmoothVel but were calling FlightTask and FlightTaskManualAltitude respectively, skipping the intermediate parent's overrides (smoothing velocity init, parameter chain). Fix the DEFINE_PARAMETERS_CUSTOM_PARENT macro argument and the activate() call to use FlightTaskManualAltitudeSmoothVel. Fixes bugprone-parent-virtual-call clang-tidy diagnostic. Signed-off-by: Ramon Roche --- .../tasks/ManualAcceleration/FlightTaskManualAcceleration.hpp | 2 +- src/modules/flight_mode_manager/tasks/Orbit/FlightTaskOrbit.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.hpp b/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.hpp index 56fefcc792..2ce9a7c44f 100644 --- a/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.hpp +++ b/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.hpp @@ -52,7 +52,7 @@ protected: StickAccelerationXY _stick_acceleration_xy{this}; WeatherVane _weathervane{this}; /**< weathervane library, used to implement a yaw control law that turns the vehicle nose into the wind */ - DEFINE_PARAMETERS_CUSTOM_PARENT(FlightTask, + DEFINE_PARAMETERS_CUSTOM_PARENT(FlightTaskManualAltitudeSmoothVel, (ParamFloat) _param_mpc_vel_manual, (ParamFloat) _param_mpc_acc_hor ) diff --git a/src/modules/flight_mode_manager/tasks/Orbit/FlightTaskOrbit.cpp b/src/modules/flight_mode_manager/tasks/Orbit/FlightTaskOrbit.cpp index d8b68b0db3..55c6b64273 100644 --- a/src/modules/flight_mode_manager/tasks/Orbit/FlightTaskOrbit.cpp +++ b/src/modules/flight_mode_manager/tasks/Orbit/FlightTaskOrbit.cpp @@ -173,7 +173,7 @@ void FlightTaskOrbit::_sanitizeParams(float &radius, float &velocity) const bool FlightTaskOrbit::activate(const trajectory_setpoint_s &last_setpoint) { - bool ret = FlightTaskManualAltitude::activate(last_setpoint); + bool ret = FlightTaskManualAltitudeSmoothVel::activate(last_setpoint); _currently_orbiting = false; _orbit_radius = _radius_min; _orbit_velocity = 1.f; From b60aa5dd2be36a38fa3652a1d4fb0372f10f4fb8 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 15:10:27 -0800 Subject: [PATCH 39/83] ekf2, fw_mode_manager, fw_rate_control: remove unused using declarations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove using-declarations for math::constrain, math::max, and math::min that are never used — all call sites use the fully-qualified form (e.g. math::constrain()). Fixes misc-unused-using-decls clang-tidy diagnostic. Signed-off-by: Ramon Roche --- src/modules/ekf2/EKF2.cpp | 1 - src/modules/fw_mode_manager/FixedWingModeManager.cpp | 3 --- src/modules/fw_rate_control/FixedwingRateControl.cpp | 1 - 3 files changed, 5 deletions(-) diff --git a/src/modules/ekf2/EKF2.cpp b/src/modules/ekf2/EKF2.cpp index 4a3ddfc32f..98e2be7828 100644 --- a/src/modules/ekf2/EKF2.cpp +++ b/src/modules/ekf2/EKF2.cpp @@ -35,7 +35,6 @@ #include "EKF2.hpp" using namespace time_literals; -using math::constrain; using matrix::Eulerf; using matrix::Quatf; using matrix::Vector3f; diff --git a/src/modules/fw_mode_manager/FixedWingModeManager.cpp b/src/modules/fw_mode_manager/FixedWingModeManager.cpp index 0ac0d36264..1f752608ca 100644 --- a/src/modules/fw_mode_manager/FixedWingModeManager.cpp +++ b/src/modules/fw_mode_manager/FixedWingModeManager.cpp @@ -36,9 +36,6 @@ #include #include -using math::constrain; -using math::max; -using math::min; using math::radians; using matrix::Dcmf; diff --git a/src/modules/fw_rate_control/FixedwingRateControl.cpp b/src/modules/fw_rate_control/FixedwingRateControl.cpp index 3ae3272cfa..993d68bdd0 100644 --- a/src/modules/fw_rate_control/FixedwingRateControl.cpp +++ b/src/modules/fw_rate_control/FixedwingRateControl.cpp @@ -36,7 +36,6 @@ using namespace time_literals; using namespace matrix; -using math::constrain; using math::interpolate; using math::radians; From 497704f3b9abb816a8815539587fe2cd8675bcc5 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 15:10:43 -0800 Subject: [PATCH 40/83] fw_mode_manager: pass FigureEightPatternPoints by const reference The 48-byte struct (6 Vector2f) is only read inside initializePattern, so passing by value creates an unnecessary copy. Fixes performance-unnecessary-value-param clang-tidy diagnostic. Signed-off-by: Ramon Roche --- src/modules/fw_mode_manager/figure_eight/FigureEight.cpp | 2 +- src/modules/fw_mode_manager/figure_eight/FigureEight.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/fw_mode_manager/figure_eight/FigureEight.cpp b/src/modules/fw_mode_manager/figure_eight/FigureEight.cpp index f7585f39b4..a995d28543 100644 --- a/src/modules/fw_mode_manager/figure_eight/FigureEight.cpp +++ b/src/modules/fw_mode_manager/figure_eight/FigureEight.cpp @@ -105,7 +105,7 @@ FigureEight::FigureEightPatternParameters FigureEight::sanitizeParameters(const } void FigureEight::initializePattern(const matrix::Vector2f &curr_pos_local, const matrix::Vector2f &ground_speed, - const FigureEightPatternParameters ¶meters, FigureEightPatternPoints pattern_points) + const FigureEightPatternParameters ¶meters, const FigureEightPatternPoints &pattern_points) { // Initialize the currently active segment, if it hasn't been active yet, or the pattern has been changed. if ((_current_segment == FigureEightSegment::SEGMENT_UNDEFINED) || (_active_parameters != parameters)) { diff --git a/src/modules/fw_mode_manager/figure_eight/FigureEight.hpp b/src/modules/fw_mode_manager/figure_eight/FigureEight.hpp index 297e07942c..fcdb39915c 100644 --- a/src/modules/fw_mode_manager/figure_eight/FigureEight.hpp +++ b/src/modules/fw_mode_manager/figure_eight/FigureEight.hpp @@ -140,7 +140,7 @@ private: * @param[in] pattern_points are the figure of eight pattern points. */ void initializePattern(const matrix::Vector2f &curr_pos_local, const matrix::Vector2f &ground_speed, - const FigureEightPatternParameters ¶meters, FigureEightPatternPoints pattern_points); + const FigureEightPatternParameters ¶meters, const FigureEightPatternPoints &pattern_points); /** * @brief Calculate figure eight pattern points From 9849d908770eb493c7e5c61336944cc2839253ea Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 15:10:56 -0800 Subject: [PATCH 41/83] gps: add null check for path in GPS constructor Guard the strncpy call with a null check to prevent undefined behavior if the constructor is ever called with a null path pointer. Fixes clang-analyzer-core.NonNullParamChecker diagnostic. Signed-off-by: Ramon Roche --- src/drivers/gps/gps.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/drivers/gps/gps.cpp b/src/drivers/gps/gps.cpp index b33e27ac22..464eb892e9 100644 --- a/src/drivers/gps/gps.cpp +++ b/src/drivers/gps/gps.cpp @@ -318,9 +318,13 @@ GPS::GPS(const char *path, gps_driver_mode_t mode, GPSHelper::Interface interfac _instance(instance) { /* store port name */ - strncpy(_port, path, sizeof(_port) - 1); - /* enforce null termination */ - _port[sizeof(_port) - 1] = '\0'; + if (path != nullptr) { + strncpy(_port, path, sizeof(_port) - 1); + _port[sizeof(_port) - 1] = '\0'; + + } else { + _port[0] = '\0'; + } _sensor_gps.heading = NAN; _sensor_gps.heading_offset = NAN; From f29afe134201d64472665450305a003fc6999c92 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 15:27:50 -0800 Subject: [PATCH 42/83] logger: expand ULog unit tests to cover all message types Rename ULogMessageInfoTest to ULogMessagesTest and add struct-level coverage for every message type in the ULog spec: - File header: magic bytes, size, field offsets - Flag Bits ('B'): size, field offsets, flag masks - Format ('F'): size, serialization - Info ('I'): string, int32_t, and float value layouts - Info Multiple ('M'): string layout, continuation flag, field offsets - Parameter ('P'): int32_t and float value layouts - Default Parameter ('Q'): size, type bits, field offsets - Subscription ('A'): size, field offsets, serialization - Unsubscription ('R'): size, serialization - Data ('D'): size, field offset - Logging ('L'): size, field offsets, serialization - Logging Tagged ('C'): size, field offsets - Sync ('S'): size, magic bytes - Dropout ('O'): size, default msg_size, serialization - Message header: size, field offsets, ULOG_MSG_HEADER_LEN - Enum values: all 13 ULogMessageType codes Signed-off-by: Ramon Roche --- src/modules/logger/CMakeLists.txt | 2 +- src/modules/logger/ULogMessageInfoTest.cpp | 106 ---- src/modules/logger/ULogMessagesTest.cpp | 666 +++++++++++++++++++++ 3 files changed, 667 insertions(+), 107 deletions(-) delete mode 100644 src/modules/logger/ULogMessageInfoTest.cpp create mode 100644 src/modules/logger/ULogMessagesTest.cpp diff --git a/src/modules/logger/CMakeLists.txt b/src/modules/logger/CMakeLists.txt index 5212717925..b9ea444670 100644 --- a/src/modules/logger/CMakeLists.txt +++ b/src/modules/logger/CMakeLists.txt @@ -61,4 +61,4 @@ px4_add_module( component_general_json # for checksums.h ) -px4_add_unit_gtest(SRC ULogMessageInfoTest.cpp) +px4_add_unit_gtest(SRC ULogMessagesTest.cpp) diff --git a/src/modules/logger/ULogMessageInfoTest.cpp b/src/modules/logger/ULogMessageInfoTest.cpp deleted file mode 100644 index 682a4b6447..0000000000 --- a/src/modules/logger/ULogMessageInfoTest.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2025 PX4 Development Team. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name PX4 nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -#include -#include -#include -#include "messages.h" - -TEST(ULogMessageInfo, InfoMessageLayout) -{ - const char *name = "hello"; - const char *value = "world"; - const size_t vlen = strlen(value); - - ulog_message_info_s msg = {}; - uint8_t *buffer = reinterpret_cast(&msg); - msg.msg_type = static_cast(ULogMessageType::INFO); - - msg.key_len = snprintf(msg.key_value_str, sizeof(msg.key_value_str), - "char[%zu] %s", vlen, name); - size_t msg_size = sizeof(msg) - sizeof(msg.key_value_str) + msg.key_len; - - ASSERT_LT(vlen, sizeof(msg) - msg_size); - memcpy(&buffer[msg_size], value, vlen); - msg_size += vlen; - - msg.msg_size = msg_size - ULOG_MSG_HEADER_LEN; - - // msg_size == key_len + vlen + 1 (the +1 is the key_len field itself) - EXPECT_EQ(msg.msg_size, msg.key_len + vlen + 1); - EXPECT_EQ(msg.msg_type, static_cast('I')); - - const char expected_key[] = "char[5] hello"; - EXPECT_EQ(msg.key_len, strlen(expected_key)); - - const size_t header_size = sizeof(msg) - sizeof(msg.key_value_str); - const uint8_t *value_start = &buffer[header_size + msg.key_len]; - EXPECT_EQ(memcmp(value_start, "world", vlen), 0); - - // msg_size must not account for a null terminator - EXPECT_EQ(msg_size, header_size + msg.key_len + vlen); -} - -TEST(ULogMessageInfo, InfoMultipleMessageLayout) -{ - const char *name = "ver"; - const char *value = "1.0"; - const size_t vlen = strlen(value); - - ulog_message_info_multiple_s msg = {}; - uint8_t *buffer = reinterpret_cast(&msg); - msg.msg_type = static_cast(ULogMessageType::INFO_MULTIPLE); - msg.is_continued = false; - - msg.key_len = snprintf(msg.key_value_str, sizeof(msg.key_value_str), - "char[%zu] %s", vlen, name); - size_t msg_size = sizeof(msg) - sizeof(msg.key_value_str) + msg.key_len; - - ASSERT_LT(vlen, sizeof(msg) - msg_size); - memcpy(&buffer[msg_size], value, vlen); - msg_size += vlen; - - msg.msg_size = msg_size - ULOG_MSG_HEADER_LEN; - - const size_t header_size = sizeof(msg) - sizeof(msg.key_value_str); - EXPECT_EQ(msg.msg_size, msg_size - ULOG_MSG_HEADER_LEN); - EXPECT_EQ(msg.msg_type, static_cast('M')); - - const char expected_key[] = "char[3] ver"; - EXPECT_EQ(msg.key_len, strlen(expected_key)); - - const uint8_t *value_start = &buffer[header_size + msg.key_len]; - EXPECT_EQ(memcmp(value_start, "1.0", vlen), 0); - - EXPECT_EQ(msg_size, header_size + msg.key_len + vlen); -} diff --git a/src/modules/logger/ULogMessagesTest.cpp b/src/modules/logger/ULogMessagesTest.cpp new file mode 100644 index 0000000000..4e5f9d846c --- /dev/null +++ b/src/modules/logger/ULogMessagesTest.cpp @@ -0,0 +1,666 @@ +/**************************************************************************** + * + * Copyright (C) 2025 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include +#include "messages.h" + +// ---------------------------------------------------------------------------- +// Header & constants +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, HeaderLen) +{ + EXPECT_EQ(ULOG_MSG_HEADER_LEN, 3u); +} + +TEST(ULogMessages, MessageHeaderSize) +{ + EXPECT_EQ(sizeof(ulog_message_header_s), 3u); +} + +TEST(ULogMessages, MessageHeaderFieldOffsets) +{ + ulog_message_header_s msg = {}; + uint8_t *base = reinterpret_cast(&msg); + + EXPECT_EQ(reinterpret_cast(&msg.msg_size) - base, 0); + EXPECT_EQ(reinterpret_cast(&msg.msg_type) - base, 2); +} + +// ---------------------------------------------------------------------------- +// File header (16 bytes: 8 magic + 8 timestamp) +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, FileHeaderSize) +{ + EXPECT_EQ(sizeof(ulog_file_header_s), 16u); +} + +TEST(ULogMessages, FileHeaderMagic) +{ + ulog_file_header_s hdr = {}; + const uint8_t expected_magic[] = {'U', 'L', 'o', 'g', 0x01, 0x12, 0x35, 0x01}; + + memcpy(hdr.magic, expected_magic, sizeof(expected_magic)); + hdr.timestamp = 1000000ULL; + + EXPECT_EQ(memcmp(hdr.magic, expected_magic, 7), 0); + EXPECT_EQ(hdr.magic[7], 0x01); + EXPECT_EQ(hdr.timestamp, 1000000ULL); +} + +TEST(ULogMessages, FileHeaderFieldOffsets) +{ + ulog_file_header_s hdr = {}; + uint8_t *base = reinterpret_cast(&hdr); + + EXPECT_EQ(reinterpret_cast(&hdr.magic) - base, 0); + EXPECT_EQ(reinterpret_cast(&hdr.timestamp) - base, 8); +} + +// ---------------------------------------------------------------------------- +// Flag Bits ('B') — must be first message after header +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, FlagBitsSize) +{ + // payload: 8 compat + 8 incompat + 24 appended_offsets = 40 + EXPECT_EQ(sizeof(ulog_message_flag_bits_s), ULOG_MSG_HEADER_LEN + 40u); +} + +TEST(ULogMessages, FlagBitsTypeCode) +{ + ulog_message_flag_bits_s msg = {}; + EXPECT_EQ(msg.msg_type, static_cast('B')); +} + +TEST(ULogMessages, FlagBitsFieldOffsets) +{ + ulog_message_flag_bits_s msg = {}; + uint8_t *base = reinterpret_cast(&msg); + + EXPECT_EQ(reinterpret_cast(&msg.compat_flags) - base, ULOG_MSG_HEADER_LEN); + EXPECT_EQ(reinterpret_cast(&msg.incompat_flags) - base, ULOG_MSG_HEADER_LEN + 8); + EXPECT_EQ(reinterpret_cast(&msg.appended_offsets) - base, ULOG_MSG_HEADER_LEN + 16); +} + +TEST(ULogMessages, FlagBitsDataAppendedMask) +{ + EXPECT_EQ(ULOG_INCOMPAT_FLAG0_DATA_APPENDED_MASK, 1 << 0); + EXPECT_EQ(ULOG_COMPAT_FLAG0_DEFAULT_PARAMETERS_MASK, 1 << 0); +} + +// ---------------------------------------------------------------------------- +// Format Definition ('F') +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, FormatSize) +{ + EXPECT_EQ(sizeof(ulog_message_format_s), ULOG_MSG_HEADER_LEN + 1600u); +} + +TEST(ULogMessages, FormatTypeCode) +{ + ulog_message_format_s msg = {}; + EXPECT_EQ(msg.msg_type, static_cast('F')); +} + +TEST(ULogMessages, FormatSerialization) +{ + ulog_message_format_s msg = {}; + const char *format_str = "test_topic:uint64_t timestamp;float value;"; + size_t len = strlen(format_str); + + strncpy(msg.format, format_str, sizeof(msg.format)); + msg.msg_size = len; + + EXPECT_EQ(msg.msg_size, len); + EXPECT_EQ(memcmp(msg.format, format_str, len), 0); +} + +// ---------------------------------------------------------------------------- +// Information ('I') +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, InfoSize) +{ + // header(3) + key_len(1) + key_value_str(255) = 259 + EXPECT_EQ(sizeof(ulog_message_info_s), ULOG_MSG_HEADER_LEN + 1u + 255u); +} + +TEST(ULogMessages, InfoTypeCode) +{ + ulog_message_info_s msg = {}; + EXPECT_EQ(msg.msg_type, static_cast('I')); +} + +TEST(ULogMessages, InfoStringLayout) +{ + const char *name = "hello"; + const char *value = "world"; + const size_t vlen = strlen(value); + + ulog_message_info_s msg = {}; + uint8_t *buffer = reinterpret_cast(&msg); + msg.msg_type = static_cast(ULogMessageType::INFO); + + msg.key_len = snprintf(msg.key_value_str, sizeof(msg.key_value_str), + "char[%zu] %s", vlen, name); + size_t msg_size = sizeof(msg) - sizeof(msg.key_value_str) + msg.key_len; + + ASSERT_LT(vlen, sizeof(msg) - msg_size); + memcpy(&buffer[msg_size], value, vlen); + msg_size += vlen; + + msg.msg_size = msg_size - ULOG_MSG_HEADER_LEN; + + // msg_size == key_len_field(1) + key_len + vlen + EXPECT_EQ(msg.msg_size, msg.key_len + vlen + 1); + + const char expected_key[] = "char[5] hello"; + EXPECT_EQ(msg.key_len, strlen(expected_key)); + + const size_t header_size = sizeof(msg) - sizeof(msg.key_value_str); + const uint8_t *value_start = &buffer[header_size + msg.key_len]; + EXPECT_EQ(memcmp(value_start, "world", vlen), 0); + + // no null terminator in msg_size + EXPECT_EQ(msg_size, header_size + msg.key_len + vlen); +} + +TEST(ULogMessages, InfoInt32Layout) +{ + const char *name = "sys_param"; + int32_t value = 42; + + ulog_message_info_s msg = {}; + uint8_t *buffer = reinterpret_cast(&msg); + msg.msg_type = static_cast(ULogMessageType::INFO); + + msg.key_len = snprintf(msg.key_value_str, sizeof(msg.key_value_str), + "int32_t %s", name); + size_t msg_size = sizeof(msg) - sizeof(msg.key_value_str) + msg.key_len; + + ASSERT_LE(sizeof(value), sizeof(msg) - msg_size); + memcpy(&buffer[msg_size], &value, sizeof(value)); + msg_size += sizeof(value); + + msg.msg_size = msg_size - ULOG_MSG_HEADER_LEN; + + EXPECT_EQ(msg.msg_size, msg.key_len + sizeof(int32_t) + 1); + + const char expected_key[] = "int32_t sys_param"; + EXPECT_EQ(msg.key_len, strlen(expected_key)); + + const size_t header_size = sizeof(msg) - sizeof(msg.key_value_str); + int32_t read_back = 0; + memcpy(&read_back, &buffer[header_size + msg.key_len], sizeof(int32_t)); + EXPECT_EQ(read_back, 42); +} + +TEST(ULogMessages, InfoFloatLayout) +{ + const char *name = "cal_offset"; + float value = 3.14f; + + ulog_message_info_s msg = {}; + uint8_t *buffer = reinterpret_cast(&msg); + msg.msg_type = static_cast(ULogMessageType::INFO); + + msg.key_len = snprintf(msg.key_value_str, sizeof(msg.key_value_str), + "float %s", name); + size_t msg_size = sizeof(msg) - sizeof(msg.key_value_str) + msg.key_len; + + ASSERT_LE(sizeof(value), sizeof(msg) - msg_size); + memcpy(&buffer[msg_size], &value, sizeof(value)); + msg_size += sizeof(value); + + msg.msg_size = msg_size - ULOG_MSG_HEADER_LEN; + + EXPECT_EQ(msg.msg_size, msg.key_len + sizeof(float) + 1); + + const size_t header_size = sizeof(msg) - sizeof(msg.key_value_str); + float read_back = 0.f; + memcpy(&read_back, &buffer[header_size + msg.key_len], sizeof(float)); + EXPECT_FLOAT_EQ(read_back, 3.14f); +} + +// ---------------------------------------------------------------------------- +// Information Multiple ('M') +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, InfoMultipleSize) +{ + // header(3) + is_continued(1) + key_len(1) + key_value_str(1200) = 1205 + EXPECT_EQ(sizeof(ulog_message_info_multiple_s), ULOG_MSG_HEADER_LEN + 1u + 1u + 1200u); +} + +TEST(ULogMessages, InfoMultipleTypeCode) +{ + ulog_message_info_multiple_s msg = {}; + EXPECT_EQ(msg.msg_type, static_cast('M')); +} + +TEST(ULogMessages, InfoMultipleStringLayout) +{ + const char *name = "ver"; + const char *value = "1.0"; + const size_t vlen = strlen(value); + + ulog_message_info_multiple_s msg = {}; + uint8_t *buffer = reinterpret_cast(&msg); + msg.msg_type = static_cast(ULogMessageType::INFO_MULTIPLE); + msg.is_continued = false; + + msg.key_len = snprintf(msg.key_value_str, sizeof(msg.key_value_str), + "char[%zu] %s", vlen, name); + size_t msg_size = sizeof(msg) - sizeof(msg.key_value_str) + msg.key_len; + + ASSERT_LT(vlen, sizeof(msg) - msg_size); + memcpy(&buffer[msg_size], value, vlen); + msg_size += vlen; + + msg.msg_size = msg_size - ULOG_MSG_HEADER_LEN; + + const size_t header_size = sizeof(msg) - sizeof(msg.key_value_str); + EXPECT_EQ(msg.msg_size, msg_size - ULOG_MSG_HEADER_LEN); + EXPECT_EQ(msg.is_continued, 0); + + const char expected_key[] = "char[3] ver"; + EXPECT_EQ(msg.key_len, strlen(expected_key)); + + const uint8_t *value_start = &buffer[header_size + msg.key_len]; + EXPECT_EQ(memcmp(value_start, "1.0", vlen), 0); + + EXPECT_EQ(msg_size, header_size + msg.key_len + vlen); +} + +TEST(ULogMessages, InfoMultipleContinuation) +{ + ulog_message_info_multiple_s msg = {}; + msg.is_continued = 1; + + EXPECT_EQ(msg.is_continued, 1); + EXPECT_EQ(msg.msg_type, static_cast('M')); +} + +TEST(ULogMessages, InfoMultipleFieldOffsets) +{ + ulog_message_info_multiple_s msg = {}; + uint8_t *base = reinterpret_cast(&msg); + + EXPECT_EQ(reinterpret_cast(&msg.is_continued) - base, ULOG_MSG_HEADER_LEN); + EXPECT_EQ(reinterpret_cast(&msg.key_len) - base, ULOG_MSG_HEADER_LEN + 1); + EXPECT_EQ(reinterpret_cast(&msg.key_value_str) - base, ULOG_MSG_HEADER_LEN + 2); +} + +// ---------------------------------------------------------------------------- +// Parameter ('P') +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, ParameterSize) +{ + EXPECT_EQ(sizeof(ulog_message_parameter_s), ULOG_MSG_HEADER_LEN + 1u + 255u); +} + +TEST(ULogMessages, ParameterTypeCode) +{ + ulog_message_parameter_s msg = {}; + EXPECT_EQ(msg.msg_type, static_cast('P')); +} + +TEST(ULogMessages, ParameterInt32Layout) +{ + const char *name = "SYS_AUTOSTART"; + int32_t value = 4001; + + ulog_message_parameter_s msg = {}; + uint8_t *buffer = reinterpret_cast(&msg); + + msg.key_len = snprintf(msg.key_value_str, sizeof(msg.key_value_str), + "int32_t %s", name); + size_t msg_size = sizeof(msg) - sizeof(msg.key_value_str) + msg.key_len; + + memcpy(&buffer[msg_size], &value, sizeof(value)); + msg_size += sizeof(value); + + msg.msg_size = msg_size - ULOG_MSG_HEADER_LEN; + + EXPECT_EQ(msg.msg_size, msg.key_len + sizeof(int32_t) + 1); + + const size_t header_size = sizeof(msg) - sizeof(msg.key_value_str); + int32_t read_back = 0; + memcpy(&read_back, &buffer[header_size + msg.key_len], sizeof(int32_t)); + EXPECT_EQ(read_back, 4001); +} + +TEST(ULogMessages, ParameterFloatLayout) +{ + const char *name = "MC_PITCHRATE_P"; + float value = 0.15f; + + ulog_message_parameter_s msg = {}; + uint8_t *buffer = reinterpret_cast(&msg); + + msg.key_len = snprintf(msg.key_value_str, sizeof(msg.key_value_str), + "float %s", name); + size_t msg_size = sizeof(msg) - sizeof(msg.key_value_str) + msg.key_len; + + memcpy(&buffer[msg_size], &value, sizeof(value)); + msg_size += sizeof(value); + + msg.msg_size = msg_size - ULOG_MSG_HEADER_LEN; + + const size_t header_size = sizeof(msg) - sizeof(msg.key_value_str); + float read_back = 0.f; + memcpy(&read_back, &buffer[header_size + msg.key_len], sizeof(float)); + EXPECT_FLOAT_EQ(read_back, 0.15f); +} + +// ---------------------------------------------------------------------------- +// Default Parameter ('Q') +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, ParameterDefaultSize) +{ + // header(3) + default_types(1) + key_len(1) + key_value_str(255) = 260 + EXPECT_EQ(sizeof(ulog_message_parameter_default_s), ULOG_MSG_HEADER_LEN + 1u + 1u + 255u); +} + +TEST(ULogMessages, ParameterDefaultTypeCode) +{ + ulog_message_parameter_default_s msg = {}; + EXPECT_EQ(msg.msg_type, static_cast('Q')); +} + +TEST(ULogMessages, ParameterDefaultTypeBits) +{ + EXPECT_EQ(static_cast(ulog_parameter_default_type_t::system), 1 << 0); + EXPECT_EQ(static_cast(ulog_parameter_default_type_t::current_setup), 1 << 1); + + auto combined = ulog_parameter_default_type_t::system | ulog_parameter_default_type_t::current_setup; + EXPECT_EQ(static_cast(combined), 0x03); +} + +TEST(ULogMessages, ParameterDefaultFieldOffsets) +{ + ulog_message_parameter_default_s msg = {}; + uint8_t *base = reinterpret_cast(&msg); + + EXPECT_EQ(reinterpret_cast(&msg.default_types) - base, ULOG_MSG_HEADER_LEN); + EXPECT_EQ(reinterpret_cast(&msg.key_len) - base, ULOG_MSG_HEADER_LEN + 1); + EXPECT_EQ(reinterpret_cast(&msg.key_value_str) - base, ULOG_MSG_HEADER_LEN + 2); +} + +// ---------------------------------------------------------------------------- +// Subscription ('A') +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, AddLoggedSize) +{ + // header(3) + multi_id(1) + msg_id(2) + message_name(255) = 261 + EXPECT_EQ(sizeof(ulog_message_add_logged_s), ULOG_MSG_HEADER_LEN + 1u + 2u + 255u); +} + +TEST(ULogMessages, AddLoggedTypeCode) +{ + ulog_message_add_logged_s msg = {}; + EXPECT_EQ(msg.msg_type, static_cast('A')); +} + +TEST(ULogMessages, AddLoggedFieldOffsets) +{ + ulog_message_add_logged_s msg = {}; + uint8_t *base = reinterpret_cast(&msg); + + EXPECT_EQ(reinterpret_cast(&msg.multi_id) - base, ULOG_MSG_HEADER_LEN); + EXPECT_EQ(reinterpret_cast(&msg.msg_id) - base, ULOG_MSG_HEADER_LEN + 1); + EXPECT_EQ(reinterpret_cast(&msg.message_name) - base, ULOG_MSG_HEADER_LEN + 3); +} + +TEST(ULogMessages, AddLoggedSerialization) +{ + ulog_message_add_logged_s msg = {}; + msg.multi_id = 0; + msg.msg_id = 7; + const char *topic = "sensor_accel"; + size_t len = strlen(topic); + + strncpy(msg.message_name, topic, sizeof(msg.message_name)); + msg.msg_size = sizeof(msg.multi_id) + sizeof(msg.msg_id) + len; + + EXPECT_EQ(msg.multi_id, 0); + EXPECT_EQ(msg.msg_id, 7); + EXPECT_EQ(memcmp(msg.message_name, "sensor_accel", len), 0); +} + +// ---------------------------------------------------------------------------- +// Unsubscription ('R') +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, RemoveLoggedSize) +{ + // header(3) + msg_id(2) = 5 + EXPECT_EQ(sizeof(ulog_message_remove_logged_s), ULOG_MSG_HEADER_LEN + 2u); +} + +TEST(ULogMessages, RemoveLoggedTypeCode) +{ + ulog_message_remove_logged_s msg = {}; + EXPECT_EQ(msg.msg_type, static_cast('R')); +} + +TEST(ULogMessages, RemoveLoggedSerialization) +{ + ulog_message_remove_logged_s msg = {}; + msg.msg_id = 42; + msg.msg_size = sizeof(msg.msg_id); + + EXPECT_EQ(msg.msg_id, 42); + EXPECT_EQ(msg.msg_size, 2); +} + +// ---------------------------------------------------------------------------- +// Logged Data ('D') +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, DataSize) +{ + // header(3) + msg_id(2) = 5 (variable-length payload follows) + EXPECT_EQ(sizeof(ulog_message_data_s), ULOG_MSG_HEADER_LEN + 2u); +} + +TEST(ULogMessages, DataTypeCode) +{ + ulog_message_data_s msg = {}; + EXPECT_EQ(msg.msg_type, static_cast('D')); +} + +TEST(ULogMessages, DataFieldOffset) +{ + ulog_message_data_s msg = {}; + uint8_t *base = reinterpret_cast(&msg); + + EXPECT_EQ(reinterpret_cast(&msg.msg_id) - base, ULOG_MSG_HEADER_LEN); +} + +// ---------------------------------------------------------------------------- +// Logging ('L') +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, LoggingSize) +{ + // header(3) + log_level(1) + timestamp(8) + message(128) = 140 + EXPECT_EQ(sizeof(ulog_message_logging_s), ULOG_MSG_HEADER_LEN + 1u + 8u + 128u); +} + +TEST(ULogMessages, LoggingTypeCode) +{ + ulog_message_logging_s msg = {}; + EXPECT_EQ(msg.msg_type, static_cast('L')); +} + +TEST(ULogMessages, LoggingFieldOffsets) +{ + ulog_message_logging_s msg = {}; + uint8_t *base = reinterpret_cast(&msg); + + EXPECT_EQ(reinterpret_cast(&msg.log_level) - base, ULOG_MSG_HEADER_LEN); + EXPECT_EQ(reinterpret_cast(&msg.timestamp) - base, ULOG_MSG_HEADER_LEN + 1); + EXPECT_EQ(reinterpret_cast(&msg.message) - base, ULOG_MSG_HEADER_LEN + 9); +} + +TEST(ULogMessages, LoggingSerialization) +{ + ulog_message_logging_s msg = {}; + msg.log_level = 6; + msg.timestamp = 5000000ULL; + const char *text = "test message"; + size_t len = strlen(text); + + strncpy(msg.message, text, sizeof(msg.message)); + msg.msg_size = sizeof(msg.log_level) + sizeof(msg.timestamp) + len; + + EXPECT_EQ(msg.log_level, 6); + EXPECT_EQ(msg.timestamp, 5000000ULL); + EXPECT_EQ(memcmp(msg.message, "test message", len), 0); +} + +// ---------------------------------------------------------------------------- +// Logging Tagged ('C') +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, LoggingTaggedSize) +{ + // header(3) + log_level(1) + tag(2) + timestamp(8) + message(128) = 142 + EXPECT_EQ(sizeof(ulog_message_logging_tagged_s), ULOG_MSG_HEADER_LEN + 1u + 2u + 8u + 128u); +} + +TEST(ULogMessages, LoggingTaggedTypeCode) +{ + ulog_message_logging_tagged_s msg = {}; + EXPECT_EQ(msg.msg_type, static_cast('C')); +} + +TEST(ULogMessages, LoggingTaggedFieldOffsets) +{ + ulog_message_logging_tagged_s msg = {}; + uint8_t *base = reinterpret_cast(&msg); + + EXPECT_EQ(reinterpret_cast(&msg.log_level) - base, ULOG_MSG_HEADER_LEN); + EXPECT_EQ(reinterpret_cast(&msg.tag) - base, ULOG_MSG_HEADER_LEN + 1); + EXPECT_EQ(reinterpret_cast(&msg.timestamp) - base, ULOG_MSG_HEADER_LEN + 3); + EXPECT_EQ(reinterpret_cast(&msg.message) - base, ULOG_MSG_HEADER_LEN + 11); +} + +// ---------------------------------------------------------------------------- +// Sync ('S') +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, SyncSize) +{ + // header(3) + sync_magic(8) = 11 + EXPECT_EQ(sizeof(ulog_message_sync_s), ULOG_MSG_HEADER_LEN + 8u); +} + +TEST(ULogMessages, SyncTypeCode) +{ + ulog_message_sync_s msg = {}; + EXPECT_EQ(msg.msg_type, static_cast('S')); +} + +TEST(ULogMessages, SyncMagicBytes) +{ + ulog_message_sync_s msg = {}; + const uint8_t expected_magic[] = {0x2F, 0x73, 0x13, 0x20, 0x25, 0x0C, 0xBB, 0x12}; + + memcpy(msg.sync_magic, expected_magic, sizeof(expected_magic)); + msg.msg_size = sizeof(msg.sync_magic); + + EXPECT_EQ(memcmp(msg.sync_magic, expected_magic, 8), 0); + EXPECT_EQ(msg.msg_size, 8); +} + +// ---------------------------------------------------------------------------- +// Dropout ('O') +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, DropoutSize) +{ + // header(3) + duration(2) = 5 + EXPECT_EQ(sizeof(ulog_message_dropout_s), ULOG_MSG_HEADER_LEN + 2u); +} + +TEST(ULogMessages, DropoutTypeCode) +{ + ulog_message_dropout_s msg = {}; + EXPECT_EQ(msg.msg_type, static_cast('O')); +} + +TEST(ULogMessages, DropoutDefaultMsgSize) +{ + ulog_message_dropout_s msg = {}; + EXPECT_EQ(msg.msg_size, sizeof(uint16_t)); +} + +TEST(ULogMessages, DropoutSerialization) +{ + ulog_message_dropout_s msg = {}; + msg.duration = 150; + + EXPECT_EQ(msg.duration, 150); + EXPECT_EQ(msg.msg_size, sizeof(uint16_t)); +} + +// ---------------------------------------------------------------------------- +// ULogMessageType enum values +// ---------------------------------------------------------------------------- + +TEST(ULogMessages, TypeEnumValues) +{ + EXPECT_EQ(static_cast(ULogMessageType::FORMAT), 'F'); + EXPECT_EQ(static_cast(ULogMessageType::DATA), 'D'); + EXPECT_EQ(static_cast(ULogMessageType::INFO), 'I'); + EXPECT_EQ(static_cast(ULogMessageType::INFO_MULTIPLE), 'M'); + EXPECT_EQ(static_cast(ULogMessageType::PARAMETER), 'P'); + EXPECT_EQ(static_cast(ULogMessageType::PARAMETER_DEFAULT), 'Q'); + EXPECT_EQ(static_cast(ULogMessageType::ADD_LOGGED_MSG), 'A'); + EXPECT_EQ(static_cast(ULogMessageType::REMOVE_LOGGED_MSG), 'R'); + EXPECT_EQ(static_cast(ULogMessageType::SYNC), 'S'); + EXPECT_EQ(static_cast(ULogMessageType::DROPOUT), 'O'); + EXPECT_EQ(static_cast(ULogMessageType::LOGGING), 'L'); + EXPECT_EQ(static_cast(ULogMessageType::LOGGING_TAGGED), 'C'); + EXPECT_EQ(static_cast(ULogMessageType::FLAG_BITS), 'B'); +} From 6d8441dc893589071b6ef67cc2bc0254c930b190 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 15:48:41 -0800 Subject: [PATCH 43/83] docker_run.sh: modernize image and clean up stale CI references Update the local Docker convenience script to use the unified px4io/px4-dev image instead of the retired per-toolchain images (px4-dev-clang, px4-dev-simulation-bionic). Usage: ./Tools/docker_run.sh make px4_sitl_default ./Tools/docker_run.sh make tests TESTFILTER=ULogMessages PX4_DOCKER_REPO="px4io/px4-dev:custom" ./Tools/docker_run.sh make px4_fmu-v6x_default Changes: - Default to px4io/px4-dev:v1.17.0-beta1, remove conditional image guessing for clang/tests targets - Remove stale env passthrough (Travis CI, AWS, Codecov, Coveralls) - Keep CCACHE_DIR and sanitizer flags (PX4_ASAN/MSAN/TSAN/UBSAN) - Fix $PWD shadowing by renaming to SCRIPT_DIR - Use "$@" instead of "$1 $2 $3" for proper argument forwarding Signed-off-by: Ramon Roche --- Tools/docker_run.sh | 28 ++++------------------------ 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/Tools/docker_run.sh b/Tools/docker_run.sh index 34d08d16f1..773c8992eb 100755 --- a/Tools/docker_run.sh +++ b/Tools/docker_run.sh @@ -1,47 +1,27 @@ #! /bin/bash if [ -z ${PX4_DOCKER_REPO+x} ]; then - echo "guessing PX4_DOCKER_REPO based on input"; - if [[ $@ =~ .*clang.* ]] || [[ $@ =~ .*scan-build.* ]]; then - # clang tools - PX4_DOCKER_REPO="px4io/px4-dev-clang:2021-02-04" - elif [[ $@ =~ .*tests* ]]; then - # run all tests with simulation - PX4_DOCKER_REPO="px4io/px4-dev-simulation-bionic:2021-12-11" - fi + PX4_DOCKER_REPO="px4io/px4-dev:v1.17.0-beta1" else echo "PX4_DOCKER_REPO is set to '$PX4_DOCKER_REPO'"; fi -# otherwise default to nuttx -if [ -z ${PX4_DOCKER_REPO+x} ]; then - PX4_DOCKER_REPO="px4io/px4-dev:v1.16.0-rc1-258-g0369abd556" -fi - echo "PX4_DOCKER_REPO: $PX4_DOCKER_REPO"; -PWD=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) -SRC_DIR=$PWD/../ +SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +SRC_DIR=${SCRIPT_DIR}/../ CCACHE_DIR=${HOME}/.ccache mkdir -p "${CCACHE_DIR}" docker run -it --rm -w "${SRC_DIR}" \ --user="$(id -u):$(id -g)" \ - --env=AWS_ACCESS_KEY_ID \ - --env=AWS_SECRET_ACCESS_KEY \ - --env=BRANCH_NAME \ --env=CCACHE_DIR="${CCACHE_DIR}" \ - --env=CI \ - --env=CODECOV_TOKEN \ - --env=COVERALLS_REPO_TOKEN \ --env=PX4_ASAN \ --env=PX4_MSAN \ --env=PX4_TSAN \ --env=PX4_UBSAN \ - --env=TRAVIS_BRANCH \ - --env=TRAVIS_BUILD_ID \ --publish 14556:14556/udp \ --volume=${CCACHE_DIR}:${CCACHE_DIR}:rw \ --volume=${SRC_DIR}:${SRC_DIR}:rw \ - ${PX4_DOCKER_REPO} /bin/bash -c "$1 $2 $3" + ${PX4_DOCKER_REPO} /bin/bash -c "$@" From 47b3f5f6f9e00c2392572ad754854503ab05f4cf Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 16:13:15 -0800 Subject: [PATCH 44/83] docker-entrypoint.sh: consolidate startup output into single useful line Replace the two separate echo lines ("Starting" and "(arch)") with a single line showing architecture and UTC timestamp: [docker-entrypoint.sh] aarch64 | 2026-02-09T15:23:45Z Signed-off-by: Ramon Roche --- Tools/setup/docker-entrypoint.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Tools/setup/docker-entrypoint.sh b/Tools/setup/docker-entrypoint.sh index 6d998eda2d..69101c5833 100755 --- a/Tools/setup/docker-entrypoint.sh +++ b/Tools/setup/docker-entrypoint.sh @@ -4,7 +4,7 @@ GREEN='\033[0;32m' NO_COLOR='\033[0m' # No Color SCRIPTID="${GREEN}[docker-entrypoint.sh]${NO_COLOR}" -echo -e "$SCRIPTID Starting" +echo -e "$SCRIPTID $( uname -m ) | $(date -u +%FT%TZ)" # Start virtual X server in the background # - DISPLAY default is :99, set in dockerfile @@ -22,6 +22,4 @@ if [ -n "${ROS_DISTRO}" ]; then source "/opt/ros/$ROS_DISTRO/setup.bash" fi -echo -e "$SCRIPTID ($( uname -m ))" - exec "$@" From d74007dc87ef243bfe4a70dda61e726bf902eff2 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 16:15:00 -0800 Subject: [PATCH 45/83] clang-tidy: exclude NuttX-only drivers and emscripten from SITL analysis These files depend on platform headers (px4_platform/gpio/mcp.hpp, device::I2C, emscripten/emscripten.h) that are unavailable in the SITL/clang build, causing clang-tidy to report compiler errors: - src/lib/drivers/mcp_common (NuttX GPIO) - src/drivers/gpio (MCP23009, MCP23017) - src/lib/drivers/smbus (I2C bus driver) - src/modules/commander/failsafe/emscripten (emscripten SDK) Signed-off-by: Ramon Roche --- Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e3fd7d26f3..3fed0ae854 100644 --- a/Makefile +++ b/Makefile @@ -497,11 +497,14 @@ px4_sitl_default-clang: # - Test code (allowed looser style) # - Example code (educational, not production) # - Vendored third-party code (e.g., CMSIS_5) +# - NuttX-only drivers that depend on platform headers unavailable in SITL builds +# (MCP GPIO, SMBus/I2C) +# - Emscripten failsafe web build (requires emscripten SDK not present in container) # # To add manual exclusions, append to CLANG_TIDY_EXCLUDE_EXTRA below. # Submodules are automatically excluded - no action needed when adding new ones. CLANG_TIDY_SUBMODULES := $(shell git config --file .gitmodules --get-regexp path | awk '{print $$2}' | tr '\n' '|' | sed 's/|$$//') -CLANG_TIDY_EXCLUDE_EXTRA := src/systemcmds/tests|src/examples|src/modules/gyro_fft/CMSIS_5 +CLANG_TIDY_EXCLUDE_EXTRA := src/systemcmds/tests|src/examples|src/modules/gyro_fft/CMSIS_5|src/lib/drivers/mcp_common|src/drivers/gpio|src/lib/drivers/smbus|src/modules/commander/failsafe/emscripten CLANG_TIDY_EXCLUDE := $(CLANG_TIDY_SUBMODULES)|$(CLANG_TIDY_EXCLUDE_EXTRA) clang-tidy: px4_sitl_default-clang From 3d457528d282697417130fb47e4d1161d1934e80 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 19:12:52 -0800 Subject: [PATCH 46/83] clang-tidy: gate NuttX-only driver libs by platform instead of exclude list The clang-tidy CI target builds against the SITL (px4_sitl_default-clang) compilation database. Three libraries in src/lib/drivers/ were unconditionally added via add_subdirectory(), causing them to appear in compile_commands.json despite requiring NuttX-only headers: - mcp_common: includes px4_platform/gpio/mcp.hpp (NuttX platform GPIO) - smbus: extends device::I2C which resolves to the NuttX I2C driver - smbus_sbs: includes smbus/SMBus.hpp, same I2C dependency chain When clang-tidy analyzed these files it failed on clang-diagnostic-error (fatal: header not found) since the platform headers don't exist in SITL. The previous commit worked around this by adding the paths to CLANG_TIDY_EXCLUDE_EXTRA in the Makefile, but the proper fix is to prevent these libraries from entering the compilation database at all. Gate mcp_common, smbus, and smbus_sbs behind if(PX4_PLATFORM STREQUAL "nuttx") in src/lib/drivers/CMakeLists.txt. This follows the established pattern already used by the device/ library in the same directory, which conditionally includes NuttX-specific sources (CDev.cpp, I2C.cpp, SPI.cpp) while compiling posix stubs for SITL. The other libraries in the directory (accelerometer, gyroscope, led, magnetometer, rangefinder) are pure abstractions over uORB topics and internal utilities with no platform-specific hardware dependencies, so they compile fine on all platforms without any gating. Remove the now-unnecessary mcp_common and smbus paths from CLANG_TIDY_EXCLUDE_EXTRA, keeping only the emscripten failsafe exclusion (requires the emscripten SDK, not a platform build issue). Signed-off-by: Ramon Roche --- Makefile | 5 ++--- src/lib/drivers/CMakeLists.txt | 9 ++++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 3fed0ae854..5c4bb6308a 100644 --- a/Makefile +++ b/Makefile @@ -497,14 +497,13 @@ px4_sitl_default-clang: # - Test code (allowed looser style) # - Example code (educational, not production) # - Vendored third-party code (e.g., CMSIS_5) -# - NuttX-only drivers that depend on platform headers unavailable in SITL builds -# (MCP GPIO, SMBus/I2C) +# - NuttX-only drivers excluded at CMake level (mcp_common, smbus); GPIO excluded here # - Emscripten failsafe web build (requires emscripten SDK not present in container) # # To add manual exclusions, append to CLANG_TIDY_EXCLUDE_EXTRA below. # Submodules are automatically excluded - no action needed when adding new ones. CLANG_TIDY_SUBMODULES := $(shell git config --file .gitmodules --get-regexp path | awk '{print $$2}' | tr '\n' '|' | sed 's/|$$//') -CLANG_TIDY_EXCLUDE_EXTRA := src/systemcmds/tests|src/examples|src/modules/gyro_fft/CMSIS_5|src/lib/drivers/mcp_common|src/drivers/gpio|src/lib/drivers/smbus|src/modules/commander/failsafe/emscripten +CLANG_TIDY_EXCLUDE_EXTRA := src/systemcmds/tests|src/examples|src/modules/gyro_fft/CMSIS_5|src/drivers/gpio|src/modules/commander/failsafe/emscripten CLANG_TIDY_EXCLUDE := $(CLANG_TIDY_SUBMODULES)|$(CLANG_TIDY_EXCLUDE_EXTRA) clang-tidy: px4_sitl_default-clang diff --git a/src/lib/drivers/CMakeLists.txt b/src/lib/drivers/CMakeLists.txt index 1511d19332..6ece18c65e 100644 --- a/src/lib/drivers/CMakeLists.txt +++ b/src/lib/drivers/CMakeLists.txt @@ -36,7 +36,10 @@ add_subdirectory(device) add_subdirectory(gyroscope) add_subdirectory(led) add_subdirectory(magnetometer) -add_subdirectory(mcp_common) add_subdirectory(rangefinder) -add_subdirectory(smbus) -add_subdirectory(smbus_sbs) + +if (${PX4_PLATFORM} STREQUAL "nuttx") + add_subdirectory(mcp_common) + add_subdirectory(smbus) + add_subdirectory(smbus_sbs) +endif() From 82850cb14914273b31e80c5d5e2f57bbc41ec184 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 19:28:49 -0800 Subject: [PATCH 47/83] clang-tidy: exclude emscripten Unity build path from analysis MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The failsafe_test target uses CMake Unity Builds (UNITY_BUILD ON), which merges emscripten.cpp, failsafe.cpp, and framework.cpp into a single generated file at: build/.../failsafe_test.dir/Unity/unity_0_cxx.cxx The run-clang-tidy.py exclude regex operates on compile_commands.json paths, which reference this generated unity file — not the original source path. The previous exclude (src/modules/commander/failsafe/ emscripten) only matched the source path and missed the unity file, causing clang-diagnostic-error: 'emscripten/emscripten.h' not found. Add failsafe_test\.dir to the exclude regex to catch the unity build path in addition to the source path. Signed-off-by: Ramon Roche --- Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 5c4bb6308a..684f4767be 100644 --- a/Makefile +++ b/Makefile @@ -498,12 +498,13 @@ px4_sitl_default-clang: # - Example code (educational, not production) # - Vendored third-party code (e.g., CMSIS_5) # - NuttX-only drivers excluded at CMake level (mcp_common, smbus); GPIO excluded here -# - Emscripten failsafe web build (requires emscripten SDK not present in container) +# - Emscripten failsafe web build: source path + Unity build path (failsafe_test.dir) +# because CMake Unity Builds merge sources into a generated .cxx under build/ # # To add manual exclusions, append to CLANG_TIDY_EXCLUDE_EXTRA below. # Submodules are automatically excluded - no action needed when adding new ones. CLANG_TIDY_SUBMODULES := $(shell git config --file .gitmodules --get-regexp path | awk '{print $$2}' | tr '\n' '|' | sed 's/|$$//') -CLANG_TIDY_EXCLUDE_EXTRA := src/systemcmds/tests|src/examples|src/modules/gyro_fft/CMSIS_5|src/drivers/gpio|src/modules/commander/failsafe/emscripten +CLANG_TIDY_EXCLUDE_EXTRA := src/systemcmds/tests|src/examples|src/modules/gyro_fft/CMSIS_5|src/drivers/gpio|src/modules/commander/failsafe/emscripten|failsafe_test\.dir CLANG_TIDY_EXCLUDE := $(CLANG_TIDY_SUBMODULES)|$(CLANG_TIDY_EXCLUDE_EXTRA) clang-tidy: px4_sitl_default-clang From be3e1fb2ef4df54025ef90e0c67ea260e176e853 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 9 Feb 2026 19:51:17 -0800 Subject: [PATCH 48/83] fix(build): restore smbus/smbus_sbs for Linux board targets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous commit (6b8fd11) gated smbus and smbus_sbs behind PX4_PLATFORM=="nuttx" to prevent clang-tidy errors on SITL, but these libraries depend on device::I2C which has a POSIX implementation (posix/I2C.cpp). Linux boards like bluerobotics_navigator (armhf) and emlid_navio2 (aarch64) enable CONFIG_DRIVERS_BATT_SMBUS, which depends on drivers__smbus — causing CMake to fail with "non-existent target". Move smbus and smbus_sbs back to unconditional add_subdirectory() so they are available on all platforms. Keep mcp_common gated behind NuttX since it includes px4_platform/gpio/mcp.hpp (NuttX-only GPIO headers). Re-add src/lib/drivers/smbus to the Makefile clang-tidy exclude list since the SITL compilation database lacks the I2C platform headers needed for analysis. Signed-off-by: Ramon Roche --- Makefile | 5 +++-- src/lib/drivers/CMakeLists.txt | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 684f4767be..fb97276b52 100644 --- a/Makefile +++ b/Makefile @@ -497,14 +497,15 @@ px4_sitl_default-clang: # - Test code (allowed looser style) # - Example code (educational, not production) # - Vendored third-party code (e.g., CMSIS_5) -# - NuttX-only drivers excluded at CMake level (mcp_common, smbus); GPIO excluded here +# - NuttX-only drivers excluded at CMake level (mcp_common); I2C-dependent libs excluded here (smbus) +# - GPIO excluded here (NuttX platform headers) # - Emscripten failsafe web build: source path + Unity build path (failsafe_test.dir) # because CMake Unity Builds merge sources into a generated .cxx under build/ # # To add manual exclusions, append to CLANG_TIDY_EXCLUDE_EXTRA below. # Submodules are automatically excluded - no action needed when adding new ones. CLANG_TIDY_SUBMODULES := $(shell git config --file .gitmodules --get-regexp path | awk '{print $$2}' | tr '\n' '|' | sed 's/|$$//') -CLANG_TIDY_EXCLUDE_EXTRA := src/systemcmds/tests|src/examples|src/modules/gyro_fft/CMSIS_5|src/drivers/gpio|src/modules/commander/failsafe/emscripten|failsafe_test\.dir +CLANG_TIDY_EXCLUDE_EXTRA := src/systemcmds/tests|src/examples|src/modules/gyro_fft/CMSIS_5|src/lib/drivers/smbus|src/drivers/gpio|src/modules/commander/failsafe/emscripten|failsafe_test\.dir CLANG_TIDY_EXCLUDE := $(CLANG_TIDY_SUBMODULES)|$(CLANG_TIDY_EXCLUDE_EXTRA) clang-tidy: px4_sitl_default-clang diff --git a/src/lib/drivers/CMakeLists.txt b/src/lib/drivers/CMakeLists.txt index 6ece18c65e..051b40ab0c 100644 --- a/src/lib/drivers/CMakeLists.txt +++ b/src/lib/drivers/CMakeLists.txt @@ -38,8 +38,9 @@ add_subdirectory(led) add_subdirectory(magnetometer) add_subdirectory(rangefinder) +add_subdirectory(smbus) +add_subdirectory(smbus_sbs) + if (${PX4_PLATFORM} STREQUAL "nuttx") add_subdirectory(mcp_common) - add_subdirectory(smbus) - add_subdirectory(smbus_sbs) endif() From 84933cfbdf8b8e2a066e1028c272b822b04c11e5 Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Fri, 13 Feb 2026 05:28:01 +0000 Subject: [PATCH 49/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/middleware/dds_topics.md | 372 +++++++++++++++---------------- 1 file changed, 186 insertions(+), 186 deletions(-) diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index ba072996fd..1432fe5ed9 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [Airspeed](../msg_docs/Airspeed.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [Mission](../msg_docs/Mission.md) - [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [Event](../msg_docs/Event.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [LedControl](../msg_docs/LedControl.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [Rpm](../msg_docs/Rpm.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [Ping](../msg_docs/Ping.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [EventV0](../msg_docs/EventV0.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) - [GpioIn](../msg_docs/GpioIn.md) - [VehicleImu](../msg_docs/VehicleImu.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [Event](../msg_docs/Event.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [Ping](../msg_docs/Ping.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [EscReport](../msg_docs/EscReport.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [EventV0](../msg_docs/EventV0.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [Gripper](../msg_docs/Gripper.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) - [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [InputRc](../msg_docs/InputRc.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [Mission](../msg_docs/Mission.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [GpioOut](../msg_docs/GpioOut.md) - [SensorMag](../msg_docs/SensorMag.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) - [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [Gripper](../msg_docs/Gripper.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [InputRc](../msg_docs/InputRc.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [EscReport](../msg_docs/EscReport.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) - [Vtx](../msg_docs/Vtx.md) - [SensorCorrection](../msg_docs/SensorCorrection.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [Rpm](../msg_docs/Rpm.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) - [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [LedControl](../msg_docs/LedControl.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) ::: From f38aba3c5be9812b5d232cb75f9c6c27d7131727 Mon Sep 17 00:00:00 2001 From: cuav-chen2 Date: Fri, 13 Feb 2026 09:09:35 +0800 Subject: [PATCH 50/83] cuav_fmu-v6x: Adjust the startup sequence of the sensors --- boards/cuav/fmu-v6x/init/rc.board_sensors | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/boards/cuav/fmu-v6x/init/rc.board_sensors b/boards/cuav/fmu-v6x/init/rc.board_sensors index a50c6d004c..5b6e2dd8f8 100644 --- a/boards/cuav/fmu-v6x/init/rc.board_sensors +++ b/boards/cuav/fmu-v6x/init/rc.board_sensors @@ -66,15 +66,15 @@ then fi fi +iim42652 -R 6 -s -C 32768 start bmi088 -A -R 4 -s start bmi088 -G -R 4 -s start -iim42652 -R 6 -s -C 32768 start icm45686 -R 2 -s start rm3100 -I -b 4 start -icp201xx -I -a 0x64 start bmp581 -b 2 -X -a 0x47 start +icp201xx -I -a 0x64 start # External compass on GPS1/I2C1 (the 3rd external bus): standard Holybro Pixhawk 4 or CUAV V5 GPS/compass puck (with lights, safety button, and buzzer) ist8310 -X -b 1 -R 10 start From 14cbcee49f8562a0982bb77185ea74e59c5183a0 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Fri, 13 Feb 2026 10:30:06 +0100 Subject: [PATCH 51/83] CI: replace all usage of addnab/docker-run-action It's unmaintained and the docker version it uses is not supported anymore. --- .github/workflows/checks.yml | 17 +++--- .../ekf_functional_change_indicator.yml | 28 ++++----- .../workflows/ekf_update_change_indicator.yml | 61 +++++++++++-------- .github/workflows/mavros_mission_tests.yml | 34 ++++++----- .github/workflows/mavros_offboard_tests.yml | 35 ++++++----- .github/workflows/nuttx_env_config.yml | 29 ++++----- 6 files changed, 107 insertions(+), 97 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 66821d5e17..e43feee8b3 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -19,6 +19,10 @@ concurrency: jobs: build: runs-on: ubuntu-latest + + container: + image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556 + strategy: fail-fast: false matrix: @@ -35,20 +39,17 @@ jobs: "px4_sitl_allyes", "module_documentation", ] + steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Building [${{ matrix.check }}] - uses: addnab/docker-run-action@v3 - with: - image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556 - options: -v ${{ github.workspace }}:/workspace - run: | - cd /workspace - git config --global --add safe.directory /workspace - make ${{ matrix.check }} + run: | + cd "$GITHUB_WORKSPACE" + git config --global --add safe.directory "$GITHUB_WORKSPACE" + make ${{ matrix.check }} - name: Uploading Coverage to Codecov.io if: contains(matrix.check, 'coverage') diff --git a/.github/workflows/ekf_functional_change_indicator.yml b/.github/workflows/ekf_functional_change_indicator.yml index d84572386e..11c1970680 100644 --- a/.github/workflows/ekf_functional_change_indicator.yml +++ b/.github/workflows/ekf_functional_change_indicator.yml @@ -15,21 +15,21 @@ concurrency: jobs: unit_tests: runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: main test - uses: addnab/docker-run-action@v3 - with: - image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556 - options: -v ${{ github.workspace }}:/workspace + container: + image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556 + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: main test run: | - cd /workspace - git config --global --add safe.directory /workspace + cd "$GITHUB_WORKSPACE" + git config --global --add safe.directory "$GITHUB_WORKSPACE" make tests TESTFILTER=EKF - - name: Check if there is a functional change - run: git diff --exit-code - working-directory: src/modules/ekf2/test/change_indication + - name: Check if there is a functional change + run: git diff --exit-code + working-directory: src/modules/ekf2/test/change_indication diff --git a/.github/workflows/ekf_update_change_indicator.yml b/.github/workflows/ekf_update_change_indicator.yml index 991dfd397b..6f6e1dde55 100644 --- a/.github/workflows/ekf_update_change_indicator.yml +++ b/.github/workflows/ekf_update_change_indicator.yml @@ -8,40 +8,47 @@ on: jobs: unit_tests: runs-on: ubuntu-latest + + container: + image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556 + env: GIT_COMMITTER_EMAIL: bot@px4.io GIT_COMMITTER_NAME: PX4BuildBot - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: main test - uses: addnab/docker-run-action@v3 - with: - image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556 - options: -v ${{ github.workspace }}:/workspace + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: main test run: | - cd /workspace - git config --global --add safe.directory /workspace + cd "$GITHUB_WORKSPACE" + git config --global --add safe.directory "$GITHUB_WORKSPACE" make tests TESTFILTER=EKF - - name: Check if there exists diff and save result in variable - id: diff-check - run: echo "CHANGE_INDICATED=$(git diff --exit-code --output=/dev/null || echo $?)" >> $GITHUB_OUTPUT - working-directory: src/modules/ekf2/test/change_indication + - name: Check if there exists diff and save result in variable + id: diff-check + working-directory: src/modules/ekf2/test/change_indication + run: | + if git diff --quiet; then + echo "CHANGE_INDICATED=false" >> $GITHUB_OUTPUT + else + echo "CHANGE_INDICATED=true" >> $GITHUB_OUTPUT + fi - - name: auto-commit any changes to change indication - uses: stefanzweifel/git-auto-commit-action@v4 - with: - file_pattern: 'src/modules/ekf2/test/change_indication/*.csv' - commit_user_name: ${GIT_COMMITTER_NAME} - commit_user_email: ${GIT_COMMITTER_EMAIL} - commit_message: | - '[AUTO COMMIT] update change indication' + - name: auto-commit any changes to change indication + if: steps.diff-check.outputs.CHANGE_INDICATED == 'true' + uses: stefanzweifel/git-auto-commit-action@v4 + with: + file_pattern: 'src/modules/ekf2/test/change_indication/*.csv' + commit_user_name: ${{ env.GIT_COMMITTER_NAME }} + commit_user_email: ${{ env.GIT_COMMITTER_EMAIL }} + commit_message: | + [AUTO COMMIT] update change indication - See .github/workflopws/ekf_update_change_indicator.yml for more details + See .github/workflows/ekf_update_change_indicator.yml for more details - - name: if there is a functional change, fail check - if: ${{ steps.diff-check.outputs.CHANGE_INDICATED }} - run: exit 1 + - name: if there is a functional change, fail check + if: steps.diff-check.outputs.CHANGE_INDICATED == 'true' + run: exit 1 diff --git a/.github/workflows/mavros_mission_tests.yml b/.github/workflows/mavros_mission_tests.yml index c5d50109b6..0b1a84f7b3 100644 --- a/.github/workflows/mavros_mission_tests.yml +++ b/.github/workflows/mavros_mission_tests.yml @@ -19,25 +19,27 @@ concurrency: jobs: build: runs-on: ubuntu-latest + strategy: fail-fast: false - matrix: - config: - - {vehicle: "iris", mission: "MC_mission_box"} steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 + - uses: actions/checkout@v4 + with: + fetch-depth: 0 - - name: Build SITL and Run Tests - uses: addnab/docker-run-action@v3 - with: - image: px4io/px4-dev-ros-melodic:2021-09-08 - options: -v ${{ github.workspace }}:/workspace + - name: Build SITL and Run Tests (inside old ROS container) run: | - cd /workspace - git config --global --add safe.directory /workspace - make px4_sitl_default - make px4_sitl_default sitl_gazebo-classic - ./test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=${{matrix.config.mission}} vehicle:=${{matrix.config.vehicle}} + docker run --rm \ + -v "${GITHUB_WORKSPACE}:/workspace" \ + -w /workspace \ + px4io/px4-dev-ros-melodic:2021-09-08 \ + bash -c ' + git config --global --add safe.directory /workspace + make px4_sitl_default + make px4_sitl_default sitl_gazebo-classic + ./test/rostest_px4_run.sh \ + mavros_posix_test_mission.test \ + mission:=MC_mission_box \ + vehicle:=iris + ' diff --git a/.github/workflows/mavros_offboard_tests.yml b/.github/workflows/mavros_offboard_tests.yml index 2aaf21e95b..dd6b750812 100644 --- a/.github/workflows/mavros_offboard_tests.yml +++ b/.github/workflows/mavros_offboard_tests.yml @@ -19,27 +19,26 @@ concurrency: jobs: build: runs-on: ubuntu-latest - env: - ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + strategy: fail-fast: false - matrix: - config: - - {test_file: "mavros_posix_tests_offboard_posctl.test", vehicle: "iris"} steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 + - uses: actions/checkout@v4 + with: + fetch-depth: 0 - - name: Build PX4 and Run Tests - uses: addnab/docker-run-action@v3 - with: - image: px4io/px4-dev-ros-melodic:2021-09-08 - options: -v ${{ github.workspace }}:/workspace + - name: Build SITL and Run Tests (inside old ROS container) run: | - cd /workspace - git config --global --add safe.directory /workspace - make px4_sitl_default - make px4_sitl_default sitl_gazebo-classic - ./test/rostest_px4_run.sh ${{matrix.config.test_file}} vehicle:=${{matrix.config.vehicle}} + docker run --rm \ + -v "${GITHUB_WORKSPACE}:/workspace" \ + -w /workspace \ + px4io/px4-dev-ros-melodic:2021-09-08 \ + bash -c ' + git config --global --add safe.directory /workspace + make px4_sitl_default + make px4_sitl_default sitl_gazebo-classic + ./test/rostest_px4_run.sh \ + mavros_posix_tests_offboard_posctl.test \ + vehicle:=iris + ' diff --git a/.github/workflows/nuttx_env_config.yml b/.github/workflows/nuttx_env_config.yml index 791f2fbf4c..f05b456bb6 100644 --- a/.github/workflows/nuttx_env_config.yml +++ b/.github/workflows/nuttx_env_config.yml @@ -19,27 +19,28 @@ concurrency: jobs: build: runs-on: ubuntu-latest + + container: + image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556 + strategy: matrix: - config: [ - px4_fmu-v5_default, - ] + config: + - px4_fmu-v5_default steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 + - uses: actions/checkout@v4 + with: + fetch-depth: 0 - - name: Build PX4 and Run Test [${{ matrix.config }}] - uses: addnab/docker-run-action@v3 - with: - image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556 - options: -v ${{ github.workspace }}:/workspace + - name: Build PX4 and Run Test [${{ matrix.config }}] run: | - cd /workspace - git config --global --add safe.directory /workspace - export PX4_EXTRA_NUTTX_CONFIG="CONFIG_NSH_LOGIN_PASSWORD=\"test\";CONFIG_NSH_CONSOLE_LOGIN=y" + cd "$GITHUB_WORKSPACE" + git config --global --add safe.directory "$GITHUB_WORKSPACE" + export PX4_EXTRA_NUTTX_CONFIG='CONFIG_NSH_LOGIN_PASSWORD="test";CONFIG_NSH_CONSOLE_LOGIN=y' echo "PX4_EXTRA_NUTTX_CONFIG: $PX4_EXTRA_NUTTX_CONFIG" + make ${{ matrix.config }} nuttx_context + echo "Check that the config option is set" grep CONFIG_NSH_LOGIN_PASSWORD build/${{ matrix.config }}/NuttX/nuttx/.config From b9f4de0b51cae68165b2aa44dc1cb33fd0994ab1 Mon Sep 17 00:00:00 2001 From: Jaeyoung Lim Date: Fri, 13 Feb 2026 05:41:27 -0700 Subject: [PATCH 52/83] Fix TECS throttle integrator runaway (#26472) --- src/lib/tecs/TECS.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/tecs/TECS.cpp b/src/lib/tecs/TECS.cpp index 5ff73eb83c..69d124239d 100644 --- a/src/lib/tecs/TECS.cpp +++ b/src/lib/tecs/TECS.cpp @@ -590,7 +590,9 @@ void TECSControl::_calcThrottleControlUpdate(float dt, const STERateLimit &limit if (_throttle_setpoint >= param.throttle_max) { throttle_integ_input = math::min(0.f, throttle_integ_input); - } else if (_throttle_setpoint <= param.throttle_min) { + } + + if (_throttle_setpoint <= param.throttle_min) { throttle_integ_input = math::max(0.f, throttle_integ_input); } From 79a7ef2869d6fbac9af280b7b4fc129edceb5f19 Mon Sep 17 00:00:00 2001 From: Balduin Date: Fri, 13 Feb 2026 13:42:17 +0100 Subject: [PATCH 53/83] RtlTimeEstimator: Consider minimum ground speed (#26405) * RtlTimeEstimator: Consider minimum ground speed This fixes an issue seen when the wind is faster than the trim airspeed, but not faster than the max airspeed. In that case the RTL time estimator currently assumes that we always fly at trim airspeed and are thus unable to cover ground in the upwind direction. The result is a very large RTL time estimate, resulting in RTL if configured by COM_FLTT_LOW_ACT. By considering the FW_GND_SPD_MIN parameter, we correct this wrong assumption. The RTL remaining time estimate now becomes realistic in this situation. * RtlTimeEstimator: assume min ground speed of 5 if param unavailable --- src/lib/rtl/rtl_time_estimator.cpp | 14 +++++++++++++- src/lib/rtl/rtl_time_estimator.h | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/lib/rtl/rtl_time_estimator.cpp b/src/lib/rtl/rtl_time_estimator.cpp index ddc851c5e3..c7cc22bfbb 100644 --- a/src/lib/rtl/rtl_time_estimator.cpp +++ b/src/lib/rtl/rtl_time_estimator.cpp @@ -54,6 +54,7 @@ RtlTimeEstimator::RtlTimeEstimator() : ModuleParams(nullptr) _param_fw_climb_rate = param_find("FW_T_CLMB_R_SP"); _param_fw_sink_rate = param_find("FW_T_SINK_R_SP"); _param_fw_airspeed_trim = param_find("FW_AIRSPD_TRIM"); + _param_fw_gnd_spd_min = param_find("FW_GND_SPD_MIN"); _param_mpc_xy_cruise = param_find("MPC_XY_CRUISE"); _param_rover_cruise_speed = param_find("RO_SPEED_LIM"); }; @@ -142,7 +143,18 @@ float RtlTimeEstimator::getCruiseGroundSpeed(const matrix::Vector2f &direction_n const float ground_speed = sqrtf(cruise_speed * cruise_speed - wind_across_dir * wind_across_dir) + fminf( 0.f, wind_along_dir); - cruise_speed = ground_speed; + // Assume that minimum ground speed is always satisfied. If + // windspeed < cas2tas(FW_AIRSPD_MAX) - FW_GND_SPD_MIN + // the assumption always holds. Otherwise it breaks down when + // flying upwind, and the RTL time estimate is optimistic. + + float fw_gnd_spd_min = 5.0f; + + if (_param_fw_gnd_spd_min != PARAM_INVALID) { + param_get(_param_fw_gnd_spd_min, &fw_gnd_spd_min); + } + + cruise_speed = fmaxf(ground_speed, fw_gnd_spd_min); } return cruise_speed; diff --git a/src/lib/rtl/rtl_time_estimator.h b/src/lib/rtl/rtl_time_estimator.h index 7ca79fba1f..c919f96e3c 100644 --- a/src/lib/rtl/rtl_time_estimator.h +++ b/src/lib/rtl/rtl_time_estimator.h @@ -129,6 +129,7 @@ private: param_t _param_fw_sink_rate{PARAM_INVALID}; /**< FW descend speed parameter */ param_t _param_fw_airspeed_trim{PARAM_INVALID}; /**< FW cruise airspeed parameter */ + param_t _param_fw_gnd_spd_min{PARAM_INVALID}; /**< FW min groundspeed parameter */ param_t _param_mpc_xy_cruise{PARAM_INVALID}; /**< MC horizontal cruise speed parameter */ param_t _param_rover_cruise_speed{PARAM_INVALID}; /**< Rover cruise speed parameter */ From c90811a27788a08e78ac63fa5a05b494e5cf3013 Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Fri, 13 Feb 2026 12:49:48 +0000 Subject: [PATCH 54/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/middleware/dds_topics.md | 376 +++++++++++++++---------------- 1 file changed, 188 insertions(+), 188 deletions(-) diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index 1432fe5ed9..1586c38758 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [Mission](../msg_docs/Mission.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [Event](../msg_docs/Event.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [LedControl](../msg_docs/LedControl.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [Rpm](../msg_docs/Rpm.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [Ping](../msg_docs/Ping.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [EventV0](../msg_docs/EventV0.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [Gripper](../msg_docs/Gripper.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [InputRc](../msg_docs/InputRc.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [EscReport](../msg_docs/EscReport.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) - [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) - [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [Vtx](../msg_docs/Vtx.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [GimbalControls](../msg_docs/GimbalControls.md) - [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) - [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [EscStatus](../msg_docs/EscStatus.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) - [GainCompression](../msg_docs/GainCompression.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [Gripper](../msg_docs/Gripper.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) - [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) - [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [InputRc](../msg_docs/InputRc.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [Mission](../msg_docs/Mission.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [EscReport](../msg_docs/EscReport.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [Vtx](../msg_docs/Vtx.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [Event](../msg_docs/Event.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [LedControl](../msg_docs/LedControl.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [Rpm](../msg_docs/Rpm.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [Ping](../msg_docs/Ping.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [EventV0](../msg_docs/EventV0.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) ::: From 302d0601bfd64b1acffcee3319df8512a0dabef7 Mon Sep 17 00:00:00 2001 From: nlsxp Date: Fri, 13 Feb 2026 14:06:47 +0100 Subject: [PATCH 55/83] Smoothen external flight mode GotoControl to Mission transitions (#26254) --- .../tasks/Auto/FlightTaskAuto.cpp | 4 ++-- .../tasks/FlightTask/FlightTask.cpp | 11 +++++++++++ .../tasks/FlightTask/FlightTask.hpp | 1 + .../mc_pos_control/GotoControl/GotoControl.cpp | 14 +++++++------- .../mc_pos_control/GotoControl/GotoControl.hpp | 13 +++++++++---- .../mc_pos_control/MulticopterPositionControl.cpp | 2 +- 6 files changed, 31 insertions(+), 14 deletions(-) diff --git a/src/modules/flight_mode_manager/tasks/Auto/FlightTaskAuto.cpp b/src/modules/flight_mode_manager/tasks/Auto/FlightTaskAuto.cpp index e2ebb11bd0..ec999cdc0f 100644 --- a/src/modules/flight_mode_manager/tasks/Auto/FlightTaskAuto.cpp +++ b/src/modules/flight_mode_manager/tasks/Auto/FlightTaskAuto.cpp @@ -61,8 +61,8 @@ bool FlightTaskAuto::activate(const trajectory_setpoint_s &last_setpoint) // If the velocity setpoint is unknown, set to the current velocity if (!PX4_ISFINITE(vel_prev(i))) { vel_prev(i) = _velocity(i); } - // No acceleration estimate available, set to zero if the setpoint is NAN - if (!PX4_ISFINITE(accel_prev(i))) { accel_prev(i) = 0.f; } + // If accel setpoint unknown, set to the current accel + if (!PX4_ISFINITE(accel_prev(i))) { accel_prev(i) = _acceleration(i); } } _position_smoothing.reset(accel_prev, vel_prev, pos_prev); diff --git a/src/modules/flight_mode_manager/tasks/FlightTask/FlightTask.cpp b/src/modules/flight_mode_manager/tasks/FlightTask/FlightTask.cpp index fa2943f147..58d0253012 100644 --- a/src/modules/flight_mode_manager/tasks/FlightTask/FlightTask.cpp +++ b/src/modules/flight_mode_manager/tasks/FlightTask/FlightTask.cpp @@ -153,6 +153,17 @@ void FlightTask::_evaluateVehicleLocalPosition() _velocity(2) = _sub_vehicle_local_position.get().vz; } + // acceleration is calculated as the velocity derivative in EKF2, + // if velocity is available acceleration values are available + if (_sub_vehicle_local_position.get().v_xy_valid) { + _acceleration(0) = _sub_vehicle_local_position.get().ax; + _acceleration(1) = _sub_vehicle_local_position.get().ay; + } + + if (_sub_vehicle_local_position.get().v_z_valid) { + _acceleration(2) = _sub_vehicle_local_position.get().az; + } + // distance to bottom if (_sub_vehicle_local_position.get().dist_bottom_valid && PX4_ISFINITE(_sub_vehicle_local_position.get().dist_bottom)) { diff --git a/src/modules/flight_mode_manager/tasks/FlightTask/FlightTask.hpp b/src/modules/flight_mode_manager/tasks/FlightTask/FlightTask.hpp index 06327d8ca8..080c594d1a 100644 --- a/src/modules/flight_mode_manager/tasks/FlightTask/FlightTask.hpp +++ b/src/modules/flight_mode_manager/tasks/FlightTask/FlightTask.hpp @@ -201,6 +201,7 @@ protected: /* Current vehicle state */ matrix::Vector3f _position; /**< current vehicle position */ matrix::Vector3f _velocity; /**< current vehicle velocity */ + matrix::Vector3f _acceleration; /**< current vehicle acceleration (derivative of velocity) */ float _yaw{}; /**< current vehicle yaw heading */ float _unaided_yaw{}; diff --git a/src/modules/mc_pos_control/GotoControl/GotoControl.cpp b/src/modules/mc_pos_control/GotoControl/GotoControl.cpp index a266a5ec1b..663c3a969c 100644 --- a/src/modules/mc_pos_control/GotoControl/GotoControl.cpp +++ b/src/modules/mc_pos_control/GotoControl/GotoControl.cpp @@ -42,6 +42,7 @@ #include using namespace time_literals; +using namespace matrix; bool GotoControl::checkForSetpoint(const hrt_abstime &now, const bool enabled) { @@ -64,10 +65,11 @@ bool GotoControl::checkForSetpoint(const hrt_abstime &now, const bool enabled) return need_to_run; } -void GotoControl::update(const float dt, const matrix::Vector3f &position, const float heading) +void GotoControl::update(const float dt, const Vector3f &position, const Vector3f &velocity, const Vector3f &acceleration, + const float heading) { if (!_is_initialized) { - resetPositionSmoother(position); + resetPositionSmoother(position, velocity, acceleration); resetHeadingSmoother(heading); _is_initialized = true; } @@ -87,7 +89,7 @@ void GotoControl::update(const float dt, const matrix::Vector3f &position, const } if (_need_smoother_reset) { - resetPositionSmoother(position); + resetPositionSmoother(position, velocity, acceleration); } setPositionSmootherLimits(_goto_setpoint); @@ -138,7 +140,7 @@ void GotoControl::update(const float dt, const matrix::Vector3f &position, const _vehicle_constraints_pub.publish(vehicle_constraints); } -void GotoControl::resetPositionSmoother(const matrix::Vector3f &position) +void GotoControl::resetPositionSmoother(const Vector3f &position, const Vector3f &velocity, const Vector3f &acceleration) { if (!position.isAllFinite()) { // TODO: error messaging @@ -146,9 +148,7 @@ void GotoControl::resetPositionSmoother(const matrix::Vector3f &position) return; } - const Vector3f initial_acceleration{}; - const Vector3f initial_velocity{}; - _position_smoothing.reset(initial_acceleration, initial_velocity, position); + _position_smoothing.reset(acceleration, velocity, position); _need_smoother_reset = false; } diff --git a/src/modules/mc_pos_control/GotoControl/GotoControl.hpp b/src/modules/mc_pos_control/GotoControl/GotoControl.hpp index f9ff08f9ca..4ae7aa9ec8 100644 --- a/src/modules/mc_pos_control/GotoControl/GotoControl.hpp +++ b/src/modules/mc_pos_control/GotoControl/GotoControl.hpp @@ -64,9 +64,11 @@ public: /** * @brief resets the position smoother at the current position with zero velocity and acceleration. * - * @param position [m] (NED) local vehicle position + * @param position [m] vehicle position state NED local frame + * @param velocity [m/s] vehicle velocity state + * @param acceleration [m/s^2] vehicle acceleration state */ - void resetPositionSmoother(const matrix::Vector3f &position); + void resetPositionSmoother(const matrix::Vector3f &position, const matrix::Vector3f &velocity, const matrix::Vector3f &acceleration); /** * @brief resets the heading smoother at the current heading with zero heading rate and acceleration. @@ -80,12 +82,15 @@ public: * loops to track. * * @param[in] dt [s] time since last control update - * @param[in] position [m] (NED) local vehicle position + * @param[in] position [m] vehicle position state NED local frame + * @param[in] velocity [m/s] vehicle velocity state + * @param[in] acceleration [m/s^2] vehicle acceleration state * @param[in] heading [rad] (from North) vehicle heading * @param[in] goto_setpoint struct containing current go-to setpoints * @param[out] trajectory_setpoint struct containing trajectory (tracking) setpoints */ - void update(const float dt, const matrix::Vector3f &position, const float heading); + void update(const float dt, const matrix::Vector3f &position, const matrix::Vector3f &velocity, const matrix::Vector3f &acceleration, + const float heading); // Setting all parameters from the outside saves 300bytes flash void setParamMpcAccHor(const float param_mpc_acc_hor) { _param_mpc_acc_hor = param_mpc_acc_hor; } diff --git a/src/modules/mc_pos_control/MulticopterPositionControl.cpp b/src/modules/mc_pos_control/MulticopterPositionControl.cpp index 0d6b57c68b..fe5f138050 100644 --- a/src/modules/mc_pos_control/MulticopterPositionControl.cpp +++ b/src/modules/mc_pos_control/MulticopterPositionControl.cpp @@ -433,7 +433,7 @@ void MulticopterPositionControl::Run() && !_trajectory_setpoint_sub.updated(); if (_goto_control.checkForSetpoint(vehicle_local_position.timestamp_sample, goto_setpoint_enable)) { - _goto_control.update(dt, states.position, states.yaw); + _goto_control.update(dt, states.position, states.velocity, states.acceleration, states.yaw); } _trajectory_setpoint_sub.update(&_setpoint); From b08fefa903af40b986f5876b12a6d6cef99e6fbe Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Fri, 13 Feb 2026 13:14:35 +0000 Subject: [PATCH 56/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/middleware/dds_topics.md | 372 +++++++++++++++---------------- 1 file changed, 186 insertions(+), 186 deletions(-) diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index 1586c38758..6e61104195 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [Gripper](../msg_docs/Gripper.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [InputRc](../msg_docs/InputRc.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [Mission](../msg_docs/Mission.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [EscReport](../msg_docs/EscReport.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [Vtx](../msg_docs/Vtx.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) - [QshellReq](../msg_docs/QshellReq.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [Event](../msg_docs/Event.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [LedControl](../msg_docs/LedControl.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) - [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [Rpm](../msg_docs/Rpm.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [Ping](../msg_docs/Ping.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [QshellRetval](../msg_docs/QshellRetval.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [LedControl](../msg_docs/LedControl.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [Mission](../msg_docs/Mission.md) +- [GpioOut](../msg_docs/GpioOut.md) - [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [SensorAccel](../msg_docs/SensorAccel.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) - [GpsDump](../msg_docs/GpsDump.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) - [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [EscReport](../msg_docs/EscReport.md) - [EventV0](../msg_docs/EventV0.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [Vtx](../msg_docs/Vtx.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [SensorMag](../msg_docs/SensorMag.md) - [SensorUwb](../msg_docs/SensorUwb.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) - [ActuatorTest](../msg_docs/ActuatorTest.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [Gripper](../msg_docs/Gripper.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [Event](../msg_docs/Event.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [Rpm](../msg_docs/Rpm.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) - [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [InputRc](../msg_docs/InputRc.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [Ping](../msg_docs/Ping.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [FollowTarget](../msg_docs/FollowTarget.md) ::: From 32c94bd3b1bd16cc4897f61fb0135fb75bdb3c6e Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Wed, 11 Feb 2026 22:11:41 -0800 Subject: [PATCH 57/83] ci: fix S3 upload so tags don't overwrite stable firmware Remove the step that uploaded every version tag to the stable/ S3 directory, which caused QGC users selecting "stable" to receive pre-release firmware (#26340). The stable/ and beta/ directories are now controlled exclusively by their respective branch pushes, while version tags only upload to their versioned archive directory (e.g., v1.16.1/). Pre-release tags are also correctly marked on GitHub Releases. Co-authored-by: Julian Oes Fixes #26340 Signed-off-by: Ramon Roche --- .github/workflows/build_all_targets.yml | 77 ++++++++++++++++--------- 1 file changed, 50 insertions(+), 27 deletions(-) diff --git a/.github/workflows/build_all_targets.yml b/.github/workflows/build_all_targets.yml index cf02ac2e77..4c0bc0fcb9 100644 --- a/.github/workflows/build_all_targets.yml +++ b/.github/workflows/build_all_targets.yml @@ -2,6 +2,37 @@ # - If you want to keep the tests running in GitHub Actions you need to uncomment the "runs-on: ubuntu-latest" lines # and comment the "runs-on: [runs-on,runner=..." lines. # - If you would like to duplicate this setup try setting up "RunsOn" on your own AWS account try https://runs-on.com +# +# =================================================================================== +# RELEASE UPLOAD LOGIC +# =================================================================================== +# This workflow handles building firmware and uploading to S3 + GitHub Releases. +# +# S3 Bucket Structure (s3://px4-travis/Firmware/): +# - master/ <- Latest main branch build (for QGC compatibility) +# - stable/ <- Latest stable release, controlled by 'stable' branch +# - beta/ <- Latest pre-release, controlled by 'beta' branch +# - vX.Y.Z/ <- Archived stable release +# - vX.Y.Z-beta1/ <- Archived pre-release +# +# Trigger Behavior: +# - Tag v1.16.1 -> Upload to: v1.16.1/ only (versioned archive) +# - Tag v1.17.0-beta1 -> Upload to: v1.17.0-beta1/ only (versioned archive) +# - Branch main -> Upload to: master/ (for QGC compatibility) +# - Branch stable -> Upload to: stable/ (QGC stable firmware) +# - Branch beta -> Upload to: beta/ (QGC beta firmware) +# - Branch release/** -> Build only, no S3 upload (CI validation) +# - Pull requests -> Build only, no S3 upload (CI validation) +# +# GitHub Releases: +# - All version tags create a draft GitHub Release +# - Pre-releases (alpha/beta/rc suffixes) are automatically marked as such +# +# IMPORTANT: Version tags do NOT upload to stable/ or beta/. Only the +# corresponding branch pushes control those directories. This prevents +# pre-release tags from accidentally overwriting stable firmware (#26340) +# and avoids race conditions between tag and branch builds. +# =================================================================================== name: Build all targets @@ -163,6 +194,13 @@ jobs: path: ~/.ccache key: ${{ steps.cc_restore.outputs.cache-primary-key }} + # =========================================================================== + # ARTIFACT UPLOAD JOB + # =========================================================================== + # Uploads build artifacts to S3 and creates GitHub Releases. + # Runs for version tags (v*), main, stable, and beta branch pushes. + # See header comments for full upload logic documentation. + # =========================================================================== artifacts: name: Upload Artifacts # runs-on: ubuntu-latest @@ -181,31 +219,31 @@ jobs: - name: Choose Upload Location id: upload-location run: | - # Determine upload location based on branch or tag with the following considerations: - # Destination: AWS S3 bucket px4-travis in folder Firmware/ - # - If branch is main -> upload to master/ - # - Older versions of QGC are hardocded to look for master/ - # - If branch is stable or beta -> upload to stable/ or beta/ - # - If a tag vX.Y.Z -> upload to vX.Y.Z/ - # - Also update stable/ to point to the same version - #. - Older versions of QGC are hardocded to look for stable/ - # - If a pull request -> do not upload set -euo pipefail ref="${GITHUB_REF}" branch=${{ needs.group_targets.outputs.branchname }} location="$branch" + is_prerelease="false" + # Main branch uploads to "master" for QGC backward compatibility if [[ "$branch" == "main" ]]; then location="master" fi + # Version tags: upload to versioned directory (e.g., v1.16.1/) if [[ "$ref" == refs/tags/v[0-9]* ]]; then tag="${ref#refs/tags/}" location="$tag" + + # Pre-release tags contain -alpha, -beta, or -rc suffix + if [[ "$tag" =~ -(alpha|beta|rc) ]]; then + is_prerelease="true" + fi fi echo "uploadlocation=$location" >> $GITHUB_OUTPUT + echo "is_prerelease=$is_prerelease" >> $GITHUB_OUTPUT - name: Uploading Artifacts to S3 [${{ steps.upload-location.outputs.uploadlocation }}] uses: jakejarvis/s3-sync-action@master @@ -219,28 +257,13 @@ jobs: SOURCE_DIR: artifacts/ DEST_DIR: Firmware/${{ steps.upload-location.outputs.uploadlocation }}/ - # if we are uploading artifacts to a versioned folder - # we should also update the stable folder in the s3 bucket - - name: Uploading Artifacts to S3 [stable] - uses: jakejarvis/s3-sync-action@master - if: startsWith(github.ref, 'refs/tags/v') - with: - args: --acl public-read - env: - AWS_S3_BUCKET: 'px4-travis' - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_REGION: 'us-west-1' - SOURCE_DIR: artifacts/ - DEST_DIR: Firmware/stable/ - - # if build is a release triggered by a versioned tag then create a github release - # and upload the build artifacts. A draft release is created so that the release - # can be reviewed before publishing + # Create a draft GitHub Release for all version tags + # Pre-releases are automatically marked as such - name: Upload Artifacts to GitHub Release uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/v') with: draft: true + prerelease: ${{ steps.upload-location.outputs.is_prerelease == 'true' }} files: artifacts/*.px4 name: ${{ steps.upload-location.outputs.uploadlocation }} From e52ce5c43b85748c5f229a54c5b0275ed13a114f Mon Sep 17 00:00:00 2001 From: Claudio Chies <61051109+Claudio-Chies@users.noreply.github.com> Date: Mon, 16 Feb 2026 09:39:48 -0800 Subject: [PATCH 58/83] UAVCAN: Configurable LED Light Control with Flexible Addressing (#26253) * feat: implement UAVCAN LED control for individual light control and assignment * uavcan led: nit-picks from review * uavcan led: reduce maximum number of lights to avoid unused parameters * uavcan led: simplify anticolision on check * uavcan led: correctly map 8-bit RGB to rgb565 * Trim param name character arrays to 17 16 characters + \0 termination * uavcan led: final nit-picks --------- Co-authored-by: Matthias Grob --- .../amovlabf410_drone_v1.15.4.params | 3 - docs/en/dronecan/index.md | 13 + docs/en/peripherals/vertiq.md | 13 + src/drivers/uavcan/module.yaml | 42 +++ src/drivers/uavcan/rgbled.cpp | 239 +++++++++--------- src/drivers/uavcan/rgbled.hpp | 30 ++- src/drivers/uavcan/uavcan_params.c | 68 +---- src/modules/commander/ModeManagement.cpp | 4 +- .../ActuatorEffectivenessControlSurfaces.cpp | 2 +- 9 files changed, 215 insertions(+), 199 deletions(-) diff --git a/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params b/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params index 53bb8f5a01..4cea5fc9d4 100644 --- a/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params +++ b/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params @@ -1056,9 +1056,6 @@ 1 1 UAVCAN_EC_REV 0 6 1 1 UAVCAN_ENABLE 2 6 1 1 UAVCAN_LGT_ANTCL 2 6 -1 1 UAVCAN_LGT_LAND 0 6 -1 1 UAVCAN_LGT_NAV 3 6 -1 1 UAVCAN_LGT_STROB 1 6 1 1 UAVCAN_NODE_ID 1 6 1 1 UAVCAN_PUB_ARM 0 6 1 1 UAVCAN_PUB_MBD 0 6 diff --git a/docs/en/dronecan/index.md b/docs/en/dronecan/index.md index 13898c9dc3..00ba948cbc 100644 --- a/docs/en/dronecan/index.md +++ b/docs/en/dronecan/index.md @@ -281,6 +281,19 @@ PX4 DroneCAN parameters: Select the specific CAN interface(s) used for ESC data output using the [UAVCAN_ESC_IFACE](../advanced_config/parameter_reference.md#UAVCAN_ESC_IFACE) parameter (all that all interfaces are selected by default). Note that DroneCAN ESCs should be on their own dedicated CAN interface(s) because ESC messages can saturate the bus and starve other nodes of bandwidth. +### Lights + +PX4 can control LEDs via DroneCAN [LightsCommand](https://dronecan.github.io/Specification/7._List_of_standard_data_types/#lightscommand) messages. + +Configuration: + +1. Set [UAVCAN_LGT_NUM](../advanced_config/parameter_reference.md#UAVCAN_LGT_NUM) to the number of lights (0 disables). You might need to reopen the ground station to have parameters for new instances available. +2. For each light slot (0 to NUM-1), set: + - `UAVCAN_LGT_IDx`: The `light_id` matching your peripheral. + - `UAVCAN_LGT_FNx`: `Status` for system status colours, or `Anti-collision` for white beacon. +3. For anti-collision lights, [UAVCAN_LGT_ANTCL](../advanced_config/parameter_reference.md#UAVCAN_LGT_ANTCL) controls when they illuminate (off, armed, prearmed, always on). +4. Reboot for any changes to take effect. + ## QGC CANNODE Parameter Configuration QGroundControl can inspect and modify parameters belonging to CAN devices attached to the flight controller, provided the device are connected to the flight controller before QGC is started. diff --git a/docs/en/peripherals/vertiq.md b/docs/en/peripherals/vertiq.md index 82c7611f16..9a9f80c575 100644 --- a/docs/en/peripherals/vertiq.md +++ b/docs/en/peripherals/vertiq.md @@ -38,6 +38,19 @@ Instructions for integrating the motor/ESC using with DroneCAN can be found in [ These instructions walk you through setting the correct parameters for enabling the flight controller's DroneCAN drivers, setting the correct configuration parameters for communication with Vertiq modules on the DroneCAN bus, ESC configuration, and testing that your flight controller can properly control your modules over DroneCAN. +#### LED Configuration for Vertiq Modules + +::: info +This configuration is only required if you have the optional [Vertiq LED module add-on](https://www.vertiq.co/add-ons). +Standard Vertiq ESC modules do not include LEDs. +::: + +Vertiq LED Add-on modules have two LEDs per ESC (RGB for status, White for anti-collision). +See [DroneCAN Lights](../dronecan/index.md#lights) for configuration instructions. + +The `light_id` for each LED is calculated as: `esc_index × 3 + BASE_ID`, where `BASE_ID` is 1 for RGB and 2 for White. + + ### DShot/PWM Configuration Instructions for integrating the motor/ESC using PWM and DShot can be found in [PWM and DShot Control with a Flight Controller](https://iqmotion.readthedocs.io/en/latest/tutorials/pwm_control_flight_controller.html). diff --git a/src/drivers/uavcan/module.yaml b/src/drivers/uavcan/module.yaml index 0579870297..9518e06494 100644 --- a/src/drivers/uavcan/module.yaml +++ b/src/drivers/uavcan/module.yaml @@ -1,3 +1,5 @@ +__max_num_uavcan_lights: &max_num_uavcan_lights 3 # Needs to be equal to MAX_NUM_UAVCAN_LIGHTS constant + module_name: UAVCAN parameters: - group: UAVCAN @@ -24,6 +26,46 @@ parameters: min: 1 max: 255 reboot_required: true + UAVCAN_LGT_NUM: + description: + short: Number of UAVCAN lights to configure + long: | + Number of lights to control via UAVCAN LightsCommand messages. + Set to 0 to disable UAVCAN light control. + Each light uses two parameters: LGT_IDx for the light_id and LGT_FNx for the function. + type: int32 + min: 0 + max: *max_num_uavcan_lights + default: 1 + reboot_required: true + UAVCAN_LGT_ID${i}: + description: + short: Light ${i} ID + long: | + specifies the light_id value for light ${i} in UAVCAN LightsCommand messages. + This determines which physical LED responds to commands for this light slot. + type: int32 + num_instances: *max_num_uavcan_lights + instance_start: 0 + min: 0 + max: 255 + default: 0 + UAVCAN_LGT_FN${i}: + description: + short: Light ${i} function + long: | + Function assigned to light ${i}. + 0: Status - displays system status colors + 1: Anti-collision - white beacon controlled by LGT_ANTCL parameter + type: enum + num_instances: *max_num_uavcan_lights + instance_start: 0 + min: 0 + max: 1 + default: 0 + values: + 0: Status Light + 1: Anti-collision Light actuator_output: show_subgroups_if: 'UAVCAN_ENABLE>=3' config_parameters: diff --git a/src/drivers/uavcan/rgbled.cpp b/src/drivers/uavcan/rgbled.cpp index 5c4ee8dc21..3ee0e1225e 100644 --- a/src/drivers/uavcan/rgbled.cpp +++ b/src/drivers/uavcan/rgbled.cpp @@ -32,6 +32,7 @@ ****************************************************************************/ #include "rgbled.hpp" +#include UavcanRGBController::UavcanRGBController(uavcan::INode &node) : ModuleParams(nullptr), @@ -44,6 +45,38 @@ UavcanRGBController::UavcanRGBController(uavcan::INode &node) : int UavcanRGBController::init() { + // Cache number of lights (0 disables the feature) + _num_lights = math::min(static_cast(_param_lgt_num.get()), MAX_NUM_UAVCAN_LIGHTS); + + if (_num_lights == 0) { + return 0; // Disabled, don't start timer + } + + // Cache parameter handles and values for each light + for (uint8_t i = 0; i < _num_lights; i++) { + char param_name[17]; + + // Light ID parameter + snprintf(param_name, sizeof(param_name), "UAVCAN_LGT_ID%u", i); + _light_id_params[i] = param_find(param_name); + + if (_light_id_params[i] != PARAM_INVALID) { + int32_t light_id = 0; + param_get(_light_id_params[i], &light_id); + _light_ids[i] = static_cast(light_id); + } + + // Light function parameter + snprintf(param_name, sizeof(param_name), "UAVCAN_LGT_FN%u", i); + _light_fn_params[i] = param_find(param_name); + + if (_light_fn_params[i] != PARAM_INVALID) { + int32_t light_fn = 0; + param_get(_light_fn_params[i], &light_fn); + _light_functions[i] = static_cast(light_fn); + } + } + // Setup timer and call back function for periodic updates _timer.setCallback(TimerCbBinder(this, &UavcanRGBController::periodic_update)); _timer.startPeriodic(uavcan::MonotonicDuration::fromMSec(1000 / MAX_RATE_HZ)); @@ -52,142 +85,108 @@ int UavcanRGBController::init() void UavcanRGBController::periodic_update(const uavcan::TimerEvent &) { - bool publish_lights = false; - uavcan::equipment::indication::LightsCommand cmds; + // Early return if disabled or no lights configured + if (_num_lights == 0) { + return; + } + // Check for status color updates from led_controller LedControlData led_control_data; - if (_led_controller.update(led_control_data) == 1) { - publish_lights = true; + if (_led_controller.update(led_control_data) != 1) { + return; // No update, nothing to do + } - // RGB color in the standard 5-6-5 16-bit palette. - // Monocolor lights should interpret this as brightness setpoint: from zero (0, 0, 0) to full brightness (31, 63, 31). + // Compute status color from led_control_data + uavcan::equipment::indication::RGB565 status_color{}; + uint8_t brightness = led_control_data.leds[0].brightness; + + switch (led_control_data.leds[0].color) { + case led_control_s::COLOR_RED: + status_color = rgb888_to_rgb565(brightness, 0, 0); + break; + + case led_control_s::COLOR_GREEN: + status_color = rgb888_to_rgb565(0, brightness, 0); + break; + + case led_control_s::COLOR_BLUE: + status_color = rgb888_to_rgb565(0, 0, brightness); + break; + + case led_control_s::COLOR_AMBER: // make it the same as yellow + case led_control_s::COLOR_YELLOW: + status_color = rgb888_to_rgb565(brightness, brightness, 0); + break; + + case led_control_s::COLOR_PURPLE: + status_color = rgb888_to_rgb565(brightness, 0, brightness); + break; + + case led_control_s::COLOR_CYAN: + status_color = rgb888_to_rgb565(0, brightness, brightness); + break; + + case led_control_s::COLOR_WHITE: + status_color = rgb888_to_rgb565(brightness, brightness, brightness); + break; + + default: + case led_control_s::COLOR_OFF: + break; + } + + // Build and send light commands for all configured lights + uavcan::equipment::indication::LightsCommand light_command; + + for (uint8_t i = 0; i < _num_lights; i++) { uavcan::equipment::indication::SingleLightCommand cmd; + cmd.light_id = _light_ids[i]; - uint8_t brightness = led_control_data.leds[0].brightness; - - switch (led_control_data.leds[0].color) { - case led_control_s::COLOR_RED: - cmd.color.red = brightness >> 3; - cmd.color.green = 0; - cmd.color.blue = 0; + switch (_light_functions[i]) { + case LightFunction::Status: + cmd.color = status_color; break; - case led_control_s::COLOR_GREEN: - cmd.color.red = 0; - cmd.color.green = brightness >> 2; - cmd.color.blue = 0; - break; - - case led_control_s::COLOR_BLUE: - cmd.color.red = 0; - cmd.color.green = 0; - cmd.color.blue = brightness >> 3; - break; - - case led_control_s::COLOR_AMBER: // make it the same as yellow - - // FALLTHROUGH - case led_control_s::COLOR_YELLOW: - cmd.color.red = (brightness / 2) >> 3; - cmd.color.green = (brightness / 2) >> 2; - cmd.color.blue = 0; - break; - - case led_control_s::COLOR_PURPLE: - cmd.color.red = (brightness / 2) >> 3; - cmd.color.green = 0; - cmd.color.blue = (brightness / 2) >> 3; - break; - - case led_control_s::COLOR_CYAN: - cmd.color.red = 0; - cmd.color.green = (brightness / 2) >> 2; - cmd.color.blue = (brightness / 2) >> 3; - break; - - case led_control_s::COLOR_WHITE: - cmd.color.red = (brightness / 3) >> 3; - cmd.color.green = (brightness / 3) >> 2; - cmd.color.blue = (brightness / 3) >> 3; - break; - - default: // led_control_s::COLOR_OFF - cmd.color.red = 0; - cmd.color.green = 0; - cmd.color.blue = 0; + case LightFunction::AntiCollision: + uint8_t brigtness = is_anticolision_on() ? 255 : 0; + cmd.color = rgb888_to_rgb565(brigtness, brigtness, brigtness); break; } - cmds.commands.push_back(cmd); - + light_command.commands.push_back(cmd); } - if (_armed_sub.updated()) { - publish_lights = true; - - actuator_armed_s armed; - - if (_armed_sub.copy(&armed)) { - - /* Determine the current control mode - * If a light's control mode config >= current control mode, the light will be enabled - * Logic must match UAVCAN_LGT_* param values. - * @value 0 Always off - * @value 1 When autopilot is armed - * @value 2 When autopilot is prearmed - * @value 3 Always on - */ - uint8_t control_mode = 0; - - if (armed.armed) { - control_mode = 1; - - } else if (armed.prearmed) { - control_mode = 2; - - } else { - control_mode = 3; - } - - uavcan::equipment::indication::SingleLightCommand cmd; - - // Beacons - cmd.light_id = uavcan::equipment::indication::SingleLightCommand::LIGHT_ID_ANTI_COLLISION; - cmd.color = brightness_to_rgb565(_param_mode_anti_col.get() >= control_mode ? 255 : 0); - cmds.commands.push_back(cmd); - - // Strobes - cmd.light_id = uavcan::equipment::indication::SingleLightCommand::LIGHT_ID_STROBE; - cmd.color = brightness_to_rgb565(_param_mode_strobe.get() >= control_mode ? 255 : 0); - cmds.commands.push_back(cmd); - - // Nav lights - cmd.light_id = uavcan::equipment::indication::SingleLightCommand::LIGHT_ID_RIGHT_OF_WAY; - cmd.color = brightness_to_rgb565(_param_mode_nav.get() >= control_mode ? 255 : 0); - cmds.commands.push_back(cmd); - - // Landing lights - cmd.light_id = uavcan::equipment::indication::SingleLightCommand::LIGHT_ID_LANDING; - cmd.color = brightness_to_rgb565(_param_mode_land.get() >= control_mode ? 255 : 0); - cmds.commands.push_back(cmd); - } - } - - if (publish_lights) { - _uavcan_pub_lights_cmd.broadcast(cmds); - } + _uavcan_pub_lights_cmd.broadcast(light_command); } -uavcan::equipment::indication::RGB565 UavcanRGBController::brightness_to_rgb565(uint8_t brightness) +bool UavcanRGBController::is_anticolision_on() { - // RGB color in the standard 5-6-5 16-bit palette. - // Monocolor lights should interpret this as brightness setpoint: from zero (0, 0, 0) to full brightness (31, 63, 31). - uavcan::equipment::indication::RGB565 color; + actuator_armed_s actuator_armed{}; + _actuator_armed_sub.copy(&actuator_armed); - color.red = (31.0f * (float)brightness / 255.0f); - color.green = (62.0f * (float)brightness / 255.0f); - color.blue = (31.0f * (float)brightness / 255.0f); + switch (_param_uavcan_lgt_antcl.get()) { + case 3: // Always on + return true; - return color; + case 2: // When autopilot is prearmed + return actuator_armed.armed || actuator_armed.prearmed; + + case 1: // When autopilot is armed + return actuator_armed.armed; + + case 0: // Always off + default: + return false; + } +} + +uavcan::equipment::indication::RGB565 UavcanRGBController::rgb888_to_rgb565(uint8_t red, uint8_t green, uint8_t blue) +{ + // RGB565: Full brightness is (31, 63, 31), off is (0, 0, 0) + uavcan::equipment::indication::RGB565 rgb565{}; + rgb565.red = (red * 31 + 127) / 255; + rgb565.green = (green * 63 + 127) / 255; + rgb565.blue = (blue * 31 + 127) / 255; + return rgb565; } diff --git a/src/drivers/uavcan/rgbled.hpp b/src/drivers/uavcan/rgbled.hpp index be0bc876d3..ee189019e2 100644 --- a/src/drivers/uavcan/rgbled.hpp +++ b/src/drivers/uavcan/rgbled.hpp @@ -54,9 +54,20 @@ private: // Max update rate to avoid excessive bus traffic static constexpr unsigned MAX_RATE_HZ = 20; + // Maximum number of configurable lights + static constexpr uint8_t MAX_NUM_UAVCAN_LIGHTS = 3; + + // Light function types + enum class LightFunction : uint8_t { + Status = 0, // System status colors from led_control + AntiCollision = 1 // White beacon based on arm state + }; + void periodic_update(const uavcan::TimerEvent &); - uavcan::equipment::indication::RGB565 brightness_to_rgb565(uint8_t brightness); + bool is_anticolision_on(); ///< Evaluates current on state of collision lights accordingt to UAVCAN_LGT_ANTCL + + uavcan::equipment::indication::RGB565 rgb888_to_rgb565(uint8_t red, uint8_t green, uint8_t blue); typedef uavcan::MethodBinder TimerCbBinder; @@ -65,14 +76,21 @@ private: uavcan::Publisher _uavcan_pub_lights_cmd; uavcan::TimerEventForwarder _timer; - uORB::Subscription _armed_sub{ORB_ID(actuator_armed)}; + uORB::Subscription _actuator_armed_sub{ORB_ID(actuator_armed)}; LedController _led_controller; + // Cached configuration (set during init, requires reboot to change) + uint8_t _num_lights{0}; + uint8_t _light_ids[MAX_NUM_UAVCAN_LIGHTS] {}; + LightFunction _light_functions[MAX_NUM_UAVCAN_LIGHTS] {}; + + // Cached parameter handles + param_t _light_id_params[MAX_NUM_UAVCAN_LIGHTS] {}; + param_t _light_fn_params[MAX_NUM_UAVCAN_LIGHTS] {}; + DEFINE_PARAMETERS( - (ParamInt) _param_mode_anti_col, - (ParamInt) _param_mode_strobe, - (ParamInt) _param_mode_nav, - (ParamInt) _param_mode_land + (ParamInt) _param_lgt_num, + (ParamInt) _param_uavcan_lgt_antcl ) }; diff --git a/src/drivers/uavcan/uavcan_params.c b/src/drivers/uavcan/uavcan_params.c index 99a38897e4..9dd90e2e4c 100644 --- a/src/drivers/uavcan/uavcan_params.c +++ b/src/drivers/uavcan/uavcan_params.c @@ -135,7 +135,7 @@ PARAM_DEFINE_INT32(UAVCAN_ECU_FUELT, 1); * UAVCAN ANTI_COLLISION light operating mode * * This parameter defines the minimum condition under which the system will command - * the ANTI_COLLISION lights on + * lights with anti-collision function to turn on (white). * * 0 - Always off * 1 - When autopilot is armed @@ -153,72 +153,6 @@ PARAM_DEFINE_INT32(UAVCAN_ECU_FUELT, 1); */ PARAM_DEFINE_INT32(UAVCAN_LGT_ANTCL, 2); -/** - * UAVCAN STROBE light operating mode - * - * This parameter defines the minimum condition under which the system will command - * the STROBE lights on - * - * 0 - Always off - * 1 - When autopilot is armed - * 2 - When autopilot is prearmed - * 3 - Always on - * - * @min 0 - * @max 3 - * @value 0 Always off - * @value 1 When autopilot is armed - * @value 2 When autopilot is prearmed - * @value 3 Always on - * @reboot_required true - * @group UAVCAN - */ -PARAM_DEFINE_INT32(UAVCAN_LGT_STROB, 1); - -/** - * UAVCAN RIGHT_OF_WAY light operating mode - * - * This parameter defines the minimum condition under which the system will command - * the RIGHT_OF_WAY lights on - * - * 0 - Always off - * 1 - When autopilot is armed - * 2 - When autopilot is prearmed - * 3 - Always on - * - * @min 0 - * @max 3 - * @value 0 Always off - * @value 1 When autopilot is armed - * @value 2 When autopilot is prearmed - * @value 3 Always on - * @reboot_required true - * @group UAVCAN - */ -PARAM_DEFINE_INT32(UAVCAN_LGT_NAV, 3); - -/** - * UAVCAN LIGHT_ID_LANDING light operating mode - * - * This parameter defines the minimum condition under which the system will command - * the LIGHT_ID_LANDING lights on - * - * 0 - Always off - * 1 - When autopilot is armed - * 2 - When autopilot is prearmed - * 3 - Always on - * - * @min 0 - * @max 3 - * @value 0 Always off - * @value 1 When autopilot is armed - * @value 2 When autopilot is prearmed - * @value 3 Always on - * @reboot_required true - * @group UAVCAN - */ -PARAM_DEFINE_INT32(UAVCAN_LGT_LAND, 0); - /** * publish Arming Status stream * diff --git a/src/modules/commander/ModeManagement.cpp b/src/modules/commander/ModeManagement.cpp index ae2dee41ff..b7212f05b8 100644 --- a/src/modules/commander/ModeManagement.cpp +++ b/src/modules/commander/ModeManagement.cpp @@ -107,7 +107,7 @@ uint8_t Modes::addExternalMode(const Modes::Mode &mode) int matching_idx = -1; for (int i = 0; i < MAX_NUM; ++i) { - char hash_param_name[20]; + char hash_param_name[17]; snprintf(hash_param_name, sizeof(hash_param_name), "COM_MODE%d_HASH", i); const param_t handle = param_find(hash_param_name); int32_t current_hash{}; @@ -164,7 +164,7 @@ uint8_t Modes::addExternalMode(const Modes::Mode &mode) if (new_mode_idx != -1 && !_modes[new_mode_idx].valid) { if (need_to_update_param) { - char hash_param_name[20]; + char hash_param_name[17]; snprintf(hash_param_name, sizeof(hash_param_name), "COM_MODE%d_HASH", new_mode_idx); const param_t handle = param_find(hash_param_name); diff --git a/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp b/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp index 093185e240..8a033770ce 100644 --- a/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp +++ b/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp @@ -80,7 +80,7 @@ void ActuatorEffectivenessControlSurfaces::updateParams() // Helper to check if a PWM center parameter is enabled, and clamp it to valid range auto check_pwm_center = [](const char *prefix, int channel) -> bool { - char param_name[20]; + char param_name[17]; snprintf(param_name, sizeof(param_name), "%s_CENT%d", prefix, channel); param_t param = param_find(param_name); From 4bebbbae93209d898d6aa9f5302a875693f33b37 Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Mon, 16 Feb 2026 17:47:30 +0000 Subject: [PATCH 59/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- .../en/advanced_config/parameter_reference.md | 116 +++--- docs/en/middleware/dds_topics.md | 360 +++++++++--------- docs/en/peripherals/vertiq.md | 1 - 3 files changed, 253 insertions(+), 224 deletions(-) diff --git a/docs/en/advanced_config/parameter_reference.md b/docs/en/advanced_config/parameter_reference.md index 501a113ee0..b50fe34113 100644 --- a/docs/en/advanced_config/parameter_reference.md +++ b/docs/en/advanced_config/parameter_reference.md @@ -40288,7 +40288,7 @@ starve other nodes on the bus. UAVCAN ANTI_COLLISION light operating mode. This parameter defines the minimum condition under which the system will command -the ANTI_COLLISION lights on +lights with anti-collision function to turn on (white). 0 - Always off 1 - When autopilot is armed 2 - When autopilot is prearmed @@ -40305,67 +40305,97 @@ the ANTI_COLLISION lights on | ------- | -------- | -------- | --------- | ------- | ---- | | ✓ | 0 | 3 | | 2 | -### UAVCAN_LGT_LAND (`INT32`) {#UAVCAN_LGT_LAND} +### UAVCAN_LGT_FN0 (`INT32`) {#UAVCAN_LGT_FN0} -UAVCAN LIGHT_ID_LANDING light operating mode. +Light 0 function. -This parameter defines the minimum condition under which the system will command -the LIGHT_ID_LANDING lights on -0 - Always off -1 - When autopilot is armed -2 - When autopilot is prearmed -3 - Always on +Function assigned to light 0. +0: Status - displays system status colors +1: Anti-collision - white beacon controlled by LGT_ANTCL parameter **Values:** -- `0`: Always off -- `1`: When autopilot is armed -- `2`: When autopilot is prearmed -- `3`: Always on +- `0`: Status Light +- `1`: Anti-collision Light -| Reboot | minValue | maxValue | increment | default | unit | -| ------- | -------- | -------- | --------- | ------- | ---- | -| ✓ | 0 | 3 | | 0 | +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1 | | 0 | -### UAVCAN_LGT_NAV (`INT32`) {#UAVCAN_LGT_NAV} +### UAVCAN_LGT_FN1 (`INT32`) {#UAVCAN_LGT_FN1} -UAVCAN RIGHT_OF_WAY light operating mode. +Light 1 function. -This parameter defines the minimum condition under which the system will command -the RIGHT_OF_WAY lights on -0 - Always off -1 - When autopilot is armed -2 - When autopilot is prearmed -3 - Always on +Function assigned to light 1. +0: Status - displays system status colors +1: Anti-collision - white beacon controlled by LGT_ANTCL parameter **Values:** -- `0`: Always off -- `1`: When autopilot is armed -- `2`: When autopilot is prearmed -- `3`: Always on +- `0`: Status Light +- `1`: Anti-collision Light -| Reboot | minValue | maxValue | increment | default | unit | -| ------- | -------- | -------- | --------- | ------- | ---- | -| ✓ | 0 | 3 | | 3 | +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1 | | 0 | -### UAVCAN_LGT_STROB (`INT32`) {#UAVCAN_LGT_STROB} +### UAVCAN_LGT_FN2 (`INT32`) {#UAVCAN_LGT_FN2} -UAVCAN STROBE light operating mode. +Light 2 function. -This parameter defines the minimum condition under which the system will command -the STROBE lights on -0 - Always off -1 - When autopilot is armed -2 - When autopilot is prearmed -3 - Always on +Function assigned to light 2. +0: Status - displays system status colors +1: Anti-collision - white beacon controlled by LGT_ANTCL parameter **Values:** -- `0`: Always off -- `1`: When autopilot is armed -- `2`: When autopilot is prearmed -- `3`: Always on +- `0`: Status Light +- `1`: Anti-collision Light + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1 | | 0 | + +### UAVCAN_LGT_ID0 (`INT32`) {#UAVCAN_LGT_ID0} + +Light 0 ID. + +specifies the light_id value for light 0 in UAVCAN LightsCommand messages. +This determines which physical LED responds to commands for this light slot. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 255 | | 0 | + +### UAVCAN_LGT_ID1 (`INT32`) {#UAVCAN_LGT_ID1} + +Light 1 ID. + +specifies the light_id value for light 1 in UAVCAN LightsCommand messages. +This determines which physical LED responds to commands for this light slot. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 255 | | 0 | + +### UAVCAN_LGT_ID2 (`INT32`) {#UAVCAN_LGT_ID2} + +Light 2 ID. + +specifies the light_id value for light 2 in UAVCAN LightsCommand messages. +This determines which physical LED responds to commands for this light slot. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 255 | | 0 | + +### UAVCAN_LGT_NUM (`INT32`) {#UAVCAN_LGT_NUM} + +Number of UAVCAN lights to configure. + +Number of lights to control via UAVCAN LightsCommand messages. +Set to 0 to disable UAVCAN light control. +Each light uses two parameters: LGT_IDx for the light_id and LGT_FNx for the function. | Reboot | minValue | maxValue | increment | default | unit | | ------- | -------- | -------- | --------- | ------- | ---- | diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index 6e61104195..012b4ef6f0 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [QshellReq](../msg_docs/QshellReq.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [LedControl](../msg_docs/LedControl.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [Mission](../msg_docs/Mission.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) - [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [EscReport](../msg_docs/EscReport.md) -- [EventV0](../msg_docs/EventV0.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [Vtx](../msg_docs/Vtx.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [Airspeed](../msg_docs/Airspeed.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [LedControl](../msg_docs/LedControl.md) +- [Ping](../msg_docs/Ping.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) - [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) - [Gripper](../msg_docs/Gripper.md) -- [GpioRequest](../msg_docs/GpioRequest.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) - [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [EventV0](../msg_docs/EventV0.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [EscReport](../msg_docs/EscReport.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [Vtx](../msg_docs/Vtx.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [InputRc](../msg_docs/InputRc.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [Rpm](../msg_docs/Rpm.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) - [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) - [CameraTrigger](../msg_docs/CameraTrigger.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [Event](../msg_docs/Event.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) - [QshellRetval](../msg_docs/QshellRetval.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [Event](../msg_docs/Event.md) - [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [RadioStatus](../msg_docs/RadioStatus.md) - [Cpuload](../msg_docs/Cpuload.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [Rpm](../msg_docs/Rpm.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [Mission](../msg_docs/Mission.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) - [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) - [SensorsStatus](../msg_docs/SensorsStatus.md) - [DeviceInformation](../msg_docs/DeviceInformation.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) - [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [InputRc](../msg_docs/InputRc.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) - [PpsCapture](../msg_docs/PpsCapture.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [Ping](../msg_docs/Ping.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) - [PwmInput](../msg_docs/PwmInput.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [FollowTarget](../msg_docs/FollowTarget.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) ::: diff --git a/docs/en/peripherals/vertiq.md b/docs/en/peripherals/vertiq.md index 9a9f80c575..224118a8bf 100644 --- a/docs/en/peripherals/vertiq.md +++ b/docs/en/peripherals/vertiq.md @@ -50,7 +50,6 @@ See [DroneCAN Lights](../dronecan/index.md#lights) for configuration instruction The `light_id` for each LED is calculated as: `esc_index × 3 + BASE_ID`, where `BASE_ID` is 1 for RGB and 2 for White. - ### DShot/PWM Configuration Instructions for integrating the motor/ESC using PWM and DShot can be found in [PWM and DShot Control with a Flight Controller](https://iqmotion.readthedocs.io/en/latest/tutorials/pwm_control_flight_controller.html). From 061fe4806e7ce14767c9370e225b2435cd657b51 Mon Sep 17 00:00:00 2001 From: ljarvela <168073883+ljarvela@users.noreply.github.com> Date: Mon, 16 Feb 2026 22:25:30 +0200 Subject: [PATCH 60/83] uavcan: add warning about CAN error counter reading issue (#26492) Add warning message in print_info() to alert users that CAN error counter values may increase during the function call due to internal counter reading implementation. Users should not fully trust these counters until the underlying issue is fixed. Co-authored-by: ljarvela --- src/drivers/uavcan/uavcan_main.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/drivers/uavcan/uavcan_main.cpp b/src/drivers/uavcan/uavcan_main.cpp index e70c4436f2..956f5f4193 100644 --- a/src/drivers/uavcan/uavcan_main.cpp +++ b/src/drivers/uavcan/uavcan_main.cpp @@ -1163,6 +1163,11 @@ UavcanNode::print_info() printf("\n"); + // See https://github.com/PX4/PX4-Autopilot/issues/22871 + printf("WARNING: CAN error counter values below may increase during this function call due to internal counter reading implementation.\n"); + printf("Do not fully trust these counters until this issue is fixed.\n"); + printf("\n"); + // UAVCAN node perfcounters printf("UAVCAN node status:\n"); printf("\tInternal failures: %" PRIu64 "\n", _node.getInternalFailureCount()); From 08dc2a776e442a300cc8006d24db33f5c59bafd4 Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Mon, 16 Feb 2026 20:33:01 +0000 Subject: [PATCH 61/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/middleware/dds_topics.md | 380 +++++++++++++++---------------- 1 file changed, 190 insertions(+), 190 deletions(-) diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index 012b4ef6f0..ec937cc543 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [SensorSelection](../msg_docs/SensorSelection.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [LedControl](../msg_docs/LedControl.md) -- [Ping](../msg_docs/Ping.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [Gripper](../msg_docs/Gripper.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) - [VehicleAirData](../msg_docs/VehicleAirData.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [EventV0](../msg_docs/EventV0.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [EscReport](../msg_docs/EscReport.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [Vtx](../msg_docs/Vtx.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [InputRc](../msg_docs/InputRc.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [Rpm](../msg_docs/Rpm.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [Event](../msg_docs/Event.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [Mission](../msg_docs/Mission.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [UlogStream](../msg_docs/UlogStream.md) - [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [PpsCapture](../msg_docs/PpsCapture.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [EscReport](../msg_docs/EscReport.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) - [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) - [AdcReport](../msg_docs/AdcReport.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) - [ActuatorTest](../msg_docs/ActuatorTest.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [Event](../msg_docs/Event.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [InputRc](../msg_docs/InputRc.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [Ping](../msg_docs/Ping.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [EventV0](../msg_docs/EventV0.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [Rpm](../msg_docs/Rpm.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [Gripper](../msg_docs/Gripper.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [Vtx](../msg_docs/Vtx.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [LedControl](../msg_docs/LedControl.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [Mission](../msg_docs/Mission.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) ::: From 066e8f7fea27391e3e839efd1a49262bd46ab85a Mon Sep 17 00:00:00 2001 From: Aaron1356 Date: Mon, 16 Feb 2026 15:34:48 -0600 Subject: [PATCH 62/83] Adding Light Ware GRF Serial Driver (#26404) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Creating a base for grf lidar * Serial Drive is working, need to work out distance publish * WIP Getting Range Data in cm * Working Rand Distance Values for GRF 250 and GRF500 * Review Changes * Compiler fixes * Update to date * small update * Fix typo and remover unused libs * removing unused enum * Update to the Documentation * Fiving scaling issue * update to the logic * [Feature] Adding I2C driver for the GRF250 and GRF500 models (#26425) * Adding the GRF I2C driver * I2C Driver Working * Removing a lot of unnecessary code * fixing names * Changing the i2c Driver to be in the lightware laser * remove the old driver * formatting fix * Adding Ligthware GRF to documentation * Update to the Documentation * Ensuring sample_perf ends * Updating Docs * uavcannode: implement hardpoint commands (#26334) * implement cannode hardpoint commands Signed-off-by: dirksavage88 * Update src/drivers/uavcannode/Subscribers/HardpointCommand.hpp Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> * Update src/drivers/uavcannode/Subscribers/HardpointCommand.hpp Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> * add hardpoint sub to ark cannode, simplify handling of hardpoint broadcast Signed-off-by: dirksavage88 --------- Signed-off-by: dirksavage88 Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> * voxl_esc: Limit frequency of UART passthru writes to 20Hz * voxl2_io: Added UART passthru * docs: update link for px4 ros2 interface lib python api docs * estimator_interface: remove unused getter * gnss_checks: always run strict checks on ground With the goal to never take off if the GNSS solution is not fullfilling the configured requirements still not stopping to use it in case it degrades mid air. * ekf2 unit-tests: adapt to strict GNSS checks on ground * escCheck: rework online check to properly report offline ESCs previous to this 09d79b221f274523349a029e63ab4462e41d0c1c set `esc_online_flags` e.g. for UAVCAN ESCs which specific one is online and that then got compared to a mask where the first `esc_count` bits were set. So if only ESC 5 is mapped and online you get the message "ESC 156 offline" because `esc_online_flags = 0b1000` gets compared to `online_bitmask = 0b1` based on `esc_count = 1` and the motor index is `esc[0].actuator_function = 0` wrapped using `0 - actuator_motors_s::ACTUATOR_FUNCTION_MOTOR1 + 1 = 156`. * FailureDetector: consistent timestamp naming * FailureDetector: rework motor status check * FailureDetector: implement upper and lower current limit with offset * Update src/modules/commander/failure_detector/FailureDetector.cpp Prevent Buffer overflow * Update Format * Subedit * Shrink and rename image * Apply suggestion from @hamishwillee Sounds good Co-authored-by: Hamish Willee * Apply suggestion from @hamishwillee More universal approach Co-authored-by: Hamish Willee * Update to the Documentation * FailureDetector: rework motor status check * FailureDetector: implement upper and lower current limit with offset * Subedit * docs: update parameter reference metadata * Remove pregenerated files - that should all be tidied up next time this runs * remover GRF parameters * Documentation updates * Fixing Merge Conflicts * remove @ * Undo Changes to parameter_reference * remove the code that will be autogen-ed * Update the Camake File --------- Signed-off-by: dirksavage88 Co-authored-by: Andrew Brahim <35986980+dirksavage88@users.noreply.github.com> Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> Co-authored-by: Eric Katzfey Co-authored-by: Beat Küng Co-authored-by: Matthias Grob Co-authored-by: Marco Hauswirth Co-authored-by: Nick <145654544+ttechnick@users.noreply.github.com> Co-authored-by: Hamish Willee Co-authored-by: Ramon Roche --- boards/px4/fmu-v6xrt/default.px4board | 1 + .../sensors/lidar_lightware/grf_500.png | Bin 0 -> 110575 bytes docs/en/SUMMARY.md | 1 + docs/en/sensor/grf_lidar.md | 68 ++ docs/en/sensor/sfxx_lidar.md | 7 +- .../lightware_grf_serial/CMakeLists.txt | 46 ++ .../lightware_grf_serial/Kconfig | 5 + .../lightware_grf_serial/grf_commands.h | 91 +++ .../lightware_grf_serial.cpp | 633 ++++++++++++++++++ .../lightware_grf_serial.hpp | 134 ++++ .../lightware_grf_serial_main.cpp | 167 +++++ .../lightware_grf_serial/module.yaml | 44 ++ 12 files changed, 1195 insertions(+), 2 deletions(-) create mode 100644 docs/assets/hardware/sensors/lidar_lightware/grf_500.png create mode 100644 docs/en/sensor/grf_lidar.md create mode 100755 src/drivers/distance_sensor/lightware_grf_serial/CMakeLists.txt create mode 100755 src/drivers/distance_sensor/lightware_grf_serial/Kconfig create mode 100755 src/drivers/distance_sensor/lightware_grf_serial/grf_commands.h create mode 100755 src/drivers/distance_sensor/lightware_grf_serial/lightware_grf_serial.cpp create mode 100755 src/drivers/distance_sensor/lightware_grf_serial/lightware_grf_serial.hpp create mode 100755 src/drivers/distance_sensor/lightware_grf_serial/lightware_grf_serial_main.cpp create mode 100755 src/drivers/distance_sensor/lightware_grf_serial/module.yaml diff --git a/boards/px4/fmu-v6xrt/default.px4board b/boards/px4/fmu-v6xrt/default.px4board index 395151b8cc..2f9d8479b3 100644 --- a/boards/px4/fmu-v6xrt/default.px4board +++ b/boards/px4/fmu-v6xrt/default.px4board @@ -19,6 +19,7 @@ CONFIG_COMMON_DIFFERENTIAL_PRESSURE=y CONFIG_DRIVERS_DIFFERENTIAL_PRESSURE_AUAV=y CONFIG_COMMON_DISTANCE_SENSOR=y CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_SF45_SERIAL=y +CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_GRF_SERIAL=y CONFIG_DRIVERS_DSHOT=y CONFIG_DRIVERS_GNSS_SEPTENTRIO=y CONFIG_DRIVERS_GPS=y diff --git a/docs/assets/hardware/sensors/lidar_lightware/grf_500.png b/docs/assets/hardware/sensors/lidar_lightware/grf_500.png new file mode 100644 index 0000000000000000000000000000000000000000..baccec33a3ed5b7c4442334cbeb8389e420ecb0b GIT binary patch literal 110575 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

oX6wm#EyiLWv&w+FKPjS$r@Alhl~25) zDA;ucTMJK5Pfbr7$U^}}HBoDX8E%4p-I_XaSH9sXgthGGOMgq{p@R3s_=PH zX5Y$Xly*L@I}t^7u^>xUUUIBF3=n>swucsNr&C@Qj9qyVQl9R z*vy|`g=HKoCPz!l!VX@5*yzG?+x$&M-L}jjYfW(I2stItzg;NbbXDfW76QoJTG*%aH zEE(WdH5j0+W62rju{G?gi6ledU}#W$K7TB!vZRPUa z7t4niS68>Ebb(pm<8$$ZFOY6_tUS@h_iz67#)X>9Fw}HcO1t9=Mq1b9c!IDOkM#jC zgqar((;#YiHlX098n^q30ssIY07*naRMXM?)C)~j-9vYlQWkpIWudez2riw8j4=a45|bD*B0~~ihy)8tE>R@oC7RQC@*txU zM&ZpxZn%SLM-@+OgLCjf2 zRjz*MU;og*Qex$WWgJ`W^QU5AaAC*}Rofb2gL+f#6qK#J=wII2I~KBHCg!%n3uV>M zhy8xh9Fp1J{~&tM?tT2J%`Qb`%#^^i+syEo-4{WNkH_Ep#av@LV(0ZDp)-bn=!#3*55z{*lCn-GI4g^89*WJ5XvGl|xRyXOLVB8wU_gS*^XyMB=hNb7{Cm#lJWMl^|^4Rrdtc}zhL8Bm$7p)z#WrN$&7f)kU|QI*P}3rgM) z5u`+@2#N?2@)piJI&a0f5H~#CTGh;8`+slF&SR@0j;t!J(^jkBDjnp*5u6*8jjW!< z&P${%V4Af_Wym(Gswsu{D^xa^7|V ws>I{lN?HD^eJ^9~^!NuKy<=`^*l$&2VOH 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 z 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�-i^t&_}Be# zdcrgNgYXaaEMI4*3{93rmJxyv={6CVi0^kp@p05NiR_dGK8N~7MLXa9aQh>~3rzjH z%E1a51{>$5i{!rIcYM!};ZNvdc0k6NuT;YM09rF@zNQs4Z{dz8hTVJ{FIX zN9MAi3`2a07DNnIg|S1~%GaxYb7fVw8_)K`MR3b2y+X;Mn4%X%OM{4o^*{x%GB-DT zFmoNC?&(Qm?I(Rg-=J4 znM^XBc5wF6$g{NV;%LJBCWm6;j~)8%%iDt=Cte6L?!rl>vN==W%N}S35kvPw{9Zmg zTfomV+`cP4WR|DiEeqr_HwRbX@B?uLUiK#6U&_yxE$)K>i0D;+3ePZ3 z%Y;FUjJF-jX{Qsa97B6#Sg3`(x=d1W4LXC8k!T_f`^*Fyv-?obnTX^HFh;6SeFJ~% z_V)JS@Z(Fd{V}M2V41?w+Fa!XG2`O2F#(!#$?MIa%?Tn(J1e@1QZ#;{rVq<9DJ_2` zVgf0AnQ6FFl4SI*<-Tkgta;KA(^JUoNRAO7$69h($4rO9GNut9W@?IGAS9~^-ERbq zsmTDzn0T*@@l(tM+*YNxpLRxOR7Zc%nr^Q6YA!s8TkAPyrQeh#msMT5$jq1?i!~T6 zc)Q--9)9r6?W+<_-#6>CXND9l)IO%F{YX3PpNUa>jMKIEv6d-KGN{ygkm7m&!5S12 zaeFKjjoB$^=oIt{tQ8cOR-ss0+N^9Jiu2nL{H-4~To^Jzqfl-EW)=%P)`D6%itFVn zjVOg_Ck5P`Wbq_exp0gNmvqcXdoLZIxDqiqPnH6+m?W7?AcJF`dulQ)WO#3xl>UGX z&XoB$26M}x{Z9!m9$;Qz2c{wz*c)S5X3)%VP!{KEjBk;!oFc>vVBpwa za7#?W!{3I7h8}$T&6jru z2R?-(AOqL_`YvOJiH5aFp~&;IJU-EhMY_pouAkX%huZDL)rc9(5n>D@ zIV}5y2iEH1Uqa@sf=o|#`A?5yI<=ZVBm=}qtl(q$59loprg1-GldG znGTq2CKse*294QQv!wG^{CLT0U6f0&R7IcQa@5ka3$u$a79+G=7cSyF%I5{gFk&db zYU{jOzpx#T~o$}xxynEw*OoLR)HXC^TNkcAAYTPopVaY!JouPkj; zwjTpjZr>UF__;-c%xAYOq2{gi)`7sxO2LEx3s)m)ahItlk~Qq8dOr^C3-5)6WV{+N z&tv#2;kU;6mCR4)E1B1NO-7H(mX}YDWd##U{a(f23(9^!KE<%iACZ9#TEh#kCWGc3 zoNAwray90eLX6%^MlQ@fmM>v4EN5^&3!a5~9Y>OBU_Hd$tQ>+~&ae}YO+ z0h9Sf1ZAC$&M!bx)KEs4fwLpH!7`KRTaKrpekqvop+p&d zk3h*k8g`t0m|MolWs?39AIT(>P10}41jM+_hYufq{q?qa6;EW%t(eaY=#*d>&q~ot7KGMrn&y% zl9vfHN|tF#=2#2MIvwSbkuv55WvFXjKn9N;bjVE6*sgRM8$Sa5L77G|&^|`}mediG z3L2J+|F>eZx#-V}O{;+xueddgsxA^QZ#<=c4qWC4E<@jb^?vv5!Kb_R6`}kQCM^63 zI2@U!91hUPBopge-Eew*Om@dGVu)E(;XkP*0YJ#u!C>KuOoQG1bg|+EW-b-}ORJ5_ z+QCL^1@??sG*yeMEtZy1HoS-02x}SHeaCL^ja&mVi75#gT$ʣxZKQ4QXHJM-j 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 bFX>?>p5pnwY<1X+|6SEpwN<{ow2u5A1 Distance sensors** + 3. Select/Enable `lightware_grf_serial` + 4. Save the configuration + + - Manually update `default.px4` to include the configuration key: + 1. Open the `default.px4board` config file that corresponds to the board you want to build for. + For example, to add the driver to `fmu-v6x` boards you would update [/boards/px4/fmu-v6x/default.px4board ](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board) + 2. Add the following line and save the file: + + ```txt + CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_GRF_SERIAL=y + ``` + +2. [Build PX4](../dev_setup/building_px4.md) for your flight controller target and upload the new firmware. + +### Parameter Configuration + +You will need to configure PX4 to indicate the serial port to which the sensor is connected (as per [Serial Port Configuration](../peripherals/serial_configuration.md)) and also the orientation and other properties of the sensor. + +The [parameters to change](../advanced_config/parameters.md) are listed in the table. + +| Parameter | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | +| [SENS_EN_GRF_CFG](../advanced_config/parameter_reference.md#SENS_EN_GRF_CFG) | Set to the serial port the sensor is connected to. | +| [GRF_UPDATE_CFG](../advanced_config/parameter_reference.md#GRF_UPDATE_CFG) | Set the update rate. | +| [GRF_SENS_MODEL](../advanced_config/parameter_reference.md#GRF_SENS_MODEL) | Set the update rate. | + +## Testing + +You can confirm that the sensor is correctly configured by connecting QGroundControl, and observing that [DISTANCE_SENSOR](https://mavlink.io/en/messages/common.html#DISTANCE_SENSOR) is present in the [MAVLink Inspector](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/mavlink_inspector.html). + +Moving the sensor around at various distances from a surface will have the `current_distance` value change. + +## Troubleshooting +If you are having problems with connecting to the sensor you may need to unassign a the default serial port. [Unassign Default Serial Port](../peripherals/serial_configuration.md) diff --git a/docs/en/sensor/sfxx_lidar.md b/docs/en/sensor/sfxx_lidar.md index e225422805..2ca57d9972 100644 --- a/docs/en/sensor/sfxx_lidar.md +++ b/docs/en/sensor/sfxx_lidar.md @@ -15,8 +15,8 @@ The following models are supported by PX4, and can be connected to either the I2 | [LW20/C](https://lightware.co.za/products/lw20-c-100-m) | 100 | I2C bus | Waterproofed (IP67) with servo for sense-and-avoid applications | | [SF30/D](https://lightwarelidar.com/shop/sf30-d-200-m/) | 200 | I2C bus | Waterproofed (IP67) | | [SF45/B](../sensor/sf45_rotating_lidar.md) | 50 | Serial | Rotary Lidar (Used for [Collision Prevention](../computer_vision/collision_prevention.md)) | -| [GRF250](https://lightwarelidar.com/shop/grf-250/) | 250 | I2C | Gimbal Range Finder | -| [GRF500](https://lightwarelidar.com/shop/grf-500/) | 500 | I2C | Gimbal Range Finder | +| [GRF250](../sensor/grf_lidar.md) | 250 | Serial or I2C | Gimbal Range Finder | +| [GRF500](../sensor/grf_lidar.md) | 500 | Serial or I2C | Gimbal Range Finder | ::: details Discontinued @@ -69,6 +69,9 @@ VTOL vehicles may choose to also set [SF1XX_MODE](../advanced_config/parameter_r ::: tip [SF45/B](../sensor/sf45_rotating_lidar.md) setup is covered in the linked document. ::: +::: tip +[GRF250/GRF500](../sensor/grf_lidar.md) setup is covered in the linked document. +::: ### Hardware diff --git a/src/drivers/distance_sensor/lightware_grf_serial/CMakeLists.txt b/src/drivers/distance_sensor/lightware_grf_serial/CMakeLists.txt new file mode 100755 index 0000000000..9a3c045be7 --- /dev/null +++ b/src/drivers/distance_sensor/lightware_grf_serial/CMakeLists.txt @@ -0,0 +1,46 @@ +############################################################################ +# +# Copyright (c) 2026 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ +px4_add_module( + MODULE drivers__distance_sensor__lightware_grf_serial + MAIN lightware_grf_serial + COMPILE_FLAGS + SRCS + lightware_grf_serial.cpp + lightware_grf_serial.hpp + lightware_grf_serial_main.cpp + DEPENDS + drivers_rangefinder + px4_work_queue + MODULE_CONFIG + module.yaml + ) diff --git a/src/drivers/distance_sensor/lightware_grf_serial/Kconfig b/src/drivers/distance_sensor/lightware_grf_serial/Kconfig new file mode 100755 index 0000000000..3c89bf0974 --- /dev/null +++ b/src/drivers/distance_sensor/lightware_grf_serial/Kconfig @@ -0,0 +1,5 @@ +menuconfig DRIVERS_DISTANCE_SENSOR_LIGHTWARE_GRF_SERIAL + bool "lightware_grf_serial" + default n + ---help--- + Enable support for lightware_grf_serial diff --git a/src/drivers/distance_sensor/lightware_grf_serial/grf_commands.h b/src/drivers/distance_sensor/lightware_grf_serial/grf_commands.h new file mode 100755 index 0000000000..c278a166c6 --- /dev/null +++ b/src/drivers/distance_sensor/lightware_grf_serial/grf_commands.h @@ -0,0 +1,91 @@ +/**************************************************************************** + * + * Copyright (c) 2026 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file grf_commands.h + * @author Aaron Porter + * + * Declarations of grf serial commands for the Lightware grf series + */ + +#pragma once +#define GRF_MAX_PAYLOAD 256 +#define GRF_CRC_FIELDS 2 + +enum GRF_SERIAL_CMD { + GRF_PRODUCT_NAME = 0, + GRF_HARDWARE_VERSION = 1, + GRF_FIRMWARE_VERSION = 2, + GRF_SERIAL_NUMBER = 3, + GRF_TEXT_MESSAGE = 7, + GRF_USER_DATA = 9, + GRF_TOKEN = 10, + GRF_SAVE_PARAMETERS = 12, + GRF_RESET = 14, + GRF_STAGE_FIRMWARE = 16, + GRF_COMMIT_FIRMWARE = 17, + GRF_DISTANCE_OUTPUT = 27, + GRF_STREAM = 30, + GRF_DISTANCE_DATA_CM = 44, + GRF_DISTANCE_DATA_MM = 45, + GRF_LASER_FIRING = 50, + GRF_TEMPERATURE = 55, + GRF_AUTO_EXPOSURE = 70, + GRF_UPDATE_RATE = 74, + GRF_LOST_SIGNAL_COUNT = 78, + GRF_GPIO_MODE = 83, + GRF_GPIO_ALARM = 84, + GRF_MEDIAN_FILTER_EN = 86, + GRF_MEDIAN_FILETER_S = 87, + GRF_SMOOTH_FILTER_EN = 88, + GRF_SMOOTH_FACTOR = 89, + GRF_BAUD_RATE = 91, + GRF_I2C_ADDRESS = 92, + GRF_ROLL_AVG_EN = 93, + GRF_ROLL_AVG_SIZE = 94, + GRF_SLEEP_COMMAND = 98, + GRF_ZERO_OFFSET = 114 +}; + +// Store contents of rx'd frame +struct { + const uint8_t data_fields = 2; // useful for breaking crc's into byte separated fields + uint16_t data_len{0}; // last message payload length (1+ bytes in payload) + uint8_t data[GRF_MAX_PAYLOAD]; // payload size limited by posix serial + uint8_t msg_id{0}; // latest message's message id + uint8_t flags_lo{0}; // flags low byte + uint8_t flags_hi{0}; // flags high byte + uint16_t crc[GRF_CRC_FIELDS] = {0, 0}; + uint8_t crc_lo{0}; // crc low byte + uint8_t crc_hi{0}; // crc high byte +} rx_field; diff --git a/src/drivers/distance_sensor/lightware_grf_serial/lightware_grf_serial.cpp b/src/drivers/distance_sensor/lightware_grf_serial/lightware_grf_serial.cpp new file mode 100755 index 0000000000..403c61f562 --- /dev/null +++ b/src/drivers/distance_sensor/lightware_grf_serial/lightware_grf_serial.cpp @@ -0,0 +1,633 @@ +/************************************************************************** + * + * Copyright (c) 2026 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include "lightware_grf_serial.hpp" + +#include +#include +#include +#include + +#include + +using namespace time_literals; + +GRFLaserSerial::GRFLaserSerial(const char *port, uint8_t rotation) : + ScheduledWorkItem(MODULE_NAME, px4::serial_port_to_wq(port)), + _px4_rangefinder(0, rotation), + _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": read")), + _comms_errors(perf_alloc(PC_COUNT, MODULE_NAME": com_err")) +{ + /* store port name */ + strncpy(_port, port, sizeof(_port) - 1); + + /* enforce null termination */ + _port[sizeof(_port) - 1] = '\0'; + + device::Device::DeviceId device_id; + device_id.devid_s.bus_type = device::Device::DeviceBusType_SERIAL; + + uint8_t bus_num = atoi(&_port[strlen(_port) - 1]); // Assuming '/dev/ttySx' + + if (bus_num < 10) { + device_id.devid_s.bus = bus_num; + } + + _px4_rangefinder.set_device_id(device_id.devid); + _px4_rangefinder.set_device_type(DRV_DIST_DEVTYPE_LIGHTWARE_LASER); + +} + +GRFLaserSerial::~GRFLaserSerial() +{ + stop(); + + perf_free(_sample_perf); + perf_free(_comms_errors); +} + +int GRFLaserSerial::init() +{ + param_get(param_find("GRF_RATE_CFG"), &_update_rate); + param_get(param_find("GRF_SENS_MODEL"), &_model_type); + + start(); + return PX4_OK; +} + +int GRFLaserSerial::measure() +{ + int32_t rate = (int32_t)_update_rate; + _data_output = 0x01; // raw distance (last return) + _stream_data = 5; // enable constant streaming + + // send packets to the sensor depending on the state + switch (_sensor_state) { + + case STATE_UNINIT: + // Used to probe if the sensor is alive + grf_send(GRF_PRODUCT_NAME, false, &_product_name[0], 0); + break; + + case STATE_ACK_PRODUCT_NAME: + // Update rate default to 5 readings/s + grf_send(GRF_UPDATE_RATE, true, &rate, sizeof(uint8_t)); + ScheduleDelayed(100_ms); + break; + + case STATE_ACK_UPDATE_RATE: + // Configure the data that the sensor shall output + grf_send(GRF_DISTANCE_OUTPUT, true, &_data_output, sizeof(_data_output)); + break; + + case STATE_ACK_DISTANCE_OUTPUT: + // Configure the sensor to automatically output data at the configured update rate + grf_send(GRF_STREAM, true, &_stream_data, sizeof(_stream_data)); + _sensor_state = STATE_SEND_STREAM; + break; + + default: + break; + } + + return PX4_OK; +} + +int GRFLaserSerial::collect() +{ + if (_sensor_state == STATE_UNINIT) { + + perf_begin(_sample_perf); + const int payload_length = 22; + + _crc_valid = false; + grf_get_and_handle_request(payload_length, GRF_PRODUCT_NAME); + + if (_crc_valid) { + _sensor_state = STATE_ACK_PRODUCT_NAME; + perf_end(_sample_perf); + return PX4_OK; + } + + perf_end(_sample_perf); + return -EAGAIN; + + } else if (_sensor_state == STATE_ACK_PRODUCT_NAME) { + + perf_begin(_sample_perf); + const int payload_length = 7; + + _crc_valid = false; + grf_get_and_handle_request(payload_length, GRF_UPDATE_RATE); + + if (_crc_valid) { + _sensor_state = STATE_ACK_UPDATE_RATE; + perf_end(_sample_perf); + return PX4_OK; + } + + perf_end(_sample_perf); + return -EAGAIN; + + } else if (_sensor_state == STATE_ACK_UPDATE_RATE) { + + perf_begin(_sample_perf); + const int payload_length = 10; + + _crc_valid = false; + grf_get_and_handle_request(payload_length, GRF_DISTANCE_OUTPUT); + + if (_crc_valid) { + _sensor_state = STATE_ACK_DISTANCE_OUTPUT; + perf_end(_sample_perf); + return PX4_OK; + } + + perf_end(_sample_perf); + return -EAGAIN; + + } else { + + // Stream data from sensor + perf_begin(_sample_perf); + const int payload_length = 10; + + _crc_valid = false; + grf_get_and_handle_request(payload_length, GRF_DISTANCE_DATA_CM); + + if (_crc_valid) { + grf_process_replies(); + perf_end(_sample_perf); + return PX4_OK; + } + + perf_end(_sample_perf); + return -EAGAIN; + } +} + +void GRFLaserSerial::start() +{ + /* reset the sensor state */ + _sensor_state = STATE_UNINIT; + + /* reset the report ring */ + _collect_phase = false; + + /* reset the UART receive buffer size */ + _linebuf_size = 0; + + /* reset the fail counter */ + _last_received_time = hrt_absolute_time(); + + /*Set Lidar Min/Max based on model*/ + switch (_model_type) { + case GRF250: { + _px4_rangefinder.set_min_distance(0.1f); + _px4_rangefinder.set_max_distance(250.0f); + break; + } + + case GRF500: { + _px4_rangefinder.set_min_distance(0.1f); + _px4_rangefinder.set_max_distance(500.0f); + break; + } + } + + /* schedule a cycle to start things */ + ScheduleNow(); +} + +void GRFLaserSerial::stop() +{ + ScheduleClear(); +} + +void GRFLaserSerial::Run() +{ + /* fds initialized? */ + if (_fd < 0) { + /* open fd: non-blocking read mode*/ + _fd = ::open(_port, O_RDWR | O_NOCTTY | O_NONBLOCK); + + if (_fd < 0) { + PX4_ERR("serial open failed (%i)", errno); + return; + } + + struct termios uart_config; + + int termios_state; + + /* fill the struct for the new configuration */ + tcgetattr(_fd, &uart_config); + + /* clear ONLCR flag (which appends a CR for every LF) */ + uart_config.c_oflag &= ~ONLCR; + + /* no parity, one stop bit */ + uart_config.c_cflag &= ~(CSTOPB | PARENB); + + unsigned speed = B115200; + + /* set baud rate */ + if ((termios_state = cfsetispeed(&uart_config, speed)) < 0) { + PX4_ERR("CFG: %d ISPD", termios_state); + } + + if ((termios_state = cfsetospeed(&uart_config, speed)) < 0) { + PX4_ERR("CFG: %d OSPD", termios_state); + } + + if ((termios_state = tcsetattr(_fd, TCSANOW, &uart_config)) < 0) { + PX4_ERR("baud %d ATTR", termios_state); + } + } + + if (_collect_phase) { + if (hrt_absolute_time() - _last_received_time >= 1_s) { + start(); + return; + } + + /* perform collection */ + if (collect() != PX4_OK && errno != EAGAIN) { + PX4_DEBUG("collect error"); + } + + if (_sensor_state != STATE_SEND_STREAM) { + /* next phase is measurement */ + _collect_phase = false; + } + + } else { + /* measurement phase */ + + if (measure() != PX4_OK) { + PX4_DEBUG("measure error"); + } + + /* next phase is collection */ + _collect_phase = true; + } + + /* schedule a fresh cycle call when the measurement is done */ + ScheduleDelayed(_interval); +} + +void GRFLaserSerial::print_info() +{ + perf_print_counter(_sample_perf); + perf_print_counter(_comms_errors); +} + +void GRFLaserSerial::grf_get_and_handle_request(const int payload_length, const GRF_SERIAL_CMD msg_id) +{ + // GRF protocol + // Start byte is 0xAA and is the start of packet + // Payload length sanity check (0-1023) bytes + // and represented by 16-bit integer (payload + + // read/write status) + // ID byte precedes the data in the payload + // CRC comprised of 16-bit checksum (not included in checksum calc.) + + int ret; + size_t max_read = sizeof(_linebuf) - _linebuf_size; + ret = ::read(_fd, &_linebuf[_linebuf_size], max_read); + + if (ret < 0 && errno != EAGAIN) { + PX4_ERR("ERROR (ack from streaming distance data): %d", ret); + _linebuf_size = 0; + perf_count(_comms_errors); + perf_end(_sample_perf); + return; + } + + if (ret > 0) { + _last_received_time = hrt_absolute_time(); + _linebuf_size += ret; + } + + // Not enough data to parse a complete packet. Gather more data in the next cycle. + if (_linebuf_size < payload_length) { + return; + } + + int index = 0; + + while (index <= _linebuf_size - payload_length && _crc_valid == false) { + bool restart_flag = false; + + while (restart_flag != true) { + switch (_parsed_state) { + case GRF_PARSED_STATE::START: { + if (_linebuf[index] == 0xAA) { + // start of frame is valid, continue + _calc_crc = grf_format_crc(_calc_crc, _start_of_frame); + _parsed_state = GRF_PARSED_STATE::FLG_LOW; + break; + + } else { + _crc_valid = false; + _parsed_state = GRF_PARSED_STATE::START; + restart_flag = true; + _calc_crc = 0; + PX4_DEBUG("Start of packet not valid: %d", _sensor_state); + break; + } + } + + case GRF_PARSED_STATE::FLG_LOW: { + rx_field.flags_lo = _linebuf[index + 1]; + _calc_crc = grf_format_crc(_calc_crc, rx_field.flags_lo); + _parsed_state = GRF_PARSED_STATE::FLG_HIGH; + break; + } + + case GRF_PARSED_STATE::FLG_HIGH: { + rx_field.flags_hi = _linebuf[index + 2]; + rx_field.data_len = (rx_field.flags_hi << 2) | (rx_field.flags_lo >> 6); + _calc_crc = grf_format_crc(_calc_crc, rx_field.flags_hi); + + // Check payload length against known max value + if (rx_field.data_len > 17) { + _parsed_state = GRF_PARSED_STATE::START; + restart_flag = true; + _calc_crc = 0; + PX4_DEBUG("Payload length error: %d", _sensor_state); + break; + + } else { + _parsed_state = GRF_PARSED_STATE::ID; + break; + } + } + + case GRF_PARSED_STATE::ID: { + rx_field.msg_id = _linebuf[index + 3]; + + if (rx_field.msg_id == msg_id) { + _calc_crc = grf_format_crc(_calc_crc, rx_field.msg_id); + _parsed_state = GRF_PARSED_STATE::DATA; + break; + } + + // Ignore message ID's that aren't searched + else { + _parsed_state = GRF_PARSED_STATE::START; + _calc_crc = 0; + restart_flag = true; + PX4_DEBUG("Non needed message ID: %d", _sensor_state); + break; + } + } + + case GRF_PARSED_STATE::DATA: { + // Process commands with & w/out data bytes + if (rx_field.data_len > 1) { + for (uint8_t i = 4; i < 3 + rx_field.data_len; ++i) { + + rx_field.data[_data_bytes_recv] = _linebuf[index + i]; + _calc_crc = grf_format_crc(_calc_crc, rx_field.data[_data_bytes_recv]); + _data_bytes_recv = _data_bytes_recv + 1; + + } + } + + else { + + _parsed_state = GRF_PARSED_STATE::CRC_LOW; + _data_bytes_recv = 0; + _calc_crc = grf_format_crc(_calc_crc, _data_bytes_recv); + } + + _parsed_state = GRF_PARSED_STATE::CRC_LOW; + _data_bytes_recv = 0; + break; + } + + case GRF_PARSED_STATE::CRC_LOW: { + rx_field.crc[0] = _linebuf[index + 3 + rx_field.data_len]; + _parsed_state = GRF_PARSED_STATE::CRC_HIGH; + break; + } + + case GRF_PARSED_STATE::CRC_HIGH: { + rx_field.crc[1] = _linebuf[index + 4 + rx_field.data_len]; + uint16_t recv_crc = (rx_field.crc[1] << 8) | rx_field.crc[0]; + + // Check the received crc bytes from the grf against our own CRC calcuation + // If it matches, we can check if sensor ready + // Only if crc match is valid and sensor ready (transmitting distance data) do we flag _init_complete + if (recv_crc == _calc_crc) { + _crc_valid = true; + _parsed_state = GRF_PARSED_STATE::START; + _calc_crc = 0; + restart_flag = true; + break; + + } else { + + _crc_valid = false; + _parsed_state = GRF_PARSED_STATE::START; + _calc_crc = 0; + restart_flag = true; + perf_count(_comms_errors); + PX4_DEBUG("CRC mismatch: %d", _sensor_state); + break; + } + } + } + } + + index++; + } + + // If we parsed successfully, remove the parsed part from the buffer if it is still large enough + if (_crc_valid && index + payload_length < _linebuf_size) { + unsigned next_after_index = index + payload_length; + memmove(&_linebuf[0], &_linebuf[next_after_index], _linebuf_size - next_after_index); + _linebuf_size -= next_after_index; + } + + // The buffer is filled. Either we can't keep up with the stream and/or it contains only invalid data. Reset to try again. + if ((unsigned)_linebuf_size >= sizeof(_linebuf)) { + _linebuf_size = 0; + perf_count(_comms_errors); + } +} + +void GRFLaserSerial::grf_send(uint8_t msg_id, bool write, int32_t *data, uint8_t data_len) +{ + uint16_t crc_val = 0; + uint8_t packet_buff[GRF_MAX_PAYLOAD]; + uint8_t data_inc = 4; + int ret = 0; + uint8_t packet_len = 0; + // Include payload ID byte in payload len + uint16_t flags = (data_len + 1) << 6; + + // If writing to the device, lsb is 1 + if (write) { + flags |= 0x01; + } + + else { + flags |= 0x0; + } + + uint8_t flags_lo = flags & 0xFF; + uint8_t flags_hi = (flags >> 8) & 0xFF; + + // Add packet bytes to format into crc based on CRC-16-CCITT 0x1021/XMODEM + crc_val = grf_format_crc(crc_val, _start_of_frame); + crc_val = grf_format_crc(crc_val, flags_lo); + crc_val = grf_format_crc(crc_val, flags_hi); + crc_val = grf_format_crc(crc_val, msg_id); + + // Write the packet header contents + payload msg ID to the output buffer + packet_buff[0] = _start_of_frame; + packet_buff[1] = flags_lo; + packet_buff[2] = flags_hi; + packet_buff[3] = msg_id; + + if (msg_id == GRF_DISTANCE_OUTPUT) { + uint8_t data_convert = data[0] & 0x00FF; + // write data bytes to the output buffer + packet_buff[data_inc] = data_convert; + // Add data bytes to crc add function + crc_val = grf_format_crc(crc_val, data_convert); + data_inc = data_inc + 1; + data_convert = data[0] >> 8; + packet_buff[data_inc] = data_convert; + crc_val = grf_format_crc(crc_val, data_convert); + data_inc = data_inc + 1; + packet_buff[data_inc] = 0; + crc_val = grf_format_crc(crc_val, packet_buff[data_inc]); + data_inc = data_inc + 1; + packet_buff[data_inc] = 0; + crc_val = grf_format_crc(crc_val, packet_buff[data_inc]); + data_inc = data_inc + 1; + } + + else if (msg_id == GRF_STREAM) { + packet_buff[data_inc] = data[0]; + //pad zeroes + crc_val = grf_format_crc(crc_val, data[0]); + data_inc = data_inc + 1; + packet_buff[data_inc] = 0; + crc_val = grf_format_crc(crc_val, packet_buff[data_inc]); + data_inc = data_inc + 1; + packet_buff[data_inc] = 0; + crc_val = grf_format_crc(crc_val, packet_buff[data_inc]); + data_inc = data_inc + 1; + packet_buff[data_inc] = 0; + crc_val = grf_format_crc(crc_val, packet_buff[data_inc]); + data_inc = data_inc + 1; + } + + else if (msg_id == GRF_UPDATE_RATE) { + // Update Rate + packet_buff[data_inc] = (uint8_t)data[0]; + // Add data bytes to crc add function + crc_val = grf_format_crc(crc_val, data[0]); + data_inc = data_inc + 1; + } + + else { + // Product Name + PX4_DEBUG("DEBUG: Product name"); + } + + uint8_t crc_lo = crc_val & 0xFF; + uint8_t crc_hi = (crc_val >> 8) & 0xFF; + + packet_buff[data_inc] = crc_lo; + data_inc = data_inc + 1; + packet_buff[data_inc] = crc_hi; + + size_t len = sizeof(packet_buff[0]) * (data_inc + 1); + packet_len = (uint8_t)len; + + // DEBUG + for (uint8_t i = 0; i < packet_len; ++i) { + PX4_DEBUG("DEBUG: Send byte: %d", packet_buff[i]); + } + + ret = ::write(_fd, packet_buff, packet_len); + + if (ret != packet_len) { + perf_count(_comms_errors); + PX4_ERR("serial write fail %d", ret); + // Flush data written, not transmitted + tcflush(_fd, TCOFLUSH); + } +} + +void GRFLaserSerial::grf_process_replies() +{ + float distance_m = -1.0f; + hrt_abstime now = hrt_absolute_time(); + + switch (rx_field.msg_id) { + case GRF_DISTANCE_DATA_CM: { + const float raw_distance = (rx_field.data[0] << 0) | (rx_field.data[1] << 8) | (rx_field.data[2] << 16); + distance_m = raw_distance * GRF_SCALE_FACTOR; + _px4_rangefinder.update(now, distance_m); + break; + } + + default: + // add case for future use + break; + } +} + +uint16_t GRFLaserSerial::grf_format_crc(uint16_t crc, uint8_t data_val) +{ + uint32_t i; + const uint16_t poly = 0x1021u; + crc ^= (uint16_t)((uint16_t) data_val << 8u); + + for (i = 0; i < 8; i++) { + if (crc & (1u << 15u)) { + crc = (uint16_t)((crc << 1u) ^ poly); + + } else { + crc = (uint16_t)(crc << 1u); + } + } + + return crc; +} diff --git a/src/drivers/distance_sensor/lightware_grf_serial/lightware_grf_serial.hpp b/src/drivers/distance_sensor/lightware_grf_serial/lightware_grf_serial.hpp new file mode 100755 index 0000000000..17c73c4d54 --- /dev/null +++ b/src/drivers/distance_sensor/lightware_grf_serial/lightware_grf_serial.hpp @@ -0,0 +1,134 @@ +/**************************************************************************** + * + * Copyright (c) 2026 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file lightware_grf_serial.hpp + * @author Aaron Porter + * + * Serial Protocol driver for the Lightware GRF rangefinder series + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "grf_commands.h" + +enum GRF_SERIAL_STATE { + STATE_UNINIT = 0, + STATE_ACK_PRODUCT_NAME = 1, + STATE_ACK_UPDATE_RATE = 2, + STATE_ACK_DISTANCE_OUTPUT = 3, + STATE_SEND_STREAM = 4, +}; + +enum GRF_PARSED_STATE { + START = 0, + FLG_LOW, + FLG_HIGH, + ID, + DATA, + CRC_LOW, + CRC_HIGH +}; + +enum MODEL { + Disable = 0, + GRF250 = 1, + GRF500 = 2 +}; + +using namespace time_literals; +class GRFLaserSerial : public px4::ScheduledWorkItem +{ +public: + GRFLaserSerial(const char *port, uint8_t rotation = distance_sensor_s::ROTATION_DOWNWARD_FACING); + ~GRFLaserSerial() override; + + int init(); + void print_info(); + void grf_get_and_handle_request(const int payload_length, const GRF_SERIAL_CMD msg_id); + void grf_send(uint8_t msg_id, bool r_w, int32_t *data, uint8_t data_len); + uint16_t grf_format_crc(uint16_t crc, uint8_t data_value); + void grf_process_replies(); + +private: + + distance_sensor_s _distance{}; + static constexpr uint64_t GRF_MEAS_TIMEOUT{100_ms}; + static constexpr float GRF_SCALE_FACTOR = 0.1f; + + void start(); + void stop(); + void Run() override; + int measure(); + int collect(); + bool _crc_valid{false}; + + PX4Rangefinder _px4_rangefinder; + char _port[20] {}; + int _interval{200000}; + bool _collect_phase{false}; + int _fd{-1}; + uint8_t _linebuf[GRF_MAX_PAYLOAD] {}; + int _linebuf_size{0}; + + // GRF uses a binary protocol to include header,flags + // message ID, payload, and checksum + GRF_SERIAL_STATE _sensor_state{STATE_UNINIT}; + int _baud_rate{0}; + int32_t _product_name[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + int32_t _stream_data{0}; + int32_t _update_rate{0}; + int32_t _model_type{0}; + int32_t _data_output{0}; + const uint8_t _start_of_frame{0xAA}; + uint16_t _data_bytes_recv{0}; + uint8_t _parsed_state{0}; + uint16_t _calc_crc{0}; + + // end of GRF data members + + hrt_abstime _last_received_time{0}; + perf_counter_t _sample_perf; + perf_counter_t _comms_errors; +}; diff --git a/src/drivers/distance_sensor/lightware_grf_serial/lightware_grf_serial_main.cpp b/src/drivers/distance_sensor/lightware_grf_serial/lightware_grf_serial_main.cpp new file mode 100755 index 0000000000..08e912e2c8 --- /dev/null +++ b/src/drivers/distance_sensor/lightware_grf_serial/lightware_grf_serial_main.cpp @@ -0,0 +1,167 @@ +/**************************************************************************** + * + * Copyright (c) 2026 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include "lightware_grf_serial.hpp" + +#include +#include + +namespace lightware_grf +{ + +GRFLaserSerial *g_dev{nullptr}; + +static int start(const char *port) +{ + if (g_dev != nullptr) { + PX4_WARN("already started"); + return -1; + } + + if (port == nullptr) { + PX4_ERR("no device specified"); + return -1; + } + + /* create the driver */ + g_dev = new GRFLaserSerial(port); + + if (g_dev == nullptr) { + return -1; + } + + if (g_dev->init() != PX4_OK) { + delete g_dev; + g_dev = nullptr; + return -1; + } + + return 0; +} + +static int stop() +{ + if (g_dev != nullptr) { + delete g_dev; + g_dev = nullptr; + + } else { + return -1; + } + + return 0; +} + +static int status() +{ + if (g_dev == nullptr) { + PX4_ERR("driver not running"); + return -1; + } + + g_dev->print_info(); + + return 0; +} + +static int usage() +{ + PRINT_MODULE_DESCRIPTION( + R"DESCR_STR( +### Description + +Serial bus driver for the Lightware GRF Laser rangefinder. + +### Configuration +https://docs.px4.io/main/en/sensor/grf_lidar + +### Parameters +https://docs.px4.io/main/en/advanced_config/parameter_reference#GRF_SENS_MODEL +https://docs.px4.io/main/en/advanced_config/parameter_reference#GRF_RATE_CFG +https://docs.px4.io/main/en/advanced_config/parameter_reference#SENS_EN_GRF_CFG + +### Examples + +Attempt to start driver on a specified serial device. +$ lightware_grf_serial start -d /dev/ttyS1 +Stop driver +$ lightware_grf_serial stop +)DESCR_STR"); + + PRINT_MODULE_USAGE_NAME("lightware_grf_serial", "driver"); + PRINT_MODULE_USAGE_SUBCATEGORY("distance_sensor"); + PRINT_MODULE_USAGE_COMMAND_DESCR("start", "Start driver"); + PRINT_MODULE_USAGE_PARAM_STRING('d', nullptr, nullptr, "Serial device", false); + PRINT_MODULE_USAGE_COMMAND_DESCR("stop", "Stop driver"); + return PX4_OK; +} + +} // namespace + +extern "C" __EXPORT int lightware_grf_serial_main(int argc, char *argv[]) +{ + const char *device_path = nullptr; + int ch; + int myoptind = 1; + const char *myoptarg = nullptr; + + while ((ch = px4_getopt(argc, argv, "d:", &myoptind, &myoptarg)) != EOF) { + switch (ch) { + case 'd': + device_path = myoptarg; + break; + + default: + lightware_grf::usage(); + return -1; + } + } + + if (myoptind >= argc) { + lightware_grf::usage(); + return -1; + } + + if (!strcmp(argv[myoptind], "start")) { + return lightware_grf::start(device_path); + + } else if (!strcmp(argv[myoptind], "stop")) { + return lightware_grf::stop(); + + } else if (!strcmp(argv[myoptind], "status")) { + return lightware_grf::status(); + } + + lightware_grf::usage(); + return -1; +} diff --git a/src/drivers/distance_sensor/lightware_grf_serial/module.yaml b/src/drivers/distance_sensor/lightware_grf_serial/module.yaml new file mode 100755 index 0000000000..7765f9802c --- /dev/null +++ b/src/drivers/distance_sensor/lightware_grf_serial/module.yaml @@ -0,0 +1,44 @@ +module_name: Lightware GRF Rangefinder (serial) +serial_config: + - command: lightware_grf_serial start -d ${SERIAL_DEV} + port_config_param: + name: SENS_EN_GRF_CFG + group: Sensors + num_instances: 1 + supports_networking: false + +parameters: + - group: Sensors + definitions: + GRF_RATE_CFG: + description: + short: Lightware GRF lidar update rate. + long: | + The Lightware GRF distance sensor can increase the update rate to enable greater resolution. + type: enum + values: + 1: 1 Hz + 2: 2 Hz + 3: 4 Hz + 4: 5 Hz + 5: 10 Hz + 6: 20 Hz + 7: 30 Hz + 8: 40 Hz + 9: 50 Hz + reboot_required: true + num_instances: 1 + default: 4 + GRF_SENS_MODEL: + description: + short: GRF Sensor model + long: | + GRF Sensor Model used to distinush between the GRF250 and GRF500 since both have different max distance range. + type: enum + values: + 0: disable + 1: GRF250 + 2: GRF500 + reboot_required: true + num_instances: 1 + default: 0 From 79bf7810d4fb2bb3f49aea32299554fe7deb57b8 Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Mon, 16 Feb 2026 21:41:55 +0000 Subject: [PATCH 63/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- .../en/advanced_config/parameter_reference.md | 63 +++ docs/en/middleware/dds_topics.md | 374 +++++++++--------- .../modules/modules_driver_distance_sensor.md | 43 ++ docs/en/sensor/grf_lidar.md | 9 +- 4 files changed, 298 insertions(+), 191 deletions(-) diff --git a/docs/en/advanced_config/parameter_reference.md b/docs/en/advanced_config/parameter_reference.md index b50fe34113..243536c8b5 100644 --- a/docs/en/advanced_config/parameter_reference.md +++ b/docs/en/advanced_config/parameter_reference.md @@ -33078,6 +33078,44 @@ Use SENS_MAG_SIDES instead | ------ | -------- | -------- | --------- | ------- | ---- | |   | | | | 63 | +### GRF_RATE_CFG (`INT32`) {#GRF_RATE_CFG} + +Lightware GRF lidar update rate. + +The Lightware GRF distance sensor can increase the update rate to enable greater resolution. + +**Values:** + +- `1`: 1 Hz +- `2`: 2 Hz +- `3`: 4 Hz +- `4`: 5 Hz +- `5`: 10 Hz +- `6`: 20 Hz +- `7`: 30 Hz +- `8`: 40 Hz +- `9`: 50 Hz + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ------- | ---- | +| ✓ | | | | 4 | + +### GRF_SENS_MODEL (`INT32`) {#GRF_SENS_MODEL} + +GRF Sensor model. + +GRF Sensor Model used to distinush between the GRF250 and GRF500 since both have different max distance range. + +**Values:** + +- `0`: disable +- `1`: GRF250 +- `2`: GRF500 + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ------- | ---- | +| ✓ | | | | 0 | + ### ILABS_MODE (`INT32`) {#ILABS_MODE} InertialLabs INS sensor mode configuration. @@ -34286,6 +34324,31 @@ Enable simulated GPS sinstance. | ------- | -------- | -------- | --------- | ------- | ---- | | ✓ | 0 | 1 | | 0 | +### SENS_EN_GRF_CFG (`INT32`) {#SENS_EN_GRF_CFG} + +Serial Configuration for Lightware GRF Rangefinder (serial). + +Configure on which serial port to run Lightware GRF Rangefinder (serial). + +**Values:** + +- `0`: Disabled +- `6`: UART 6 +- `101`: TELEM 1 +- `102`: TELEM 2 +- `103`: TELEM 3 +- `104`: TELEM/SERIAL 4 +- `201`: GPS 1 +- `202`: GPS 2 +- `203`: GPS 3 +- `300`: Radio Controller +- `301`: Wifi Port +- `401`: EXT2 + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ------- | ---- | +| ✓ | | | | 0 | + ### SENS_EN_INA220 (`INT32`) {#SENS_EN_INA220} Enable INA220 Power Monitor. diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index ec937cc543..e5cdcc3c57 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [EscReport](../msg_docs/EscReport.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) - [GpioConfig](../msg_docs/GpioConfig.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [AdcReport](../msg_docs/AdcReport.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [Event](../msg_docs/Event.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) - [ActionRequest](../msg_docs/ActionRequest.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [Vtx](../msg_docs/Vtx.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [LedControl](../msg_docs/LedControl.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [InputRc](../msg_docs/InputRc.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [Ping](../msg_docs/Ping.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [EventV0](../msg_docs/EventV0.md) +- [Gripper](../msg_docs/Gripper.md) - [NeuralControl](../msg_docs/NeuralControl.md) -- [UlogStream](../msg_docs/UlogStream.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [Rpm](../msg_docs/Rpm.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [EscReport](../msg_docs/EscReport.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [Mission](../msg_docs/Mission.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) - [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) - [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [Event](../msg_docs/Event.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [InputRc](../msg_docs/InputRc.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [Ping](../msg_docs/Ping.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [EventV0](../msg_docs/EventV0.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [Rpm](../msg_docs/Rpm.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [Gripper](../msg_docs/Gripper.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) - [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [Vtx](../msg_docs/Vtx.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [LedControl](../msg_docs/LedControl.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [UlogStream](../msg_docs/UlogStream.md) - [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) - [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [Mission](../msg_docs/Mission.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) ::: diff --git a/docs/en/modules/modules_driver_distance_sensor.md b/docs/en/modules/modules_driver_distance_sensor.md index 4e78a7e7ff..9b82e6fc4a 100644 --- a/docs/en/modules/modules_driver_distance_sensor.md +++ b/docs/en/modules/modules_driver_distance_sensor.md @@ -98,6 +98,49 @@ leddar_one [arguments...] stop Stop driver ``` +## lightware_grf_serial + +Source: [drivers/distance_sensor/lightware_grf_serial](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/distance_sensor/lightware_grf_serial) + +### Description + +Serial bus driver for the Lightware GRF Laser rangefinder. + +### Configuration + +https://docs.px4.io/main/en/sensor/grf_lidar + +### Parameters + +https://docs.px4.io/main/en/advanced_config/parameter_reference#GRF_SENS_MODEL +https://docs.px4.io/main/en/advanced_config/parameter_reference#GRF_RATE_CFG +https://docs.px4.io/main/en/advanced_config/parameter_reference#SENS_EN_GRF_CFG + +### Examples + +Attempt to start driver on a specified serial device. + +``` +lightware_grf_serial start -d /dev/ttyS1 +``` + +Stop driver + +``` +lightware_grf_serial stop +``` + +### Usage {#lightware_grf_serial_usage} + +``` +lightware_grf_serial [arguments...] + Commands: + start Start driver + -d Serial device + + stop Stop driver +``` + ## lightware_laser_i2c Source: [drivers/distance_sensor/lightware_laser_i2c](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/distance_sensor/lightware_laser_i2c) diff --git a/docs/en/sensor/grf_lidar.md b/docs/en/sensor/grf_lidar.md index efbc4e2718..836596e026 100644 --- a/docs/en/sensor/grf_lidar.md +++ b/docs/en/sensor/grf_lidar.md @@ -52,11 +52,11 @@ You will need to configure PX4 to indicate the serial port to which the sensor i The [parameters to change](../advanced_config/parameters.md) are listed in the table. -| Parameter | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | +| Parameter | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [SENS_EN_GRF_CFG](../advanced_config/parameter_reference.md#SENS_EN_GRF_CFG) | Set to the serial port the sensor is connected to. | -| [GRF_UPDATE_CFG](../advanced_config/parameter_reference.md#GRF_UPDATE_CFG) | Set the update rate. | -| [GRF_SENS_MODEL](../advanced_config/parameter_reference.md#GRF_SENS_MODEL) | Set the update rate. | +| [GRF_UPDATE_CFG](../advanced_config/parameter_reference.md#GRF_UPDATE_CFG) | Set the update rate. | +| [GRF_SENS_MODEL](../advanced_config/parameter_reference.md#GRF_SENS_MODEL) | Set the update rate. | ## Testing @@ -65,4 +65,5 @@ You can confirm that the sensor is correctly configured by connecting QGroundCon Moving the sensor around at various distances from a surface will have the `current_distance` value change. ## Troubleshooting + If you are having problems with connecting to the sensor you may need to unassign a the default serial port. [Unassign Default Serial Port](../peripherals/serial_configuration.md) From a06f062bf7dadba551697ec0e6020344e0a5eb44 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 16 Feb 2026 21:04:06 -0800 Subject: [PATCH 64/83] nuttx: add nuttx_context dependency to jlink-nuttx build (#26505) --- platforms/nuttx/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/platforms/nuttx/CMakeLists.txt b/platforms/nuttx/CMakeLists.txt index 49e44b12ae..304273d05f 100644 --- a/platforms/nuttx/CMakeLists.txt +++ b/platforms/nuttx/CMakeLists.txt @@ -598,6 +598,7 @@ if(NOT NUTTX_DIR MATCHES "external") add_custom_target(jlink-nuttx ALL DEPENDS ${NUTTX_DIR}/tools/jlink-nuttx.so ) + add_dependencies(jlink-nuttx nuttx_context) # JLINK_RTOS_PATH used by launch.json.in set(JLINK_RTOS_PATH ${NUTTX_DIR}/tools/jlink-nuttx.so) From fd4b95879014e14cab2d5ef9922ea2478f438465 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 16 Feb 2026 21:04:18 -0800 Subject: [PATCH 65/83] ci: add geninfo negative error ignore to tests_coverage (#26506) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fb97276b52..df7c54f412 100644 --- a/Makefile +++ b/Makefile @@ -412,7 +412,7 @@ tests: $(call cmake-build,px4_sitl_test) # work around lcov bug #316; remove once lcov is fixed (see https://github.com/linux-test-project/lcov/issues/316) -LCOBUG = --ignore-errors mismatch +LCOBUG = --ignore-errors mismatch,negative tests_coverage: @$(MAKE) clean @$(MAKE) --no-print-directory tests PX4_CMAKE_BUILD_TYPE=Coverage From 11007dc8938dc26a6e12df7599dc363a5d039254 Mon Sep 17 00:00:00 2001 From: Silvan Fuhrer Date: Tue, 17 Feb 2026 09:26:38 +0100 Subject: [PATCH 66/83] FW auto launch: Add option to lock selected surfaces before/during launch (#25799) * FWModeManager: add option to set flag for disabling actuators during launch Signed-off-by: Silvan * Allocation: add option to each control surface to be locked for launch Signed-off-by: Silvan * FW rate control: reset integral while control surfaces are locked Signed-off-by: Silvan --------- Signed-off-by: Silvan Co-authored-by: mahima-yoga --- docs/en/flight_modes_fw/takeoff.md | 5 +++- msg/LaunchDetectionStatus.msg | 2 ++ .../ActuatorEffectivenessControlSurfaces.cpp | 14 +++++++++++ .../ActuatorEffectivenessControlSurfaces.hpp | 3 +++ .../ActuatorEffectivenessFixedWing.cpp | 12 ++++++++++ .../ActuatorEffectivenessFixedWing.hpp | 2 ++ src/modules/control_allocator/module.yaml | 24 ++++++++++++++++++- .../fw_mode_manager/FixedWingModeManager.cpp | 10 ++++++++ .../fw_mode_manager/FixedWingModeManager.hpp | 8 ++++++- .../fw_mode_manager/fw_mode_manager_params.c | 15 ++++++++++++ .../fw_rate_control/FixedwingRateControl.cpp | 12 +++++++++- .../fw_rate_control/FixedwingRateControl.hpp | 2 ++ 12 files changed, 105 insertions(+), 4 deletions(-) diff --git a/docs/en/flight_modes_fw/takeoff.md b/docs/en/flight_modes_fw/takeoff.md index 265c09f4b4..f85d7e77e6 100644 --- a/docs/en/flight_modes_fw/takeoff.md +++ b/docs/en/flight_modes_fw/takeoff.md @@ -85,6 +85,7 @@ The vehicle always respects normal FW max/min throttle settings during takeoff ( In _catapult/hand-launch mode_ the vehicle waits to detect launch (based on acceleration trigger). On launch it enables the motor(s) and climbs with the maximum climb rate [FW_T_CLMB_MAX](#FW_T_CLMB_MAX) while keeping the pitch setpoint above [FW_TKO_PITCH_MIN](#FW_TKO_PITCH_MIN). Once it reaches [MIS_TAKEOFF_ALT](#MIS_TAKEOFF_ALT) it will automatically switch to [Hold mode](../flight_modes_fw/hold.md) and loiter. +It is possible to delay the activation of the motors and control surfaces separately, see parameters [FW_LAUN_MOT_DEL](#FW_LAUN_MOT_DEL), [FW_LAUN_CS_LK_DY](#FW_LAUN_CS_LK_DY) and [CA_CS_LAUN_LK](#CA_CS_LAUN_LK). The later is also exposed in the actuator configuration page under the advanced view. All RC stick movement is ignored during the full takeoff sequence. @@ -104,7 +105,9 @@ The _launch detector_ is affected by the following parameters: | [FW_LAUN_DETCN_ON](../advanced_config/parameter_reference.md#FW_LAUN_DETCN_ON) | Enable automatic launch detection. If disabled motors spin up on arming already | | [FW_LAUN_AC_THLD](../advanced_config/parameter_reference.md#FW_LAUN_AC_THLD) | Acceleration threshold (acceleration in body-forward direction must be above this value) | | [FW_LAUN_AC_T](../advanced_config/parameter_reference.md#FW_LAUN_AC_T) | Trigger time (acceleration must be above threshold for this amount of seconds) | -| [FW_LAUN_MOT_DEL](../advanced_config/parameter_reference.md#FW_LAUN_MOT_DEL) | Delay from launch detection to motor spin up | +| [FW_LAUN_MOT_DEL](../advanced_config/parameter_reference.md#FW_LAUN_MOT_DEL) | Delay from launch detection to motor spin up +| [FW_LAUN_CS_LK_DY](../advanced_config/parameter_reference.md#FW_LAUN_CS_LK_DY) | Delay from launch detection to unlocking the control surfaces +| [CA_CS_LAUN_LK](../advanced_config/parameter_reference.md#CA_CS_LAUN_LK) | Bitmask to select which control surfaces are to be locked during launch | ## Runway Takeoff {#runway_launch} diff --git a/msg/LaunchDetectionStatus.msg b/msg/LaunchDetectionStatus.msg index 6917f4bc24..5693e5a822 100644 --- a/msg/LaunchDetectionStatus.msg +++ b/msg/LaunchDetectionStatus.msg @@ -7,3 +7,5 @@ uint8 STATE_LAUNCH_DETECTED_DISABLED_MOTOR = 1 # launch detected, but keep moto uint8 STATE_FLYING = 2 # launch detected, use normal takeoff/flying configuration uint8 launch_detection_state + +bool selected_control_surface_disarmed # [-] flag indicating whether selected actuators should kept disarmed (have to be configured in control allocation) diff --git a/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp b/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp index 8a033770ce..1a781035a4 100644 --- a/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp +++ b/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp @@ -63,6 +63,7 @@ ActuatorEffectivenessControlSurfaces::ActuatorEffectivenessControlSurfaces(Modul _spoilers_setpoint_with_slewrate.setSlewRate(kSpoilersSlewRate); _count_handle = param_find("CA_SV_CS_COUNT"); + _param_handle_ca_cs_laun_lk = param_find("CA_CS_LAUN_LK"); updateParams(); } @@ -112,6 +113,8 @@ void ActuatorEffectivenessControlSurfaces::updateParams() } } + param_get(_param_handle_ca_cs_laun_lk, &_param_ca_cs_laun_lk); + for (int i = 0; i < _count; i++) { param_get(_param_handles[i].type, (int32_t *)&_params[i].type); @@ -234,3 +237,14 @@ void ActuatorEffectivenessControlSurfaces::applySpoilers(float spoilers_control, actuator_sp(i + first_actuator_idx) += _spoilers_setpoint_with_slewrate.getState() * _params[i].scale_spoiler; } } + +void ActuatorEffectivenessControlSurfaces::applyLaunchLock(int first_actuator_idx, + ActuatorVector &actuator_sp) +{ + for (int i = 0; i < _count; ++i) { + + if (_param_ca_cs_laun_lk & (1u << i)) { + actuator_sp(i + first_actuator_idx) = NAN; + } + } +} diff --git a/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.hpp b/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.hpp index 8a77a08080..7da030fc18 100644 --- a/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.hpp +++ b/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.hpp @@ -90,6 +90,7 @@ public: void applyFlaps(float flaps_control, int first_actuator_idx, float dt, ActuatorVector &actuator_sp); void applySpoilers(float spoilers_control, int first_actuator_idx, float dt, ActuatorVector &actuator_sp); + void applyLaunchLock(int first_actuator_idx, ActuatorVector &actuator_sp); private: void updateParams() override; @@ -104,9 +105,11 @@ private: }; ParamHandles _param_handles[MAX_COUNT]; param_t _count_handle; + param_t _param_handle_ca_cs_laun_lk; Params _params[MAX_COUNT] {}; int32_t _count{0}; + int32_t _param_ca_cs_laun_lk{0}; SlewRate _flaps_setpoint_with_slewrate; SlewRate _spoilers_setpoint_with_slewrate; diff --git a/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessFixedWing.cpp b/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessFixedWing.cpp index e91783cf80..9a3c48e560 100644 --- a/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessFixedWing.cpp +++ b/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessFixedWing.cpp @@ -65,6 +65,18 @@ void ActuatorEffectivenessFixedWing::updateSetpoint(const matrix::Vector +#include class ActuatorEffectivenessFixedWing : public ModuleParams, public ActuatorEffectiveness { @@ -60,6 +61,7 @@ private: uORB::Subscription _flaps_setpoint_sub{ORB_ID(flaps_setpoint)}; uORB::Subscription _spoilers_setpoint_sub{ORB_ID(spoilers_setpoint)}; + uORB::Subscription _launch_detection_status_sub{ORB_ID(launch_detection_status)}; int _first_control_surface_idx{0}; ///< applies to matrix 1 diff --git a/src/modules/control_allocator/module.yaml b/src/modules/control_allocator/module.yaml index 1790484347..93e8c6ddc4 100644 --- a/src/modules/control_allocator/module.yaml +++ b/src/modules/control_allocator/module.yaml @@ -356,6 +356,22 @@ parameters: instance_start: 0 default: 0 + CA_CS_LAUN_LK: + description: + short: Control surface launch lock enabled + long: If actuator launch lock is enabled, this surface is kept at the disarmed value. + type: bitmask + bit: + 0: Control Surface 1 + 1: Control Surface 2 + 2: Control Surface 3 + 3: Control Surface 4 + 4: Control Surface 5 + 5: Control Surface 6 + 6: Control Surface 7 + 7: Control Surface 8 + default: 0 + # Tilts CA_SV_TL_COUNT: description: @@ -659,7 +675,7 @@ mixer: rules: - select_identifier: 'servo-type' # restrict torque based on servo type - apply_identifiers: ['servo-torque-roll', 'servo-torque-pitch', 'servo-torque-yaw', 'servo-scale-flap', 'servo-scale-spoiler'] + apply_identifiers: ['servo-torque-roll', 'servo-torque-pitch', 'servo-torque-yaw', 'servo-scale-flap', 'servo-scale-spoiler', 'servo-launch-lock'] items: # Convention: horizontal surfaces: up=positive, vertical: right=positive, mixed: up=positive. # By default the scale is set to 1/N, where N is the amount of actuators with an effect on @@ -858,6 +874,12 @@ mixer: label: 'Spoiler Scale' advanced: true identifier: 'servo-scale-spoiler' + - name: 'CA_CS_LAUN_LK' + label: 'Launch Lock' + advanced: true + identifier: 'servo-launch-lock' + index_offset: 0 + show_as: 'bitset' 2: # Standard VTOL title: 'Standard VTOL' diff --git a/src/modules/fw_mode_manager/FixedWingModeManager.cpp b/src/modules/fw_mode_manager/FixedWingModeManager.cpp index 1f752608ca..710fffb4f8 100644 --- a/src/modules/fw_mode_manager/FixedWingModeManager.cpp +++ b/src/modules/fw_mode_manager/FixedWingModeManager.cpp @@ -1207,6 +1207,7 @@ FixedWingModeManager::control_auto_takeoff(const hrt_abstime &now, const float c _takeoff_init_position = global_position; _takeoff_ground_alt = _current_altitude; _launch_current_yaw = _yaw; + _time_launch_detected = now; } const Vector2f launch_local_position = _global_local_proj_ref.project(_takeoff_init_position(0), @@ -1282,6 +1283,9 @@ FixedWingModeManager::control_auto_takeoff(const hrt_abstime &now, const float c launch_detection_status_s launch_detection_status; launch_detection_status.timestamp = now; launch_detection_status.launch_detection_state = _launchDetector.getLaunchDetected(); + launch_detection_status.selected_control_surface_disarmed = + hrt_elapsed_time(&_time_launch_detected) < _param_fw_laun_cs_lk_dy.get() * 1_s + || _time_launch_detected == 0; _launch_detection_status_pub.publish(launch_detection_status); } @@ -1377,6 +1381,7 @@ FixedWingModeManager::control_auto_takeoff_no_nav(const hrt_abstime &now, const if (!_launch_detected && _launchDetector.getLaunchDetected() > launch_detection_status_s::STATE_WAITING_FOR_LAUNCH) { _launch_detected = true; _takeoff_ground_alt = _current_altitude; + _time_launch_detected = now; } /* Launch has been detected, hence we have to control the plane. */ @@ -1408,6 +1413,9 @@ FixedWingModeManager::control_auto_takeoff_no_nav(const hrt_abstime &now, const launch_detection_status_s launch_detection_status; launch_detection_status.timestamp = now; launch_detection_status.launch_detection_state = _launchDetector.getLaunchDetected(); + launch_detection_status.selected_control_surface_disarmed = + hrt_elapsed_time(&_time_launch_detected) < _param_fw_laun_cs_lk_dy.get() * 1_s + || _time_launch_detected == 0; _launch_detection_status_pub.publish(launch_detection_status); } @@ -2312,6 +2320,8 @@ FixedWingModeManager::reset_takeoff_state() _launch_detected = false; + _time_launch_detected = 0; + _takeoff_ground_alt = _current_altitude; } diff --git a/src/modules/fw_mode_manager/FixedWingModeManager.hpp b/src/modules/fw_mode_manager/FixedWingModeManager.hpp index e026f8ce26..2a43968ffb 100644 --- a/src/modules/fw_mode_manager/FixedWingModeManager.hpp +++ b/src/modules/fw_mode_manager/FixedWingModeManager.hpp @@ -298,6 +298,9 @@ private: // true if a launch, specifically using the launch detector, has been detected bool _launch_detected{false}; + // [us] time stamp of (runway/catapult) launch detection + hrt_abstime _time_launch_detected{0}; + // [deg] global position of the vehicle at the time launch is detected (using launch detector) or takeoff is started (runway) Vector2d _takeoff_init_position{0, 0}; @@ -865,6 +868,10 @@ private: (ParamFloat) _param_nav_gpsf_r, (ParamFloat) _param_t_spdweight, + // Launch detection parameters + (ParamBool) _param_fw_laun_detcn_on, + (ParamFloat) _param_fw_laun_cs_lk_dy, + // external parameters (ParamBool) _param_fw_use_airspd, (ParamFloat) _param_nav_loiter_rad, @@ -881,7 +888,6 @@ private: (ParamInt) _param_fw_lnd_abort, (ParamFloat) _param_fw_tko_airspd, (ParamFloat) _param_rwto_psp, - (ParamBool) _param_fw_laun_detcn_on, (ParamFloat) _param_fw_airspd_max, (ParamFloat) _param_fw_airspd_min, (ParamFloat) _param_fw_airspd_trim, diff --git a/src/modules/fw_mode_manager/fw_mode_manager_params.c b/src/modules/fw_mode_manager/fw_mode_manager_params.c index 3a2edb6052..0d3cdf292c 100644 --- a/src/modules/fw_mode_manager/fw_mode_manager_params.c +++ b/src/modules/fw_mode_manager/fw_mode_manager_params.c @@ -580,6 +580,21 @@ PARAM_DEFINE_INT32(FW_LND_ABORT, 3); */ PARAM_DEFINE_INT32(FW_LAUN_DETCN_ON, 0); +/** + * Control surface launch delay + * + * Locks control surfaces during pre-launch (armed) and until this time since launch has passed. + * Only affects control surfaces that have corresponding flag set, and not active for runway takeoff. + * Set to 0 to disable any surface locking after arming. + * + * @unit s + * @min 0.0 + * @decimal 1 + * @increment 0.1 + * @group FW Auto Takeoff + */ +PARAM_DEFINE_FLOAT(FW_LAUN_CS_LK_DY, 0.f); + /** * Flaps setting during take-off * diff --git a/src/modules/fw_rate_control/FixedwingRateControl.cpp b/src/modules/fw_rate_control/FixedwingRateControl.cpp index 993d68bdd0..69631979a5 100644 --- a/src/modules/fw_rate_control/FixedwingRateControl.cpp +++ b/src/modules/fw_rate_control/FixedwingRateControl.cpp @@ -287,8 +287,18 @@ void FixedwingRateControl::Run() _rate_control.resetIntegral(); } + launch_detection_status_s launch_detection_status{}; + _launch_detection_status_sub.copy(&launch_detection_status); + + bool control_surfaces_locked = false; + + if (hrt_elapsed_time(&launch_detection_status.timestamp) < 100_ms + && launch_detection_status.selected_control_surface_disarmed) { + control_surfaces_locked = true; + } + // Reset integrators if the aircraft is on ground or not in a state where the fw attitude controller is run - if (_landed || !_in_fw_or_transition_wo_tailsitter_transition) { + if (_landed || !_in_fw_or_transition_wo_tailsitter_transition || control_surfaces_locked) { _gain_compression.reset(); _rate_control.resetIntegral(); diff --git a/src/modules/fw_rate_control/FixedwingRateControl.hpp b/src/modules/fw_rate_control/FixedwingRateControl.hpp index 54cf23be00..1bdab1c135 100644 --- a/src/modules/fw_rate_control/FixedwingRateControl.hpp +++ b/src/modules/fw_rate_control/FixedwingRateControl.hpp @@ -70,6 +70,7 @@ #include #include #include +#include using matrix::Eulerf; using matrix::Quatf; @@ -110,6 +111,7 @@ private: uORB::Subscription _vehicle_land_detected_sub{ORB_ID(vehicle_land_detected)}; uORB::Subscription _vehicle_status_sub{ORB_ID(vehicle_status)}; uORB::Subscription _vehicle_rates_sub{ORB_ID(vehicle_angular_velocity)}; + uORB::Subscription _launch_detection_status_sub{ORB_ID(launch_detection_status)}; uORB::SubscriptionMultiArray _control_allocator_status_subs{ORB_ID::control_allocator_status}; From 4331f880f5fa96b71b6baec3bd4edde545b9facc Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Tue, 17 Feb 2026 08:37:39 +0000 Subject: [PATCH 67/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- .../en/advanced_config/parameter_reference.md | 33 ++ docs/en/flight_modes_fw/takeoff.md | 6 +- docs/en/middleware/dds_topics.md | 370 +++++++++--------- docs/en/msg_docs/LaunchDetectionStatus.md | 11 +- docs/public/config/failsafe/index.js | 2 +- docs/public/config/failsafe/index.wasm | Bin 96677 -> 96725 bytes docs/public/config/failsafe/parameters.json | 2 +- 7 files changed, 230 insertions(+), 194 deletions(-) diff --git a/docs/en/advanced_config/parameter_reference.md b/docs/en/advanced_config/parameter_reference.md index 243536c8b5..63b3f3d195 100644 --- a/docs/en/advanced_config/parameter_reference.md +++ b/docs/en/advanced_config/parameter_reference.md @@ -19596,6 +19596,18 @@ Launch is detected when acceleration in body forward direction is above FW_LAUN_ | ------ | -------- | -------- | --------- | ------- | ----- | |   | 0 | | 0.5 | 30.0 | m/s^2 | +### FW_LAUN_CS_LK_DY (`FLOAT`) {#FW_LAUN_CS_LK_DY} + +Control surface launch delay. + +Locks control surfaces during pre-launch (armed) and until this time since launch has passed. +Only affects control surfaces that have corresponding flag set, and not active for runway takeoff. +Set to 0 to disable any surface locking after arming. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0.0 | | 0.1 | 0. | s | + ### FW_LAUN_DETCN_ON (`INT32`) {#FW_LAUN_DETCN_ON} Fixed-wing launch detection. @@ -21325,6 +21337,27 @@ Some are generic, while others are specifically fit to a certain vehicle with a | ------ | -------- | -------- | --------- | ------- | ---- | |   | | | | 0 | +### CA_CS_LAUN_LK (`INT32`) {#CA_CS_LAUN_LK} + +Control surface launch lock enabled. + +If actuator launch lock is enabled, this surface is kept at the disarmed value. + +**Bitmask:** + +- `0`: Control Surface 1 +- `1`: Control Surface 2 +- `2`: Control Surface 3 +- `3`: Control Surface 4 +- `4`: Control Surface 5 +- `5`: Control Surface 6 +- `6`: Control Surface 7 +- `7`: Control Surface 8 + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 255 | | 0 | + ### CA_FAILURE_MODE (`INT32`) {#CA_FAILURE_MODE} Motor failure handling mode. diff --git a/docs/en/flight_modes_fw/takeoff.md b/docs/en/flight_modes_fw/takeoff.md index f85d7e77e6..b95d0806e1 100644 --- a/docs/en/flight_modes_fw/takeoff.md +++ b/docs/en/flight_modes_fw/takeoff.md @@ -105,9 +105,9 @@ The _launch detector_ is affected by the following parameters: | [FW_LAUN_DETCN_ON](../advanced_config/parameter_reference.md#FW_LAUN_DETCN_ON) | Enable automatic launch detection. If disabled motors spin up on arming already | | [FW_LAUN_AC_THLD](../advanced_config/parameter_reference.md#FW_LAUN_AC_THLD) | Acceleration threshold (acceleration in body-forward direction must be above this value) | | [FW_LAUN_AC_T](../advanced_config/parameter_reference.md#FW_LAUN_AC_T) | Trigger time (acceleration must be above threshold for this amount of seconds) | -| [FW_LAUN_MOT_DEL](../advanced_config/parameter_reference.md#FW_LAUN_MOT_DEL) | Delay from launch detection to motor spin up -| [FW_LAUN_CS_LK_DY](../advanced_config/parameter_reference.md#FW_LAUN_CS_LK_DY) | Delay from launch detection to unlocking the control surfaces -| [CA_CS_LAUN_LK](../advanced_config/parameter_reference.md#CA_CS_LAUN_LK) | Bitmask to select which control surfaces are to be locked during launch | +| [FW_LAUN_MOT_DEL](../advanced_config/parameter_reference.md#FW_LAUN_MOT_DEL) | Delay from launch detection to motor spin up | +| [FW_LAUN_CS_LK_DY](../advanced_config/parameter_reference.md#FW_LAUN_CS_LK_DY) | Delay from launch detection to unlocking the control surfaces | +| [CA_CS_LAUN_LK](../advanced_config/parameter_reference.md#CA_CS_LAUN_LK) | Bitmask to select which control surfaces are to be locked during launch | ## Runway Takeoff {#runway_launch} diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index e5cdcc3c57..612abca650 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [Event](../msg_docs/Event.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [Vtx](../msg_docs/Vtx.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [LedControl](../msg_docs/LedControl.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [InputRc](../msg_docs/InputRc.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) - [VehicleAirData](../msg_docs/VehicleAirData.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [Ping](../msg_docs/Ping.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [EventV0](../msg_docs/EventV0.md) -- [Gripper](../msg_docs/Gripper.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) - [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) - [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [EscReport](../msg_docs/EscReport.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) - [Rpm](../msg_docs/Rpm.md) - [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [Event](../msg_docs/Event.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [InputRc](../msg_docs/InputRc.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [Vtx](../msg_docs/Vtx.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) - [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [Mission](../msg_docs/Mission.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [Gripper](../msg_docs/Gripper.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [EventV0](../msg_docs/EventV0.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) - [AdcReport](../msg_docs/AdcReport.md) - [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [EscReport](../msg_docs/EscReport.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [Mission](../msg_docs/Mission.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [RtlStatus](../msg_docs/RtlStatus.md) - [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [SensorTemp](../msg_docs/SensorTemp.md) +- [Ping](../msg_docs/Ping.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [SensorSelection](../msg_docs/SensorSelection.md) - [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [LedControl](../msg_docs/LedControl.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) ::: diff --git a/docs/en/msg_docs/LaunchDetectionStatus.md b/docs/en/msg_docs/LaunchDetectionStatus.md index 49067ef229..4f18e03700 100644 --- a/docs/en/msg_docs/LaunchDetectionStatus.md +++ b/docs/en/msg_docs/LaunchDetectionStatus.md @@ -10,10 +10,11 @@ Status of the launch detection state machine (fixed-wing only). ## Fields -| Name | Type | Unit [Frame] | Range/Enum | Description | -| ---------------------- | -------- | ------------ | ---------- | -------------------------------------- | -| timestamp | `uint64` | | | time since system start (microseconds) | -| launch_detection_state | `uint8` | | | +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------------------- | -------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| launch_detection_state | `uint8` | | | +| selected_control_surface_disarmed | `bool` | | | flag indicating whether selected actuators should kept disarmed (have to be configured in control allocation) | ## Constants @@ -39,6 +40,8 @@ uint8 STATE_LAUNCH_DETECTED_DISABLED_MOTOR = 1 # launch detected, but keep moto uint8 STATE_FLYING = 2 # launch detected, use normal takeoff/flying configuration uint8 launch_detection_state + +bool selected_control_surface_disarmed # [-] flag indicating whether selected actuators should kept disarmed (have to be configured in control allocation) ``` ::: diff --git a/docs/public/config/failsafe/index.js b/docs/public/config/failsafe/index.js index 1d4ce8cd21..d013fbdc67 100644 --- a/docs/public/config/failsafe/index.js +++ b/docs/public/config/failsafe/index.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){}var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);var ret=fs.readFileSync(filename);return ret};readAsync=(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return new Promise((resolve,reject)=>{fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)reject(err);else resolve(binary?data.buffer:data)})})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=url=>{if(isFileURI(url)){return new Promise((reject,resolve)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response)}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}return fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");function findWasmBinary(){var f="index.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return readAsync(binaryFile).then(response=>new Uint8Array(response),()=>getBinarySync(binaryFile))}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["w"];updateMemoryViews();wasmTable=wasmExports["C"];addOnInit(wasmExports["x"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var __abort_js=()=>{abort("")};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this["fromWireType"](HEAPU8[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var getInheritedInstanceCount=()=>Object.keys(registeredInstances).length;var getLiveInheritedInstances=()=>{var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;var setDelayFunction=fn=>{delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}};var init_embind=()=>{Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle["delete"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function readPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistent public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{sig=sig.replace(/p/g,"i");var f=Module["dynCall_"+sig];return f(ptr,...args)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var dynCall=(sig,ptr,args=[])=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};var getDynCaller=(sig,ptr)=>(...args)=>dynCall(sig,ptr,args);var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function usesDestructorStack(argTypes){for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns||isAsync?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var validateThis=(this_,classType,humanName)=>{if(!(this_ instanceof Object)){throwBindingError(`${humanName} with invalid "this": ${this_}`)}if(!(this_ instanceof classType.registeredClass.constructor)){throwBindingError(`${humanName} incompatible with "this" of type ${this_.constructor.name}`)}if(!this_.$$.ptr){throwBindingError(`cannot call emscripten binding method ${humanName} on deleted object`)}return upcastPointer(this_.$$.ptr,this_.$$.ptrType.registeredClass,classType.registeredClass)};var __embind_register_class_property=(classType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext)=>{fieldName=readLatin1String(fieldName);getter=embind__requireFunction(getterSignature,getter);whenDependentTypesAreResolved([],[classType],classType=>{classType=classType[0];var humanName=`${classType.name}.${fieldName}`;var desc={get(){throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[getterReturnType,setterArgumentType])},enumerable:true,configurable:true};if(setter){desc.set=()=>throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[getterReturnType,setterArgumentType])}else{desc.set=v=>throwBindingError(humanName+" is a read-only property")}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],types=>{var getterReturnType=types[0];var desc={get(){var ptr=validateThis(this,classType,humanName+" getter");return getterReturnType["fromWireType"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+" setter");var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,argTypes=>{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer]:pointer=>HEAPU8[pointer];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,fromWireType:fromWireType,toWireType:toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var __embind_register_optional=(rawOptionalType,rawType)=>{__embind_register_emval(rawOptionalType)};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,fromWireType(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>HEAPU16[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>HEAPU32[pointer>>2]}registerType(rawType,{name:name,fromWireType:value=>{var length=HEAPU32[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var __emval_take_value=(type,arg)=>{type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](arg);return Emval.toHandle(v)};var _emscripten_date_now=()=>Date.now();var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var printCharBuffers=[null,[],[]];var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}};var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0};embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();var wasmImports={f:___cxa_throw,q:__abort_js,p:__embind_register_bigint,u:__embind_register_bool,l:__embind_register_class,h:__embind_register_class_constructor,e:__embind_register_class_function,a:__embind_register_class_property,t:__embind_register_emval,k:__embind_register_float,c:__embind_register_function,d:__embind_register_integer,b:__embind_register_memory_view,o:__embind_register_optional,j:__embind_register_std_string,g:__embind_register_std_wstring,m:__embind_register_void,s:__emscripten_memcpy_js,n:__emval_take_value,v:_emscripten_date_now,r:_emscripten_resize_heap,i:_fd_write};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["x"])();var _param_get=Module["_param_get"]=(a0,a1)=>(_param_get=Module["_param_get"]=wasmExports["y"])(a0,a1);var _param_set_used=Module["_param_set_used"]=a0=>(_param_set_used=Module["_param_set_used"]=wasmExports["z"])(a0);var __Znwm=Module["__Znwm"]=a0=>(__Znwm=Module["__Znwm"]=wasmExports["A"])(a0);var __ZdlPvm=Module["__ZdlPvm"]=(a0,a1)=>(__ZdlPvm=Module["__ZdlPvm"]=wasmExports["B"])(a0,a1);var _malloc=a0=>(_malloc=wasmExports["D"])(a0);var __ZNSt12length_errorD1Ev=Module["__ZNSt12length_errorD1Ev"]=a0=>(__ZNSt12length_errorD1Ev=Module["__ZNSt12length_errorD1Ev"]=wasmExports["E"])(a0);var ___cxa_allocate_exception=Module["___cxa_allocate_exception"]=a0=>(___cxa_allocate_exception=Module["___cxa_allocate_exception"]=wasmExports["F"])(a0);var __ZNSt20bad_array_new_lengthD1Ev=Module["__ZNSt20bad_array_new_lengthD1Ev"]=a0=>(__ZNSt20bad_array_new_lengthD1Ev=Module["__ZNSt20bad_array_new_lengthD1Ev"]=wasmExports["G"])(a0);var __ZNSt20bad_array_new_lengthC1Ev=Module["__ZNSt20bad_array_new_lengthC1Ev"]=a0=>(__ZNSt20bad_array_new_lengthC1Ev=Module["__ZNSt20bad_array_new_lengthC1Ev"]=wasmExports["H"])(a0);var __ZNSt12out_of_rangeD1Ev=Module["__ZNSt12out_of_rangeD1Ev"]=a0=>(__ZNSt12out_of_rangeD1Ev=Module["__ZNSt12out_of_rangeD1Ev"]=wasmExports["I"])(a0);var ___cxa_pure_virtual=Module["___cxa_pure_virtual"]=()=>(___cxa_pure_virtual=Module["___cxa_pure_virtual"]=wasmExports["J"])();var ___getTypeName=a0=>(___getTypeName=wasmExports["K"])(a0);var __ZNSt9exceptionD2Ev=Module["__ZNSt9exceptionD2Ev"]=a0=>(__ZNSt9exceptionD2Ev=Module["__ZNSt9exceptionD2Ev"]=wasmExports["L"])(a0);var _free=a0=>(_free=wasmExports["M"])(a0);var _getTempRet0=Module["_getTempRet0"]=()=>(_getTempRet0=Module["_getTempRet0"]=wasmExports["N"])();var _setTempRet0=Module["_setTempRet0"]=a0=>(_setTempRet0=Module["_setTempRet0"]=wasmExports["O"])(a0);var __ZSt15get_new_handlerv=Module["__ZSt15get_new_handlerv"]=()=>(__ZSt15get_new_handlerv=Module["__ZSt15get_new_handlerv"]=wasmExports["P"])();var __Znam=Module["__Znam"]=a0=>(__Znam=Module["__Znam"]=wasmExports["Q"])(a0);var __ZdlPv=Module["__ZdlPv"]=a0=>(__ZdlPv=Module["__ZdlPv"]=wasmExports["R"])(a0);var __ZdaPv=Module["__ZdaPv"]=a0=>(__ZdaPv=Module["__ZdaPv"]=wasmExports["S"])(a0);var __ZdaPvm=Module["__ZdaPvm"]=(a0,a1)=>(__ZdaPvm=Module["__ZdaPvm"]=wasmExports["T"])(a0,a1);var __ZnwmSt11align_val_t=Module["__ZnwmSt11align_val_t"]=(a0,a1)=>(__ZnwmSt11align_val_t=Module["__ZnwmSt11align_val_t"]=wasmExports["U"])(a0,a1);var __ZnamSt11align_val_t=Module["__ZnamSt11align_val_t"]=(a0,a1)=>(__ZnamSt11align_val_t=Module["__ZnamSt11align_val_t"]=wasmExports["V"])(a0,a1);var __ZdlPvSt11align_val_t=Module["__ZdlPvSt11align_val_t"]=(a0,a1)=>(__ZdlPvSt11align_val_t=Module["__ZdlPvSt11align_val_t"]=wasmExports["W"])(a0,a1);var __ZdlPvmSt11align_val_t=Module["__ZdlPvmSt11align_val_t"]=(a0,a1,a2)=>(__ZdlPvmSt11align_val_t=Module["__ZdlPvmSt11align_val_t"]=wasmExports["X"])(a0,a1,a2);var __ZdaPvSt11align_val_t=Module["__ZdaPvSt11align_val_t"]=(a0,a1)=>(__ZdaPvSt11align_val_t=Module["__ZdaPvSt11align_val_t"]=wasmExports["Y"])(a0,a1);var __ZdaPvmSt11align_val_t=Module["__ZdaPvmSt11align_val_t"]=(a0,a1,a2)=>(__ZdaPvmSt11align_val_t=Module["__ZdaPvmSt11align_val_t"]=wasmExports["Z"])(a0,a1,a2);var __ZSt14set_unexpectedPFvvE=Module["__ZSt14set_unexpectedPFvvE"]=a0=>(__ZSt14set_unexpectedPFvvE=Module["__ZSt14set_unexpectedPFvvE"]=wasmExports["_"])(a0);var __ZSt13set_terminatePFvvE=Module["__ZSt13set_terminatePFvvE"]=a0=>(__ZSt13set_terminatePFvvE=Module["__ZSt13set_terminatePFvvE"]=wasmExports["$"])(a0);var __ZSt15set_new_handlerPFvvE=Module["__ZSt15set_new_handlerPFvvE"]=a0=>(__ZSt15set_new_handlerPFvvE=Module["__ZSt15set_new_handlerPFvvE"]=wasmExports["aa"])(a0);var __ZSt14get_unexpectedv=Module["__ZSt14get_unexpectedv"]=()=>(__ZSt14get_unexpectedv=Module["__ZSt14get_unexpectedv"]=wasmExports["ba"])();var __ZSt10unexpectedv=Module["__ZSt10unexpectedv"]=()=>(__ZSt10unexpectedv=Module["__ZSt10unexpectedv"]=wasmExports["ca"])();var __ZSt13get_terminatev=Module["__ZSt13get_terminatev"]=()=>(__ZSt13get_terminatev=Module["__ZSt13get_terminatev"]=wasmExports["da"])();var __ZSt9terminatev=Module["__ZSt9terminatev"]=()=>(__ZSt9terminatev=Module["__ZSt9terminatev"]=wasmExports["ea"])();var ___cxa_current_primary_exception=Module["___cxa_current_primary_exception"]=()=>(___cxa_current_primary_exception=Module["___cxa_current_primary_exception"]=wasmExports["fa"])();var ___cxa_rethrow_primary_exception=Module["___cxa_rethrow_primary_exception"]=a0=>(___cxa_rethrow_primary_exception=Module["___cxa_rethrow_primary_exception"]=wasmExports["ga"])(a0);var ___cxa_uncaught_exception=Module["___cxa_uncaught_exception"]=()=>(___cxa_uncaught_exception=Module["___cxa_uncaught_exception"]=wasmExports["ha"])();var ___cxa_uncaught_exceptions=Module["___cxa_uncaught_exceptions"]=()=>(___cxa_uncaught_exceptions=Module["___cxa_uncaught_exceptions"]=wasmExports["ia"])();var ___cxa_free_exception=Module["___cxa_free_exception"]=a0=>(___cxa_free_exception=Module["___cxa_free_exception"]=wasmExports["ja"])(a0);var ___cxa_init_primary_exception=Module["___cxa_init_primary_exception"]=(a0,a1,a2)=>(___cxa_init_primary_exception=Module["___cxa_init_primary_exception"]=wasmExports["ka"])(a0,a1,a2);var ___cxa_deleted_virtual=Module["___cxa_deleted_virtual"]=()=>(___cxa_deleted_virtual=Module["___cxa_deleted_virtual"]=wasmExports["la"])();var ___dynamic_cast=Module["___dynamic_cast"]=(a0,a1,a2,a3)=>(___dynamic_cast=Module["___dynamic_cast"]=wasmExports["ma"])(a0,a1,a2,a3);var __ZNSt9type_infoD2Ev=Module["__ZNSt9type_infoD2Ev"]=a0=>(__ZNSt9type_infoD2Ev=Module["__ZNSt9type_infoD2Ev"]=wasmExports["na"])(a0);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["oa"])(a0);var __ZNSt9exceptionD0Ev=Module["__ZNSt9exceptionD0Ev"]=a0=>(__ZNSt9exceptionD0Ev=Module["__ZNSt9exceptionD0Ev"]=wasmExports["pa"])(a0);var __ZNSt9exceptionD1Ev=Module["__ZNSt9exceptionD1Ev"]=a0=>(__ZNSt9exceptionD1Ev=Module["__ZNSt9exceptionD1Ev"]=wasmExports["qa"])(a0);var __ZNKSt9exception4whatEv=Module["__ZNKSt9exception4whatEv"]=a0=>(__ZNKSt9exception4whatEv=Module["__ZNKSt9exception4whatEv"]=wasmExports["ra"])(a0);var __ZNSt13bad_exceptionD0Ev=Module["__ZNSt13bad_exceptionD0Ev"]=a0=>(__ZNSt13bad_exceptionD0Ev=Module["__ZNSt13bad_exceptionD0Ev"]=wasmExports["sa"])(a0);var __ZNSt13bad_exceptionD1Ev=Module["__ZNSt13bad_exceptionD1Ev"]=a0=>(__ZNSt13bad_exceptionD1Ev=Module["__ZNSt13bad_exceptionD1Ev"]=wasmExports["ta"])(a0);var __ZNKSt13bad_exception4whatEv=Module["__ZNKSt13bad_exception4whatEv"]=a0=>(__ZNKSt13bad_exception4whatEv=Module["__ZNKSt13bad_exception4whatEv"]=wasmExports["ua"])(a0);var __ZNSt9bad_allocC2Ev=Module["__ZNSt9bad_allocC2Ev"]=a0=>(__ZNSt9bad_allocC2Ev=Module["__ZNSt9bad_allocC2Ev"]=wasmExports["va"])(a0);var __ZNSt9bad_allocD0Ev=Module["__ZNSt9bad_allocD0Ev"]=a0=>(__ZNSt9bad_allocD0Ev=Module["__ZNSt9bad_allocD0Ev"]=wasmExports["wa"])(a0);var __ZNSt9bad_allocD1Ev=Module["__ZNSt9bad_allocD1Ev"]=a0=>(__ZNSt9bad_allocD1Ev=Module["__ZNSt9bad_allocD1Ev"]=wasmExports["xa"])(a0);var __ZNKSt9bad_alloc4whatEv=Module["__ZNKSt9bad_alloc4whatEv"]=a0=>(__ZNKSt9bad_alloc4whatEv=Module["__ZNKSt9bad_alloc4whatEv"]=wasmExports["ya"])(a0);var __ZNSt20bad_array_new_lengthC2Ev=Module["__ZNSt20bad_array_new_lengthC2Ev"]=a0=>(__ZNSt20bad_array_new_lengthC2Ev=Module["__ZNSt20bad_array_new_lengthC2Ev"]=wasmExports["za"])(a0);var __ZNSt20bad_array_new_lengthD0Ev=Module["__ZNSt20bad_array_new_lengthD0Ev"]=a0=>(__ZNSt20bad_array_new_lengthD0Ev=Module["__ZNSt20bad_array_new_lengthD0Ev"]=wasmExports["Aa"])(a0);var __ZNKSt20bad_array_new_length4whatEv=Module["__ZNKSt20bad_array_new_length4whatEv"]=a0=>(__ZNKSt20bad_array_new_length4whatEv=Module["__ZNKSt20bad_array_new_length4whatEv"]=wasmExports["Ba"])(a0);var __ZNSt13bad_exceptionD2Ev=Module["__ZNSt13bad_exceptionD2Ev"]=a0=>(__ZNSt13bad_exceptionD2Ev=Module["__ZNSt13bad_exceptionD2Ev"]=wasmExports["Ca"])(a0);var __ZNSt9bad_allocC1Ev=Module["__ZNSt9bad_allocC1Ev"]=a0=>(__ZNSt9bad_allocC1Ev=Module["__ZNSt9bad_allocC1Ev"]=wasmExports["Da"])(a0);var __ZNSt9bad_allocD2Ev=Module["__ZNSt9bad_allocD2Ev"]=a0=>(__ZNSt9bad_allocD2Ev=Module["__ZNSt9bad_allocD2Ev"]=wasmExports["Ea"])(a0);var __ZNSt20bad_array_new_lengthD2Ev=Module["__ZNSt20bad_array_new_lengthD2Ev"]=a0=>(__ZNSt20bad_array_new_lengthD2Ev=Module["__ZNSt20bad_array_new_lengthD2Ev"]=wasmExports["Fa"])(a0);var __ZNSt11logic_errorD2Ev=Module["__ZNSt11logic_errorD2Ev"]=a0=>(__ZNSt11logic_errorD2Ev=Module["__ZNSt11logic_errorD2Ev"]=wasmExports["Ga"])(a0);var __ZNSt11logic_errorD0Ev=Module["__ZNSt11logic_errorD0Ev"]=a0=>(__ZNSt11logic_errorD0Ev=Module["__ZNSt11logic_errorD0Ev"]=wasmExports["Ha"])(a0);var __ZNSt11logic_errorD1Ev=Module["__ZNSt11logic_errorD1Ev"]=a0=>(__ZNSt11logic_errorD1Ev=Module["__ZNSt11logic_errorD1Ev"]=wasmExports["Ia"])(a0);var __ZNKSt11logic_error4whatEv=Module["__ZNKSt11logic_error4whatEv"]=a0=>(__ZNKSt11logic_error4whatEv=Module["__ZNKSt11logic_error4whatEv"]=wasmExports["Ja"])(a0);var __ZNSt13runtime_errorD2Ev=Module["__ZNSt13runtime_errorD2Ev"]=a0=>(__ZNSt13runtime_errorD2Ev=Module["__ZNSt13runtime_errorD2Ev"]=wasmExports["Ka"])(a0);var __ZNSt13runtime_errorD0Ev=Module["__ZNSt13runtime_errorD0Ev"]=a0=>(__ZNSt13runtime_errorD0Ev=Module["__ZNSt13runtime_errorD0Ev"]=wasmExports["La"])(a0);var __ZNSt13runtime_errorD1Ev=Module["__ZNSt13runtime_errorD1Ev"]=a0=>(__ZNSt13runtime_errorD1Ev=Module["__ZNSt13runtime_errorD1Ev"]=wasmExports["Ma"])(a0);var __ZNKSt13runtime_error4whatEv=Module["__ZNKSt13runtime_error4whatEv"]=a0=>(__ZNKSt13runtime_error4whatEv=Module["__ZNKSt13runtime_error4whatEv"]=wasmExports["Na"])(a0);var __ZNSt12domain_errorD0Ev=Module["__ZNSt12domain_errorD0Ev"]=a0=>(__ZNSt12domain_errorD0Ev=Module["__ZNSt12domain_errorD0Ev"]=wasmExports["Oa"])(a0);var __ZNSt12domain_errorD1Ev=Module["__ZNSt12domain_errorD1Ev"]=a0=>(__ZNSt12domain_errorD1Ev=Module["__ZNSt12domain_errorD1Ev"]=wasmExports["Pa"])(a0);var __ZNSt16invalid_argumentD0Ev=Module["__ZNSt16invalid_argumentD0Ev"]=a0=>(__ZNSt16invalid_argumentD0Ev=Module["__ZNSt16invalid_argumentD0Ev"]=wasmExports["Qa"])(a0);var __ZNSt16invalid_argumentD1Ev=Module["__ZNSt16invalid_argumentD1Ev"]=a0=>(__ZNSt16invalid_argumentD1Ev=Module["__ZNSt16invalid_argumentD1Ev"]=wasmExports["Ra"])(a0);var __ZNSt12length_errorD0Ev=Module["__ZNSt12length_errorD0Ev"]=a0=>(__ZNSt12length_errorD0Ev=Module["__ZNSt12length_errorD0Ev"]=wasmExports["Sa"])(a0);var __ZNSt12out_of_rangeD0Ev=Module["__ZNSt12out_of_rangeD0Ev"]=a0=>(__ZNSt12out_of_rangeD0Ev=Module["__ZNSt12out_of_rangeD0Ev"]=wasmExports["Ta"])(a0);var __ZNSt11range_errorD0Ev=Module["__ZNSt11range_errorD0Ev"]=a0=>(__ZNSt11range_errorD0Ev=Module["__ZNSt11range_errorD0Ev"]=wasmExports["Ua"])(a0);var __ZNSt11range_errorD1Ev=Module["__ZNSt11range_errorD1Ev"]=a0=>(__ZNSt11range_errorD1Ev=Module["__ZNSt11range_errorD1Ev"]=wasmExports["Va"])(a0);var __ZNSt14overflow_errorD0Ev=Module["__ZNSt14overflow_errorD0Ev"]=a0=>(__ZNSt14overflow_errorD0Ev=Module["__ZNSt14overflow_errorD0Ev"]=wasmExports["Wa"])(a0);var __ZNSt14overflow_errorD1Ev=Module["__ZNSt14overflow_errorD1Ev"]=a0=>(__ZNSt14overflow_errorD1Ev=Module["__ZNSt14overflow_errorD1Ev"]=wasmExports["Xa"])(a0);var __ZNSt15underflow_errorD0Ev=Module["__ZNSt15underflow_errorD0Ev"]=a0=>(__ZNSt15underflow_errorD0Ev=Module["__ZNSt15underflow_errorD0Ev"]=wasmExports["Ya"])(a0);var __ZNSt15underflow_errorD1Ev=Module["__ZNSt15underflow_errorD1Ev"]=a0=>(__ZNSt15underflow_errorD1Ev=Module["__ZNSt15underflow_errorD1Ev"]=wasmExports["Za"])(a0);var __ZNSt12domain_errorD2Ev=Module["__ZNSt12domain_errorD2Ev"]=a0=>(__ZNSt12domain_errorD2Ev=Module["__ZNSt12domain_errorD2Ev"]=wasmExports["_a"])(a0);var __ZNSt16invalid_argumentD2Ev=Module["__ZNSt16invalid_argumentD2Ev"]=a0=>(__ZNSt16invalid_argumentD2Ev=Module["__ZNSt16invalid_argumentD2Ev"]=wasmExports["$a"])(a0);var __ZNSt12length_errorD2Ev=Module["__ZNSt12length_errorD2Ev"]=a0=>(__ZNSt12length_errorD2Ev=Module["__ZNSt12length_errorD2Ev"]=wasmExports["ab"])(a0);var __ZNSt12out_of_rangeD2Ev=Module["__ZNSt12out_of_rangeD2Ev"]=a0=>(__ZNSt12out_of_rangeD2Ev=Module["__ZNSt12out_of_rangeD2Ev"]=wasmExports["bb"])(a0);var __ZNSt11range_errorD2Ev=Module["__ZNSt11range_errorD2Ev"]=a0=>(__ZNSt11range_errorD2Ev=Module["__ZNSt11range_errorD2Ev"]=wasmExports["cb"])(a0);var __ZNSt14overflow_errorD2Ev=Module["__ZNSt14overflow_errorD2Ev"]=a0=>(__ZNSt14overflow_errorD2Ev=Module["__ZNSt14overflow_errorD2Ev"]=wasmExports["db"])(a0);var __ZNSt15underflow_errorD2Ev=Module["__ZNSt15underflow_errorD2Ev"]=a0=>(__ZNSt15underflow_errorD2Ev=Module["__ZNSt15underflow_errorD2Ev"]=wasmExports["eb"])(a0);var __ZNSt9type_infoD0Ev=Module["__ZNSt9type_infoD0Ev"]=a0=>(__ZNSt9type_infoD0Ev=Module["__ZNSt9type_infoD0Ev"]=wasmExports["fb"])(a0);var __ZNSt9type_infoD1Ev=Module["__ZNSt9type_infoD1Ev"]=a0=>(__ZNSt9type_infoD1Ev=Module["__ZNSt9type_infoD1Ev"]=wasmExports["gb"])(a0);var __ZNSt8bad_castC2Ev=Module["__ZNSt8bad_castC2Ev"]=a0=>(__ZNSt8bad_castC2Ev=Module["__ZNSt8bad_castC2Ev"]=wasmExports["hb"])(a0);var __ZNSt8bad_castD2Ev=Module["__ZNSt8bad_castD2Ev"]=a0=>(__ZNSt8bad_castD2Ev=Module["__ZNSt8bad_castD2Ev"]=wasmExports["ib"])(a0);var __ZNSt8bad_castD0Ev=Module["__ZNSt8bad_castD0Ev"]=a0=>(__ZNSt8bad_castD0Ev=Module["__ZNSt8bad_castD0Ev"]=wasmExports["jb"])(a0);var __ZNSt8bad_castD1Ev=Module["__ZNSt8bad_castD1Ev"]=a0=>(__ZNSt8bad_castD1Ev=Module["__ZNSt8bad_castD1Ev"]=wasmExports["kb"])(a0);var __ZNKSt8bad_cast4whatEv=Module["__ZNKSt8bad_cast4whatEv"]=a0=>(__ZNKSt8bad_cast4whatEv=Module["__ZNKSt8bad_cast4whatEv"]=wasmExports["lb"])(a0);var __ZNSt10bad_typeidC2Ev=Module["__ZNSt10bad_typeidC2Ev"]=a0=>(__ZNSt10bad_typeidC2Ev=Module["__ZNSt10bad_typeidC2Ev"]=wasmExports["mb"])(a0);var __ZNSt10bad_typeidD2Ev=Module["__ZNSt10bad_typeidD2Ev"]=a0=>(__ZNSt10bad_typeidD2Ev=Module["__ZNSt10bad_typeidD2Ev"]=wasmExports["nb"])(a0);var __ZNSt10bad_typeidD0Ev=Module["__ZNSt10bad_typeidD0Ev"]=a0=>(__ZNSt10bad_typeidD0Ev=Module["__ZNSt10bad_typeidD0Ev"]=wasmExports["ob"])(a0);var __ZNSt10bad_typeidD1Ev=Module["__ZNSt10bad_typeidD1Ev"]=a0=>(__ZNSt10bad_typeidD1Ev=Module["__ZNSt10bad_typeidD1Ev"]=wasmExports["pb"])(a0);var __ZNKSt10bad_typeid4whatEv=Module["__ZNKSt10bad_typeid4whatEv"]=a0=>(__ZNKSt10bad_typeid4whatEv=Module["__ZNKSt10bad_typeid4whatEv"]=wasmExports["qb"])(a0);var __ZNSt8bad_castC1Ev=Module["__ZNSt8bad_castC1Ev"]=a0=>(__ZNSt8bad_castC1Ev=Module["__ZNSt8bad_castC1Ev"]=wasmExports["rb"])(a0);var __ZNSt10bad_typeidC1Ev=Module["__ZNSt10bad_typeidC1Ev"]=a0=>(__ZNSt10bad_typeidC1Ev=Module["__ZNSt10bad_typeidC1Ev"]=wasmExports["sb"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["tb"])(a0,a1,a2,a3,a4);var __ZTIPK16failsafe_flags_s=Module["__ZTIPK16failsafe_flags_s"]=48400;var __ZTIP16failsafe_flags_s=Module["__ZTIP16failsafe_flags_s"]=48384;var __ZTI16failsafe_flags_s=Module["__ZTI16failsafe_flags_s"]=48376;var __ZTIb=Module["__ZTIb"]=31224;var __ZTIh=Module["__ZTIh"]=31380;var __ZTINSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE=Module["__ZTINSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE"]=48476;var __ZTINSt3__28optionalINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEE=Module["__ZTINSt3__28optionalINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEE"]=48624;var __ZTIPKNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTIPKNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=48680;var __ZTIPNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTIPNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=48664;var __ZTINSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTINSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=48488;var __ZTISt12length_error=Module["__ZTISt12length_error"]=33340;var __ZTVSt12length_error=Module["__ZTVSt12length_error"]=33300;var __ZTISt20bad_array_new_length=Module["__ZTISt20bad_array_new_length"]=33112;var __ZTISt12out_of_range=Module["__ZTISt12out_of_range"]=33392;var __ZTVSt12out_of_range=Module["__ZTVSt12out_of_range"]=33352;var __ZTVN10__cxxabiv117__class_type_infoE=Module["__ZTVN10__cxxabiv117__class_type_infoE"]=32612;var __ZTVN10__cxxabiv121__vmi_class_type_infoE=Module["__ZTVN10__cxxabiv121__vmi_class_type_infoE"]=32744;var __ZTVN10__cxxabiv120__si_class_type_infoE=Module["__ZTVN10__cxxabiv120__si_class_type_infoE"]=32652;var __ZTS16failsafe_flags_s=Module["__ZTS16failsafe_flags_s"]=28132;var __ZTSP16failsafe_flags_s=Module["__ZTSP16failsafe_flags_s"]=28151;var __ZTVN10__cxxabiv119__pointer_type_infoE=Module["__ZTVN10__cxxabiv119__pointer_type_infoE"]=32864;var __ZTSPK16failsafe_flags_s=Module["__ZTSPK16failsafe_flags_s"]=28171;var __ZTIi=Module["__ZTIi"]=31588;var __ZTSNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE=Module["__ZTSNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE"]=28220;var __ZTSNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTSNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=28287;var __ZTIv=Module["__ZTIv"]=31116;var __ZTIf=Module["__ZTIf"]=32060;var __ZTSNSt3__28optionalINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEE=Module["__ZTSNSt3__28optionalINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEE"]=28385;var __ZTSNSt3__227__optional_move_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTSNSt3__227__optional_move_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=28463;var __ZTSNSt3__227__optional_copy_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTSNSt3__227__optional_copy_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=28565;var __ZTSNSt3__220__optional_move_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTSNSt3__220__optional_move_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=28667;var __ZTSNSt3__220__optional_copy_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTSNSt3__220__optional_copy_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=28762;var __ZTSNSt3__223__optional_storage_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTSNSt3__223__optional_storage_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=28857;var __ZTSNSt3__224__optional_destruct_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTSNSt3__224__optional_destruct_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=28955;var __ZTINSt3__224__optional_destruct_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTINSt3__224__optional_destruct_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=48540;var __ZTINSt3__223__optional_storage_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTINSt3__223__optional_storage_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=48548;var __ZTINSt3__220__optional_copy_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTINSt3__220__optional_copy_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=48560;var __ZTINSt3__220__optional_move_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTINSt3__220__optional_move_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=48572;var __ZTINSt3__227__optional_copy_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTINSt3__227__optional_copy_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=48584;var __ZTINSt3__227__optional_move_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTINSt3__227__optional_move_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=48596;var __ZTSNSt3__218__sfinae_ctor_baseILb1ELb1EEE=Module["__ZTSNSt3__218__sfinae_ctor_baseILb1ELb1EEE"]=29054;var __ZTINSt3__218__sfinae_ctor_baseILb1ELb1EEE=Module["__ZTINSt3__218__sfinae_ctor_baseILb1ELb1EEE"]=48608;var __ZTSNSt3__220__sfinae_assign_baseILb1ELb1EEE=Module["__ZTSNSt3__220__sfinae_assign_baseILb1ELb1EEE"]=29093;var __ZTINSt3__220__sfinae_assign_baseILb1ELb1EEE=Module["__ZTINSt3__220__sfinae_assign_baseILb1ELb1EEE"]=48616;var __ZTSPNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTSPNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=29134;var __ZTSPKNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTSPKNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=29221;var __ZTIm=Module["__ZTIm"]=31744;var __ZTIc=Module["__ZTIc"]=31328;var __ZTIa=Module["__ZTIa"]=31432;var __ZTIs=Module["__ZTIs"]=31484;var __ZTIt=Module["__ZTIt"]=31536;var __ZTIj=Module["__ZTIj"]=31640;var __ZTIl=Module["__ZTIl"]=31692;var __ZTIx=Module["__ZTIx"]=31796;var __ZTIy=Module["__ZTIy"]=31848;var __ZTId=Module["__ZTId"]=32112;var __ZTINSt3__212basic_stringIhNS_11char_traitsIhEENS_9allocatorIhEEEE=Module["__ZTINSt3__212basic_stringIhNS_11char_traitsIhEENS_9allocatorIhEEEE"]=29424;var __ZTINSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE=Module["__ZTINSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE"]=29496;var __ZTINSt3__212basic_stringIDsNS_11char_traitsIDsEENS_9allocatorIDsEEEE=Module["__ZTINSt3__212basic_stringIDsNS_11char_traitsIDsEENS_9allocatorIDsEEEE"]=29572;var __ZTINSt3__212basic_stringIDiNS_11char_traitsIDiEENS_9allocatorIDiEEEE=Module["__ZTINSt3__212basic_stringIDiNS_11char_traitsIDiEENS_9allocatorIDiEEEE"]=29648;var __ZTSNSt3__212basic_stringIhNS_11char_traitsIhEENS_9allocatorIhEEEE=Module["__ZTSNSt3__212basic_stringIhNS_11char_traitsIhEENS_9allocatorIhEEEE"]=29360;var __ZTSNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE=Module["__ZTSNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE"]=29432;var __ZTSNSt3__212basic_stringIDsNS_11char_traitsIDsEENS_9allocatorIDsEEEE=Module["__ZTSNSt3__212basic_stringIDsNS_11char_traitsIDsEENS_9allocatorIDsEEEE"]=29504;var __ZTSNSt3__212basic_stringIDiNS_11char_traitsIDiEENS_9allocatorIDiEEEE=Module["__ZTSNSt3__212basic_stringIDiNS_11char_traitsIDiEENS_9allocatorIDiEEEE"]=29580;var __ZTVSt11logic_error=Module["__ZTVSt11logic_error"]=33124;var __ZTVSt9exception=Module["__ZTVSt9exception"]=32960;var __ZTVSt13runtime_error=Module["__ZTVSt13runtime_error"]=33144;var __ZTISt9exception=Module["__ZTISt9exception"]=32996;var ___cxa_unexpected_handler=Module["___cxa_unexpected_handler"]=48984;var ___cxa_terminate_handler=Module["___cxa_terminate_handler"]=48980;var ___cxa_new_handler=Module["___cxa_new_handler"]=51228;var __ZTIN10__cxxabiv116__shim_type_infoE=Module["__ZTIN10__cxxabiv116__shim_type_infoE"]=30724;var __ZTIN10__cxxabiv117__class_type_infoE=Module["__ZTIN10__cxxabiv117__class_type_infoE"]=30772;var __ZTIN10__cxxabiv117__pbase_type_infoE=Module["__ZTIN10__cxxabiv117__pbase_type_infoE"]=30820;var __ZTIDn=Module["__ZTIDn"]=31168;var __ZTIN10__cxxabiv119__pointer_type_infoE=Module["__ZTIN10__cxxabiv119__pointer_type_infoE"]=30868;var __ZTIN10__cxxabiv120__function_type_infoE=Module["__ZTIN10__cxxabiv120__function_type_infoE"]=30920;var __ZTIN10__cxxabiv129__pointer_to_member_type_infoE=Module["__ZTIN10__cxxabiv129__pointer_to_member_type_infoE"]=30980;var __ZTSN10__cxxabiv116__shim_type_infoE=Module["__ZTSN10__cxxabiv116__shim_type_infoE"]=30688;var __ZTISt9type_info=Module["__ZTISt9type_info"]=33660;var __ZTSN10__cxxabiv117__class_type_infoE=Module["__ZTSN10__cxxabiv117__class_type_infoE"]=30736;var __ZTSN10__cxxabiv117__pbase_type_infoE=Module["__ZTSN10__cxxabiv117__pbase_type_infoE"]=30784;var __ZTSN10__cxxabiv119__pointer_type_infoE=Module["__ZTSN10__cxxabiv119__pointer_type_infoE"]=30832;var __ZTSN10__cxxabiv120__function_type_infoE=Module["__ZTSN10__cxxabiv120__function_type_infoE"]=30880;var __ZTSN10__cxxabiv129__pointer_to_member_type_infoE=Module["__ZTSN10__cxxabiv129__pointer_to_member_type_infoE"]=30932;var __ZTVN10__cxxabiv116__shim_type_infoE=Module["__ZTVN10__cxxabiv116__shim_type_infoE"]=31004;var __ZTVN10__cxxabiv123__fundamental_type_infoE=Module["__ZTVN10__cxxabiv123__fundamental_type_infoE"]=31032;var __ZTIN10__cxxabiv123__fundamental_type_infoE=Module["__ZTIN10__cxxabiv123__fundamental_type_infoE"]=31100;var __ZTSN10__cxxabiv123__fundamental_type_infoE=Module["__ZTSN10__cxxabiv123__fundamental_type_infoE"]=31060;var __ZTSv=Module["__ZTSv"]=31112;var __ZTSPv=Module["__ZTSPv"]=31124;var __ZTIPv=Module["__ZTIPv"]=31128;var __ZTSPKv=Module["__ZTSPKv"]=31144;var __ZTIPKv=Module["__ZTIPKv"]=31148;var __ZTSDn=Module["__ZTSDn"]=31164;var __ZTSPDn=Module["__ZTSPDn"]=31176;var __ZTIPDn=Module["__ZTIPDn"]=31180;var __ZTSPKDn=Module["__ZTSPKDn"]=31196;var __ZTIPKDn=Module["__ZTIPKDn"]=31204;var __ZTSb=Module["__ZTSb"]=31220;var __ZTSPb=Module["__ZTSPb"]=31232;var __ZTIPb=Module["__ZTIPb"]=31236;var __ZTSPKb=Module["__ZTSPKb"]=31252;var __ZTIPKb=Module["__ZTIPKb"]=31256;var __ZTSw=Module["__ZTSw"]=31272;var __ZTIw=Module["__ZTIw"]=31276;var __ZTSPw=Module["__ZTSPw"]=31284;var __ZTIPw=Module["__ZTIPw"]=31288;var __ZTSPKw=Module["__ZTSPKw"]=31304;var __ZTIPKw=Module["__ZTIPKw"]=31308;var __ZTSc=Module["__ZTSc"]=31324;var __ZTSPc=Module["__ZTSPc"]=31336;var __ZTIPc=Module["__ZTIPc"]=31340;var __ZTSPKc=Module["__ZTSPKc"]=31356;var __ZTIPKc=Module["__ZTIPKc"]=31360;var __ZTSh=Module["__ZTSh"]=31376;var __ZTSPh=Module["__ZTSPh"]=31388;var __ZTIPh=Module["__ZTIPh"]=31392;var __ZTSPKh=Module["__ZTSPKh"]=31408;var __ZTIPKh=Module["__ZTIPKh"]=31412;var __ZTSa=Module["__ZTSa"]=31428;var __ZTSPa=Module["__ZTSPa"]=31440;var __ZTIPa=Module["__ZTIPa"]=31444;var __ZTSPKa=Module["__ZTSPKa"]=31460;var __ZTIPKa=Module["__ZTIPKa"]=31464;var __ZTSs=Module["__ZTSs"]=31480;var __ZTSPs=Module["__ZTSPs"]=31492;var __ZTIPs=Module["__ZTIPs"]=31496;var __ZTSPKs=Module["__ZTSPKs"]=31512;var __ZTIPKs=Module["__ZTIPKs"]=31516;var __ZTSt=Module["__ZTSt"]=31532;var __ZTSPt=Module["__ZTSPt"]=31544;var __ZTIPt=Module["__ZTIPt"]=31548;var __ZTSPKt=Module["__ZTSPKt"]=31564;var __ZTIPKt=Module["__ZTIPKt"]=31568;var __ZTSi=Module["__ZTSi"]=31584;var __ZTSPi=Module["__ZTSPi"]=31596;var __ZTIPi=Module["__ZTIPi"]=31600;var __ZTSPKi=Module["__ZTSPKi"]=31616;var __ZTIPKi=Module["__ZTIPKi"]=31620;var __ZTSj=Module["__ZTSj"]=31636;var __ZTSPj=Module["__ZTSPj"]=31648;var __ZTIPj=Module["__ZTIPj"]=31652;var __ZTSPKj=Module["__ZTSPKj"]=31668;var __ZTIPKj=Module["__ZTIPKj"]=31672;var __ZTSl=Module["__ZTSl"]=31688;var __ZTSPl=Module["__ZTSPl"]=31700;var __ZTIPl=Module["__ZTIPl"]=31704;var __ZTSPKl=Module["__ZTSPKl"]=31720;var __ZTIPKl=Module["__ZTIPKl"]=31724;var __ZTSm=Module["__ZTSm"]=31740;var __ZTSPm=Module["__ZTSPm"]=31752;var __ZTIPm=Module["__ZTIPm"]=31756;var __ZTSPKm=Module["__ZTSPKm"]=31772;var __ZTIPKm=Module["__ZTIPKm"]=31776;var __ZTSx=Module["__ZTSx"]=31792;var __ZTSPx=Module["__ZTSPx"]=31804;var __ZTIPx=Module["__ZTIPx"]=31808;var __ZTSPKx=Module["__ZTSPKx"]=31824;var __ZTIPKx=Module["__ZTIPKx"]=31828;var __ZTSy=Module["__ZTSy"]=31844;var __ZTSPy=Module["__ZTSPy"]=31856;var __ZTIPy=Module["__ZTIPy"]=31860;var __ZTSPKy=Module["__ZTSPKy"]=31876;var __ZTIPKy=Module["__ZTIPKy"]=31880;var __ZTSn=Module["__ZTSn"]=31896;var __ZTIn=Module["__ZTIn"]=31900;var __ZTSPn=Module["__ZTSPn"]=31908;var __ZTIPn=Module["__ZTIPn"]=31912;var __ZTSPKn=Module["__ZTSPKn"]=31928;var __ZTIPKn=Module["__ZTIPKn"]=31932;var __ZTSo=Module["__ZTSo"]=31948;var __ZTIo=Module["__ZTIo"]=31952;var __ZTSPo=Module["__ZTSPo"]=31960;var __ZTIPo=Module["__ZTIPo"]=31964;var __ZTSPKo=Module["__ZTSPKo"]=31980;var __ZTIPKo=Module["__ZTIPKo"]=31984;var __ZTSDh=Module["__ZTSDh"]=32e3;var __ZTIDh=Module["__ZTIDh"]=32004;var __ZTSPDh=Module["__ZTSPDh"]=32012;var __ZTIPDh=Module["__ZTIPDh"]=32016;var __ZTSPKDh=Module["__ZTSPKDh"]=32032;var __ZTIPKDh=Module["__ZTIPKDh"]=32040;var __ZTSf=Module["__ZTSf"]=32056;var __ZTSPf=Module["__ZTSPf"]=32068;var __ZTIPf=Module["__ZTIPf"]=32072;var __ZTSPKf=Module["__ZTSPKf"]=32088;var __ZTIPKf=Module["__ZTIPKf"]=32092;var __ZTSd=Module["__ZTSd"]=32108;var __ZTSPd=Module["__ZTSPd"]=32120;var __ZTIPd=Module["__ZTIPd"]=32124;var __ZTSPKd=Module["__ZTSPKd"]=32140;var __ZTIPKd=Module["__ZTIPKd"]=32144;var __ZTSe=Module["__ZTSe"]=32160;var __ZTIe=Module["__ZTIe"]=32164;var __ZTSPe=Module["__ZTSPe"]=32172;var __ZTIPe=Module["__ZTIPe"]=32176;var __ZTSPKe=Module["__ZTSPKe"]=32192;var __ZTIPKe=Module["__ZTIPKe"]=32196;var __ZTSg=Module["__ZTSg"]=32212;var __ZTIg=Module["__ZTIg"]=32216;var __ZTSPg=Module["__ZTSPg"]=32224;var __ZTIPg=Module["__ZTIPg"]=32228;var __ZTSPKg=Module["__ZTSPKg"]=32244;var __ZTIPKg=Module["__ZTIPKg"]=32248;var __ZTSDu=Module["__ZTSDu"]=32264;var __ZTIDu=Module["__ZTIDu"]=32268;var __ZTSPDu=Module["__ZTSPDu"]=32276;var __ZTIPDu=Module["__ZTIPDu"]=32280;var __ZTSPKDu=Module["__ZTSPKDu"]=32296;var __ZTIPKDu=Module["__ZTIPKDu"]=32304;var __ZTSDs=Module["__ZTSDs"]=32320;var __ZTIDs=Module["__ZTIDs"]=32324;var __ZTSPDs=Module["__ZTSPDs"]=32332;var __ZTIPDs=Module["__ZTIPDs"]=32336;var __ZTSPKDs=Module["__ZTSPKDs"]=32352;var __ZTIPKDs=Module["__ZTIPKDs"]=32360;var __ZTSDi=Module["__ZTSDi"]=32376;var __ZTIDi=Module["__ZTIDi"]=32380;var __ZTSPDi=Module["__ZTSPDi"]=32388;var __ZTIPDi=Module["__ZTIPDi"]=32392;var __ZTSPKDi=Module["__ZTSPKDi"]=32408;var __ZTIPKDi=Module["__ZTIPKDi"]=32416;var __ZTVN10__cxxabiv117__array_type_infoE=Module["__ZTVN10__cxxabiv117__array_type_infoE"]=32432;var __ZTIN10__cxxabiv117__array_type_infoE=Module["__ZTIN10__cxxabiv117__array_type_infoE"]=32496;var __ZTSN10__cxxabiv117__array_type_infoE=Module["__ZTSN10__cxxabiv117__array_type_infoE"]=32460;var __ZTVN10__cxxabiv120__function_type_infoE=Module["__ZTVN10__cxxabiv120__function_type_infoE"]=32508;var __ZTVN10__cxxabiv116__enum_type_infoE=Module["__ZTVN10__cxxabiv116__enum_type_infoE"]=32536;var __ZTIN10__cxxabiv116__enum_type_infoE=Module["__ZTIN10__cxxabiv116__enum_type_infoE"]=32600;var __ZTSN10__cxxabiv116__enum_type_infoE=Module["__ZTSN10__cxxabiv116__enum_type_infoE"]=32564;var __ZTIN10__cxxabiv120__si_class_type_infoE=Module["__ZTIN10__cxxabiv120__si_class_type_infoE"]=32732;var __ZTSN10__cxxabiv120__si_class_type_infoE=Module["__ZTSN10__cxxabiv120__si_class_type_infoE"]=32692;var __ZTIN10__cxxabiv121__vmi_class_type_infoE=Module["__ZTIN10__cxxabiv121__vmi_class_type_infoE"]=32824;var __ZTSN10__cxxabiv121__vmi_class_type_infoE=Module["__ZTSN10__cxxabiv121__vmi_class_type_infoE"]=32784;var __ZTVN10__cxxabiv117__pbase_type_infoE=Module["__ZTVN10__cxxabiv117__pbase_type_infoE"]=32836;var __ZTVN10__cxxabiv129__pointer_to_member_type_infoE=Module["__ZTVN10__cxxabiv129__pointer_to_member_type_infoE"]=32892;var __ZTVSt9bad_alloc=Module["__ZTVSt9bad_alloc"]=32920;var __ZTVSt20bad_array_new_length=Module["__ZTVSt20bad_array_new_length"]=32940;var __ZTISt9bad_alloc=Module["__ZTISt9bad_alloc"]=33072;var __ZTSSt9exception=Module["__ZTSSt9exception"]=32980;var __ZTVSt13bad_exception=Module["__ZTVSt13bad_exception"]=33004;var __ZTISt13bad_exception=Module["__ZTISt13bad_exception"]=33044;var __ZTSSt13bad_exception=Module["__ZTSSt13bad_exception"]=33024;var __ZTSSt9bad_alloc=Module["__ZTSSt9bad_alloc"]=33056;var __ZTSSt20bad_array_new_length=Module["__ZTSSt20bad_array_new_length"]=33084;var __ZTISt11logic_error=Module["__ZTISt11logic_error"]=33220;var __ZTISt13runtime_error=Module["__ZTISt13runtime_error"]=33460;var __ZTVSt12domain_error=Module["__ZTVSt12domain_error"]=33164;var __ZTISt12domain_error=Module["__ZTISt12domain_error"]=33232;var __ZTSSt12domain_error=Module["__ZTSSt12domain_error"]=33184;var __ZTSSt11logic_error=Module["__ZTSSt11logic_error"]=33201;var __ZTVSt16invalid_argument=Module["__ZTVSt16invalid_argument"]=33244;var __ZTISt16invalid_argument=Module["__ZTISt16invalid_argument"]=33288;var __ZTSSt16invalid_argument=Module["__ZTSSt16invalid_argument"]=33264;var __ZTSSt12length_error=Module["__ZTSSt12length_error"]=33320;var __ZTSSt12out_of_range=Module["__ZTSSt12out_of_range"]=33372;var __ZTVSt11range_error=Module["__ZTVSt11range_error"]=33404;var __ZTISt11range_error=Module["__ZTISt11range_error"]=33472;var __ZTSSt11range_error=Module["__ZTSSt11range_error"]=33424;var __ZTSSt13runtime_error=Module["__ZTSSt13runtime_error"]=33440;var __ZTVSt14overflow_error=Module["__ZTVSt14overflow_error"]=33484;var __ZTISt14overflow_error=Module["__ZTISt14overflow_error"]=33524;var __ZTSSt14overflow_error=Module["__ZTSSt14overflow_error"]=33504;var __ZTVSt15underflow_error=Module["__ZTVSt15underflow_error"]=33536;var __ZTISt15underflow_error=Module["__ZTISt15underflow_error"]=33576;var __ZTSSt15underflow_error=Module["__ZTSSt15underflow_error"]=33556;var __ZTVSt8bad_cast=Module["__ZTVSt8bad_cast"]=33588;var __ZTVSt10bad_typeid=Module["__ZTVSt10bad_typeid"]=33608;var __ZTISt8bad_cast=Module["__ZTISt8bad_cast"]=33680;var __ZTISt10bad_typeid=Module["__ZTISt10bad_typeid"]=33708;var __ZTVSt9type_info=Module["__ZTVSt9type_info"]=33628;var __ZTSSt9type_info=Module["__ZTSSt9type_info"]=33644;var __ZTSSt8bad_cast=Module["__ZTSSt8bad_cast"]=33668;var __ZTSSt10bad_typeid=Module["__ZTSSt10bad_typeid"]=33692;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); +var Module=typeof Module!="undefined"?Module:{};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){}var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);var ret=fs.readFileSync(filename);return ret};readAsync=(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return new Promise((resolve,reject)=>{fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)reject(err);else resolve(binary?data.buffer:data)})})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=url=>{if(isFileURI(url)){return new Promise((reject,resolve)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response)}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}return fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");function findWasmBinary(){var f="index.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return readAsync(binaryFile).then(response=>new Uint8Array(response),()=>getBinarySync(binaryFile))}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["w"];updateMemoryViews();wasmTable=wasmExports["C"];addOnInit(wasmExports["x"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var __abort_js=()=>{abort("")};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this["fromWireType"](HEAPU8[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var getInheritedInstanceCount=()=>Object.keys(registeredInstances).length;var getLiveInheritedInstances=()=>{var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;var setDelayFunction=fn=>{delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}};var init_embind=()=>{Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle["delete"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function readPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistent public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{sig=sig.replace(/p/g,"i");var f=Module["dynCall_"+sig];return f(ptr,...args)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var dynCall=(sig,ptr,args=[])=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};var getDynCaller=(sig,ptr)=>(...args)=>dynCall(sig,ptr,args);var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function usesDestructorStack(argTypes){for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns||isAsync?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var validateThis=(this_,classType,humanName)=>{if(!(this_ instanceof Object)){throwBindingError(`${humanName} with invalid "this": ${this_}`)}if(!(this_ instanceof classType.registeredClass.constructor)){throwBindingError(`${humanName} incompatible with "this" of type ${this_.constructor.name}`)}if(!this_.$$.ptr){throwBindingError(`cannot call emscripten binding method ${humanName} on deleted object`)}return upcastPointer(this_.$$.ptr,this_.$$.ptrType.registeredClass,classType.registeredClass)};var __embind_register_class_property=(classType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext)=>{fieldName=readLatin1String(fieldName);getter=embind__requireFunction(getterSignature,getter);whenDependentTypesAreResolved([],[classType],classType=>{classType=classType[0];var humanName=`${classType.name}.${fieldName}`;var desc={get(){throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[getterReturnType,setterArgumentType])},enumerable:true,configurable:true};if(setter){desc.set=()=>throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[getterReturnType,setterArgumentType])}else{desc.set=v=>throwBindingError(humanName+" is a read-only property")}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],types=>{var getterReturnType=types[0];var desc={get(){var ptr=validateThis(this,classType,humanName+" getter");return getterReturnType["fromWireType"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+" setter");var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,argTypes=>{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer]:pointer=>HEAPU8[pointer];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,fromWireType:fromWireType,toWireType:toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var __embind_register_optional=(rawOptionalType,rawType)=>{__embind_register_emval(rawOptionalType)};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,fromWireType(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>HEAPU16[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>HEAPU32[pointer>>2]}registerType(rawType,{name:name,fromWireType:value=>{var length=HEAPU32[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var __emval_take_value=(type,arg)=>{type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](arg);return Emval.toHandle(v)};var _emscripten_date_now=()=>Date.now();var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var printCharBuffers=[null,[],[]];var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}};var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0};embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();var wasmImports={f:___cxa_throw,q:__abort_js,p:__embind_register_bigint,u:__embind_register_bool,l:__embind_register_class,h:__embind_register_class_constructor,e:__embind_register_class_function,a:__embind_register_class_property,t:__embind_register_emval,k:__embind_register_float,c:__embind_register_function,d:__embind_register_integer,b:__embind_register_memory_view,o:__embind_register_optional,j:__embind_register_std_string,g:__embind_register_std_wstring,m:__embind_register_void,s:__emscripten_memcpy_js,n:__emval_take_value,v:_emscripten_date_now,r:_emscripten_resize_heap,i:_fd_write};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["x"])();var _param_get=Module["_param_get"]=(a0,a1)=>(_param_get=Module["_param_get"]=wasmExports["y"])(a0,a1);var _param_set_used=Module["_param_set_used"]=a0=>(_param_set_used=Module["_param_set_used"]=wasmExports["z"])(a0);var __Znwm=Module["__Znwm"]=a0=>(__Znwm=Module["__Znwm"]=wasmExports["A"])(a0);var __ZdlPvm=Module["__ZdlPvm"]=(a0,a1)=>(__ZdlPvm=Module["__ZdlPvm"]=wasmExports["B"])(a0,a1);var _malloc=a0=>(_malloc=wasmExports["D"])(a0);var __ZNSt12length_errorD1Ev=Module["__ZNSt12length_errorD1Ev"]=a0=>(__ZNSt12length_errorD1Ev=Module["__ZNSt12length_errorD1Ev"]=wasmExports["E"])(a0);var ___cxa_allocate_exception=Module["___cxa_allocate_exception"]=a0=>(___cxa_allocate_exception=Module["___cxa_allocate_exception"]=wasmExports["F"])(a0);var __ZNSt20bad_array_new_lengthD1Ev=Module["__ZNSt20bad_array_new_lengthD1Ev"]=a0=>(__ZNSt20bad_array_new_lengthD1Ev=Module["__ZNSt20bad_array_new_lengthD1Ev"]=wasmExports["G"])(a0);var __ZNSt20bad_array_new_lengthC1Ev=Module["__ZNSt20bad_array_new_lengthC1Ev"]=a0=>(__ZNSt20bad_array_new_lengthC1Ev=Module["__ZNSt20bad_array_new_lengthC1Ev"]=wasmExports["H"])(a0);var __ZNSt12out_of_rangeD1Ev=Module["__ZNSt12out_of_rangeD1Ev"]=a0=>(__ZNSt12out_of_rangeD1Ev=Module["__ZNSt12out_of_rangeD1Ev"]=wasmExports["I"])(a0);var ___cxa_pure_virtual=Module["___cxa_pure_virtual"]=()=>(___cxa_pure_virtual=Module["___cxa_pure_virtual"]=wasmExports["J"])();var ___getTypeName=a0=>(___getTypeName=wasmExports["K"])(a0);var __ZNSt9exceptionD2Ev=Module["__ZNSt9exceptionD2Ev"]=a0=>(__ZNSt9exceptionD2Ev=Module["__ZNSt9exceptionD2Ev"]=wasmExports["L"])(a0);var _free=a0=>(_free=wasmExports["M"])(a0);var _getTempRet0=Module["_getTempRet0"]=()=>(_getTempRet0=Module["_getTempRet0"]=wasmExports["N"])();var _setTempRet0=Module["_setTempRet0"]=a0=>(_setTempRet0=Module["_setTempRet0"]=wasmExports["O"])(a0);var __ZSt15get_new_handlerv=Module["__ZSt15get_new_handlerv"]=()=>(__ZSt15get_new_handlerv=Module["__ZSt15get_new_handlerv"]=wasmExports["P"])();var __Znam=Module["__Znam"]=a0=>(__Znam=Module["__Znam"]=wasmExports["Q"])(a0);var __ZdlPv=Module["__ZdlPv"]=a0=>(__ZdlPv=Module["__ZdlPv"]=wasmExports["R"])(a0);var __ZdaPv=Module["__ZdaPv"]=a0=>(__ZdaPv=Module["__ZdaPv"]=wasmExports["S"])(a0);var __ZdaPvm=Module["__ZdaPvm"]=(a0,a1)=>(__ZdaPvm=Module["__ZdaPvm"]=wasmExports["T"])(a0,a1);var __ZnwmSt11align_val_t=Module["__ZnwmSt11align_val_t"]=(a0,a1)=>(__ZnwmSt11align_val_t=Module["__ZnwmSt11align_val_t"]=wasmExports["U"])(a0,a1);var __ZnamSt11align_val_t=Module["__ZnamSt11align_val_t"]=(a0,a1)=>(__ZnamSt11align_val_t=Module["__ZnamSt11align_val_t"]=wasmExports["V"])(a0,a1);var __ZdlPvSt11align_val_t=Module["__ZdlPvSt11align_val_t"]=(a0,a1)=>(__ZdlPvSt11align_val_t=Module["__ZdlPvSt11align_val_t"]=wasmExports["W"])(a0,a1);var __ZdlPvmSt11align_val_t=Module["__ZdlPvmSt11align_val_t"]=(a0,a1,a2)=>(__ZdlPvmSt11align_val_t=Module["__ZdlPvmSt11align_val_t"]=wasmExports["X"])(a0,a1,a2);var __ZdaPvSt11align_val_t=Module["__ZdaPvSt11align_val_t"]=(a0,a1)=>(__ZdaPvSt11align_val_t=Module["__ZdaPvSt11align_val_t"]=wasmExports["Y"])(a0,a1);var __ZdaPvmSt11align_val_t=Module["__ZdaPvmSt11align_val_t"]=(a0,a1,a2)=>(__ZdaPvmSt11align_val_t=Module["__ZdaPvmSt11align_val_t"]=wasmExports["Z"])(a0,a1,a2);var __ZSt14set_unexpectedPFvvE=Module["__ZSt14set_unexpectedPFvvE"]=a0=>(__ZSt14set_unexpectedPFvvE=Module["__ZSt14set_unexpectedPFvvE"]=wasmExports["_"])(a0);var __ZSt13set_terminatePFvvE=Module["__ZSt13set_terminatePFvvE"]=a0=>(__ZSt13set_terminatePFvvE=Module["__ZSt13set_terminatePFvvE"]=wasmExports["$"])(a0);var __ZSt15set_new_handlerPFvvE=Module["__ZSt15set_new_handlerPFvvE"]=a0=>(__ZSt15set_new_handlerPFvvE=Module["__ZSt15set_new_handlerPFvvE"]=wasmExports["aa"])(a0);var __ZSt14get_unexpectedv=Module["__ZSt14get_unexpectedv"]=()=>(__ZSt14get_unexpectedv=Module["__ZSt14get_unexpectedv"]=wasmExports["ba"])();var __ZSt10unexpectedv=Module["__ZSt10unexpectedv"]=()=>(__ZSt10unexpectedv=Module["__ZSt10unexpectedv"]=wasmExports["ca"])();var __ZSt13get_terminatev=Module["__ZSt13get_terminatev"]=()=>(__ZSt13get_terminatev=Module["__ZSt13get_terminatev"]=wasmExports["da"])();var __ZSt9terminatev=Module["__ZSt9terminatev"]=()=>(__ZSt9terminatev=Module["__ZSt9terminatev"]=wasmExports["ea"])();var ___cxa_current_primary_exception=Module["___cxa_current_primary_exception"]=()=>(___cxa_current_primary_exception=Module["___cxa_current_primary_exception"]=wasmExports["fa"])();var ___cxa_rethrow_primary_exception=Module["___cxa_rethrow_primary_exception"]=a0=>(___cxa_rethrow_primary_exception=Module["___cxa_rethrow_primary_exception"]=wasmExports["ga"])(a0);var ___cxa_uncaught_exception=Module["___cxa_uncaught_exception"]=()=>(___cxa_uncaught_exception=Module["___cxa_uncaught_exception"]=wasmExports["ha"])();var ___cxa_uncaught_exceptions=Module["___cxa_uncaught_exceptions"]=()=>(___cxa_uncaught_exceptions=Module["___cxa_uncaught_exceptions"]=wasmExports["ia"])();var ___cxa_free_exception=Module["___cxa_free_exception"]=a0=>(___cxa_free_exception=Module["___cxa_free_exception"]=wasmExports["ja"])(a0);var ___cxa_init_primary_exception=Module["___cxa_init_primary_exception"]=(a0,a1,a2)=>(___cxa_init_primary_exception=Module["___cxa_init_primary_exception"]=wasmExports["ka"])(a0,a1,a2);var ___cxa_deleted_virtual=Module["___cxa_deleted_virtual"]=()=>(___cxa_deleted_virtual=Module["___cxa_deleted_virtual"]=wasmExports["la"])();var ___dynamic_cast=Module["___dynamic_cast"]=(a0,a1,a2,a3)=>(___dynamic_cast=Module["___dynamic_cast"]=wasmExports["ma"])(a0,a1,a2,a3);var __ZNSt9type_infoD2Ev=Module["__ZNSt9type_infoD2Ev"]=a0=>(__ZNSt9type_infoD2Ev=Module["__ZNSt9type_infoD2Ev"]=wasmExports["na"])(a0);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["oa"])(a0);var __ZNSt9exceptionD0Ev=Module["__ZNSt9exceptionD0Ev"]=a0=>(__ZNSt9exceptionD0Ev=Module["__ZNSt9exceptionD0Ev"]=wasmExports["pa"])(a0);var __ZNSt9exceptionD1Ev=Module["__ZNSt9exceptionD1Ev"]=a0=>(__ZNSt9exceptionD1Ev=Module["__ZNSt9exceptionD1Ev"]=wasmExports["qa"])(a0);var __ZNKSt9exception4whatEv=Module["__ZNKSt9exception4whatEv"]=a0=>(__ZNKSt9exception4whatEv=Module["__ZNKSt9exception4whatEv"]=wasmExports["ra"])(a0);var __ZNSt13bad_exceptionD0Ev=Module["__ZNSt13bad_exceptionD0Ev"]=a0=>(__ZNSt13bad_exceptionD0Ev=Module["__ZNSt13bad_exceptionD0Ev"]=wasmExports["sa"])(a0);var __ZNSt13bad_exceptionD1Ev=Module["__ZNSt13bad_exceptionD1Ev"]=a0=>(__ZNSt13bad_exceptionD1Ev=Module["__ZNSt13bad_exceptionD1Ev"]=wasmExports["ta"])(a0);var __ZNKSt13bad_exception4whatEv=Module["__ZNKSt13bad_exception4whatEv"]=a0=>(__ZNKSt13bad_exception4whatEv=Module["__ZNKSt13bad_exception4whatEv"]=wasmExports["ua"])(a0);var __ZNSt9bad_allocC2Ev=Module["__ZNSt9bad_allocC2Ev"]=a0=>(__ZNSt9bad_allocC2Ev=Module["__ZNSt9bad_allocC2Ev"]=wasmExports["va"])(a0);var __ZNSt9bad_allocD0Ev=Module["__ZNSt9bad_allocD0Ev"]=a0=>(__ZNSt9bad_allocD0Ev=Module["__ZNSt9bad_allocD0Ev"]=wasmExports["wa"])(a0);var __ZNSt9bad_allocD1Ev=Module["__ZNSt9bad_allocD1Ev"]=a0=>(__ZNSt9bad_allocD1Ev=Module["__ZNSt9bad_allocD1Ev"]=wasmExports["xa"])(a0);var __ZNKSt9bad_alloc4whatEv=Module["__ZNKSt9bad_alloc4whatEv"]=a0=>(__ZNKSt9bad_alloc4whatEv=Module["__ZNKSt9bad_alloc4whatEv"]=wasmExports["ya"])(a0);var __ZNSt20bad_array_new_lengthC2Ev=Module["__ZNSt20bad_array_new_lengthC2Ev"]=a0=>(__ZNSt20bad_array_new_lengthC2Ev=Module["__ZNSt20bad_array_new_lengthC2Ev"]=wasmExports["za"])(a0);var __ZNSt20bad_array_new_lengthD0Ev=Module["__ZNSt20bad_array_new_lengthD0Ev"]=a0=>(__ZNSt20bad_array_new_lengthD0Ev=Module["__ZNSt20bad_array_new_lengthD0Ev"]=wasmExports["Aa"])(a0);var __ZNKSt20bad_array_new_length4whatEv=Module["__ZNKSt20bad_array_new_length4whatEv"]=a0=>(__ZNKSt20bad_array_new_length4whatEv=Module["__ZNKSt20bad_array_new_length4whatEv"]=wasmExports["Ba"])(a0);var __ZNSt13bad_exceptionD2Ev=Module["__ZNSt13bad_exceptionD2Ev"]=a0=>(__ZNSt13bad_exceptionD2Ev=Module["__ZNSt13bad_exceptionD2Ev"]=wasmExports["Ca"])(a0);var __ZNSt9bad_allocC1Ev=Module["__ZNSt9bad_allocC1Ev"]=a0=>(__ZNSt9bad_allocC1Ev=Module["__ZNSt9bad_allocC1Ev"]=wasmExports["Da"])(a0);var __ZNSt9bad_allocD2Ev=Module["__ZNSt9bad_allocD2Ev"]=a0=>(__ZNSt9bad_allocD2Ev=Module["__ZNSt9bad_allocD2Ev"]=wasmExports["Ea"])(a0);var __ZNSt20bad_array_new_lengthD2Ev=Module["__ZNSt20bad_array_new_lengthD2Ev"]=a0=>(__ZNSt20bad_array_new_lengthD2Ev=Module["__ZNSt20bad_array_new_lengthD2Ev"]=wasmExports["Fa"])(a0);var __ZNSt11logic_errorD2Ev=Module["__ZNSt11logic_errorD2Ev"]=a0=>(__ZNSt11logic_errorD2Ev=Module["__ZNSt11logic_errorD2Ev"]=wasmExports["Ga"])(a0);var __ZNSt11logic_errorD0Ev=Module["__ZNSt11logic_errorD0Ev"]=a0=>(__ZNSt11logic_errorD0Ev=Module["__ZNSt11logic_errorD0Ev"]=wasmExports["Ha"])(a0);var __ZNSt11logic_errorD1Ev=Module["__ZNSt11logic_errorD1Ev"]=a0=>(__ZNSt11logic_errorD1Ev=Module["__ZNSt11logic_errorD1Ev"]=wasmExports["Ia"])(a0);var __ZNKSt11logic_error4whatEv=Module["__ZNKSt11logic_error4whatEv"]=a0=>(__ZNKSt11logic_error4whatEv=Module["__ZNKSt11logic_error4whatEv"]=wasmExports["Ja"])(a0);var __ZNSt13runtime_errorD2Ev=Module["__ZNSt13runtime_errorD2Ev"]=a0=>(__ZNSt13runtime_errorD2Ev=Module["__ZNSt13runtime_errorD2Ev"]=wasmExports["Ka"])(a0);var __ZNSt13runtime_errorD0Ev=Module["__ZNSt13runtime_errorD0Ev"]=a0=>(__ZNSt13runtime_errorD0Ev=Module["__ZNSt13runtime_errorD0Ev"]=wasmExports["La"])(a0);var __ZNSt13runtime_errorD1Ev=Module["__ZNSt13runtime_errorD1Ev"]=a0=>(__ZNSt13runtime_errorD1Ev=Module["__ZNSt13runtime_errorD1Ev"]=wasmExports["Ma"])(a0);var __ZNKSt13runtime_error4whatEv=Module["__ZNKSt13runtime_error4whatEv"]=a0=>(__ZNKSt13runtime_error4whatEv=Module["__ZNKSt13runtime_error4whatEv"]=wasmExports["Na"])(a0);var __ZNSt12domain_errorD0Ev=Module["__ZNSt12domain_errorD0Ev"]=a0=>(__ZNSt12domain_errorD0Ev=Module["__ZNSt12domain_errorD0Ev"]=wasmExports["Oa"])(a0);var __ZNSt12domain_errorD1Ev=Module["__ZNSt12domain_errorD1Ev"]=a0=>(__ZNSt12domain_errorD1Ev=Module["__ZNSt12domain_errorD1Ev"]=wasmExports["Pa"])(a0);var __ZNSt16invalid_argumentD0Ev=Module["__ZNSt16invalid_argumentD0Ev"]=a0=>(__ZNSt16invalid_argumentD0Ev=Module["__ZNSt16invalid_argumentD0Ev"]=wasmExports["Qa"])(a0);var __ZNSt16invalid_argumentD1Ev=Module["__ZNSt16invalid_argumentD1Ev"]=a0=>(__ZNSt16invalid_argumentD1Ev=Module["__ZNSt16invalid_argumentD1Ev"]=wasmExports["Ra"])(a0);var __ZNSt12length_errorD0Ev=Module["__ZNSt12length_errorD0Ev"]=a0=>(__ZNSt12length_errorD0Ev=Module["__ZNSt12length_errorD0Ev"]=wasmExports["Sa"])(a0);var __ZNSt12out_of_rangeD0Ev=Module["__ZNSt12out_of_rangeD0Ev"]=a0=>(__ZNSt12out_of_rangeD0Ev=Module["__ZNSt12out_of_rangeD0Ev"]=wasmExports["Ta"])(a0);var __ZNSt11range_errorD0Ev=Module["__ZNSt11range_errorD0Ev"]=a0=>(__ZNSt11range_errorD0Ev=Module["__ZNSt11range_errorD0Ev"]=wasmExports["Ua"])(a0);var __ZNSt11range_errorD1Ev=Module["__ZNSt11range_errorD1Ev"]=a0=>(__ZNSt11range_errorD1Ev=Module["__ZNSt11range_errorD1Ev"]=wasmExports["Va"])(a0);var __ZNSt14overflow_errorD0Ev=Module["__ZNSt14overflow_errorD0Ev"]=a0=>(__ZNSt14overflow_errorD0Ev=Module["__ZNSt14overflow_errorD0Ev"]=wasmExports["Wa"])(a0);var __ZNSt14overflow_errorD1Ev=Module["__ZNSt14overflow_errorD1Ev"]=a0=>(__ZNSt14overflow_errorD1Ev=Module["__ZNSt14overflow_errorD1Ev"]=wasmExports["Xa"])(a0);var __ZNSt15underflow_errorD0Ev=Module["__ZNSt15underflow_errorD0Ev"]=a0=>(__ZNSt15underflow_errorD0Ev=Module["__ZNSt15underflow_errorD0Ev"]=wasmExports["Ya"])(a0);var __ZNSt15underflow_errorD1Ev=Module["__ZNSt15underflow_errorD1Ev"]=a0=>(__ZNSt15underflow_errorD1Ev=Module["__ZNSt15underflow_errorD1Ev"]=wasmExports["Za"])(a0);var __ZNSt12domain_errorD2Ev=Module["__ZNSt12domain_errorD2Ev"]=a0=>(__ZNSt12domain_errorD2Ev=Module["__ZNSt12domain_errorD2Ev"]=wasmExports["_a"])(a0);var __ZNSt16invalid_argumentD2Ev=Module["__ZNSt16invalid_argumentD2Ev"]=a0=>(__ZNSt16invalid_argumentD2Ev=Module["__ZNSt16invalid_argumentD2Ev"]=wasmExports["$a"])(a0);var __ZNSt12length_errorD2Ev=Module["__ZNSt12length_errorD2Ev"]=a0=>(__ZNSt12length_errorD2Ev=Module["__ZNSt12length_errorD2Ev"]=wasmExports["ab"])(a0);var __ZNSt12out_of_rangeD2Ev=Module["__ZNSt12out_of_rangeD2Ev"]=a0=>(__ZNSt12out_of_rangeD2Ev=Module["__ZNSt12out_of_rangeD2Ev"]=wasmExports["bb"])(a0);var __ZNSt11range_errorD2Ev=Module["__ZNSt11range_errorD2Ev"]=a0=>(__ZNSt11range_errorD2Ev=Module["__ZNSt11range_errorD2Ev"]=wasmExports["cb"])(a0);var __ZNSt14overflow_errorD2Ev=Module["__ZNSt14overflow_errorD2Ev"]=a0=>(__ZNSt14overflow_errorD2Ev=Module["__ZNSt14overflow_errorD2Ev"]=wasmExports["db"])(a0);var __ZNSt15underflow_errorD2Ev=Module["__ZNSt15underflow_errorD2Ev"]=a0=>(__ZNSt15underflow_errorD2Ev=Module["__ZNSt15underflow_errorD2Ev"]=wasmExports["eb"])(a0);var __ZNSt9type_infoD0Ev=Module["__ZNSt9type_infoD0Ev"]=a0=>(__ZNSt9type_infoD0Ev=Module["__ZNSt9type_infoD0Ev"]=wasmExports["fb"])(a0);var __ZNSt9type_infoD1Ev=Module["__ZNSt9type_infoD1Ev"]=a0=>(__ZNSt9type_infoD1Ev=Module["__ZNSt9type_infoD1Ev"]=wasmExports["gb"])(a0);var __ZNSt8bad_castC2Ev=Module["__ZNSt8bad_castC2Ev"]=a0=>(__ZNSt8bad_castC2Ev=Module["__ZNSt8bad_castC2Ev"]=wasmExports["hb"])(a0);var __ZNSt8bad_castD2Ev=Module["__ZNSt8bad_castD2Ev"]=a0=>(__ZNSt8bad_castD2Ev=Module["__ZNSt8bad_castD2Ev"]=wasmExports["ib"])(a0);var __ZNSt8bad_castD0Ev=Module["__ZNSt8bad_castD0Ev"]=a0=>(__ZNSt8bad_castD0Ev=Module["__ZNSt8bad_castD0Ev"]=wasmExports["jb"])(a0);var __ZNSt8bad_castD1Ev=Module["__ZNSt8bad_castD1Ev"]=a0=>(__ZNSt8bad_castD1Ev=Module["__ZNSt8bad_castD1Ev"]=wasmExports["kb"])(a0);var __ZNKSt8bad_cast4whatEv=Module["__ZNKSt8bad_cast4whatEv"]=a0=>(__ZNKSt8bad_cast4whatEv=Module["__ZNKSt8bad_cast4whatEv"]=wasmExports["lb"])(a0);var __ZNSt10bad_typeidC2Ev=Module["__ZNSt10bad_typeidC2Ev"]=a0=>(__ZNSt10bad_typeidC2Ev=Module["__ZNSt10bad_typeidC2Ev"]=wasmExports["mb"])(a0);var __ZNSt10bad_typeidD2Ev=Module["__ZNSt10bad_typeidD2Ev"]=a0=>(__ZNSt10bad_typeidD2Ev=Module["__ZNSt10bad_typeidD2Ev"]=wasmExports["nb"])(a0);var __ZNSt10bad_typeidD0Ev=Module["__ZNSt10bad_typeidD0Ev"]=a0=>(__ZNSt10bad_typeidD0Ev=Module["__ZNSt10bad_typeidD0Ev"]=wasmExports["ob"])(a0);var __ZNSt10bad_typeidD1Ev=Module["__ZNSt10bad_typeidD1Ev"]=a0=>(__ZNSt10bad_typeidD1Ev=Module["__ZNSt10bad_typeidD1Ev"]=wasmExports["pb"])(a0);var __ZNKSt10bad_typeid4whatEv=Module["__ZNKSt10bad_typeid4whatEv"]=a0=>(__ZNKSt10bad_typeid4whatEv=Module["__ZNKSt10bad_typeid4whatEv"]=wasmExports["qb"])(a0);var __ZNSt8bad_castC1Ev=Module["__ZNSt8bad_castC1Ev"]=a0=>(__ZNSt8bad_castC1Ev=Module["__ZNSt8bad_castC1Ev"]=wasmExports["rb"])(a0);var __ZNSt10bad_typeidC1Ev=Module["__ZNSt10bad_typeidC1Ev"]=a0=>(__ZNSt10bad_typeidC1Ev=Module["__ZNSt10bad_typeidC1Ev"]=wasmExports["sb"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["tb"])(a0,a1,a2,a3,a4);var __ZTIPK16failsafe_flags_s=Module["__ZTIPK16failsafe_flags_s"]=48448;var __ZTIP16failsafe_flags_s=Module["__ZTIP16failsafe_flags_s"]=48432;var __ZTI16failsafe_flags_s=Module["__ZTI16failsafe_flags_s"]=48424;var __ZTIb=Module["__ZTIb"]=31256;var __ZTIh=Module["__ZTIh"]=31412;var __ZTINSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE=Module["__ZTINSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE"]=48524;var __ZTINSt3__28optionalINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEE=Module["__ZTINSt3__28optionalINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEE"]=48672;var __ZTIPKNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTIPKNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=48728;var __ZTIPNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTIPNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=48712;var __ZTINSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTINSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=48536;var __ZTISt12length_error=Module["__ZTISt12length_error"]=33372;var __ZTVSt12length_error=Module["__ZTVSt12length_error"]=33332;var __ZTISt20bad_array_new_length=Module["__ZTISt20bad_array_new_length"]=33144;var __ZTISt12out_of_range=Module["__ZTISt12out_of_range"]=33424;var __ZTVSt12out_of_range=Module["__ZTVSt12out_of_range"]=33384;var __ZTVN10__cxxabiv117__class_type_infoE=Module["__ZTVN10__cxxabiv117__class_type_infoE"]=32644;var __ZTVN10__cxxabiv121__vmi_class_type_infoE=Module["__ZTVN10__cxxabiv121__vmi_class_type_infoE"]=32776;var __ZTVN10__cxxabiv120__si_class_type_infoE=Module["__ZTVN10__cxxabiv120__si_class_type_infoE"]=32684;var __ZTS16failsafe_flags_s=Module["__ZTS16failsafe_flags_s"]=28163;var __ZTSP16failsafe_flags_s=Module["__ZTSP16failsafe_flags_s"]=28182;var __ZTVN10__cxxabiv119__pointer_type_infoE=Module["__ZTVN10__cxxabiv119__pointer_type_infoE"]=32896;var __ZTSPK16failsafe_flags_s=Module["__ZTSPK16failsafe_flags_s"]=28202;var __ZTIi=Module["__ZTIi"]=31620;var __ZTSNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE=Module["__ZTSNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE"]=28251;var __ZTSNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTSNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=28318;var __ZTIv=Module["__ZTIv"]=31148;var __ZTIf=Module["__ZTIf"]=32092;var __ZTSNSt3__28optionalINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEE=Module["__ZTSNSt3__28optionalINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEE"]=28416;var __ZTSNSt3__227__optional_move_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTSNSt3__227__optional_move_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=28494;var __ZTSNSt3__227__optional_copy_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTSNSt3__227__optional_copy_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=28596;var __ZTSNSt3__220__optional_move_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTSNSt3__220__optional_move_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=28698;var __ZTSNSt3__220__optional_copy_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTSNSt3__220__optional_copy_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=28793;var __ZTSNSt3__223__optional_storage_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTSNSt3__223__optional_storage_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=28888;var __ZTSNSt3__224__optional_destruct_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTSNSt3__224__optional_destruct_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=28986;var __ZTINSt3__224__optional_destruct_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTINSt3__224__optional_destruct_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=48588;var __ZTINSt3__223__optional_storage_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTINSt3__223__optional_storage_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=48596;var __ZTINSt3__220__optional_copy_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTINSt3__220__optional_copy_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=48608;var __ZTINSt3__220__optional_move_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTINSt3__220__optional_move_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=48620;var __ZTINSt3__227__optional_copy_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTINSt3__227__optional_copy_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=48632;var __ZTINSt3__227__optional_move_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE=Module["__ZTINSt3__227__optional_move_assign_baseINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEELb0EEE"]=48644;var __ZTSNSt3__218__sfinae_ctor_baseILb1ELb1EEE=Module["__ZTSNSt3__218__sfinae_ctor_baseILb1ELb1EEE"]=29085;var __ZTINSt3__218__sfinae_ctor_baseILb1ELb1EEE=Module["__ZTINSt3__218__sfinae_ctor_baseILb1ELb1EEE"]=48656;var __ZTSNSt3__220__sfinae_assign_baseILb1ELb1EEE=Module["__ZTSNSt3__220__sfinae_assign_baseILb1ELb1EEE"]=29124;var __ZTINSt3__220__sfinae_assign_baseILb1ELb1EEE=Module["__ZTINSt3__220__sfinae_assign_baseILb1ELb1EEE"]=48664;var __ZTSPNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTSPNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=29165;var __ZTSPKNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTSPKNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=29252;var __ZTIm=Module["__ZTIm"]=31776;var __ZTIc=Module["__ZTIc"]=31360;var __ZTIa=Module["__ZTIa"]=31464;var __ZTIs=Module["__ZTIs"]=31516;var __ZTIt=Module["__ZTIt"]=31568;var __ZTIj=Module["__ZTIj"]=31672;var __ZTIl=Module["__ZTIl"]=31724;var __ZTIx=Module["__ZTIx"]=31828;var __ZTIy=Module["__ZTIy"]=31880;var __ZTId=Module["__ZTId"]=32144;var __ZTINSt3__212basic_stringIhNS_11char_traitsIhEENS_9allocatorIhEEEE=Module["__ZTINSt3__212basic_stringIhNS_11char_traitsIhEENS_9allocatorIhEEEE"]=29456;var __ZTINSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE=Module["__ZTINSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE"]=29528;var __ZTINSt3__212basic_stringIDsNS_11char_traitsIDsEENS_9allocatorIDsEEEE=Module["__ZTINSt3__212basic_stringIDsNS_11char_traitsIDsEENS_9allocatorIDsEEEE"]=29604;var __ZTINSt3__212basic_stringIDiNS_11char_traitsIDiEENS_9allocatorIDiEEEE=Module["__ZTINSt3__212basic_stringIDiNS_11char_traitsIDiEENS_9allocatorIDiEEEE"]=29680;var __ZTSNSt3__212basic_stringIhNS_11char_traitsIhEENS_9allocatorIhEEEE=Module["__ZTSNSt3__212basic_stringIhNS_11char_traitsIhEENS_9allocatorIhEEEE"]=29392;var __ZTSNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE=Module["__ZTSNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE"]=29464;var __ZTSNSt3__212basic_stringIDsNS_11char_traitsIDsEENS_9allocatorIDsEEEE=Module["__ZTSNSt3__212basic_stringIDsNS_11char_traitsIDsEENS_9allocatorIDsEEEE"]=29536;var __ZTSNSt3__212basic_stringIDiNS_11char_traitsIDiEENS_9allocatorIDiEEEE=Module["__ZTSNSt3__212basic_stringIDiNS_11char_traitsIDiEENS_9allocatorIDiEEEE"]=29612;var __ZTVSt11logic_error=Module["__ZTVSt11logic_error"]=33156;var __ZTVSt9exception=Module["__ZTVSt9exception"]=32992;var __ZTVSt13runtime_error=Module["__ZTVSt13runtime_error"]=33176;var __ZTISt9exception=Module["__ZTISt9exception"]=33028;var ___cxa_unexpected_handler=Module["___cxa_unexpected_handler"]=49032;var ___cxa_terminate_handler=Module["___cxa_terminate_handler"]=49028;var ___cxa_new_handler=Module["___cxa_new_handler"]=51276;var __ZTIN10__cxxabiv116__shim_type_infoE=Module["__ZTIN10__cxxabiv116__shim_type_infoE"]=30756;var __ZTIN10__cxxabiv117__class_type_infoE=Module["__ZTIN10__cxxabiv117__class_type_infoE"]=30804;var __ZTIN10__cxxabiv117__pbase_type_infoE=Module["__ZTIN10__cxxabiv117__pbase_type_infoE"]=30852;var __ZTIDn=Module["__ZTIDn"]=31200;var __ZTIN10__cxxabiv119__pointer_type_infoE=Module["__ZTIN10__cxxabiv119__pointer_type_infoE"]=30900;var __ZTIN10__cxxabiv120__function_type_infoE=Module["__ZTIN10__cxxabiv120__function_type_infoE"]=30952;var __ZTIN10__cxxabiv129__pointer_to_member_type_infoE=Module["__ZTIN10__cxxabiv129__pointer_to_member_type_infoE"]=31012;var __ZTSN10__cxxabiv116__shim_type_infoE=Module["__ZTSN10__cxxabiv116__shim_type_infoE"]=30720;var __ZTISt9type_info=Module["__ZTISt9type_info"]=33692;var __ZTSN10__cxxabiv117__class_type_infoE=Module["__ZTSN10__cxxabiv117__class_type_infoE"]=30768;var __ZTSN10__cxxabiv117__pbase_type_infoE=Module["__ZTSN10__cxxabiv117__pbase_type_infoE"]=30816;var __ZTSN10__cxxabiv119__pointer_type_infoE=Module["__ZTSN10__cxxabiv119__pointer_type_infoE"]=30864;var __ZTSN10__cxxabiv120__function_type_infoE=Module["__ZTSN10__cxxabiv120__function_type_infoE"]=30912;var __ZTSN10__cxxabiv129__pointer_to_member_type_infoE=Module["__ZTSN10__cxxabiv129__pointer_to_member_type_infoE"]=30964;var __ZTVN10__cxxabiv116__shim_type_infoE=Module["__ZTVN10__cxxabiv116__shim_type_infoE"]=31036;var __ZTVN10__cxxabiv123__fundamental_type_infoE=Module["__ZTVN10__cxxabiv123__fundamental_type_infoE"]=31064;var __ZTIN10__cxxabiv123__fundamental_type_infoE=Module["__ZTIN10__cxxabiv123__fundamental_type_infoE"]=31132;var __ZTSN10__cxxabiv123__fundamental_type_infoE=Module["__ZTSN10__cxxabiv123__fundamental_type_infoE"]=31092;var __ZTSv=Module["__ZTSv"]=31144;var __ZTSPv=Module["__ZTSPv"]=31156;var __ZTIPv=Module["__ZTIPv"]=31160;var __ZTSPKv=Module["__ZTSPKv"]=31176;var __ZTIPKv=Module["__ZTIPKv"]=31180;var __ZTSDn=Module["__ZTSDn"]=31196;var __ZTSPDn=Module["__ZTSPDn"]=31208;var __ZTIPDn=Module["__ZTIPDn"]=31212;var __ZTSPKDn=Module["__ZTSPKDn"]=31228;var __ZTIPKDn=Module["__ZTIPKDn"]=31236;var __ZTSb=Module["__ZTSb"]=31252;var __ZTSPb=Module["__ZTSPb"]=31264;var __ZTIPb=Module["__ZTIPb"]=31268;var __ZTSPKb=Module["__ZTSPKb"]=31284;var __ZTIPKb=Module["__ZTIPKb"]=31288;var __ZTSw=Module["__ZTSw"]=31304;var __ZTIw=Module["__ZTIw"]=31308;var __ZTSPw=Module["__ZTSPw"]=31316;var __ZTIPw=Module["__ZTIPw"]=31320;var __ZTSPKw=Module["__ZTSPKw"]=31336;var __ZTIPKw=Module["__ZTIPKw"]=31340;var __ZTSc=Module["__ZTSc"]=31356;var __ZTSPc=Module["__ZTSPc"]=31368;var __ZTIPc=Module["__ZTIPc"]=31372;var __ZTSPKc=Module["__ZTSPKc"]=31388;var __ZTIPKc=Module["__ZTIPKc"]=31392;var __ZTSh=Module["__ZTSh"]=31408;var __ZTSPh=Module["__ZTSPh"]=31420;var __ZTIPh=Module["__ZTIPh"]=31424;var __ZTSPKh=Module["__ZTSPKh"]=31440;var __ZTIPKh=Module["__ZTIPKh"]=31444;var __ZTSa=Module["__ZTSa"]=31460;var __ZTSPa=Module["__ZTSPa"]=31472;var __ZTIPa=Module["__ZTIPa"]=31476;var __ZTSPKa=Module["__ZTSPKa"]=31492;var __ZTIPKa=Module["__ZTIPKa"]=31496;var __ZTSs=Module["__ZTSs"]=31512;var __ZTSPs=Module["__ZTSPs"]=31524;var __ZTIPs=Module["__ZTIPs"]=31528;var __ZTSPKs=Module["__ZTSPKs"]=31544;var __ZTIPKs=Module["__ZTIPKs"]=31548;var __ZTSt=Module["__ZTSt"]=31564;var __ZTSPt=Module["__ZTSPt"]=31576;var __ZTIPt=Module["__ZTIPt"]=31580;var __ZTSPKt=Module["__ZTSPKt"]=31596;var __ZTIPKt=Module["__ZTIPKt"]=31600;var __ZTSi=Module["__ZTSi"]=31616;var __ZTSPi=Module["__ZTSPi"]=31628;var __ZTIPi=Module["__ZTIPi"]=31632;var __ZTSPKi=Module["__ZTSPKi"]=31648;var __ZTIPKi=Module["__ZTIPKi"]=31652;var __ZTSj=Module["__ZTSj"]=31668;var __ZTSPj=Module["__ZTSPj"]=31680;var __ZTIPj=Module["__ZTIPj"]=31684;var __ZTSPKj=Module["__ZTSPKj"]=31700;var __ZTIPKj=Module["__ZTIPKj"]=31704;var __ZTSl=Module["__ZTSl"]=31720;var __ZTSPl=Module["__ZTSPl"]=31732;var __ZTIPl=Module["__ZTIPl"]=31736;var __ZTSPKl=Module["__ZTSPKl"]=31752;var __ZTIPKl=Module["__ZTIPKl"]=31756;var __ZTSm=Module["__ZTSm"]=31772;var __ZTSPm=Module["__ZTSPm"]=31784;var __ZTIPm=Module["__ZTIPm"]=31788;var __ZTSPKm=Module["__ZTSPKm"]=31804;var __ZTIPKm=Module["__ZTIPKm"]=31808;var __ZTSx=Module["__ZTSx"]=31824;var __ZTSPx=Module["__ZTSPx"]=31836;var __ZTIPx=Module["__ZTIPx"]=31840;var __ZTSPKx=Module["__ZTSPKx"]=31856;var __ZTIPKx=Module["__ZTIPKx"]=31860;var __ZTSy=Module["__ZTSy"]=31876;var __ZTSPy=Module["__ZTSPy"]=31888;var __ZTIPy=Module["__ZTIPy"]=31892;var __ZTSPKy=Module["__ZTSPKy"]=31908;var __ZTIPKy=Module["__ZTIPKy"]=31912;var __ZTSn=Module["__ZTSn"]=31928;var __ZTIn=Module["__ZTIn"]=31932;var __ZTSPn=Module["__ZTSPn"]=31940;var __ZTIPn=Module["__ZTIPn"]=31944;var __ZTSPKn=Module["__ZTSPKn"]=31960;var __ZTIPKn=Module["__ZTIPKn"]=31964;var __ZTSo=Module["__ZTSo"]=31980;var __ZTIo=Module["__ZTIo"]=31984;var __ZTSPo=Module["__ZTSPo"]=31992;var __ZTIPo=Module["__ZTIPo"]=31996;var __ZTSPKo=Module["__ZTSPKo"]=32012;var __ZTIPKo=Module["__ZTIPKo"]=32016;var __ZTSDh=Module["__ZTSDh"]=32032;var __ZTIDh=Module["__ZTIDh"]=32036;var __ZTSPDh=Module["__ZTSPDh"]=32044;var __ZTIPDh=Module["__ZTIPDh"]=32048;var __ZTSPKDh=Module["__ZTSPKDh"]=32064;var __ZTIPKDh=Module["__ZTIPKDh"]=32072;var __ZTSf=Module["__ZTSf"]=32088;var __ZTSPf=Module["__ZTSPf"]=32100;var __ZTIPf=Module["__ZTIPf"]=32104;var __ZTSPKf=Module["__ZTSPKf"]=32120;var __ZTIPKf=Module["__ZTIPKf"]=32124;var __ZTSd=Module["__ZTSd"]=32140;var __ZTSPd=Module["__ZTSPd"]=32152;var __ZTIPd=Module["__ZTIPd"]=32156;var __ZTSPKd=Module["__ZTSPKd"]=32172;var __ZTIPKd=Module["__ZTIPKd"]=32176;var __ZTSe=Module["__ZTSe"]=32192;var __ZTIe=Module["__ZTIe"]=32196;var __ZTSPe=Module["__ZTSPe"]=32204;var __ZTIPe=Module["__ZTIPe"]=32208;var __ZTSPKe=Module["__ZTSPKe"]=32224;var __ZTIPKe=Module["__ZTIPKe"]=32228;var __ZTSg=Module["__ZTSg"]=32244;var __ZTIg=Module["__ZTIg"]=32248;var __ZTSPg=Module["__ZTSPg"]=32256;var __ZTIPg=Module["__ZTIPg"]=32260;var __ZTSPKg=Module["__ZTSPKg"]=32276;var __ZTIPKg=Module["__ZTIPKg"]=32280;var __ZTSDu=Module["__ZTSDu"]=32296;var __ZTIDu=Module["__ZTIDu"]=32300;var __ZTSPDu=Module["__ZTSPDu"]=32308;var __ZTIPDu=Module["__ZTIPDu"]=32312;var __ZTSPKDu=Module["__ZTSPKDu"]=32328;var __ZTIPKDu=Module["__ZTIPKDu"]=32336;var __ZTSDs=Module["__ZTSDs"]=32352;var __ZTIDs=Module["__ZTIDs"]=32356;var __ZTSPDs=Module["__ZTSPDs"]=32364;var __ZTIPDs=Module["__ZTIPDs"]=32368;var __ZTSPKDs=Module["__ZTSPKDs"]=32384;var __ZTIPKDs=Module["__ZTIPKDs"]=32392;var __ZTSDi=Module["__ZTSDi"]=32408;var __ZTIDi=Module["__ZTIDi"]=32412;var __ZTSPDi=Module["__ZTSPDi"]=32420;var __ZTIPDi=Module["__ZTIPDi"]=32424;var __ZTSPKDi=Module["__ZTSPKDi"]=32440;var __ZTIPKDi=Module["__ZTIPKDi"]=32448;var __ZTVN10__cxxabiv117__array_type_infoE=Module["__ZTVN10__cxxabiv117__array_type_infoE"]=32464;var __ZTIN10__cxxabiv117__array_type_infoE=Module["__ZTIN10__cxxabiv117__array_type_infoE"]=32528;var __ZTSN10__cxxabiv117__array_type_infoE=Module["__ZTSN10__cxxabiv117__array_type_infoE"]=32492;var __ZTVN10__cxxabiv120__function_type_infoE=Module["__ZTVN10__cxxabiv120__function_type_infoE"]=32540;var __ZTVN10__cxxabiv116__enum_type_infoE=Module["__ZTVN10__cxxabiv116__enum_type_infoE"]=32568;var __ZTIN10__cxxabiv116__enum_type_infoE=Module["__ZTIN10__cxxabiv116__enum_type_infoE"]=32632;var __ZTSN10__cxxabiv116__enum_type_infoE=Module["__ZTSN10__cxxabiv116__enum_type_infoE"]=32596;var __ZTIN10__cxxabiv120__si_class_type_infoE=Module["__ZTIN10__cxxabiv120__si_class_type_infoE"]=32764;var __ZTSN10__cxxabiv120__si_class_type_infoE=Module["__ZTSN10__cxxabiv120__si_class_type_infoE"]=32724;var __ZTIN10__cxxabiv121__vmi_class_type_infoE=Module["__ZTIN10__cxxabiv121__vmi_class_type_infoE"]=32856;var __ZTSN10__cxxabiv121__vmi_class_type_infoE=Module["__ZTSN10__cxxabiv121__vmi_class_type_infoE"]=32816;var __ZTVN10__cxxabiv117__pbase_type_infoE=Module["__ZTVN10__cxxabiv117__pbase_type_infoE"]=32868;var __ZTVN10__cxxabiv129__pointer_to_member_type_infoE=Module["__ZTVN10__cxxabiv129__pointer_to_member_type_infoE"]=32924;var __ZTVSt9bad_alloc=Module["__ZTVSt9bad_alloc"]=32952;var __ZTVSt20bad_array_new_length=Module["__ZTVSt20bad_array_new_length"]=32972;var __ZTISt9bad_alloc=Module["__ZTISt9bad_alloc"]=33104;var __ZTSSt9exception=Module["__ZTSSt9exception"]=33012;var __ZTVSt13bad_exception=Module["__ZTVSt13bad_exception"]=33036;var __ZTISt13bad_exception=Module["__ZTISt13bad_exception"]=33076;var __ZTSSt13bad_exception=Module["__ZTSSt13bad_exception"]=33056;var __ZTSSt9bad_alloc=Module["__ZTSSt9bad_alloc"]=33088;var __ZTSSt20bad_array_new_length=Module["__ZTSSt20bad_array_new_length"]=33116;var __ZTISt11logic_error=Module["__ZTISt11logic_error"]=33252;var __ZTISt13runtime_error=Module["__ZTISt13runtime_error"]=33492;var __ZTVSt12domain_error=Module["__ZTVSt12domain_error"]=33196;var __ZTISt12domain_error=Module["__ZTISt12domain_error"]=33264;var __ZTSSt12domain_error=Module["__ZTSSt12domain_error"]=33216;var __ZTSSt11logic_error=Module["__ZTSSt11logic_error"]=33233;var __ZTVSt16invalid_argument=Module["__ZTVSt16invalid_argument"]=33276;var __ZTISt16invalid_argument=Module["__ZTISt16invalid_argument"]=33320;var __ZTSSt16invalid_argument=Module["__ZTSSt16invalid_argument"]=33296;var __ZTSSt12length_error=Module["__ZTSSt12length_error"]=33352;var __ZTSSt12out_of_range=Module["__ZTSSt12out_of_range"]=33404;var __ZTVSt11range_error=Module["__ZTVSt11range_error"]=33436;var __ZTISt11range_error=Module["__ZTISt11range_error"]=33504;var __ZTSSt11range_error=Module["__ZTSSt11range_error"]=33456;var __ZTSSt13runtime_error=Module["__ZTSSt13runtime_error"]=33472;var __ZTVSt14overflow_error=Module["__ZTVSt14overflow_error"]=33516;var __ZTISt14overflow_error=Module["__ZTISt14overflow_error"]=33556;var __ZTSSt14overflow_error=Module["__ZTSSt14overflow_error"]=33536;var __ZTVSt15underflow_error=Module["__ZTVSt15underflow_error"]=33568;var __ZTISt15underflow_error=Module["__ZTISt15underflow_error"]=33608;var __ZTSSt15underflow_error=Module["__ZTSSt15underflow_error"]=33588;var __ZTVSt8bad_cast=Module["__ZTVSt8bad_cast"]=33620;var __ZTVSt10bad_typeid=Module["__ZTVSt10bad_typeid"]=33640;var __ZTISt8bad_cast=Module["__ZTISt8bad_cast"]=33712;var __ZTISt10bad_typeid=Module["__ZTISt10bad_typeid"]=33740;var __ZTVSt9type_info=Module["__ZTVSt9type_info"]=33660;var __ZTSSt9type_info=Module["__ZTSSt9type_info"]=33676;var __ZTSSt8bad_cast=Module["__ZTSSt8bad_cast"]=33700;var __ZTSSt10bad_typeid=Module["__ZTSSt10bad_typeid"]=33724;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); diff --git a/docs/public/config/failsafe/index.wasm b/docs/public/config/failsafe/index.wasm index 6a5d0d87079bb2eb9b32eb9acf5c12b39e0bbb9d..f80b40753dcccf4d09d58574b55b85185ef72db5 100644 GIT binary patch delta 28783 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 delta 28797 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 diff --git a/docs/public/config/failsafe/parameters.json b/docs/public/config/failsafe/parameters.json index 193d313184..b0fefe7e3c 100644 --- a/docs/public/config/failsafe/parameters.json +++ b/docs/public/config/failsafe/parameters.json @@ -1 +1 @@ -{"parameters": [{"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "Sets first 4 characters of a total of 8. Valid characters are A-Z, 0-9, \" \". Example \"PX4 \" -> 1347957792\nFor CALLSIGN shorter than 8 characters use the null terminator at the end '\\0'.", "name": "ADSB_CALLSIGN_1", "rebootRequired": true, "shortDesc": "First 4 characters of CALLSIGN", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "Sets second 4 characters of a total of 8. Valid characters are A-Z, 0-9, \" \" only. Example \"TEST\" -> 1413829460\nFor CALLSIGN shorter than 8 characters use the null terminator at the end '\\0'.", "name": "ADSB_CALLSIGN_2", "rebootRequired": true, "shortDesc": "Second 4 characters of CALLSIGN", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "Sets the vehicle emergency state", "max": 6, "min": 0, "name": "ADSB_EMERGC", "rebootRequired": true, "shortDesc": "ADSB-Out Emergency State", "type": "Int32", "values": [{"description": "NoEmergency", "value": 0}, {"description": "General", "value": 1}, {"description": "Medical", "value": 2}, {"description": "LowFuel", "value": 3}, {"description": "NoCommunications", "value": 4}, {"description": "Interference", "value": 5}, {"description": "Downed", "value": 6}]}, {"category": "Standard", "default": 14, "group": "ADSB", "longDesc": "Configure the emitter type of the vehicle.", "max": 15, "min": 0, "name": "ADSB_EMIT_TYPE", "rebootRequired": true, "shortDesc": "ADSB-Out Vehicle Emitter Type", "type": "Int32", "values": [{"description": "Unknown", "value": 0}, {"description": "Light", "value": 1}, {"description": "Small", "value": 2}, {"description": "Large", "value": 3}, {"description": "HighVortex", "value": 4}, {"description": "Heavy", "value": 5}, {"description": "Performance", "value": 6}, {"description": "Rotorcraft", "value": 7}, {"description": "RESERVED", "value": 8}, {"description": "Glider", "value": 9}, {"description": "LightAir", "value": 10}, {"description": "Parachute", "value": 11}, {"description": "UltraLight", "value": 12}, {"description": "RESERVED", "value": 13}, {"description": "UAV", "value": 14}, {"description": "Space", "value": 15}, {"description": "RESERVED", "value": 16}, {"description": "EmergencySurf", "value": 17}, {"description": "ServiceSurf", "value": 18}, {"description": "PointObstacle", "value": 19}]}, {"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "Sets GPS lataral offset encoding", "max": 7, "min": 0, "name": "ADSB_GPS_OFF_LAT", "rebootRequired": true, "shortDesc": "ADSB-Out GPS Offset lat", "type": "Int32", "values": [{"description": "NoData", "value": 0}, {"description": "LatLeft2M", "value": 1}, {"description": "LatLeft4M", "value": 2}, {"description": "LatLeft6M", "value": 3}, {"description": "LatRight0M", "value": 4}, {"description": "LatRight2M", "value": 5}, {"description": "LatRight4M", "value": 6}, {"description": "LatRight6M", "value": 7}]}, {"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "Sets GPS longitudinal offset encoding", "max": 1, "min": 0, "name": "ADSB_GPS_OFF_LON", "rebootRequired": true, "shortDesc": "ADSB-Out GPS Offset lon", "type": "Int32", "values": [{"description": "NoData", "value": 0}, {"description": "AppliedBySensor", "value": 1}]}, {"category": "Standard", "default": 1194684, "group": "ADSB", "longDesc": "Defines the ICAO ID of the vehicle", "max": 16777215, "min": -1, "name": "ADSB_ICAO_ID", "rebootRequired": true, "shortDesc": "ADSB-Out ICAO configuration", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "This vehicle is always tracked. Use 0 to disable.", "max": 16777215, "min": 0, "name": "ADSB_ICAO_SPECL", "rebootRequired": true, "shortDesc": "ADSB-In Special ICAO configuration", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "Enable Identification of Position feature", "name": "ADSB_IDENT", "rebootRequired": true, "shortDesc": "ADSB-Out Ident Configuration", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "ADSB", "longDesc": "Report the length and width of the vehicle in meters. In most cases, use '1' for the smallest vehicle size.", "max": 15, "min": 0, "name": "ADSB_LEN_WIDTH", "rebootRequired": true, "shortDesc": "ADSB-Out Vehicle Size Configuration", "type": "Int32", "values": [{"description": "SizeUnknown", "value": 0}, {"description": "Len15_Wid23", "value": 1}, {"description": "Len25_Wid28", "value": 2}, {"description": "Len25_Wid34", "value": 3}, {"description": "Len35_Wid33", "value": 4}, {"description": "Len35_Wid38", "value": 5}, {"description": "Len45_Wid39", "value": 6}, {"description": "Len45_Wid45", "value": 7}, {"description": "Len55_Wid45", "value": 8}, {"description": "Len55_Wid52", "value": 9}, {"description": "Len65_Wid59", "value": 10}, {"description": "Len65_Wid67", "value": 11}, {"description": "Len75_Wid72", "value": 12}, {"description": "Len75_Wid80", "value": 13}, {"description": "Len85_Wid80", "value": 14}, {"description": "Len85_Wid90", "value": 15}]}, {"category": "Standard", "default": 25, "group": "ADSB", "longDesc": "Change number of targets to track", "max": 50, "min": 0, "name": "ADSB_LIST_MAX", "rebootRequired": true, "shortDesc": "ADSB-In Vehicle List Size", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "Informs ADSB vehicles of this vehicle's max speed capability", "max": 6, "min": 0, "name": "ADSB_MAX_SPEED", "rebootRequired": true, "shortDesc": "ADSB-Out Vehicle Max Speed", "type": "Int32", "values": [{"description": "UnknownMaxSpeed", "value": 0}, {"description": "75Kts", "value": 1}, {"description": "150Kts", "value": 2}, {"description": "300Kts", "value": 3}, {"description": "600Kts", "value": 4}, {"description": "1200Kts", "value": 5}, {"description": "Over1200Kts", "value": 6}]}, {"category": "Standard", "default": 1200, "group": "ADSB", "longDesc": "This parameter defines the squawk code. Value should be between 0000 and 7777.", "max": 7777, "min": 0, "name": "ADSB_SQUAWK", "rebootRequired": true, "shortDesc": "ADSB-Out squawk code configuration", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 1.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC1", "shortDesc": "SIM Channel 1 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 10.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC10", "shortDesc": "SIM Channel 10 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 11.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC11", "shortDesc": "SIM Channel 11 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 12.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC12", "shortDesc": "SIM Channel 12 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 13.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC13", "shortDesc": "SIM Channel 13 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 14.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC14", "shortDesc": "SIM Channel 14 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 15.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC15", "shortDesc": "SIM Channel 15 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 16.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC16", "shortDesc": "SIM Channel 16 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 2.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC2", "shortDesc": "SIM Channel 2 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 3.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC3", "shortDesc": "SIM Channel 3 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 4.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC4", "shortDesc": "SIM Channel 4 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 5.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC5", "shortDesc": "SIM Channel 5 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 6.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC6", "shortDesc": "SIM Channel 6 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 7.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC7", "shortDesc": "SIM Channel 7 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 8.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC8", "shortDesc": "SIM Channel 8 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 9.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC9", "shortDesc": "SIM Channel 9 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"bitmask": [{"description": "SIM Channel 1", "index": 0}, {"description": "SIM Channel 2", "index": 1}, {"description": "SIM Channel 3", "index": 2}, {"description": "SIM Channel 4", "index": 3}, {"description": "SIM Channel 5", "index": 4}, {"description": "SIM Channel 6", "index": 5}, {"description": "SIM Channel 7", "index": 6}, {"description": "SIM Channel 8", "index": 7}, {"description": "SIM Channel 9", "index": 8}, {"description": "SIM Channel 10", "index": 9}, {"description": "SIM Channel 11", "index": 10}, {"description": "SIM Channel 12", "index": 11}, {"description": "SIM Channel 13", "index": 12}, {"description": "SIM Channel 14", "index": 13}, {"description": "SIM Channel 15", "index": 14}, {"description": "SIM Channel 16", "index": 15}], "category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Allows to reverse the output range for each channel.\nNote: this is only useful for servos.", "max": 65535, "min": 0, "name": "PWM_MAIN_REV", "shortDesc": "Reverse Output Range for SIM", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "Airspeed Validator", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "max": 5, "min": 1, "name": "ASPD_BETA_GATE", "shortDesc": "Gate size for sideslip angle fusion", "type": "Int32", "units": "SD"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.15, "group": "Airspeed Validator", "longDesc": "Sideslip measurement noise of the internal wind estimator(s) of the airspeed selector.", "max": 1.0, "min": 0.0, "name": "ASPD_BETA_NOISE", "shortDesc": "Wind estimator sideslip measurement noise", "type": "Float", "units": "rad"}, {"bitmask": [{"description": "Only data missing check (triggers if more than 1s no data)", "index": 0}, {"description": "Data stuck (triggers if data is exactly constant for 2s in FW mode)", "index": 1}, {"description": "Innovation check (see ASPD_FS_INNOV)", "index": 2}, {"description": "Load factor check (triggers if measurement is below stall speed)", "index": 3}, {"description": "First principle check (airspeed change vs. throttle and pitch)", "index": 4}], "category": "Standard", "default": 7, "group": "Airspeed Validator", "longDesc": "Controls which checks are run to check airspeed data for validity. Only applied if ASPD_PRIMARY > 0.\nNote: The missing data check (bit 0) is implicitly always enabled when ASPD_DO_CHECKS > 0, even if bit 0 is not explicitly set.", "max": 31, "min": 0, "name": "ASPD_DO_CHECKS", "shortDesc": "Enable checks on airspeed sensors", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Airspeed Validator", "name": "ASPD_FALLBACK", "shortDesc": "Fallback options", "type": "Int32", "values": [{"description": "Fallback only to other airspeed sensors", "value": 0}, {"description": "Fallback to groundspeed-minus-windspeed airspeed estimation", "value": 1}, {"description": "Fallback to thrust based airspeed estimation", "value": 2}]}, {"category": "Standard", "decimalPlaces": 1, "default": 2.0, "group": "Airspeed Validator", "longDesc": "Window for comparing airspeed change to throttle and pitch change.\nTriggers when the airspeed change within this window is negative while throttle increases\nand the vehicle pitches down.\nIs meant to catch degrading airspeed blockages as can happen when flying through icing conditions.\nRelies on FW_THR_TRIM being set accurately.", "min": 0.0, "name": "ASPD_FP_T_WINDOW", "shortDesc": "First principle airspeed check time window", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Airspeed Validator", "longDesc": "This specifies the minimum airspeed innovation required to trigger a failsafe. Larger values make the check less sensitive,\nsmaller values make it more sensitive. Large innovations indicate an inconsistency between predicted (groundspeed - windspeeed)\nand measured airspeed.\nThe time required to detect a fault when the threshold is exceeded depends on the size of the exceedance and is controlled by the ASPD_FS_INTEG parameter.", "max": 10.0, "min": 0.5, "name": "ASPD_FS_INNOV", "shortDesc": "Airspeed failure innovation threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Airspeed Validator", "longDesc": "This sets the time integral of airspeed innovation exceedance above ASPD_FS_INNOV required to trigger a failsafe.\nLarger values make the check less sensitive, smaller positive values make it more sensitive.", "max": 50.0, "min": 0.0, "name": "ASPD_FS_INTEG", "shortDesc": "Airspeed failure innovation integral threshold", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Airspeed Validator", "longDesc": "Delay before switching back to using airspeed sensor if checks indicate sensor is good.\nSet to a negative value to disable the re-enabling in flight.", "min": -1.0, "name": "ASPD_FS_T_START", "shortDesc": "Airspeed failsafe start delay", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Airspeed Validator", "longDesc": "Delay before stopping use of airspeed sensor if checks indicate sensor is bad.", "min": 0.0, "name": "ASPD_FS_T_STOP", "shortDesc": "Airspeed failsafe stop delay", "type": "Float", "units": "s"}, {"category": "Standard", "default": 1, "group": "Airspeed Validator", "name": "ASPD_PRIMARY", "rebootRequired": true, "shortDesc": "Index or primary airspeed measurement source", "type": "Int32", "values": [{"description": "Groundspeed minus windspeed", "value": 0}, {"description": "First airspeed sensor", "value": 1}, {"description": "Second airspeed sensor", "value": 2}, {"description": "Third airspeed sensor", "value": 3}, {"description": "Thrust based airspeed", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Airspeed Validator", "longDesc": "This is the scale IAS --> CAS of the first airspeed sensor instance", "max": 2.0, "min": 0.5, "name": "ASPD_SCALE_1", "shortDesc": "Scale of airspeed sensor 1", "type": "Float", "volatile": true}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Airspeed Validator", "longDesc": "This is the scale IAS --> CAS of the second airspeed sensor instance", "max": 2.0, "min": 0.5, "name": "ASPD_SCALE_2", "shortDesc": "Scale of airspeed sensor 2", "type": "Float", "volatile": true}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Airspeed Validator", "longDesc": "This is the scale IAS --> CAS of the third airspeed sensor instance", "max": 2.0, "min": 0.5, "name": "ASPD_SCALE_3", "shortDesc": "Scale of airspeed sensor 3", "type": "Float", "volatile": true}, {"category": "Standard", "default": 2, "group": "Airspeed Validator", "name": "ASPD_SCALE_APPLY", "shortDesc": "Controls when to apply the new estimated airspeed scale(s)", "type": "Int32", "values": [{"description": "Do not automatically apply the estimated scale", "value": 0}, {"description": "Apply the estimated scale after disarm", "value": 1}, {"description": "Apply the estimated scale in air", "value": 2}]}, {"category": "Standard", "decimalPlaces": 5, "default": 0.0001, "group": "Airspeed Validator", "longDesc": "Airspeed scale process noise of the internal wind estimator(s) of the airspeed selector.\nWhen unaided, the scale uncertainty (1-sigma, unitless) increases by this amount every second.", "max": 0.1, "min": 0.0, "name": "ASPD_SCALE_NSD", "shortDesc": "Wind estimator true airspeed scale process noise spectral density", "type": "Float", "units": "1/s/sqrt(Hz)"}, {"category": "Standard", "default": 4, "group": "Airspeed Validator", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "max": 5, "min": 1, "name": "ASPD_TAS_GATE", "shortDesc": "Gate size for true airspeed fusion", "type": "Int32", "units": "SD"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.4, "group": "Airspeed Validator", "longDesc": "True airspeed measurement noise of the internal wind estimator(s) of the airspeed selector.", "max": 4.0, "min": 0.0, "name": "ASPD_TAS_NOISE", "shortDesc": "Wind estimator true airspeed measurement noise", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "Airspeed Validator", "longDesc": "The airspeed alternative derived from groundspeed and heading will be declared valid\nas soon and as long the horizontal wind uncertainty is below this value.", "max": 5.0, "min": 0.01, "name": "ASPD_WERR_THR", "shortDesc": "Horizontal wind uncertainty threshold for valid ground-minus-wind", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Airspeed Validator", "longDesc": "Wind process noise of the internal wind estimator(s) of the airspeed selector.\nWhen unaided, the wind estimate uncertainty (1-sigma, in m/s) increases by this amount every second.", "max": 1.0, "min": 0.0, "name": "ASPD_WIND_NSD", "shortDesc": "Wind estimator wind process noise spectral density", "type": "Float", "units": "m/s^2/sqrt(Hz)"}, {"category": "Standard", "default": 0, "group": "Attitude Q estimator", "name": "ATT_ACC_COMP", "shortDesc": "Acceleration compensation based on GPS velocity", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Attitude Q estimator", "max": 2.0, "min": 0.0, "name": "ATT_BIAS_MAX", "shortDesc": "Gyro bias limit", "type": "Float", "units": "rad/s"}, {"category": "Standard", "default": 0, "group": "Attitude Q estimator", "longDesc": "Enable standalone quaternion based attitude estimator.", "name": "ATT_EN", "shortDesc": "standalone attitude estimator enable (unsupported)", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Attitude Q estimator", "longDesc": "Set to 1 to use heading estimate from vision.\nSet to 2 to use heading from motion capture.", "max": 2, "min": 0, "name": "ATT_EXT_HDG_M", "shortDesc": "External heading usage mode (from Motion capture/Vision)", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Vision", "value": 1}, {"description": "Motion Capture", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Attitude Q estimator", "longDesc": "This parameter is not used in normal operation,\nas the declination is looked up based on the\nGPS coordinates of the vehicle.", "name": "ATT_MAG_DECL", "shortDesc": "Magnetic declination, in degrees", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 1, "group": "Attitude Q estimator", "name": "ATT_MAG_DECL_A", "shortDesc": "Automatic GPS based declination compensation", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Attitude Q estimator", "max": 1.0, "min": 0.0, "name": "ATT_W_ACC", "shortDesc": "Complimentary filter accelerometer weight", "type": "Float"}, {"category": "Standard", "default": 0.1, "group": "Attitude Q estimator", "max": 1.0, "min": 0.0, "name": "ATT_W_EXT_HDG", "shortDesc": "Complimentary filter external heading weight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Attitude Q estimator", "max": 1.0, "min": 0.0, "name": "ATT_W_GYRO_BIAS", "shortDesc": "Complimentary filter gyroscope bias weight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Attitude Q estimator", "longDesc": "Set to 0 to avoid using the magnetometer.", "max": 1.0, "min": 0.0, "name": "ATT_W_MAG", "shortDesc": "Complimentary filter magnetometer weight", "type": "Float"}, {"category": "Standard", "default": 2, "group": "Autotune", "longDesc": "After the auto-tuning sequence is completed,\na new set of gains is available and can be applied\nimmediately or after landing.", "name": "FW_AT_APPLY", "shortDesc": "Controls when to apply the new gains", "type": "Int32", "values": [{"description": "Do not apply the new gains (logging only)", "value": 0}, {"description": "Apply the new gains after disarm", "value": 1}, {"description": "Apply the new gains in air", "value": 2}]}, {"bitmask": [{"description": "roll", "index": 0}, {"description": "pitch", "index": 1}, {"description": "yaw", "index": 2}], "category": "Standard", "default": 3, "group": "Autotune", "longDesc": "Defines which axes will be tuned during the auto-tuning sequence\nSet bits in the following positions to enable:\n0 : Roll\n1 : Pitch\n2 : Yaw", "max": 7, "min": 1, "name": "FW_AT_AXES", "shortDesc": "Tuning axes selection", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Autotune", "longDesc": "Defines which RC_MAP_AUXn parameter maps the manual control channel used to enable/disable auto tuning.", "max": 6, "min": 0, "name": "FW_AT_MAN_AUX", "shortDesc": "Enable/disable auto tuning using a manual control AUX input", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "Aux1", "value": 1}, {"description": "Aux2", "value": 2}, {"description": "Aux3", "value": 3}, {"description": "Aux4", "value": 4}, {"description": "Aux5", "value": 5}, {"description": "Aux6", "value": 6}]}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Autotune", "longDesc": "Can be set lower or higher than the end frequency", "max": 30.0, "min": 0.1, "name": "FW_AT_SYSID_F0", "shortDesc": "Start frequency of the injected signal", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Autotune", "longDesc": "Can be set lower or higher than the start frequency", "max": 30.0, "min": 0.1, "name": "FW_AT_SYSID_F1", "shortDesc": "End frequency of the injected signal", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 0, "default": 10.0, "group": "Autotune", "longDesc": "Duration of the input signal sent on each axis during system identification", "max": 120.0, "min": 5.0, "name": "FW_AT_SYSID_TIME", "shortDesc": "Maneuver time for each axis", "type": "Float", "units": "s"}, {"category": "Standard", "default": 1, "group": "Autotune", "longDesc": "Type of signal used during system identification to excite the system.", "name": "FW_AT_SYSID_TYPE", "shortDesc": "Input signal type", "type": "Int32", "values": [{"description": "Step", "value": 0}, {"description": "Linear sine sweep", "value": 1}, {"description": "Logarithmic sine sweep", "value": 2}]}, {"category": "Standard", "default": 1, "group": "Autotune", "longDesc": "After the auto-tuning sequence is completed,\na new set of gains is available and can be applied\nimmediately or after landing.\nWARNING Applying the gains in air is dangerous as there is no\nguarantee that those new gains will be able to stabilize\nthe drone properly.", "name": "MC_AT_APPLY", "shortDesc": "Controls when to apply the new gains", "type": "Int32", "values": [{"description": "Do not apply the new gains (logging only)", "value": 0}, {"description": "Apply the new gains after disarm", "value": 1}, {"description": "WARNING Apply the new gains in air", "value": 2}]}, {"category": "Standard", "default": 0, "group": "Autotune", "name": "MC_AT_EN", "shortDesc": "Multicopter autotune module enable", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.14, "group": "Autotune", "max": 0.5, "min": 0.01, "name": "MC_AT_RISE_TIME", "shortDesc": "Desired angular rate closed-loop rise time", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.7, "group": "Autotune", "max": 6.0, "min": 0.1, "name": "MC_AT_SYSID_AMP", "shortDesc": "Amplitude of the injected signal", "type": "Float"}, {"category": "Standard", "decimalPlaces": 0, "default": -1.0, "group": "Battery Calibration", "increment": 50.0, "longDesc": "Defines the capacity of battery 1 in mAh.", "max": 100000.0, "min": -1.0, "name": "BAT1_CAPACITY", "rebootRequired": true, "shortDesc": "Battery 1 capacity", "type": "Float", "units": "mAh"}, {"category": "Standard", "default": 0, "group": "Battery Calibration", "longDesc": "Defines the number of cells the attached battery consists of.", "name": "BAT1_N_CELLS", "shortDesc": "Number of cells for battery 1", "type": "Int32", "values": [{"description": "Unknown", "value": 0}, {"description": "1S Battery", "value": 1}, {"description": "2S Battery", "value": 2}, {"description": "3S Battery", "value": 3}, {"description": "4S Battery", "value": 4}, {"description": "5S Battery", "value": 5}, {"description": "6S Battery", "value": 6}, {"description": "7S Battery", "value": 7}, {"description": "8S Battery", "value": 8}, {"description": "9S Battery", "value": 9}, {"description": "10S Battery", "value": 10}, {"description": "11S Battery", "value": 11}, {"description": "12S Battery", "value": 12}, {"description": "13S Battery", "value": 13}, {"description": "14S Battery", "value": 14}, {"description": "15S Battery", "value": 15}, {"description": "16S Battery", "value": 16}]}, {"category": "Standard", "decimalPlaces": 4, "default": -1.0, "group": "Battery Calibration", "increment": 0.0005, "longDesc": "If non-negative, then this will be used instead of the online estimated internal resistance.", "max": 0.2, "min": -1.0, "name": "BAT1_R_INTERNAL", "rebootRequired": true, "shortDesc": "Explicitly defines the per cell internal resistance for battery 1", "type": "Float", "units": "Ohm"}, {"category": "Standard", "default": 0, "group": "Battery Calibration", "longDesc": "This parameter controls the source of battery data. The value 'Power Module / Analog'\nmeans that measurements are expected to come from either analog (ADC) inputs\nor an I2C power monitor (e.g. INA226). Analog inputs are voltage and current\nmeasurements read from the board's ADC channels, typically from an onboard\nvoltage divider and current shunt, or an external analog power module.\nI2C power monitors are digital sensors on the I2C bus.\nIf the value is set to 'External' then the system expects to receive MAVLink\nor CAN battery status messages, or the battery data is published by an external driver.\nIf the value is set to 'ESCs', the battery information are taken from the esc_status message.\nThis requires the ESC to provide both voltage as well as current (via ESC telemetry).", "name": "BAT1_SOURCE", "rebootRequired": true, "shortDesc": "Battery 1 monitoring source", "type": "Int32", "values": [{"description": "Disabled", "value": -1}, {"description": "Power Module / Analog", "value": 0}, {"description": "External", "value": 1}, {"description": "ESCs", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 4.05, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Defines the voltage where a single cell of the battery is considered full.\nFor a more accurate estimate set this below the nominal voltage of e.g. 4.2V", "name": "BAT1_V_CHARGED", "rebootRequired": true, "shortDesc": "Full cell voltage", "type": "Float", "units": "V"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.6, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Defines the voltage where a single cell of the battery is considered empty.\nThe voltage should be chosen above the steep dropoff at 3.5V. A typical\nlithium battery can only be discharged under high load down to 10% before\nit drops off to a voltage level damaging the cells.", "name": "BAT1_V_EMPTY", "rebootRequired": true, "shortDesc": "Empty cell voltage", "type": "Float", "units": "V"}, {"category": "Standard", "decimalPlaces": 0, "default": -1.0, "group": "Battery Calibration", "increment": 50.0, "longDesc": "Defines the capacity of battery 2 in mAh.", "max": 100000.0, "min": -1.0, "name": "BAT2_CAPACITY", "rebootRequired": true, "shortDesc": "Battery 2 capacity", "type": "Float", "units": "mAh"}, {"category": "Standard", "default": 0, "group": "Battery Calibration", "longDesc": "Defines the number of cells the attached battery consists of.", "name": "BAT2_N_CELLS", "shortDesc": "Number of cells for battery 2", "type": "Int32", "values": [{"description": "Unknown", "value": 0}, {"description": "1S Battery", "value": 1}, {"description": "2S Battery", "value": 2}, {"description": "3S Battery", "value": 3}, {"description": "4S Battery", "value": 4}, {"description": "5S Battery", "value": 5}, {"description": "6S Battery", "value": 6}, {"description": "7S Battery", "value": 7}, {"description": "8S Battery", "value": 8}, {"description": "9S Battery", "value": 9}, {"description": "10S Battery", "value": 10}, {"description": "11S Battery", "value": 11}, {"description": "12S Battery", "value": 12}, {"description": "13S Battery", "value": 13}, {"description": "14S Battery", "value": 14}, {"description": "15S Battery", "value": 15}, {"description": "16S Battery", "value": 16}]}, {"category": "Standard", "decimalPlaces": 4, "default": -1.0, "group": "Battery Calibration", "increment": 0.0005, "longDesc": "If non-negative, then this will be used instead of the online estimated internal resistance.", "max": 0.2, "min": -1.0, "name": "BAT2_R_INTERNAL", "rebootRequired": true, "shortDesc": "Explicitly defines the per cell internal resistance for battery 2", "type": "Float", "units": "Ohm"}, {"category": "Standard", "default": -1, "group": "Battery Calibration", "longDesc": "This parameter controls the source of battery data. The value 'Power Module / Analog'\nmeans that measurements are expected to come from either analog (ADC) inputs\nor an I2C power monitor (e.g. INA226). Analog inputs are voltage and current\nmeasurements read from the board's ADC channels, typically from an onboard\nvoltage divider and current shunt, or an external analog power module.\nI2C power monitors are digital sensors on the I2C bus.\nIf the value is set to 'External' then the system expects to receive MAVLink\nor CAN battery status messages, or the battery data is published by an external driver.\nIf the value is set to 'ESCs', the battery information are taken from the esc_status message.\nThis requires the ESC to provide both voltage as well as current (via ESC telemetry).", "name": "BAT2_SOURCE", "rebootRequired": true, "shortDesc": "Battery 2 monitoring source", "type": "Int32", "values": [{"description": "Disabled", "value": -1}, {"description": "Power Module / Analog", "value": 0}, {"description": "External", "value": 1}, {"description": "ESCs", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 4.05, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Defines the voltage where a single cell of the battery is considered full.\nFor a more accurate estimate set this below the nominal voltage of e.g. 4.2V", "name": "BAT2_V_CHARGED", "rebootRequired": true, "shortDesc": "Full cell voltage", "type": "Float", "units": "V"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.6, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Defines the voltage where a single cell of the battery is considered empty.\nThe voltage should be chosen above the steep dropoff at 3.5V. A typical\nlithium battery can only be discharged under high load down to 10% before\nit drops off to a voltage level damaging the cells.", "name": "BAT2_V_EMPTY", "rebootRequired": true, "shortDesc": "Empty cell voltage", "type": "Float", "units": "V"}, {"category": "Standard", "decimalPlaces": 0, "default": -1.0, "group": "Battery Calibration", "increment": 50.0, "longDesc": "Defines the capacity of battery 3 in mAh.", "max": 100000.0, "min": -1.0, "name": "BAT3_CAPACITY", "rebootRequired": true, "shortDesc": "Battery 3 capacity", "type": "Float", "units": "mAh"}, {"category": "Standard", "default": 0, "group": "Battery Calibration", "longDesc": "Defines the number of cells the attached battery consists of.", "name": "BAT3_N_CELLS", "shortDesc": "Number of cells for battery 3", "type": "Int32", "values": [{"description": "Unknown", "value": 0}, {"description": "1S Battery", "value": 1}, {"description": "2S Battery", "value": 2}, {"description": "3S Battery", "value": 3}, {"description": "4S Battery", "value": 4}, {"description": "5S Battery", "value": 5}, {"description": "6S Battery", "value": 6}, {"description": "7S Battery", "value": 7}, {"description": "8S Battery", "value": 8}, {"description": "9S Battery", "value": 9}, {"description": "10S Battery", "value": 10}, {"description": "11S Battery", "value": 11}, {"description": "12S Battery", "value": 12}, {"description": "13S Battery", "value": 13}, {"description": "14S Battery", "value": 14}, {"description": "15S Battery", "value": 15}, {"description": "16S Battery", "value": 16}]}, {"category": "Standard", "decimalPlaces": 4, "default": -1.0, "group": "Battery Calibration", "increment": 0.0005, "longDesc": "If non-negative, then this will be used instead of the online estimated internal resistance.", "max": 0.2, "min": -1.0, "name": "BAT3_R_INTERNAL", "rebootRequired": true, "shortDesc": "Explicitly defines the per cell internal resistance for battery 3", "type": "Float", "units": "Ohm"}, {"category": "Standard", "default": -1, "group": "Battery Calibration", "longDesc": "This parameter controls the source of battery data. The value 'Power Module / Analog'\nmeans that measurements are expected to come from either analog (ADC) inputs\nor an I2C power monitor (e.g. INA226). Analog inputs are voltage and current\nmeasurements read from the board's ADC channels, typically from an onboard\nvoltage divider and current shunt, or an external analog power module.\nI2C power monitors are digital sensors on the I2C bus.\nIf the value is set to 'External' then the system expects to receive MAVLink\nor CAN battery status messages, or the battery data is published by an external driver.\nIf the value is set to 'ESCs', the battery information are taken from the esc_status message.\nThis requires the ESC to provide both voltage as well as current (via ESC telemetry).", "name": "BAT3_SOURCE", "rebootRequired": true, "shortDesc": "Battery 3 monitoring source", "type": "Int32", "values": [{"description": "Disabled", "value": -1}, {"description": "Power Module / Analog", "value": 0}, {"description": "External", "value": 1}, {"description": "ESCs", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 4.05, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Defines the voltage where a single cell of the battery is considered full.\nFor a more accurate estimate set this below the nominal voltage of e.g. 4.2V", "name": "BAT3_V_CHARGED", "rebootRequired": true, "shortDesc": "Full cell voltage", "type": "Float", "units": "V"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.6, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Defines the voltage where a single cell of the battery is considered empty.\nThe voltage should be chosen above the steep dropoff at 3.5V. A typical\nlithium battery can only be discharged under high load down to 10% before\nit drops off to a voltage level damaging the cells.", "name": "BAT3_V_EMPTY", "rebootRequired": true, "shortDesc": "Empty cell voltage", "type": "Float", "units": "V"}, {"category": "Standard", "decimalPlaces": 2, "default": 15.0, "group": "Battery Calibration", "increment": 0.1, "longDesc": "This value is used to initialize the in-flight average current estimation,\nwhich in turn is used for estimating remaining flight time and RTL triggering.", "max": 500.0, "min": 0.0, "name": "BAT_AVRG_CURRENT", "shortDesc": "Expected battery current in flight", "type": "Float", "units": "A"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.07, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Sets the threshold when the battery will be reported as critically low.\nThis has to be lower than the low threshold. This threshold commonly\nwill trigger RTL.", "max": 0.5, "min": 0.05, "name": "BAT_CRIT_THR", "shortDesc": "Critical threshold", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.05, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Sets the threshold when the battery will be reported as dangerously low.\nThis has to be lower than the critical threshold. This threshold commonly\nwill trigger landing.", "max": 0.5, "min": 0.03, "name": "BAT_EMERGEN_THR", "shortDesc": "Emergency threshold", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.15, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Sets the threshold when the battery will be reported as low.\nThis has to be higher than the critical threshold.", "max": 0.5, "min": 0.12, "name": "BAT_LOW_THR", "shortDesc": "Low threshold", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 1, "default": 40.0, "group": "Camera trigger", "longDesc": "This parameter sets the time the trigger needs to pulled high or low.", "max": 3000.0, "min": 0.1, "name": "TRIG_ACT_TIME", "rebootRequired": true, "shortDesc": "Camera trigger activation time", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 1, "default": 25.0, "group": "Camera trigger", "increment": 1.0, "longDesc": "Sets the distance at which to trigger the camera.", "min": 0.0, "name": "TRIG_DISTANCE", "rebootRequired": true, "shortDesc": "Camera trigger distance", "type": "Float", "units": "m"}, {"category": "Standard", "default": 4, "group": "Camera trigger", "longDesc": "Selects the trigger interface", "name": "TRIG_INTERFACE", "rebootRequired": true, "shortDesc": "Camera trigger Interface", "type": "Int32", "values": [{"description": "GPIO", "value": 1}, {"description": "Seagull MAP2 (over PWM)", "value": 2}, {"description": "MAVLink (Camera Protocol v1)", "value": 3}, {"description": "Generic PWM (IR trigger, servo)", "value": 4}]}, {"category": "Standard", "decimalPlaces": 1, "default": 40.0, "group": "Camera trigger", "longDesc": "This parameter sets the time between two consecutive trigger events", "max": 10000.0, "min": 4.0, "name": "TRIG_INTERVAL", "rebootRequired": true, "shortDesc": "Camera trigger interval", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Camera trigger", "longDesc": "This parameter sets the minimum time between two consecutive trigger events\nthe specific camera setup is supporting.", "max": 10000.0, "min": 1.0, "name": "TRIG_MIN_INTERVA", "rebootRequired": true, "shortDesc": "Minimum camera trigger interval", "type": "Float", "units": "ms"}, {"category": "Standard", "default": 0, "group": "Camera trigger", "max": 4, "min": 0, "name": "TRIG_MODE", "rebootRequired": true, "shortDesc": "Camera trigger mode", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "Time based, on command", "value": 1}, {"description": "Time based, always on", "value": 2}, {"description": "Distance based, always on", "value": 3}, {"description": "Distance based, on command (Survey mode)", "value": 4}]}, {"category": "Standard", "default": 0, "group": "Camera trigger", "longDesc": "This parameter sets the polarity of the trigger (0 = active low, 1 = active high )", "max": 1, "min": 0, "name": "TRIG_POLARITY", "rebootRequired": true, "shortDesc": "Camera trigger polarity", "type": "Int32", "values": [{"description": "Active low", "value": 0}, {"description": "Active high", "value": 1}]}, {"category": "Standard", "default": 1500, "group": "Camera trigger", "max": 2000, "min": 1000, "name": "TRIG_PWM_NEUTRAL", "rebootRequired": true, "shortDesc": "PWM neutral output on trigger pin", "type": "Int32", "units": "us"}, {"category": "Standard", "default": 1900, "group": "Camera trigger", "max": 2000, "min": 1000, "name": "TRIG_PWM_SHOOT", "rebootRequired": true, "shortDesc": "PWM output to trigger shot", "type": "Int32", "units": "us"}, {"category": "Developer", "default": 0, "group": "Circuit Breaker", "longDesc": "Setting this parameter to 782097 will disable the buzzer audio notification.\nSetting this parameter to 782090 will disable the startup tune, while keeping\nall others enabled.", "max": 782097, "min": 0, "name": "CBRK_BUZZER", "rebootRequired": true, "shortDesc": "Circuit breaker for disabling buzzer", "type": "Int32"}, {"category": "Developer", "default": 121212, "group": "Circuit Breaker", "longDesc": "Setting this parameter to 121212 will disable the flight termination action if triggered\nby the FailureDetector logic or if FMU is lost.\nThis circuit breaker does not affect the RC loss, data link loss, geofence,\nand takeoff failure detection safety logic.", "max": 121212, "min": 0, "name": "CBRK_FLIGHTTERM", "rebootRequired": true, "shortDesc": "Circuit breaker for flight termination", "type": "Int32"}, {"category": "Developer", "default": 22027, "group": "Circuit Breaker", "longDesc": "Setting this parameter to 22027 will disable IO safety.\nWARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK", "max": 22027, "min": 0, "name": "CBRK_IO_SAFETY", "shortDesc": "Circuit breaker for IO safety", "type": "Int32"}, {"category": "Developer", "default": 0, "group": "Circuit Breaker", "longDesc": "Setting this parameter to 894281 will disable the power valid\nchecks in the commander.\nWARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK", "max": 894281, "min": 0, "name": "CBRK_SUPPLY_CHK", "shortDesc": "Circuit breaker for power supply check", "type": "Int32"}, {"category": "Developer", "default": 197848, "group": "Circuit Breaker", "longDesc": "Setting this parameter to 197848 will disable the USB connected\nchecks in the commander, setting it to 0 keeps them enabled (recommended).\nWe are generally recommending to not fly with the USB link\nconnected and production vehicles should set this parameter to\nzero to prevent users from flying USB powered. However, for R&D purposes\nit has proven over the years to work just fine.", "max": 197848, "min": 0, "name": "CBRK_USB_CHK", "shortDesc": "Circuit breaker for USB link check", "type": "Int32"}, {"category": "Developer", "default": 0, "group": "Circuit Breaker", "longDesc": "Setting this parameter to 159753 will enable arming in fixed-wing\nmode for VTOLs.\nWARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK", "max": 159753, "min": 0, "name": "CBRK_VTOLARMING", "shortDesc": "Circuit breaker for arming in fixed-wing mode check", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "Note: actuator failure needs to be enabled and configured via FD_ACT_*\nparameters.", "max": 3, "min": 0, "name": "COM_ACT_FAIL_ACT", "shortDesc": "Set the actuator failure failsafe mode", "type": "Int32", "values": [{"description": "Warning only", "value": 0}, {"description": "Hold mode", "value": 1}, {"description": "Land mode", "value": 2}, {"description": "Return mode", "value": 3}, {"description": "Terminate", "value": 4}]}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "Set 0 to prevent accidental use of the vehicle e.g. for safety or maintenance reasons.", "name": "COM_ARMABLE", "shortDesc": "Flag to allow arming", "type": "Int32", "values": [{"description": "Disallow arming", "value": 0}, {"description": "Allow arming", "value": 1}]}, {"category": "Standard", "default": 10, "group": "Commander", "longDesc": "Used if arm authorization is requested by COM_ARM_AUTH_REQ.", "name": "COM_ARM_AUTH_ID", "shortDesc": "Arm authorizer system id", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "Methods:\n- one arm: request authorization and arm when authorization is received\n- two step arm: 1st arm command request an authorization and\n2nd arm command arm the drone if authorized\nUsed if arm authorization is requested by COM_ARM_AUTH_REQ.", "name": "COM_ARM_AUTH_MET", "shortDesc": "Arm authorization method", "type": "Int32", "values": [{"description": "one arm", "value": 0}, {"description": "two step arm", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "By default off. The default allows to arm the vehicle without a arm authorization.", "name": "COM_ARM_AUTH_REQ", "shortDesc": "Require arm authorization to arm", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Commander", "increment": 0.1, "longDesc": "Timeout for authorizer answer.\nUsed if arm authorization is requested by COM_ARM_AUTH_REQ.", "name": "COM_ARM_AUTH_TO", "shortDesc": "Arm authorization timeout", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Commander", "increment": 0.01, "longDesc": "Threshold for battery percentage below arming is prohibited.\nA negative value means BAT_CRIT_THR is the threshold.", "max": 0.9, "min": -1.0, "name": "COM_ARM_BAT_MIN", "shortDesc": "Minimum battery level for arming", "type": "Float", "units": "norm"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "If this parameter is set, the system will check ESC's online status and failures.\nThis param is specific for ESCs reporting status. It shall be used only if ESCs support telemetry.", "name": "COM_ARM_CHK_ESCS", "shortDesc": "Enable checks on ESCs that report telemetry", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "This check detects if there are hardfault files present on the\nSD card. If so, and the parameter is enabled, arming is prevented.", "name": "COM_ARM_HFLT_CHK", "shortDesc": "Enable FMU SD card hardfault detection check", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.7, "group": "Commander", "increment": 0.05, "max": 1.0, "min": 0.1, "name": "COM_ARM_IMU_ACC", "shortDesc": "Maximum accelerometer inconsistency between IMU units that will allow arming", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.25, "group": "Commander", "increment": 0.01, "max": 0.3, "min": 0.02, "name": "COM_ARM_IMU_GYR", "shortDesc": "Maximum rate gyro inconsistency between IMU units that will allow arming", "type": "Float", "units": "rad/s"}, {"category": "Standard", "default": 60, "group": "Commander", "longDesc": "Set -1 to disable the check.", "max": 180, "min": 3, "name": "COM_ARM_MAG_ANG", "shortDesc": "Maximum magnetic field inconsistency between units that will allow arming", "type": "Int32", "units": "deg"}, {"category": "Standard", "default": 2, "group": "Commander", "longDesc": "Check if the estimator detects a strong magnetic\ndisturbance (check enabled by EKF2_MAG_CHECK)", "name": "COM_ARM_MAG_STR", "shortDesc": "Enable mag strength preflight check", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Deny arming", "value": 1}, {"description": "Warning only", "value": 2}]}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "The default allows to arm the vehicle without a valid mission.", "name": "COM_ARM_MIS_REQ", "shortDesc": "Require valid mission to arm", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "This check detects if the Open Drone ID system is missing.\nDepending on the value of the parameter, the check can be\ndisabled, warn only or deny arming.", "name": "COM_ARM_ODID", "shortDesc": "Enable Drone ID system detection and health check", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Warning only", "value": 1}, {"description": "Enforce Open Drone ID system presence", "value": 2}]}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "This check detects if the FMU SD card is missing.\nDepending on the value of the parameter, the check can be\ndisabled, warn only or deny arming.", "name": "COM_ARM_SDCARD", "shortDesc": "Enable FMU SD card detection check", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Warning only", "value": 1}, {"description": "Enforce SD card presence", "value": 2}]}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "0: Arming/disarming triggers on switch transition.\n1: Arming/disarming triggers when holding the momentary button down like the stick gesture.", "name": "COM_ARM_SWISBTN", "shortDesc": "Arm switch is a momentary button", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "Configures whether arming is allowed without GNSS, for modes that require a global position\n(specifically, in those modes when a check defined by EKF2_GPS_CHECK fails).\nThe settings deny arming and warn, allow arming and warn, or silently allow arming.", "name": "COM_ARM_WO_GPS", "shortDesc": "Arming without GNSS configuration", "type": "Int32", "values": [{"description": "Deny arming", "value": 0}, {"description": "Allow arming (with warning)", "value": 1}, {"description": "Allow arming (no warning)", "value": 2}]}, {"category": "Standard", "default": 95.0, "group": "Commander", "increment": 1.0, "longDesc": "The check fails if the CPU load is above this threshold for 2s.\nA negative value disables the check.", "max": 100.0, "min": -1.0, "name": "COM_CPU_MAX", "shortDesc": "Maximum allowed CPU load to still arm", "type": "Float", "units": "%"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.0, "group": "Commander", "increment": 0.1, "longDesc": "A non-zero, positive value specifies the time-out period in seconds after which the vehicle will be\nautomatically disarmed in case a landing situation has been detected during this period.\nA zero or negative value means that automatic disarming triggered by landing detection is disabled.", "name": "COM_DISARM_LAND", "shortDesc": "Time-out for auto disarm after landing", "type": "Float", "units": "s"}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "0: Disallow disarming when not landed\n1: Allow disarming in multicopter flight in modes where\nthe thrust is directly controlled by thr throttle stick\ne.g. Stabilized, Acro", "name": "COM_DISARM_MAN", "shortDesc": "Allow disarming via switch/stick/button on multicopters in manual thrust modes", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Commander", "increment": 0.1, "longDesc": "A non-zero, positive value specifies the time in seconds, within which the\nvehicle is expected to take off after arming. In case the vehicle didn't takeoff\nwithin the timeout it disarms again.\nA negative value disables autmoatic disarming triggered by a pre-takeoff timeout.", "name": "COM_DISARM_PRFLT", "shortDesc": "Time-out for auto disarm if not taking off", "type": "Float", "units": "s"}, {"bitmask": [{"description": "Mission", "index": 0}, {"description": "Auto modes", "index": 1}, {"description": "Offboard", "index": 2}, {"description": "External Mode", "index": 3}, {"description": "Altitude Cruise", "index": 4}], "category": "Standard", "default": 0, "group": "Commander", "longDesc": "Specify modes in which ground control station connection loss is ignored and no failsafe action is triggered.\nSee also COM_RCL_EXCEPT.", "max": 31, "min": 0, "name": "COM_DLL_EXCEPT", "shortDesc": "Datalink loss exceptions", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 10, "group": "Commander", "increment": 1, "longDesc": "After this amount of seconds without datalink, the GCS connection lost mode triggers", "max": 300, "min": 5, "name": "COM_DL_LOSS_T", "shortDesc": "GCS connection loss time threshold", "type": "Int32", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Commander", "longDesc": "Before entering failsafe (RTL, Land, Hold), wait COM_FAIL_ACT_T seconds in Hold mode\nfor the user to realize.\nDuring that time the user can switch modes, but cannot take over control via the stick override feature (see COM_RC_OVERRIDE).\nAfterwards the configured failsafe action is triggered and the user may use stick override.\nA zero value disables the delay.", "max": 25.0, "min": 0.0, "name": "COM_FAIL_ACT_T", "shortDesc": "Delay between failsafe condition triggered and failsafe reaction", "type": "Float", "units": "s"}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This number is incremented automatically after every flight on\ndisarming in order to remember the next flight UUID.\nThe first flight is 0.", "min": 0, "name": "COM_FLIGHT_UUID", "shortDesc": "Next flight UUID", "type": "Int32", "volatile": true}, {"category": "Standard", "default": -1, "group": "Commander", "longDesc": "If the main switch channel is in this range the\nselected flight mode will be applied.", "name": "COM_FLTMODE1", "shortDesc": "Mode slot 1", "type": "Int32", "values": [{"description": "Unassigned", "value": -1}, {"description": "Manual", "value": 0}, {"description": "Altitude", "value": 1}, {"description": "Position", "value": 2}, {"description": "Mission", "value": 3}, {"description": "Hold", "value": 4}, {"description": "Return", "value": 5}, {"description": "Acro", "value": 6}, {"description": "Offboard", "value": 7}, {"description": "Stabilized", "value": 8}, {"description": "Position Slow", "value": 9}, {"description": "Takeoff", "value": 10}, {"description": "Land", "value": 11}, {"description": "Follow Me", "value": 12}, {"description": "Precision Land", "value": 13}, {"description": "Altitude Cruise", "value": 16}, {"description": "External Mode 1", "value": 100}, {"description": "External Mode 2", "value": 101}, {"description": "External Mode 3", "value": 102}, {"description": "External Mode 4", "value": 103}, {"description": "External Mode 5", "value": 104}, {"description": "External Mode 6", "value": 105}, {"description": "External Mode 7", "value": 106}, {"description": "External Mode 8", "value": 107}]}, {"category": "Standard", "default": -1, "group": "Commander", "longDesc": "If the main switch channel is in this range the\nselected flight mode will be applied.", "name": "COM_FLTMODE2", "shortDesc": "Mode slot 2", "type": "Int32", "values": [{"description": "Unassigned", "value": -1}, {"description": "Manual", "value": 0}, {"description": "Altitude", "value": 1}, {"description": "Position", "value": 2}, {"description": "Mission", "value": 3}, {"description": "Hold", "value": 4}, {"description": "Return", "value": 5}, {"description": "Acro", "value": 6}, {"description": "Offboard", "value": 7}, {"description": "Stabilized", "value": 8}, {"description": "Position Slow", "value": 9}, {"description": "Takeoff", "value": 10}, {"description": "Land", "value": 11}, {"description": "Follow Me", "value": 12}, {"description": "Precision Land", "value": 13}, {"description": "Altitude Cruise", "value": 16}, {"description": "External Mode 1", "value": 100}, {"description": "External Mode 2", "value": 101}, {"description": "External Mode 3", "value": 102}, {"description": "External Mode 4", "value": 103}, {"description": "External Mode 5", "value": 104}, {"description": "External Mode 6", "value": 105}, {"description": "External Mode 7", "value": 106}, {"description": "External Mode 8", "value": 107}]}, {"category": "Standard", "default": -1, "group": "Commander", "longDesc": "If the main switch channel is in this range the\nselected flight mode will be applied.", "name": "COM_FLTMODE3", "shortDesc": "Mode slot 3", "type": "Int32", "values": [{"description": "Unassigned", "value": -1}, {"description": "Manual", "value": 0}, {"description": "Altitude", "value": 1}, {"description": "Position", "value": 2}, {"description": "Mission", "value": 3}, {"description": "Hold", "value": 4}, {"description": "Return", "value": 5}, {"description": "Acro", "value": 6}, {"description": "Offboard", "value": 7}, {"description": "Stabilized", "value": 8}, {"description": "Position Slow", "value": 9}, {"description": "Takeoff", "value": 10}, {"description": "Land", "value": 11}, {"description": "Follow Me", "value": 12}, {"description": "Precision Land", "value": 13}, {"description": "Altitude Cruise", "value": 16}, {"description": "External Mode 1", "value": 100}, {"description": "External Mode 2", "value": 101}, {"description": "External Mode 3", "value": 102}, {"description": "External Mode 4", "value": 103}, {"description": "External Mode 5", "value": 104}, {"description": "External Mode 6", "value": 105}, {"description": "External Mode 7", "value": 106}, {"description": "External Mode 8", "value": 107}]}, {"category": "Standard", "default": -1, "group": "Commander", "longDesc": "If the main switch channel is in this range the\nselected flight mode will be applied.", "name": "COM_FLTMODE4", "shortDesc": "Mode slot 4", "type": "Int32", "values": [{"description": "Unassigned", "value": -1}, {"description": "Manual", "value": 0}, {"description": "Altitude", "value": 1}, {"description": "Position", "value": 2}, {"description": "Mission", "value": 3}, {"description": "Hold", "value": 4}, {"description": "Return", "value": 5}, {"description": "Acro", "value": 6}, {"description": "Offboard", "value": 7}, {"description": "Stabilized", "value": 8}, {"description": "Position Slow", "value": 9}, {"description": "Takeoff", "value": 10}, {"description": "Land", "value": 11}, {"description": "Follow Me", "value": 12}, {"description": "Precision Land", "value": 13}, {"description": "Altitude Cruise", "value": 16}, {"description": "External Mode 1", "value": 100}, {"description": "External Mode 2", "value": 101}, {"description": "External Mode 3", "value": 102}, {"description": "External Mode 4", "value": 103}, {"description": "External Mode 5", "value": 104}, {"description": "External Mode 6", "value": 105}, {"description": "External Mode 7", "value": 106}, {"description": "External Mode 8", "value": 107}]}, {"category": "Standard", "default": -1, "group": "Commander", "longDesc": "If the main switch channel is in this range the\nselected flight mode will be applied.", "name": "COM_FLTMODE5", "shortDesc": "Mode slot 5", "type": "Int32", "values": [{"description": "Unassigned", "value": -1}, {"description": "Manual", "value": 0}, {"description": "Altitude", "value": 1}, {"description": "Position", "value": 2}, {"description": "Mission", "value": 3}, {"description": "Hold", "value": 4}, {"description": "Return", "value": 5}, {"description": "Acro", "value": 6}, {"description": "Offboard", "value": 7}, {"description": "Stabilized", "value": 8}, {"description": "Position Slow", "value": 9}, {"description": "Takeoff", "value": 10}, {"description": "Land", "value": 11}, {"description": "Follow Me", "value": 12}, {"description": "Precision Land", "value": 13}, {"description": "Altitude Cruise", "value": 16}, {"description": "External Mode 1", "value": 100}, {"description": "External Mode 2", "value": 101}, {"description": "External Mode 3", "value": 102}, {"description": "External Mode 4", "value": 103}, {"description": "External Mode 5", "value": 104}, {"description": "External Mode 6", "value": 105}, {"description": "External Mode 7", "value": 106}, {"description": "External Mode 8", "value": 107}]}, {"category": "Standard", "default": -1, "group": "Commander", "longDesc": "If the main switch channel is in this range the\nselected flight mode will be applied.", "name": "COM_FLTMODE6", "shortDesc": "Mode slot 6", "type": "Int32", "values": [{"description": "Unassigned", "value": -1}, {"description": "Manual", "value": 0}, {"description": "Altitude", "value": 1}, {"description": "Position", "value": 2}, {"description": "Mission", "value": 3}, {"description": "Hold", "value": 4}, {"description": "Return", "value": 5}, {"description": "Acro", "value": 6}, {"description": "Offboard", "value": 7}, {"description": "Stabilized", "value": 8}, {"description": "Position Slow", "value": 9}, {"description": "Takeoff", "value": 10}, {"description": "Land", "value": 11}, {"description": "Follow Me", "value": 12}, {"description": "Precision Land", "value": 13}, {"description": "Altitude Cruise", "value": 16}, {"description": "External Mode 1", "value": 100}, {"description": "External Mode 2", "value": 101}, {"description": "External Mode 3", "value": 102}, {"description": "External Mode 4", "value": 103}, {"description": "External Mode 5", "value": 104}, {"description": "External Mode 6", "value": 105}, {"description": "External Mode 7", "value": 106}, {"description": "External Mode 8", "value": 107}]}, {"category": "Standard", "default": 0, "group": "Commander", "increment": 1, "longDesc": "Action the system takes when the remaining flight time is below\nthe estimated time it takes to reach the RTL destination.", "name": "COM_FLTT_LOW_ACT", "shortDesc": "Remaining flight time low failsafe", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Warning", "value": 1}, {"description": "Return", "value": 3}]}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "Describes the intended use of the vehicle.\nCan be used by ground control software or log post processing.\nThis param does not influence the behavior within the firmware. This means for example the control logic is independent of the setting of this param (but depends on other params).", "name": "COM_FLT_PROFILE", "shortDesc": "User Flight Profile", "type": "Int32", "values": [{"description": "Default", "value": 0}, {"description": "Pro User", "value": 100}, {"description": "Flight Tester", "value": 200}, {"description": "Developer", "value": 300}]}, {"category": "Standard", "default": -1, "group": "Commander", "longDesc": "The vehicle aborts the current operation and returns to launch when\nthe time since takeoff is above this value. It is not possible to resume the\nmission or switch to any auto mode other than RTL or Land. Taking over in any manual\nmode is still possible.\nStarting from 90% of the maximum flight time, a warning message will be sent\nevery 1 minute with the remaining time until automatic RTL.\nSet to -1 to disable.", "min": -1, "name": "COM_FLT_TIME_MAX", "shortDesc": "Maximum allowed flight time", "type": "Int32", "units": "s"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "Force safety when the vehicle disarms", "name": "COM_FORCE_SAFETY", "shortDesc": "Enable force safety", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 120, "group": "Commander", "longDesc": "After this amount of seconds without datalink the data link lost mode triggers", "max": 3600, "min": 60, "name": "COM_HLDL_LOSS_T", "shortDesc": "High Latency Datalink loss time threshold", "type": "Int32", "units": "s"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "After a data link loss: after this number of seconds with a healthy datalink the 'datalink loss'\nflag is set back to false", "max": 60, "min": 0, "name": "COM_HLDL_REG_T", "shortDesc": "High Latency Datalink regain time threshold", "type": "Int32", "units": "s"}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "Set home position automatically if possible.\nDuring missions, the latitude/longitude of the home position is locked and will not reset during intermediate landings.\nIt will only update once the mission is complete or landed outside of a mission.\nHowever, the altitude is still being adjusted to correct for GNSS vertical drift in the first 2 minutes after takeoff.", "name": "COM_HOME_EN", "rebootRequired": true, "shortDesc": "Home position enabled", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "If set to true, the autopilot is allowed to set its home position after takeoff\nThe true home position is back-computed if a local position is estimate if available.\nIf no local position is available, home is set to the current position.", "name": "COM_HOME_IN_AIR", "shortDesc": "Allows setting the home position after takeoff", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Commander", "increment": 1, "longDesc": "Action the system takes when an imbalanced propeller is detected by the failure detector.\nSee also FD_IMB_PROP_THR to set the failure threshold.", "name": "COM_IMB_PROP_ACT", "shortDesc": "Imbalanced propeller failsafe mode", "type": "Int32", "values": [{"description": "Disabled", "value": -1}, {"description": "Warning", "value": 0}, {"description": "Return", "value": 1}, {"description": "Land", "value": 2}]}, {"category": "Standard", "default": 5.0, "group": "Commander", "increment": 0.1, "longDesc": "Use RC_MAP_KILL_SW to map a kill switch.", "max": 30.0, "min": 0.0, "name": "COM_KILL_DISARM", "shortDesc": "Timeout value for disarming when kill switch is engaged", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 3, "default": 3.0, "group": "Commander", "longDesc": "A non-zero, positive value specifies the timeframe in seconds within failure detector is allowed to disarm the vehicle\nif attitude exceeds the limits defined in FD_FAIL_P and FD_FAIL_R.\nThe check is not executed for flight modes that do support acrobatic maneuvers, e.g: Acro (MC/FW) and Manual (FW).\nA zero or negative value means that the check is disabled.", "max": 5.0, "min": -1.0, "name": "COM_LKDOWN_TKO", "shortDesc": "Timeout for detecting a failure after takeoff", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "Action the system takes at critical battery. See also BAT_CRIT_THR and BAT_EMERGEN_THR\nfor definition of battery states.", "name": "COM_LOW_BAT_ACT", "shortDesc": "Battery failsafe mode", "type": "Int32", "values": [{"description": "Warning", "value": 0}, {"description": "Land mode", "value": 2}, {"description": "Return at critical level, land at emergency level", "value": 3}]}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE0_HASH", "shortDesc": "External mode identifier 0", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE1_HASH", "shortDesc": "External mode identifier 1", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE2_HASH", "shortDesc": "External mode identifier 2", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE3_HASH", "shortDesc": "External mode identifier 3", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE4_HASH", "shortDesc": "External mode identifier 4", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE5_HASH", "shortDesc": "External mode identifier 5", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE6_HASH", "shortDesc": "External mode identifier 6", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE7_HASH", "shortDesc": "External mode identifier 7", "type": "Int32", "volatile": true}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "By default disabled for safety reasons", "name": "COM_MODE_ARM_CHK", "shortDesc": "Allow external mode registration while armed", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "If set, enables the actuator test interface via MAVLink (ACTUATOR_TEST), that\nallows spinning the motors and moving the servos for testing purposes.", "name": "COM_MOT_TEST_EN", "shortDesc": "Enable Actuator Testing", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 5.0, "group": "Commander", "increment": 0.01, "max": 60.0, "min": 0.0, "name": "COM_OBC_LOSS_T", "shortDesc": "Time-out to wait when onboard computer connection is lost before warning about loss connection", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "The offboard loss failsafe will only be entered after a timeout,\nset by COM_OF_LOSS_T in seconds.", "name": "COM_OBL_RC_ACT", "shortDesc": "Set offboard loss failsafe mode", "type": "Int32", "values": [{"description": "Position mode", "value": 0}, {"description": "Altitude mode", "value": 1}, {"description": "Stabilized", "value": 2}, {"description": "Return mode", "value": 3}, {"description": "Land mode", "value": 4}, {"description": "Hold mode", "value": 5}, {"description": "Terminate", "value": 6}, {"description": "Disarm", "value": 7}]}, {"category": "Standard", "default": 1.0, "group": "Commander", "increment": 0.01, "longDesc": "See COM_OBL_RC_ACT to configure action.", "max": 60.0, "min": 0.0, "name": "COM_OF_LOSS_T", "shortDesc": "Time-out to wait when offboard connection is lost before triggering offboard lost action", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Commander", "name": "COM_PARACHUTE", "shortDesc": "Expect and require a healthy MAVLink parachute system", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Commander", "longDesc": "This is the horizontal position error (EPH) threshold that will trigger a failsafe.\nIf the previous position error was below this threshold, there is an additional\nfactor of 2.5 applied (threshold for invalidation 2.5 times the one for validation).\nOnly used for multicopters and VTOLs in hover mode.\nIndependent from estimator positioning data timeout threshold (see EKF2_NOAID_TOUT).\nSet to -1 to disable.", "max": 400.0, "min": -1.0, "name": "COM_POS_FS_EPH", "shortDesc": "Horizontal position error threshold for hovering systems", "type": "Float", "units": "m"}, {"category": "Standard", "default": 3, "group": "Commander", "increment": 1, "longDesc": "Action the system takes when the estimated position has an accuracy below the specified threshold.\nSee COM_POS_LOW_EPH to set the failsafe threshold.\nThe failsafe action is only executed if the vehicle is in auto mission or auto loiter mode,\notherwise it is only a warning.", "name": "COM_POS_LOW_ACT", "shortDesc": "Low position accuracy action", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Warning", "value": 1}, {"description": "Hold", "value": 2}, {"description": "Return", "value": 3}, {"description": "Terminate", "value": 4}, {"description": "Land", "value": 5}]}, {"category": "Standard", "default": -1.0, "group": "Commander", "longDesc": "This triggers the action specified in COM_POS_LOW_ACT if the estimated position accuracy is below this threshold.\nLocal position has to be still declared valid, which requires some kind of velocity aiding or large dead-reckoning time (EKF2_NOAID_TOUT),\nand a high failsafe threshold (COM_POS_FS_EPH).\nSet to -1 to disable.", "max": 1000.0, "min": -1.0, "name": "COM_POS_LOW_EPH", "shortDesc": "Low position accuracy failsafe threshold", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "This configures a check to verify the expected number of 5V rail power supplies are present. By default only one is expected.\nNote: CBRK_SUPPLY_CHK disables all power checks including this one.", "max": 4, "min": 0, "name": "COM_POWER_COUNT", "shortDesc": "Required number of redundant power modules", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "Condition to enter the prearmed state, an intermediate state between disarmed and armed\nin which non-throttling actuators are active.", "name": "COM_PREARM_MODE", "shortDesc": "Condition to enter prearmed mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Safety button", "value": 1}, {"description": "Always", "value": 2}]}, {"category": "Standard", "default": 0, "group": "Commander", "name": "COM_QC_ACT", "shortDesc": "Set action after a quadchute", "type": "Int32", "values": [{"description": "Warning only", "value": -1}, {"description": "Return mode", "value": 0}, {"description": "Land mode", "value": 1}, {"description": "Hold mode", "value": 2}]}, {"category": "Standard", "default": 95.0, "group": "Commander", "increment": 1.0, "longDesc": "The check fails if the RAM usage is above this threshold.\nA negative value disables the check.", "max": 100.0, "min": -1.0, "name": "COM_RAM_MAX", "shortDesc": "Maximum allowed RAM usage to pass checks", "type": "Float", "units": "%"}, {"bitmask": [{"description": "Mission", "index": 0}, {"description": "Auto modes", "index": 1}, {"description": "Offboard", "index": 2}, {"description": "External Mode", "index": 3}, {"description": "Altitude Cruise", "index": 4}], "category": "Standard", "default": 0, "group": "Commander", "longDesc": "Specify modes in which stick input is ignored and no failsafe action is triggered.\nExternal modes requiring stick input will still failsafe.\nAuto modes are: Hold, Takeoff, Land, RTL, Descend, Follow Target, Precland, Orbit.", "max": 31, "min": 0, "name": "COM_RCL_EXCEPT", "shortDesc": "Manual control loss exceptions", "type": "Int32"}, {"category": "Standard", "default": 3, "group": "Commander", "longDesc": "Selects stick input selection behavior:\neither a traditional remote control receiver (RC) or a MAVLink joystick (MANUAL_CONTROL message)\nPriority sources are immediately switched to whenever they get valid.\n0 RC only. Requires valid RC calibration.\n1 MAVLink only. RC and related checks are disabled.\n2 Switches only if current source becomes invalid.\n3 Locks to the first valid source until reboot.\n4 Ignores all sources.\n5 RC priority, then MAVLink (lower instance before higher)\n6 MAVLink priority (lower instance before higher), then RC\n7 RC priority, then MAVLink (higher instance before lower)\n8 MAVLink priority (higher instance before lower), then RC", "max": 8, "min": 0, "name": "COM_RC_IN_MODE", "shortDesc": "Manual control input source configuration", "type": "Int32", "values": [{"description": "RC only", "value": 0}, {"description": "MAVLink only", "value": 1}, {"description": "RC or MAVLink with fallback", "value": 2}, {"description": "RC or MAVLink keep first", "value": 3}, {"description": "Disable manual control", "value": 4}, {"description": "Prio: RC > MAVL 1 > MAVL 2", "value": 5}, {"description": "Prio: MAVL 1 > MAVL 2 > RC", "value": 6}, {"description": "Prio: RC > MAVL 2 > MAVL 1", "value": 7}, {"description": "Prio: MAVL 2 > MAVL 1 > RC", "value": 8}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.5, "group": "Commander", "increment": 0.1, "longDesc": "The time in seconds without a new setpoint from RC or Joystick, after which the connection is considered lost.\nThis must be kept short as the vehicle will use the last supplied setpoint until the timeout triggers.\nEnsure the value is not set lower than the update interval of the RC or Joystick.", "max": 35.0, "min": 0.0, "name": "COM_RC_LOSS_T", "shortDesc": "Manual control loss timeout", "type": "Float", "units": "s"}, {"bitmask": [{"description": "Enable override during auto modes (except for in critical battery reaction)", "index": 0}, {"description": "Enable override during offboard mode", "index": 1}], "category": "Standard", "default": 1, "group": "Commander", "longDesc": "When enabled, moving the sticks more than COM_RC_STICK_OV\nimmediately gives control back to the pilot by switching to Position mode and\nif position is unavailable Altitude mode.\nNote: Only has an effect on multicopters, and VTOLs in multicopter mode.", "max": 3, "min": 0, "name": "COM_RC_OVERRIDE", "shortDesc": "Enable manual control stick override", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 0, "default": 30.0, "group": "Commander", "increment": 0.05, "longDesc": "If COM_RC_OVERRIDE is enabled and the joystick input is moved more than this threshold\nthe autopilot the pilot takes over control.", "max": 80.0, "min": 5.0, "name": "COM_RC_STICK_OV", "shortDesc": "Stick override threshold", "type": "Float", "units": "%"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Commander", "increment": 0.1, "longDesc": "The minimal time from arming the motors until moving the vehicle is possible is COM_SPOOLUP_TIME seconds.\nGoal:\n- Motors and propellers spool up to idle speed before getting commanded to spin faster\n- Timeout for ESCs and smart batteries to successfulyy do failure checks\ne.g. for stuck rotors before the vehicle is off the ground", "max": 30.0, "min": 0.0, "name": "COM_SPOOLUP_TIME", "shortDesc": "Enforced delay between arming and further navigation", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "The mode transition after TAKEOFF has completed successfully.", "name": "COM_TAKEOFF_ACT", "shortDesc": "Action after TAKEOFF has been accepted", "type": "Int32", "values": [{"description": "Hold", "value": 0}, {"description": "Mission (if valid)", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "Allows to start the vehicle by throwing it into the air.", "name": "COM_THROW_EN", "shortDesc": "Enable throw-start", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Commander", "increment": 0.1, "longDesc": "When the throw launch is enabled, the drone will only allow motors to spin after this speed\nis exceeded before detecting the freefall. This is a safety feature to ensure the drone does\nnot turn on after accidental drop or a rapid movement before the throw.\nSet to 0 to disable.", "min": 0.0, "name": "COM_THROW_SPEED", "shortDesc": "Minimum speed for the throw start", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Commander", "longDesc": "This is the horizontal velocity error (EVH) threshold that will trigger a failsafe.\nThe default is appropriate for a multicopter. Can be increased for a fixed-wing.\nIf the previous velocity error was below this threshold, there is an additional\nfactor of 2.5 applied (threshold for invalidation 2.5 times the one for validation).", "min": 0.0, "name": "COM_VEL_FS_EVH", "shortDesc": "Horizontal velocity error threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Commander", "increment": 0.1, "longDesc": "Wind speed threshold above which an automatic failsafe action is triggered.\nFailsafe action can be specified with COM_WIND_MAX_ACT.", "min": -1.0, "name": "COM_WIND_MAX", "shortDesc": "High wind speed failsafe threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 0, "group": "Commander", "increment": 1, "longDesc": "Action the system takes when a wind speed above the specified threshold is detected.\nSee COM_WIND_MAX to set the failsafe threshold.\nIf enabled, it is not possible to resume the mission or switch to any auto mode other than\nRTL or Land if this threshold is exceeded. Taking over in any manual\nmode is still possible.", "name": "COM_WIND_MAX_ACT", "shortDesc": "High wind failsafe mode", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Warning", "value": 1}, {"description": "Hold", "value": 2}, {"description": "Return", "value": 3}, {"description": "Terminate", "value": 4}, {"description": "Land", "value": 5}]}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Commander", "increment": 0.1, "longDesc": "A warning is triggered if the currently estimated wind speed is above this value.\nWarning is sent periodically (every 1 minute).\nSet to -1 to disable.", "min": -1.0, "name": "COM_WIND_WARN", "shortDesc": "Wind speed warning threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "The GCS connection loss failsafe will only be entered after a timeout,\nset by COM_DL_LOSS_T in seconds. Once the timeout occurs the selected\naction will be executed.", "max": 6, "min": 0, "name": "NAV_DLL_ACT", "shortDesc": "Set GCS connection loss failsafe mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Hold mode", "value": 1}, {"description": "Return mode", "value": 2}, {"description": "Land mode", "value": 3}, {"description": "Terminate", "value": 5}, {"description": "Disarm", "value": 6}]}, {"category": "Standard", "default": 2, "group": "Commander", "longDesc": "The manual control loss failsafe will only be entered after a timeout,\nset by COM_RC_LOSS_T in seconds.", "max": 6, "min": 1, "name": "NAV_RCL_ACT", "shortDesc": "Set manual control loss failsafe mode", "type": "Int32", "values": [{"description": "Hold mode", "value": 1}, {"description": "Return mode", "value": 2}, {"description": "Land mode", "value": 3}, {"description": "Terminate", "value": 5}, {"description": "Disarm", "value": 6}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "EKF2", "max": 0.5, "min": 0.0, "name": "EKF2_ABIAS_INIT", "rebootRequired": true, "shortDesc": "1-sigma IMU accelerometer switch-on bias", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 25.0, "group": "EKF2", "longDesc": "If the magnitude of the IMU accelerometer vector exceeds this value, the EKF accel bias state estimation will be inhibited. This reduces the adverse effect of high manoeuvre accelerations and IMU nonlinerity and scale factor errors on the accel bias estimates.", "max": 200.0, "min": 20.0, "name": "EKF2_ABL_ACCLIM", "shortDesc": "Maximum IMU accel magnitude that allows IMU bias learning", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "EKF2", "longDesc": "If the magnitude of the IMU angular rate vector exceeds this value, the EKF accel bias state estimation will be inhibited. This reduces the adverse effect of rapid rotation rates and associated errors on the accel bias estimates.", "max": 20.0, "min": 2.0, "name": "EKF2_ABL_GYRLIM", "shortDesc": "Maximum IMU gyro angular rate magnitude that allows IMU bias learning", "type": "Float", "units": "rad/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "EKF2", "longDesc": "The ekf accel bias states will be limited to within a range equivalent to +- of this value.", "max": 0.8, "min": 0.0, "name": "EKF2_ABL_LIM", "shortDesc": "Accelerometer bias learning limit", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "EKF2", "longDesc": "The vector magnitude of angular rate and acceleration used to check if learning should be inhibited has a peak hold filter applied to it with an exponential decay. This parameter controls the time constant of the decay.", "max": 1.0, "min": 0.1, "name": "EKF2_ABL_TAU", "shortDesc": "Accel bias learning inhibit time constant", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 6, "default": 0.003, "group": "EKF2", "max": 0.01, "min": 0.0, "name": "EKF2_ACC_B_NOISE", "shortDesc": "Process noise for IMU accelerometer bias prediction", "type": "Float", "units": "m/s^3"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.35, "group": "EKF2", "max": 1.0, "min": 0.01, "name": "EKF2_ACC_NOISE", "shortDesc": "Accelerometer noise for covariance prediction", "type": "Float", "units": "m/s^2"}, {"bitmask": [{"description": "Horizontal position", "index": 0}, {"description": "Vertical position", "index": 1}], "category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Set bits in the following positions to enable: 0 : Horizontal position fusion 1 : Vertical position fusion", "max": 3, "min": 0, "name": "EKF2_AGP_CTRL", "shortDesc": "Aux global position (AGP) sensor aiding", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "EKF2", "max": 300.0, "min": 0.0, "name": "EKF2_AGP_DELAY", "rebootRequired": true, "shortDesc": "Aux global position estimator delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_AGP_GATE", "shortDesc": "Gate size for aux global position fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Automatic: reset on fusion timeout if no other source of position is available Dead-reckoning: reset on fusion timeout if no source of velocity is available", "name": "EKF2_AGP_MODE", "shortDesc": "Fusion reset mode", "type": "Int32", "values": [{"description": "Automatic", "value": 0}, {"description": "Dead-reckoning", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.9, "group": "EKF2", "longDesc": "Used to lower bound or replace the uncertainty included in the message", "min": 0.01, "name": "EKF2_AGP_NOISE", "shortDesc": "Measurement noise for aux global position measurements", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "EKF2", "max": 0.5, "min": 0.0, "name": "EKF2_ANGERR_INIT", "rebootRequired": true, "shortDesc": "1-sigma tilt angle uncertainty after gravity vector alignment", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "EKF2", "longDesc": "Airspeed data is fused for wind estimation if above this threshold. Set to 0 to disable airspeed fusion. For reliable wind estimation both sideslip (see EKF2_FUSE_BETA) and airspeed fusion should be enabled. Only applies to fixed-wing vehicles (or VTOLs in fixed-wing mode).", "min": 0.0, "name": "EKF2_ARSP_THR", "shortDesc": "Airspeed fusion threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "EKF2", "max": 50.0, "min": 5.0, "name": "EKF2_ASPD_MAX", "shortDesc": "Maximum airspeed used for baro static pressure compensation", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 100.0, "group": "EKF2", "max": 300.0, "min": 0.0, "name": "EKF2_ASP_DELAY", "rebootRequired": true, "shortDesc": "Airspeed measurement delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "max": 300.0, "min": 0.0, "name": "EKF2_AVEL_DELAY", "rebootRequired": true, "shortDesc": "Auxiliary Velocity Estimate delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "default": 1, "group": "EKF2", "longDesc": "If this parameter is enabled then the estimator will make use of the barometric height measurements to estimate its height in addition to other height sources (if activated).", "name": "EKF2_BARO_CTRL", "shortDesc": "Barometric sensor height aiding", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "EKF2", "max": 300.0, "min": 0.0, "name": "EKF2_BARO_DELAY", "rebootRequired": true, "shortDesc": "Barometer measurement delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_BARO_GATE", "shortDesc": "Gate size for barometric and GPS height fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.5, "group": "EKF2", "max": 15.0, "min": 0.01, "name": "EKF2_BARO_NOISE", "shortDesc": "Measurement noise for barometric altitude", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 100.0, "group": "EKF2", "longDesc": "This parameter controls the prediction of drag produced by bluff body drag along the forward/reverse axis when flying a multi-copter which enables estimation of wind drift when enabled by the EKF2_DRAG_CTRL parameter. The drag produced by this effect scales with speed squared. The predicted drag from the rotors is specified separately by the EKF2_MCOEF parameter. Set this parameter to zero to turn off the bluff body drag model for this axis.", "max": 200.0, "min": 0.0, "name": "EKF2_BCOEF_X", "shortDesc": "X-axis ballistic coefficient used for multi-rotor wind estimation", "type": "Float", "units": "kg/m^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 100.0, "group": "EKF2", "longDesc": "This parameter controls the prediction of drag produced by bluff body drag along the right/left axis when flying a multi-copter, which enables estimation of wind drift when enabled by the EKF2_DRAG_CTRL parameter. The drag produced by this effect scales with speed squared. The predicted drag from the rotors is specified separately by the EKF2_MCOEF parameter. Set this parameter to zero to turn off the bluff body drag model for this axis.", "max": 200.0, "min": 0.0, "name": "EKF2_BCOEF_Y", "shortDesc": "Y-axis ballistic coefficient used for multi-rotor wind estimation", "type": "Float", "units": "kg/m^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_BETA_GATE", "shortDesc": "Gate size for synthetic sideslip fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "EKF2", "max": 1.0, "min": 0.1, "name": "EKF2_BETA_NOISE", "shortDesc": "Noise for synthetic sideslip fusion", "type": "Float", "units": "m/s"}, {"bitmask": [{"description": "use geo_lookup declination", "index": 0}, {"description": "save EKF2_MAG_DECL on disarm", "index": 1}], "category": "Standard", "default": 3, "group": "EKF2", "longDesc": "Set bits in the following positions to enable functions. 0 : Set to true to use the declination from the geo_lookup library when the GPS position becomes available, set to false to always use the EKF2_MAG_DECL value. 1 : Set to true to save the EKF2_MAG_DECL parameter to the value returned by the EKF when the vehicle disarms.", "max": 3, "min": 0, "name": "EKF2_DECL_TYPE", "rebootRequired": true, "shortDesc": "Integer bitmask controlling handling of magnetic declination", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 200.0, "group": "EKF2", "longDesc": "Defines the delay between the current time and the delayed-time horizon. This value should be at least as large as the largest EKF2_XXX_DELAY parameter.", "max": 1000.0, "min": 0.0, "name": "EKF2_DELAY_MAX", "rebootRequired": true, "shortDesc": "Maximum delay of all the aiding sensors", "type": "Float", "units": "ms"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Activate wind speed estimation using specific-force measurements and a drag model defined by EKF2_BCOEF_[XY] and EKF2_MCOEF. Only use on vehicles that have their thrust aligned with the Z axis and no thrust in the XY plane.", "name": "EKF2_DRAG_CTRL", "shortDesc": "Multirotor wind estimation selection", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 2.5, "group": "EKF2", "longDesc": "Used by the multi-rotor specific drag force model. Increasing this makes the multi-rotor wind estimates adjust more slowly.", "max": 10.0, "min": 0.5, "name": "EKF2_DRAG_NOISE", "shortDesc": "Specific drag force observation noise variance", "type": "Float", "units": "(m/s^2)^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.4, "group": "EKF2", "max": 5.0, "min": 0.5, "name": "EKF2_EAS_NOISE", "shortDesc": "Measurement noise for airspeed fusion", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 1, "group": "EKF2", "name": "EKF2_EN", "shortDesc": "EKF2 enable", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "When enabled, constant position fusion is enabled when the vehicle is landed and armed. This is intended for IC engine warmup (e.g., fuel engines on catapult) to allow mode transitions to auto/takeoff despite vibrations from running engines.", "name": "EKF2_ENGINE_WRM", "shortDesc": "Enable constant position fusion during engine warmup", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "EKF2", "longDesc": "Used to lower bound or replace the uncertainty included in the message", "min": 0.05, "name": "EKF2_EVA_NOISE", "shortDesc": "Measurement noise for vision angle measurements", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_EVP_GATE", "shortDesc": "Gate size for vision position fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "EKF2", "longDesc": "Used to lower bound or replace the uncertainty included in the message", "min": 0.01, "name": "EKF2_EVP_NOISE", "shortDesc": "Measurement noise for vision position measurements", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_EVV_GATE", "shortDesc": "Gate size for vision velocity estimate fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "EKF2", "longDesc": "Used to lower bound or replace the uncertainty included in the message", "min": 0.01, "name": "EKF2_EVV_NOISE", "shortDesc": "Measurement noise for vision velocity measurements", "type": "Float", "units": "m/s"}, {"bitmask": [{"description": "Horizontal position", "index": 0}, {"description": "Vertical position", "index": 1}, {"description": "3D velocity", "index": 2}, {"description": "Yaw", "index": 3}], "category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Set bits in the following positions to enable: 0 : Horizontal position fusion 1 : Vertical position fusion 2 : 3D velocity fusion 3 : Yaw", "max": 15, "min": 0, "name": "EKF2_EV_CTRL", "shortDesc": "External vision (EV) sensor aiding", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "EKF2", "max": 300.0, "min": 0.0, "name": "EKF2_EV_DELAY", "rebootRequired": true, "shortDesc": "Vision Position Estimator delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "If set to 0 (default) the measurement noise is taken from the vision message and the EV noise parameters are used as a lower bound. If set to 1 the observation noise is set from the parameters directly,", "name": "EKF2_EV_NOISE_MD", "shortDesc": "External vision (EV) noise mode", "type": "Int32", "values": [{"description": "EV reported variance (parameter lower bound)", "value": 0}, {"description": "EV noise parameters", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_EV_POS_X", "shortDesc": "X position of VI sensor focal point in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_EV_POS_Y", "shortDesc": "Y position of VI sensor focal point in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_EV_POS_Z", "shortDesc": "Z position of VI sensor focal point in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 0, "group": "EKF2", "longDesc": "External vision will only be started and fused if the quality metric is above this threshold. The quality metric is a completely optional field provided by some VIO systems.", "max": 100, "min": 0, "name": "EKF2_EV_QMIN", "shortDesc": "External vision (EV) minimum quality (optional)", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "For reliable wind estimation both sideslip and airspeed fusion (see EKF2_ARSP_THR) should be enabled. Only applies to vehicles in fixed-wing mode or with airspeed fusion active. Note: side slip fusion is currently not supported for tailsitters.", "name": "EKF2_FUSE_BETA", "shortDesc": "Enable synthetic sideslip fusion", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "EKF2", "max": 0.2, "min": 0.0, "name": "EKF2_GBIAS_INIT", "rebootRequired": true, "shortDesc": "1-sigma IMU gyro switch-on bias", "type": "Float", "units": "rad/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 4.0, "group": "EKF2", "longDesc": "Sets the value of deadzone applied to negative baro innovations. Deadzone is enabled when EKF2_GND_EFF_DZ > 0.", "max": 10.0, "min": 0.0, "name": "EKF2_GND_EFF_DZ", "shortDesc": "Baro deadzone range for height fusion", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.5, "group": "EKF2", "longDesc": "Sets the maximum distance to the ground level where negative baro innovations are expected.", "max": 5.0, "min": 0.0, "name": "EKF2_GND_MAX_HGT", "shortDesc": "Height above ground level for ground effect zone", "type": "Float", "units": "m"}, {"bitmask": [{"description": "Sat count (EKF2_REQ_NSATS)", "index": 0}, {"description": "PDOP (EKF2_REQ_PDOP)", "index": 1}, {"description": "EPH (EKF2_REQ_EPH)", "index": 2}, {"description": "EPV (EKF2_REQ_EPV)", "index": 3}, {"description": "Speed accuracy (EKF2_REQ_SACC)", "index": 4}, {"description": "Horizontal position drift (EKF2_REQ_HDRIFT)", "index": 5}, {"description": "Vertical position drift (EKF2_REQ_VDRIFT)", "index": 6}, {"description": "Horizontal speed offset (EKF2_REQ_HDRIFT)", "index": 7}, {"description": "Vertical speed offset (EKF2_REQ_VDRIFT)", "index": 8}, {"description": "Spoofing", "index": 9}, {"description": "GPS fix type (EKF2_REQ_FIX)", "index": 10}, {"description": "Jamming", "index": 11}], "category": "Standard", "default": 2047, "group": "EKF2", "longDesc": "Each threshold value is defined by the parameter indicated next to the check. Drift and offset checks only run when the vehicle is on ground and stationary.", "max": 4095, "min": 0, "name": "EKF2_GPS_CHECK", "shortDesc": "Integer bitmask controlling GPS checks", "type": "Int32"}, {"bitmask": [{"description": "Lon/lat", "index": 0}, {"description": "Altitude", "index": 1}, {"description": "3D velocity", "index": 2}, {"description": "Dual antenna heading", "index": 3}], "category": "Standard", "default": 7, "group": "EKF2", "longDesc": "Set bits in the following positions to enable: 0 : Longitude and latitude fusion 1 : Altitude fusion 2 : 3D velocity fusion 3 : Dual antenna heading fusion", "max": 15, "min": 0, "name": "EKF2_GPS_CTRL", "shortDesc": "GNSS sensor aiding", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 110.0, "group": "EKF2", "longDesc": "GPS measurement delay relative to IMU measurement if PPS time correction is not available/enabled (PPS_CAP_ENABLE).", "max": 300.0, "min": 0.0, "name": "EKF2_GPS_DELAY", "rebootRequired": true, "shortDesc": "GPS measurement delay relative to IMU measurement", "type": "Float", "units": "ms"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Automatic: reset on fusion timeout if no other source of position is available. Dead-reckoning: reset on fusion timeout if no source of velocity is available.", "name": "EKF2_GPS_MODE", "shortDesc": "Fusion reset mode", "type": "Int32", "values": [{"description": "Automatic", "value": 0}, {"description": "Dead-reckoning", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward (roll) axis with origin relative to vehicle centre of gravity", "name": "EKF2_GPS_POS_X", "shortDesc": "X position of GPS antenna in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Right (pitch) axis with origin relative to vehicle centre of gravity", "name": "EKF2_GPS_POS_Y", "shortDesc": "Y position of GPS antenna in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Down (yaw) axis with origin relative to vehicle centre of gravity", "name": "EKF2_GPS_POS_Z", "shortDesc": "Z position of GPS antenna in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_GPS_P_GATE", "shortDesc": "Gate size for GNSS position fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "EKF2", "max": 10.0, "min": 0.01, "name": "EKF2_GPS_P_NOISE", "shortDesc": "Measurement noise for GNSS position", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_GPS_V_GATE", "shortDesc": "Gate size for GNSS velocity fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "EKF2", "max": 5.0, "min": 0.01, "name": "EKF2_GPS_V_NOISE", "shortDesc": "Measurement noise for GNSS velocity", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "EKF2", "max": 360.0, "min": 0.0, "name": "EKF2_GPS_YAW_OFF", "shortDesc": "Heading/Yaw offset for dual antenna GPS", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "EKF2", "max": 10.0, "min": 0.1, "name": "EKF2_GRAV_NOISE", "shortDesc": "Accelerometer measurement noise for gravity based observations", "type": "Float", "units": "g0"}, {"category": "Standard", "decimalPlaces": 1, "default": 15.0, "group": "EKF2", "longDesc": "If no airspeed measurements are available, the EKF-GSF AHRS calculation will assume this value of true airspeed when compensating for centripetal acceleration during turns. Set to zero to disable centripetal acceleration compensation during fixed wing flight modes.", "max": 100.0, "min": 0.0, "name": "EKF2_GSF_TAS", "shortDesc": "Default value of true airspeed used in EKF-GSF AHRS calculation", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.15, "group": "EKF2", "longDesc": "The ekf gyro bias states will be limited to within a range equivalent to +- of this value.", "max": 0.4, "min": 0.0, "name": "EKF2_GYR_B_LIM", "shortDesc": "Gyro bias learning limit", "type": "Float", "units": "rad/s"}, {"category": "Standard", "decimalPlaces": 6, "default": 0.001, "group": "EKF2", "max": 0.01, "min": 0.0, "name": "EKF2_GYR_B_NOISE", "shortDesc": "Process noise for IMU rate gyro bias prediction", "type": "Float", "units": "rad/s^2"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.015, "group": "EKF2", "max": 0.1, "min": 0.0001, "name": "EKF2_GYR_NOISE", "shortDesc": "Rate gyro noise for covariance prediction", "type": "Float", "units": "rad/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.6, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_HDG_GATE", "shortDesc": "Gate size for heading fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "EKF2", "max": 1.0, "min": 0.01, "name": "EKF2_HEAD_NOISE", "shortDesc": "Measurement noise for magnetic heading fusion", "type": "Float", "units": "rad"}, {"category": "Standard", "default": 1, "group": "EKF2", "longDesc": "When multiple height sources are enabled at the same time, the height estimate will always converge towards the reference height source selected by this parameter. The range sensor and vision options should only be used when for operation over a flat surface as the local NED origin will move up and down with ground level. If GPS is set as reference but altitude fusion is disabled in EKF2_GPS_CTRL, the GPS altitude is still used to initiaize the bias of the other height sensors.", "name": "EKF2_HGT_REF", "rebootRequired": true, "shortDesc": "Determines the reference source of height data used by the EKF", "type": "Int32", "values": [{"description": "Barometric pressure", "value": 0}, {"description": "GPS", "value": 1}, {"description": "Range sensor", "value": 2}, {"description": "Vision", "value": 3}]}, {"bitmask": [{"description": "Gyro Bias", "index": 0}, {"description": "Accel Bias", "index": 1}, {"description": "Gravity vector fusion", "index": 2}], "category": "Standard", "default": 7, "group": "EKF2", "max": 7, "min": 0, "name": "EKF2_IMU_CTRL", "shortDesc": "IMU control", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_IMU_POS_X", "shortDesc": "X position of IMU in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_IMU_POS_Y", "shortDesc": "Y position of IMU in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_IMU_POS_Z", "shortDesc": "Z position of IMU in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1, "group": "EKF2", "name": "EKF2_LOG_VERBOSE", "shortDesc": "Verbose logging", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "EKF2", "longDesc": "The heading is assumed to be observable when the body acceleration is greater than this parameter when a global position/velocity aiding source is active.", "max": 5.0, "min": 0.0, "name": "EKF2_MAG_ACCLIM", "shortDesc": "Horizontal acceleration threshold used for heading observability check", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 6, "default": 0.0001, "group": "EKF2", "max": 0.1, "min": 0.0, "name": "EKF2_MAG_B_NOISE", "shortDesc": "Process noise for body magnetic field prediction", "type": "Float", "units": "gauss/s"}, {"bitmask": [{"description": "Strength (EKF2_MAG_CHK_STR)", "index": 0}, {"description": "Inclination (EKF2_MAG_CHK_INC)", "index": 1}, {"description": "Wait for WMM", "index": 2}], "category": "Standard", "default": 1, "group": "EKF2", "longDesc": "Bitmask to set which check is used to decide whether the magnetometer data is valid. If GNSS data is received, the magnetic field is compared to a World Magnetic Model (WMM), otherwise an average value is used. This check is useful to reject occasional hard iron disturbance. Set bits to 1 to enable checks. Checks enabled by the following bit positions 0 : Magnetic field strength. Set tolerance using EKF2_MAG_CHK_STR 1 : Magnetic field inclination. Set tolerance using EKF2_MAG_CHK_INC 2 : Wait for GNSS to find the theoretical strength and inclination using the WMM", "max": 7, "min": 0, "name": "EKF2_MAG_CHECK", "shortDesc": "Magnetic field strength test selection", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "EKF2", "longDesc": "Maximum allowed deviation from the expected magnetic field inclination to pass the check.", "max": 90.0, "min": 0.0, "name": "EKF2_MAG_CHK_INC", "shortDesc": "Magnetic field inclination check tolerance", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "EKF2", "longDesc": "Maximum allowed deviation from the expected magnetic field strength to pass the check.", "max": 1.0, "min": 0.0, "name": "EKF2_MAG_CHK_STR", "shortDesc": "Magnetic field strength check tolerance", "type": "Float", "units": "gauss"}, {"category": "System", "decimalPlaces": 1, "default": 0.0, "group": "EKF2", "name": "EKF2_MAG_DECL", "shortDesc": "Magnetic declination", "type": "Float", "units": "deg", "volatile": true}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "EKF2", "max": 300.0, "min": 0.0, "name": "EKF2_MAG_DELAY", "rebootRequired": true, "shortDesc": "Magnetometer measurement delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 6, "default": 0.001, "group": "EKF2", "max": 0.1, "min": 0.0, "name": "EKF2_MAG_E_NOISE", "shortDesc": "Process noise for earth magnetic field prediction", "type": "Float", "units": "gauss/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_MAG_GATE", "shortDesc": "Gate size for magnetometer XYZ component fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "EKF2", "max": 1.0, "min": 0.001, "name": "EKF2_MAG_NOISE", "shortDesc": "Measurement noise for magnetometer 3-axis fusion", "type": "Float", "units": "gauss"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Integer controlling the type of magnetometer fusion used - magnetic heading or 3-component vector. The fusion of magnetometer data as a three component vector enables vehicle body fixed hard iron errors to be learned, but requires a stable earth field. If set to 'Automatic' magnetic heading fusion is used when on-ground and 3-axis magnetic field fusion in-flight. If set to 'Magnetic heading' magnetic heading fusion is used at all times. If set to 'None' the magnetometer will not be used under any circumstance. If no external source of yaw is available, it is possible to use post-takeoff horizontal movement combined with GNSS velocity measurements to align the yaw angle. If set to 'Init' the magnetometer is only used to initalize the heading.", "name": "EKF2_MAG_TYPE", "rebootRequired": true, "shortDesc": "Type of magnetometer fusion", "type": "Int32", "values": [{"description": "Automatic", "value": 0}, {"description": "Magnetic heading", "value": 1}, {"description": "None", "value": 5}, {"description": "Init", "value": 6}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.15, "group": "EKF2", "longDesc": "This parameter controls the prediction of drag produced by the propellers when flying a multi-copter, which enables estimation of wind drift when enabled by the EKF2_DRAG_CTRL parameter. The drag produced by this effect scales with speed not speed squared and is produced because some of the air velocity normal to the propeller axis of rotation is lost when passing through the rotor disc. This changes the momentum of the flow which creates a drag reaction force. When comparing un-ducted propellers of the same diameter, the effect is roughly proportional to the area of the propeller blades when viewed side on and changes with propeller selection. Momentum drag is significantly higher for ducted rotors. To account for the drag produced by the body which scales with speed squared, see documentation for the EKF2_BCOEF_X and EKF2_BCOEF_Y parameters. Set this parameter to zero to turn off the momentum drag model for both axis.", "max": 1.0, "min": 0.0, "name": "EKF2_MCOEF", "shortDesc": "Propeller momentum drag coefficient for multi-rotor wind estimation", "type": "Float", "units": "1/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.01, "group": "EKF2", "longDesc": "If the vehicle is on ground, is not moving as determined by the motion test and the range finder is returning invalid or no data, then an assumed range value of EKF2_MIN_RNG will be used by the terrain estimator so that a terrain height estimate is available at the start of flight in situations where the range finder may be inside its minimum measurements distance when on ground.", "min": 0.01, "name": "EKF2_MIN_RNG", "shortDesc": "Expected range finder reading when on ground", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Maximum number of IMUs to use for Multi-EKF. Set 0 to disable. Requires SENS_IMU_MODE 0.", "max": 4, "min": 0, "name": "EKF2_MULTI_IMU", "rebootRequired": true, "shortDesc": "Multi-EKF IMUs", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Maximum number of magnetometers to use for Multi-EKF. Set 0 to disable. Requires SENS_MAG_MODE 0.", "max": 4, "min": 0, "name": "EKF2_MULTI_MAG", "rebootRequired": true, "shortDesc": "Multi-EKF Magnetometers", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "EKF2", "max": 50.0, "min": 0.5, "name": "EKF2_NOAID_NOISE", "shortDesc": "Measurement noise for non-aiding position hold", "type": "Float", "units": "m"}, {"category": "Standard", "default": 5000000, "group": "EKF2", "longDesc": "Maximum lapsed time from last fusion of measurements that constrain velocity drift before the EKF will report the horizontal nav solution as invalid", "max": 10000000, "min": 500000, "name": "EKF2_NOAID_TOUT", "shortDesc": "Maximum inertial dead-reckoning time", "type": "Int32", "units": "us"}, {"category": "Standard", "default": 1, "group": "EKF2", "longDesc": "Enable optical flow fusion.", "name": "EKF2_OF_CTRL", "shortDesc": "Optical flow aiding", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "EKF2", "longDesc": "Assumes measurement is timestamped at trailing edge of integration period", "max": 300.0, "min": 0.0, "name": "EKF2_OF_DELAY", "rebootRequired": true, "shortDesc": "Optical flow measurement delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_OF_GATE", "shortDesc": "Gate size for optical flow fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Auto: use gyro from optical flow message if available, internal gyro otherwise. Internal: always use internal gyro", "name": "EKF2_OF_GYR_SRC", "shortDesc": "Optical flow angular rate compensation source", "type": "Int32", "values": [{"description": "Auto", "value": 0}, {"description": "Internal", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "EKF2", "longDesc": "Measurement noise for the optical flow sensor when it's reported quality metric is at the minimum", "min": 0.05, "name": "EKF2_OF_N_MAX", "shortDesc": "Optical flow maximum noise", "type": "Float", "units": "rad/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.15, "group": "EKF2", "longDesc": "Measurement noise for the optical flow sensor when it's reported quality metric is at the maximum", "min": 0.05, "name": "EKF2_OF_N_MIN", "shortDesc": "Optical flow minimum noise", "type": "Float", "units": "rad/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_OF_POS_X", "shortDesc": "X position of optical flow focal point in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_OF_POS_Y", "shortDesc": "Y position of optical flow focal point in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_OF_POS_Z", "shortDesc": "Z position of optical flow focal point in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1, "group": "EKF2", "longDesc": "Optical Flow data will only be used in air if the sensor reports a quality metric >= EKF2_OF_QMIN", "max": 255, "min": 0, "name": "EKF2_OF_QMIN", "shortDesc": "In air optical flow minimum quality", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Optical Flow data will only be used on the ground if the sensor reports a quality metric >= EKF2_OF_QMIN_GND", "max": 255, "min": 0, "name": "EKF2_OF_QMIN_GND", "shortDesc": "On ground optical flow minimum quality", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "EKF2", "longDesc": "This is the ratio of static pressure error to dynamic pressure generated by a negative wind relative velocity along the X body axis. If the baro height estimate rises during backwards flight, then this will be a negative number.", "max": 0.5, "min": -0.5, "name": "EKF2_PCOEF_XN", "shortDesc": "Static pressure position error coefficient for the negative X axis", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "EKF2", "longDesc": "This is the ratio of static pressure error to dynamic pressure generated by a positive wind relative velocity along the X body axis. If the baro height estimate rises during forward flight, then this will be a negative number.", "max": 0.5, "min": -0.5, "name": "EKF2_PCOEF_XP", "shortDesc": "Static pressure position error coefficient for the positive X axis", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "EKF2", "longDesc": "This is the ratio of static pressure error to dynamic pressure generated by a wind relative velocity along the negative Y (LH) body axis. If the baro height estimate rises during sideways flight to the left, then this will be a negative number.", "max": 0.5, "min": -0.5, "name": "EKF2_PCOEF_YN", "shortDesc": "Pressure position error coefficient for the negative Y axis", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "EKF2", "longDesc": "This is the ratio of static pressure error to dynamic pressure generated by a wind relative velocity along the positive Y (RH) body axis. If the baro height estimate rises during sideways flight to the right, then this will be a negative number.", "max": 0.5, "min": -0.5, "name": "EKF2_PCOEF_YP", "shortDesc": "Pressure position error coefficient for the positive Y axis", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "EKF2", "longDesc": "This is the ratio of static pressure error to dynamic pressure generated by a wind relative velocity along the Z body axis.", "max": 0.5, "min": -0.5, "name": "EKF2_PCOEF_Z", "shortDesc": "Static pressure position error coefficient for the Z axis", "type": "Float"}, {"category": "Standard", "default": 10000, "group": "EKF2", "longDesc": "EKF prediction period in microseconds. This should ideally be an integer multiple of the IMU time delta. Actual filter update will be an integer multiple of IMU update.", "max": 20000, "min": 1000, "name": "EKF2_PREDICT_US", "shortDesc": "EKF prediction period", "type": "Int32", "units": "us"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "EKF2", "max": 100.0, "min": 2.0, "name": "EKF2_REQ_EPH", "shortDesc": "Required EPH to use GPS", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "max": 100.0, "min": 2.0, "name": "EKF2_REQ_EPV", "shortDesc": "Required EPV to use GPS", "type": "Float", "units": "m"}, {"category": "Standard", "default": 3, "group": "EKF2", "longDesc": "Minimum GPS fix type required for GPS usage.", "name": "EKF2_REQ_FIX", "shortDesc": "Required GPS fix", "type": "Int32", "values": [{"description": "No fix required", "value": 0}, {"description": "2D fix", "value": 2}, {"description": "3D fix", "value": 3}, {"description": "RTCM code differential", "value": 4}, {"description": "RTK float", "value": 5}, {"description": "RTK fixed", "value": 6}, {"description": "Extrapolated", "value": 8}]}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "EKF2", "longDesc": "Minimum continuous period without GPS failure required to mark a healthy GPS status. It can be reduced to speed up initialization, but it's recommended to keep this unchanged for a vehicle.", "min": 0.1, "name": "EKF2_REQ_GPS_H", "rebootRequired": true, "shortDesc": "Required GPS health time on startup", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "EKF2", "max": 1.0, "min": 0.1, "name": "EKF2_REQ_HDRIFT", "shortDesc": "Maximum horizontal drift speed to use GPS", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 6, "group": "EKF2", "max": 12, "min": 4, "name": "EKF2_REQ_NSATS", "shortDesc": "Required satellite count to use GPS", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.5, "group": "EKF2", "max": 5.0, "min": 1.5, "name": "EKF2_REQ_PDOP", "shortDesc": "Maximum PDOP to use GPS", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "EKF2", "max": 5.0, "min": 0.5, "name": "EKF2_REQ_SACC", "shortDesc": "Required speed accuracy to use GPS", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "EKF2", "max": 1.5, "min": 0.1, "name": "EKF2_REQ_VDRIFT", "shortDesc": "Maximum vertical drift speed to use GPS", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 5.0, "group": "EKF2", "longDesc": "If the vehicle absolute altitude exceeds this value then the estimator will not fuse range measurements to estimate its height. This only applies when conditional range aid mode is activated (EKF2_RNG_CTRL = 1).", "max": 10.0, "min": 1.0, "name": "EKF2_RNG_A_HMAX", "shortDesc": "Maximum height above ground allowed for conditional range aid mode", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1.0, "group": "EKF2", "longDesc": "If the vehicle horizontal speed exceeds this value then the estimator will not fuse range measurements to estimate its height. This only applies when conditional range aid mode is activated (EKF2_RNG_CTRL = 1).", "max": 2.0, "min": 0.1, "name": "EKF2_RNG_A_VMAX", "shortDesc": "Maximum horizontal velocity allowed for conditional range aid mode", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 1, "group": "EKF2", "longDesc": "WARNING: Range finder measurements are less reliable and can experience unexpected errors. For these reasons, if accurate control of height relative to ground is required, it is recommended to use the MPC_ALT_MODE parameter instead, unless baro errors are severe enough to cause problems with landing and takeoff. If this parameter is enabled then the estimator will make use of the range finder measurements to estimate its height in addition to other height sources (if activated). Range sensor aiding can be enabled (i.e.: always use) or set in \"conditional\" mode. Conditional mode: This enables the range finder to be used during low speed (< EKF2_RNG_A_VMAX) and low altitude (< EKF2_RNG_A_HMAX) operation, eg takeoff and landing, where baro interference from rotor wash is excessive and can corrupt EKF state estimates. It is intended to be used where a vertical takeoff and landing is performed, and horizontal flight does not occur until above EKF2_RNG_A_HMAX.", "name": "EKF2_RNG_CTRL", "shortDesc": "Range sensor height aiding", "type": "Int32", "values": [{"description": "Disable range fusion", "value": 0}, {"description": "Enabled (conditional mode)", "value": 1}, {"description": "Enabled", "value": 2}]}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "max": 300.0, "min": 0.0, "name": "EKF2_RNG_DELAY", "rebootRequired": true, "shortDesc": "Range finder measurement delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "EKF2", "longDesc": "Limit for fog detection. If the range finder measures a distance greater than this value, the measurement is considered to not be blocked by fog or rain. If there's a jump from larger than RNG_FOG to smaller than EKF2_RNG_FOG, the measurement may gets rejected. 0 - disabled", "max": 20.0, "min": 0.0, "name": "EKF2_RNG_FOG", "shortDesc": "Maximum distance at which the range finder could detect fog (m)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_RNG_GATE", "shortDesc": "Gate size for range finder fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "default": 1.0, "group": "EKF2", "longDesc": "To be used, the time derivative of the distance sensor measurements projected on the vertical axis needs to be statistically consistent with the estimated vertical velocity of the drone. Decrease this value to make the filter more robust against range finder faulty data (stuck, reflections, ...). Note: tune the range finder noise parameters (EKF2_RNG_NOISE and EKF2_RNG_SFE) before tuning this gate.", "max": 5.0, "min": 0.1, "name": "EKF2_RNG_K_GATE", "shortDesc": "Gate size used for range finder kinematic consistency check", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "EKF2", "min": 0.01, "name": "EKF2_RNG_NOISE", "shortDesc": "Measurement noise for range finder fusion", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "max": 0.75, "min": -0.75, "name": "EKF2_RNG_PITCH", "shortDesc": "Range sensor pitch offset", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_RNG_POS_X", "shortDesc": "X position of range finder origin in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_RNG_POS_Y", "shortDesc": "Y position of range finder origin in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_RNG_POS_Z", "shortDesc": "Z position of range finder origin in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1.0, "group": "EKF2", "longDesc": "Minimum duration during which the reported range finder signal quality needs to be non-zero in order to be declared valid (s)", "max": 5.0, "min": 0.1, "name": "EKF2_RNG_QLTY_T", "shortDesc": "Minumum range validity period", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0.05, "group": "EKF2", "longDesc": "Specifies the increase in range finder noise with range.", "max": 0.2, "min": 0.0, "name": "EKF2_RNG_SFE", "shortDesc": "Range finder range dependent noise scaler", "type": "Float", "units": "m/m"}, {"category": "Standard", "default": 0.2, "group": "EKF2", "longDesc": "EKF2 instances have to be better than the selected by at least this amount before their relative score can be reduced.", "name": "EKF2_SEL_ERR_RED", "shortDesc": "Selector error reduce threshold", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "EKF2", "longDesc": "EKF2 selector acceleration error threshold for comparing accelerometers. Acceleration vector differences larger than this will result in accumulated velocity error.", "name": "EKF2_SEL_IMU_ACC", "shortDesc": "Selector acceleration threshold", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "default": 15.0, "group": "EKF2", "longDesc": "EKF2 selector maximum accumulated angular error threshold for comparing gyros. Accumulated angular error larger than this will result in the sensor being declared faulty.", "name": "EKF2_SEL_IMU_ANG", "shortDesc": "Selector angular threshold", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 7.0, "group": "EKF2", "longDesc": "EKF2 selector angular rate error threshold for comparing gyros. Angular rate vector differences larger than this will result in accumulated angular error.", "name": "EKF2_SEL_IMU_RAT", "shortDesc": "Selector angular rate threshold", "type": "Float", "units": "deg/s"}, {"category": "Standard", "default": 2.0, "group": "EKF2", "longDesc": "EKF2 selector maximum accumulated velocity threshold for comparing accelerometers. Accumulated velocity error larger than this will result in the sensor being declared faulty.", "name": "EKF2_SEL_IMU_VEL", "shortDesc": "Selector angular threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Use for vehicles where the measured body Z magnetic field is subject to strong magnetic interference. For magnetic heading fusion the magnetometer Z measurement will be replaced by a synthetic value calculated using the knowledge of the 3D magnetic field vector at the location of the drone. Therefore, this parameter will only have an effect if the global position of the drone is known. For 3D mag fusion the magnetometer Z measurement will simply be ignored instead of fusing the synthetic value.", "name": "EKF2_SYNT_MAG_Z", "shortDesc": "Enable synthetic magnetometer Z component measurement", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_TAS_GATE", "shortDesc": "Gate size for TAS fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.25, "group": "EKF2", "longDesc": "Controls how tightly the output track the EKF states", "max": 1.0, "min": 0.1, "name": "EKF2_TAU_POS", "shortDesc": "Output predictor position time constant", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.25, "group": "EKF2", "max": 1.0, "name": "EKF2_TAU_VEL", "shortDesc": "Time constant of the velocity output prediction and smoothing filter", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "EKF2", "min": 0.0, "name": "EKF2_TERR_GRAD", "shortDesc": "Magnitude of terrain gradient", "type": "Float", "units": "m/m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "min": 0.5, "name": "EKF2_TERR_NOISE", "shortDesc": "Terrain altitude process noise", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 100.0, "group": "EKF2", "max": 299792458.0, "name": "EKF2_VEL_LIM", "shortDesc": "Velocity limit", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "EKF2", "longDesc": "When unaided, the wind estimate uncertainty (1-sigma, in m/s) increases by this amount every second.", "max": 1.0, "min": 0.0, "name": "EKF2_WIND_NSD", "shortDesc": "Process noise spectral density for wind velocity prediction", "type": "Float", "units": "m/s^2/sqrt(Hz)"}, {"category": "Standard", "default": 0, "group": "Events", "longDesc": "Enable/disable event task for RC Loss. When enabled, an alarm tune will be\nplayed via buzzer or ESCs, if supported. The alarm will sound after a disarm,\nif the vehicle was previously armed and only if the vehicle had RC signal at\nsome point. Particularly useful for locating crashed drones without a GPS\nsensor.", "name": "EV_TSK_RC_LOSS", "rebootRequired": true, "shortDesc": "RC Loss Alarm", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Events", "longDesc": "Enable/disable event task for displaying the vehicle status using arm-mounted\nLEDs. When enabled and if the vehicle supports it, LEDs will flash\nindicating various vehicle status changes. Currently PX4 has not implemented\nany specific status events.\n-", "name": "EV_TSK_STAT_DIS", "rebootRequired": true, "shortDesc": "Status Display", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 30.0, "group": "FW Attitude Control", "increment": 0.5, "longDesc": "Applies to both directions in all manual modes with attitude stabilization but without altitude control", "max": 90.0, "min": 0.0, "name": "FW_MAN_P_MAX", "shortDesc": "Maximum manual pitch angle", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 45.0, "group": "FW Attitude Control", "increment": 0.5, "longDesc": "Applies to both directions in all manual modes with attitude stabilization", "max": 90.0, "min": 0.0, "name": "FW_MAN_R_MAX", "shortDesc": "Maximum manual roll angle", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 30.0, "group": "FW Attitude Control", "increment": 0.5, "longDesc": "This is the maximally added yaw rate setpoint from the yaw stick in any attitude controlled flight mode.\nIt is added to the yaw rate setpoint generated by the controller for turn coordination.", "min": 0.0, "name": "FW_MAN_YR_MAX", "shortDesc": "Maximum manually added yaw rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "FW Attitude Control", "increment": 0.5, "longDesc": "An airframe specific offset of the pitch setpoint in degrees, the value is\nadded to the pitch setpoint and should correspond to the pitch at\ntypical cruise speed of the airframe.", "max": 90.0, "min": -90.0, "name": "FW_PSP_OFF", "shortDesc": "Pitch setpoint offset (pitch at level flight)", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 60.0, "group": "FW Attitude Control", "increment": 0.5, "max": 180.0, "min": 0.0, "name": "FW_P_RMAX_NEG", "shortDesc": "Maximum negative / down pitch rate setpoint", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 60.0, "group": "FW Attitude Control", "increment": 0.5, "max": 180.0, "min": 0.0, "name": "FW_P_RMAX_POS", "shortDesc": "Maximum positive / up pitch rate setpoint", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "FW Attitude Control", "increment": 0.05, "longDesc": "This defines the latency between a pitch step input and the achieved setpoint\n(inverse to a P gain). Smaller systems may require smaller values.", "max": 1.0, "min": 0.2, "name": "FW_P_TC", "shortDesc": "Attitude pitch time constant", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 70.0, "group": "FW Attitude Control", "increment": 0.5, "max": 180.0, "min": 0.0, "name": "FW_R_RMAX", "shortDesc": "Maximum roll rate setpoint", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "FW Attitude Control", "increment": 0.05, "longDesc": "This defines the latency between a roll step input and the achieved setpoint\n(inverse to a P gain). Smaller systems may require smaller values.", "max": 1.0, "min": 0.2, "name": "FW_R_TC", "shortDesc": "Attitude Roll Time Constant", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "FW Attitude Control", "increment": 0.05, "max": 10.0, "min": 0.0, "name": "FW_WR_FF", "shortDesc": "Wheel steering rate feed forward", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "FW Attitude Control", "increment": 0.005, "longDesc": "This gain defines how much control response will result out of a steady\nstate error. It trims any constant error.", "max": 10.0, "min": 0.0, "name": "FW_WR_I", "shortDesc": "Wheel steering rate integrator gain", "type": "Float", "units": "%/rad"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "FW Attitude Control", "increment": 0.05, "max": 1.0, "min": 0.0, "name": "FW_WR_IMAX", "shortDesc": "Wheel steering rate integrator limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.5, "group": "FW Attitude Control", "increment": 0.005, "longDesc": "This defines how much the wheel steering input will be commanded depending on the\ncurrent body angular rate error.", "max": 10.0, "min": 0.0, "name": "FW_WR_P", "shortDesc": "Wheel steering rate proportional gain", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "default": 0, "group": "FW Attitude Control", "longDesc": "Only enabled during automatic runway takeoff and landing.\nIn all manual modes the wheel is directly controlled with yaw stick.", "name": "FW_W_EN", "shortDesc": "Enable wheel steering controller", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 30.0, "group": "FW Attitude Control", "increment": 0.5, "longDesc": "This limits the maximum wheel steering rate the controller will output (in degrees per\nsecond).", "max": 90.0, "min": 0.0, "name": "FW_W_RMAX", "shortDesc": "Maximum wheel steering rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 50.0, "group": "FW Attitude Control", "increment": 0.5, "max": 180.0, "min": 0.0, "name": "FW_Y_RMAX", "shortDesc": "Maximum yaw rate setpoint", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "FW Auto Landing", "increment": 0.01, "longDesc": "Sets a fraction of full flaps during landing.\nAlso applies to flaperons if enabled in the mixer/allocation.", "max": 1.0, "min": 0.0, "name": "FW_FLAPS_LND_SCL", "shortDesc": "Flaps setting during landing", "type": "Float", "units": "norm"}, {"bitmask": [{"description": "Abort if terrain is not found (only applies to mission landings)", "index": 0}, {"description": "Abort if terrain times out (after a first successful measurement)", "index": 1}], "category": "Standard", "default": 3, "group": "FW Auto Landing", "longDesc": "Terrain estimation:\nbit 0: Abort if terrain is not found\nbit 1: Abort if terrain times out (after a first successful measurement)\nThe last estimate is always used as ground, whether the last valid measurement or the land waypoint, depending on the\nselected abort criteria, until an abort condition is entered. If FW_LND_USETER == 0, these bits are ignored.\nTODO: Extend automatic abort conditions\ne.g. glide slope tracking error (horizontal and vertical)", "max": 3, "min": 0, "name": "FW_LND_ABORT", "shortDesc": "Bit mask to set the automatic landing abort conditions", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "FW Auto Landing", "increment": 0.1, "longDesc": "The calibrated airspeed setpoint during landing.\nIf set <= 0, landing airspeed = FW_AIRSPD_MIN by default.", "min": -1.0, "name": "FW_LND_AIRSPD", "shortDesc": "Landing airspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "FW Auto Landing", "increment": 0.5, "longDesc": "Typically the desired landing slope angle when landing configuration (flaps, airspeed) is enabled.\nSet this value within the vehicle's performance limits.", "max": 45.0, "min": 1.0, "name": "FW_LND_ANG", "shortDesc": "Maximum landing slope angle", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "FW Auto Landing", "longDesc": "Allows to deploy the landing configuration (flaps, landing airspeed, etc.) already in\nthe loiter-down waypoint before the final approach.\nOtherwise is enabled only in the final approach.", "name": "FW_LND_EARLYCFG", "shortDesc": "Early landing configuration deployment", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.5, "group": "FW Auto Landing", "increment": 0.5, "longDesc": "NOTE: max(FW_LND_FLALT, FW_LND_FL_TIME * |z-velocity|) is taken as the flare altitude", "min": 0.0, "name": "FW_LND_FLALT", "shortDesc": "Landing flare altitude (relative to landing altitude)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 15.0, "group": "FW Auto Landing", "increment": 0.5, "longDesc": "Maximum pitch during landing flare.", "max": 45.0, "min": 0.0, "name": "FW_LND_FL_PMAX", "shortDesc": "Flare, maximum pitch", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.5, "group": "FW Auto Landing", "increment": 0.5, "longDesc": "Minimum pitch during landing flare.", "max": 15.0, "min": -5.0, "name": "FW_LND_FL_PMIN", "shortDesc": "Flare, minimum pitch", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.25, "group": "FW Auto Landing", "increment": 0.1, "longDesc": "TECS will attempt to control the aircraft to this sink rate via pitch angle (throttle killed during flare)", "max": 2.0, "min": 0.0, "name": "FW_LND_FL_SINK", "shortDesc": "Landing flare sink rate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "FW Auto Landing", "increment": 0.1, "longDesc": "Multiplied by the descent rate to calculate a dynamic altitude at which\nto trigger the flare.\nNOTE: max(FW_LND_FLALT, FW_LND_FL_TIME * descent rate) is taken as the flare altitude", "max": 5.0, "min": 0.1, "name": "FW_LND_FL_TIME", "shortDesc": "Landing flare time", "type": "Float", "units": "s"}, {"category": "Standard", "default": 2, "group": "FW Auto Landing", "longDesc": "Approach angle nudging: shifts the touchdown point laterally while keeping the approach entrance point constant\nApproach path nudging: shifts the touchdown point laterally along with the entire approach path\nThis is useful for manually adjusting the landing point in real time when map or GNSS errors cause an offset from the\ndesired landing vector. Nudging is done with yaw stick, constrained to FW_LND_TD_OFF (in meters) and the direction is\nrelative to the vehicle heading (stick deflection to the right = land point moves to the right as seen by the vehicle).", "max": 2, "min": 0, "name": "FW_LND_NUDGE", "shortDesc": "Landing touchdown nudging option", "type": "Int32", "values": [{"description": "Disable nudging", "value": 0}, {"description": "Nudge approach angle", "value": 1}, {"description": "Nudge approach path", "value": 2}]}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "FW Auto Landing", "increment": 1.0, "max": 10.0, "min": 0.0, "name": "FW_LND_TD_OFF", "shortDesc": "Maximum lateral position offset for the touchdown point", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "FW Auto Landing", "increment": 0.1, "longDesc": "This is the time after the start of flaring that we expect the vehicle to touch the runway.\nAt this time, a 0.5s clamp down ramp will engage, constraining the pitch setpoint to RWTO_PSP.\nIf enabled, ensure that RWTO_PSP is configured appropriately for full gear contact on ground roll.\nSet to -1.0 to disable touchdown clamping. E.g. it may not be desirable to clamp on belly landings.\nThe touchdown time will be constrained to be greater than or equal to the flare time (FW_LND_FL_TIME).", "max": 5.0, "min": -1.0, "name": "FW_LND_TD_TIME", "shortDesc": "Landing touchdown time (since flare start)", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "FW Auto Landing", "increment": 0.1, "longDesc": "The TECS altitude time constant (FW_T_ALT_TC) is multiplied by this value.", "max": 1.0, "min": 0.2, "name": "FW_LND_THRTC_SC", "shortDesc": "Altitude time constant factor for landing and low-height flight", "type": "Float", "units": ""}, {"category": "Standard", "default": 1, "group": "FW Auto Landing", "longDesc": "This is critical for detecting when to flare, and should be enabled if possible.\nIf enabled and no measurement is found within a given timeout, the landing waypoint altitude will be used OR the landing\nwill be aborted, depending on the criteria set in FW_LND_ABORT.\nIf disabled, FW_LND_ABORT terrain based criteria are ignored.", "max": 2, "min": 0, "name": "FW_LND_USETER", "shortDesc": "Use terrain estimation during landing", "type": "Int32", "values": [{"description": "Disable the terrain estimate", "value": 0}, {"description": "Use the terrain estimate to trigger the flare (only)", "value": 1}, {"description": "Calculate landing glide slope relative to the terrain estimate", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Auto Landing", "increment": 0.01, "max": 1.0, "min": 0.0, "name": "FW_SPOILERS_LND", "shortDesc": "Spoiler landing setting", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Auto Takeoff", "increment": 0.01, "longDesc": "Sets a fraction of full flaps during take-off.\nAlso applies to flaperons if enabled in the mixer/allocation.", "max": 1.0, "min": 0.0, "name": "FW_FLAPS_TO_SCL", "shortDesc": "Flaps setting during take-off", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.05, "group": "FW Auto Takeoff", "increment": 0.05, "longDesc": "Launch is detected when acceleration in body forward direction is above FW_LAUN_AC_THLD for FW_LAUN_AC_T seconds.", "max": 5.0, "min": 0.0, "name": "FW_LAUN_AC_T", "shortDesc": "Trigger time", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 30.0, "group": "FW Auto Takeoff", "increment": 0.5, "longDesc": "Launch is detected when acceleration in body forward direction is above FW_LAUN_AC_THLD for FW_LAUN_AC_T seconds.", "min": 0.0, "name": "FW_LAUN_AC_THLD", "shortDesc": "Trigger acceleration threshold", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "default": 0, "group": "FW Auto Takeoff", "longDesc": "Enables automatic launch detection based on measured acceleration. Use for hand- or catapult-launched vehicles.\nNot compatible with runway takeoff.", "name": "FW_LAUN_DETCN_ON", "shortDesc": "Fixed-wing launch detection", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "FW Auto Takeoff", "increment": 0.5, "longDesc": "Start the motor(s) this amount of seconds after launch is detected.", "max": 10.0, "min": 0.0, "name": "FW_LAUN_MOT_DEL", "shortDesc": "Motor delay", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "FW Auto Takeoff", "increment": 0.1, "longDesc": "The calibrated airspeed setpoint during the takeoff climbout.\nIf set <= 0, FW_AIRSPD_MIN will be set by default.", "min": -1.0, "name": "FW_TKO_AIRSPD", "shortDesc": "Takeoff Airspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "FW Auto Takeoff", "increment": 0.5, "max": 80.0, "min": -5.0, "name": "FW_TKO_PITCH_MIN", "shortDesc": "Minimum pitch during takeoff", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 30, "group": "FW General", "longDesc": "The time the system should do open loop loiter and wait for GPS recovery\nbefore it starts descending. Set to 0 to disable. Roll angle is set to FW_GPSF_R.\nDoes only apply for fixed-wing vehicles or VTOLs with NAV_FORCE_VT set to 0.", "min": 0, "name": "FW_GPSF_LT", "shortDesc": "GPS failure loiter time", "type": "Int32", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 15.0, "group": "FW General", "increment": 0.5, "longDesc": "Roll angle in GPS failure loiter mode.", "max": 60.0, "min": 0.0, "name": "FW_GPSF_R", "shortDesc": "GPS failure fixed roll angle", "type": "Float", "units": "deg"}, {"bitmask": [{"description": "Alternative stick configuration (height rate on throttle stick, airspeed on pitch stick)", "index": 0}, {"description": "Enable airspeed setpoint via sticks in altitude and position flight mode", "index": 1}], "category": "Standard", "default": 2, "group": "FW General", "longDesc": "Applies in manual Position and Altitude flight modes.", "max": 3, "min": 0, "name": "FW_POS_STK_CONF", "shortDesc": "Custom stick configuration", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 30.0, "group": "FW General", "increment": 0.5, "longDesc": "Applies in any altitude controlled flight mode.", "max": 80.0, "min": 0.0, "name": "FW_P_LIM_MAX", "shortDesc": "Maximum pitch angle setpoint", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": -30.0, "group": "FW General", "increment": 0.5, "longDesc": "Applies in any altitude controlled flight mode.", "max": 0.0, "min": -60.0, "name": "FW_P_LIM_MIN", "shortDesc": "Minimum pitch angle setpoint", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 50.0, "group": "FW General", "increment": 0.5, "longDesc": "Applies in any altitude controlled flight mode.", "max": 75.0, "min": 35.0, "name": "FW_R_LIM", "shortDesc": "Maximum roll angle setpoint", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW General", "increment": 0.01, "longDesc": "This is the minimum throttle while on the ground (\"landed\") in auto modes.", "max": 1.0, "min": 0.0, "name": "FW_THR_IDLE", "shortDesc": "Idle throttle", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "FW General", "increment": 0.01, "longDesc": "Applies in any altitude controlled flight mode.\nShould be set accordingly to achieve FW_T_CLMB_MAX.", "max": 1.0, "min": 0.0, "name": "FW_THR_MAX", "shortDesc": "Throttle limit max", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW General", "increment": 0.01, "longDesc": "Applies in any altitude controlled flight mode.\nUsually set to 0 but can be increased to prevent the motor from stopping when\ndescending, which can increase achievable descent rates.", "max": 1.0, "min": 0.0, "name": "FW_THR_MIN", "shortDesc": "Throttle limit min", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.0, "group": "FW General", "increment": 0.01, "longDesc": "In auto modes: default climb rate output by controller to achieve altitude setpoints.\nIn manual modes: maximum climb rate setpoint.", "min": 0.1, "name": "FW_T_CLMB_R_SP", "shortDesc": "Default target climbrate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "FW General", "increment": 0.01, "longDesc": "In auto modes: default sink rate output by controller to achieve altitude setpoints.\nIn manual modes: maximum sink rate setpoint.", "min": 0.1, "name": "FW_T_SINK_R_SP", "shortDesc": "Default target sinkrate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "FW General", "increment": 1.0, "longDesc": "Adjusts the amount of weighting that the pitch control\napplies to speed vs height errors.\n0 -> control height only\n2 -> control speed only (gliders)", "max": 2.0, "min": 0.0, "name": "FW_T_SPDWEIGHT", "shortDesc": "Speed <--> Altitude weight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.5, "group": "FW General", "increment": 1.0, "longDesc": "This is used to constrain a minimum altitude below which we keep wings level to avoid wing tip strike. It's safer\nto give a slight margin here (> 0m)", "min": 0.0, "name": "FW_WING_HEIGHT", "shortDesc": "Height (AGL) of the wings when the aircraft is on the ground", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "FW General", "increment": 0.1, "longDesc": "This is used for limiting the roll setpoint near the ground. (if multiple wings, take the longest span)", "min": 0.1, "name": "FW_WING_SPAN", "shortDesc": "The aircraft's wing span (length from tip to tip)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 0, "default": 90.0, "group": "FW Lateral Control", "increment": 1.0, "longDesc": "Maximum change in roll angle setpoint per second.\nApplied in all Auto modes, plus manual Position & Altitude modes.", "min": 0.0, "name": "FW_PN_R_SLEW_MAX", "shortDesc": "Path navigation roll slew rate limit", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "FW Longitudinal Control", "increment": 0.5, "longDesc": "The controller will increase the commanded airspeed to maintain\nthis minimum groundspeed to the next waypoint.", "max": 40.0, "min": 0.0, "name": "FW_GND_SPD_MIN", "shortDesc": "Minimum groundspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Longitudinal Control", "increment": 0.01, "longDesc": "Maximum slew rate for the commanded throttle", "max": 1.0, "min": 0.0, "name": "FW_THR_SLEW_MAX", "shortDesc": "Throttle max slew rate", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 5.0, "group": "FW Longitudinal Control", "increment": 0.5, "min": 2.0, "name": "FW_T_ALT_TC", "shortDesc": "Altitude error time constant", "type": "Float"}, {"category": "Standard", "decimalPlaces": 0, "default": -1.0, "group": "FW Longitudinal Control", "longDesc": "Minimum altitude error needed to descend with max airspeed and minimal throttle.\nA negative value disables fast descend.", "min": -1.0, "name": "FW_T_F_ALT_ERR", "shortDesc": "Fast descend: minimum altitude error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "FW Longitudinal Control", "increment": 0.05, "max": 1.0, "min": 0.0, "name": "FW_T_HRATE_FF", "shortDesc": "Height rate feed forward", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "FW Longitudinal Control", "increment": 0.05, "longDesc": "Increase it to trim out speed and height offsets faster,\nwith the downside of possible overshoots and oscillations.", "max": 2.0, "min": 0.0, "name": "FW_T_I_GAIN_PIT", "shortDesc": "Integrator gain pitch", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "FW Longitudinal Control", "increment": 0.1, "max": 2.0, "min": 0.0, "name": "FW_T_PTCH_DAMP", "shortDesc": "Pitch damping gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 15.0, "group": "FW Longitudinal Control", "increment": 0.5, "longDesc": "Is used to compensate for the additional drag created by turning.\nIncrease this gain if the aircraft initially loses energy in turns\nand reduce if the aircraft initially gains energy in turns.", "max": 20.0, "min": 0.0, "name": "FW_T_RLL2THR", "shortDesc": "Roll -> Throttle feedforward", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "FW Longitudinal Control", "increment": 0.01, "max": 3.0, "min": 0.5, "name": "FW_T_SEB_R_FF", "shortDesc": "Specific total energy balance rate feedforward gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "FW Longitudinal Control", "increment": 0.5, "max": 15.0, "min": 1.0, "name": "FW_T_SINK_MAX", "shortDesc": "Maximum descent rate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "FW Longitudinal Control", "increment": 0.1, "longDesc": "For the airspeed filter in TECS.", "max": 10.0, "min": 0.01, "name": "FW_T_SPD_DEV_STD", "shortDesc": "Airspeed rate measurement standard deviation", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "FW Longitudinal Control", "increment": 0.1, "longDesc": "This is defining the noise in the airspeed rate for the constant airspeed rate model\nof the TECS airspeed filter.", "max": 10.0, "min": 0.01, "name": "FW_T_SPD_PRC_STD", "shortDesc": "Process noise standard deviation for the airspeed rate", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.07, "group": "FW Longitudinal Control", "increment": 0.1, "longDesc": "For the airspeed filter in TECS.", "max": 10.0, "min": 0.01, "name": "FW_T_SPD_STD", "shortDesc": "Airspeed measurement standard deviation", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "FW Longitudinal Control", "increment": 0.01, "longDesc": "This filter is applied to the specific total energy rate used for throttle damping.", "max": 2.0, "min": 0.0, "name": "FW_T_STE_R_TC", "shortDesc": "Specific total energy rate first order filter time constant", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 5.0, "group": "FW Longitudinal Control", "increment": 0.5, "min": 2.0, "name": "FW_T_TAS_TC", "shortDesc": "True airspeed error time constant", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "FW Longitudinal Control", "increment": 0.01, "longDesc": "This is the damping gain for the throttle demand loop.", "max": 1.0, "min": 0.0, "name": "FW_T_THR_DAMPING", "shortDesc": "Throttle damping factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.02, "group": "FW Longitudinal Control", "increment": 0.005, "longDesc": "Increase it to trim out speed and height offsets faster,\nwith the downside of possible overshoots and oscillations.", "max": 1.0, "min": 0.0, "name": "FW_T_THR_INTEG", "shortDesc": "Integrator gain throttle", "type": "Float"}, {"category": "Standard", "decimalPlaces": 0, "default": -1.0, "group": "FW Longitudinal Control", "increment": 1.0, "longDesc": "Height above ground threshold below which tighter altitude\ntracking gets enabled (see FW_LND_THRTC_SC). Below this height, TECS smoothly\n(1 sec / sec) transitions the altitude tracking time constant from FW_T_ALT_TC\nto FW_LND_THRTC_SC*FW_T_ALT_TC.\n-1 to disable.", "min": -1.0, "name": "FW_T_THR_LOW_HGT", "shortDesc": "Low-height threshold for tighter altitude tracking", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 7.0, "group": "FW Longitudinal Control", "increment": 0.5, "longDesc": "This is the maximum vertical acceleration\neither up or down that the controller will use to correct speed\nor height errors.", "max": 10.0, "min": 1.0, "name": "FW_T_VERT_ACC", "shortDesc": "Maximum vertical acceleration", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Longitudinal Control", "increment": 0.01, "longDesc": "Multiplying this factor with the current absolute wind estimate gives the airspeed offset\nadded to the minimum airspeed setpoint limit. This helps to make the\nsystem more robust against disturbances (turbulence) in high wind.", "min": 0.0, "name": "FW_WIND_ARSP_SC", "shortDesc": "Wind-based airspeed scaling factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.7, "group": "FW NPFG Control", "increment": 0.01, "longDesc": "Damping ratio of NPFG control law.", "max": 1.0, "min": 0.1, "name": "NPFG_DAMPING", "shortDesc": "NPFG damping ratio", "type": "Float"}, {"category": "Standard", "default": 1, "group": "FW NPFG Control", "longDesc": "Avoids limit cycling from a too aggressively tuned period/damping combination.\nIf false, also disables upper bound NPFG_PERIOD_UB.", "name": "NPFG_LB_PERIOD", "shortDesc": "Enable automatic lower bound on the NPFG period", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "FW NPFG Control", "increment": 0.1, "longDesc": "Period of NPFG control law.", "max": 100.0, "min": 1.0, "name": "NPFG_PERIOD", "shortDesc": "NPFG period", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.5, "group": "FW NPFG Control", "increment": 0.1, "longDesc": "Multiplied by period for conservative minimum period bounding (when period lower\nbounding is enabled). 1.0 bounds at marginal stability.", "max": 10.0, "min": 1.0, "name": "NPFG_PERIOD_SF", "shortDesc": "Period safety factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "FW NPFG Control", "increment": 0.05, "longDesc": "Time constant of roll controller command / response, modeled as first order delay.\nUsed to determine lower period bound. Setting zero disables automatic period bounding.", "max": 2.0, "min": 0.0, "name": "NPFG_ROLL_TC", "shortDesc": "Roll time constant", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.32, "group": "FW NPFG Control", "increment": 0.01, "longDesc": "Multiplied by the track error boundary to determine when the aircraft switches\nto the next waypoint and/or path segment. Should be less than 1.", "max": 1.0, "min": 0.1, "name": "NPFG_SW_DST_MLT", "shortDesc": "NPFG switch distance multiplier", "type": "Float"}, {"category": "Standard", "default": 1, "group": "FW NPFG Control", "longDesc": "Adapts period to maintain track keeping in variable winds and path curvature.", "name": "NPFG_UB_PERIOD", "shortDesc": "Enable automatic upper bound on the NPFG period", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "FW Performance", "increment": 0.01, "longDesc": "Factor applied to the minimum and stall airspeed when flaps are fully deployed.", "max": 1.0, "min": 0.5, "name": "FW_AIRSPD_FLP_SC", "shortDesc": "Airspeed scale with full flaps", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "FW Performance", "increment": 0.5, "longDesc": "The maximal airspeed (calibrated airspeed) the user is able to command.", "min": 0.5, "name": "FW_AIRSPD_MAX", "shortDesc": "Maximum Airspeed (CAS)", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "FW Performance", "increment": 0.5, "longDesc": "The minimal airspeed (calibrated airspeed) the user is able to command.\nFurther, if the airspeed falls below this value, the TECS controller will try to\nincrease airspeed more aggressively.\nHas to be set according to the vehicle's stall speed (which should be set in FW_AIRSPD_STALL),\nwith some margin between the stall speed and minimum airspeed.\nThis value corresponds to the desired minimum speed with the default load factor (level flight, default weight),\nand is automatically adpated to the current load factor (calculated from roll setpoint and WEIGHT_GROSS/WEIGHT_BASE).", "min": 0.5, "name": "FW_AIRSPD_MIN", "shortDesc": "Minimum Airspeed (CAS)", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 7.0, "group": "FW Performance", "increment": 0.5, "longDesc": "The stall airspeed (calibrated airspeed) of the vehicle.\nIt is used for airspeed sensor failure detection and for the control\nsurface scaling airspeed limits.", "min": 0.5, "name": "FW_AIRSPD_STALL", "shortDesc": "Stall Airspeed (CAS)", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 15.0, "group": "FW Performance", "increment": 0.5, "longDesc": "The trim CAS (calibrated airspeed) of the vehicle. If an airspeed controller is active,\nthis is the default airspeed setpoint that the controller will try to achieve.\nThis value corresponds to the trim airspeed with the default load factor (level flight, default weight).", "min": 0.5, "name": "FW_AIRSPD_TRIM", "shortDesc": "Trim (Cruise) Airspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 0, "default": -1.0, "group": "FW Performance", "increment": 1.0, "longDesc": "Altitude in standard atmosphere at which the vehicle in normal configuration (WEIGHT_BASE) is still able to achieve a maximum climb rate of\n0.5m/s at maximum throttle (FW_THR_MAX). Used to compensate for air density in FW_T_CLMB_MAX.\nSet negative to disable.", "min": -1.0, "name": "FW_SERVICE_CEIL", "shortDesc": "Service ceiling", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Performance", "increment": 0.01, "longDesc": "Required throttle (at sea level, standard atmosphere) for level flight at maximum airspeed FW_AIRSPD_MAX\nSet to 0 to disable mapping of airspeed to trim throttle.", "max": 1.0, "min": 0.0, "name": "FW_THR_ASPD_MAX", "shortDesc": "Throttle at max airspeed", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Performance", "increment": 0.01, "longDesc": "Required throttle (at sea level, standard atmosphere) for level flight at minimum airspeed FW_AIRSPD_MIN\nSet to 0 to disable mapping of airspeed to trim throttle below FW_AIRSPD_TRIM.", "max": 1.0, "min": 0.0, "name": "FW_THR_ASPD_MIN", "shortDesc": "Throttle at min airspeed", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.6, "group": "FW Performance", "increment": 0.01, "longDesc": "Required throttle (at sea level, standard atmosphere) for level flight at FW_AIRSPD_TRIM", "max": 1.0, "min": 0.0, "name": "FW_THR_TRIM", "shortDesc": "Trim throttle", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "FW Performance", "increment": 0.5, "longDesc": "This is the maximum calibrated climb rate that the aircraft can achieve with\nthe throttle set to FW_THR_MAX and the airspeed set to the\ntrim value. For electric aircraft make sure this number can be\nachieved towards the end of flight when the battery voltage has reduced.", "min": 1.0, "name": "FW_T_CLMB_MAX", "shortDesc": "Maximum climb rate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.0, "group": "FW Performance", "increment": 0.5, "longDesc": "This is the minimum calibrated sink rate of the aircraft with the throttle\nset to THR_MIN and flown at the same airspeed as used\nto measure FW_T_CLMB_MAX.", "min": 1.0, "name": "FW_T_SINK_MIN", "shortDesc": "Minimum descent rate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "FW Performance", "increment": 0.5, "longDesc": "This is the weight of the vehicle at which it's performance limits were derived. A zero or negative value\ndisables trim throttle and minimum airspeed compensation based on weight.", "name": "WEIGHT_BASE", "shortDesc": "Vehicle base weight", "type": "Float", "units": "kg"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "FW Performance", "increment": 0.1, "longDesc": "This is the actual weight of the vehicle at any time. This value will differ from WEIGHT_BASE in case weight was added\nor removed from the base weight. Examples are the addition of payloads or larger batteries. A zero or negative value\ndisables trim throttle and minimum airspeed compensation based on weight.", "name": "WEIGHT_GROSS", "shortDesc": "Vehicle gross weight", "type": "Float", "units": "kg"}, {"category": "Standard", "default": 90.0, "group": "FW Rate Control", "max": 720.0, "min": 10.0, "name": "FW_ACRO_X_MAX", "shortDesc": "Acro body roll max rate setpoint", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "FW Rate Control", "longDesc": "If this parameter is set to 1, the yaw rate controller is enabled in Fixed-wing Acro mode.\nOtherwise the pilot commands directly the yaw actuator.\nIt is disabled by default because an active yaw rate controller will fight against the\nnatural turn coordination of the plane.", "name": "FW_ACRO_YAW_EN", "shortDesc": "Enable yaw rate controller in Acro", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 90.0, "group": "FW Rate Control", "max": 720.0, "min": 10.0, "name": "FW_ACRO_Y_MAX", "shortDesc": "Acro body pitch max rate setpoint", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 45.0, "group": "FW Rate Control", "max": 720.0, "min": 10.0, "name": "FW_ACRO_Z_MAX", "shortDesc": "Acro body yaw max rate setpoint", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 1, "group": "FW Rate Control", "longDesc": "This enables a logic that automatically adjusts the output of the rate controller to take\ninto account the real torque produced by an aerodynamic control surface given\nthe current deviation from the trim airspeed (FW_AIRSPD_TRIM).\nEnable when using aerodynamic control surfaces (e.g.: plane)\nDisable when using rotor wings (e.g.: autogyro)", "name": "FW_ARSP_SCALE_EN", "shortDesc": "Enable airspeed scaling", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "FW Rate Control", "longDesc": "This compensates for voltage drop of the battery over time by attempting to\nnormalize performance across the operating range of the battery.", "name": "FW_BAT_SCALE_EN", "shortDesc": "Enable throttle scale by battery level", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "This increment is added to TRIM_PITCH when airspeed is FW_AIRSPD_MAX.", "max": 0.5, "min": -0.5, "name": "FW_DTRIM_P_VMAX", "shortDesc": "Pitch trim increment at maximum airspeed", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "This increment is added to TRIM_PITCH when airspeed is FW_AIRSPD_MIN.", "max": 0.5, "min": -0.5, "name": "FW_DTRIM_P_VMIN", "shortDesc": "Pitch trim increment at minimum airspeed", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "This increment is added to TRIM_ROLL when airspeed is FW_AIRSPD_MAX.", "max": 0.5, "min": -0.5, "name": "FW_DTRIM_R_VMAX", "shortDesc": "Roll trim increment at maximum airspeed", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "This increment is added to TRIM_ROLL when airspeed is FW_AIRSPD_MIN.", "max": 0.5, "min": -0.5, "name": "FW_DTRIM_R_VMIN", "shortDesc": "Roll trim increment at minimum airspeed", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "This increment is added to TRIM_YAW when airspeed is FW_AIRSPD_MAX.", "max": 0.5, "min": -0.5, "name": "FW_DTRIM_Y_VMAX", "shortDesc": "Yaw trim increment at maximum airspeed", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "This increment is added to TRIM_YAW when airspeed is FW_AIRSPD_MIN.", "max": 0.5, "min": -0.5, "name": "FW_DTRIM_Y_VMIN", "shortDesc": "Yaw trim increment at minimum airspeed", "type": "Float"}, {"category": "Standard", "default": 1, "group": "FW Rate Control", "name": "FW_GC_EN", "shortDesc": "Enable rate gain compression", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "FW Rate Control", "increment": 0.01, "longDesc": "The range of the compression gain is between this parameter and 1.0", "max": 1.0, "min": 0.0, "name": "FW_GC_GAIN_MIN", "shortDesc": "Compression gain lower limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "Scale factor applied to the desired pitch actuator command in full manual mode. This parameter allows\nto adjust the throws of the control surfaces.", "min": 0.0, "name": "FW_MAN_P_SC", "shortDesc": "Manual pitch scale", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "Scale factor applied to the desired roll actuator command in full manual mode. This parameter allows\nto adjust the throws of the control surfaces.", "max": 1.0, "min": 0.0, "name": "FW_MAN_R_SC", "shortDesc": "Manual roll scale", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "Scale factor applied to the desired yaw actuator command in full manual mode. This parameter allows\nto adjust the throws of the control surfaces.", "min": 0.0, "name": "FW_MAN_Y_SC", "shortDesc": "Manual yaw scale", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "FW Rate Control", "increment": 0.005, "longDesc": "Pitch rate differential gain.", "max": 10.0, "min": 0.0, "name": "FW_PR_D", "shortDesc": "Pitch rate derivative gain", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "FW Rate Control", "increment": 0.05, "longDesc": "Direct feed forward from rate setpoint to control surface output", "max": 10.0, "min": 0.0, "name": "FW_PR_FF", "shortDesc": "Pitch rate feed forward", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "FW Rate Control", "increment": 0.005, "max": 10.0, "min": 0.0, "name": "FW_PR_I", "shortDesc": "Pitch rate integrator gain", "type": "Float", "units": "%/rad"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "FW Rate Control", "increment": 0.05, "max": 1.0, "min": 0.0, "name": "FW_PR_IMAX", "shortDesc": "Pitch rate integrator limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.08, "group": "FW Rate Control", "increment": 0.005, "max": 10.0, "min": 0.0, "name": "FW_PR_P", "shortDesc": "Pitch rate proportional gain", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "This gain can be used to counteract the \"adverse yaw\" effect for fixed wings.\nWhen the plane enters a roll it will tend to yaw the nose out of the turn.\nThis gain enables the use of a yaw actuator to counteract this effect.", "min": 0.0, "name": "FW_RLL_TO_YAW_FF", "shortDesc": "Roll control to yaw control feedforward gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "FW Rate Control", "increment": 0.005, "max": 10.0, "min": 0.0, "name": "FW_RR_D", "shortDesc": "Roll rate derivative gain", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "FW Rate Control", "increment": 0.05, "longDesc": "Direct feed forward from rate setpoint to control surface output.", "max": 10.0, "min": 0.0, "name": "FW_RR_FF", "shortDesc": "Roll rate feed forward", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "FW Rate Control", "increment": 0.01, "max": 10.0, "min": 0.0, "name": "FW_RR_I", "shortDesc": "Roll rate integrator gain", "type": "Float", "units": "%/rad"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "FW Rate Control", "increment": 0.05, "max": 1.0, "min": 0.0, "name": "FW_RR_IMAX", "shortDesc": "Roll integrator limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "FW Rate Control", "increment": 0.005, "max": 10.0, "min": 0.0, "name": "FW_RR_P", "shortDesc": "Roll rate proportional gain", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "default": 0, "group": "FW Rate Control", "longDesc": "Chose source for manual setting of spoilers in manual flight modes.", "name": "FW_SPOILERS_MAN", "shortDesc": "Spoiler input in manual flight", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Flaps channel", "value": 1}, {"description": "Aux1", "value": 2}]}, {"category": "Standard", "default": 1, "group": "FW Rate Control", "longDesc": "If set to 1, the airspeed measurement data, if valid, is used in the following controllers:\n- Rate controller: output scaling\n- Attitude controller: coordinated turn controller\n- Position controller: airspeed setpoint tracking, takeoff logic\n- VTOL: transition logic", "name": "FW_USE_AIRSPD", "shortDesc": "Use airspeed for control", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "FW Rate Control", "increment": 0.005, "max": 10.0, "min": 0.0, "name": "FW_YR_D", "shortDesc": "Yaw rate derivative gain", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "FW Rate Control", "increment": 0.05, "longDesc": "Direct feed forward from rate setpoint to control surface output", "max": 10.0, "min": 0.0, "name": "FW_YR_FF", "shortDesc": "Yaw rate feed forward", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.1, "group": "FW Rate Control", "increment": 0.5, "max": 10.0, "min": 0.0, "name": "FW_YR_I", "shortDesc": "Yaw rate integrator gain", "type": "Float", "units": "%/rad"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "FW Rate Control", "increment": 0.05, "max": 1.0, "min": 0.0, "name": "FW_YR_IMAX", "shortDesc": "Yaw rate integrator limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "FW Rate Control", "increment": 0.005, "max": 10.0, "min": 0.0, "name": "FW_YR_P", "shortDesc": "Yaw rate proportional gain", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "default": 0, "group": "Failure Detector", "longDesc": "If enabled, failure detector will verify that for motors, a minimum amount of ESC current per throttle\nlevel is being consumed.\nOtherwise this indicates an motor failure.", "name": "FD_ACT_EN", "rebootRequired": true, "shortDesc": "Enable Actuator Failure check", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 10.0, "group": "Failure Detector", "increment": 1.0, "longDesc": "threshold = FD_ACT_MOT_C2T * thrust + FD_ACT_HIGH_OFF", "max": 30.0, "min": 0.0, "name": "FD_ACT_HIGH_OFF", "shortDesc": "Overcurrent motor failure limit offset", "type": "Float", "units": "A"}, {"category": "Standard", "decimalPlaces": 2, "default": 10.0, "group": "Failure Detector", "increment": 1.0, "longDesc": "threshold = FD_ACT_MOT_C2T * thrust - FD_ACT_LOW_OFF", "max": 30.0, "min": 0.0, "name": "FD_ACT_LOW_OFF", "shortDesc": "Undercurrent motor failure limit offset", "type": "Float", "units": "A"}, {"category": "Standard", "decimalPlaces": 2, "default": 35.0, "group": "Failure Detector", "increment": 1.0, "longDesc": "Determines the slope between expected steady state current and linearized, normalized thrust command.\nE.g. FD_ACT_MOT_C2T A represents the expected steady state current at 100%.\nFD_ACT_LOW_OFF and FD_ACT_HIGH_OFF offset the threshold from that slope.", "max": 50.0, "min": 0.0, "name": "FD_ACT_MOT_C2T", "shortDesc": "Motor Failure Current/Throttle Scale", "type": "Float", "units": "A/%"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Failure Detector", "increment": 0.01, "longDesc": "Failure detection per motor only triggers above this thrust value.\nSet to 1 to disable the detection.", "max": 1.0, "min": 0.0, "name": "FD_ACT_MOT_THR", "shortDesc": "Motor Failure Thrust Threshold", "type": "Float", "units": "norm"}, {"category": "Standard", "default": 1000, "group": "Failure Detector", "increment": 100, "longDesc": "Motor failure only triggers after current thresholds are exceeded for this time.", "max": 10000, "min": 10, "name": "FD_ACT_MOT_TOUT", "shortDesc": "Motor Failure Hysteresis Time", "type": "Int32", "units": "ms"}, {"category": "Standard", "default": 1, "group": "Failure Detector", "longDesc": "If enabled, failure detector will verify that all the ESCs have successfully armed when the vehicle has transitioned to the armed state.\nTimeout for receiving an acknowledgement from the ESCs is 0.3s, if no feedback is received the failure detector will auto disarm the vehicle.", "name": "FD_ESCS_EN", "shortDesc": "Enable checks on ESCs that report their arming state", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Failure Detector", "longDesc": "Enabled on either AUX5 or MAIN5 depending on board.\nExternal ATS is required by ASTM F3322-18.", "name": "FD_EXT_ATS_EN", "rebootRequired": true, "shortDesc": "Enable PWM input on for engaging failsafe from an external automatic trigger system (ATS)", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 1900, "group": "Failure Detector", "longDesc": "External ATS is required by ASTM F3322-18.", "name": "FD_EXT_ATS_TRIG", "shortDesc": "The PWM threshold from external automatic trigger system for engaging failsafe", "type": "Int32", "units": "us"}, {"category": "Standard", "default": 60, "group": "Failure Detector", "longDesc": "Maximum pitch angle before FailureDetector triggers the attitude_failure flag.\nThe flag triggers flight termination (if @CBRK_FLIGHTTERM = 0),\nwhich sets outputs to their failsafe values.\nOn takeoff the flag triggers lockdown (irrespective of @CBRK_FLIGHTTERM),\nwhich disarms motors but does not set outputs to failsafe values.\nSetting this parameter to 0 disables the check", "max": 180, "min": 0, "name": "FD_FAIL_P", "shortDesc": "FailureDetector Max Pitch", "type": "Int32", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Failure Detector", "longDesc": "Seconds (decimal) that pitch has to exceed FD_FAIL_P before being considered as a failure.", "max": 5.0, "min": 0.02, "name": "FD_FAIL_P_TTRI", "shortDesc": "Pitch failure trigger time", "type": "Float", "units": "s"}, {"category": "Standard", "default": 60, "group": "Failure Detector", "longDesc": "Maximum roll angle before FailureDetector triggers the attitude_failure flag.\nThe flag triggers flight termination (if @CBRK_FLIGHTTERM = 0),\nwhich sets outputs to their failsafe values.\nOn takeoff the flag triggers lockdown (irrespective of @CBRK_FLIGHTTERM),\nwhich disarms motors but does not set outputs to failsafe values.\nSetting this parameter to 0 disables the check", "max": 180, "min": 0, "name": "FD_FAIL_R", "shortDesc": "FailureDetector Max Roll", "type": "Int32", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Failure Detector", "longDesc": "Seconds (decimal) that roll has to exceed FD_FAIL_R before being considered as a failure.", "max": 5.0, "min": 0.02, "name": "FD_FAIL_R_TTRI", "shortDesc": "Roll failure trigger time", "type": "Float", "units": "s"}, {"category": "Standard", "default": 30, "group": "Failure Detector", "increment": 1, "longDesc": "Value at which the imbalanced propeller metric (based on horizontal and\nvertical acceleration variance) triggers a failure\nSetting this value to 0 disables the feature.", "max": 1000, "min": 0, "name": "FD_IMB_PROP_THR", "shortDesc": "Imbalanced propeller check threshold", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 1000.0, "group": "Flight Task Orbit", "increment": 0.5, "max": 10000.0, "min": 1.0, "name": "MC_ORBIT_RAD_MAX", "shortDesc": "Maximum radius of orbit", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Flight Task Orbit", "name": "MC_ORBIT_YAW_MOD", "shortDesc": "Yaw behaviour during orbit flight", "type": "Int32", "values": [{"description": "Front to Circle Center", "value": 0}, {"description": "Hold Initial Heading", "value": 1}, {"description": "Uncontrolled", "value": 2}, {"description": "Hold Front Tangent to Circle", "value": 3}, {"description": "Manually (yaw stick) Controlled", "value": 4}]}, {"category": "Standard", "default": 0, "group": "Follow target", "longDesc": "Maintain altitude or track target's altitude. When maintaining the altitude,\nthe drone can crash into terrain when the target moves uphill. When tracking\nthe target's altitude, the follow altitude FLW_TGT_HT should be high enough\nto prevent terrain collisions due to GPS inaccuracies of the target.", "name": "FLW_TGT_ALT_M", "shortDesc": "Altitude control mode", "type": "Int32", "values": [{"description": "2D Tracking: Maintain constant altitude relative to home and track XY position only", "value": 0}, {"description": "2D + Terrain: Maintain constant altitude relative to terrain below and track XY position", "value": 1}, {"description": "3D Tracking: Track target's altitude (be aware that GPS altitude bias usually makes this useless)", "value": 2}]}, {"category": "Standard", "default": 8.0, "group": "Follow target", "longDesc": "The distance in meters to follow the target at", "min": 1.0, "name": "FLW_TGT_DST", "shortDesc": "Distance to follow target from", "type": "Float", "units": "m"}, {"category": "Standard", "default": 180.0, "group": "Follow target", "longDesc": "Angle to follow the target from. 0.0 Equals straight in front of the target's\ncourse (direction of motion) and the angle increases in clockwise direction,\nmeaning Right-side would be 90.0 degrees while Left-side is -90.0 degrees\nNote: When the user force sets the angle out of the min/max range, it will be\nwrapped (e.g. 480 -> 120) in the range to gracefully handle the out of range.", "max": 180.0, "min": -180.0, "name": "FLW_TGT_FA", "shortDesc": "Follow Angle setting in degrees", "type": "Float"}, {"category": "Standard", "default": 8.0, "group": "Follow target", "longDesc": "Following height above the target", "min": 8.0, "name": "FLW_TGT_HT", "shortDesc": "Follow target height", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Follow target", "longDesc": "This is the maximum tangential velocity the drone will circle around the target whenever\nan orbit angle setpoint changes. Higher value means more aggressive follow behavior.", "max": 20.0, "min": 0.0, "name": "FLW_TGT_MAX_VEL", "shortDesc": "Maximum tangential velocity setting for generating the follow orbit trajectory", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Follow target", "longDesc": "lower values increase the responsiveness to changing position, but also ignore less noise", "max": 1.0, "min": 0.0, "name": "FLW_TGT_RS", "shortDesc": "Responsiveness to target movement in Target Estimator", "type": "Float"}, {"bitmask": [{"description": "GPS (with QZSS)", "index": 0}, {"description": "SBAS", "index": 1}, {"description": "Galileo", "index": 2}, {"description": "BeiDou", "index": 3}, {"description": "GLONASS", "index": 4}, {"description": "NAVIC", "index": 5}], "category": "Standard", "default": 0, "group": "GPS", "longDesc": "This integer bitmask controls the set of GNSS systems used by the receiver. Check your\nreceiver's documentation on how many systems are supported to be used in parallel.\nCurrently this functionality is just implemented for u-blox receivers.\nWhen no bits are set, the receiver's default configuration should be used.\nSet bits true to enable:\n0 : Use GPS (with QZSS)\n1 : Use SBAS (multiple GPS augmentation systems)\n2 : Use Galileo\n3 : Use BeiDou\n4 : Use GLONASS\n5 : Use NAVIC", "max": 63, "min": 0, "name": "GPS_1_GNSS", "rebootRequired": true, "shortDesc": "GNSS Systems for Primary GPS (integer bitmask)", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "GPS", "longDesc": "Select the GPS protocol over serial.\nAuto-detection will probe all protocols, and thus is a bit slower.", "max": 7, "min": 0, "name": "GPS_1_PROTOCOL", "rebootRequired": true, "shortDesc": "Protocol for Main GPS", "type": "Int32", "values": [{"description": "Auto detect", "value": 0}, {"description": "u-blox", "value": 1}, {"description": "MTK", "value": 2}, {"description": "Ashtech / Trimble", "value": 3}, {"description": "Emlid Reach", "value": 4}, {"description": "Femtomes", "value": 5}, {"description": "NMEA (generic)", "value": 6}]}, {"bitmask": [{"description": "GPS (with QZSS)", "index": 0}, {"description": "SBAS", "index": 1}, {"description": "Galileo", "index": 2}, {"description": "BeiDou", "index": 3}, {"description": "GLONASS", "index": 4}, {"description": "NAVIC", "index": 5}], "category": "Standard", "default": 0, "group": "GPS", "longDesc": "This integer bitmask controls the set of GNSS systems used by the receiver. Check your\nreceiver's documentation on how many systems are supported to be used in parallel.\nCurrently this functionality is just implemented for u-blox receivers.\nWhen no bits are set, the receiver's default configuration should be used.\nSet bits true to enable:\n0 : Use GPS (with QZSS)\n1 : Use SBAS (multiple GPS augmentation systems)\n2 : Use Galileo\n3 : Use BeiDou\n4 : Use GLONASS\n5 : Use NAVIC", "max": 63, "min": 0, "name": "GPS_2_GNSS", "rebootRequired": true, "shortDesc": "GNSS Systems for Secondary GPS (integer bitmask)", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "GPS", "longDesc": "Select the GPS protocol over serial.\nAuto-detection will probe all protocols, and thus is a bit slower.", "max": 6, "min": 0, "name": "GPS_2_PROTOCOL", "rebootRequired": true, "shortDesc": "Protocol for Secondary GPS", "type": "Int32", "values": [{"description": "Auto detect", "value": 0}, {"description": "u-blox", "value": 1}, {"description": "MTK", "value": 2}, {"description": "Ashtech / Trimble", "value": 3}, {"description": "Emlid Reach", "value": 4}, {"description": "Femtomes", "value": 5}, {"description": "NMEA (generic)", "value": 6}]}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "Some UBX modules have a FLASH that allows to store persistent configuration that will be loaded on start.\nPX4 does override all configuration parameters it needs in RAM, which takes precedence over the values in FLASH.\nHowever, configuration parameters that are not overriden by PX4 can still cause unexpected problems during flight.\nTo avoid these kind of problems a clean config can be reached by wiping the FLASH on boot.\nNote: Currently only supported on UBX.", "name": "GPS_CFG_WIPE", "rebootRequired": true, "shortDesc": "Wipes the flash config of UBX modules", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "If this is set to 1, all GPS communication data will be published via uORB,\nand written to the log file as gps_dump message.\nIf this is set to 2, the main GPS is configured to output RTCM data,\nwhich is then logged as gps_dump and can be used for PPK.", "max": 2, "min": 0, "name": "GPS_DUMP_COMM", "shortDesc": "Log GPS communication data", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "Full communication", "value": 1}, {"description": "RTCM output (PPK)", "value": 2}]}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "Enable publication of satellite info (ORB_ID(satellite_info)) if possible.\nNot available on MTK.", "name": "GPS_SAT_INFO", "rebootRequired": true, "shortDesc": "Enable sat info (if available)", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 230400, "group": "GPS", "longDesc": "Select a baudrate for the F9P's UART2 port.\nIn GPS_UBX_MODE 1, 2, and 3, the F9P's UART2 port is configured to send/receive RTCM corrections.\nSet this to 57600 if you want to attach a telemetry radio on UART2.", "min": 0, "name": "GPS_UBX_BAUD2", "rebootRequired": true, "shortDesc": "u-blox F9P UART2 Baudrate", "type": "Int32", "units": "B/s"}, {"bitmask": [{"description": "Enable I2C input protocol UBX", "index": 0}, {"description": "Enable I2C input protocol NMEA", "index": 1}, {"description": "Enable I2C input protocol RTCM3X", "index": 2}, {"description": "Enable I2C output protocol UBX", "index": 3}, {"description": "Enable I2C output protocol NMEA", "index": 4}, {"description": "Enable I2C output protocol RTCM3X", "index": 5}], "category": "Standard", "default": 0, "group": "GPS", "max": 32, "min": 0, "name": "GPS_UBX_CFG_INTF", "rebootRequired": true, "shortDesc": "u-blox protocol configuration for interfaces", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "When set to 0 (default), default DGNSS timeout set by u-blox will be used.", "max": 255, "min": 0, "name": "GPS_UBX_DGNSS_TO", "rebootRequired": true, "shortDesc": "u-blox GPS DGNSS timeout", "type": "Int32", "units": "s"}, {"category": "Standard", "default": 7, "group": "GPS", "longDesc": "u-blox receivers support different dynamic platform models to adjust the navigation engine to\nthe expected application environment.", "max": 9, "min": 0, "name": "GPS_UBX_DYNMODEL", "rebootRequired": true, "shortDesc": "u-blox GPS dynamic platform model", "type": "Int32", "values": [{"description": "stationary", "value": 2}, {"description": "automotive", "value": 4}, {"description": "airborne with <1g acceleration", "value": 6}, {"description": "airborne with <2g acceleration", "value": 7}, {"description": "airborne with <4g acceleration", "value": 8}]}, {"category": "Standard", "default": 1, "group": "GPS", "longDesc": "Enables or disables the high sensitivity mode for the u-blox jamming detection\n(CFG-SEC-JAMDET_SENSITIVITY_HI). When enabled, the receiver uses a\nmore sensitive algorithm to detect jamming. Disabling this may reduce false\npositives in electrically noisy environments.", "name": "GPS_UBX_JAM_DET", "rebootRequired": true, "shortDesc": "u-blox GPS jamming detection high sensitivity mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "When set to 0 (default), default minimum satellite signal level set by u-blox wll be used.", "max": 255, "min": 0, "name": "GPS_UBX_MIN_CNO", "rebootRequired": true, "shortDesc": "u-blox GPS minimum satellite signal level for navigation", "type": "Int32", "units": "dBHz"}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "When set to 0 (default), default minimum elevation set by u-blox will be used.", "max": 127, "min": 0, "name": "GPS_UBX_MIN_ELEV", "rebootRequired": true, "shortDesc": "u-blox GPS minimum elevation for a GNSS satellite to be used in navigation", "type": "Int32", "units": "deg"}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "Select the u-blox configuration setup. Most setups will use the default, including RTK and\ndual GPS without heading.\nIf rover has RTCM corrections from a static base (or other static correction source) coming in on UART2, then select Mode 5.\nThe Heading mode requires 2 F9P devices to be attached. The main GPS will act as rover and output\nheading information, whereas the secondary will act as moving base.\nModes 1 and 2 require each F9P UART1 to be connected to the Autopilot. In addition, UART2 on the\nF9P units are connected to each other.\nModes 3 and 4 only require UART1 on each F9P connected to the Autopilot or Can Node. UART RX DMA is required.\nRTK is still possible with this setup.\nMode 6 is intended for use with a ground control station (not necessarily an RTK correction base).", "max": 1, "min": 0, "name": "GPS_UBX_MODE", "rebootRequired": true, "shortDesc": "u-blox GPS Mode", "type": "Int32", "values": [{"description": "Default", "value": 0}, {"description": "Heading (Rover With Moving Base UART1 Connected To Autopilot, UART2 Connected To Moving Base)", "value": 1}, {"description": "Moving Base (UART1 Connected To Autopilot, UART2 Connected To Rover)", "value": 2}, {"description": "Heading (Rover With Moving Base UART1 Connected to Autopilot Or Can Node At 921600)", "value": 3}, {"description": "Moving Base (Moving Base UART1 Connected to Autopilot Or Can Node At 921600)", "value": 4}, {"description": "Rover with Static Base on UART2 (similar to Default, except coming in on UART2)", "value": 5}, {"description": "Ground Control Station (UART2 outputs NMEA)", "value": 6}]}, {"category": "Standard", "default": 0, "group": "GPS", "name": "GPS_UBX_PPK", "rebootRequired": true, "shortDesc": "Enable MSM7 message output for PPK workflow", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "Configure the output rate of u-blox GPS receivers (protocol v27+).\nWhen set to 0, automatic rate selection is used based on the receiver model.\nDefault rates: M9N=8Hz, F9P L1L2=5Hz, F9P L1L5=5Hz, Others=10Hz.\nNote: Higher rates reduce satellite count (e.g., >8Hz limits to 16 SVs on M9N).\nMax rates vary by model and RTK mode: F9P L1L2=5-7Hz, F9P L1L5=7-8Hz, X20=25Hz.\nHigh rates at 115200 baud may cause dropouts.", "max": 25, "min": 0, "name": "GPS_UBX_RATE", "rebootRequired": true, "shortDesc": "u-blox GPS output rate", "type": "Int32", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "GPS", "longDesc": "Heading offset angle for dual antenna GPS setups that support heading estimation.\nSet this to 0 if the antennas are parallel to the forward-facing direction\nof the vehicle and the rover (or Unicore primary) antenna is in front.\nThe offset angle increases clockwise.\nSet this to 90 if the rover (or Unicore primary, or Septentrio Mosaic Aux)\nantenna is placed on the right side of the vehicle and the moving base\nantenna is on the left side.\n(Note: the Unicore primary antenna is the one connected on the right as seen\nfrom the top).", "max": 360.0, "min": 0.0, "name": "GPS_YAW_OFFSET", "rebootRequired": true, "shortDesc": "Heading/Yaw offset for dual antenna GPS", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 2, "group": "Geofence", "longDesc": "Note: Setting this value to 4 enables flight termination,\nwhich will kill the vehicle on violation of the fence.", "max": 5, "min": 0, "name": "GF_ACTION", "shortDesc": "Geofence violation action", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Warning", "value": 1}, {"description": "Hold mode", "value": 2}, {"description": "Return mode", "value": 3}, {"description": "Terminate", "value": 4}, {"description": "Land mode", "value": 5}]}, {"category": "Standard", "default": 0.0, "group": "Geofence", "increment": 1.0, "longDesc": "Maximum horizontal distance in meters the vehicle can be from Home before triggering a geofence action.\nDisabled if 0.", "max": 10000.0, "min": 0.0, "name": "GF_MAX_HOR_DIST", "shortDesc": "Max horizontal distance from Home", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0.0, "group": "Geofence", "increment": 1.0, "longDesc": "Maximum vertical distance in meters the vehicle can be from Home before triggering a geofence action.\nDisabled if 0.", "max": 10000.0, "min": 0.0, "name": "GF_MAX_VER_DIST", "shortDesc": "Max vertical distance from Home", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geofence", "longDesc": "WARNING: This experimental feature may cause flyaways. Use at your own risk.\nPredict the motion of the vehicle and trigger the breach if it is determined that the current trajectory\nwould result in a breach happening before the vehicle can make evasive maneuvers.\nThe vehicle is then re-routed to a safe hold position (stop for multirotor, loiter for fixed wing).", "name": "GF_PREDICT", "shortDesc": "[EXPERIMENTAL] Use Pre-emptive geofence triggering", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Geofence", "longDesc": "Select which position source should be used. Selecting GPS instead of global position makes sure that there is\nno dependence on the position estimator\n0 = global position, 1 = GPS", "max": 1, "min": 0, "name": "GF_SOURCE", "shortDesc": "Geofence source", "type": "Int32", "values": [{"description": "GPOS", "value": 0}, {"description": "GPS", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "Defines which mixer implementation to use.\nSome are generic, while others are specifically fit to a certain vehicle with a fixed set of actuators.\n'Custom' should only be used if noting else can be used.", "name": "CA_AIRFRAME", "shortDesc": "Airframe selection", "type": "Int32", "values": [{"description": "Multirotor", "value": 0}, {"description": "Fixed-wing", "value": 1}, {"description": "Standard VTOL", "value": 2}, {"description": "Tiltrotor VTOL", "value": 3}, {"description": "Tailsitter VTOL", "value": 4}, {"description": "Rover (Ackermann)", "value": 5}, {"description": "Rover (Differential)", "value": 6}, {"description": "Motors (6DOF)", "value": 7}, {"description": "Multirotor with Tilt", "value": 8}, {"description": "Custom", "value": 9}, {"description": "Helicopter (tail ESC)", "value": 10}, {"description": "Helicopter (tail Servo)", "value": 11}, {"description": "Helicopter (Coaxial)", "value": 12}, {"description": "Rover (Mecanum)", "value": 13}, {"description": "Spacecraft 2D", "value": 14}, {"description": "Spacecraft 3D", "value": 15}]}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "This is used to specify how to handle motor failures\nreported by failure detector.", "name": "CA_FAILURE_MODE", "shortDesc": "Motor failure handling mode", "type": "Int32", "values": [{"description": "Ignore", "value": 0}, {"description": "Remove first failed motor from effectiveness", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": -0.05, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the collective pitch at the interval position 0 for a given thrust setpoint.\nUse negative values if the swash plate needs to move down to provide upwards thrust.", "max": 1.0, "min": -1.0, "name": "CA_HELI_PITCH_C0", "shortDesc": "Collective pitch curve at position 0", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0725, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the collective pitch at the interval position 1 for a given thrust setpoint.\nUse negative values if the swash plate needs to move down to provide upwards thrust.", "max": 1.0, "min": -1.0, "name": "CA_HELI_PITCH_C1", "shortDesc": "Collective pitch curve at position 1", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.2, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the collective pitch at the interval position 2 for a given thrust setpoint.\nUse negative values if the swash plate needs to move down to provide upwards thrust.", "max": 1.0, "min": -1.0, "name": "CA_HELI_PITCH_C2", "shortDesc": "Collective pitch curve at position 2", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.325, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the collective pitch at the interval position 3 for a given thrust setpoint.\nUse negative values if the swash plate needs to move down to provide upwards thrust.", "max": 1.0, "min": -1.0, "name": "CA_HELI_PITCH_C3", "shortDesc": "Collective pitch curve at position 3", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.45, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the collective pitch at the interval position 4 for a given thrust setpoint.\nUse negative values if the swash plate needs to move down to provide upwards thrust.", "max": 1.0, "min": -1.0, "name": "CA_HELI_PITCH_C4", "shortDesc": "Collective pitch curve at position 4", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Same definition as the proportional gain but for integral.", "max": 10.0, "min": 0.0, "name": "CA_HELI_RPM_I", "shortDesc": "Integral gain for rpm control", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Ratio between rpm error devided by 1000 to how much normalized output gets added to correct for it.\nmotor_command = throttle_curve + CA_HELI_RPM_P * (rpm_setpoint - rpm_measurement) / 1000", "max": 10.0, "min": 0.0, "name": "CA_HELI_RPM_P", "shortDesc": "Proportional gain for rpm control", "type": "Float"}, {"category": "Standard", "decimalPlaces": 0, "default": 1500.0, "group": "Geometry", "increment": 1.0, "longDesc": "Requires rpm feedback for the controller.", "max": 10000.0, "min": 100.0, "name": "CA_HELI_RPM_SP", "shortDesc": "Setpoint for main rotor rpm", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the output throttle at the interval position 0.", "max": 1.0, "min": 0.0, "name": "CA_HELI_THR_C0", "shortDesc": "Throttle curve at position 0", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the output throttle at the interval position 1.", "max": 1.0, "min": 0.0, "name": "CA_HELI_THR_C1", "shortDesc": "Throttle curve at position 1", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the output throttle at the interval position 2.", "max": 1.0, "min": 0.0, "name": "CA_HELI_THR_C2", "shortDesc": "Throttle curve at position 2", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the output throttle at the interval position 3.", "max": 1.0, "min": 0.0, "name": "CA_HELI_THR_C3", "shortDesc": "Throttle curve at position 3", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the output throttle at the interval position 4.", "max": 1.0, "min": 0.0, "name": "CA_HELI_THR_C4", "shortDesc": "Throttle curve at position 4", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "Default configuration is for a clockwise turning main rotor and\npositive thrust of the tail rotor is expected to rotate the vehicle clockwise.\nSet this parameter to true if the tail rotor provides thrust in counter-clockwise direction\nwhich is mostly the case when the main rotor turns counter-clockwise.", "name": "CA_HELI_YAW_CCW", "shortDesc": "Main rotor turns counter-clockwise", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "This allows to specify which collective pitch command results in the least amount of rotor drag.\nThis is used to increase the accuracy of the yaw drag torque compensation based on collective pitch\nby aligning the lowest rotor drag with zero compensation.\nFor symmetric profile blades this is the command that results in exactly 0\u00b0 collective blade angle.\nFor lift profile blades this is typically a command resulting in slightly negative collective blade angle.\ntail_output += CA_HELI_YAW_CP_S * abs(collective_pitch - CA_HELI_YAW_CP_O)", "max": 2.0, "min": -2.0, "name": "CA_HELI_YAW_CP_O", "shortDesc": "Offset for yaw compensation based on collective pitch", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "This allows to add a proportional factor of the collective pitch command to the yaw command.\nA negative value is needed when positive thrust of the tail rotor rotates the vehicle opposite to the main rotor turn direction.\ntail_output += CA_HELI_YAW_CP_S * abs(collective_pitch - CA_HELI_YAW_CP_O)", "max": 2.0, "min": -2.0, "name": "CA_HELI_YAW_CP_S", "shortDesc": "Scale for yaw compensation based on collective pitch", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "This allows to add a proportional factor of the throttle command to the yaw command.\nA negative value is needed when positive thrust of the tail rotor rotates the vehicle opposite to the main rotor turn direction.\ntail_output += CA_HELI_YAW_TH_S * throttle", "max": 2.0, "min": -2.0, "name": "CA_HELI_YAW_TH_S", "shortDesc": "Scale for yaw compensation based on throttle", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Ice shedding prevents ice buildup in VTOL aircraft motors by\nperiodically spinning inactive rotors. When enabled (period\n> 0), every cycle lasts for the defined period and includes\na 2\u2011second spin at 0.01 motor output. If period <= 0, the\nfeature is disabled.", "min": 0.0, "name": "CA_ICE_PERIOD", "shortDesc": "Ice shedding cycle period", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Used to linearize mechanical output of swashplate servos to avoid axis coupling and binding with 4 servo redundancy.\nThis requires a symmetric setup where the servo horn is exactly centered with a 0 command.\nSetting to zero disables feature.", "max": 75.0, "min": 0.0, "name": "CA_MAX_SVO_THROW", "shortDesc": "Throw angle of swashplate servo at maximum commands for linearization", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 2, "group": "Geometry", "longDesc": "Selects the algorithm and desaturation method.\nIf set to Automatic, the selection is based on the airframe (CA_AIRFRAME).", "name": "CA_METHOD", "shortDesc": "Control allocation method", "type": "Int32", "values": [{"description": "Pseudo-inverse with output clipping", "value": 0}, {"description": "Pseudo-inverse with sequential desaturation technique", "value": 1}, {"description": "Automatic", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R0_SLEW", "shortDesc": "Motor 0 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R10_SLEW", "shortDesc": "Motor 10 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R11_SLEW", "shortDesc": "Motor 11 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R1_SLEW", "shortDesc": "Motor 1 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R2_SLEW", "shortDesc": "Motor 2 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R3_SLEW", "shortDesc": "Motor 3 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R4_SLEW", "shortDesc": "Motor 4 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R5_SLEW", "shortDesc": "Motor 5 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R6_SLEW", "shortDesc": "Motor 6 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R7_SLEW", "shortDesc": "Motor 7 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R8_SLEW", "shortDesc": "Motor 8 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R9_SLEW", "shortDesc": "Motor 9 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR0_AX", "shortDesc": "Axis of rotor 0 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR0_AY", "shortDesc": "Axis of rotor 0 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR0_AZ", "shortDesc": "Axis of rotor 0 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR0_CT", "shortDesc": "Thrust coefficient of rotor 0", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR0_KM", "shortDesc": "Moment coefficient of rotor 0", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR0_PX", "shortDesc": "Position of rotor 0 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR0_PY", "shortDesc": "Position of rotor 0 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR0_PZ", "shortDesc": "Position of rotor 0 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR0_TILT", "shortDesc": "Rotor 0 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR10_AX", "shortDesc": "Axis of rotor 10 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR10_AY", "shortDesc": "Axis of rotor 10 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR10_AZ", "shortDesc": "Axis of rotor 10 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR10_CT", "shortDesc": "Thrust coefficient of rotor 10", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR10_KM", "shortDesc": "Moment coefficient of rotor 10", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR10_PX", "shortDesc": "Position of rotor 10 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR10_PY", "shortDesc": "Position of rotor 10 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR10_PZ", "shortDesc": "Position of rotor 10 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR10_TILT", "shortDesc": "Rotor 10 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR11_AX", "shortDesc": "Axis of rotor 11 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR11_AY", "shortDesc": "Axis of rotor 11 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR11_AZ", "shortDesc": "Axis of rotor 11 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR11_CT", "shortDesc": "Thrust coefficient of rotor 11", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR11_KM", "shortDesc": "Moment coefficient of rotor 11", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR11_PX", "shortDesc": "Position of rotor 11 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR11_PY", "shortDesc": "Position of rotor 11 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR11_PZ", "shortDesc": "Position of rotor 11 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR11_TILT", "shortDesc": "Rotor 11 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR1_AX", "shortDesc": "Axis of rotor 1 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR1_AY", "shortDesc": "Axis of rotor 1 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR1_AZ", "shortDesc": "Axis of rotor 1 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR1_CT", "shortDesc": "Thrust coefficient of rotor 1", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR1_KM", "shortDesc": "Moment coefficient of rotor 1", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR1_PX", "shortDesc": "Position of rotor 1 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR1_PY", "shortDesc": "Position of rotor 1 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR1_PZ", "shortDesc": "Position of rotor 1 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR1_TILT", "shortDesc": "Rotor 1 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR2_AX", "shortDesc": "Axis of rotor 2 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR2_AY", "shortDesc": "Axis of rotor 2 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR2_AZ", "shortDesc": "Axis of rotor 2 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR2_CT", "shortDesc": "Thrust coefficient of rotor 2", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR2_KM", "shortDesc": "Moment coefficient of rotor 2", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR2_PX", "shortDesc": "Position of rotor 2 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR2_PY", "shortDesc": "Position of rotor 2 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR2_PZ", "shortDesc": "Position of rotor 2 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR2_TILT", "shortDesc": "Rotor 2 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR3_AX", "shortDesc": "Axis of rotor 3 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR3_AY", "shortDesc": "Axis of rotor 3 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR3_AZ", "shortDesc": "Axis of rotor 3 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR3_CT", "shortDesc": "Thrust coefficient of rotor 3", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR3_KM", "shortDesc": "Moment coefficient of rotor 3", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR3_PX", "shortDesc": "Position of rotor 3 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR3_PY", "shortDesc": "Position of rotor 3 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR3_PZ", "shortDesc": "Position of rotor 3 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR3_TILT", "shortDesc": "Rotor 3 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR4_AX", "shortDesc": "Axis of rotor 4 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR4_AY", "shortDesc": "Axis of rotor 4 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR4_AZ", "shortDesc": "Axis of rotor 4 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR4_CT", "shortDesc": "Thrust coefficient of rotor 4", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR4_KM", "shortDesc": "Moment coefficient of rotor 4", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR4_PX", "shortDesc": "Position of rotor 4 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR4_PY", "shortDesc": "Position of rotor 4 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR4_PZ", "shortDesc": "Position of rotor 4 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR4_TILT", "shortDesc": "Rotor 4 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR5_AX", "shortDesc": "Axis of rotor 5 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR5_AY", "shortDesc": "Axis of rotor 5 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR5_AZ", "shortDesc": "Axis of rotor 5 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR5_CT", "shortDesc": "Thrust coefficient of rotor 5", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR5_KM", "shortDesc": "Moment coefficient of rotor 5", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR5_PX", "shortDesc": "Position of rotor 5 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR5_PY", "shortDesc": "Position of rotor 5 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR5_PZ", "shortDesc": "Position of rotor 5 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR5_TILT", "shortDesc": "Rotor 5 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR6_AX", "shortDesc": "Axis of rotor 6 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR6_AY", "shortDesc": "Axis of rotor 6 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR6_AZ", "shortDesc": "Axis of rotor 6 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR6_CT", "shortDesc": "Thrust coefficient of rotor 6", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR6_KM", "shortDesc": "Moment coefficient of rotor 6", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR6_PX", "shortDesc": "Position of rotor 6 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR6_PY", "shortDesc": "Position of rotor 6 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR6_PZ", "shortDesc": "Position of rotor 6 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR6_TILT", "shortDesc": "Rotor 6 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR7_AX", "shortDesc": "Axis of rotor 7 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR7_AY", "shortDesc": "Axis of rotor 7 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR7_AZ", "shortDesc": "Axis of rotor 7 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR7_CT", "shortDesc": "Thrust coefficient of rotor 7", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR7_KM", "shortDesc": "Moment coefficient of rotor 7", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR7_PX", "shortDesc": "Position of rotor 7 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR7_PY", "shortDesc": "Position of rotor 7 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR7_PZ", "shortDesc": "Position of rotor 7 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR7_TILT", "shortDesc": "Rotor 7 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR8_AX", "shortDesc": "Axis of rotor 8 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR8_AY", "shortDesc": "Axis of rotor 8 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR8_AZ", "shortDesc": "Axis of rotor 8 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR8_CT", "shortDesc": "Thrust coefficient of rotor 8", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR8_KM", "shortDesc": "Moment coefficient of rotor 8", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR8_PX", "shortDesc": "Position of rotor 8 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR8_PY", "shortDesc": "Position of rotor 8 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR8_PZ", "shortDesc": "Position of rotor 8 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR8_TILT", "shortDesc": "Rotor 8 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR9_AX", "shortDesc": "Axis of rotor 9 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR9_AY", "shortDesc": "Axis of rotor 9 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR9_AZ", "shortDesc": "Axis of rotor 9 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR9_CT", "shortDesc": "Thrust coefficient of rotor 9", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR9_KM", "shortDesc": "Moment coefficient of rotor 9", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR9_PX", "shortDesc": "Position of rotor 9 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR9_PY", "shortDesc": "Position of rotor 9 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR9_PZ", "shortDesc": "Position of rotor 9 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR9_TILT", "shortDesc": "Rotor 9 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_ROTOR_COUNT", "shortDesc": "Total number of rotors", "type": "Int32", "values": [{"description": "0", "value": 0}, {"description": "1", "value": 1}, {"description": "2", "value": 2}, {"description": "3", "value": 3}, {"description": "4", "value": 4}, {"description": "5", "value": 5}, {"description": "6", "value": 6}, {"description": "7", "value": 7}, {"description": "8", "value": 8}, {"description": "9", "value": 9}, {"description": "10", "value": 10}, {"description": "11", "value": 11}, {"description": "12", "value": 12}]}, {"bitmask": [{"description": "Motor 1", "index": 0}, {"description": "Motor 2", "index": 1}, {"description": "Motor 3", "index": 2}, {"description": "Motor 4", "index": 3}, {"description": "Motor 5", "index": 4}, {"description": "Motor 6", "index": 5}, {"description": "Motor 7", "index": 6}, {"description": "Motor 8", "index": 7}, {"description": "Motor 9", "index": 8}, {"description": "Motor 10", "index": 9}, {"description": "Motor 11", "index": 10}, {"description": "Motor 12", "index": 11}], "category": "Standard", "default": 0, "group": "Geometry", "longDesc": "Configure motors to be bidirectional/reversible. Note that the output driver needs to support this as well.", "max": 4095, "min": 0, "name": "CA_R_REV", "shortDesc": "Bidirectional/Reversible motors", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 0, "default": 0.0, "group": "Geometry", "increment": 10.0, "longDesc": "The angle is measured clockwise (as seen from top), with 0 pointing forwards (X axis).", "max": 360.0, "min": 0.0, "name": "CA_SP0_ANG0", "shortDesc": "Angle for swash plate servo 0", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 140.0, "group": "Geometry", "increment": 10.0, "longDesc": "The angle is measured clockwise (as seen from top), with 0 pointing forwards (X axis).", "max": 360.0, "min": 0.0, "name": "CA_SP0_ANG1", "shortDesc": "Angle for swash plate servo 1", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 220.0, "group": "Geometry", "increment": 10.0, "longDesc": "The angle is measured clockwise (as seen from top), with 0 pointing forwards (X axis).", "max": 360.0, "min": 0.0, "name": "CA_SP0_ANG2", "shortDesc": "Angle for swash plate servo 2", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 0.0, "group": "Geometry", "increment": 10.0, "longDesc": "The angle is measured clockwise (as seen from top), with 0 pointing forwards (X axis).", "max": 360.0, "min": 0.0, "name": "CA_SP0_ANG3", "shortDesc": "Angle for swash plate servo 3", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "This is relative to the other arm lengths.", "max": 10.0, "min": 0.0, "name": "CA_SP0_ARM_L0", "shortDesc": "Arm length for swash plate servo 0", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "This is relative to the other arm lengths.", "max": 10.0, "min": 0.0, "name": "CA_SP0_ARM_L1", "shortDesc": "Arm length for swash plate servo 1", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "This is relative to the other arm lengths.", "max": 10.0, "min": 0.0, "name": "CA_SP0_ARM_L2", "shortDesc": "Arm length for swash plate servo 2", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "This is relative to the other arm lengths.", "max": 10.0, "min": 0.0, "name": "CA_SP0_ARM_L3", "shortDesc": "Arm length for swash plate servo 3", "type": "Float"}, {"category": "Standard", "default": 3, "group": "Geometry", "name": "CA_SP0_COUNT", "shortDesc": "Number of swash plates servos", "type": "Int32", "values": [{"description": "2", "value": 2}, {"description": "3", "value": 3}, {"description": "4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV0_SLEW", "shortDesc": "Servo 0 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV1_SLEW", "shortDesc": "Servo 1 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV2_SLEW", "shortDesc": "Servo 2 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV3_SLEW", "shortDesc": "Servo 3 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV4_SLEW", "shortDesc": "Servo 4 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV5_SLEW", "shortDesc": "Servo 5 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV6_SLEW", "shortDesc": "Servo 6 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV7_SLEW", "shortDesc": "Servo 7 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS0_FLAP", "shortDesc": "Control Surface 0 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS0_SPOIL", "shortDesc": "Control Surface 0 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS0_TRIM", "shortDesc": "Control Surface 0 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS0_TRQ_P", "shortDesc": "Control Surface 0 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS0_TRQ_R", "shortDesc": "Control Surface 0 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS0_TRQ_Y", "shortDesc": "Control Surface 0 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS0_TYPE", "shortDesc": "Control Surface 0 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS1_FLAP", "shortDesc": "Control Surface 1 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS1_SPOIL", "shortDesc": "Control Surface 1 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS1_TRIM", "shortDesc": "Control Surface 1 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS1_TRQ_P", "shortDesc": "Control Surface 1 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS1_TRQ_R", "shortDesc": "Control Surface 1 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS1_TRQ_Y", "shortDesc": "Control Surface 1 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS1_TYPE", "shortDesc": "Control Surface 1 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS2_FLAP", "shortDesc": "Control Surface 2 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS2_SPOIL", "shortDesc": "Control Surface 2 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS2_TRIM", "shortDesc": "Control Surface 2 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS2_TRQ_P", "shortDesc": "Control Surface 2 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS2_TRQ_R", "shortDesc": "Control Surface 2 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS2_TRQ_Y", "shortDesc": "Control Surface 2 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS2_TYPE", "shortDesc": "Control Surface 2 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS3_FLAP", "shortDesc": "Control Surface 3 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS3_SPOIL", "shortDesc": "Control Surface 3 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS3_TRIM", "shortDesc": "Control Surface 3 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS3_TRQ_P", "shortDesc": "Control Surface 3 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS3_TRQ_R", "shortDesc": "Control Surface 3 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS3_TRQ_Y", "shortDesc": "Control Surface 3 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS3_TYPE", "shortDesc": "Control Surface 3 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS4_FLAP", "shortDesc": "Control Surface 4 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS4_SPOIL", "shortDesc": "Control Surface 4 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS4_TRIM", "shortDesc": "Control Surface 4 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS4_TRQ_P", "shortDesc": "Control Surface 4 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS4_TRQ_R", "shortDesc": "Control Surface 4 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS4_TRQ_Y", "shortDesc": "Control Surface 4 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS4_TYPE", "shortDesc": "Control Surface 4 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS5_FLAP", "shortDesc": "Control Surface 5 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS5_SPOIL", "shortDesc": "Control Surface 5 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS5_TRIM", "shortDesc": "Control Surface 5 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS5_TRQ_P", "shortDesc": "Control Surface 5 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS5_TRQ_R", "shortDesc": "Control Surface 5 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS5_TRQ_Y", "shortDesc": "Control Surface 5 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS5_TYPE", "shortDesc": "Control Surface 5 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS6_FLAP", "shortDesc": "Control Surface 6 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS6_SPOIL", "shortDesc": "Control Surface 6 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS6_TRIM", "shortDesc": "Control Surface 6 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS6_TRQ_P", "shortDesc": "Control Surface 6 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS6_TRQ_R", "shortDesc": "Control Surface 6 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS6_TRQ_Y", "shortDesc": "Control Surface 6 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS6_TYPE", "shortDesc": "Control Surface 6 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS7_FLAP", "shortDesc": "Control Surface 7 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS7_SPOIL", "shortDesc": "Control Surface 7 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS7_TRIM", "shortDesc": "Control Surface 7 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS7_TRQ_P", "shortDesc": "Control Surface 7 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS7_TRQ_R", "shortDesc": "Control Surface 7 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS7_TRQ_Y", "shortDesc": "Control Surface 7 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS7_TYPE", "shortDesc": "Control Surface 7 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS_COUNT", "shortDesc": "Total number of Control Surfaces", "type": "Int32", "values": [{"description": "0", "value": 0}, {"description": "1", "value": 1}, {"description": "2", "value": 2}, {"description": "3", "value": 3}, {"description": "4", "value": 4}, {"description": "5", "value": 5}, {"description": "6", "value": 6}, {"description": "7", "value": 7}, {"description": "8", "value": 8}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.5, "group": "Geometry", "max": 5.0, "min": 0.0, "name": "CA_SV_FLAP_SLEW", "shortDesc": "Control Surface slew rate for normalized flaps setpoint", "type": "Float"}, {"category": "Standard", "default": 1, "group": "Geometry", "longDesc": "Define if this servo is used for additional control.", "name": "CA_SV_TL0_CT", "shortDesc": "Tilt 0 is used for control", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Yaw", "value": 1}, {"description": "Pitch", "value": 2}, {"description": "Yaw and Pitch", "value": 3}]}, {"category": "Standard", "decimalPlaces": 0, "default": 90.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the maximum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL0_MAXA", "shortDesc": "Tilt Servo 0 Tilt Angle at Maximum", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 0.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the minimum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL0_MINA", "shortDesc": "Tilt Servo 0 Tilt Angle at Minimum", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "Defines the direction the servo tilts towards when moving towards the maximum tilt angle.\nFor example if the minimum tilt angle is -90, the maximum 90, and the direction 'Towards Front',\nthe motor axis aligns with the XZ-plane, points towards -X at the minimum and +X at the maximum tilt.", "max": 359, "min": 0, "name": "CA_SV_TL0_TD", "shortDesc": "Tilt Servo 0 Tilt Direction", "type": "Int32", "values": [{"description": "Towards Front", "value": 0}, {"description": "Towards Right", "value": 90}]}, {"category": "Standard", "default": 1, "group": "Geometry", "longDesc": "Define if this servo is used for additional control.", "name": "CA_SV_TL1_CT", "shortDesc": "Tilt 1 is used for control", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Yaw", "value": 1}, {"description": "Pitch", "value": 2}, {"description": "Yaw and Pitch", "value": 3}]}, {"category": "Standard", "decimalPlaces": 0, "default": 90.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the maximum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL1_MAXA", "shortDesc": "Tilt Servo 1 Tilt Angle at Maximum", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 0.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the minimum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL1_MINA", "shortDesc": "Tilt Servo 1 Tilt Angle at Minimum", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "Defines the direction the servo tilts towards when moving towards the maximum tilt angle.\nFor example if the minimum tilt angle is -90, the maximum 90, and the direction 'Towards Front',\nthe motor axis aligns with the XZ-plane, points towards -X at the minimum and +X at the maximum tilt.", "max": 359, "min": 0, "name": "CA_SV_TL1_TD", "shortDesc": "Tilt Servo 1 Tilt Direction", "type": "Int32", "values": [{"description": "Towards Front", "value": 0}, {"description": "Towards Right", "value": 90}]}, {"category": "Standard", "default": 1, "group": "Geometry", "longDesc": "Define if this servo is used for additional control.", "name": "CA_SV_TL2_CT", "shortDesc": "Tilt 2 is used for control", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Yaw", "value": 1}, {"description": "Pitch", "value": 2}, {"description": "Yaw and Pitch", "value": 3}]}, {"category": "Standard", "decimalPlaces": 0, "default": 90.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the maximum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL2_MAXA", "shortDesc": "Tilt Servo 2 Tilt Angle at Maximum", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 0.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the minimum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL2_MINA", "shortDesc": "Tilt Servo 2 Tilt Angle at Minimum", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "Defines the direction the servo tilts towards when moving towards the maximum tilt angle.\nFor example if the minimum tilt angle is -90, the maximum 90, and the direction 'Towards Front',\nthe motor axis aligns with the XZ-plane, points towards -X at the minimum and +X at the maximum tilt.", "max": 359, "min": 0, "name": "CA_SV_TL2_TD", "shortDesc": "Tilt Servo 2 Tilt Direction", "type": "Int32", "values": [{"description": "Towards Front", "value": 0}, {"description": "Towards Right", "value": 90}]}, {"category": "Standard", "default": 1, "group": "Geometry", "longDesc": "Define if this servo is used for additional control.", "name": "CA_SV_TL3_CT", "shortDesc": "Tilt 3 is used for control", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Yaw", "value": 1}, {"description": "Pitch", "value": 2}, {"description": "Yaw and Pitch", "value": 3}]}, {"category": "Standard", "decimalPlaces": 0, "default": 90.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the maximum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL3_MAXA", "shortDesc": "Tilt Servo 3 Tilt Angle at Maximum", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 0.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the minimum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL3_MINA", "shortDesc": "Tilt Servo 3 Tilt Angle at Minimum", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "Defines the direction the servo tilts towards when moving towards the maximum tilt angle.\nFor example if the minimum tilt angle is -90, the maximum 90, and the direction 'Towards Front',\nthe motor axis aligns with the XZ-plane, points towards -X at the minimum and +X at the maximum tilt.", "max": 359, "min": 0, "name": "CA_SV_TL3_TD", "shortDesc": "Tilt Servo 3 Tilt Direction", "type": "Int32", "values": [{"description": "Towards Front", "value": 0}, {"description": "Towards Right", "value": 90}]}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_TL_COUNT", "shortDesc": "Total number of Tilt Servos", "type": "Int32", "values": [{"description": "0", "value": 0}, {"description": "1", "value": 1}, {"description": "2", "value": 2}, {"description": "3", "value": 3}, {"description": "4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "Hover Thrust Estimator", "longDesc": "Sets the number of standard deviations used\nby the innovation consistency test.", "max": 10.0, "min": 1.0, "name": "HTE_ACC_GATE", "shortDesc": "Gate size for acceleration fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "Hover Thrust Estimator", "longDesc": "Sets the number of standard deviations used\nby the innovation consistency test.", "max": 1.0, "min": 0.0, "name": "HTE_HT_ERR_INIT", "shortDesc": "1-sigma initial hover thrust uncertainty", "type": "Float", "units": "normalized_thrust"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.0036, "group": "Hover Thrust Estimator", "longDesc": "Reduce to make the hover thrust estimate\nmore stable, increase if the real hover thrust\nis expected to change quickly over time.", "max": 1.0, "min": 0.0001, "name": "HTE_HT_NOISE", "shortDesc": "Hover thrust process noise", "type": "Float", "units": "normalized_thrust/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Hover Thrust Estimator", "longDesc": "Defines the range of the hover thrust estimate around MPC_THR_HOVER.\nA value of 0.2 with MPC_THR_HOVER at 0.5 results in a range of [0.3, 0.7].\nSet to a large value if the vehicle operates in varying physical conditions that\naffect the required hover thrust strongly (e.g. differently sized payloads).", "max": 0.4, "min": 0.01, "name": "HTE_THR_RANGE", "shortDesc": "Max deviation from MPC_THR_HOVER", "type": "Float", "units": "normalized_thrust"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Hover Thrust Estimator", "longDesc": "Above this speed, the measurement noise is linearly increased\nto reduce the sensitivity of the estimator from biased measurement.\nSet to a low value on vehicles with large lifting surfaces.", "max": 20.0, "min": 1.0, "name": "HTE_VXY_THR", "shortDesc": "Horizontal velocity threshold for sensitivity reduction", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.0, "group": "Hover Thrust Estimator", "longDesc": "Above this speed, the measurement noise is linearly increased\nto reduce the sensitivity of the estimator from biased measurement.\nSet to a low value on vehicles affected by air drag when climbing or descending.", "max": 10.0, "min": 1.0, "name": "HTE_VZ_THR", "shortDesc": "Vertical velocity threshold for sensitivity reduction", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.0, "group": "Land Detector", "longDesc": "Maximum airspeed allowed in the landed state", "max": 30.0, "min": 2.0, "name": "LNDFW_AIRSPD_MAX", "shortDesc": "Fixed-wing land detector: Max airspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.5, "group": "Land Detector", "longDesc": "Maximum allowed norm of the angular velocity in the landed state.\nOnly used if neither airspeed nor groundspeed can be used for landing detection.", "name": "LNDFW_ROT_MAX", "shortDesc": "Fixed-wing land detector: max rotational speed", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.0, "group": "Land Detector", "longDesc": "Time the land conditions (speeds and acceleration) have to be satisfied to detect a landing.", "min": 0.1, "name": "LNDFW_TRIG_TIME", "rebootRequired": true, "shortDesc": "Fixed-wing land detection trigger time", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Land Detector", "longDesc": "Maximum horizontal velocity allowed in the landed state.\nA factor of 0.7 is applied in case of airspeed-less flying\n(either because no sensor is present or sensor data got invalid in flight).", "max": 20.0, "min": 0.5, "name": "LNDFW_VEL_XY_MAX", "shortDesc": "Fixed-wing land detector: Max horizontal velocity threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Land Detector", "longDesc": "Maximum vertical velocity allowed in the landed state.", "max": 20.0, "min": 0.1, "name": "LNDFW_VEL_Z_MAX", "shortDesc": "Fixed-wing land detector: Max vertiacal velocity threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 8.0, "group": "Land Detector", "longDesc": "Maximum horizontal (x,y body axes) acceleration allowed in the landed state", "max": 30.0, "min": 2.0, "name": "LNDFW_XYACC_MAX", "shortDesc": "Fixed-wing land detector: Max horizontal acceleration", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "Land Detector", "longDesc": "The height above ground below which ground effect creates barometric altitude errors.\nA negative value indicates no ground effect.", "min": -1.0, "name": "LNDMC_ALT_GND", "shortDesc": "Ground effect altitude for multicopters", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "Land Detector", "longDesc": "Maximum allowed norm of the angular velocity (roll, pitch) in the landed state.", "name": "LNDMC_ROT_MAX", "shortDesc": "Multicopter max rotational speed", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Land Detector", "longDesc": "Total time it takes to go through all three land detection stages:\nground contact, maybe landed, landed\nwhen all necessary conditions are constantly met.", "max": 10.0, "min": 0.1, "name": "LNDMC_TRIG_TIME", "shortDesc": "Multicopter land detection trigger time", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.5, "group": "Land Detector", "longDesc": "Maximum horizontal velocity allowed in the landed state", "name": "LNDMC_XY_VEL_MAX", "shortDesc": "Multicopter max horizontal velocity", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.25, "group": "Land Detector", "longDesc": "Vertical velocity threshold to detect landing.\nHas to be set lower than the expected minimal speed for landing,\nwhich is either MPC_LAND_SPEED or MPC_LAND_CRWL.\nThis is enforced by an automatic check.", "min": 0.0, "name": "LNDMC_Z_VEL_MAX", "shortDesc": "Multicopter vertical velocity threshold", "type": "Float", "units": "m/s"}, {"category": "System", "default": 0, "group": "Land Detector", "longDesc": "Total flight time of this autopilot. Higher 32 bits of the value.\nFlight time in microseconds = (LND_FLIGHT_T_HI << 32) | LND_FLIGHT_T_LO.", "min": 0, "name": "LND_FLIGHT_T_HI", "shortDesc": "Total flight time in microseconds", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Land Detector", "longDesc": "Total flight time of this autopilot. Lower 32 bits of the value.\nFlight time in microseconds = (LND_FLIGHT_T_HI << 32) | LND_FLIGHT_T_LO.", "min": 0, "name": "LND_FLIGHT_T_LO", "shortDesc": "Total flight time in microseconds", "type": "Int32", "volatile": true}, {"category": "Standard", "decimalPlaces": 2, "default": 10.0, "group": "Landing Target Estimator", "longDesc": "Variance of acceleration measurement used for landing target position prediction.\nHigher values results in tighter following of the measurements and more lenient outlier rejection", "min": 0.01, "name": "LTEST_ACC_UNC", "shortDesc": "Acceleration uncertainty", "type": "Float", "units": "(m/s^2)^2"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.005, "group": "Landing Target Estimator", "longDesc": "Variance of the landing target measurement from the driver.\nHigher values result in less aggressive following of the measurement and a smoother output as well as fewer rejected measurements.", "name": "LTEST_MEAS_UNC", "shortDesc": "Landing target measurement uncertainty", "type": "Float", "units": "tan(rad)^2"}, {"category": "Standard", "default": 0, "group": "Landing Target Estimator", "longDesc": "Configure the mode of the landing target. Depending on the mode, the landing target observations are used differently to aid position estimation.\nMode Moving: The landing target may be moving around while in the field of view of the vehicle. Landing target measurements are not used to aid positioning.\nMode Stationary: The landing target is stationary. Measured velocity w.r.t. the landing target is used to aid velocity estimation.", "max": 1, "min": 0, "name": "LTEST_MODE", "shortDesc": "Landing target mode", "type": "Int32", "values": [{"description": "Moving", "value": 0}, {"description": "Stationary", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "Landing Target Estimator", "longDesc": "Initial variance of the relative landing target position in x and y direction", "min": 0.001, "name": "LTEST_POS_UNC_IN", "shortDesc": "Initial landing target position uncertainty", "type": "Float", "units": "m^2"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Landing Target Estimator", "longDesc": "Landing target x measurements are scaled by this factor before being used", "min": 0.01, "name": "LTEST_SCALE_X", "shortDesc": "Scale factor for sensor measurements in sensor x axis", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Landing Target Estimator", "longDesc": "Landing target y measurements are scaled by this factor before being used", "min": 0.01, "name": "LTEST_SCALE_Y", "shortDesc": "Scale factor for sensor measurements in sensor y axis", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Landing Target Estimator", "name": "LTEST_SENS_POS_X", "rebootRequired": true, "shortDesc": "X Position of IRLOCK in body frame (forward)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Landing Target Estimator", "name": "LTEST_SENS_POS_Y", "rebootRequired": true, "shortDesc": "Y Position of IRLOCK in body frame (right)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Landing Target Estimator", "name": "LTEST_SENS_POS_Z", "rebootRequired": true, "shortDesc": "Z Position of IRLOCK in body frame (downward)", "type": "Float", "units": "m"}, {"category": "Standard", "default": 2, "group": "Landing Target Estimator", "longDesc": "Default orientation of Yaw 90\u00b0", "max": 40, "min": -1, "name": "LTEST_SENS_ROT", "rebootRequired": true, "shortDesc": "Rotation of IRLOCK sensor relative to airframe", "type": "Int32", "values": [{"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "Landing Target Estimator", "longDesc": "Initial variance of the relative landing target velocity in x and y directions", "min": 0.001, "name": "LTEST_VEL_UNC_IN", "shortDesc": "Initial landing target velocity uncertainty", "type": "Float", "units": "(m/s)^2"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.012, "group": "Local Position Estimator", "longDesc": "Data sheet noise density = 150ug/sqrt(Hz) = 0.0015 m/s^2/sqrt(Hz)\nLarger than data sheet to account for tilt error.", "max": 2.0, "min": 1e-05, "name": "LPE_ACC_XY", "shortDesc": "Accelerometer xy noise density", "type": "Float", "units": "m/s^2/sqrt(Hz)"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.02, "group": "Local Position Estimator", "longDesc": "Data sheet noise density = 150ug/sqrt(Hz) = 0.0015 m/s^2/sqrt(Hz)", "max": 2.0, "min": 1e-05, "name": "LPE_ACC_Z", "shortDesc": "Accelerometer z noise density", "type": "Float", "units": "m/s^2/sqrt(Hz)"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.0, "group": "Local Position Estimator", "max": 100.0, "min": 0.01, "name": "LPE_BAR_Z", "shortDesc": "Barometric presssure altitude z standard deviation", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Local Position Estimator", "name": "LPE_EN", "shortDesc": "Local position estimator enable (unsupported)", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 3.0, "group": "Local Position Estimator", "max": 5.0, "min": 1.0, "name": "LPE_EPH_MAX", "shortDesc": "Max EPH allowed for GPS initialization", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 5.0, "group": "Local Position Estimator", "max": 5.0, "min": 1.0, "name": "LPE_EPV_MAX", "shortDesc": "Max EPV allowed for GPS initialization", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Local Position Estimator", "longDesc": "By initializing the estimator to the LPE_LAT/LON parameters when global information is unavailable", "max": 1, "min": 0, "name": "LPE_FAKE_ORIGIN", "shortDesc": "Enable publishing of a fake global position (e.g for AUTO missions using Optical Flow)", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.001, "group": "Local Position Estimator", "max": 2.0, "min": 0.0, "name": "LPE_FGYRO_HP", "shortDesc": "Flow gyro high pass filter cut off frequency", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Local Position Estimator", "max": 1.0, "min": -1.0, "name": "LPE_FLW_OFF_Z", "shortDesc": "Optical flow z offset from center", "type": "Float", "units": "m"}, {"category": "Standard", "default": 150, "group": "Local Position Estimator", "max": 255, "min": 0, "name": "LPE_FLW_QMIN", "shortDesc": "Optical flow minimum quality threshold", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 3, "default": 7.0, "group": "Local Position Estimator", "max": 10.0, "min": 0.1, "name": "LPE_FLW_R", "shortDesc": "Optical flow rotation (roll/pitch) noise gain", "type": "Float", "units": "m/s/rad"}, {"category": "Standard", "decimalPlaces": 3, "default": 7.0, "group": "Local Position Estimator", "max": 10.0, "min": 0.0, "name": "LPE_FLW_RR", "shortDesc": "Optical flow angular velocity noise gain", "type": "Float", "units": "m/rad"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.3, "group": "Local Position Estimator", "max": 10.0, "min": 0.1, "name": "LPE_FLW_SCALE", "shortDesc": "Optical flow scale", "type": "Float", "units": "m"}, {"bitmask": [{"description": "fuse GPS, requires GPS for alt. init", "index": 0}, {"description": "fuse optical flow", "index": 1}, {"description": "fuse vision position", "index": 2}, {"description": "fuse landing target", "index": 3}, {"description": "fuse land detector", "index": 4}, {"description": "pub agl as lpos down", "index": 5}, {"description": "flow gyro compensation", "index": 6}, {"description": "fuse baro", "index": 7}], "category": "Standard", "default": 145, "group": "Local Position Estimator", "longDesc": "Set bits in the following positions to enable:\n0 : Set to true to fuse GPS data if available, also requires GPS for altitude init\n1 : Set to true to fuse optical flow data if available\n2 : Set to true to fuse vision position\n3 : Set to true to enable landing target\n4 : Set to true to fuse land detector\n5 : Set to true to publish AGL as local position down component\n6 : Set to true to enable flow gyro compensation\n7 : Set to true to enable baro fusion\ndefault (145 - GPS, baro, land detector)", "max": 255, "min": 0, "name": "LPE_FUSION", "shortDesc": "Integer bitmask controlling data fusion", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.29, "group": "Local Position Estimator", "max": 0.4, "min": 0.0, "name": "LPE_GPS_DELAY", "shortDesc": "GPS delay compensaton", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.25, "group": "Local Position Estimator", "longDesc": "EPV used if greater than this value.", "max": 2.0, "min": 0.01, "name": "LPE_GPS_VXY", "shortDesc": "GPS xy velocity standard deviation", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.25, "group": "Local Position Estimator", "max": 2.0, "min": 0.01, "name": "LPE_GPS_VZ", "shortDesc": "GPS z velocity standard deviation", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Local Position Estimator", "max": 5.0, "min": 0.01, "name": "LPE_GPS_XY", "shortDesc": "Minimum GPS xy standard deviation, uses reported EPH if greater", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.0, "group": "Local Position Estimator", "max": 200.0, "min": 0.01, "name": "LPE_GPS_Z", "shortDesc": "Minimum GPS z standard deviation, uses reported EPV if greater", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Local Position Estimator", "max": 10.0, "min": 0.01, "name": "LPE_LAND_VXY", "shortDesc": "Land detector xy velocity standard deviation", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.03, "group": "Local Position Estimator", "max": 10.0, "min": 0.001, "name": "LPE_LAND_Z", "shortDesc": "Land detector z standard deviation", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 8, "default": 47.397742, "group": "Local Position Estimator", "max": 90.0, "min": -90.0, "name": "LPE_LAT", "shortDesc": "Local origin latitude for nav w/o GPS", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Local Position Estimator", "max": 1.0, "min": -1.0, "name": "LPE_LDR_OFF_Z", "shortDesc": "Lidar z offset from center of vehicle +down", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.03, "group": "Local Position Estimator", "max": 1.0, "min": 0.01, "name": "LPE_LDR_Z", "shortDesc": "Lidar z standard deviation", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 8, "default": 8.545594, "group": "Local Position Estimator", "max": 180.0, "min": -180.0, "name": "LPE_LON", "shortDesc": "Local origin longitude for nav w/o GPS", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0001, "group": "Local Position Estimator", "max": 10.0, "min": 0.0, "name": "LPE_LT_COV", "shortDesc": "Minimum landing target standard covariance, uses reported covariance if greater", "type": "Float", "units": "m^2"}, {"category": "Standard", "decimalPlaces": 8, "default": 0.001, "group": "Local Position Estimator", "max": 1.0, "min": 0.0, "name": "LPE_PN_B", "shortDesc": "Accel bias propagation noise density", "type": "Float", "units": "m/s^3/sqrt(Hz)"}, {"category": "Standard", "decimalPlaces": 8, "default": 0.1, "group": "Local Position Estimator", "longDesc": "Increase to trust measurements more.\nDecrease to trust model more.", "max": 1.0, "min": 0.0, "name": "LPE_PN_P", "shortDesc": "Position propagation noise density", "type": "Float", "units": "m/s/sqrt(Hz)"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.001, "group": "Local Position Estimator", "max": 1.0, "min": 0.0, "name": "LPE_PN_T", "shortDesc": "Terrain random walk noise density, hilly/outdoor (0.1), flat/Indoor (0.001)", "type": "Float", "units": "m/s/sqrt(Hz)"}, {"category": "Standard", "decimalPlaces": 8, "default": 0.1, "group": "Local Position Estimator", "longDesc": "Increase to trust measurements more.\nDecrease to trust model more.", "max": 1.0, "min": 0.0, "name": "LPE_PN_V", "shortDesc": "Velocity propagation noise density", "type": "Float", "units": "m/s^2/sqrt(Hz)"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Local Position Estimator", "max": 1.0, "min": -1.0, "name": "LPE_SNR_OFF_Z", "shortDesc": "Sonar z offset from center of vehicle +down", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Local Position Estimator", "max": 1.0, "min": 0.01, "name": "LPE_SNR_Z", "shortDesc": "Sonar z standard deviation", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Local Position Estimator", "longDesc": "Used to calculate increased terrain random walk nosie due to movement.", "max": 100.0, "min": 0.0, "name": "LPE_T_MAX_GRADE", "shortDesc": "Terrain maximum percent grade, hilly/outdoor (100 = 45 deg), flat/Indoor (0 = 0 deg)", "type": "Float", "units": "%"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.001, "group": "Local Position Estimator", "max": 1.0, "min": 0.0001, "name": "LPE_VIC_P", "shortDesc": "Vicon position standard deviation", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Local Position Estimator", "longDesc": "Set to zero to enable automatic compensation from measurement timestamps", "max": 0.1, "min": 0.0, "name": "LPE_VIS_DELAY", "shortDesc": "Vision delay compensation", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "Local Position Estimator", "max": 1.0, "min": 0.01, "name": "LPE_VIS_XY", "shortDesc": "Vision xy standard deviation", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.5, "group": "Local Position Estimator", "max": 100.0, "min": 0.01, "name": "LPE_VIS_Z", "shortDesc": "Vision z standard deviation", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.3, "group": "Local Position Estimator", "max": 1.0, "min": 0.01, "name": "LPE_VXY_PUB", "shortDesc": "Required velocity xy standard deviation to publish position", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 0, "default": 5.0, "group": "Local Position Estimator", "max": 1000.0, "min": 5.0, "name": "LPE_X_LP", "shortDesc": "Cut frequency for state publication", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Local Position Estimator", "max": 5.0, "min": 0.3, "name": "LPE_Z_PUB", "shortDesc": "Required z standard deviation to publish altitude/ terrain", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "This allows a ground control station to automatically find the drone\non the local network.", "name": "MAV_0_BROADCAST", "shortDesc": "Broadcast heartbeats on local network for MAVLink instance 0", "type": "Int32", "values": [{"description": "Never broadcast", "value": 0}, {"description": "Always broadcast", "value": 1}, {"description": "Only multicast", "value": 2}]}, {"category": "Standard", "default": 2, "group": "MAVLink", "longDesc": "This is used to force flow control on or off for the the mavlink\ninstance. By default it is auto detected. Use when auto detection fails.", "name": "MAV_0_FLOW_CTRL", "rebootRequired": true, "shortDesc": "Enable serial flow control for instance 0", "type": "Int32", "values": [{"description": "Force off", "value": 0}, {"description": "Force on", "value": 1}, {"description": "Auto-detected", "value": 2}]}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "If enabled, forward incoming MAVLink messages to other MAVLink ports if the\nmessage is either broadcast or the target is not the autopilot.\nThis allows for example a GCS to talk to a camera that is connected to the\nautopilot via MAVLink (on a different link than the GCS).", "name": "MAV_0_FORWARD", "rebootRequired": true, "shortDesc": "Enable MAVLink Message forwarding for instance 0", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.015, "group": "MAVLink", "increment": 0.001, "longDesc": "Positive real value that configures the transmission frequency of the\nHIGH_LATENCY2 stream for instance 0, configured in iridium mode.\nThis parameter has no effect if the instance mode is different from iridium.", "max": 50.0, "min": 0.0, "name": "MAV_0_HL_FREQ", "rebootRequired": true, "shortDesc": "Configures the frequency of HIGH_LATENCY2 stream for instance 0", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "The MAVLink Mode defines the set of streamed messages (for example the\nvehicle's attitude) and their sending rates.", "name": "MAV_0_MODE", "rebootRequired": true, "shortDesc": "MAVLink Mode for instance 0", "type": "Int32", "values": [{"description": "Normal", "value": 0}, {"description": "Custom", "value": 1}, {"description": "Onboard", "value": 2}, {"description": "OSD", "value": 3}, {"description": "Magic", "value": 4}, {"description": "Config", "value": 5}, {"description": "Minimal", "value": 7}, {"description": "External Vision", "value": 8}, {"description": "Gimbal", "value": 10}, {"description": "Onboard Low Bandwidth", "value": 11}, {"description": "uAvionix", "value": 12}, {"description": "Low Bandwidth", "value": 13}]}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "If enabled, MAVLink messages will be throttled according to\n`txbuf` field reported by radio_status.\nRequires a radio to send the mavlink message RADIO_STATUS.", "name": "MAV_0_RADIO_CTL", "rebootRequired": true, "shortDesc": "Enable software throttling of mavlink on instance 0", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1200, "group": "MAVLink", "longDesc": "Configure the maximum sending rate for the MAVLink streams in Bytes/sec.\nIf the configured streams exceed the maximum rate, the sending rate of\neach stream is automatically decreased.\nIf this is set to 0 a value of half of the theoretical maximum bandwidth is used.\nThis corresponds to baudrate/20 Bytes/s (baudrate/10 = maximum data rate on\n8N1-configured links).", "min": 0, "name": "MAV_0_RATE", "rebootRequired": true, "shortDesc": "Maximum MAVLink sending rate for instance 0", "type": "Int32", "units": "B/s"}, {"category": "Standard", "default": 14550, "group": "MAVLink", "longDesc": "If ethernet enabled and selected as configuration for MAVLink instance 0,\nselected remote port will be set and used in MAVLink instance 0.", "name": "MAV_0_REMOTE_PRT", "rebootRequired": true, "shortDesc": "MAVLink Remote Port for instance 0", "type": "Int32"}, {"category": "Standard", "default": 14556, "group": "MAVLink", "longDesc": "If ethernet enabled and selected as configuration for MAVLink instance 0,\nselected udp port will be set and used in MAVLink instance 0.", "name": "MAV_0_UDP_PRT", "rebootRequired": true, "shortDesc": "MAVLink Network Port for instance 0", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "This allows a ground control station to automatically find the drone\non the local network.", "name": "MAV_1_BROADCAST", "shortDesc": "Broadcast heartbeats on local network for MAVLink instance 1", "type": "Int32", "values": [{"description": "Never broadcast", "value": 0}, {"description": "Always broadcast", "value": 1}, {"description": "Only multicast", "value": 2}]}, {"category": "Standard", "default": 2, "group": "MAVLink", "longDesc": "This is used to force flow control on or off for the the mavlink\ninstance. By default it is auto detected. Use when auto detection fails.", "name": "MAV_1_FLOW_CTRL", "rebootRequired": true, "shortDesc": "Enable serial flow control for instance 1", "type": "Int32", "values": [{"description": "Force off", "value": 0}, {"description": "Force on", "value": 1}, {"description": "Auto-detected", "value": 2}]}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "If enabled, forward incoming MAVLink messages to other MAVLink ports if the\nmessage is either broadcast or the target is not the autopilot.\nThis allows for example a GCS to talk to a camera that is connected to the\nautopilot via MAVLink (on a different link than the GCS).", "name": "MAV_1_FORWARD", "rebootRequired": true, "shortDesc": "Enable MAVLink Message forwarding for instance 1", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.015, "group": "MAVLink", "increment": 0.001, "longDesc": "Positive real value that configures the transmission frequency of the\nHIGH_LATENCY2 stream for instance 1, configured in iridium mode.\nThis parameter has no effect if the instance mode is different from iridium.", "max": 50.0, "min": 0.0, "name": "MAV_1_HL_FREQ", "rebootRequired": true, "shortDesc": "Configures the frequency of HIGH_LATENCY2 stream for instance 1", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 2, "group": "MAVLink", "longDesc": "The MAVLink Mode defines the set of streamed messages (for example the\nvehicle's attitude) and their sending rates.", "name": "MAV_1_MODE", "rebootRequired": true, "shortDesc": "MAVLink Mode for instance 1", "type": "Int32", "values": [{"description": "Normal", "value": 0}, {"description": "Custom", "value": 1}, {"description": "Onboard", "value": 2}, {"description": "OSD", "value": 3}, {"description": "Magic", "value": 4}, {"description": "Config", "value": 5}, {"description": "Minimal", "value": 7}, {"description": "External Vision", "value": 8}, {"description": "Gimbal", "value": 10}, {"description": "Onboard Low Bandwidth", "value": 11}, {"description": "uAvionix", "value": 12}, {"description": "Low Bandwidth", "value": 13}]}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "If enabled, MAVLink messages will be throttled according to\n`txbuf` field reported by radio_status.\nRequires a radio to send the mavlink message RADIO_STATUS.", "name": "MAV_1_RADIO_CTL", "rebootRequired": true, "shortDesc": "Enable software throttling of mavlink on instance 1", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "Configure the maximum sending rate for the MAVLink streams in Bytes/sec.\nIf the configured streams exceed the maximum rate, the sending rate of\neach stream is automatically decreased.\nIf this is set to 0 a value of half of the theoretical maximum bandwidth is used.\nThis corresponds to baudrate/20 Bytes/s (baudrate/10 = maximum data rate on\n8N1-configured links).", "min": 0, "name": "MAV_1_RATE", "rebootRequired": true, "shortDesc": "Maximum MAVLink sending rate for instance 1", "type": "Int32", "units": "B/s"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "If ethernet enabled and selected as configuration for MAVLink instance 1,\nselected remote port will be set and used in MAVLink instance 1.", "name": "MAV_1_REMOTE_PRT", "rebootRequired": true, "shortDesc": "MAVLink Remote Port for instance 1", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "If ethernet enabled and selected as configuration for MAVLink instance 1,\nselected udp port will be set and used in MAVLink instance 1.", "name": "MAV_1_UDP_PRT", "rebootRequired": true, "shortDesc": "MAVLink Network Port for instance 1", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "This allows a ground control station to automatically find the drone\non the local network.", "name": "MAV_2_BROADCAST", "shortDesc": "Broadcast heartbeats on local network for MAVLink instance 2", "type": "Int32", "values": [{"description": "Never broadcast", "value": 0}, {"description": "Always broadcast", "value": 1}, {"description": "Only multicast", "value": 2}]}, {"category": "Standard", "default": 2, "group": "MAVLink", "longDesc": "This is used to force flow control on or off for the the mavlink\ninstance. By default it is auto detected. Use when auto detection fails.", "name": "MAV_2_FLOW_CTRL", "rebootRequired": true, "shortDesc": "Enable serial flow control for instance 2", "type": "Int32", "values": [{"description": "Force off", "value": 0}, {"description": "Force on", "value": 1}, {"description": "Auto-detected", "value": 2}]}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "If enabled, forward incoming MAVLink messages to other MAVLink ports if the\nmessage is either broadcast or the target is not the autopilot.\nThis allows for example a GCS to talk to a camera that is connected to the\nautopilot via MAVLink (on a different link than the GCS).", "name": "MAV_2_FORWARD", "rebootRequired": true, "shortDesc": "Enable MAVLink Message forwarding for instance 2", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.015, "group": "MAVLink", "increment": 0.001, "longDesc": "Positive real value that configures the transmission frequency of the\nHIGH_LATENCY2 stream for instance 2, configured in iridium mode.\nThis parameter has no effect if the instance mode is different from iridium.", "max": 50.0, "min": 0.0, "name": "MAV_2_HL_FREQ", "rebootRequired": true, "shortDesc": "Configures the frequency of HIGH_LATENCY2 stream for instance 2", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "The MAVLink Mode defines the set of streamed messages (for example the\nvehicle's attitude) and their sending rates.", "name": "MAV_2_MODE", "rebootRequired": true, "shortDesc": "MAVLink Mode for instance 2", "type": "Int32", "values": [{"description": "Normal", "value": 0}, {"description": "Custom", "value": 1}, {"description": "Onboard", "value": 2}, {"description": "OSD", "value": 3}, {"description": "Magic", "value": 4}, {"description": "Config", "value": 5}, {"description": "Minimal", "value": 7}, {"description": "External Vision", "value": 8}, {"description": "Gimbal", "value": 10}, {"description": "Onboard Low Bandwidth", "value": 11}, {"description": "uAvionix", "value": 12}, {"description": "Low Bandwidth", "value": 13}]}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "If enabled, MAVLink messages will be throttled according to\n`txbuf` field reported by radio_status.\nRequires a radio to send the mavlink message RADIO_STATUS.", "name": "MAV_2_RADIO_CTL", "rebootRequired": true, "shortDesc": "Enable software throttling of mavlink on instance 2", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "Configure the maximum sending rate for the MAVLink streams in Bytes/sec.\nIf the configured streams exceed the maximum rate, the sending rate of\neach stream is automatically decreased.\nIf this is set to 0 a value of half of the theoretical maximum bandwidth is used.\nThis corresponds to baudrate/20 Bytes/s (baudrate/10 = maximum data rate on\n8N1-configured links).", "min": 0, "name": "MAV_2_RATE", "rebootRequired": true, "shortDesc": "Maximum MAVLink sending rate for instance 2", "type": "Int32", "units": "B/s"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "If ethernet enabled and selected as configuration for MAVLink instance 2,\nselected remote port will be set and used in MAVLink instance 2.", "name": "MAV_2_REMOTE_PRT", "rebootRequired": true, "shortDesc": "MAVLink Remote Port for instance 2", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "If ethernet enabled and selected as configuration for MAVLink instance 2,\nselected udp port will be set and used in MAVLink instance 2.", "name": "MAV_2_UDP_PRT", "rebootRequired": true, "shortDesc": "MAVLink Network Port for instance 2", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "MAVLink", "max": 250, "min": 1, "name": "MAV_COMP_ID", "rebootRequired": true, "shortDesc": "MAVLink component ID", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "If set to 1 incoming external setpoint messages will be directly forwarded\nto the controllers if in offboard control mode", "name": "MAV_FWDEXTSP", "shortDesc": "Forward external setpoint messages", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "Disabling the parameter hash check functionality will make the mavlink instance\nstream parameters continuously.", "name": "MAV_HASH_CHK_EN", "shortDesc": "Parameter hash check", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "The mavlink heartbeat message will not be forwarded if this parameter is set to 'disabled'.\nThe main reason for disabling heartbeats to be forwarded is because they confuse dronekit.", "name": "MAV_HB_FORW_EN", "shortDesc": "Heartbeat message forwarding", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 2, "group": "MAVLink", "name": "MAV_PROTO_VER", "shortDesc": "MAVLink protocol version", "type": "Int32", "values": [{"description": "Version 1 with auto-upgrade to v2 if detected", "value": 1}, {"description": "Version 2", "value": 2}]}, {"category": "Standard", "default": 5, "group": "MAVLink", "longDesc": "If the connected radio stops reporting RADIO_STATUS for a certain time,\na warning is triggered and, if MAV_X_RADIO_CTL is enabled, the software-flow\ncontrol is reset.", "max": 250, "min": 1, "name": "MAV_RADIO_TOUT", "shortDesc": "Timeout in seconds for the RADIO_STATUS reports coming in", "type": "Int32", "units": "s"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "When non-zero the MAVLink app will attempt to configure the\nSiK radio to this ID and re-set the parameter to 0. If the value\nis negative it will reset the complete radio config to\nfactory defaults. Only applies if this mavlink instance is going through a SiK radio", "max": 240, "min": -1, "name": "MAV_SIK_RADIO_ID", "shortDesc": "MAVLink SiK Radio ID", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "MAVLink", "max": 250, "min": 1, "name": "MAV_SYS_ID", "rebootRequired": true, "shortDesc": "MAVLink system ID", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "TELEM2 on Skynode only.", "name": "MAV_S_FORWARD", "rebootRequired": true, "shortDesc": "Enable MAVLink forwarding on TELEM2", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 11, "group": "MAVLink", "longDesc": "The MAVLink Mode defines the set of streamed messages (for example the\nvehicle's attitude) and their sending rates.", "name": "MAV_S_MODE", "rebootRequired": true, "shortDesc": "MAVLink Mode for SOM to FMU communication channel", "type": "Int32", "values": [{"description": "Normal", "value": 0}, {"description": "Onboard", "value": 2}, {"description": "Config", "value": 5}, {"description": "Minimal", "value": 7}, {"description": "Onboard Low Bandwidth", "value": 11}, {"description": "Low Bandwidth", "value": 13}]}, {"category": "Standard", "default": 0, "group": "MAVLink", "max": 22, "min": 0, "name": "MAV_TYPE", "shortDesc": "MAVLink airframe type", "type": "Int32", "values": [{"description": "Generic micro air vehicle", "value": 0}, {"description": "Fixed wing aircraft", "value": 1}, {"description": "Quadrotor", "value": 2}, {"description": "Coaxial helicopter", "value": 3}, {"description": "Normal helicopter with tail rotor", "value": 4}, {"description": "Airship, controlled", "value": 7}, {"description": "Free balloon, uncontrolled", "value": 8}, {"description": "Ground rover", "value": 10}, {"description": "Surface vessel, boat, ship", "value": 11}, {"description": "Submarine", "value": 12}, {"description": "Hexarotor", "value": 13}, {"description": "Octorotor", "value": 14}, {"description": "Tricopter", "value": 15}, {"description": "VTOL Two-rotor Tailsitter", "value": 19}, {"description": "VTOL Quad-rotor Tailsitter", "value": 20}, {"description": "VTOL Tiltrotor", "value": 21}, {"description": "VTOL Standard (separate fixed rotors for hover and cruise flight)", "value": 22}, {"description": "VTOL Tailsitter", "value": 23}]}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "If set to 1 incoming HIL GPS messages are parsed.", "name": "MAV_USEHILGPS", "shortDesc": "Use/Accept HIL GPS message even if not in HIL mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "Magnetometer Bias Estimator", "longDesc": "This enables continuous calibration of the magnetometers\nbefore takeoff using gyro data.", "name": "MBE_ENABLE", "rebootRequired": true, "shortDesc": "Enable online mag bias calibration", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 18.0, "group": "Magnetometer Bias Estimator", "increment": 0.1, "longDesc": "Increase to make the estimator more responsive\nDecrease to make the estimator more robust to noise", "max": 100.0, "min": 0.1, "name": "MBE_LEARN_GAIN", "shortDesc": "Mag bias estimator learning gain", "type": "Float"}, {"category": "Standard", "default": 1, "group": "Manual Control", "longDesc": "This determines if moving the left stick to the lower right\narms and to the lower left disarms the vehicle.", "name": "MAN_ARM_GESTURE", "shortDesc": "Enable arm/disarm stick gesture", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Manual Control", "increment": 0.01, "longDesc": "Range around stick center ignored to prevent\nvehicle drift from stick hardware inaccuracy.\nDoes not apply to any precise constant input like\nthrottle and attitude or rate piloting.", "max": 1.0, "min": 0.0, "name": "MAN_DEADZONE", "shortDesc": "Deadzone for sticks (only specific use cases)", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Manual Control", "longDesc": "The timeout for holding the left stick to the lower left\nand the right stick to the lower right at the same time until the gesture\nkills the actuators one-way.\nA negative value disables the feature.", "max": 15.0, "min": -1.0, "name": "MAN_KILL_GEST_T", "shortDesc": "Trigger time for kill stick gesture", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Mission", "longDesc": "Ensure:\ngripper: NAV_CMD_DO_GRIPPER\nhas released before continuing mission.\nwinch: CMD_DO_WINCH\nhas delivered before continuing mission.\ngimbal: CMD_DO_GIMBAL_MANAGER_PITCHYAW\nhas reached the commanded orientation before beginning to take pictures.", "min": 0.0, "name": "MIS_COMMAND_TOUT", "shortDesc": "Timeout to allow the payload to execute the mission command", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 10000.0, "group": "Mission", "increment": 100.0, "longDesc": "There will be a warning message if the current waypoint is more distant than MIS_DIST_1WP from Home.\nHas no effect on mission validity.\nSet a value of zero or less to disable.", "max": 100000.0, "min": -1.0, "name": "MIS_DIST_1WP", "shortDesc": "Maximal horizontal distance from Home to first waypoint", "type": "Float", "units": "m"}, {"category": "Standard", "default": 30, "group": "Mission", "longDesc": "Minimum altitude above landing point that the vehicle will climb to after an aborted landing.\nThen vehicle will loiter in this altitude until further command is received.\nOnly applies to fixed-wing vehicles.", "min": 0, "name": "MIS_LND_ABRT_ALT", "shortDesc": "Landing abort min altitude", "type": "Int32", "units": "m"}, {"category": "Standard", "default": 0, "group": "Mission", "longDesc": "If enabled, yaw commands will be sent to the mount and the vehicle will follow its heading towards the flight direction.\nIf disabled, the vehicle will yaw towards the ROI.", "max": 1, "min": 0, "name": "MIS_MNT_YAW_CTL", "shortDesc": "Enable yaw control of the mount. (Only affects multicopters and ROI mission items)", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "Enable", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 2.5, "group": "Mission", "increment": 0.5, "longDesc": "This is the relative altitude the system will take off to\nif not otherwise specified.", "min": 0.0, "name": "MIS_TAKEOFF_ALT", "shortDesc": "Default take-off altitude", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Mission", "longDesc": "Specifies if a mission has to contain a takeoff and/or mission landing.\nValidity of configured takeoffs/landings is checked independently of the setting here.", "name": "MIS_TKO_LAND_REQ", "shortDesc": "Mission takeoff/landing required", "type": "Int32", "values": [{"description": "No requirements", "value": 0}, {"description": "Require a takeoff", "value": 1}, {"description": "Require a landing", "value": 2}, {"description": "Require a takeoff and a landing", "value": 3}, {"description": "Require both a takeoff and a landing, or neither", "value": 4}, {"description": "Same as previous when landed, in-air require landing only if no valid VTOL approach is present", "value": 5}]}, {"category": "Standard", "decimalPlaces": 1, "default": 12.0, "group": "Mission", "increment": 1.0, "max": 90.0, "min": 0.0, "name": "MIS_YAW_ERR", "shortDesc": "Max yaw error in degrees needed for waypoint heading acceptance", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Mission", "increment": 1.0, "longDesc": "If set > 0 it will ignore the target heading for normal waypoint acceptance. If the\nwaypoint forces the heading the timeout will matter. For example on VTOL forwards transition.\nMainly useful for VTOLs that have less yaw authority and might not reach target\nyaw in wind. Disabled by default.", "max": 20.0, "min": -1.0, "name": "MIS_YAW_TMT", "shortDesc": "Time in seconds we wait on reaching target heading at a waypoint if it is forced", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Mission", "max": 4, "min": 0, "name": "MPC_YAW_MODE", "shortDesc": "Heading behavior in autonomous modes", "type": "Int32", "values": [{"description": "towards waypoint", "value": 0}, {"description": "towards home", "value": 1}, {"description": "away from home", "value": 2}, {"description": "along trajectory", "value": 3}, {"description": "towards waypoint (yaw first)", "value": 4}, {"description": "yaw fixed", "value": 5}]}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Mission", "increment": 0.5, "longDesc": "Default acceptance radius, overridden by acceptance radius of waypoint if set.\nFor fixed wing the npfg switch distance is used for horizontal acceptance.", "max": 200.0, "min": 0.05, "name": "NAV_ACC_RAD", "shortDesc": "Acceptance Radius", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1, "group": "Mission", "name": "NAV_FORCE_VT", "shortDesc": "Force VTOL mode takeoff and land", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Mission", "longDesc": "Altitude acceptance used for the last waypoint before a fixed-wing landing. This is usually smaller\nthan the standard vertical acceptance because close to the ground higher accuracy is required.", "max": 200.0, "min": 0.05, "name": "NAV_FW_ALTL_RAD", "shortDesc": "FW Altitude Acceptance Radius before a landing", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Mission", "increment": 0.5, "longDesc": "Acceptance radius for fixedwing altitude.", "max": 200.0, "min": 0.05, "name": "NAV_FW_ALT_RAD", "shortDesc": "FW Altitude Acceptance Radius", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 80.0, "group": "Mission", "increment": 0.5, "longDesc": "Default value of loiter radius in fixed-wing mode (e.g. for Loiter mode).\nThe direction of the loiter can be set via the sign: A positive value for\nclockwise, negative for counter-clockwise.", "max": 10000.0, "min": -10000.0, "name": "NAV_LOITER_RAD", "shortDesc": "Loiter radius (FW only)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.8, "group": "Mission", "increment": 0.5, "longDesc": "Acceptance radius for multicopter altitude.", "max": 200.0, "min": 0.05, "name": "NAV_MC_ALT_RAD", "shortDesc": "MC Altitude Acceptance Radius", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Mission", "increment": 1.0, "longDesc": "Minimum height above ground the vehicle is allowed to descend to during Mission and RTL,\nexcluding landing commands.\nRequires a distance sensor to be set up.\nNote: only prevents the vehicle from descending further, but does not force it to climb.\nSet to a negative value to disable.", "min": -1.0, "name": "NAV_MIN_GND_DIST", "shortDesc": "Minimum height above ground during Mission and RTL", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Mission", "increment": 0.5, "longDesc": "This is the minimum altitude above Home the system will always obey in Loiter (Hold) mode if switched into this\nmode without specifying an altitude (e.g. through Loiter switch on RC).\nDoesn't affect Loiters that are part of Missions or that are entered through a reposition setpoint (\"Go to\").\nSet to a negative value to disable.", "min": -1.0, "name": "NAV_MIN_LTR_ALT", "shortDesc": "Minimum Loiter altitude", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1, "group": "Mission", "longDesc": "Enabling this will allow the system to respond\nto transponder data from e.g. ADSB transponders", "name": "NAV_TRAFF_AVOID", "shortDesc": "Set traffic avoidance mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Warn only", "value": 1}, {"description": "Return mode", "value": 2}, {"description": "Land mode", "value": 3}, {"description": "Position Hold mode", "value": 4}]}, {"category": "Standard", "default": 500.0, "group": "Mission", "longDesc": "Defines a crosstrack horizontal distance", "min": 500.0, "name": "NAV_TRAFF_A_HOR", "shortDesc": "Set NAV TRAFFIC AVOID horizontal distance", "type": "Float", "units": "m"}, {"category": "Standard", "default": 500.0, "group": "Mission", "max": 500.0, "min": 10.0, "name": "NAV_TRAFF_A_VER", "shortDesc": "Set NAV TRAFFIC AVOID vertical distance", "type": "Float", "units": "m"}, {"category": "Standard", "default": 60, "group": "Mission", "longDesc": "Minimum acceptable time until collsion.\nAssumes constant speed over 3d distance.", "max": 900000000, "min": 1, "name": "NAV_TRAFF_COLL_T", "shortDesc": "Estimated time until collision", "type": "Int32", "units": "s"}, {"category": "Standard", "default": 0, "group": "Mixer Output", "longDesc": "The air-mode enables the mixer to increase the total thrust of the multirotor\nin order to keep attitude and rate control even at low and high throttle.\nThis function should be disabled during tuning as it will help the controller\nto diverge if the closed-loop is unstable (i.e. the vehicle is not tuned yet).\nEnabling air-mode for yaw requires the use of an arming switch.", "name": "MC_AIRMODE", "shortDesc": "Multicopter air-mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Roll/Pitch", "value": 1}, {"description": "Roll/Pitch/Yaw", "value": 2}]}, {"category": "Standard", "default": 0, "group": "Mount", "longDesc": "Set to true for servo gimbal, false for passthrough.\nThis is required for a gimbal which is not capable of stabilizing itself\nand relies on the IMU's attitude estimation.", "name": "MNT_DO_STAB", "shortDesc": "Stabilize the mount", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "Stabilize all axis", "value": 1}, {"description": "Stabilize yaw for absolute/lock mode.", "value": 2}, {"description": "Stabilize pitch for absolute/lock mode.", "value": 3}]}, {"category": "Standard", "decimalPlaces": 1, "default": 90.0, "group": "Mount", "max": 90.0, "min": -90.0, "name": "MNT_LND_P_MAX", "shortDesc": "Pitch maximum when landed", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": -90.0, "group": "Mount", "max": 90.0, "min": -90.0, "name": "MNT_LND_P_MIN", "shortDesc": "Pitch minimum when landed", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "Mount", "max": 6, "min": 0, "name": "MNT_MAN_PITCH", "shortDesc": "Auxiliary channel to control pitch (in AUX input or manual mode)", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "AUX1", "value": 1}, {"description": "AUX2", "value": 2}, {"description": "AUX3", "value": 3}, {"description": "AUX4", "value": 4}, {"description": "AUX5", "value": 5}, {"description": "AUX6", "value": 6}]}, {"category": "Standard", "default": 0, "group": "Mount", "max": 6, "min": 0, "name": "MNT_MAN_ROLL", "shortDesc": "Auxiliary channel to control roll (in AUX input or manual mode)", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "AUX1", "value": 1}, {"description": "AUX2", "value": 2}, {"description": "AUX3", "value": 3}, {"description": "AUX4", "value": 4}, {"description": "AUX5", "value": 5}, {"description": "AUX6", "value": 6}]}, {"category": "Standard", "default": 0, "group": "Mount", "max": 6, "min": 0, "name": "MNT_MAN_YAW", "shortDesc": "Auxiliary channel to control yaw (in AUX input or manual mode)", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "AUX1", "value": 1}, {"description": "AUX2", "value": 2}, {"description": "AUX3", "value": 3}, {"description": "AUX4", "value": 4}, {"description": "AUX5", "value": 5}, {"description": "AUX6", "value": 6}]}, {"category": "Standard", "default": 154, "group": "Mount", "longDesc": "If MNT_MODE_OUT is MAVLink protocol v2, mount configure/control commands will be sent with this component ID.", "name": "MNT_MAV_COMPID", "shortDesc": "Mavlink Component ID of the mount", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "Mount", "longDesc": "If MNT_MODE_OUT is MAVLink gimbal protocol v1, mount configure/control commands will be sent with this target ID.", "name": "MNT_MAV_SYSID", "shortDesc": "Mavlink System ID of the mount", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 45.0, "group": "Mount", "longDesc": "Use output driver settings to calibrate (e.g. PWM_CENT/_MIN/_MAX).", "name": "MNT_MAX_PITCH", "shortDesc": "Max positive angle of pitch setpoint (only in MNT_MODE_OUT=AUX)", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": -45.0, "group": "Mount", "longDesc": "Use output driver settings to calibrate (e.g. PWM_CENT/_MIN/_MAX).", "name": "MNT_MIN_PITCH", "shortDesc": "Min negative angle of pitch setpoint (only in MNT_MODE_OUT=AUX)", "type": "Float", "units": "deg"}, {"category": "Standard", "default": -1, "group": "Mount", "longDesc": "This is the protocol used between the ground station and the autopilot.\nRecommended is Auto, RC only or MAVLink gimbal protocol v2.\nThe rest will be deprecated.", "max": 4, "min": -1, "name": "MNT_MODE_IN", "rebootRequired": true, "shortDesc": "Mount input mode", "type": "Int32", "values": [{"description": "DISABLED", "value": -1}, {"description": "Auto (RC and MAVLink gimbal protocol v2)", "value": 0}, {"description": "RC", "value": 1}, {"description": "MAVLINK_ROI (protocol v1, to be deprecated)", "value": 2}, {"description": "MAVLINK_DO_MOUNT (protocol v1, to be deprecated)", "value": 3}, {"description": "MAVlink gimbal protocol v2", "value": 4}]}, {"category": "Standard", "default": 0, "group": "Mount", "longDesc": "This is the protocol used between the autopilot and a connected gimbal.\nRecommended is the MAVLink gimbal protocol v2 if the gimbal supports it.", "max": 2, "min": 0, "name": "MNT_MODE_OUT", "rebootRequired": true, "shortDesc": "Mount output mode", "type": "Int32", "values": [{"description": "AUX", "value": 0}, {"description": "MAVLink gimbal protocol v1", "value": 1}, {"description": "MAVLink gimbal protocol v2", "value": 2}]}, {"category": "Standard", "decimalPlaces": 1, "default": 90.0, "group": "Mount", "longDesc": "Use output driver settings to calibrate (e.g. PWM_CENT/_MIN/_MAX). Note that only symmetric angular ranges are supported.", "max": 720.0, "min": 1.0, "name": "MNT_RANGE_ROLL", "shortDesc": "Range of roll channel output (only in MNT_MODE_OUT=AUX)", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 360.0, "group": "Mount", "longDesc": "Use output driver settings to calibrate (e.g. PWM_CENT/_MIN/_MAX). Note that only symmetric angular ranges are supported.", "max": 720.0, "min": 1.0, "name": "MNT_RANGE_YAW", "shortDesc": "Range of yaw channel output (only in MNT_MODE_OUT=AUX)", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 30.0, "group": "Mount", "longDesc": "Full stick input [-1..1] translats to [-pitch rate..pitch rate].", "max": 90.0, "min": 1.0, "name": "MNT_RATE_PITCH", "shortDesc": "Angular pitch rate for manual input in degrees/second", "type": "Float", "units": "deg/s"}, {"category": "Standard", "default": 30.0, "group": "Mount", "longDesc": "Full stick input [-1..1] translats to [-yaw rate..yaw rate].", "max": 90.0, "min": 1.0, "name": "MNT_RATE_YAW", "shortDesc": "Angular yaw rate for manual input in degrees/second", "type": "Float", "units": "deg/s"}, {"category": "Standard", "default": 1, "group": "Mount", "max": 1, "min": 0, "name": "MNT_RC_IN_MODE", "shortDesc": "Input mode for RC gimbal input", "type": "Int32", "values": [{"description": "Angle", "value": 0}, {"description": "Angular rate", "value": 1}]}, {"category": "Standard", "default": 0.3, "group": "Mount", "longDesc": "Use when no angular position feedback is available.\nWith MNT_MODE_OUT set to AUX, the mount operates in open-loop and directly commands the servo output.\nParameters must be tuned for the specific servo to approximate its speed and response.", "min": 0.0, "name": "MNT_TAU", "shortDesc": "Alpha filter time constant defining the convergence rate (in seconds) for open-loop AUX mount control", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Multicopter Acro Mode", "longDesc": "Exponential factor for tuning the input curve shape.\n0 Purely linear input curve\n1 Purely cubic input curve", "max": 1.0, "min": 0.0, "name": "MC_ACRO_EXPO", "shortDesc": "Acro mode roll, pitch expo factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Multicopter Acro Mode", "longDesc": "Exponential factor for tuning the input curve shape.\n0 Purely linear input curve\n1 Purely cubic input curve", "max": 1.0, "min": 0.0, "name": "MC_ACRO_EXPO_Y", "shortDesc": "Acro mode yaw expo factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 100.0, "group": "Multicopter Acro Mode", "increment": 5.0, "longDesc": "Full stick deflection leads to this rate.", "max": 1800.0, "min": 0.0, "name": "MC_ACRO_P_MAX", "shortDesc": "Acro mode maximum pitch rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 100.0, "group": "Multicopter Acro Mode", "increment": 5.0, "longDesc": "Full stick deflection leads to this rate.", "max": 1800.0, "min": 0.0, "name": "MC_ACRO_R_MAX", "shortDesc": "Acro mode maximum roll rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Multicopter Acro Mode", "longDesc": "\"Superexponential\" factor for refining the input curve shape tuned using MC_ACRO_EXPO.\n0 Pure Expo function\n0.7 reasonable shape enhancement for intuitive stick feel\n0.95 very strong bent input curve only near maxima have effect", "max": 0.95, "min": 0.0, "name": "MC_ACRO_SUPEXPO", "shortDesc": "Acro mode roll, pitch super expo factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Multicopter Acro Mode", "longDesc": "\"Superexponential\" factor for refining the input curve shape tuned using MC_ACRO_EXPO_Y.\n0 Pure Expo function\n0.7 reasonable shape enhancement for intuitive stick feel\n0.95 very strong bent input curve only near maxima have effect", "max": 0.95, "min": 0.0, "name": "MC_ACRO_SUPEXPOY", "shortDesc": "Acro mode yaw super expo factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 100.0, "group": "Multicopter Acro Mode", "increment": 5.0, "longDesc": "Full stick deflection leads to this rate.", "max": 1800.0, "min": 0.0, "name": "MC_ACRO_Y_MAX", "shortDesc": "Acro mode maximum yaw rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 220.0, "group": "Multicopter Attitude Control", "increment": 5.0, "longDesc": "Limit for pitch rate in manual and auto modes (except acro).\nHas effect for large rotations in autonomous mode, to avoid large control\noutput and mixer saturation.\nThis is not only limited by the vehicle's properties, but also by the maximum\nmeasurement rate of the gyro.", "max": 1800.0, "min": 0.0, "name": "MC_PITCHRATE_MAX", "shortDesc": "Max pitch rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 4.0, "group": "Multicopter Attitude Control", "increment": 0.1, "longDesc": "Pitch proportional gain, i.e. desired angular speed in rad/s for error 1 rad.", "max": 12.0, "min": 0.0, "name": "MC_PITCH_P", "shortDesc": "Pitch P gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 220.0, "group": "Multicopter Attitude Control", "increment": 5.0, "longDesc": "Limit for roll rate in manual and auto modes (except acro).\nHas effect for large rotations in autonomous mode, to avoid large control\noutput and mixer saturation.\nThis is not only limited by the vehicle's properties, but also by the maximum\nmeasurement rate of the gyro.", "max": 1800.0, "min": 0.0, "name": "MC_ROLLRATE_MAX", "shortDesc": "Max roll rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 4.0, "group": "Multicopter Attitude Control", "increment": 0.1, "longDesc": "Roll proportional gain, i.e. desired angular speed in rad/s for error 1 rad.", "max": 12.0, "min": 0.0, "name": "MC_ROLL_P", "shortDesc": "Roll P gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 200.0, "group": "Multicopter Attitude Control", "increment": 5.0, "max": 1800.0, "min": 0.0, "name": "MC_YAWRATE_MAX", "shortDesc": "Max yaw rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.8, "group": "Multicopter Attitude Control", "increment": 0.1, "longDesc": "Yaw proportional gain, i.e. desired angular speed in rad/s for error 1 rad.", "max": 5.0, "min": 0.0, "name": "MC_YAW_P", "shortDesc": "Yaw P gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "Multicopter Attitude Control", "increment": 0.1, "longDesc": "A fraction [0,1] deprioritizing yaw compared to roll and pitch in non-linear attitude control.\nDeprioritizing yaw is necessary because multicopters have much less control authority\nin yaw compared to the other axes and it makes sense because yaw is not critical for\nstable hovering or 3D navigation.\nFor yaw control tuning use MC_YAW_P. This ratio has no impact on the yaw gain.", "max": 1.0, "min": 0.0, "name": "MC_YAW_WEIGHT", "shortDesc": "Yaw weight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 0, "default": 20.0, "group": "Multicopter Attitude Control", "increment": 5.0, "longDesc": "Limits the acceleration of the yaw setpoint to avoid large\ncontrol output and mixer saturation.", "max": 360.0, "min": 5.0, "name": "MPC_YAWRAUTO_ACC", "shortDesc": "Maximum yaw acceleration in autonomous modes", "type": "Float", "units": "deg/s^2"}, {"category": "Standard", "decimalPlaces": 0, "default": 60.0, "group": "Multicopter Attitude Control", "increment": 5.0, "longDesc": "Limits the rate of change of the yaw setpoint to avoid large\ncontrol output and mixer saturation.", "max": 360.0, "min": 5.0, "name": "MPC_YAWRAUTO_MAX", "shortDesc": "Maximum yaw rate in autonomous modes", "type": "Float", "units": "deg/s"}, {"category": "Standard", "default": 0.4, "group": "Multicopter Position Control", "longDesc": "Only used in Position mode.", "max": 1.0, "min": 0.0, "name": "CP_DELAY", "shortDesc": "Average delay of the range sensor message plus the tracking delay of the position controller in seconds", "type": "Float", "units": "s"}, {"category": "Standard", "default": -1.0, "group": "Multicopter Position Control", "longDesc": "Only used in Position mode. Collision avoidance is disabled by setting this parameter to a negative value", "max": 15.0, "min": -1.0, "name": "CP_DIST", "shortDesc": "Minimum distance the vehicle should keep to all obstacles", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Multicopter Position Control", "longDesc": "Only used in Position mode.", "name": "CP_GO_NO_DATA", "shortDesc": "Boolean to allow moving into directions where there is no sensor data (outside FOV)", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 30.0, "group": "Multicopter Position Control", "longDesc": "Only used in Position mode.", "max": 90.0, "min": 0.0, "name": "CP_GUIDE_ANG", "shortDesc": "Angle left/right from the commanded setpoint by which the collision prevention algorithm can choose to change the setpoint direction", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Multicopter Position Control", "longDesc": "Setting this parameter to 0 disables the filter", "max": 2.0, "min": 0.0, "name": "MC_MAN_TILT_TAU", "shortDesc": "Manual tilt input filter time constant", "type": "Float", "units": "s"}, {"category": "Standard", "default": 1, "group": "Multicopter Position Control", "longDesc": "Set to decouple tilt from vertical acceleration.\nThis provides smoother flight but slightly worse tracking in position and auto modes.\nUnset if accurate position tracking during dynamic maneuvers is more important than a smooth flight.", "name": "MPC_ACC_DECOUPLE", "shortDesc": "Acceleration to tilt coupling", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "Multicopter Position Control", "increment": 1.0, "max": 15.0, "min": 2.0, "name": "MPC_ACC_DOWN_MAX", "shortDesc": "Maximum downwards acceleration in climb rate controlled modes", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "When piloting manually, this parameter is only used in MPC_POS_MODE Acceleration based.", "max": 15.0, "min": 2.0, "name": "MPC_ACC_HOR", "shortDesc": "Acceleration for autonomous and for manual modes", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 5.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "MPC_POS_MODE\n1 just deceleration\n4 not used, use MPC_ACC_HOR instead", "max": 15.0, "min": 2.0, "name": "MPC_ACC_HOR_MAX", "shortDesc": "Maximum horizontal acceleration", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 4.0, "group": "Multicopter Position Control", "increment": 1.0, "max": 15.0, "min": 2.0, "name": "MPC_ACC_UP_MAX", "shortDesc": "Maximum upwards acceleration in climb rate controlled modes", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "default": 2, "group": "Multicopter Position Control", "longDesc": "Control height\n0: relative earth frame origin which may drift due to sensors\n1: relative to ground (requires distance sensor) which changes with terrain variation.\nIt will revert to relative earth frame if the distance to ground estimate becomes invalid.\n2: relative to ground (requires distance sensor) when stationary\nand relative to earth frame when moving horizontally.\nThe speed threshold is MPC_HOLD_MAX_XY", "max": 2, "min": 0, "name": "MPC_ALT_MODE", "shortDesc": "Altitude reference mode", "type": "Int32", "values": [{"description": "Altitude following", "value": 0}, {"description": "Terrain following", "value": 1}, {"description": "Terrain hold", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.8, "group": "Multicopter Position Control", "longDesc": "Only used with MPC_POS_MODE Direct velocity or MPC_ALT_MODE 2", "max": 3.0, "min": 0.0, "name": "MPC_HOLD_MAX_XY", "shortDesc": "Maximum horizontal velocity for which position hold is enabled (use 0 to disable check)", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.6, "group": "Multicopter Position Control", "longDesc": "Only used with MPC_ALT_MODE 1", "max": 3.0, "min": 0.0, "name": "MPC_HOLD_MAX_Z", "shortDesc": "Maximum vertical velocity for which position hold is enabled (use 0 to disable check)", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 4.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "Limit the maximum jerk of the vehicle (how fast the acceleration can change).\nA lower value leads to smoother vehicle motions but also limited agility.", "max": 80.0, "min": 1.0, "name": "MPC_JERK_AUTO", "shortDesc": "Jerk limit in autonomous modes", "type": "Float", "units": "m/s^3"}, {"category": "Standard", "decimalPlaces": 0, "default": 8.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "Limit the maximum jerk (acceleration change) of the vehicle.\nA lower value leads to smoother motions but limits agility.\nSetting this to the maximum value essentially disables the limit.\nOnly used with MPC_POS_MODE Acceleration based.", "max": 500.0, "min": 0.5, "name": "MPC_JERK_MAX", "shortDesc": "Maximum horizontal and vertical jerk in Position/Altitude mode", "type": "Float", "units": "m/s^3"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Multicopter Position Control", "longDesc": "Below this altitude descending velocity gets limited to a value\nbetween \"MPC_Z_VEL_MAX_DN\" (or \"MPC_Z_V_AUTO_DN\") and \"MPC_LAND_SPEED\"\nValue needs to be higher than \"MPC_LAND_ALT2\"", "max": 122.0, "min": 0.0, "name": "MPC_LAND_ALT1", "shortDesc": "Altitude for 1. step of slow landing (descend)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Multicopter Position Control", "longDesc": "Below this altitude descending velocity gets\nlimited to \"MPC_LAND_SPEED\"\nValue needs to be lower than \"MPC_LAND_ALT1\"", "max": 122.0, "min": 0.0, "name": "MPC_LAND_ALT2", "shortDesc": "Altitude for 2. step of slow landing (landing)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Multicopter Position Control", "longDesc": "If a valid distance sensor measurement to the ground is available,\nlimit descending velocity to \"MPC_LAND_CRWL\" below this altitude.", "max": 122.0, "min": 0.0, "name": "MPC_LAND_ALT3", "shortDesc": "Altitude for 3. step of slow landing", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.3, "group": "Multicopter Position Control", "longDesc": "Used below MPC_LAND_ALT3 if distance sensor data is availabe.", "min": 0.1, "name": "MPC_LAND_CRWL", "shortDesc": "Land crawl descend rate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 0, "default": -1.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "When nudging is enabled (see MPC_LAND_RC_HELP), this defines the maximum\nallowed horizontal displacement from the original landing point.\n- If inside of the radius, only allow nudging inputs that do not move the vehicle outside of it.\n- If outside of the radius, only allow nudging inputs that move the vehicle back towards it.\nSet it to -1 for infinite radius.", "min": -1.0, "name": "MPC_LAND_RADIUS", "shortDesc": "User assisted landing radius", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Multicopter Position Control", "longDesc": "Using stick input the vehicle can be moved horizontally and yawed.\nThe descend speed is amended:\nstick full up - 0\nstick centered - MPC_LAND_SPEED\nstick full down - 2 * MPC_LAND_SPEED\nManual override during auto modes has to be disabled to use this feature (see COM_RC_OVERRIDE).", "max": 1, "min": 0, "name": "MPC_LAND_RC_HELP", "shortDesc": "Enable nudging based on user input during autonomous land routine", "type": "Int32", "values": [{"description": "Nudging disabled", "value": 0}, {"description": "Nudging enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.7, "group": "Multicopter Position Control", "min": 0.6, "name": "MPC_LAND_SPEED", "shortDesc": "Landing descend rate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.08, "group": "Multicopter Position Control", "increment": 0.01, "longDesc": "The value is mapped to the lowest throttle stick position in Stabilized mode.\nToo low collective thrust leads to loss of roll/pitch/yaw torque control authority.\nAirmode is used to keep torque authority with zero thrust (see MC_AIRMODE).", "max": 1.0, "min": 0.0, "name": "MPC_MANTHR_MIN", "shortDesc": "Minimum collective thrust in Stabilized mode", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 0, "default": 35.0, "group": "Multicopter Position Control", "increment": 1.0, "max": 70.0, "min": 1.0, "name": "MPC_MAN_TILT_MAX", "shortDesc": "Maximal tilt angle in Stabilized, Altitude and Altitude Cruise mode", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 150.0, "group": "Multicopter Position Control", "increment": 10.0, "max": 400.0, "min": 0.0, "name": "MPC_MAN_Y_MAX", "shortDesc": "Max manual yaw rate for Stabilized, Altitude, Position mode", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.08, "group": "Multicopter Position Control", "increment": 0.01, "longDesc": "Not used in Stabilized mode\nSetting this parameter to 0 disables the filter", "max": 5.0, "min": 0.0, "name": "MPC_MAN_Y_TAU", "shortDesc": "Manual yaw rate input filter time constant", "type": "Float", "units": "s"}, {"category": "Standard", "default": 4, "group": "Multicopter Position Control", "longDesc": "The supported sub-modes are:\nDirect velocity:\nSticks directly map to velocity setpoints without smoothing.\nAlso applies to vertical direction and Altitude mode.\nUseful for velocity control tuning.\nAcceleration based:\nSticks map to acceleration and there's a virtual brake drag", "name": "MPC_POS_MODE", "shortDesc": "Position/Altitude mode variant", "type": "Int32", "values": [{"description": "Direct velocity", "value": 0}, {"description": "Acceleration based", "value": 4}]}, {"category": "Standard", "default": 0, "group": "Multicopter Position Control", "longDesc": "Defines how the throttle stick is mapped to collective thrust in Stabilized mode.\nRescale to hover thrust estimate:\nStick input is linearly rescaled, such that a centered throttle stick corresponds to the hover thrust estimator's output.\nNo rescale:\nDirectly map the stick 1:1 to the output.\nCan be useful with very low hover thrust which leads to much distortion and the upper half getting sensitive.\nRescale to hover thrust parameter:\nSimilar to rescaling to the hover thrust estimate, but it uses the hover thrust parameter value (see MPC_THR_HOVER) instead of estimated value.\nWith MPC_THR_HOVER 0.5 it's equivalent to No rescale.", "name": "MPC_THR_CURVE", "shortDesc": "Thrust curve mapping in Stabilized Mode", "type": "Int32", "values": [{"description": "Rescale to estimate", "value": 0}, {"description": "No rescale", "value": 1}, {"description": "Rescale to parameter", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "Multicopter Position Control", "increment": 0.01, "longDesc": "Mapped to center throttle stick in Stabilized mode (see MPC_THR_CURVE).\nUsed for initialization of the hover thrust estimator (see MPC_USE_HTE).\nThe estimated hover thrust is used as base for zero vertical acceleration in altitude control.\nThe hover thrust is important for land detection to work correctly.", "max": 0.8, "min": 0.1, "name": "MPC_THR_HOVER", "shortDesc": "Vertical thrust required to hover", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Multicopter Position Control", "increment": 0.05, "longDesc": "Limit allowed thrust e.g. for indoor test of overpowered vehicle.", "max": 1.0, "min": 0.0, "name": "MPC_THR_MAX", "shortDesc": "Maximum collective thrust in climb rate controlled modes", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.12, "group": "Multicopter Position Control", "increment": 0.01, "longDesc": "Too low thrust leads to loss of roll/pitch/yaw torque control authority.\nWith airmode enabled this parameters can be set to 0\nwhile still keeping torque authority (see MC_AIRMODE).", "max": 0.5, "min": 0.05, "name": "MPC_THR_MIN", "shortDesc": "Minimum collective thrust in climb rate controlled modes", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Multicopter Position Control", "increment": 0.01, "longDesc": "Margin that is kept for horizontal control when higher priority vertical thrust is saturated.\nTo avoid completely starving horizontal control with high vertical error.", "max": 0.5, "min": 0.0, "name": "MPC_THR_XY_MARG", "shortDesc": "Horizontal thrust margin", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 0, "default": 45.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "Absolute maximum for all velocity or acceleration controlled modes.\nAny higher value is truncated.", "max": 89.0, "min": 20.0, "name": "MPC_TILTMAX_AIR", "shortDesc": "Maximum tilt angle in air", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 12.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "Tighter tilt limit during takeoff to avoid tip over.", "max": 89.0, "min": 5.0, "name": "MPC_TILTMAX_LND", "shortDesc": "Maximum tilt during inital takeoff ramp", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 3.0, "group": "Multicopter Position Control", "longDesc": "Increasing this value will make climb rate controlled takeoff slower.\nIf it's too slow the drone might scratch the ground and tip over.\nA time constant of 0 disables the ramp", "max": 5.0, "min": 0.0, "name": "MPC_TKO_RAMP_T", "shortDesc": "Smooth takeoff ramp time constant", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.5, "group": "Multicopter Position Control", "max": 5.0, "min": 1.0, "name": "MPC_TKO_SPEED", "shortDesc": "Takeoff climb rate", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 1, "group": "Multicopter Position Control", "longDesc": "Disable to use the fixed parameter MPC_THR_HOVER instead of the hover thrust estimate in the position controller.\nThis parameter does not influence Stabilized mode throttle curve (see MPC_THR_CURVE).", "name": "MPC_USE_HTE", "shortDesc": "Use hover thrust estimate for altitude control", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Multicopter Position Control", "increment": 0.5, "longDesc": "A value of 0 disables the filter.", "max": 50.0, "min": 0.0, "name": "MPC_VELD_LP", "shortDesc": "Velocity derivative low pass cutoff frequency", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Multicopter Position Control", "increment": 0.5, "longDesc": "A value of 0 disables the filter.", "max": 50.0, "min": 0.0, "name": "MPC_VEL_LP", "shortDesc": "Velocity low pass cutoff frequency", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "Must be smaller than MPC_XY_VEL_MAX.\nThe maximum sideways and backward speed can be set differently\nusing MPC_VEL_MAN_SIDE and MPC_VEL_MAN_BACK, respectively.", "max": 20.0, "min": 3.0, "name": "MPC_VEL_MANUAL", "shortDesc": "Maximum horizontal velocity setpoint in Position mode", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "If set to a negative value or larger than\nMPC_VEL_MANUAL then MPC_VEL_MANUAL is used.", "max": 20.0, "min": -1.0, "name": "MPC_VEL_MAN_BACK", "shortDesc": "Maximum backward velocity in Position mode", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "If set to a negative value or larger than\nMPC_VEL_MANUAL then MPC_VEL_MANUAL is used.", "max": 20.0, "min": -1.0, "name": "MPC_VEL_MAN_SIDE", "shortDesc": "Maximum sideways velocity in Position mode", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Multicopter Position Control", "increment": 0.5, "longDesc": "A value of 0 disables the filter.", "max": 50.0, "min": 0.0, "name": "MPC_VEL_NF_BW", "shortDesc": "Velocity notch filter bandwidth", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Multicopter Position Control", "increment": 0.5, "longDesc": "The center frequency for the 2nd order notch filter on the velocity.\nA value of 0 disables the filter.", "max": 50.0, "min": 0.0, "name": "MPC_VEL_NF_FRQ", "shortDesc": "Velocity notch filter frequency", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 0, "default": 5.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "e.g. in Missions, RTL, Goto if the waypoint does not specify differently", "max": 20.0, "min": 3.0, "name": "MPC_XY_CRUISE", "shortDesc": "Default horizontal velocity in autonomous modes", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "The integration speed of the trajectory setpoint is linearly\nreduced with the horizontal position tracking error. When the\nerror is above this parameter, the integration of the\ntrajectory is stopped to wait for the drone.\nThis value can be adjusted depending on the tracking\ncapabilities of the vehicle.", "max": 10.0, "min": 0.1, "name": "MPC_XY_ERR_MAX", "shortDesc": "Maximum horizontal error allowed by the trajectory generator", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.95, "group": "Multicopter Position Control", "increment": 0.1, "longDesc": "Defined as corrective velocity in m/s per m position error", "max": 2.0, "min": 0.0, "name": "MPC_XY_P", "shortDesc": "Proportional gain for horizontal position error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.5, "group": "Multicopter Position Control", "increment": 0.1, "max": 1.0, "min": 0.1, "name": "MPC_XY_TRAJ_P", "shortDesc": "Proportional gain for horizontal trajectory position error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": -10.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "If set to a value greater than zero, other parameters are automatically set (such as\nMPC_XY_VEL_MAX or MPC_VEL_MANUAL).\nIf set to a negative value, the existing individual parameters are used.", "max": 20.0, "min": -20.0, "name": "MPC_XY_VEL_ALL", "shortDesc": "Overall Horizontal Velocity Limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Multicopter Position Control", "increment": 0.02, "longDesc": "Defined as corrective acceleration in m/s^2 per m/s^2 velocity derivative", "max": 2.0, "min": 0.1, "name": "MPC_XY_VEL_D_ACC", "shortDesc": "Differential gain for horizontal velocity error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "Multicopter Position Control", "increment": 0.02, "longDesc": "Defined as correction acceleration in m/s^2 per m velocity integral\nAllows to eliminate steady state errors in disturbances like wind.", "max": 60.0, "min": 0.0, "name": "MPC_XY_VEL_I_ACC", "shortDesc": "Integral gain for horizontal velocity error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 12.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "Absolute maximum for all velocity controlled modes.\nAny higher value is truncated.", "max": 20.0, "min": 0.0, "name": "MPC_XY_VEL_MAX", "shortDesc": "Maximum horizontal velocity", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.8, "group": "Multicopter Position Control", "increment": 0.1, "longDesc": "Defined as corrective acceleration in m/s^2 per m/s velocity error", "max": 5.0, "min": 1.2, "name": "MPC_XY_VEL_P_ACC", "shortDesc": "Proportional gain for horizontal velocity error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Multicopter Position Control", "increment": 0.1, "longDesc": "Defined as corrective velocity in m/s per m position error", "max": 1.5, "min": 0.1, "name": "MPC_Z_P", "shortDesc": "Proportional gain for vertical position error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": -3.0, "group": "Multicopter Position Control", "increment": 0.5, "longDesc": "If set to a value greater than zero, other parameters are automatically set (such as\nMPC_Z_VEL_MAX_UP or MPC_LAND_SPEED).\nIf set to a negative value, the existing individual parameters are used.", "max": 8.0, "min": -3.0, "name": "MPC_Z_VEL_ALL", "shortDesc": "Overall Vertical Velocity Limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Multicopter Position Control", "increment": 0.02, "longDesc": "Defined as corrective acceleration in m/s^2 per m/s^2 velocity derivative", "max": 2.0, "min": 0.0, "name": "MPC_Z_VEL_D_ACC", "shortDesc": "Differential gain for vertical velocity error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "Multicopter Position Control", "increment": 0.1, "longDesc": "Defined as corrective acceleration in m/s^2 per m velocity integral", "max": 3.0, "min": 0.2, "name": "MPC_Z_VEL_I_ACC", "shortDesc": "Integral gain for vertical velocity error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.5, "group": "Multicopter Position Control", "increment": 0.1, "longDesc": "Absolute maximum for all climb rate controlled modes.\nIn manually piloted modes full stick deflection commands this velocity.\nFor default autonomous velocity see MPC_Z_V_AUTO_UP", "max": 4.0, "min": 0.5, "name": "MPC_Z_VEL_MAX_DN", "shortDesc": "Maximum descent velocity", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "Multicopter Position Control", "increment": 0.1, "longDesc": "Absolute maximum for all climb rate controlled modes.\nIn manually piloted modes full stick deflection commands this velocity.\nFor default autonomous velocity see MPC_Z_V_AUTO_UP", "max": 8.0, "min": 0.5, "name": "MPC_Z_VEL_MAX_UP", "shortDesc": "Maximum ascent velocity", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 4.0, "group": "Multicopter Position Control", "increment": 0.1, "longDesc": "Defined as corrective acceleration in m/s^2 per m/s velocity error", "max": 15.0, "min": 2.0, "name": "MPC_Z_VEL_P_ACC", "shortDesc": "Proportional gain for vertical velocity error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.5, "group": "Multicopter Position Control", "increment": 0.5, "longDesc": "For manual modes and offboard, see MPC_Z_VEL_MAX_DN", "max": 4.0, "min": 0.5, "name": "MPC_Z_V_AUTO_DN", "shortDesc": "Descent velocity in autonomous modes", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "Multicopter Position Control", "increment": 0.5, "longDesc": "For manually controlled modes and offboard see MPC_Z_VEL_MAX_UP", "max": 8.0, "min": 0.5, "name": "MPC_Z_V_AUTO_UP", "shortDesc": "Ascent velocity in autonomous modes", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": -0.4, "group": "Multicopter Position Control", "increment": 0.05, "longDesc": "Changes the overall responsiveness of the vehicle.\nThe higher the value, the faster the vehicle will react.\nIf set to a value greater than zero, other parameters are automatically set (such as\nthe acceleration or jerk limits).\nIf set to a negative value, the existing individual parameters are used.", "max": 1.0, "min": -1.0, "name": "SYS_VEHICLE_RESP", "shortDesc": "Responsiveness", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Multicopter Position Control", "name": "WV_EN", "shortDesc": "Enable weathervane", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1.0, "group": "Multicopter Position Control", "max": 5.0, "min": 0.0, "name": "WV_ROLL_MIN", "shortDesc": "Minimum roll angle setpoint for weathervane controller to demand a yaw-rate", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 90.0, "group": "Multicopter Position Control", "max": 120.0, "min": 0.0, "name": "WV_YRATE_MAX", "shortDesc": "Maximum yawrate the weathervane controller is allowed to demand", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.0, "group": "Multicopter Position Slow Mode", "increment": 0.1, "longDesc": "This value is used in slow mode if\nno aux channel is mapped and\nno limit is commanded through MAVLink.", "min": 0.1, "name": "MC_SLOW_DEF_HVEL", "shortDesc": "Default horizontal velocity limit", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Multicopter Position Slow Mode", "increment": 0.1, "longDesc": "This value is used in slow mode if\nno aux channel is mapped and\nno limit is commanded through MAVLink.", "min": 0.1, "name": "MC_SLOW_DEF_VVEL", "shortDesc": "Default vertical velocity limit", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 0, "default": 45.0, "group": "Multicopter Position Slow Mode", "increment": 0.1, "longDesc": "This value is used in slow mode if\nno aux channel is mapped and\nno limit is commanded through MAVLink.", "min": 1.0, "name": "MC_SLOW_DEF_YAWR", "shortDesc": "Default yaw rate limit", "type": "Float", "units": "deg/s"}, {"category": "Standard", "default": 0, "group": "Multicopter Position Slow Mode", "name": "MC_SLOW_MAP_HVEL", "shortDesc": "Manual input mapped to scale horizontal velocity in position slow mode", "type": "Int32", "values": [{"description": "No rescaling", "value": 0}, {"description": "AUX1", "value": 1}, {"description": "AUX2", "value": 2}, {"description": "AUX3", "value": 3}, {"description": "AUX4", "value": 4}, {"description": "AUX5", "value": 5}, {"description": "AUX6", "value": 6}]}, {"category": "Standard", "default": 0, "group": "Multicopter Position Slow Mode", "name": "MC_SLOW_MAP_PTCH", "shortDesc": "RC_MAP_AUX{N} to allow for gimbal pitch rate control in position slow mode", "type": "Int32", "values": [{"description": "No pitch rate input", "value": 0}, {"description": "AUX1", "value": 1}, {"description": "AUX2", "value": 2}, {"description": "AUX3", "value": 3}, {"description": "AUX4", "value": 4}, {"description": "AUX5", "value": 5}, {"description": "AUX6", "value": 6}]}, {"category": "Standard", "default": 0, "group": "Multicopter Position Slow Mode", "name": "MC_SLOW_MAP_VVEL", "shortDesc": "Manual input mapped to scale vertical velocity in position slow mode", "type": "Int32", "values": [{"description": "No rescaling", "value": 0}, {"description": "AUX1", "value": 1}, {"description": "AUX2", "value": 2}, {"description": "AUX3", "value": 3}, {"description": "AUX4", "value": 4}, {"description": "AUX5", "value": 5}, {"description": "AUX6", "value": 6}]}, {"category": "Standard", "default": 0, "group": "Multicopter Position Slow Mode", "name": "MC_SLOW_MAP_YAWR", "shortDesc": "Manual input mapped to scale yaw rate in position slow mode", "type": "Int32", "values": [{"description": "No rescaling", "value": 0}, {"description": "AUX1", "value": 1}, {"description": "AUX2", "value": 2}, {"description": "AUX3", "value": 3}, {"description": "AUX4", "value": 4}, {"description": "AUX5", "value": 5}, {"description": "AUX6", "value": 6}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Multicopter Position Slow Mode", "increment": 0.1, "longDesc": "The lowest input maps and is clamped to this velocity.", "min": 0.1, "name": "MC_SLOW_MIN_HVEL", "shortDesc": "Horizontal velocity lower limit", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Multicopter Position Slow Mode", "increment": 0.1, "longDesc": "The lowest input maps and is clamped to this velocity.", "min": 0.1, "name": "MC_SLOW_MIN_VVEL", "shortDesc": "Vertical velocity lower limit", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 0, "default": 3.0, "group": "Multicopter Position Slow Mode", "increment": 0.1, "longDesc": "The lowest input maps and is clamped to this rate.", "min": 1.0, "name": "MC_SLOW_MIN_YAWR", "shortDesc": "Yaw rate lower limit", "type": "Float", "units": "deg/s"}, {"category": "Standard", "default": 0, "group": "Multicopter Rate Control", "longDesc": "This compensates for voltage drop of the battery over time by attempting to\nnormalize performance across the operating range of the battery. The copter\nshould constantly behave as if it was fully charged with reduced max acceleration\nat lower battery percentages. i.e. if hover is at 0.5 throttle at 100% battery,\nit will still be 0.5 at 60% battery.", "name": "MC_BAT_SCALE_EN", "shortDesc": "Battery power level scaler", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 4, "default": 0.003, "group": "Multicopter Rate Control", "increment": 0.0005, "longDesc": "Pitch rate differential gain. Small values help reduce fast oscillations. If value is too big oscillations will appear again.", "min": 0.0, "name": "MC_PITCHRATE_D", "shortDesc": "Pitch rate D gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.0, "group": "Multicopter Rate Control", "longDesc": "Improves tracking performance.", "min": 0.0, "name": "MC_PITCHRATE_FF", "shortDesc": "Pitch rate feedforward", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.2, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Pitch rate integral gain. Can be set to compensate static thrust difference or gravity center offset.", "min": 0.0, "name": "MC_PITCHRATE_I", "shortDesc": "Pitch rate I gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 1.0, "group": "Multicopter Rate Control", "increment": 0.0005, "longDesc": "Global gain of the controller.\nThis gain scales the P, I and D terms of the controller:\noutput = MC_PITCHRATE_K * (MC_PITCHRATE_P * error\n+ MC_PITCHRATE_I * error_integral\n+ MC_PITCHRATE_D * error_derivative)\nSet MC_PITCHRATE_P=1 to implement a PID in the ideal form.\nSet MC_PITCHRATE_K=1 to implement a PID in the parallel form.", "max": 5.0, "min": 0.01, "name": "MC_PITCHRATE_K", "shortDesc": "Pitch rate controller gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.15, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Pitch rate proportional gain, i.e. control output for angular speed error 1 rad/s.", "max": 0.6, "min": 0.01, "name": "MC_PITCHRATE_P", "shortDesc": "Pitch rate P gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Pitch rate integrator limit. Can be set to increase the amount of integrator available to counteract disturbances or reduced to improve settling time after large pitch moment trim changes.", "min": 0.0, "name": "MC_PR_INT_LIM", "shortDesc": "Pitch rate integrator limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.003, "group": "Multicopter Rate Control", "increment": 0.0005, "longDesc": "Roll rate differential gain. Small values help reduce fast oscillations. If value is too big oscillations will appear again.", "max": 0.01, "min": 0.0, "name": "MC_ROLLRATE_D", "shortDesc": "Roll rate D gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.0, "group": "Multicopter Rate Control", "longDesc": "Improves tracking performance.", "min": 0.0, "name": "MC_ROLLRATE_FF", "shortDesc": "Roll rate feedforward", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.2, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Roll rate integral gain. Can be set to compensate static thrust difference or gravity center offset.", "min": 0.0, "name": "MC_ROLLRATE_I", "shortDesc": "Roll rate I gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 1.0, "group": "Multicopter Rate Control", "increment": 0.0005, "longDesc": "Global gain of the controller.\nThis gain scales the P, I and D terms of the controller:\noutput = MC_ROLLRATE_K * (MC_ROLLRATE_P * error\n+ MC_ROLLRATE_I * error_integral\n+ MC_ROLLRATE_D * error_derivative)\nSet MC_ROLLRATE_P=1 to implement a PID in the ideal form.\nSet MC_ROLLRATE_K=1 to implement a PID in the parallel form.", "max": 5.0, "min": 0.01, "name": "MC_ROLLRATE_K", "shortDesc": "Roll rate controller gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.15, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Roll rate proportional gain, i.e. control output for angular speed error 1 rad/s.", "max": 0.5, "min": 0.01, "name": "MC_ROLLRATE_P", "shortDesc": "Roll rate P gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Roll rate integrator limit. Can be set to increase the amount of integrator available to counteract disturbances or reduced to improve settling time after large roll moment trim changes.", "min": 0.0, "name": "MC_RR_INT_LIM", "shortDesc": "Roll rate integrator limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.0, "group": "Multicopter Rate Control", "increment": 0.0005, "longDesc": "Yaw rate differential gain. Small values help reduce fast oscillations. If value is too big oscillations will appear again.", "min": 0.0, "name": "MC_YAWRATE_D", "shortDesc": "Yaw rate D gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.0, "group": "Multicopter Rate Control", "longDesc": "Improves tracking performance.", "min": 0.0, "name": "MC_YAWRATE_FF", "shortDesc": "Yaw rate feedforward", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Yaw rate integral gain. Can be set to compensate static thrust difference or gravity center offset.", "min": 0.0, "name": "MC_YAWRATE_I", "shortDesc": "Yaw rate I gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 1.0, "group": "Multicopter Rate Control", "increment": 0.0005, "longDesc": "Global gain of the controller.\nThis gain scales the P, I and D terms of the controller:\noutput = MC_YAWRATE_K * (MC_YAWRATE_P * error\n+ MC_YAWRATE_I * error_integral\n+ MC_YAWRATE_D * error_derivative)\nSet MC_YAWRATE_P=1 to implement a PID in the ideal form.\nSet MC_YAWRATE_K=1 to implement a PID in the parallel form.", "max": 5.0, "min": 0.01, "name": "MC_YAWRATE_K", "shortDesc": "Yaw rate controller gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.2, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Yaw rate proportional gain, i.e. control output for angular speed error 1 rad/s.", "max": 0.6, "min": 0.0, "name": "MC_YAWRATE_P", "shortDesc": "Yaw rate P gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 2.0, "group": "Multicopter Rate Control", "longDesc": "Reduces vibrations by lowering high frequency torque caused by rotor acceleration.\n0 disables the filter", "max": 10.0, "min": 0.0, "name": "MC_YAW_TQ_CUTOFF", "shortDesc": "Low pass filter cutoff frequency for yaw torque setpoint", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Yaw rate integrator limit. Can be set to increase the amount of integrator available to counteract disturbances or reduced to improve settling time after large yaw moment trim changes.", "min": 0.0, "name": "MC_YR_INT_LIM", "shortDesc": "Yaw rate integrator limit", "type": "Float"}, {"category": "Standard", "default": 0, "group": "OSD", "longDesc": "Controls the vertical position of the crosshair display.\nResolution is limited by OSD to 15 discrete values. Negative\nvalues will display the crosshairs below the horizon", "max": 8, "min": -8, "name": "OSD_CH_HEIGHT", "shortDesc": "OSD Crosshairs Height", "type": "Int32"}, {"category": "Standard", "default": 500, "group": "OSD", "longDesc": "Amount of time in milliseconds to dwell at the beginning of the display, when scrolling.", "max": 10000, "min": 100, "name": "OSD_DWELL_TIME", "shortDesc": "OSD Dwell Time (ms)", "type": "Int32"}, {"category": "Standard", "default": 3, "group": "OSD", "longDesc": "Minimum security of log level to display on the OSD.", "name": "OSD_LOG_LEVEL", "shortDesc": "OSD Warning Level", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "OSD", "longDesc": "Forward RC stick input to VTX when disarmed", "max": 1, "min": 0, "name": "OSD_RC_STICK", "shortDesc": "OSD RC Stick commands", "type": "Int32"}, {"category": "Standard", "default": 125, "group": "OSD", "longDesc": "Scroll rate in milliseconds for OSD messages longer than available character width.\nThis is lower-bounded by the nominal loop rate of this module.", "max": 1000, "min": 100, "name": "OSD_SCROLL_RATE", "shortDesc": "OSD Scroll Rate (ms)", "type": "Int32"}, {"bitmask": [{"description": "CRAFT_NAME", "index": 0}, {"description": "DISARMED", "index": 1}, {"description": "GPS_LAT", "index": 2}, {"description": "GPS_LON", "index": 3}, {"description": "GPS_SATS", "index": 4}, {"description": "GPS_SPEED", "index": 5}, {"description": "HOME_DIST", "index": 6}, {"description": "HOME_DIR", "index": 7}, {"description": "MAIN_BATT_VOLTAGE", "index": 8}, {"description": "CURRENT_DRAW", "index": 9}, {"description": "MAH_DRAWN", "index": 10}, {"description": "RSSI_VALUE", "index": 11}, {"description": "ALTITUDE", "index": 12}, {"description": "NUMERICAL_VARIO", "index": 13}, {"description": "(unused) FLYMODE", "index": 14}, {"description": "(unused) ESC_TMP", "index": 15}, {"description": "(unused) PITCH_ANGLE", "index": 16}, {"description": "(unused) ROLL_ANGLE", "index": 17}, {"description": "CROSSHAIRS", "index": 18}, {"description": "AVG_CELL_VOLTAGE", "index": 19}, {"description": "(unused) HORIZON_SIDEBARS", "index": 20}, {"description": "POWER", "index": 21}], "category": "Standard", "default": 16383, "group": "OSD", "longDesc": "Configure / toggle support display options.", "max": 4194303, "min": 0, "name": "OSD_SYMBOLS", "shortDesc": "OSD Symbol Selection", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "PWM Outputs", "increment": 0.1, "longDesc": "Parameter used to model the nonlinear relationship between\nmotor control signal (e.g. PWM) and static thrust.\nThe model is: rel_thrust = factor * rel_signal^2 + (1-factor) * rel_signal,\nwhere rel_thrust is the normalized thrust between 0 and 1, and\nrel_signal is the relative motor control signal between 0 and 1.", "max": 1.0, "min": 0.0, "name": "THR_MDL_FAC", "shortDesc": "Thrust to motor control signal model parameter", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "Payload Deliverer", "longDesc": "Maximum time Gripper will wait while the successful griper actuation isn't recognised.\nIf the gripper has no feedback sensor, it will simply wait for\nthis time before considering gripper actuation successful and publish a\n'VehicleCommandAck' signaling successful gripper action", "min": 0.0, "name": "PD_GRIPPER_TO", "shortDesc": "Timeout for successful gripper actuation acknowledgement", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Payload Deliverer", "max": 0, "min": -1, "name": "PD_GRIPPER_TYPE", "shortDesc": "Type of Gripper (Servo, etc.)", "type": "Int32", "values": [{"description": "Undefined", "value": -1}, {"description": "Servo", "value": 0}]}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Precision Land", "increment": 0.5, "longDesc": "Time after which the landing target is considered lost without any new measurements.", "max": 50.0, "min": 0.0, "name": "PLD_BTOUT", "shortDesc": "Landing Target Timeout", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Precision Land", "increment": 0.1, "longDesc": "Allow final approach (without horizontal positioning) if losing landing target closer than this to the ground.", "max": 10.0, "min": 0.0, "name": "PLD_FAPPR_ALT", "shortDesc": "Final approach altitude", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Precision Land", "increment": 0.1, "longDesc": "Start descending if closer above landing target than this.", "max": 10.0, "min": 0.0, "name": "PLD_HACC_RAD", "shortDesc": "Horizontal acceptance radius", "type": "Float", "units": "m"}, {"category": "Standard", "default": 3, "group": "Precision Land", "longDesc": "Maximum number of times to search for the landing target if it is lost during the precision landing.", "max": 100, "min": 0, "name": "PLD_MAX_SRCH", "shortDesc": "Maximum number of search attempts", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Precision Land", "increment": 0.1, "longDesc": "Altitude above home to which to climb when searching for the landing target.", "max": 100.0, "min": 0.0, "name": "PLD_SRCH_ALT", "shortDesc": "Search altitude", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Precision Land", "increment": 0.1, "longDesc": "Time allowed to search for the landing target before falling back to normal landing.", "max": 100.0, "min": 0.0, "name": "PLD_SRCH_TOUT", "shortDesc": "Search timeout", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Pure Pursuit", "increment": 0.01, "longDesc": "Lower value -> More aggressive controller (beware overshoot/oscillations)", "max": 100.0, "min": 0.1, "name": "PP_LOOKAHD_GAIN", "shortDesc": "Tuning parameter for the pure pursuit controller", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 10.0, "group": "Pure Pursuit", "increment": 0.01, "max": 100.0, "min": 0.1, "name": "PP_LOOKAHD_MAX", "shortDesc": "Maximum lookahead distance for the pure pursuit controller", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Pure Pursuit", "increment": 0.01, "max": 100.0, "min": 0.1, "name": "PP_LOOKAHD_MIN", "shortDesc": "Minimum lookahead distance for the pure pursuit controller", "type": "Float", "units": "m"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC10_MAX", "shortDesc": "RC channel 10 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC10_MIN", "shortDesc": "RC channel 10 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC10_REV", "shortDesc": "RC channel 10 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC10_TRIM", "shortDesc": "RC channel 10 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC11_MAX", "shortDesc": "RC channel 11 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC11_MIN", "shortDesc": "RC channel 11 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC11_REV", "shortDesc": "RC channel 11 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC11_TRIM", "shortDesc": "RC channel 11 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC12_MAX", "shortDesc": "RC channel 12 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC12_MIN", "shortDesc": "RC channel 12 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC12_REV", "shortDesc": "RC channel 12 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC12_TRIM", "shortDesc": "RC channel 12 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC13_MAX", "shortDesc": "RC channel 13 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC13_MIN", "shortDesc": "RC channel 13 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC13_REV", "shortDesc": "RC channel 13 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC13_TRIM", "shortDesc": "RC channel 13 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC14_MAX", "shortDesc": "RC channel 14 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC14_MIN", "shortDesc": "RC channel 14 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC14_REV", "shortDesc": "RC channel 14 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC14_TRIM", "shortDesc": "RC channel 14 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC15_MAX", "shortDesc": "RC channel 15 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC15_MIN", "shortDesc": "RC channel 15 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC15_REV", "shortDesc": "RC channel 15 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC15_TRIM", "shortDesc": "RC channel 15 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC16_MAX", "shortDesc": "RC channel 16 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC16_MIN", "shortDesc": "RC channel 16 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC16_REV", "shortDesc": "RC channel 16 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC16_TRIM", "shortDesc": "RC channel 16 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC17_MAX", "shortDesc": "RC channel 17 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC17_MIN", "shortDesc": "RC channel 17 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC17_REV", "shortDesc": "RC channel 17 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC17_TRIM", "shortDesc": "RC channel 17 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC18_MAX", "shortDesc": "RC channel 18 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC18_MIN", "shortDesc": "RC channel 18 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC18_REV", "shortDesc": "RC channel 18 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC18_TRIM", "shortDesc": "RC channel 18 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for RC channel 1", "max": 2200.0, "min": 1500.0, "name": "RC1_MAX", "shortDesc": "RC channel 1 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for RC channel 1", "max": 1500.0, "min": 800.0, "name": "RC1_MIN", "shortDesc": "RC channel 1 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC1_REV", "shortDesc": "RC channel 1 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC1_TRIM", "shortDesc": "RC channel 1 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC2_MAX", "shortDesc": "RC channel 2 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC2_MIN", "shortDesc": "RC channel 2 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC2_REV", "shortDesc": "RC channel 2 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC2_TRIM", "shortDesc": "RC channel 2 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC3_MAX", "shortDesc": "RC channel 3 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC3_MIN", "shortDesc": "RC channel 3 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC3_REV", "shortDesc": "RC channel 3 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC3_TRIM", "shortDesc": "RC channel 3 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC4_MAX", "shortDesc": "RC channel 4 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC4_MIN", "shortDesc": "RC channel 4 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC4_REV", "shortDesc": "RC channel 4 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC4_TRIM", "shortDesc": "RC channel 4 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC5_MAX", "shortDesc": "RC channel 5 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC5_MIN", "shortDesc": "RC channel 5 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC5_REV", "shortDesc": "RC channel 5 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC5_TRIM", "shortDesc": "RC channel 5 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC6_MAX", "shortDesc": "RC channel 6 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC6_MIN", "shortDesc": "RC channel 6 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC6_REV", "shortDesc": "RC channel 6 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC6_TRIM", "shortDesc": "RC channel 6 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC7_MAX", "shortDesc": "RC channel 7 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC7_MIN", "shortDesc": "RC channel 7 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC7_REV", "shortDesc": "RC channel 7 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC7_TRIM", "shortDesc": "RC channel 7 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC8_MAX", "shortDesc": "RC channel 8 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC8_MIN", "shortDesc": "RC channel 8 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC8_REV", "shortDesc": "RC channel 8 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC8_TRIM", "shortDesc": "RC channel 8 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC9_MAX", "shortDesc": "RC channel 9 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC9_MIN", "shortDesc": "RC channel 9 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC9_REV", "shortDesc": "RC channel 9 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC9_TRIM", "shortDesc": "RC channel 9 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "This parameter is used by Ground Station software to save the number\nof channels which were used during RC calibration. It is only meant\nfor ground station use.", "max": 18, "min": 0, "name": "RC_CHAN_CNT", "shortDesc": "RC channel count", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "Use RC_MAP_FAILSAFE to specify which channel is used to indicate RC loss via this threshold.\nBy default this is the throttle channel.\nSet to a PWM value slightly above the PWM value for the channel (e.g. throttle) in a failsafe event,\nbut below the minimum PWM value for the channel during normal operation.\nNote: The default value of 0 disables the feature (it is below the expected range).", "max": 2200, "min": 0, "name": "RC_FAILS_THR", "shortDesc": "Failsafe channel PWM threshold", "type": "Int32", "units": "us"}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "max": 18, "min": 0, "name": "RC_MAP_AUX1", "shortDesc": "AUX1 Passthrough RC channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "max": 18, "min": 0, "name": "RC_MAP_AUX2", "shortDesc": "AUX2 Passthrough RC channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "max": 18, "min": 0, "name": "RC_MAP_AUX3", "shortDesc": "AUX3 Passthrough RC channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "max": 18, "min": 0, "name": "RC_MAP_AUX4", "shortDesc": "AUX4 Passthrough RC channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "max": 18, "min": 0, "name": "RC_MAP_AUX5", "shortDesc": "AUX5 Passthrough RC channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "max": 18, "min": 0, "name": "RC_MAP_AUX6", "shortDesc": "AUX6 Passthrough RC channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "max": 18, "min": 0, "name": "RC_MAP_ENG_MOT", "shortDesc": "RC channel to engage the main motor (for helicopters)", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "Configures which RC channel is used by the receiver to indicate the signal was lost\n(on receivers that use output a fixed signal value to report lost signal).\nIf set to 0, the channel mapped to throttle is used.\nUse RC_FAILS_THR to set the threshold indicating lost signal. By default it's below\nthe expected range and hence disabled.", "max": 18, "min": 0, "name": "RC_MAP_FAILSAFE", "shortDesc": "Failsafe channel mapping", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "Can be used for parameter tuning with the RC. This one is further referenced as the 1st parameter channel.\nSet to 0 to deactivate *", "max": 18, "min": 0, "name": "RC_MAP_PARAM1", "shortDesc": "PARAM1 tuning channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "Can be used for parameter tuning with the RC. This one is further referenced as the 2nd parameter channel.\nSet to 0 to deactivate *", "max": 18, "min": 0, "name": "RC_MAP_PARAM2", "shortDesc": "PARAM2 tuning channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "Can be used for parameter tuning with the RC. This one is further referenced as the 3th parameter channel.\nSet to 0 to deactivate *", "max": 18, "min": 0, "name": "RC_MAP_PARAM3", "shortDesc": "PARAM3 tuning channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "The channel index (starting from 1 for channel 1) indicates\nwhich channel should be used for reading pitch inputs from.\nA value of zero indicates the switch is not assigned.", "max": 18, "min": 0, "name": "RC_MAP_PITCH", "shortDesc": "Pitch control channel mapping", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "The channel index (starting from 1 for channel 1) indicates\nwhich channel should be used for reading roll inputs from.\nA value of zero indicates the switch is not assigned.", "max": 18, "min": 0, "name": "RC_MAP_ROLL", "shortDesc": "Roll control channel mapping", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "The channel index (starting from 1 for channel 1) indicates\nwhich channel should be used for reading throttle inputs from.\nA value of zero indicates the switch is not assigned.", "max": 18, "min": 0, "name": "RC_MAP_THROTTLE", "shortDesc": "Throttle control channel mapping", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "The channel index (starting from 1 for channel 1) indicates\nwhich channel should be used for reading yaw inputs from.\nA value of zero indicates the switch is not assigned.", "max": 18, "min": 0, "name": "RC_MAP_YAW", "shortDesc": "Yaw control channel mapping", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "0: do not read RSSI from input channel\n1-18: read RSSI from specified input channel\nSpecify the range for RSSI input with RC_RSSI_PWM_MIN and RC_RSSI_PWM_MAX parameters.", "max": 18, "min": 0, "name": "RC_RSSI_PWM_CHAN", "shortDesc": "PWM input channel that provides RSSI", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 2000, "group": "Radio Calibration", "longDesc": "Only used if RC_RSSI_PWM_CHAN > 0", "max": 2000, "min": 0, "name": "RC_RSSI_PWM_MAX", "shortDesc": "Max input value for RSSI reading", "type": "Int32"}, {"category": "Standard", "default": 1000, "group": "Radio Calibration", "longDesc": "Only used if RC_RSSI_PWM_CHAN > 0", "max": 2000, "min": 0, "name": "RC_RSSI_PWM_MIN", "shortDesc": "Min input value for RSSI reading", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Radio Calibration", "increment": 0.01, "longDesc": "The trim value is the actuator control value the system needs\nfor straight and level flight.", "max": 0.5, "min": -0.5, "name": "TRIM_PITCH", "shortDesc": "Pitch trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Radio Calibration", "increment": 0.01, "longDesc": "The trim value is the actuator control value the system needs\nfor straight and level flight.", "max": 0.5, "min": -0.5, "name": "TRIM_ROLL", "shortDesc": "Roll trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Radio Calibration", "increment": 0.01, "longDesc": "The trim value is the actuator control value the system needs\nfor straight and level flight.", "max": 0.5, "min": -0.5, "name": "TRIM_YAW", "shortDesc": "Yaw trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.75, "group": "Radio Switches", "longDesc": "0-1 indicate where in the full channel range the threshold sits\n0 : min\n1 : max\nsign indicates polarity of comparison\npositive : true when channel>th\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channel The rover starts to cut the corner earlier.", "max": 100.0, "min": 1.0, "name": "RA_ACC_RAD_GAIN", "shortDesc": "Tuning parameter for corner cutting", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Ackermann", "increment": 0.01, "longDesc": "The controller scales the acceptance radius based on the angle between\nthe previous, current and next waypoint.\nHigher value -> smoother trajectory at the cost of how close the rover gets\nto the waypoint (Set to -1 to disable corner cutting).", "max": 100.0, "min": -1.0, "name": "RA_ACC_RAD_MAX", "shortDesc": "Maximum acceptance radius for the waypoints", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Rover Ackermann", "increment": 0.01, "max": 1.5708, "min": 0.0, "name": "RA_MAX_STR_ANG", "shortDesc": "Maximum steering angle", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Ackermann", "increment": 0.01, "longDesc": "Set to -1 to disable.", "max": 1000.0, "min": -1.0, "name": "RA_STR_RATE_LIM", "shortDesc": "Steering rate limit", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Rover Ackermann", "increment": 0.001, "longDesc": "Distance from the front to the rear axle.", "max": 100.0, "min": 0.0, "name": "RA_WHEEL_BASE", "shortDesc": "Wheel base", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Rover Attitude Control", "increment": 0.01, "max": 100.0, "min": 0.0, "name": "RO_YAW_P", "shortDesc": "Proportional gain for closed loop yaw controller", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.174533, "group": "Rover Differential", "increment": 0.01, "longDesc": "This threshold is used for the state machine to switch from driving to turning based on the\nerror between the desired and actual yaw. It is also used as the threshold whether the rover should come\nto a smooth stop at the next waypoint. This slow down effect is active if the angle between the\nline segments from prevWP-currWP and currWP-nextWP is smaller then 180 - RD_TRANS_DRV_TRN.", "max": 3.14159, "min": 0.001, "name": "RD_TRANS_DRV_TRN", "shortDesc": "Yaw error threshhold to switch from driving to spot turning", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0872665, "group": "Rover Differential", "increment": 0.01, "longDesc": "This threshold is used for the state machine to switch from turning to driving based on the\nerror between the desired and actual yaw.", "max": 3.14159, "min": 0.001, "name": "RD_TRANS_TRN_DRV", "shortDesc": "Yaw error threshhold to switch from spot turning to driving", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Rover Differential", "increment": 0.001, "longDesc": "Distance from the center of the right wheel to the center of the left wheel.", "max": 100.0, "min": 0.0, "name": "RD_WHEEL_TRACK", "shortDesc": "Wheel track", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Rover Differential", "increment": 0.01, "longDesc": "Assign value <1.0 to decrease stick response for yaw control.", "max": 1.0, "min": 0.1, "name": "RD_YAW_STK_GAIN", "shortDesc": "Yaw stick gain for Manual mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.17, "group": "Rover Mecanum", "increment": 0.01, "longDesc": "Threshold for the angle between the active cruise direction and the cruise direction given\nby the stick inputs.\nThis can be understood as a deadzone for the combined stick inputs for forward/backwards\nand lateral speed which defines a course direction.", "max": 3.14, "min": 0.0, "name": "RM_COURSE_CTL_TH", "shortDesc": "Threshold to update course control in manual position mode", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Rover Mecanum", "increment": 0.001, "longDesc": "Distance from the center of the right wheel to the center of the left wheel.", "max": 100.0, "min": 0.0, "name": "RM_WHEEL_TRACK", "shortDesc": "Wheel track", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Rover Mecanum", "increment": 0.01, "longDesc": "Assign value <1.0 to decrease stick response for yaw control.", "max": 1.0, "min": 0.1, "name": "RM_YAW_STK_GAIN", "shortDesc": "Yaw stick gain for Manual mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Rate Control", "increment": 0.01, "longDesc": "Used to cap how quickly the magnitude of yaw rate setpoints can increase.\nSet to -1 to disable.", "max": 10000.0, "min": -1.0, "name": "RO_YAW_ACCEL_LIM", "shortDesc": "Yaw acceleration limit", "type": "Float", "units": "deg/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Rate Control", "increment": 0.01, "longDesc": "Used to cap how quickly the magnitude of yaw rate setpoints can decrease.\nSet to -1 to disable.", "max": 10000.0, "min": -1.0, "name": "RO_YAW_DECEL_LIM", "shortDesc": "Yaw deceleration limit", "type": "Float", "units": "deg/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Rover Rate Control", "longDesc": "Exponential factor for tuning the input curve shape.\n0 Purely linear input curve\n1 Purely cubic input curve", "max": 1.0, "min": 0.0, "name": "RO_YAW_EXPO", "shortDesc": "Yaw rate expo factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Rover Rate Control", "increment": 0.01, "longDesc": "Multiplicative correction factor for the feedforward mapping of the yaw rate controller.\nIncrease this value (x > 1) if the measured yaw rate is lower than the setpoint, decrease (0 < x < 1) otherwise.\nNote: Tuning this is particularly useful for skid-steered rovers, or rovers with misaligned wheels/steering axes\nthat cause a lot of friction when turning.", "max": 10000.0, "min": 0.01, "name": "RO_YAW_RATE_CORR", "shortDesc": "Yaw rate correction factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Rover Rate Control", "increment": 0.01, "max": 100.0, "min": 0.0, "name": "RO_YAW_RATE_I", "shortDesc": "Integral gain for closed loop yaw rate controller", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Rover Rate Control", "increment": 0.01, "longDesc": "Used to cap yaw rate setpoints and map controller inputs to yaw rate setpoints\nin Acro, Stabilized and Position mode.", "max": 10000.0, "min": 0.0, "name": "RO_YAW_RATE_LIM", "shortDesc": "Yaw rate limit", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Rover Rate Control", "increment": 0.01, "max": 100.0, "min": 0.0, "name": "RO_YAW_RATE_P", "shortDesc": "Proportional gain for closed loop yaw rate controller", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.0, "group": "Rover Rate Control", "increment": 0.01, "longDesc": "The minimum threshold for the yaw rate measurement not to be interpreted as zero.", "max": 100.0, "min": 0.0, "name": "RO_YAW_RATE_TH", "shortDesc": "Yaw rate measurement threshold", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Rover Rate Control", "increment": 0.01, "longDesc": "Percentage of stick input range that will be interpreted as zero around the stick centered value.", "max": 1.0, "min": 0.0, "name": "RO_YAW_STICK_DZ", "shortDesc": "Yaw stick deadzone", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Rover Rate Control", "longDesc": "\"Superexponential\" factor for refining the input curve shape tuned using RO_YAW_EXPO.\n0 Pure Expo function\n0.7 reasonable shape enhancement for intuitive stick feel\n0.95 very strong bent input curve only near maxima have effect", "max": 0.95, "min": 0.0, "name": "RO_YAW_SUPEXPO", "shortDesc": "Yaw rate super expo factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Velocity Control", "increment": 0.01, "longDesc": "Set to -1 to disable.\nFor mecanum rovers this limit is used for longitudinal and lateral acceleration.", "max": 100.0, "min": -1.0, "name": "RO_ACCEL_LIM", "shortDesc": "Acceleration limit", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Velocity Control", "increment": 0.01, "longDesc": "Set to -1 to disable.\nNote that if it is disabled the rover will not slow down when approaching waypoints in auto modes.\nFor mecanum rovers this limit is used for longitudinal and lateral deceleration.", "max": 100.0, "min": -1.0, "name": "RO_DECEL_LIM", "shortDesc": "Deceleration limit", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Velocity Control", "increment": 0.01, "longDesc": "Set to -1 to disable.\nNote that if it is disabled the rover will not slow down when approaching waypoints in auto modes.\nFor mecanum rovers this limit is used for longitudinal and lateral jerk.", "max": 100.0, "min": -1.0, "name": "RO_JERK_LIM", "shortDesc": "Jerk limit", "type": "Float", "units": "m/s^3"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Rover Velocity Control", "increment": 0.01, "longDesc": "Used to linearly map speeds [m/s] to throttle values [-1. 1].", "max": 100.0, "min": 0.0, "name": "RO_MAX_THR_SPEED", "shortDesc": "Speed the rover drives at maximum throttle", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Rover Velocity Control", "increment": 0.001, "max": 100.0, "min": 0.0, "name": "RO_SPEED_I", "shortDesc": "Integral gain for ground speed controller", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Velocity Control", "increment": 0.01, "longDesc": "Used to cap speed setpoints and map controller inputs to speed setpoints in Position mode.", "max": 100.0, "min": -1.0, "name": "RO_SPEED_LIM", "shortDesc": "Speed limit", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Rover Velocity Control", "increment": 0.01, "max": 100.0, "min": 0.0, "name": "RO_SPEED_P", "shortDesc": "Proportional gain for ground speed controller", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Velocity Control", "increment": 0.01, "longDesc": "Reduced_speed = RO_MAX_THR_SPEED * (1 - normalized_course_error * RO_SPEED_RED)\nThe normalized course error is the angle between the current course and the bearing setpoint\ninterpolated from [0, 180] -> [0, 1].\nHigher value -> More speed reduction.\nNote: This is also used to calculate the speed at which the vehicle arrives at a waypoint in auto modes.\nSet to -1 to disable bearing error based speed reduction.", "max": 100.0, "min": -1.0, "name": "RO_SPEED_RED", "shortDesc": "Tuning parameter for the speed reduction based on the course error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Rover Velocity Control", "increment": 0.01, "longDesc": "Set to -1 to disable.\nThe minimum threshold for the speed measurement not to be interpreted as zero.", "max": 100.0, "min": 0.0, "name": "RO_SPEED_TH", "shortDesc": "Speed measurement threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Runway Takeoff", "increment": 0.01, "max": 1.0, "min": 0.0, "name": "RWTO_MAX_THR", "shortDesc": "Throttle during runway takeoff", "type": "Float", "units": "norm"}, {"category": "Standard", "default": 1, "group": "Runway Takeoff", "longDesc": "This is useful when map, GNSS, or yaw errors on ground are misaligned with what the operator intends for takeoff course.\nParticularly useful for skinny runways or if the wheel servo is a bit off trim.", "name": "RWTO_NUDGE", "shortDesc": "Enable use of yaw stick for nudging the wheel during runway ground roll", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Runway Takeoff", "increment": 0.5, "longDesc": "A taildragger with steerable wheel might need to pitch up\na little to keep its wheel on the ground before airspeed\nto takeoff is reached.", "max": 20.0, "min": -10.0, "name": "RWTO_PSP", "shortDesc": "Pitch setpoint during taxi / before takeoff rotation airspeed is reached", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "Runway Takeoff", "increment": 0.1, "max": 15.0, "min": 1.0, "name": "RWTO_RAMP_TIME", "shortDesc": "Throttle ramp up time for runway takeoff", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Runway Takeoff", "increment": 0.1, "longDesc": "The calibrated airspeed threshold during the takeoff ground roll when the plane should start rotating (pitching up).\nMust be less than the takeoff airspeed, will otherwise be capped at the takeoff airpeed (see FW_TKO_AIRSPD).\nIf set <= 0.0, defaults to 0.9 * takeoff airspeed (see FW_TKO_AIRSPD)", "min": -1.0, "name": "RWTO_ROT_AIRSPD", "shortDesc": "Takeoff rotation airspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Runway Takeoff", "increment": 0.1, "longDesc": "This is the time desired to linearly ramp in takeoff pitch constraints during the takeoff rotation", "min": 0.1, "name": "RWTO_ROT_TIME", "shortDesc": "Takeoff rotation time", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Runway Takeoff", "name": "RWTO_TKOFF", "shortDesc": "Runway takeoff with landing gear", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"bitmask": [{"description": "SD card logging", "index": 0}, {"description": "Mavlink logging", "index": 1}], "category": "Standard", "default": 3, "group": "SD Logging", "longDesc": "If no logging is set the logger will not be started. Set bits true to enable: 0: SD card logging 1: Mavlink logging", "max": 3, "min": 0, "name": "SDLOG_BACKEND", "rebootRequired": true, "shortDesc": "Logging Backend (integer bitmask)", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "SD Logging", "longDesc": "When enabled, logging will not start from boot if battery power is not detected (e.g. powered via USB on a test bench). This prevents extraneous flight logs from being created during bench testing. Note that this only applies to log-from-boot modes. This has no effect on arm-based modes.", "name": "SDLOG_BOOT_BAT", "shortDesc": "Battery-only Logging", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "SD Logging", "longDesc": "If there are more log directories than this value, the system will delete the oldest directories during startup. In addition, the system will delete old logs if there is not enough free space left. The minimum amount is 300 MB. If this is set to 0, old directories will only be removed if the free space falls below the minimum. Note: this does not apply to mission log files.", "max": 1000, "min": 0, "name": "SDLOG_DIRS_MAX", "rebootRequired": true, "shortDesc": "Maximum number of log directories to keep", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "SD Logging", "longDesc": "If enabled, a small additional \"mission\" log file will be written to the SD card. The log contains just those messages that are useful for tasks like generating flight statistics and geotagging. The different modes can be used to further reduce the logged data (and thus the log file size). For example, choose geotagging mode to only log data required for geotagging. Note that the normal/full log is still created, and contains all the data in the mission log (and more).", "name": "SDLOG_MISSION", "rebootRequired": true, "shortDesc": "Mission Log", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "All mission messages", "value": 1}, {"description": "Geotagging messages", "value": 2}]}, {"category": "Standard", "default": 0, "group": "SD Logging", "longDesc": "Determines when to start and stop logging. By default, logging is started when arming the system, and stopped when disarming. Note: The logging start/end points that can be configured here only apply to SD logging. The mavlink backend is started/stopped independently of these points.", "name": "SDLOG_MODE", "rebootRequired": true, "shortDesc": "Logging Mode", "type": "Int32", "values": [{"description": "when armed until disarm (default)", "value": 0}, {"description": "from boot until disarm", "value": 1}, {"description": "from boot until shutdown", "value": 2}, {"description": "while manual input AUX1 >30%", "value": 3}, {"description": "from 1st armed until shutdown", "value": 4}]}, {"bitmask": [{"description": "Default set (general log analysis)", "index": 0}, {"description": "Estimator replay (EKF2)", "index": 1}, {"description": "Thermal calibration", "index": 2}, {"description": "System identification", "index": 3}, {"description": "High rate", "index": 4}, {"description": "Debug", "index": 5}, {"description": "Sensor comparison", "index": 6}, {"description": "Computer Vision and Avoidance", "index": 7}, {"description": "Raw FIFO high-rate IMU (Gyro)", "index": 8}, {"description": "Raw FIFO high-rate IMU (Accel)", "index": 9}, {"description": "Mavlink tunnel message logging", "index": 10}, {"description": "High rate sensors", "index": 11}], "category": "Standard", "default": 1, "group": "SD Logging", "longDesc": "This integer bitmask controls the set and rates of logged topics. The default allows for general log analysis while keeping the log file size reasonably small. Enabling multiple sets leads to higher bandwidth requirements and larger log files. Set bits true to enable: 0 : Default set (used for general log analysis) 1 : Full rate estimator (EKF2) replay topics 2 : Topics for thermal calibration (high rate raw IMU and Baro sensor data) 3 : Topics for system identification (high rate actuator control and IMU data) 4 : Full rates for analysis of fast maneuvers (RC, attitude, rates and actuators) 5 : Debugging topics (debug_*.msg topics, for custom code) 6 : Topics for sensor comparison (low rate raw IMU, Baro and magnetometer data) 7 : Topics for computer vision and collision prevention 8 : Raw FIFO high-rate IMU (Gyro) 9 : Raw FIFO high-rate IMU (Accel) 10: Logging of mavlink tunnel message (useful for payload communication debugging)", "max": 4095, "min": 0, "name": "SDLOG_PROFILE", "rebootRequired": true, "shortDesc": "Logging topic profile (integer bitmask)", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "SD Logging", "longDesc": "the difference in hours and minutes from Coordinated Universal Time (UTC) for a your place and date. for example, In case of South Korea(UTC+09:00), UTC offset is 540 min (9*60) refer to https://en.wikipedia.org/wiki/List_of_UTC_time_offsets", "max": 1000, "min": -1000, "name": "SDLOG_UTC_OFFSET", "shortDesc": "UTC offset (unit: min)", "type": "Int32", "units": "min"}, {"category": "Standard", "default": 1, "group": "SD Logging", "longDesc": "If set to 1, add an ID to the log, which uniquely identifies the vehicle", "name": "SDLOG_UUID", "shortDesc": "Log UUID", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 60.0, "group": "SITL", "increment": 1.0, "max": 86400.0, "min": 1.0, "name": "SIM_BAT_DRAIN", "shortDesc": "Simulator Battery drain interval", "type": "Float", "units": "s"}, {"category": "Standard", "default": 1, "group": "SITL", "longDesc": "Enable or disable the internal battery simulation. This is useful\nwhen the battery is simulated externally and interfaced with PX4\nthrough MAVLink for example.", "name": "SIM_BAT_ENABLE", "shortDesc": "Simulator Battery enabled", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 50.0, "group": "SITL", "increment": 0.1, "longDesc": "Can be used to alter the battery level during SITL- or HITL-simulation on the fly.\nParticularly useful for testing different low-battery behaviour.", "max": 100.0, "min": 0.0, "name": "SIM_BAT_MIN_PCT", "shortDesc": "Simulator Battery minimal percentage", "type": "Float", "units": "%"}, {"category": "System", "decimalPlaces": 3, "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the accelerometer this calibration applies to.", "name": "CAL_ACC0_ID", "shortDesc": "Accelerometer 0 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": -1, "group": "Sensor Calibration", "name": "CAL_ACC0_PRIO", "shortDesc": "Accelerometer 0 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_ACC0_ROT", "shortDesc": "Accelerometer 0 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC0_XOFF", "shortDesc": "Accelerometer 0 X-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC0_XSCALE", "shortDesc": "Accelerometer 0 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC0_YOFF", "shortDesc": "Accelerometer 0 Y-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC0_YSCALE", "shortDesc": "Accelerometer 0 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC0_ZOFF", "shortDesc": "Accelerometer 0 Z-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC0_ZSCALE", "shortDesc": "Accelerometer 0 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the accelerometer this calibration applies to.", "name": "CAL_ACC1_ID", "shortDesc": "Accelerometer 1 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": -1, "group": "Sensor Calibration", "name": "CAL_ACC1_PRIO", "shortDesc": "Accelerometer 1 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_ACC1_ROT", "shortDesc": "Accelerometer 1 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC1_XOFF", "shortDesc": "Accelerometer 1 X-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC1_XSCALE", "shortDesc": "Accelerometer 1 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC1_YOFF", "shortDesc": "Accelerometer 1 Y-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC1_YSCALE", "shortDesc": "Accelerometer 1 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC1_ZOFF", "shortDesc": "Accelerometer 1 Z-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC1_ZSCALE", "shortDesc": "Accelerometer 1 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the accelerometer this calibration applies to.", "name": "CAL_ACC2_ID", "shortDesc": "Accelerometer 2 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": -1, "group": "Sensor Calibration", "name": "CAL_ACC2_PRIO", "shortDesc": "Accelerometer 2 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_ACC2_ROT", "shortDesc": "Accelerometer 2 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC2_XOFF", "shortDesc": "Accelerometer 2 X-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC2_XSCALE", "shortDesc": "Accelerometer 2 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC2_YOFF", "shortDesc": "Accelerometer 2 Y-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC2_YSCALE", "shortDesc": "Accelerometer 2 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC2_ZOFF", "shortDesc": "Accelerometer 2 Z-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC2_ZSCALE", "shortDesc": "Accelerometer 2 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the accelerometer this calibration applies to.", "name": "CAL_ACC3_ID", "shortDesc": "Accelerometer 3 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": -1, "group": "Sensor Calibration", "name": "CAL_ACC3_PRIO", "shortDesc": "Accelerometer 3 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_ACC3_ROT", "shortDesc": "Accelerometer 3 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC3_XOFF", "shortDesc": "Accelerometer 3 X-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC3_XSCALE", "shortDesc": "Accelerometer 3 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC3_YOFF", "shortDesc": "Accelerometer 3 Y-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC3_YSCALE", "shortDesc": "Accelerometer 3 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC3_ZOFF", "shortDesc": "Accelerometer 3 Z-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC3_ZSCALE", "shortDesc": "Accelerometer 3 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the barometer this calibration applies to.", "name": "CAL_BARO0_ID", "shortDesc": "Barometer 0 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_BARO0_OFF", "shortDesc": "Barometer 0 offset", "type": "Float", "volatile": true}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_BARO0_PRIO", "shortDesc": "Barometer 0 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the barometer this calibration applies to.", "name": "CAL_BARO1_ID", "shortDesc": "Barometer 1 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_BARO1_OFF", "shortDesc": "Barometer 1 offset", "type": "Float", "volatile": true}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_BARO1_PRIO", "shortDesc": "Barometer 1 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the barometer this calibration applies to.", "name": "CAL_BARO2_ID", "shortDesc": "Barometer 2 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_BARO2_OFF", "shortDesc": "Barometer 2 offset", "type": "Float", "volatile": true}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_BARO2_PRIO", "shortDesc": "Barometer 2 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the barometer this calibration applies to.", "name": "CAL_BARO3_ID", "shortDesc": "Barometer 3 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_BARO3_OFF", "shortDesc": "Barometer 3 offset", "type": "Float", "volatile": true}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_BARO3_PRIO", "shortDesc": "Barometer 3 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the gyroscope this calibration applies to.", "name": "CAL_GYRO0_ID", "shortDesc": "Gyroscope 0 calibration device ID", "type": "Int32"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_GYRO0_PRIO", "shortDesc": "Gyroscope 0 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_GYRO0_ROT", "shortDesc": "Gyroscope 0 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO0_XOFF", "shortDesc": "Gyroscope 0 X-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO0_YOFF", "shortDesc": "Gyroscope 0 Y-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO0_ZOFF", "shortDesc": "Gyroscope 0 Z-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the gyroscope this calibration applies to.", "name": "CAL_GYRO1_ID", "shortDesc": "Gyroscope 1 calibration device ID", "type": "Int32"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_GYRO1_PRIO", "shortDesc": "Gyroscope 1 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_GYRO1_ROT", "shortDesc": "Gyroscope 1 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO1_XOFF", "shortDesc": "Gyroscope 1 X-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO1_YOFF", "shortDesc": "Gyroscope 1 Y-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO1_ZOFF", "shortDesc": "Gyroscope 1 Z-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the gyroscope this calibration applies to.", "name": "CAL_GYRO2_ID", "shortDesc": "Gyroscope 2 calibration device ID", "type": "Int32"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_GYRO2_PRIO", "shortDesc": "Gyroscope 2 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_GYRO2_ROT", "shortDesc": "Gyroscope 2 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO2_XOFF", "shortDesc": "Gyroscope 2 X-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO2_YOFF", "shortDesc": "Gyroscope 2 Y-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO2_ZOFF", "shortDesc": "Gyroscope 2 Z-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the gyroscope this calibration applies to.", "name": "CAL_GYRO3_ID", "shortDesc": "Gyroscope 3 calibration device ID", "type": "Int32"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_GYRO3_PRIO", "shortDesc": "Gyroscope 3 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_GYRO3_ROT", "shortDesc": "Gyroscope 3 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO3_XOFF", "shortDesc": "Gyroscope 3 X-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO3_YOFF", "shortDesc": "Gyroscope 3 Y-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO3_ZOFF", "shortDesc": "Gyroscope 3 Z-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the magnetometer this calibration applies to.", "name": "CAL_MAG0_ID", "shortDesc": "Magnetometer 0 calibration device ID", "type": "Int32"}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG0_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG0_PITCH", "shortDesc": "Magnetometer 0 Custom Euler Pitch Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_MAG0_PRIO", "shortDesc": "Magnetometer 0 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG0_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG0_ROLL", "shortDesc": "Magnetometer 0 Custom Euler Roll Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.\nSet to \"Custom Euler Angle\" to define the rotation using CAL_MAG0_ROLL, CAL_MAG0_PITCH and CAL_MAG0_YAW.", "max": 100, "min": -1, "name": "CAL_MAG0_ROT", "shortDesc": "Magnetometer 0 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}, {"description": "Custom Euler Angle", "value": 100}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nX component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG0_XCOMP", "shortDesc": "Magnetometer 0 X Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG0_XODIAG", "shortDesc": "Magnetometer 0 X-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG0_XOFF", "shortDesc": "Magnetometer 0 X-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG0_XSCALE", "shortDesc": "Magnetometer 0 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG0_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG0_YAW", "shortDesc": "Magnetometer 0 Custom Euler Yaw Angle", "type": "Float", "units": "deg"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nY component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG0_YCOMP", "shortDesc": "Magnetometer 0 Y Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG0_YODIAG", "shortDesc": "Magnetometer 0 Y-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG0_YOFF", "shortDesc": "Magnetometer 0 Y-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG0_YSCALE", "shortDesc": "Magnetometer 0 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nZ component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG0_ZCOMP", "shortDesc": "Magnetometer 0 Z Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG0_ZODIAG", "shortDesc": "Magnetometer 0 Z-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG0_ZOFF", "shortDesc": "Magnetometer 0 Z-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG0_ZSCALE", "shortDesc": "Magnetometer 0 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the magnetometer this calibration applies to.", "name": "CAL_MAG1_ID", "shortDesc": "Magnetometer 1 calibration device ID", "type": "Int32"}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG1_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG1_PITCH", "shortDesc": "Magnetometer 1 Custom Euler Pitch Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_MAG1_PRIO", "shortDesc": "Magnetometer 1 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG1_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG1_ROLL", "shortDesc": "Magnetometer 1 Custom Euler Roll Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.\nSet to \"Custom Euler Angle\" to define the rotation using CAL_MAG1_ROLL, CAL_MAG1_PITCH and CAL_MAG1_YAW.", "max": 100, "min": -1, "name": "CAL_MAG1_ROT", "shortDesc": "Magnetometer 1 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}, {"description": "Custom Euler Angle", "value": 100}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nX component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG1_XCOMP", "shortDesc": "Magnetometer 1 X Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG1_XODIAG", "shortDesc": "Magnetometer 1 X-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG1_XOFF", "shortDesc": "Magnetometer 1 X-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG1_XSCALE", "shortDesc": "Magnetometer 1 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG1_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG1_YAW", "shortDesc": "Magnetometer 1 Custom Euler Yaw Angle", "type": "Float", "units": "deg"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nY component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG1_YCOMP", "shortDesc": "Magnetometer 1 Y Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG1_YODIAG", "shortDesc": "Magnetometer 1 Y-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG1_YOFF", "shortDesc": "Magnetometer 1 Y-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG1_YSCALE", "shortDesc": "Magnetometer 1 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nZ component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG1_ZCOMP", "shortDesc": "Magnetometer 1 Z Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG1_ZODIAG", "shortDesc": "Magnetometer 1 Z-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG1_ZOFF", "shortDesc": "Magnetometer 1 Z-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG1_ZSCALE", "shortDesc": "Magnetometer 1 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the magnetometer this calibration applies to.", "name": "CAL_MAG2_ID", "shortDesc": "Magnetometer 2 calibration device ID", "type": "Int32"}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG2_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG2_PITCH", "shortDesc": "Magnetometer 2 Custom Euler Pitch Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_MAG2_PRIO", "shortDesc": "Magnetometer 2 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG2_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG2_ROLL", "shortDesc": "Magnetometer 2 Custom Euler Roll Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.\nSet to \"Custom Euler Angle\" to define the rotation using CAL_MAG2_ROLL, CAL_MAG2_PITCH and CAL_MAG2_YAW.", "max": 100, "min": -1, "name": "CAL_MAG2_ROT", "shortDesc": "Magnetometer 2 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}, {"description": "Custom Euler Angle", "value": 100}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nX component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG2_XCOMP", "shortDesc": "Magnetometer 2 X Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG2_XODIAG", "shortDesc": "Magnetometer 2 X-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG2_XOFF", "shortDesc": "Magnetometer 2 X-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG2_XSCALE", "shortDesc": "Magnetometer 2 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG2_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG2_YAW", "shortDesc": "Magnetometer 2 Custom Euler Yaw Angle", "type": "Float", "units": "deg"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nY component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG2_YCOMP", "shortDesc": "Magnetometer 2 Y Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG2_YODIAG", "shortDesc": "Magnetometer 2 Y-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG2_YOFF", "shortDesc": "Magnetometer 2 Y-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG2_YSCALE", "shortDesc": "Magnetometer 2 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nZ component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG2_ZCOMP", "shortDesc": "Magnetometer 2 Z Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG2_ZODIAG", "shortDesc": "Magnetometer 2 Z-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG2_ZOFF", "shortDesc": "Magnetometer 2 Z-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG2_ZSCALE", "shortDesc": "Magnetometer 2 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the magnetometer this calibration applies to.", "name": "CAL_MAG3_ID", "shortDesc": "Magnetometer 3 calibration device ID", "type": "Int32"}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG3_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG3_PITCH", "shortDesc": "Magnetometer 3 Custom Euler Pitch Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_MAG3_PRIO", "shortDesc": "Magnetometer 3 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG3_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG3_ROLL", "shortDesc": "Magnetometer 3 Custom Euler Roll Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.\nSet to \"Custom Euler Angle\" to define the rotation using CAL_MAG3_ROLL, CAL_MAG3_PITCH and CAL_MAG3_YAW.", "max": 100, "min": -1, "name": "CAL_MAG3_ROT", "shortDesc": "Magnetometer 3 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}, {"description": "Custom Euler Angle", "value": 100}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nX component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG3_XCOMP", "shortDesc": "Magnetometer 3 X Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG3_XODIAG", "shortDesc": "Magnetometer 3 X-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG3_XOFF", "shortDesc": "Magnetometer 3 X-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG3_XSCALE", "shortDesc": "Magnetometer 3 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG3_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG3_YAW", "shortDesc": "Magnetometer 3 Custom Euler Yaw Angle", "type": "Float", "units": "deg"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nY component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG3_YCOMP", "shortDesc": "Magnetometer 3 Y Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG3_YODIAG", "shortDesc": "Magnetometer 3 Y-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG3_YOFF", "shortDesc": "Magnetometer 3 Y-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG3_YSCALE", "shortDesc": "Magnetometer 3 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nZ component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG3_ZCOMP", "shortDesc": "Magnetometer 3 Z Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG3_ZODIAG", "shortDesc": "Magnetometer 3 Z-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG3_ZOFF", "shortDesc": "Magnetometer 3 Z-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG3_ZSCALE", "shortDesc": "Magnetometer 3 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "name": "CAL_MAG_COMP_TYP", "shortDesc": "Type of magnetometer compensation", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Throttle-based compensation", "value": 1}, {"description": "Current-based compensation (battery_status instance 0)", "value": 2}, {"description": "Current-based compensation (battery_status instance 1)", "value": 3}]}, {"category": "Standard", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Pick the appropriate scaling from the datasheet.\nthis number defines the (linear) conversion from voltage\nto Pascal (pa). For the MPXV7002DP this is 1000.\nNOTE: If the sensor always registers zero, try switching\nthe static and dynamic tubes.", "name": "SENS_DPRES_ANSC", "shortDesc": "Differential pressure sensor analog scaling", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "The offset (zero-reading) in Pascal", "name": "SENS_DPRES_OFF", "shortDesc": "Differential pressure sensor offset", "type": "Float", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Reverse the raw measurements of all differential pressure sensors.\nThis can be enabled if the sensors have static and dynamic ports swapped.", "name": "SENS_DPRES_REV", "shortDesc": "Reverse differential pressure sensor readings", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 100.0, "group": "Sensor Calibration", "increment": 0.1, "longDesc": "This parameter defines the maximum distance from ground at which the optical flow sensor operates reliably.\nThe height setpoint will be limited to be no greater than this value when the navigation system\nis completely reliant on optical flow data and the height above ground estimate is valid.\nThe sensor may be usable above this height, but accuracy will progressively degrade.", "max": 100.0, "min": 1.0, "name": "SENS_FLOW_MAXHGT", "shortDesc": "Maximum height above ground when reliant on optical flow", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 8.0, "group": "Sensor Calibration", "longDesc": "Optical flow data will not fused by the estimators if the magnitude of the flow rate exceeds this value and\ncontrol loops will be instructed to limit ground speed such that the flow rate produced by movement over ground\nis less than 50% of this value.", "min": 1.0, "name": "SENS_FLOW_MAXR", "shortDesc": "Magnitude of maximum angular flow rate reliably measurable by the optical flow sensor", "type": "Float", "units": "rad/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.08, "group": "Sensor Calibration", "increment": 0.1, "longDesc": "This parameter defines the minimum distance from ground at which the optical flow sensor operates reliably.\nThe sensor may be usable below this height, but accuracy will progressively reduce to loss of focus.", "max": 1.0, "min": 0.0, "name": "SENS_FLOW_MINHGT", "shortDesc": "Minimum height above ground when reliant on optical flow", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Sensors", "longDesc": "Model with Pitot\nCAL_AIR_TUBED_MM: Not used, 1.5 mm tubes assumed.\nCAL_AIR_TUBELEN: Length of the tubes connecting the pitot to the sensor.\nModel without Pitot (1.5 mm tubes)\nCAL_AIR_TUBED_MM: Not used, 1.5 mm tubes assumed.\nCAL_AIR_TUBELEN: Length of the tubes connecting the pitot to the sensor.\nTube Pressure Drop\nCAL_AIR_TUBED_MM: Diameter in mm of the pitot and tubes, must have the same diameter.\nCAL_AIR_TUBELEN: Length of the tubes connecting the pitot to the sensor and the static + dynamic port length of the pitot.", "name": "CAL_AIR_CMODEL", "shortDesc": "Airspeed sensor compensation model for the SDP3x", "type": "Int32", "values": [{"description": "Model with Pitot", "value": 0}, {"description": "Model without Pitot (1.5 mm tubes)", "value": 1}, {"description": "Tube Pressure Drop", "value": 2}]}, {"category": "Standard", "default": 1.5, "group": "Sensors", "max": 100.0, "min": 1.5, "name": "CAL_AIR_TUBED_MM", "shortDesc": "Airspeed sensor tube diameter. Only used for the Tube Pressure Drop Compensation", "type": "Float", "units": "mm"}, {"category": "Standard", "default": 0.2, "group": "Sensors", "longDesc": "See the CAL_AIR_CMODEL explanation on how this parameter should be set.", "max": 2.0, "min": 0.01, "name": "CAL_AIR_TUBELEN", "shortDesc": "Airspeed sensor tube length", "type": "Float", "units": "m"}, {"category": "Developer", "default": 63, "group": "Sensors", "longDesc": "Use SENS_MAG_SIDES instead", "name": "CAL_MAG_SIDES", "shortDesc": "For legacy QGC support only", "type": "Int32"}, {"category": "Standard", "default": 30.0, "group": "Sensors", "longDesc": "The cutoff frequency for the 2nd order butterworth filter on the primary accelerometer.\nThis only affects the signal sent to the controllers, not the estimators. 0 disables the filter.", "max": 1000.0, "min": 0.0, "name": "IMU_ACCEL_CUTOFF", "rebootRequired": true, "shortDesc": "Low pass filter cutoff frequency for accel", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "Sensors", "increment": 0.1, "longDesc": "The cutoff frequency for the 2nd order butterworth filter used on\nthe time derivative of the measured angular velocity, also known as\nthe D-term filter in the rate controller. The D-term uses the derivative of\nthe rate and thus is the most susceptible to noise. Therefore, using\na D-term filter allows to increase IMU_GYRO_CUTOFF, which\nleads to reduced control latency and permits to increase the P gains.\nA value of 0 disables the filter.", "max": 1000.0, "min": 0.0, "name": "IMU_DGYRO_CUTOFF", "rebootRequired": true, "shortDesc": "Cutoff frequency for angular acceleration (D-Term filter)", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 1, "group": "Sensors", "name": "IMU_GYRO_CAL_EN", "rebootRequired": true, "shortDesc": "IMU gyro auto calibration enable", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 40.0, "group": "Sensors", "increment": 0.1, "longDesc": "The cutoff frequency for the 2nd order butterworth filter on the primary gyro.\nThis only affects the angular velocity sent to the controllers, not the estimators.\nIt applies also to the angular acceleration (D-Term filter), see IMU_DGYRO_CUTOFF.\nA value of 0 disables the filter.", "max": 1000.0, "min": 0.0, "name": "IMU_GYRO_CUTOFF", "rebootRequired": true, "shortDesc": "Low pass filter cutoff frequency for gyro", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 15.0, "group": "Sensors", "increment": 0.1, "longDesc": "Bandwidth per notch filter when using dynamic notch filtering with ESC RPM.", "max": 30.0, "min": 5.0, "name": "IMU_GYRO_DNF_BW", "shortDesc": "IMU gyro ESC notch filter bandwidth", "type": "Float", "units": "Hz"}, {"bitmask": [{"description": "ESC RPM", "index": 0}, {"description": "FFT", "index": 1}], "category": "Standard", "default": 0, "group": "Sensors", "longDesc": "Enable bank of dynamically updating notch filters.\nRequires ESC RPM feedback or onboard FFT (IMU_GYRO_FFT_EN).", "max": 3, "min": 0, "name": "IMU_GYRO_DNF_EN", "shortDesc": "IMU gyro dynamic notch filtering", "type": "Int32"}, {"category": "Standard", "default": 3, "group": "Sensors", "longDesc": "ESC RPM number of harmonics (multiples of RPM) for ESC RPM dynamic notch filtering.", "max": 7, "min": 1, "name": "IMU_GYRO_DNF_HMC", "shortDesc": "IMU gyro dynamic notch filter harmonics", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 25.0, "group": "Sensors", "increment": 0.1, "longDesc": "Minimum notch filter frequency in Hz.", "name": "IMU_GYRO_DNF_MIN", "shortDesc": "IMU gyro dynamic notch filter minimum frequency", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 0, "group": "Sensors", "name": "IMU_GYRO_FFT_EN", "rebootRequired": true, "shortDesc": "IMU gyro FFT enable", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 512, "group": "Sensors", "name": "IMU_GYRO_FFT_LEN", "rebootRequired": true, "shortDesc": "IMU gyro FFT length", "type": "Int32", "units": "Hz", "values": [{"description": "256", "value": 256}, {"description": "512", "value": 512}, {"description": "1024", "value": 1024}, {"description": "4096", "value": 4096}]}, {"category": "Standard", "default": 150.0, "group": "Sensors", "max": 1000.0, "min": 1.0, "name": "IMU_GYRO_FFT_MAX", "rebootRequired": true, "shortDesc": "IMU gyro FFT maximum frequency", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 30.0, "group": "Sensors", "max": 1000.0, "min": 1.0, "name": "IMU_GYRO_FFT_MIN", "rebootRequired": true, "shortDesc": "IMU gyro FFT minimum frequency", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 10.0, "group": "Sensors", "max": 30.0, "min": 1.0, "name": "IMU_GYRO_FFT_SNR", "shortDesc": "IMU gyro FFT SNR", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "Sensors", "increment": 0.1, "longDesc": "The frequency width of the stop band for the 2nd order notch filter on the primary gyro.\nSee \"IMU_GYRO_NF0_FRQ\" to activate the filter and to set the notch frequency.\nApplies to both angular velocity and angular acceleration sent to the controllers.", "max": 100.0, "min": 0.0, "name": "IMU_GYRO_NF0_BW", "rebootRequired": true, "shortDesc": "Notch filter bandwidth for gyro", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Sensors", "increment": 0.1, "longDesc": "The center frequency for the 2nd order notch filter on the primary gyro.\nThis filter can be enabled to avoid feedback amplification of structural resonances at a specific frequency.\nThis only affects the signal sent to the controllers, not the estimators.\nApplies to both angular velocity and angular acceleration sent to the controllers.\nSee \"IMU_GYRO_NF0_BW\" to set the bandwidth of the filter.\nA value of 0 disables the filter.", "max": 1000.0, "min": 0.0, "name": "IMU_GYRO_NF0_FRQ", "rebootRequired": true, "shortDesc": "Notch filter frequency for gyro", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "Sensors", "increment": 0.1, "longDesc": "The frequency width of the stop band for the 2nd order notch filter on the primary gyro.\nSee \"IMU_GYRO_NF1_FRQ\" to activate the filter and to set the notch frequency.\nApplies to both angular velocity and angular acceleration sent to the controllers.", "max": 100.0, "min": 0.0, "name": "IMU_GYRO_NF1_BW", "rebootRequired": true, "shortDesc": "Notch filter 1 bandwidth for gyro", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Sensors", "increment": 0.1, "longDesc": "The center frequency for the 2nd order notch filter on the primary gyro.\nThis filter can be enabled to avoid feedback amplification of structural resonances at a specific frequency.\nThis only affects the signal sent to the controllers, not the estimators.\nApplies to both angular velocity and angular acceleration sent to the controllers.\nSee \"IMU_GYRO_NF1_BW\" to set the bandwidth of the filter.\nA value of 0 disables the filter.", "max": 1000.0, "min": 0.0, "name": "IMU_GYRO_NF1_FRQ", "rebootRequired": true, "shortDesc": "Notch filter 2 frequency for gyro", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 400, "group": "Sensors", "longDesc": "The maximum rate the gyro control data (vehicle_angular_velocity) will be\nallowed to publish at. This is the loop rate for the rate controller and outputs.\nNote: sensor data is always read and filtered at the full raw rate (eg commonly 8 kHz) regardless of this setting.", "max": 2000, "min": 100, "name": "IMU_GYRO_RATEMAX", "rebootRequired": true, "shortDesc": "Gyro control data maximum publication rate (inner loop rate)", "type": "Int32", "units": "Hz", "values": [{"description": "100 Hz", "value": 100}, {"description": "250 Hz", "value": 250}, {"description": "400 Hz", "value": 400}, {"description": "800 Hz", "value": 800}, {"description": "1000 Hz", "value": 1000}, {"description": "2000 Hz", "value": 2000}]}, {"category": "Standard", "default": 200, "group": "Sensors", "longDesc": "The rate at which raw IMU data is integrated to produce delta angles and delta velocities.\nRecommended to set this to a multiple of the estimator update period (currently 10 ms for ekf2).", "max": 1000, "min": 100, "name": "IMU_INTEG_RATE", "rebootRequired": true, "shortDesc": "IMU integration rate", "type": "Int32", "units": "Hz", "values": [{"description": "100 Hz", "value": 100}, {"description": "200 Hz", "value": 200}, {"description": "250 Hz", "value": 250}, {"description": "400 Hz", "value": 400}]}, {"category": "Standard", "default": 1013.25, "group": "Sensors", "max": 1500.0, "min": 500.0, "name": "SENS_BARO_QNH", "shortDesc": "QNH for barometer", "type": "Float", "units": "hPa"}, {"category": "Standard", "default": 20.0, "group": "Sensors", "longDesc": "Barometric air data maximum publication rate. This is an upper bound,\nactual barometric data rate is still dependent on the sensor.", "max": 200.0, "min": 1.0, "name": "SENS_BARO_RATE", "shortDesc": "Baro max rate", "type": "Float", "units": "Hz"}, {"category": "System", "default": 1, "group": "Sensors", "longDesc": "Automatically calibrate barometer based on the GNSS height", "name": "SENS_BAR_AUTOCAL", "shortDesc": "Barometer auto calibration", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Sensors", "longDesc": "This parameter defines the rotation of the FMU board relative to the platform.", "max": 40, "min": -1, "name": "SENS_BOARD_ROT", "rebootRequired": true, "shortDesc": "Board rotation", "type": "Int32", "values": [{"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Sensors", "longDesc": "Rotation from flight controller board to vehicle body frame.\nThis parameter gets set during the \"level horizon\" calibration or can be\nset manually.", "max": 45.0, "min": -45.0, "name": "SENS_BOARD_X_OFF", "shortDesc": "Board rotation X (roll) offset", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Sensors", "longDesc": "Rotation from flight controller board to vehicle body frame.\nThis parameter gets set during the \"level horizon\" calibration or can be\nset manually.", "max": 45.0, "min": -45.0, "name": "SENS_BOARD_Y_OFF", "shortDesc": "Board rotation Y (pitch) offset", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Sensors", "longDesc": "Rotation from flight controller board to vehicle body frame.\nHas to be set manually (not set by any calibration).", "max": 45.0, "min": -45.0, "name": "SENS_BOARD_Z_OFF", "shortDesc": "Board rotation Z (yaw) offset", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "Sensors", "max": 1, "min": 0, "name": "SENS_EN_AGPSIM", "rebootRequired": true, "shortDesc": "Simulate Aux Global Position (AGP)", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Sensors", "max": 1, "min": 0, "name": "SENS_EN_ARSPDSIM", "rebootRequired": true, "shortDesc": "Enable simulated airspeed sensor instance", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Sensors", "max": 1, "min": 0, "name": "SENS_EN_BAROSIM", "rebootRequired": true, "shortDesc": "Enable simulated barometer sensor instance", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Sensors", "max": 1, "min": 0, "name": "SENS_EN_GPSSIM", "rebootRequired": true, "shortDesc": "Enable simulated GPS sinstance", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Sensors", "max": 1, "min": 0, "name": "SENS_EN_MAGSIM", "rebootRequired": true, "shortDesc": "Enable simulated magnetometer sensor instance", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": -1, "group": "Sensors", "name": "SENS_EN_THERMAL", "shortDesc": "Thermal control of sensor temperature", "type": "Int32", "values": [{"description": "Thermal control unavailable", "value": -1}, {"description": "Thermal control off", "value": 0}, {"description": "Thermal control enabled", "value": 1}]}, {"category": "System", "default": 1, "group": "Sensors", "longDesc": "Probe for optional external I2C devices.", "name": "SENS_EXT_I2C_PRB", "shortDesc": "External I2C probe", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 70.0, "group": "Sensors", "longDesc": "Optical flow data maximum publication rate. This is an upper bound,\nactual optical flow data rate is still dependent on the sensor.", "max": 200.0, "min": 1.0, "name": "SENS_FLOW_RATE", "rebootRequired": true, "shortDesc": "Optical flow max rate", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 0, "group": "Sensors", "longDesc": "This parameter defines the yaw rotation of the optical flow relative to the vehicle body frame.\nZero rotation is defined as X on flow board pointing towards front of vehicle.", "name": "SENS_FLOW_ROT", "shortDesc": "Optical flow rotation", "type": "Int32", "values": [{"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}]}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Sensors", "max": 1.5, "min": 0.5, "name": "SENS_FLOW_SCALE", "shortDesc": "Optical flow scale factor", "type": "Float"}, {"bitmask": [{"description": "use speed accuracy", "index": 0}, {"description": "use hpos accuracy", "index": 1}, {"description": "use vpos accuracy", "index": 2}], "category": "Standard", "default": 7, "group": "Sensors", "longDesc": "Set bits in the following positions to set which GPS accuracy metrics will be used to calculate the blending weight. Set to zero to disable and always used first GPS instance.\n0 : Set to true to use speed accuracy\n1 : Set to true to use horizontal position accuracy\n2 : Set to true to use vertical position accuracy", "max": 7, "min": 0, "name": "SENS_GPS_MASK", "shortDesc": "Multi GPS Blending Control Mask", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Sensors", "longDesc": "When no blending is active, this defines the preferred GPS receiver instance.\nThe GPS selection logic waits until the primary receiver is available to\nsend data to the EKF even if a secondary instance is already available.\nThe secondary instance is then only used if the primary one times out.\nAccepted values:\n-1 : Auto (equal priority for all instances)\n0 : Main serial GPS instance\n1 : Secondary serial GPS instance\n2-127 : UAVCAN module node ID\nThis parameter has no effect if blending is active.", "max": 127, "min": -1, "name": "SENS_GPS_PRIME", "shortDesc": "Multi GPS primary instance", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Sensors", "longDesc": "Sets the longest time constant that will be applied to the calculation of GPS position and height offsets used to correct data from multiple GPS data for steady state position differences.", "max": 100.0, "min": 1.0, "name": "SENS_GPS_TAU", "shortDesc": "Multi GPS Blending Time Constant", "type": "Float", "units": "s"}, {"category": "System", "default": 1, "group": "Sensors", "longDesc": "Automatically initialize IMU (accel/gyro) calibration from bias estimates if available.", "name": "SENS_IMU_AUTOCAL", "shortDesc": "IMU auto calibration", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 1, "group": "Sensors", "longDesc": "Notify the user if the IMU is clipping", "name": "SENS_IMU_CLPNOTI", "shortDesc": "IMU notify clipping", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 1, "group": "Sensors", "name": "SENS_IMU_MODE", "rebootRequired": true, "shortDesc": "Sensors hub IMU mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Publish primary IMU selection", "value": 1}]}, {"category": "System", "default": 1, "group": "Sensors", "longDesc": "For systems with an external barometer, this should be set to false to make sure that the external is used.", "name": "SENS_INT_BARO_EN", "rebootRequired": true, "shortDesc": "Enable internal barometers", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 1, "group": "Sensors", "longDesc": "Automatically initialize magnetometer calibration from bias estimate if available.", "name": "SENS_MAG_AUTOCAL", "shortDesc": "Magnetometer auto calibration", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "Sensors", "longDesc": "During calibration attempt to automatically determine the rotation of external magnetometers.", "name": "SENS_MAG_AUTOROT", "shortDesc": "Automatically set external rotations", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 1, "group": "Sensors", "name": "SENS_MAG_MODE", "rebootRequired": true, "shortDesc": "Sensors hub mag mode", "type": "Int32", "values": [{"description": "Publish all magnetometers", "value": 0}, {"description": "Publish primary magnetometer", "value": 1}]}, {"category": "Standard", "default": 15.0, "group": "Sensors", "longDesc": "Magnetometer data maximum publication rate. This is an upper bound,\nactual magnetometer data rate is still dependent on the sensor.", "max": 200.0, "min": 1.0, "name": "SENS_MAG_RATE", "rebootRequired": true, "shortDesc": "Magnetometer max rate", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 63, "group": "Sensors", "longDesc": "If set to two side calibration, only the offsets are estimated, the scale\ncalibration is left unchanged. Thus an initial six side calibration is\nrecommended.\nBits:\nORIENTATION_TAIL_DOWN = 1\nORIENTATION_NOSE_DOWN = 2\nORIENTATION_LEFT = 4\nORIENTATION_RIGHT = 8\nORIENTATION_UPSIDE_DOWN = 16\nORIENTATION_RIGHTSIDE_UP = 32", "max": 63, "min": 34, "name": "SENS_MAG_SIDES", "shortDesc": "Bitfield selecting mag sides for calibration", "type": "Int32", "values": [{"description": "Two side calibration", "value": 34}, {"description": "Three side calibration", "value": 38}, {"description": "Six side calibration", "value": 63}]}, {"category": "Standard", "default": 0, "group": "Sensors", "max": 1, "min": 0, "name": "SIM_ARSPD_FAIL", "rebootRequired": true, "shortDesc": "Dynamically simulate failure of airspeed sensor instance", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "Septentrio", "longDesc": "By default, the receiver is automatically configured. Sometimes it may be used for multiple purposes.\nIf the offered parameters aren't sufficient, this parameter can be disabled to have full control of the receiver configuration.\nA good way to use this is to enable automatic configuration, let the receiver be configured, and then disable it to make manual adjustments.", "name": "SEP_AUTO_CONFIG", "rebootRequired": true, "shortDesc": "Toggle automatic receiver configuration", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"bitmask": [{"description": "GPS", "index": 0}, {"description": "GLONASS", "index": 1}, {"description": "Galileo", "index": 2}, {"description": "SBAS", "index": 3}, {"description": "BeiDou", "index": 4}], "category": "Standard", "default": 0, "group": "Septentrio", "longDesc": "Choice of which constellations the receiver should use for PVT computation.\nWhen this is 0, the constellation usage isn't changed.", "max": 63, "min": 0, "name": "SEP_CONST_USAGE", "rebootRequired": true, "shortDesc": "Usage of different constellations", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Septentrio", "longDesc": "Log raw communication between the driver and connected receivers.\nFor example, \"To receiver\" will log all commands and corrections sent by the driver to the receiver.", "max": 3, "min": 0, "name": "SEP_DUMP_COMM", "shortDesc": "Log GPS communication data", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "From receiver", "value": 1}, {"description": "To receiver", "value": 2}, {"description": "Both", "value": 3}]}, {"category": "Standard", "default": 0, "group": "Septentrio", "longDesc": "Setup and expected use of the hardware.\n- Default: Use two receivers as completely separate instances.\n- Moving base: Use two receivers in a rover & moving base setup for heading.", "max": 1, "min": 0, "name": "SEP_HARDW_SETUP", "rebootRequired": true, "shortDesc": "Setup and expected use of the hardware", "type": "Int32", "values": [{"description": "Default", "value": 0}, {"description": "Moving base", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Septentrio", "longDesc": "When the receiver is already set up to log data, this decides whether extra logged data should be added or overwrite existing data.", "name": "SEP_LOG_FORCE", "rebootRequired": true, "shortDesc": "Whether to overwrite or add to existing logging", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Septentrio", "longDesc": "Select the frequency at which the connected receiver should log data to its internal storage.", "max": 10, "min": 0, "name": "SEP_LOG_HZ", "rebootRequired": true, "shortDesc": "Logging frequency for the receiver", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "0.1 Hz", "value": 1}, {"description": "0.2 Hz", "value": 2}, {"description": "0.5 Hz", "value": 3}, {"description": "1 Hz", "value": 4}, {"description": "2 Hz", "value": 5}, {"description": "5 Hz", "value": 6}, {"description": "10 Hz", "value": 7}, {"description": "20 Hz", "value": 8}, {"description": "25 Hz", "value": 9}, {"description": "50 Hz", "value": 10}]}, {"category": "Standard", "default": 2, "group": "Septentrio", "longDesc": "Select the level of detail that needs to be logged by the receiver.", "max": 3, "min": 0, "name": "SEP_LOG_LEVEL", "rebootRequired": true, "shortDesc": "Logging level for the receiver", "type": "Int32", "values": [{"description": "Lite", "value": 0}, {"description": "Basic", "value": 1}, {"description": "Default", "value": 2}, {"description": "Full", "value": 3}]}, {"category": "Standard", "default": 1, "group": "Septentrio", "longDesc": "The output frequency of the main SBF blocks needed for PVT information.", "max": 3, "min": 0, "name": "SEP_OUTP_HZ", "rebootRequired": true, "shortDesc": "Output frequency of main SBF blocks", "type": "Int32", "values": [{"description": "5 Hz", "value": 0}, {"description": "10 Hz", "value": 1}, {"description": "20 Hz", "value": 2}, {"description": "25 Hz", "value": 3}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Septentrio", "longDesc": "Vertical offsets can be compensated for by adjusting the Pitch offset.\nNote that this can be interpreted as the \"roll\" angle in case the antennas are aligned along the perpendicular axis.\nThis occurs in situations where the two antenna ARPs may not be exactly at the same height in the vehicle reference frame.\nSince pitch is defined as the right-handed rotation about the vehicle Y axis,\na situation where the main antenna is mounted lower than the aux antenna (assuming the default antenna setup) will result in a positive pitch.", "max": 90.0, "min": -90.0, "name": "SEP_PITCH_OFFS", "rebootRequired": true, "shortDesc": "Pitch offset for dual antenna GPS", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "Septentrio", "longDesc": "Enable publication of satellite info (ORB_ID(satellite_info)) if possible.", "name": "SEP_SAT_INFO", "rebootRequired": true, "shortDesc": "Enable sat info", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 2, "group": "Septentrio", "longDesc": "The stream the autopilot sets up on the receiver to output the logging data.\nSet this to another value if the default stream is already used for another purpose.", "max": 10, "min": 1, "name": "SEP_STREAM_LOG", "rebootRequired": true, "shortDesc": "Logging stream used during automatic configuration", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "Septentrio", "longDesc": "The stream the autopilot sets up on the receiver to output the main data.\nSet this to another value if the default stream is already used for another purpose.", "max": 10, "min": 1, "name": "SEP_STREAM_MAIN", "rebootRequired": true, "shortDesc": "Main stream used during automatic configuration", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Septentrio", "longDesc": "Heading offset angle for dual antenna GPS setups that support heading estimation.\nSet this to 0 if the antennas are parallel to the forward-facing direction\nof the vehicle and the rover antenna is in front.\nThe offset angle increases clockwise.\nSet this to 90 if the rover antenna is placed on the\nright side of the vehicle and the moving base antenna is on the left side.", "max": 360.0, "min": -360.0, "name": "SEP_YAW_OFFS", "rebootRequired": true, "shortDesc": "Heading/Yaw offset for dual antenna GPS", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 4, "default": 100.0, "group": "Simulation In Hardware", "increment": 0.01, "max": 1000.0, "min": 0.0, "name": "SIH_DISTSNSR_MAX", "shortDesc": "distance sensor maximum range", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.0, "group": "Simulation In Hardware", "increment": 0.01, "max": 10.0, "min": 0.0, "name": "SIH_DISTSNSR_MIN", "shortDesc": "distance sensor minimum range", "type": "Float", "units": "m"}, {"category": "Standard", "default": -1.0, "group": "Simulation In Hardware", "longDesc": "Absolute value superior to 10000 will disable distance sensor", "name": "SIH_DISTSNSR_OVR", "shortDesc": "if >= 0 the distance sensor measures will be overridden by this value", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.025, "group": "Simulation In Hardware", "increment": 0.005, "longDesc": "The inertia is a 3 by 3 symmetric matrix.\nIt represents the difficulty of the vehicle to modify its angular rate.", "min": 0.0, "name": "SIH_IXX", "shortDesc": "Vehicle inertia about X axis", "type": "Float", "units": "kg m^2"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Simulation In Hardware", "increment": 0.005, "longDesc": "The inertia is a 3 by 3 symmetric matrix.\nThis value can be set to 0 for a quad symmetric about its center of mass.", "name": "SIH_IXY", "shortDesc": "Vehicle cross term inertia xy", "type": "Float", "units": "kg m^2"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Simulation In Hardware", "increment": 0.005, "longDesc": "The inertia is a 3 by 3 symmetric matrix.\nThis value can be set to 0 for a quad symmetric about its center of mass.", "name": "SIH_IXZ", "shortDesc": "Vehicle cross term inertia xz", "type": "Float", "units": "kg m^2"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.025, "group": "Simulation In Hardware", "increment": 0.005, "longDesc": "The inertia is a 3 by 3 symmetric matrix.\nIt represents the difficulty of the vehicle to modify its angular rate.", "min": 0.0, "name": "SIH_IYY", "shortDesc": "Vehicle inertia about Y axis", "type": "Float", "units": "kg m^2"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Simulation In Hardware", "increment": 0.005, "longDesc": "The inertia is a 3 by 3 symmetric matrix.\nThis value can be set to 0 for a quad symmetric about its center of mass.", "name": "SIH_IYZ", "shortDesc": "Vehicle cross term inertia yz", "type": "Float", "units": "kg m^2"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.03, "group": "Simulation In Hardware", "increment": 0.005, "longDesc": "The inertia is a 3 by 3 symmetric matrix.\nIt represents the difficulty of the vehicle to modify its angular rate.", "min": 0.0, "name": "SIH_IZZ", "shortDesc": "Vehicle inertia about Z axis", "type": "Float", "units": "kg m^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Simulation In Hardware", "increment": 0.05, "longDesc": "Physical coefficient representing the friction with air particules.\nThe greater this value, the slower the quad will move.\nDrag force function of velocity: D=-KDV*V.\nThe maximum freefall velocity can be computed as V=10*MASS/KDV [m/s]", "min": 0.0, "name": "SIH_KDV", "shortDesc": "First order drag coefficient", "type": "Float", "units": "N/(m/s)"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.025, "group": "Simulation In Hardware", "increment": 0.005, "longDesc": "Physical coefficient representing the friction with air particules during rotations.\nThe greater this value, the slower the quad will rotate.\nAerodynamic moment function of body rate: Ma=-KDW*W_B.\nThis value can be set to 0 if unknown.", "min": 0.0, "name": "SIH_KDW", "shortDesc": "First order angular damper coefficient", "type": "Float", "units": "Nm/(rad/s)"}, {"category": "Standard", "decimalPlaces": 2, "default": 489.4, "group": "Simulation In Hardware", "increment": 0.01, "longDesc": "This value represents the Above Mean Sea Level (AMSL) altitude where the simulation begins.\nIf using FlightGear as a visual animation,\nthis value can be tweaked such that the vehicle lies on the ground at takeoff.\nLAT0, LON0, H0, MU_X, MU_Y, and MU_Z should ideally be consistent among each others\nto represent a physical ground location on Earth.", "max": 8848.0, "min": -420.0, "name": "SIH_LOC_H0", "shortDesc": "Initial AMSL ground altitude", "type": "Float", "units": "m"}, {"category": "Standard", "default": 47.397742, "group": "Simulation In Hardware", "longDesc": "This value represents the North-South location on Earth where the simulation begins.\nLAT0, LON0, H0, MU_X, MU_Y, and MU_Z should ideally be consistent among each others\nto represent a physical ground location on Earth.", "max": 90.0, "min": -90.0, "name": "SIH_LOC_LAT0", "shortDesc": "Initial geodetic latitude", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 8.545594, "group": "Simulation In Hardware", "longDesc": "This value represents the East-West location on Earth where the simulation begins.\nLAT0, LON0, H0, MU_X, MU_Y, and MU_Z should ideally be consistent among each others\nto represent a physical ground location on Earth.", "max": 180.0, "min": -180.0, "name": "SIH_LOC_LON0", "shortDesc": "Initial geodetic longitude", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Simulation In Hardware", "increment": 0.05, "longDesc": "This is the arm length generating the pitching moment\nThis value can be measured with a ruler.\nThis corresponds to half the distance between the front and rear motors.", "min": 0.0, "name": "SIH_L_PITCH", "shortDesc": "Pitch arm length", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Simulation In Hardware", "increment": 0.05, "longDesc": "This is the arm length generating the rolling moment\nThis value can be measured with a ruler.\nThis corresponds to half the distance between the left and right motors.", "min": 0.0, "name": "SIH_L_ROLL", "shortDesc": "Roll arm length", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Simulation In Hardware", "increment": 0.1, "longDesc": "This value can be measured by weighting the quad on a scale.", "min": 0.0, "name": "SIH_MASS", "shortDesc": "Vehicle mass", "type": "Float", "units": "kg"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "Simulation In Hardware", "increment": 0.05, "longDesc": "This is the maximum torque delivered by one propeller\nwhen the motor is running at full speed.\nThis value is usually about few percent of the maximum thrust force.", "min": 0.0, "name": "SIH_Q_MAX", "shortDesc": "Max propeller torque", "type": "Float", "units": "Nm"}, {"category": "Standard", "decimalPlaces": 2, "default": 5.0, "group": "Simulation In Hardware", "increment": 0.5, "longDesc": "This is the maximum force delivered by one propeller\nwhen the motor is running at full speed.\nThis value is usually about 5 times the mass of the quadrotor.", "min": 0.0, "name": "SIH_T_MAX", "shortDesc": "Max propeller thrust force", "type": "Float", "units": "N"}, {"category": "Standard", "default": 0.05, "group": "Simulation In Hardware", "longDesc": "the time taken for the thruster to step from 0 to 100% should be about 4 times tau", "name": "SIH_T_TAU", "shortDesc": "thruster time constant tau", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Simulation In Hardware", "name": "SIH_VEHICLE_TYPE", "rebootRequired": true, "shortDesc": "Vehicle type", "type": "Int32", "values": [{"description": "Quadcopter", "value": 0}, {"description": "Fixed-Wing", "value": 1}, {"description": "Tailsitter", "value": 2}, {"description": "Standard VTOL", "value": 3}, {"description": "Hexacopter", "value": 4}, {"description": "Rover Ackermann", "value": 5}]}, {"bitmask": [{"description": "Stuck", "index": 0}, {"description": "Drift", "index": 1}], "category": "Standard", "default": 0, "group": "Simulator", "longDesc": "Stuck: freeze the measurement to the current location\nDrift: add a linearly growing bias to the sensor data", "max": 3, "min": 0, "name": "SIM_AGP_FAIL", "shortDesc": "AGP failure mode", "type": "Int32"}, {"category": "Standard", "default": 0.0, "group": "Simulator", "name": "SIM_BARO_OFF_P", "shortDesc": "simulated barometer pressure offset", "type": "Float"}, {"category": "Standard", "default": 0.0, "group": "Simulator", "name": "SIM_BARO_OFF_T", "shortDesc": "simulated barometer temperature offset", "type": "Float", "units": "celcius"}, {"category": "Standard", "default": 10, "group": "Simulator", "max": 50, "min": 0, "name": "SIM_GPS_USED", "shortDesc": "simulated GPS number of satellites used", "type": "Int32"}, {"category": "Standard", "default": 0.0, "group": "Simulator", "name": "SIM_MAG_OFFSET_X", "shortDesc": "simulated magnetometer X offset", "type": "Float", "units": "gauss"}, {"category": "Standard", "default": 0.0, "group": "Simulator", "name": "SIM_MAG_OFFSET_Y", "shortDesc": "simulated magnetometer Y offset", "type": "Float", "units": "gauss"}, {"category": "Standard", "default": 0.0, "group": "Simulator", "name": "SIM_MAG_OFFSET_Z", "shortDesc": "simulated magnetometer Z offset", "type": "Float", "units": "gauss"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "Set to 1 to reset parameters on next system startup (setting defaults).\nPlatform-specific values are used if available.\nRC* parameters are preserved.", "name": "SYS_AUTOCONFIG", "shortDesc": "Automatically configure default values", "type": "Int32", "values": [{"description": "Keep parameters", "value": 0}, {"description": "Reset parameters to airframe defaults", "value": 1}]}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "CHANGING THIS VALUE REQUIRES A RESTART. Defines the auto-start script used to bootstrap the system.", "max": 9999999, "min": 0, "name": "SYS_AUTOSTART", "rebootRequired": true, "shortDesc": "Auto-start script index", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "If enabled, update the bootloader on the next boot.\nWARNING: do not cut the power during an update process, otherwise you will\nhave to recover using some alternative method (e.g. JTAG).\nInstructions:\n- Insert an SD card\n- Enable this parameter\n- Reboot the board (plug the power or send a reboot command)\n- Wait until the board comes back up (or at least 2 minutes)\n- If it does not come back, check the file bootlog.txt on the SD card", "name": "SYS_BL_UPDATE", "rebootRequired": true, "shortDesc": "Bootloader update", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "0 : Set to 0 to do nothing\n1 : Set to 1 to start a calibration at next boot\nThis parameter is reset to zero when the temperature calibration starts.\ndefault (0, no calibration)", "max": 1, "min": 0, "name": "SYS_CAL_ACCEL", "shortDesc": "Enable auto start of accelerometer thermal calibration at the next power up", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "0 : Set to 0 to do nothing\n1 : Set to 1 to start a calibration at next boot\nThis parameter is reset to zero when the temperature calibration starts.\ndefault (0, no calibration)", "max": 1, "min": 0, "name": "SYS_CAL_BARO", "shortDesc": "Enable auto start of barometer thermal calibration at the next power up", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "0 : Set to 0 to do nothing\n1 : Set to 1 to start a calibration at next boot\nThis parameter is reset to zero when the temperature calibration starts.\ndefault (0, no calibration)", "max": 1, "min": 0, "name": "SYS_CAL_GYRO", "shortDesc": "Enable auto start of rate gyro thermal calibration at the next power up", "type": "Int32"}, {"category": "Standard", "default": 24, "group": "System", "longDesc": "A temperature increase greater than this value is required during calibration.\nCalibration will complete for each sensor when the temperature increase above the starting temperature exceeds the value set by SYS_CAL_TDEL.\nIf the temperature rise is insufficient, the calibration will continue indefinitely and the board will need to be repowered to exit.", "min": 10, "name": "SYS_CAL_TDEL", "shortDesc": "Required temperature rise during thermal calibration", "type": "Int32", "units": "celcius"}, {"category": "Standard", "default": 10, "group": "System", "longDesc": "Temperature calibration will not start if the temperature of any sensor is higher than the value set by SYS_CAL_TMAX.", "name": "SYS_CAL_TMAX", "shortDesc": "Maximum starting temperature for thermal calibration", "type": "Int32", "units": "celcius"}, {"category": "Standard", "default": 5, "group": "System", "longDesc": "Temperature calibration for each sensor will ignore data if the temperature is lower than the value set by SYS_CAL_TMIN.", "name": "SYS_CAL_TMIN", "shortDesc": "Minimum starting temperature for thermal calibration", "type": "Int32", "units": "celcius"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "If the board supports persistent storage (i.e., the KConfig variable DATAMAN_PERSISTENT_STORAGE is set),\nthe 'Default storage' backend uses a file on persistent storage. If not supported, this backend uses\nnon-persistent storage in RAM.", "name": "SYS_DM_BACKEND", "rebootRequired": true, "shortDesc": "Dataman storage backend", "type": "Int32", "values": [{"description": "Dataman disabled", "value": -1}, {"description": "Default storage", "value": 0}, {"description": "RAM storage", "value": 1}]}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "If enabled, future sensor calibrations will be stored to /fs/mtd_caldata.\nNote: this is only supported on boards with a separate calibration storage\n/fs/mtd_caldata.", "name": "SYS_FAC_CAL_MODE", "shortDesc": "Enable factory calibration mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "All sensors", "value": 1}, {"description": "All sensors except mag", "value": 2}]}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "If enabled allows MAVLink INJECT_FAILURE commands.\nWARNING: the failures can easily cause crashes and are to be used with caution!", "name": "SYS_FAILURE_EN", "shortDesc": "Enable failure injection", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "System", "longDesc": "Disable this if the board has no barometer, such as some of the Omnibus\nF4 SD variants.\nIf disabled, the preflight checks will not check for the presence of a\nbarometer.", "name": "SYS_HAS_BARO", "rebootRequired": true, "shortDesc": "Control if the vehicle has a barometer", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "System", "longDesc": "Disable this if the system has no GPS.\nIf disabled, the sensors hub will not process sensor_gps,\nand GPS will not be available for the rest of the system.", "name": "SYS_HAS_GPS", "rebootRequired": true, "shortDesc": "Control if the vehicle has a GPS", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "System", "longDesc": "0: System has no magnetometer, preflight checks should pass without one.\n1-N: Require the presence of N magnetometer sensors for check to pass.", "name": "SYS_HAS_MAG", "rebootRequired": true, "shortDesc": "Control if and how many magnetometers are expected", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "Set this to 0 if the board has no airspeed sensor.\nIf set to 0, the preflight checks will not check for the presence of an\nairspeed sensor.", "max": 1, "min": 0, "name": "SYS_HAS_NUM_ASPD", "shortDesc": "Control if the vehicle has an airspeed sensor", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "The preflight check will fail if fewer than this number of distance sensors with valid data is present.\nDisable the check with 0.", "max": 4, "min": 0, "name": "SYS_HAS_NUM_DIST", "shortDesc": "Number of distance sensors to check being available", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "The preflight check will fail if fewer than this number of optical flow sensors with valid data are present.", "max": 1, "min": 0, "name": "SYS_HAS_NUM_OF", "shortDesc": "Number of optical flow sensors required to be available", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "While enabled the system will boot in Hardware-In-The-Loop (HITL)\nor Simulation-In-Hardware (SIH) mode and not enable all sensors and checks.\nWhen disabled the same vehicle can be flown normally.\nSet to 'external HITL', if the system should perform as if it were a real\nvehicle (the only difference to a real system is then only the parameter\nvalue, which can be used for log analysis).", "name": "SYS_HITL", "rebootRequired": true, "shortDesc": "Enable HITL/SIH mode on next boot", "type": "Int32", "values": [{"description": "external HITL", "value": -1}, {"description": "HITL and SIH disabled", "value": 0}, {"description": "HITL enabled", "value": 1}, {"description": "SIH enabled", "value": 2}]}, {"category": "Standard", "default": 1, "group": "System", "longDesc": "This is used internally only: an airframe configuration might set an expected\nparameter version value via PARAM_DEFAULTS_VER. This is checked on bootup\nagainst SYS_PARAM_VER, and if they do not match, parameters are reset and\nreloaded from the airframe configuration.", "min": 0, "name": "SYS_PARAM_VER", "shortDesc": "Parameter version", "type": "Int32"}, {"category": "Standard", "default": 1.0, "group": "System", "longDesc": "Set to 0 to disable, 1 for maximum brightness", "name": "SYS_RGB_MAXBRT", "shortDesc": "RGB Led brightness limit", "type": "Float", "units": "%"}, {"category": "Standard", "default": 1, "group": "System", "name": "SYS_STCK_EN", "shortDesc": "Enable stack checking", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 2, "group": "Testing", "name": "TEST_1", "shortDesc": "TEST_1", "type": "Int32"}, {"category": "Standard", "default": 4, "group": "Testing", "name": "TEST_2", "shortDesc": "TEST_2", "type": "Int32"}, {"category": "Standard", "default": 5.0, "group": "Testing", "name": "TEST_3", "shortDesc": "TEST_3", "type": "Float"}, {"category": "Standard", "default": 0.01, "group": "Testing", "name": "TEST_D", "shortDesc": "TEST_D", "type": "Float"}, {"category": "Standard", "default": 2.0, "group": "Testing", "name": "TEST_DEV", "shortDesc": "TEST_DEV", "type": "Float"}, {"category": "Standard", "default": 10.0, "group": "Testing", "name": "TEST_D_LP", "shortDesc": "TEST_D_LP", "type": "Float"}, {"category": "Standard", "default": 10.0, "group": "Testing", "name": "TEST_HP", "shortDesc": "TEST_HP", "type": "Float"}, {"category": "Standard", "default": 0.1, "group": "Testing", "name": "TEST_I", "shortDesc": "TEST_I", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "Testing", "name": "TEST_I_MAX", "shortDesc": "TEST_I_MAX", "type": "Float"}, {"category": "Standard", "default": 10.0, "group": "Testing", "name": "TEST_LP", "shortDesc": "TEST_LP", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "Testing", "name": "TEST_MAX", "shortDesc": "TEST_MAX", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "Testing", "name": "TEST_MEAN", "shortDesc": "TEST_MEAN", "type": "Float"}, {"category": "Standard", "default": -1.0, "group": "Testing", "name": "TEST_MIN", "shortDesc": "TEST_MIN", "type": "Float"}, {"category": "Standard", "default": 0.2, "group": "Testing", "name": "TEST_P", "shortDesc": "TEST_P", "type": "Float"}, {"category": "Standard", "default": 12345678, "group": "Testing", "name": "TEST_PARAMS", "shortDesc": "TEST_PARAMS", "type": "Int32"}, {"category": "Standard", "default": 16, "group": "Testing", "name": "TEST_RC2_X", "shortDesc": "TEST_RC2_X", "type": "Int32"}, {"category": "Standard", "default": 8, "group": "Testing", "name": "TEST_RC_X", "shortDesc": "TEST_RC_X", "type": "Int32"}, {"category": "Standard", "default": 0.5, "group": "Testing", "name": "TEST_TRIM", "shortDesc": "TEST_TRIM", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_A0_ID", "shortDesc": "ID of Accelerometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_A0_TMAX", "shortDesc": "Accelerometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_TMIN", "shortDesc": "Accelerometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_A0_TREF", "shortDesc": "Accelerometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X0_0", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X0_1", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X0_2", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X1_0", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X1_1", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X1_2", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X2_0", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X2_1", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X2_2", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X3_0", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X3_1", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X3_2", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_A1_ID", "shortDesc": "ID of Accelerometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_A1_TMAX", "shortDesc": "Accelerometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_TMIN", "shortDesc": "Accelerometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_A1_TREF", "shortDesc": "Accelerometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X0_0", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X0_1", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X0_2", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X1_0", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X1_1", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X1_2", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X2_0", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X2_1", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X2_2", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X3_0", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X3_1", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X3_2", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_A2_ID", "shortDesc": "ID of Accelerometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_A2_TMAX", "shortDesc": "Accelerometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_TMIN", "shortDesc": "Accelerometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_A2_TREF", "shortDesc": "Accelerometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X0_0", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X0_1", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X0_2", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X1_0", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X1_1", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X1_2", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X2_0", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X2_1", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X2_2", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X3_0", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X3_1", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X3_2", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_A3_ID", "shortDesc": "ID of Accelerometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_A3_TMAX", "shortDesc": "Accelerometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_TMIN", "shortDesc": "Accelerometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_A3_TREF", "shortDesc": "Accelerometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X0_0", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X0_1", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X0_2", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X1_0", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X1_1", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X1_2", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X2_0", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X2_1", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X2_2", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X3_0", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X3_1", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X3_2", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Thermal Compensation", "name": "TC_A_ENABLE", "rebootRequired": true, "shortDesc": "Thermal compensation for accelerometer sensors", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_B0_ID", "shortDesc": "ID of Barometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 75.0, "group": "Thermal Compensation", "name": "TC_B0_TMAX", "shortDesc": "Barometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 5.0, "group": "Thermal Compensation", "name": "TC_B0_TMIN", "shortDesc": "Barometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 40.0, "group": "Thermal Compensation", "name": "TC_B0_TREF", "shortDesc": "Barometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B0_X0", "shortDesc": "Barometer offset temperature ^0 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B0_X1", "shortDesc": "Barometer offset temperature ^1 polynomial coefficients", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B0_X2", "shortDesc": "Barometer offset temperature ^2 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B0_X3", "shortDesc": "Barometer offset temperature ^3 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B0_X4", "shortDesc": "Barometer offset temperature ^4 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B0_X5", "shortDesc": "Barometer offset temperature ^5 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_B1_ID", "shortDesc": "ID of Barometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 75.0, "group": "Thermal Compensation", "name": "TC_B1_TMAX", "shortDesc": "Barometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 5.0, "group": "Thermal Compensation", "name": "TC_B1_TMIN", "shortDesc": "Barometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 40.0, "group": "Thermal Compensation", "name": "TC_B1_TREF", "shortDesc": "Barometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B1_X0", "shortDesc": "Barometer offset temperature ^0 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B1_X1", "shortDesc": "Barometer offset temperature ^1 polynomial coefficients", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B1_X2", "shortDesc": "Barometer offset temperature ^2 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B1_X3", "shortDesc": "Barometer offset temperature ^3 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B1_X4", "shortDesc": "Barometer offset temperature ^4 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B1_X5", "shortDesc": "Barometer offset temperature ^5 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_B2_ID", "shortDesc": "ID of Barometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 75.0, "group": "Thermal Compensation", "name": "TC_B2_TMAX", "shortDesc": "Barometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 5.0, "group": "Thermal Compensation", "name": "TC_B2_TMIN", "shortDesc": "Barometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 40.0, "group": "Thermal Compensation", "name": "TC_B2_TREF", "shortDesc": "Barometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B2_X0", "shortDesc": "Barometer offset temperature ^0 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B2_X1", "shortDesc": "Barometer offset temperature ^1 polynomial coefficients", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B2_X2", "shortDesc": "Barometer offset temperature ^2 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B2_X3", "shortDesc": "Barometer offset temperature ^3 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B2_X4", "shortDesc": "Barometer offset temperature ^4 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B2_X5", "shortDesc": "Barometer offset temperature ^5 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_B3_ID", "shortDesc": "ID of Barometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 75.0, "group": "Thermal Compensation", "name": "TC_B3_TMAX", "shortDesc": "Barometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 5.0, "group": "Thermal Compensation", "name": "TC_B3_TMIN", "shortDesc": "Barometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 40.0, "group": "Thermal Compensation", "name": "TC_B3_TREF", "shortDesc": "Barometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B3_X0", "shortDesc": "Barometer offset temperature ^0 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B3_X1", "shortDesc": "Barometer offset temperature ^1 polynomial coefficients", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B3_X2", "shortDesc": "Barometer offset temperature ^2 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B3_X3", "shortDesc": "Barometer offset temperature ^3 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B3_X4", "shortDesc": "Barometer offset temperature ^4 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B3_X5", "shortDesc": "Barometer offset temperature ^5 polynomial coefficient", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Thermal Compensation", "name": "TC_B_ENABLE", "rebootRequired": true, "shortDesc": "Thermal compensation for barometric pressure sensors", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_G0_ID", "shortDesc": "ID of Gyro that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_G0_TMAX", "shortDesc": "Gyro calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_TMIN", "shortDesc": "Gyro calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_G0_TREF", "shortDesc": "Gyro calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X0_0", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X0_1", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X0_2", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X1_0", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X1_1", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X1_2", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X2_0", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X2_1", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X2_2", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X3_0", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X3_1", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X3_2", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_G1_ID", "shortDesc": "ID of Gyro that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_G1_TMAX", "shortDesc": "Gyro calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_TMIN", "shortDesc": "Gyro calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_G1_TREF", "shortDesc": "Gyro calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X0_0", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X0_1", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X0_2", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X1_0", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X1_1", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X1_2", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X2_0", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X2_1", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X2_2", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X3_0", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X3_1", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X3_2", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_G2_ID", "shortDesc": "ID of Gyro that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_G2_TMAX", "shortDesc": "Gyro calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_TMIN", "shortDesc": "Gyro calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_G2_TREF", "shortDesc": "Gyro calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X0_0", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X0_1", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X0_2", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X1_0", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X1_1", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X1_2", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X2_0", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X2_1", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X2_2", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X3_0", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X3_1", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X3_2", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_G3_ID", "shortDesc": "ID of Gyro that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_G3_TMAX", "shortDesc": "Gyro calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_TMIN", "shortDesc": "Gyro calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_G3_TREF", "shortDesc": "Gyro calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X0_0", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X0_1", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X0_2", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X1_0", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X1_1", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X1_2", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X2_0", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X2_1", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X2_2", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X3_0", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X3_1", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X3_2", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Thermal Compensation", "name": "TC_G_ENABLE", "rebootRequired": true, "shortDesc": "Thermal compensation for rate gyro sensors", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_M0_ID", "shortDesc": "ID of Magnetometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_M0_TMAX", "shortDesc": "Magnetometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_TMIN", "shortDesc": "Magnetometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_M0_TREF", "shortDesc": "Magnetometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X0_0", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X0_1", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X0_2", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X1_0", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X1_1", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X1_2", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X2_0", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X2_1", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X2_2", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X3_0", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X3_1", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X3_2", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_M1_ID", "shortDesc": "ID of Magnetometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_M1_TMAX", "shortDesc": "Magnetometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_TMIN", "shortDesc": "Magnetometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_M1_TREF", "shortDesc": "Magnetometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X0_0", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X0_1", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X0_2", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X1_0", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X1_1", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X1_2", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X2_0", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X2_1", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X2_2", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X3_0", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X3_1", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X3_2", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_M2_ID", "shortDesc": "ID of Magnetometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_M2_TMAX", "shortDesc": "Magnetometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_TMIN", "shortDesc": "Magnetometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_M2_TREF", "shortDesc": "Magnetometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X0_0", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X0_1", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X0_2", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X1_0", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X1_1", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X1_2", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X2_0", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X2_1", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X2_2", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X3_0", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X3_1", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X3_2", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_M3_ID", "shortDesc": "ID of Magnetometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_M3_TMAX", "shortDesc": "Magnetometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_TMIN", "shortDesc": "Magnetometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_M3_TREF", "shortDesc": "Magnetometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X0_0", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X0_1", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X0_2", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X1_0", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X1_1", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X1_2", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X2_0", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X2_1", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X2_2", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X3_0", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X3_1", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X3_2", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Thermal Compensation", "name": "TC_M_ENABLE", "rebootRequired": true, "shortDesc": "Thermal compensation for magnetometer sensors", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.05, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_MGM_PITCH", "shortDesc": "Pitch gain for manual inputs in manual control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.05, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_MGM_ROLL", "shortDesc": "Roll gain for manual inputs in manual control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_MGM_THRTL", "shortDesc": "Throttle gain for manual inputs in manual control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.05, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_MGM_YAW", "shortDesc": "Yaw gain for manual inputs in manual control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "UUV Attitude Control", "name": "UUV_PITCH_D", "shortDesc": "Pitch differential gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 4.0, "group": "UUV Attitude Control", "name": "UUV_PITCH_P", "shortDesc": "Pitch proportional gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 100.0, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_RGM_PITCH", "shortDesc": "Pitch gain for manual inputs in rate control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 100.0, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_RGM_ROLL", "shortDesc": "Roll gain for manual inputs in rate control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 10.0, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_RGM_THRTL", "shortDesc": "Throttle gain for manual inputs in rate control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 100.0, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_RGM_YAW", "shortDesc": "Yaw gain for manual inputs in rate control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.5, "group": "UUV Attitude Control", "name": "UUV_ROLL_D", "shortDesc": "Roll differential gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 4.0, "group": "UUV Attitude Control", "name": "UUV_ROLL_P", "shortDesc": "Roll proportional gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_SGM_PITCH", "shortDesc": "Pitch gain for manual inputs in attitude control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_SGM_ROLL", "shortDesc": "Roll gain for manual inputs in attitude control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_SGM_THRTL", "shortDesc": "Throttle gain for manual inputs in attitude control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_SGM_YAW", "shortDesc": "Yaw gain for manual inputs in attitude control mode", "type": "Float"}, {"category": "Standard", "default": 2.0, "group": "UUV Attitude Control", "name": "UUV_SP_MAX_AGE", "shortDesc": "Maximum time (in seconds) before resetting setpoint", "type": "Float"}, {"category": "Standard", "default": 0, "group": "UUV Attitude Control", "max": 1, "min": 0, "name": "UUV_STICK_MODE", "shortDesc": "Stick mode selector (0=Heave/sway control, roll/pitch leveled; 1=Pitch/roll control)", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "UUV Attitude Control", "max": 1.0, "min": 0.0, "name": "UUV_THRUST_SAT", "shortDesc": "UUV Thrust setpoint Saturation", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "UUV Attitude Control", "max": 1.0, "min": 0.0, "name": "UUV_TORQUE_SAT", "shortDesc": "UUV Torque setpoint Saturation", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "UUV Attitude Control", "name": "UUV_YAW_D", "shortDesc": "Yaw differential gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 4.0, "group": "UUV Attitude Control", "name": "UUV_YAW_P", "shortDesc": "Yawh proportional gain", "type": "Float"}, {"category": "Standard", "default": 0.2, "group": "UUV Position Control", "name": "UUV_GAIN_X_D", "shortDesc": "Gain of D controller X", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "UUV Position Control", "name": "UUV_GAIN_X_P", "shortDesc": "Gain of P controller X", "type": "Float"}, {"category": "Standard", "default": 0.2, "group": "UUV Position Control", "name": "UUV_GAIN_Y_D", "shortDesc": "Gain of D controller Y", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "UUV Position Control", "name": "UUV_GAIN_Y_P", "shortDesc": "Gain of P controller Y", "type": "Float"}, {"category": "Standard", "default": 0.2, "group": "UUV Position Control", "name": "UUV_GAIN_Z_D", "shortDesc": "Gain of D controller Z", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "UUV Position Control", "name": "UUV_GAIN_Z_P", "shortDesc": "Gain of P controller Z", "type": "Float"}, {"category": "Standard", "default": 0.5, "group": "UUV Position Control", "name": "UUV_PGM_VEL", "shortDesc": "Gain for position control velocity setpoint update", "type": "Float"}, {"category": "Standard", "default": 1, "group": "UUV Position Control", "name": "UUV_POS_MODE", "shortDesc": "Stabilization mode(1) or Position Control(0)", "type": "Int32", "values": [{"description": "Moves position setpoint in world frame", "value": 0}, {"description": "Moves position setpoint in body frame", "value": 1}]}, {"category": "Standard", "default": 0.1, "group": "UUV Position Control", "name": "UUV_POS_STICK_DB", "shortDesc": "Deadband for changing position setpoint", "type": "Float"}, {"category": "Standard", "default": 1, "group": "UUV Position Control", "name": "UUV_STAB_MODE", "shortDesc": "Stabilization mode(1) or Position Control(0)", "type": "Int32", "values": [{"description": "Tracks previous attitude setpoint", "value": 0}, {"description": "Tracks horizontal attitude (allows yaw change)", "value": 1}]}, {"category": "Standard", "default": 2130706433, "group": "UXRCE-DDS Client", "longDesc": "If ethernet is enabled and is the selected configuration for uXRCE-DDS,\nthe selected Agent IP address will be set and used.\nDecimal dot notation is not supported. IP address must be provided\nin int32 format. For example, 192.168.1.2 is mapped to -1062731518;\n127.0.0.1 is mapped to 2130706433.", "name": "UXRCE_DDS_AG_IP", "rebootRequired": true, "shortDesc": "uXRCE-DDS Agent IP address", "type": "Int32"}, {"category": "System", "default": 0, "group": "UXRCE-DDS Client", "longDesc": "uXRCE-DDS domain ID", "name": "UXRCE_DDS_DOM_ID", "rebootRequired": true, "shortDesc": "uXRCE-DDS domain ID", "type": "Int32"}, {"category": "System", "default": 0, "group": "UXRCE-DDS Client", "longDesc": "This is used to enable flow control for the serial uXRCE instance.\nUsed for reliable high bandwidth communication.", "name": "UXRCE_DDS_FLCTRL", "rebootRequired": true, "shortDesc": "Enable serial flow control for UXRCE interface", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 1, "group": "UXRCE-DDS Client", "longDesc": "uXRCE-DDS key, must be different from zero.\nIn a single agent - multi client configuration, each client\nmust have a unique session key.", "name": "UXRCE_DDS_KEY", "rebootRequired": true, "shortDesc": "uXRCE-DDS session key", "type": "Int32"}, {"category": "System", "default": -1, "group": "UXRCE-DDS Client", "longDesc": "Defines an index-based namespace for DDS messages, e.g, uav_0, uav_1, up to uav_9999\nA value less than zero leaves the namespace empty", "max": 9999, "min": -1, "name": "UXRCE_DDS_NS_IDX", "rebootRequired": true, "shortDesc": "Define an index-based message namespace", "type": "Int32"}, {"category": "Standard", "default": 8888, "group": "UXRCE-DDS Client", "longDesc": "If ethernet is enabled and is the selected configuration for uXRCE-DDS,\nthe selected UDP port will be set and used.", "max": 65535, "min": 0, "name": "UXRCE_DDS_PRT", "rebootRequired": true, "shortDesc": "uXRCE-DDS UDP port", "type": "Int32"}, {"category": "System", "default": 0, "group": "UXRCE-DDS Client", "longDesc": "Set the participant configuration on the Agent's system.\n0: Use the default configuration.\n1: Restrict messages to localhost\n(use in combination with ROS_LOCALHOST_ONLY=1).\n2: Use a custom participant with the profile name \"px4_participant\".", "max": 2, "min": 0, "name": "UXRCE_DDS_PTCFG", "rebootRequired": true, "shortDesc": "uXRCE-DDS participant configuration", "type": "Int32", "values": [{"description": "Default", "value": 0}, {"description": "Localhost-only", "value": 1}, {"description": "Custom participant", "value": 2}]}, {"category": "System", "default": -1, "group": "UXRCE-DDS Client", "longDesc": "Specifies after how many seconds without receiving data the DDS connection is reestablished.\nA value less than one disables the RX rate timeout.", "name": "UXRCE_DDS_RX_TO", "rebootRequired": true, "shortDesc": "RX rate timeout configuration", "type": "Int32", "units": "s"}, {"category": "System", "default": 0, "group": "UXRCE-DDS Client", "longDesc": "When enabled along with UXRCE_DDS_SYNCT, uxrce_dds_client will set the system clock using the agents UTC timestamp.", "name": "UXRCE_DDS_SYNCC", "rebootRequired": true, "shortDesc": "Enable uXRCE-DDS system clock synchronization", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 1, "group": "UXRCE-DDS Client", "longDesc": "When enabled, uxrce_dds_client will synchronize the timestamps of the incoming and outgoing messages measuring the offset between the Agent OS time and the PX4 time.", "name": "UXRCE_DDS_SYNCT", "rebootRequired": true, "shortDesc": "Enable uXRCE-DDS timestamp synchronization", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 3, "group": "UXRCE-DDS Client", "longDesc": "Specifies after how many seconds without sending data the DDS connection is reestablished.\nA value less than one disables the TX rate timeout.", "name": "UXRCE_DDS_TX_TO", "rebootRequired": true, "shortDesc": "TX rate timeout configuration", "type": "Int32", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 8.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Airspeed at which we can start blending both fw and mc controls. Set to 0 to disable.", "max": 30.0, "min": 0.0, "name": "VT_ARSP_BLEND", "shortDesc": "Transition blending airspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 10.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Airspeed at which we can switch to fw mode", "max": 30.0, "min": 0.0, "name": "VT_ARSP_TRANS", "shortDesc": "Transition airspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Time in seconds it takes to tilt form VT_TILT_FW to VT_TILT_MC.", "max": 10.0, "min": 0.1, "name": "VT_BT_TILT_DUR", "shortDesc": "Duration motor tilt up in backtransition", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "VTOL Attitude Control", "increment": 0.05, "max": 0.3, "min": 0.0, "name": "VT_B_DEC_I", "shortDesc": "Backtransition deceleration setpoint to tilt I gain", "type": "Float", "units": "rad s/m"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Used to calculate back transition distance in an auto mode.\nFor standard vtol and tiltrotors a controller is used to track this value during the transition.", "max": 10.0, "min": 0.5, "name": "VT_B_DEC_MSS", "shortDesc": "Approximate deceleration during back transition", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 10.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Transition is also declared over if the groundspeed drops below MPC_XY_CRUISE.", "max": 20.0, "min": 0.1, "name": "VT_B_TRANS_DUR", "shortDesc": "Maximum duration of a back transition", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "This sets the duration during which the MC motors ramp up to the commanded thrust during the back transition stage.", "max": 20.0, "min": 0.0, "name": "VT_B_TRANS_RAMP", "shortDesc": "Back transition MC motor ramp up time", "type": "Float", "units": "s"}, {"category": "Standard", "default": 1, "group": "VTOL Attitude Control", "longDesc": "If set to 1 the control surfaces are locked at the disarmed value in multicopter mode.", "name": "VT_ELEV_MC_LOCK", "shortDesc": "Lock control surfaces in hover", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "VTOL Attitude Control", "longDesc": "Prevents downforce from pitching the body down when facing wind.\nUses puller/pusher (standard VTOL), or forward-tilt (tiltrotor VTOL) to accelerate forward instead.\nOnly active if demanded pitch is below VT_PITCH_MIN.\nUse VT_FWD_THRUST_SC to tune it.\nDescend mode is treated as Landing too.\nOnly active (if enabled) in height-rate controlled modes.", "name": "VT_FWD_THRUST_EN", "shortDesc": "Use fixed-wing actuation in hover to accelerate forward", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled (except LANDING)", "value": 1}, {"description": "Enabled if above MPC_LAND_ALT1", "value": 2}, {"description": "Enabled if above MPC_LAND_ALT2", "value": 3}, {"description": "Enabled constantly", "value": 4}, {"description": "Enabled if above MPC_LAND_ALT1 (except LANDING)", "value": 5}, {"description": "Enabled if above MPC_LAND_ALT2 (except LANDING)", "value": 6}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.7, "group": "VTOL Attitude Control", "increment": 0.01, "longDesc": "Scale applied to the demanded pitch (below VT_PITCH_MIN) to get the fixed-wing forward actuation in hover mode.\nEnabled via VT_FWD_THRUST_EN.", "max": 5.0, "min": 0.0, "name": "VT_FWD_THRUST_SC", "shortDesc": "Fixed-wing actuation thrust scale in hover", "type": "Float"}, {"bitmask": [{"description": "Yaw", "index": 0}, {"description": "Roll", "index": 1}, {"description": "Pitch", "index": 2}], "category": "Standard", "default": 0, "group": "VTOL Attitude Control", "longDesc": "Enable differential thrust seperately for roll, pitch, yaw in forward (fixed-wing) mode.\nThe effectiveness of differential thrust around the corresponding axis can be\ntuned by setting VT_FW_DIFTHR_S_R / VT_FW_DIFTHR_S_P / VT_FW_DIFTHR_S_Y.", "max": 7, "min": 0, "name": "VT_FW_DIFTHR_EN", "shortDesc": "Differential thrust in forwards flight", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Differential thrust in forward flight is enabled via VT_FW_DIFTHR_EN.", "max": 2.0, "min": 0.0, "name": "VT_FW_DIFTHR_S_P", "shortDesc": "Pitch differential thrust factor in forward flight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Differential thrust in forward flight is enabled via VT_FW_DIFTHR_EN.", "max": 2.0, "min": 0.0, "name": "VT_FW_DIFTHR_S_R", "shortDesc": "Roll differential thrust factor in forward flight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Differential thrust in forward flight is enabled via VT_FW_DIFTHR_EN.", "max": 2.0, "min": 0.0, "name": "VT_FW_DIFTHR_S_Y", "shortDesc": "Yaw differential thrust factor in forward flight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Minimum altitude for fixed-wing flight. When the vehicle is in fixed-wing mode\nand the altitude drops below this altitude (relative altitude above local origin),\nit will instantly switch back to MC mode and execute behavior defined in COM_QC_ACT.", "max": 200.0, "min": 0.0, "name": "VT_FW_MIN_ALT", "shortDesc": "Quad-chute altitude", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "VTOL Attitude Control", "increment": 1, "longDesc": "Maximum height above the ground (if available, otherwise above\nHome if available, otherwise above the local origin) where triggering a quad-chute is possible.\nAt high altitudes there is a big risk to deplete the battery and therefore crash if quad-chuting there.", "min": 0, "name": "VT_FW_QC_HMAX", "shortDesc": "Quad-chute maximum height", "type": "Int32", "units": "m"}, {"category": "Standard", "default": 0, "group": "VTOL Attitude Control", "longDesc": "Absolute pitch threshold for quad-chute triggering in FW mode.\nAbove this the vehicle will transition back to MC mode and execute behavior defined in COM_QC_ACT.\nSet to 0 do disable this threshold.", "max": 180, "min": 0, "name": "VT_FW_QC_P", "shortDesc": "Quad-chute max pitch threshold", "type": "Int32", "units": "deg"}, {"category": "Standard", "default": 0, "group": "VTOL Attitude Control", "longDesc": "Absolute roll threshold for quad-chute triggering in FW mode.\nAbove this the vehicle will transition back to MC mode and execute behavior defined in COM_QC_ACT.\nSet to 0 do disable this threshold.", "max": 180, "min": 0, "name": "VT_FW_QC_R", "shortDesc": "Quad-chute max roll threshold", "type": "Int32", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 5.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Time in seconds used for a transition", "max": 20.0, "min": 0.1, "name": "VT_F_TRANS_DUR", "shortDesc": "Duration of a front transition", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "VTOL Attitude Control", "increment": 0.01, "max": 1.0, "min": 0.0, "name": "VT_F_TRANS_THR", "shortDesc": "Target throttle value for the transition to fixed-wing flight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.0, "group": "VTOL Attitude Control", "increment": 0.5, "longDesc": "The duration of the front transition when there is no airspeed feedback available.\nWhen airspeed is used, transition timeout is declared if airspeed does not\nreach VT_ARSP_BLEND after this time.", "max": 30.0, "min": 1.0, "name": "VT_F_TR_OL_TM", "shortDesc": "Airspeed-less front transition time (open loop)", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Overrides VT_PITCH_MIN when the vehicle is in LAND mode (hovering).\nDuring landing it can be beneficial to reduce the pitch angle to reduce the generated lift in head wind.", "max": 45.0, "min": -10.0, "name": "VT_LND_PITCH_MIN", "shortDesc": "Minimum pitch angle during hover landing", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Any pitch setpoint below this value is translated to a forward force by the fixed-wing forward actuation if\nVT_FWD_TRHUST_EN is set.", "max": 45.0, "min": -10.0, "name": "VT_PITCH_MIN", "shortDesc": "Minimum pitch angle during hover", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.33, "group": "VTOL Attitude Control", "increment": 0.01, "longDesc": "Defines the slew rate of the puller/pusher throttle during transitions.\nZero will deactivate the slew rate limiting and thus produce an instant throttle\nrise to the transition throttle VT_F_TRANS_THR.", "min": 0.0, "name": "VT_PSHER_SLEW", "shortDesc": "Pusher throttle ramp up slew rate", "type": "Float", "units": "1/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Altitude error threshold for quad-chute triggering during fixed-wing flight.\nThe check is only active if altitude is controlled and the vehicle is below the current altitude reference.\nThe altitude error is relative to the highest altitude the vehicle has achieved since it has flown below the current\naltitude reference.\nSet to 0 do disable.", "max": 200.0, "min": 0.0, "name": "VT_QC_ALT_LOSS", "shortDesc": "Quad-chute uncommanded descent threshold", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Altitude loss threshold for quad-chute triggering during VTOL transition to fixed-wing flight\nin altitude-controlled flight modes.\nActive until 5s after completing transition to fixed-wing.\nIf the current altitude is more than this value below the altitude at the beginning of the\ntransition, it will instantly switch back to MC mode and execute behavior defined in COM_QC_ACT.\nSet to 0 do disable this threshold.", "max": 50.0, "min": 0.0, "name": "VT_QC_T_ALT_LOSS", "shortDesc": "Quad-chute transition altitude loss threshold", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "VTOL Attitude Control", "increment": 0.1, "max": 1.0, "min": -1.0, "name": "VT_SPOILER_MC_LD", "shortDesc": "Spoiler setting while landing (hover)", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "VTOL Attitude Control", "increment": 0.01, "max": 1.0, "min": 0.0, "name": "VT_TILT_FW", "shortDesc": "Normalized tilt in FW", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "VTOL Attitude Control", "increment": 0.01, "max": 1.0, "min": 0.0, "name": "VT_TILT_MC", "shortDesc": "Normalized tilt in Hover", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.4, "group": "VTOL Attitude Control", "increment": 0.01, "max": 1.0, "min": 0.0, "name": "VT_TILT_TRANS", "shortDesc": "Normalized tilt in transition to FW", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Minimum time in seconds for front transition.", "max": 20.0, "min": 0.0, "name": "VT_TRANS_MIN_TM", "shortDesc": "Front transition minimum time", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.5, "group": "VTOL Attitude Control", "increment": 0.01, "longDesc": "Time in seconds it takes to tilt form VT_TILT_TRANS to VT_TILT_FW.", "max": 5.0, "min": 0.1, "name": "VT_TRANS_P2_DUR", "shortDesc": "Duration of front transition phase 2", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 15.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Time in seconds after which transition will be cancelled.", "max": 30.0, "min": 0.1, "name": "VT_TRANS_TIMEOUT", "shortDesc": "Front transition timeout", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "VTOL Attitude Control", "max": 2, "min": 0, "name": "VT_TYPE", "rebootRequired": true, "shortDesc": "VTOL Type (Tailsitter=0, Tiltrotor=1, Standard=2)", "type": "Int32", "values": [{"description": "Tailsitter", "value": 0}, {"description": "Tiltrotor", "value": 1}, {"description": "Standard", "value": 2}]}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "VTOL Attitude Control", "increment": 0.01, "longDesc": "The desired gain to convert roll sp into yaw rate sp.", "max": 3.0, "min": 0.0, "name": "WV_GAIN", "shortDesc": "Weather-vane roll angle to yawrate", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 80.0, "group": "VTOL Takeoff", "increment": 1.0, "longDesc": "Altitude relative to home at which vehicle will loiter after front transition.", "max": 300.0, "min": 20.0, "name": "VTO_LOITER_ALT", "shortDesc": "VTOL Takeoff relative loiter altitude", "type": "Float", "units": "m"}], "translation": {"items": {"parameters": {"list": {"items": {"bitmask": {"list": {"key": "index", "translate": ["description"]}}, "values": {"list": {"key": "value", "translate": ["description"]}}}, "key": "name", "translate": ["shortDesc", "longDesc"], "translate-global": ["category", "group"]}}}}, "version": 1} \ No newline at end of file +{"parameters": [{"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "Sets first 4 characters of a total of 8. Valid characters are A-Z, 0-9, \" \". Example \"PX4 \" -> 1347957792\nFor CALLSIGN shorter than 8 characters use the null terminator at the end '\\0'.", "name": "ADSB_CALLSIGN_1", "rebootRequired": true, "shortDesc": "First 4 characters of CALLSIGN", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "Sets second 4 characters of a total of 8. Valid characters are A-Z, 0-9, \" \" only. Example \"TEST\" -> 1413829460\nFor CALLSIGN shorter than 8 characters use the null terminator at the end '\\0'.", "name": "ADSB_CALLSIGN_2", "rebootRequired": true, "shortDesc": "Second 4 characters of CALLSIGN", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "Sets the vehicle emergency state", "max": 6, "min": 0, "name": "ADSB_EMERGC", "rebootRequired": true, "shortDesc": "ADSB-Out Emergency State", "type": "Int32", "values": [{"description": "NoEmergency", "value": 0}, {"description": "General", "value": 1}, {"description": "Medical", "value": 2}, {"description": "LowFuel", "value": 3}, {"description": "NoCommunications", "value": 4}, {"description": "Interference", "value": 5}, {"description": "Downed", "value": 6}]}, {"category": "Standard", "default": 14, "group": "ADSB", "longDesc": "Configure the emitter type of the vehicle.", "max": 15, "min": 0, "name": "ADSB_EMIT_TYPE", "rebootRequired": true, "shortDesc": "ADSB-Out Vehicle Emitter Type", "type": "Int32", "values": [{"description": "Unknown", "value": 0}, {"description": "Light", "value": 1}, {"description": "Small", "value": 2}, {"description": "Large", "value": 3}, {"description": "HighVortex", "value": 4}, {"description": "Heavy", "value": 5}, {"description": "Performance", "value": 6}, {"description": "Rotorcraft", "value": 7}, {"description": "RESERVED", "value": 8}, {"description": "Glider", "value": 9}, {"description": "LightAir", "value": 10}, {"description": "Parachute", "value": 11}, {"description": "UltraLight", "value": 12}, {"description": "RESERVED", "value": 13}, {"description": "UAV", "value": 14}, {"description": "Space", "value": 15}, {"description": "RESERVED", "value": 16}, {"description": "EmergencySurf", "value": 17}, {"description": "ServiceSurf", "value": 18}, {"description": "PointObstacle", "value": 19}]}, {"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "Sets GPS lataral offset encoding", "max": 7, "min": 0, "name": "ADSB_GPS_OFF_LAT", "rebootRequired": true, "shortDesc": "ADSB-Out GPS Offset lat", "type": "Int32", "values": [{"description": "NoData", "value": 0}, {"description": "LatLeft2M", "value": 1}, {"description": "LatLeft4M", "value": 2}, {"description": "LatLeft6M", "value": 3}, {"description": "LatRight0M", "value": 4}, {"description": "LatRight2M", "value": 5}, {"description": "LatRight4M", "value": 6}, {"description": "LatRight6M", "value": 7}]}, {"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "Sets GPS longitudinal offset encoding", "max": 1, "min": 0, "name": "ADSB_GPS_OFF_LON", "rebootRequired": true, "shortDesc": "ADSB-Out GPS Offset lon", "type": "Int32", "values": [{"description": "NoData", "value": 0}, {"description": "AppliedBySensor", "value": 1}]}, {"category": "Standard", "default": 1194684, "group": "ADSB", "longDesc": "Defines the ICAO ID of the vehicle", "max": 16777215, "min": -1, "name": "ADSB_ICAO_ID", "rebootRequired": true, "shortDesc": "ADSB-Out ICAO configuration", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "This vehicle is always tracked. Use 0 to disable.", "max": 16777215, "min": 0, "name": "ADSB_ICAO_SPECL", "rebootRequired": true, "shortDesc": "ADSB-In Special ICAO configuration", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "Enable Identification of Position feature", "name": "ADSB_IDENT", "rebootRequired": true, "shortDesc": "ADSB-Out Ident Configuration", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "ADSB", "longDesc": "Report the length and width of the vehicle in meters. In most cases, use '1' for the smallest vehicle size.", "max": 15, "min": 0, "name": "ADSB_LEN_WIDTH", "rebootRequired": true, "shortDesc": "ADSB-Out Vehicle Size Configuration", "type": "Int32", "values": [{"description": "SizeUnknown", "value": 0}, {"description": "Len15_Wid23", "value": 1}, {"description": "Len25_Wid28", "value": 2}, {"description": "Len25_Wid34", "value": 3}, {"description": "Len35_Wid33", "value": 4}, {"description": "Len35_Wid38", "value": 5}, {"description": "Len45_Wid39", "value": 6}, {"description": "Len45_Wid45", "value": 7}, {"description": "Len55_Wid45", "value": 8}, {"description": "Len55_Wid52", "value": 9}, {"description": "Len65_Wid59", "value": 10}, {"description": "Len65_Wid67", "value": 11}, {"description": "Len75_Wid72", "value": 12}, {"description": "Len75_Wid80", "value": 13}, {"description": "Len85_Wid80", "value": 14}, {"description": "Len85_Wid90", "value": 15}]}, {"category": "Standard", "default": 25, "group": "ADSB", "longDesc": "Change number of targets to track", "max": 50, "min": 0, "name": "ADSB_LIST_MAX", "rebootRequired": true, "shortDesc": "ADSB-In Vehicle List Size", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "ADSB", "longDesc": "Informs ADSB vehicles of this vehicle's max speed capability", "max": 6, "min": 0, "name": "ADSB_MAX_SPEED", "rebootRequired": true, "shortDesc": "ADSB-Out Vehicle Max Speed", "type": "Int32", "values": [{"description": "UnknownMaxSpeed", "value": 0}, {"description": "75Kts", "value": 1}, {"description": "150Kts", "value": 2}, {"description": "300Kts", "value": 3}, {"description": "600Kts", "value": 4}, {"description": "1200Kts", "value": 5}, {"description": "Over1200Kts", "value": 6}]}, {"category": "Standard", "default": 1200, "group": "ADSB", "longDesc": "This parameter defines the squawk code. Value should be between 0000 and 7777.", "max": 7777, "min": 0, "name": "ADSB_SQUAWK", "rebootRequired": true, "shortDesc": "ADSB-Out squawk code configuration", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 1.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC1", "shortDesc": "SIM Channel 1 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 10.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC10", "shortDesc": "SIM Channel 10 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 11.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC11", "shortDesc": "SIM Channel 11 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 12.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC12", "shortDesc": "SIM Channel 12 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 13.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC13", "shortDesc": "SIM Channel 13 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 14.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC14", "shortDesc": "SIM Channel 14 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 15.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC15", "shortDesc": "SIM Channel 15 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 16.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC16", "shortDesc": "SIM Channel 16 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 2.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC2", "shortDesc": "SIM Channel 2 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 3.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC3", "shortDesc": "SIM Channel 3 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 4.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC4", "shortDesc": "SIM Channel 4 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 5.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC5", "shortDesc": "SIM Channel 5 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 6.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC6", "shortDesc": "SIM Channel 6 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 7.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC7", "shortDesc": "SIM Channel 7 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 8.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC8", "shortDesc": "SIM Channel 8 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Select what should be output on SIM Channel 9.\nThe default failsafe value is set according to the selected function:\n- 'Min' for ConstantMin\n- 'Max' for ConstantMax\n- 'Max' for Parachute\n- ('Max'+'Min')/2 for Servos\n- 'Disarmed' for the rest", "name": "PWM_MAIN_FUNC9", "shortDesc": "SIM Channel 9 Output Function", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Constant Min", "value": 1}, {"description": "Constant Max", "value": 2}, {"description": "Motor 1", "value": 101}, {"description": "Motor 2", "value": 102}, {"description": "Motor 3", "value": 103}, {"description": "Motor 4", "value": 104}, {"description": "Motor 5", "value": 105}, {"description": "Motor 6", "value": 106}, {"description": "Motor 7", "value": 107}, {"description": "Motor 8", "value": 108}, {"description": "Motor 9", "value": 109}, {"description": "Motor 10", "value": 110}, {"description": "Motor 11", "value": 111}, {"description": "Motor 12", "value": 112}, {"description": "Servo 1", "value": 201}, {"description": "Servo 2", "value": 202}, {"description": "Servo 3", "value": 203}, {"description": "Servo 4", "value": 204}, {"description": "Servo 5", "value": 205}, {"description": "Servo 6", "value": 206}, {"description": "Servo 7", "value": 207}, {"description": "Servo 8", "value": 208}, {"description": "Peripheral via Actuator Set 1", "value": 301}, {"description": "Peripheral via Actuator Set 2", "value": 302}, {"description": "Peripheral via Actuator Set 3", "value": 303}, {"description": "Peripheral via Actuator Set 4", "value": 304}, {"description": "Peripheral via Actuator Set 5", "value": 305}, {"description": "Peripheral via Actuator Set 6", "value": 306}, {"description": "Landing Gear", "value": 400}, {"description": "Parachute", "value": 401}, {"description": "RC Roll", "value": 402}, {"description": "RC Pitch", "value": 403}, {"description": "RC Throttle", "value": 404}, {"description": "RC Yaw", "value": 405}, {"description": "RC Flaps", "value": 406}, {"description": "RC AUX 1", "value": 407}, {"description": "RC AUX 2", "value": 408}, {"description": "RC AUX 3", "value": 409}, {"description": "RC AUX 4", "value": 410}, {"description": "RC AUX 5", "value": 411}, {"description": "RC AUX 6", "value": 412}, {"description": "Gimbal Roll", "value": 420}, {"description": "Gimbal Pitch", "value": 421}, {"description": "Gimbal Yaw", "value": 422}, {"description": "Gripper", "value": 430}, {"description": "Landing Gear Wheel", "value": 440}, {"description": "IC Engine Ignition", "value": 450}, {"description": "IC Engine Throttle", "value": 451}, {"description": "IC Engine Choke", "value": 452}, {"description": "IC Engine Starter", "value": 453}]}, {"bitmask": [{"description": "SIM Channel 1", "index": 0}, {"description": "SIM Channel 2", "index": 1}, {"description": "SIM Channel 3", "index": 2}, {"description": "SIM Channel 4", "index": 3}, {"description": "SIM Channel 5", "index": 4}, {"description": "SIM Channel 6", "index": 5}, {"description": "SIM Channel 7", "index": 6}, {"description": "SIM Channel 8", "index": 7}, {"description": "SIM Channel 9", "index": 8}, {"description": "SIM Channel 10", "index": 9}, {"description": "SIM Channel 11", "index": 10}, {"description": "SIM Channel 12", "index": 11}, {"description": "SIM Channel 13", "index": 12}, {"description": "SIM Channel 14", "index": 13}, {"description": "SIM Channel 15", "index": 14}, {"description": "SIM Channel 16", "index": 15}], "category": "Standard", "default": 0, "group": "Actuator Outputs", "longDesc": "Allows to reverse the output range for each channel.\nNote: this is only useful for servos.", "max": 65535, "min": 0, "name": "PWM_MAIN_REV", "shortDesc": "Reverse Output Range for SIM", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "Airspeed Validator", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "max": 5, "min": 1, "name": "ASPD_BETA_GATE", "shortDesc": "Gate size for sideslip angle fusion", "type": "Int32", "units": "SD"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.15, "group": "Airspeed Validator", "longDesc": "Sideslip measurement noise of the internal wind estimator(s) of the airspeed selector.", "max": 1.0, "min": 0.0, "name": "ASPD_BETA_NOISE", "shortDesc": "Wind estimator sideslip measurement noise", "type": "Float", "units": "rad"}, {"bitmask": [{"description": "Only data missing check (triggers if more than 1s no data)", "index": 0}, {"description": "Data stuck (triggers if data is exactly constant for 2s in FW mode)", "index": 1}, {"description": "Innovation check (see ASPD_FS_INNOV)", "index": 2}, {"description": "Load factor check (triggers if measurement is below stall speed)", "index": 3}, {"description": "First principle check (airspeed change vs. throttle and pitch)", "index": 4}], "category": "Standard", "default": 7, "group": "Airspeed Validator", "longDesc": "Controls which checks are run to check airspeed data for validity. Only applied if ASPD_PRIMARY > 0.\nNote: The missing data check (bit 0) is implicitly always enabled when ASPD_DO_CHECKS > 0, even if bit 0 is not explicitly set.", "max": 31, "min": 0, "name": "ASPD_DO_CHECKS", "shortDesc": "Enable checks on airspeed sensors", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Airspeed Validator", "name": "ASPD_FALLBACK", "shortDesc": "Fallback options", "type": "Int32", "values": [{"description": "Fallback only to other airspeed sensors", "value": 0}, {"description": "Fallback to groundspeed-minus-windspeed airspeed estimation", "value": 1}, {"description": "Fallback to thrust based airspeed estimation", "value": 2}]}, {"category": "Standard", "decimalPlaces": 1, "default": 2.0, "group": "Airspeed Validator", "longDesc": "Window for comparing airspeed change to throttle and pitch change.\nTriggers when the airspeed change within this window is negative while throttle increases\nand the vehicle pitches down.\nIs meant to catch degrading airspeed blockages as can happen when flying through icing conditions.\nRelies on FW_THR_TRIM being set accurately.", "min": 0.0, "name": "ASPD_FP_T_WINDOW", "shortDesc": "First principle airspeed check time window", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Airspeed Validator", "longDesc": "This specifies the minimum airspeed innovation required to trigger a failsafe. Larger values make the check less sensitive,\nsmaller values make it more sensitive. Large innovations indicate an inconsistency between predicted (groundspeed - windspeeed)\nand measured airspeed.\nThe time required to detect a fault when the threshold is exceeded depends on the size of the exceedance and is controlled by the ASPD_FS_INTEG parameter.", "max": 10.0, "min": 0.5, "name": "ASPD_FS_INNOV", "shortDesc": "Airspeed failure innovation threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Airspeed Validator", "longDesc": "This sets the time integral of airspeed innovation exceedance above ASPD_FS_INNOV required to trigger a failsafe.\nLarger values make the check less sensitive, smaller positive values make it more sensitive.", "max": 50.0, "min": 0.0, "name": "ASPD_FS_INTEG", "shortDesc": "Airspeed failure innovation integral threshold", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Airspeed Validator", "longDesc": "Delay before switching back to using airspeed sensor if checks indicate sensor is good.\nSet to a negative value to disable the re-enabling in flight.", "min": -1.0, "name": "ASPD_FS_T_START", "shortDesc": "Airspeed failsafe start delay", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Airspeed Validator", "longDesc": "Delay before stopping use of airspeed sensor if checks indicate sensor is bad.", "min": 0.0, "name": "ASPD_FS_T_STOP", "shortDesc": "Airspeed failsafe stop delay", "type": "Float", "units": "s"}, {"category": "Standard", "default": 1, "group": "Airspeed Validator", "name": "ASPD_PRIMARY", "rebootRequired": true, "shortDesc": "Index or primary airspeed measurement source", "type": "Int32", "values": [{"description": "Groundspeed minus windspeed", "value": 0}, {"description": "First airspeed sensor", "value": 1}, {"description": "Second airspeed sensor", "value": 2}, {"description": "Third airspeed sensor", "value": 3}, {"description": "Thrust based airspeed", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Airspeed Validator", "longDesc": "This is the scale IAS --> CAS of the first airspeed sensor instance", "max": 2.0, "min": 0.5, "name": "ASPD_SCALE_1", "shortDesc": "Scale of airspeed sensor 1", "type": "Float", "volatile": true}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Airspeed Validator", "longDesc": "This is the scale IAS --> CAS of the second airspeed sensor instance", "max": 2.0, "min": 0.5, "name": "ASPD_SCALE_2", "shortDesc": "Scale of airspeed sensor 2", "type": "Float", "volatile": true}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Airspeed Validator", "longDesc": "This is the scale IAS --> CAS of the third airspeed sensor instance", "max": 2.0, "min": 0.5, "name": "ASPD_SCALE_3", "shortDesc": "Scale of airspeed sensor 3", "type": "Float", "volatile": true}, {"category": "Standard", "default": 2, "group": "Airspeed Validator", "name": "ASPD_SCALE_APPLY", "shortDesc": "Controls when to apply the new estimated airspeed scale(s)", "type": "Int32", "values": [{"description": "Do not automatically apply the estimated scale", "value": 0}, {"description": "Apply the estimated scale after disarm", "value": 1}, {"description": "Apply the estimated scale in air", "value": 2}]}, {"category": "Standard", "decimalPlaces": 5, "default": 0.0001, "group": "Airspeed Validator", "longDesc": "Airspeed scale process noise of the internal wind estimator(s) of the airspeed selector.\nWhen unaided, the scale uncertainty (1-sigma, unitless) increases by this amount every second.", "max": 0.1, "min": 0.0, "name": "ASPD_SCALE_NSD", "shortDesc": "Wind estimator true airspeed scale process noise spectral density", "type": "Float", "units": "1/s/sqrt(Hz)"}, {"category": "Standard", "default": 4, "group": "Airspeed Validator", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "max": 5, "min": 1, "name": "ASPD_TAS_GATE", "shortDesc": "Gate size for true airspeed fusion", "type": "Int32", "units": "SD"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.4, "group": "Airspeed Validator", "longDesc": "True airspeed measurement noise of the internal wind estimator(s) of the airspeed selector.", "max": 4.0, "min": 0.0, "name": "ASPD_TAS_NOISE", "shortDesc": "Wind estimator true airspeed measurement noise", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "Airspeed Validator", "longDesc": "The airspeed alternative derived from groundspeed and heading will be declared valid\nas soon and as long the horizontal wind uncertainty is below this value.", "max": 5.0, "min": 0.01, "name": "ASPD_WERR_THR", "shortDesc": "Horizontal wind uncertainty threshold for valid ground-minus-wind", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Airspeed Validator", "longDesc": "Wind process noise of the internal wind estimator(s) of the airspeed selector.\nWhen unaided, the wind estimate uncertainty (1-sigma, in m/s) increases by this amount every second.", "max": 1.0, "min": 0.0, "name": "ASPD_WIND_NSD", "shortDesc": "Wind estimator wind process noise spectral density", "type": "Float", "units": "m/s^2/sqrt(Hz)"}, {"category": "Standard", "default": 0, "group": "Attitude Q estimator", "name": "ATT_ACC_COMP", "shortDesc": "Acceleration compensation based on GPS velocity", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Attitude Q estimator", "max": 2.0, "min": 0.0, "name": "ATT_BIAS_MAX", "shortDesc": "Gyro bias limit", "type": "Float", "units": "rad/s"}, {"category": "Standard", "default": 0, "group": "Attitude Q estimator", "longDesc": "Enable standalone quaternion based attitude estimator.", "name": "ATT_EN", "shortDesc": "standalone attitude estimator enable (unsupported)", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Attitude Q estimator", "longDesc": "Set to 1 to use heading estimate from vision.\nSet to 2 to use heading from motion capture.", "max": 2, "min": 0, "name": "ATT_EXT_HDG_M", "shortDesc": "External heading usage mode (from Motion capture/Vision)", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Vision", "value": 1}, {"description": "Motion Capture", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Attitude Q estimator", "longDesc": "This parameter is not used in normal operation,\nas the declination is looked up based on the\nGPS coordinates of the vehicle.", "name": "ATT_MAG_DECL", "shortDesc": "Magnetic declination, in degrees", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 1, "group": "Attitude Q estimator", "name": "ATT_MAG_DECL_A", "shortDesc": "Automatic GPS based declination compensation", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Attitude Q estimator", "max": 1.0, "min": 0.0, "name": "ATT_W_ACC", "shortDesc": "Complimentary filter accelerometer weight", "type": "Float"}, {"category": "Standard", "default": 0.1, "group": "Attitude Q estimator", "max": 1.0, "min": 0.0, "name": "ATT_W_EXT_HDG", "shortDesc": "Complimentary filter external heading weight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Attitude Q estimator", "max": 1.0, "min": 0.0, "name": "ATT_W_GYRO_BIAS", "shortDesc": "Complimentary filter gyroscope bias weight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Attitude Q estimator", "longDesc": "Set to 0 to avoid using the magnetometer.", "max": 1.0, "min": 0.0, "name": "ATT_W_MAG", "shortDesc": "Complimentary filter magnetometer weight", "type": "Float"}, {"category": "Standard", "default": 2, "group": "Autotune", "longDesc": "After the auto-tuning sequence is completed,\na new set of gains is available and can be applied\nimmediately or after landing.", "name": "FW_AT_APPLY", "shortDesc": "Controls when to apply the new gains", "type": "Int32", "values": [{"description": "Do not apply the new gains (logging only)", "value": 0}, {"description": "Apply the new gains after disarm", "value": 1}, {"description": "Apply the new gains in air", "value": 2}]}, {"bitmask": [{"description": "roll", "index": 0}, {"description": "pitch", "index": 1}, {"description": "yaw", "index": 2}], "category": "Standard", "default": 3, "group": "Autotune", "longDesc": "Defines which axes will be tuned during the auto-tuning sequence\nSet bits in the following positions to enable:\n0 : Roll\n1 : Pitch\n2 : Yaw", "max": 7, "min": 1, "name": "FW_AT_AXES", "shortDesc": "Tuning axes selection", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Autotune", "longDesc": "Defines which RC_MAP_AUXn parameter maps the manual control channel used to enable/disable auto tuning.", "max": 6, "min": 0, "name": "FW_AT_MAN_AUX", "shortDesc": "Enable/disable auto tuning using a manual control AUX input", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "Aux1", "value": 1}, {"description": "Aux2", "value": 2}, {"description": "Aux3", "value": 3}, {"description": "Aux4", "value": 4}, {"description": "Aux5", "value": 5}, {"description": "Aux6", "value": 6}]}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Autotune", "longDesc": "Can be set lower or higher than the end frequency", "max": 30.0, "min": 0.1, "name": "FW_AT_SYSID_F0", "shortDesc": "Start frequency of the injected signal", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Autotune", "longDesc": "Can be set lower or higher than the start frequency", "max": 30.0, "min": 0.1, "name": "FW_AT_SYSID_F1", "shortDesc": "End frequency of the injected signal", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 0, "default": 10.0, "group": "Autotune", "longDesc": "Duration of the input signal sent on each axis during system identification", "max": 120.0, "min": 5.0, "name": "FW_AT_SYSID_TIME", "shortDesc": "Maneuver time for each axis", "type": "Float", "units": "s"}, {"category": "Standard", "default": 1, "group": "Autotune", "longDesc": "Type of signal used during system identification to excite the system.", "name": "FW_AT_SYSID_TYPE", "shortDesc": "Input signal type", "type": "Int32", "values": [{"description": "Step", "value": 0}, {"description": "Linear sine sweep", "value": 1}, {"description": "Logarithmic sine sweep", "value": 2}]}, {"category": "Standard", "default": 1, "group": "Autotune", "longDesc": "After the auto-tuning sequence is completed,\na new set of gains is available and can be applied\nimmediately or after landing.\nWARNING Applying the gains in air is dangerous as there is no\nguarantee that those new gains will be able to stabilize\nthe drone properly.", "name": "MC_AT_APPLY", "shortDesc": "Controls when to apply the new gains", "type": "Int32", "values": [{"description": "Do not apply the new gains (logging only)", "value": 0}, {"description": "Apply the new gains after disarm", "value": 1}, {"description": "WARNING Apply the new gains in air", "value": 2}]}, {"category": "Standard", "default": 0, "group": "Autotune", "name": "MC_AT_EN", "shortDesc": "Multicopter autotune module enable", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.14, "group": "Autotune", "max": 0.5, "min": 0.01, "name": "MC_AT_RISE_TIME", "shortDesc": "Desired angular rate closed-loop rise time", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.7, "group": "Autotune", "max": 6.0, "min": 0.1, "name": "MC_AT_SYSID_AMP", "shortDesc": "Amplitude of the injected signal", "type": "Float"}, {"category": "Standard", "decimalPlaces": 0, "default": -1.0, "group": "Battery Calibration", "increment": 50.0, "longDesc": "Defines the capacity of battery 1 in mAh.", "max": 100000.0, "min": -1.0, "name": "BAT1_CAPACITY", "rebootRequired": true, "shortDesc": "Battery 1 capacity", "type": "Float", "units": "mAh"}, {"category": "Standard", "default": 0, "group": "Battery Calibration", "longDesc": "Defines the number of cells the attached battery consists of.", "name": "BAT1_N_CELLS", "shortDesc": "Number of cells for battery 1", "type": "Int32", "values": [{"description": "Unknown", "value": 0}, {"description": "1S Battery", "value": 1}, {"description": "2S Battery", "value": 2}, {"description": "3S Battery", "value": 3}, {"description": "4S Battery", "value": 4}, {"description": "5S Battery", "value": 5}, {"description": "6S Battery", "value": 6}, {"description": "7S Battery", "value": 7}, {"description": "8S Battery", "value": 8}, {"description": "9S Battery", "value": 9}, {"description": "10S Battery", "value": 10}, {"description": "11S Battery", "value": 11}, {"description": "12S Battery", "value": 12}, {"description": "13S Battery", "value": 13}, {"description": "14S Battery", "value": 14}, {"description": "15S Battery", "value": 15}, {"description": "16S Battery", "value": 16}]}, {"category": "Standard", "decimalPlaces": 4, "default": -1.0, "group": "Battery Calibration", "increment": 0.0005, "longDesc": "If non-negative, then this will be used instead of the online estimated internal resistance.", "max": 0.2, "min": -1.0, "name": "BAT1_R_INTERNAL", "rebootRequired": true, "shortDesc": "Explicitly defines the per cell internal resistance for battery 1", "type": "Float", "units": "Ohm"}, {"category": "Standard", "default": 0, "group": "Battery Calibration", "longDesc": "This parameter controls the source of battery data. The value 'Power Module / Analog'\nmeans that measurements are expected to come from either analog (ADC) inputs\nor an I2C power monitor (e.g. INA226). Analog inputs are voltage and current\nmeasurements read from the board's ADC channels, typically from an onboard\nvoltage divider and current shunt, or an external analog power module.\nI2C power monitors are digital sensors on the I2C bus.\nIf the value is set to 'External' then the system expects to receive MAVLink\nor CAN battery status messages, or the battery data is published by an external driver.\nIf the value is set to 'ESCs', the battery information are taken from the esc_status message.\nThis requires the ESC to provide both voltage as well as current (via ESC telemetry).", "name": "BAT1_SOURCE", "rebootRequired": true, "shortDesc": "Battery 1 monitoring source", "type": "Int32", "values": [{"description": "Disabled", "value": -1}, {"description": "Power Module / Analog", "value": 0}, {"description": "External", "value": 1}, {"description": "ESCs", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 4.05, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Defines the voltage where a single cell of the battery is considered full.\nFor a more accurate estimate set this below the nominal voltage of e.g. 4.2V", "name": "BAT1_V_CHARGED", "rebootRequired": true, "shortDesc": "Full cell voltage", "type": "Float", "units": "V"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.6, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Defines the voltage where a single cell of the battery is considered empty.\nThe voltage should be chosen above the steep dropoff at 3.5V. A typical\nlithium battery can only be discharged under high load down to 10% before\nit drops off to a voltage level damaging the cells.", "name": "BAT1_V_EMPTY", "rebootRequired": true, "shortDesc": "Empty cell voltage", "type": "Float", "units": "V"}, {"category": "Standard", "decimalPlaces": 0, "default": -1.0, "group": "Battery Calibration", "increment": 50.0, "longDesc": "Defines the capacity of battery 2 in mAh.", "max": 100000.0, "min": -1.0, "name": "BAT2_CAPACITY", "rebootRequired": true, "shortDesc": "Battery 2 capacity", "type": "Float", "units": "mAh"}, {"category": "Standard", "default": 0, "group": "Battery Calibration", "longDesc": "Defines the number of cells the attached battery consists of.", "name": "BAT2_N_CELLS", "shortDesc": "Number of cells for battery 2", "type": "Int32", "values": [{"description": "Unknown", "value": 0}, {"description": "1S Battery", "value": 1}, {"description": "2S Battery", "value": 2}, {"description": "3S Battery", "value": 3}, {"description": "4S Battery", "value": 4}, {"description": "5S Battery", "value": 5}, {"description": "6S Battery", "value": 6}, {"description": "7S Battery", "value": 7}, {"description": "8S Battery", "value": 8}, {"description": "9S Battery", "value": 9}, {"description": "10S Battery", "value": 10}, {"description": "11S Battery", "value": 11}, {"description": "12S Battery", "value": 12}, {"description": "13S Battery", "value": 13}, {"description": "14S Battery", "value": 14}, {"description": "15S Battery", "value": 15}, {"description": "16S Battery", "value": 16}]}, {"category": "Standard", "decimalPlaces": 4, "default": -1.0, "group": "Battery Calibration", "increment": 0.0005, "longDesc": "If non-negative, then this will be used instead of the online estimated internal resistance.", "max": 0.2, "min": -1.0, "name": "BAT2_R_INTERNAL", "rebootRequired": true, "shortDesc": "Explicitly defines the per cell internal resistance for battery 2", "type": "Float", "units": "Ohm"}, {"category": "Standard", "default": -1, "group": "Battery Calibration", "longDesc": "This parameter controls the source of battery data. The value 'Power Module / Analog'\nmeans that measurements are expected to come from either analog (ADC) inputs\nor an I2C power monitor (e.g. INA226). Analog inputs are voltage and current\nmeasurements read from the board's ADC channels, typically from an onboard\nvoltage divider and current shunt, or an external analog power module.\nI2C power monitors are digital sensors on the I2C bus.\nIf the value is set to 'External' then the system expects to receive MAVLink\nor CAN battery status messages, or the battery data is published by an external driver.\nIf the value is set to 'ESCs', the battery information are taken from the esc_status message.\nThis requires the ESC to provide both voltage as well as current (via ESC telemetry).", "name": "BAT2_SOURCE", "rebootRequired": true, "shortDesc": "Battery 2 monitoring source", "type": "Int32", "values": [{"description": "Disabled", "value": -1}, {"description": "Power Module / Analog", "value": 0}, {"description": "External", "value": 1}, {"description": "ESCs", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 4.05, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Defines the voltage where a single cell of the battery is considered full.\nFor a more accurate estimate set this below the nominal voltage of e.g. 4.2V", "name": "BAT2_V_CHARGED", "rebootRequired": true, "shortDesc": "Full cell voltage", "type": "Float", "units": "V"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.6, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Defines the voltage where a single cell of the battery is considered empty.\nThe voltage should be chosen above the steep dropoff at 3.5V. A typical\nlithium battery can only be discharged under high load down to 10% before\nit drops off to a voltage level damaging the cells.", "name": "BAT2_V_EMPTY", "rebootRequired": true, "shortDesc": "Empty cell voltage", "type": "Float", "units": "V"}, {"category": "Standard", "decimalPlaces": 0, "default": -1.0, "group": "Battery Calibration", "increment": 50.0, "longDesc": "Defines the capacity of battery 3 in mAh.", "max": 100000.0, "min": -1.0, "name": "BAT3_CAPACITY", "rebootRequired": true, "shortDesc": "Battery 3 capacity", "type": "Float", "units": "mAh"}, {"category": "Standard", "default": 0, "group": "Battery Calibration", "longDesc": "Defines the number of cells the attached battery consists of.", "name": "BAT3_N_CELLS", "shortDesc": "Number of cells for battery 3", "type": "Int32", "values": [{"description": "Unknown", "value": 0}, {"description": "1S Battery", "value": 1}, {"description": "2S Battery", "value": 2}, {"description": "3S Battery", "value": 3}, {"description": "4S Battery", "value": 4}, {"description": "5S Battery", "value": 5}, {"description": "6S Battery", "value": 6}, {"description": "7S Battery", "value": 7}, {"description": "8S Battery", "value": 8}, {"description": "9S Battery", "value": 9}, {"description": "10S Battery", "value": 10}, {"description": "11S Battery", "value": 11}, {"description": "12S Battery", "value": 12}, {"description": "13S Battery", "value": 13}, {"description": "14S Battery", "value": 14}, {"description": "15S Battery", "value": 15}, {"description": "16S Battery", "value": 16}]}, {"category": "Standard", "decimalPlaces": 4, "default": -1.0, "group": "Battery Calibration", "increment": 0.0005, "longDesc": "If non-negative, then this will be used instead of the online estimated internal resistance.", "max": 0.2, "min": -1.0, "name": "BAT3_R_INTERNAL", "rebootRequired": true, "shortDesc": "Explicitly defines the per cell internal resistance for battery 3", "type": "Float", "units": "Ohm"}, {"category": "Standard", "default": -1, "group": "Battery Calibration", "longDesc": "This parameter controls the source of battery data. The value 'Power Module / Analog'\nmeans that measurements are expected to come from either analog (ADC) inputs\nor an I2C power monitor (e.g. INA226). Analog inputs are voltage and current\nmeasurements read from the board's ADC channels, typically from an onboard\nvoltage divider and current shunt, or an external analog power module.\nI2C power monitors are digital sensors on the I2C bus.\nIf the value is set to 'External' then the system expects to receive MAVLink\nor CAN battery status messages, or the battery data is published by an external driver.\nIf the value is set to 'ESCs', the battery information are taken from the esc_status message.\nThis requires the ESC to provide both voltage as well as current (via ESC telemetry).", "name": "BAT3_SOURCE", "rebootRequired": true, "shortDesc": "Battery 3 monitoring source", "type": "Int32", "values": [{"description": "Disabled", "value": -1}, {"description": "Power Module / Analog", "value": 0}, {"description": "External", "value": 1}, {"description": "ESCs", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 4.05, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Defines the voltage where a single cell of the battery is considered full.\nFor a more accurate estimate set this below the nominal voltage of e.g. 4.2V", "name": "BAT3_V_CHARGED", "rebootRequired": true, "shortDesc": "Full cell voltage", "type": "Float", "units": "V"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.6, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Defines the voltage where a single cell of the battery is considered empty.\nThe voltage should be chosen above the steep dropoff at 3.5V. A typical\nlithium battery can only be discharged under high load down to 10% before\nit drops off to a voltage level damaging the cells.", "name": "BAT3_V_EMPTY", "rebootRequired": true, "shortDesc": "Empty cell voltage", "type": "Float", "units": "V"}, {"category": "Standard", "decimalPlaces": 2, "default": 15.0, "group": "Battery Calibration", "increment": 0.1, "longDesc": "This value is used to initialize the in-flight average current estimation,\nwhich in turn is used for estimating remaining flight time and RTL triggering.", "max": 500.0, "min": 0.0, "name": "BAT_AVRG_CURRENT", "shortDesc": "Expected battery current in flight", "type": "Float", "units": "A"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.07, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Sets the threshold when the battery will be reported as critically low.\nThis has to be lower than the low threshold. This threshold commonly\nwill trigger RTL.", "max": 0.5, "min": 0.05, "name": "BAT_CRIT_THR", "shortDesc": "Critical threshold", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.05, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Sets the threshold when the battery will be reported as dangerously low.\nThis has to be lower than the critical threshold. This threshold commonly\nwill trigger landing.", "max": 0.5, "min": 0.03, "name": "BAT_EMERGEN_THR", "shortDesc": "Emergency threshold", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.15, "group": "Battery Calibration", "increment": 0.01, "longDesc": "Sets the threshold when the battery will be reported as low.\nThis has to be higher than the critical threshold.", "max": 0.5, "min": 0.12, "name": "BAT_LOW_THR", "shortDesc": "Low threshold", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 1, "default": 40.0, "group": "Camera trigger", "longDesc": "This parameter sets the time the trigger needs to pulled high or low.", "max": 3000.0, "min": 0.1, "name": "TRIG_ACT_TIME", "rebootRequired": true, "shortDesc": "Camera trigger activation time", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 1, "default": 25.0, "group": "Camera trigger", "increment": 1.0, "longDesc": "Sets the distance at which to trigger the camera.", "min": 0.0, "name": "TRIG_DISTANCE", "rebootRequired": true, "shortDesc": "Camera trigger distance", "type": "Float", "units": "m"}, {"category": "Standard", "default": 4, "group": "Camera trigger", "longDesc": "Selects the trigger interface", "name": "TRIG_INTERFACE", "rebootRequired": true, "shortDesc": "Camera trigger Interface", "type": "Int32", "values": [{"description": "GPIO", "value": 1}, {"description": "Seagull MAP2 (over PWM)", "value": 2}, {"description": "MAVLink (Camera Protocol v1)", "value": 3}, {"description": "Generic PWM (IR trigger, servo)", "value": 4}]}, {"category": "Standard", "decimalPlaces": 1, "default": 40.0, "group": "Camera trigger", "longDesc": "This parameter sets the time between two consecutive trigger events", "max": 10000.0, "min": 4.0, "name": "TRIG_INTERVAL", "rebootRequired": true, "shortDesc": "Camera trigger interval", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Camera trigger", "longDesc": "This parameter sets the minimum time between two consecutive trigger events\nthe specific camera setup is supporting.", "max": 10000.0, "min": 1.0, "name": "TRIG_MIN_INTERVA", "rebootRequired": true, "shortDesc": "Minimum camera trigger interval", "type": "Float", "units": "ms"}, {"category": "Standard", "default": 0, "group": "Camera trigger", "max": 4, "min": 0, "name": "TRIG_MODE", "rebootRequired": true, "shortDesc": "Camera trigger mode", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "Time based, on command", "value": 1}, {"description": "Time based, always on", "value": 2}, {"description": "Distance based, always on", "value": 3}, {"description": "Distance based, on command (Survey mode)", "value": 4}]}, {"category": "Standard", "default": 0, "group": "Camera trigger", "longDesc": "This parameter sets the polarity of the trigger (0 = active low, 1 = active high )", "max": 1, "min": 0, "name": "TRIG_POLARITY", "rebootRequired": true, "shortDesc": "Camera trigger polarity", "type": "Int32", "values": [{"description": "Active low", "value": 0}, {"description": "Active high", "value": 1}]}, {"category": "Standard", "default": 1500, "group": "Camera trigger", "max": 2000, "min": 1000, "name": "TRIG_PWM_NEUTRAL", "rebootRequired": true, "shortDesc": "PWM neutral output on trigger pin", "type": "Int32", "units": "us"}, {"category": "Standard", "default": 1900, "group": "Camera trigger", "max": 2000, "min": 1000, "name": "TRIG_PWM_SHOOT", "rebootRequired": true, "shortDesc": "PWM output to trigger shot", "type": "Int32", "units": "us"}, {"category": "Developer", "default": 0, "group": "Circuit Breaker", "longDesc": "Setting this parameter to 782097 will disable the buzzer audio notification.\nSetting this parameter to 782090 will disable the startup tune, while keeping\nall others enabled.", "max": 782097, "min": 0, "name": "CBRK_BUZZER", "rebootRequired": true, "shortDesc": "Circuit breaker for disabling buzzer", "type": "Int32"}, {"category": "Developer", "default": 121212, "group": "Circuit Breaker", "longDesc": "Setting this parameter to 121212 will disable the flight termination action if triggered\nby the FailureDetector logic or if FMU is lost.\nThis circuit breaker does not affect the RC loss, data link loss, geofence,\nand takeoff failure detection safety logic.", "max": 121212, "min": 0, "name": "CBRK_FLIGHTTERM", "rebootRequired": true, "shortDesc": "Circuit breaker for flight termination", "type": "Int32"}, {"category": "Developer", "default": 22027, "group": "Circuit Breaker", "longDesc": "Setting this parameter to 22027 will disable IO safety.\nWARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK", "max": 22027, "min": 0, "name": "CBRK_IO_SAFETY", "shortDesc": "Circuit breaker for IO safety", "type": "Int32"}, {"category": "Developer", "default": 0, "group": "Circuit Breaker", "longDesc": "Setting this parameter to 894281 will disable the power valid\nchecks in the commander.\nWARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK", "max": 894281, "min": 0, "name": "CBRK_SUPPLY_CHK", "shortDesc": "Circuit breaker for power supply check", "type": "Int32"}, {"category": "Developer", "default": 197848, "group": "Circuit Breaker", "longDesc": "Setting this parameter to 197848 will disable the USB connected\nchecks in the commander, setting it to 0 keeps them enabled (recommended).\nWe are generally recommending to not fly with the USB link\nconnected and production vehicles should set this parameter to\nzero to prevent users from flying USB powered. However, for R&D purposes\nit has proven over the years to work just fine.", "max": 197848, "min": 0, "name": "CBRK_USB_CHK", "shortDesc": "Circuit breaker for USB link check", "type": "Int32"}, {"category": "Developer", "default": 0, "group": "Circuit Breaker", "longDesc": "Setting this parameter to 159753 will enable arming in fixed-wing\nmode for VTOLs.\nWARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK", "max": 159753, "min": 0, "name": "CBRK_VTOLARMING", "shortDesc": "Circuit breaker for arming in fixed-wing mode check", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "Note: actuator failure needs to be enabled and configured via FD_ACT_*\nparameters.", "max": 3, "min": 0, "name": "COM_ACT_FAIL_ACT", "shortDesc": "Set the actuator failure failsafe mode", "type": "Int32", "values": [{"description": "Warning only", "value": 0}, {"description": "Hold mode", "value": 1}, {"description": "Land mode", "value": 2}, {"description": "Return mode", "value": 3}, {"description": "Terminate", "value": 4}]}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "Set 0 to prevent accidental use of the vehicle e.g. for safety or maintenance reasons.", "name": "COM_ARMABLE", "shortDesc": "Flag to allow arming", "type": "Int32", "values": [{"description": "Disallow arming", "value": 0}, {"description": "Allow arming", "value": 1}]}, {"category": "Standard", "default": 10, "group": "Commander", "longDesc": "Used if arm authorization is requested by COM_ARM_AUTH_REQ.", "name": "COM_ARM_AUTH_ID", "shortDesc": "Arm authorizer system id", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "Methods:\n- one arm: request authorization and arm when authorization is received\n- two step arm: 1st arm command request an authorization and\n2nd arm command arm the drone if authorized\nUsed if arm authorization is requested by COM_ARM_AUTH_REQ.", "name": "COM_ARM_AUTH_MET", "shortDesc": "Arm authorization method", "type": "Int32", "values": [{"description": "one arm", "value": 0}, {"description": "two step arm", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "By default off. The default allows to arm the vehicle without a arm authorization.", "name": "COM_ARM_AUTH_REQ", "shortDesc": "Require arm authorization to arm", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Commander", "increment": 0.1, "longDesc": "Timeout for authorizer answer.\nUsed if arm authorization is requested by COM_ARM_AUTH_REQ.", "name": "COM_ARM_AUTH_TO", "shortDesc": "Arm authorization timeout", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Commander", "increment": 0.01, "longDesc": "Threshold for battery percentage below arming is prohibited.\nA negative value means BAT_CRIT_THR is the threshold.", "max": 0.9, "min": -1.0, "name": "COM_ARM_BAT_MIN", "shortDesc": "Minimum battery level for arming", "type": "Float", "units": "norm"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "If this parameter is set, the system will check ESC's online status and failures.\nThis param is specific for ESCs reporting status. It shall be used only if ESCs support telemetry.", "name": "COM_ARM_CHK_ESCS", "shortDesc": "Enable checks on ESCs that report telemetry", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "This check detects if there are hardfault files present on the\nSD card. If so, and the parameter is enabled, arming is prevented.", "name": "COM_ARM_HFLT_CHK", "shortDesc": "Enable FMU SD card hardfault detection check", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.7, "group": "Commander", "increment": 0.05, "max": 1.0, "min": 0.1, "name": "COM_ARM_IMU_ACC", "shortDesc": "Maximum accelerometer inconsistency between IMU units that will allow arming", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.25, "group": "Commander", "increment": 0.01, "max": 0.3, "min": 0.02, "name": "COM_ARM_IMU_GYR", "shortDesc": "Maximum rate gyro inconsistency between IMU units that will allow arming", "type": "Float", "units": "rad/s"}, {"category": "Standard", "default": 60, "group": "Commander", "longDesc": "Set -1 to disable the check.", "max": 180, "min": 3, "name": "COM_ARM_MAG_ANG", "shortDesc": "Maximum magnetic field inconsistency between units that will allow arming", "type": "Int32", "units": "deg"}, {"category": "Standard", "default": 2, "group": "Commander", "longDesc": "Check if the estimator detects a strong magnetic\ndisturbance (check enabled by EKF2_MAG_CHECK)", "name": "COM_ARM_MAG_STR", "shortDesc": "Enable mag strength preflight check", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Deny arming", "value": 1}, {"description": "Warning only", "value": 2}]}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "The default allows to arm the vehicle without a valid mission.", "name": "COM_ARM_MIS_REQ", "shortDesc": "Require valid mission to arm", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "This check detects if the Open Drone ID system is missing.\nDepending on the value of the parameter, the check can be\ndisabled, warn only or deny arming.", "name": "COM_ARM_ODID", "shortDesc": "Enable Drone ID system detection and health check", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Warning only", "value": 1}, {"description": "Enforce Open Drone ID system presence", "value": 2}]}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "This check detects if the FMU SD card is missing.\nDepending on the value of the parameter, the check can be\ndisabled, warn only or deny arming.", "name": "COM_ARM_SDCARD", "shortDesc": "Enable FMU SD card detection check", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Warning only", "value": 1}, {"description": "Enforce SD card presence", "value": 2}]}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "0: Arming/disarming triggers on switch transition.\n1: Arming/disarming triggers when holding the momentary button down like the stick gesture.", "name": "COM_ARM_SWISBTN", "shortDesc": "Arm switch is a momentary button", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "Configures whether arming is allowed without GNSS, for modes that require a global position\n(specifically, in those modes when a check defined by EKF2_GPS_CHECK fails).\nThe settings deny arming and warn, allow arming and warn, or silently allow arming.", "name": "COM_ARM_WO_GPS", "shortDesc": "Arming without GNSS configuration", "type": "Int32", "values": [{"description": "Deny arming", "value": 0}, {"description": "Allow arming (with warning)", "value": 1}, {"description": "Allow arming (no warning)", "value": 2}]}, {"category": "Standard", "default": 95.0, "group": "Commander", "increment": 1.0, "longDesc": "The check fails if the CPU load is above this threshold for 2s.\nA negative value disables the check.", "max": 100.0, "min": -1.0, "name": "COM_CPU_MAX", "shortDesc": "Maximum allowed CPU load to still arm", "type": "Float", "units": "%"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.0, "group": "Commander", "increment": 0.1, "longDesc": "A non-zero, positive value specifies the time-out period in seconds after which the vehicle will be\nautomatically disarmed in case a landing situation has been detected during this period.\nA zero or negative value means that automatic disarming triggered by landing detection is disabled.", "name": "COM_DISARM_LAND", "shortDesc": "Time-out for auto disarm after landing", "type": "Float", "units": "s"}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "0: Disallow disarming when not landed\n1: Allow disarming in multicopter flight in modes where\nthe thrust is directly controlled by thr throttle stick\ne.g. Stabilized, Acro", "name": "COM_DISARM_MAN", "shortDesc": "Allow disarming via switch/stick/button on multicopters in manual thrust modes", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Commander", "increment": 0.1, "longDesc": "A non-zero, positive value specifies the time in seconds, within which the\nvehicle is expected to take off after arming. In case the vehicle didn't takeoff\nwithin the timeout it disarms again.\nA negative value disables autmoatic disarming triggered by a pre-takeoff timeout.", "name": "COM_DISARM_PRFLT", "shortDesc": "Time-out for auto disarm if not taking off", "type": "Float", "units": "s"}, {"bitmask": [{"description": "Mission", "index": 0}, {"description": "Auto modes", "index": 1}, {"description": "Offboard", "index": 2}, {"description": "External Mode", "index": 3}, {"description": "Altitude Cruise", "index": 4}], "category": "Standard", "default": 0, "group": "Commander", "longDesc": "Specify modes in which ground control station connection loss is ignored and no failsafe action is triggered.\nSee also COM_RCL_EXCEPT.", "max": 31, "min": 0, "name": "COM_DLL_EXCEPT", "shortDesc": "Datalink loss exceptions", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 10, "group": "Commander", "increment": 1, "longDesc": "After this amount of seconds without datalink, the GCS connection lost mode triggers", "max": 300, "min": 5, "name": "COM_DL_LOSS_T", "shortDesc": "GCS connection loss time threshold", "type": "Int32", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Commander", "longDesc": "Before entering failsafe (RTL, Land, Hold), wait COM_FAIL_ACT_T seconds in Hold mode\nfor the user to realize.\nDuring that time the user can switch modes, but cannot take over control via the stick override feature (see COM_RC_OVERRIDE).\nAfterwards the configured failsafe action is triggered and the user may use stick override.\nA zero value disables the delay.", "max": 25.0, "min": 0.0, "name": "COM_FAIL_ACT_T", "shortDesc": "Delay between failsafe condition triggered and failsafe reaction", "type": "Float", "units": "s"}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This number is incremented automatically after every flight on\ndisarming in order to remember the next flight UUID.\nThe first flight is 0.", "min": 0, "name": "COM_FLIGHT_UUID", "shortDesc": "Next flight UUID", "type": "Int32", "volatile": true}, {"category": "Standard", "default": -1, "group": "Commander", "longDesc": "If the main switch channel is in this range the\nselected flight mode will be applied.", "name": "COM_FLTMODE1", "shortDesc": "Mode slot 1", "type": "Int32", "values": [{"description": "Unassigned", "value": -1}, {"description": "Manual", "value": 0}, {"description": "Altitude", "value": 1}, {"description": "Position", "value": 2}, {"description": "Mission", "value": 3}, {"description": "Hold", "value": 4}, {"description": "Return", "value": 5}, {"description": "Acro", "value": 6}, {"description": "Offboard", "value": 7}, {"description": "Stabilized", "value": 8}, {"description": "Position Slow", "value": 9}, {"description": "Takeoff", "value": 10}, {"description": "Land", "value": 11}, {"description": "Follow Me", "value": 12}, {"description": "Precision Land", "value": 13}, {"description": "Altitude Cruise", "value": 16}, {"description": "External Mode 1", "value": 100}, {"description": "External Mode 2", "value": 101}, {"description": "External Mode 3", "value": 102}, {"description": "External Mode 4", "value": 103}, {"description": "External Mode 5", "value": 104}, {"description": "External Mode 6", "value": 105}, {"description": "External Mode 7", "value": 106}, {"description": "External Mode 8", "value": 107}]}, {"category": "Standard", "default": -1, "group": "Commander", "longDesc": "If the main switch channel is in this range the\nselected flight mode will be applied.", "name": "COM_FLTMODE2", "shortDesc": "Mode slot 2", "type": "Int32", "values": [{"description": "Unassigned", "value": -1}, {"description": "Manual", "value": 0}, {"description": "Altitude", "value": 1}, {"description": "Position", "value": 2}, {"description": "Mission", "value": 3}, {"description": "Hold", "value": 4}, {"description": "Return", "value": 5}, {"description": "Acro", "value": 6}, {"description": "Offboard", "value": 7}, {"description": "Stabilized", "value": 8}, {"description": "Position Slow", "value": 9}, {"description": "Takeoff", "value": 10}, {"description": "Land", "value": 11}, {"description": "Follow Me", "value": 12}, {"description": "Precision Land", "value": 13}, {"description": "Altitude Cruise", "value": 16}, {"description": "External Mode 1", "value": 100}, {"description": "External Mode 2", "value": 101}, {"description": "External Mode 3", "value": 102}, {"description": "External Mode 4", "value": 103}, {"description": "External Mode 5", "value": 104}, {"description": "External Mode 6", "value": 105}, {"description": "External Mode 7", "value": 106}, {"description": "External Mode 8", "value": 107}]}, {"category": "Standard", "default": -1, "group": "Commander", "longDesc": "If the main switch channel is in this range the\nselected flight mode will be applied.", "name": "COM_FLTMODE3", "shortDesc": "Mode slot 3", "type": "Int32", "values": [{"description": "Unassigned", "value": -1}, {"description": "Manual", "value": 0}, {"description": "Altitude", "value": 1}, {"description": "Position", "value": 2}, {"description": "Mission", "value": 3}, {"description": "Hold", "value": 4}, {"description": "Return", "value": 5}, {"description": "Acro", "value": 6}, {"description": "Offboard", "value": 7}, {"description": "Stabilized", "value": 8}, {"description": "Position Slow", "value": 9}, {"description": "Takeoff", "value": 10}, {"description": "Land", "value": 11}, {"description": "Follow Me", "value": 12}, {"description": "Precision Land", "value": 13}, {"description": "Altitude Cruise", "value": 16}, {"description": "External Mode 1", "value": 100}, {"description": "External Mode 2", "value": 101}, {"description": "External Mode 3", "value": 102}, {"description": "External Mode 4", "value": 103}, {"description": "External Mode 5", "value": 104}, {"description": "External Mode 6", "value": 105}, {"description": "External Mode 7", "value": 106}, {"description": "External Mode 8", "value": 107}]}, {"category": "Standard", "default": -1, "group": "Commander", "longDesc": "If the main switch channel is in this range the\nselected flight mode will be applied.", "name": "COM_FLTMODE4", "shortDesc": "Mode slot 4", "type": "Int32", "values": [{"description": "Unassigned", "value": -1}, {"description": "Manual", "value": 0}, {"description": "Altitude", "value": 1}, {"description": "Position", "value": 2}, {"description": "Mission", "value": 3}, {"description": "Hold", "value": 4}, {"description": "Return", "value": 5}, {"description": "Acro", "value": 6}, {"description": "Offboard", "value": 7}, {"description": "Stabilized", "value": 8}, {"description": "Position Slow", "value": 9}, {"description": "Takeoff", "value": 10}, {"description": "Land", "value": 11}, {"description": "Follow Me", "value": 12}, {"description": "Precision Land", "value": 13}, {"description": "Altitude Cruise", "value": 16}, {"description": "External Mode 1", "value": 100}, {"description": "External Mode 2", "value": 101}, {"description": "External Mode 3", "value": 102}, {"description": "External Mode 4", "value": 103}, {"description": "External Mode 5", "value": 104}, {"description": "External Mode 6", "value": 105}, {"description": "External Mode 7", "value": 106}, {"description": "External Mode 8", "value": 107}]}, {"category": "Standard", "default": -1, "group": "Commander", "longDesc": "If the main switch channel is in this range the\nselected flight mode will be applied.", "name": "COM_FLTMODE5", "shortDesc": "Mode slot 5", "type": "Int32", "values": [{"description": "Unassigned", "value": -1}, {"description": "Manual", "value": 0}, {"description": "Altitude", "value": 1}, {"description": "Position", "value": 2}, {"description": "Mission", "value": 3}, {"description": "Hold", "value": 4}, {"description": "Return", "value": 5}, {"description": "Acro", "value": 6}, {"description": "Offboard", "value": 7}, {"description": "Stabilized", "value": 8}, {"description": "Position Slow", "value": 9}, {"description": "Takeoff", "value": 10}, {"description": "Land", "value": 11}, {"description": "Follow Me", "value": 12}, {"description": "Precision Land", "value": 13}, {"description": "Altitude Cruise", "value": 16}, {"description": "External Mode 1", "value": 100}, {"description": "External Mode 2", "value": 101}, {"description": "External Mode 3", "value": 102}, {"description": "External Mode 4", "value": 103}, {"description": "External Mode 5", "value": 104}, {"description": "External Mode 6", "value": 105}, {"description": "External Mode 7", "value": 106}, {"description": "External Mode 8", "value": 107}]}, {"category": "Standard", "default": -1, "group": "Commander", "longDesc": "If the main switch channel is in this range the\nselected flight mode will be applied.", "name": "COM_FLTMODE6", "shortDesc": "Mode slot 6", "type": "Int32", "values": [{"description": "Unassigned", "value": -1}, {"description": "Manual", "value": 0}, {"description": "Altitude", "value": 1}, {"description": "Position", "value": 2}, {"description": "Mission", "value": 3}, {"description": "Hold", "value": 4}, {"description": "Return", "value": 5}, {"description": "Acro", "value": 6}, {"description": "Offboard", "value": 7}, {"description": "Stabilized", "value": 8}, {"description": "Position Slow", "value": 9}, {"description": "Takeoff", "value": 10}, {"description": "Land", "value": 11}, {"description": "Follow Me", "value": 12}, {"description": "Precision Land", "value": 13}, {"description": "Altitude Cruise", "value": 16}, {"description": "External Mode 1", "value": 100}, {"description": "External Mode 2", "value": 101}, {"description": "External Mode 3", "value": 102}, {"description": "External Mode 4", "value": 103}, {"description": "External Mode 5", "value": 104}, {"description": "External Mode 6", "value": 105}, {"description": "External Mode 7", "value": 106}, {"description": "External Mode 8", "value": 107}]}, {"category": "Standard", "default": 0, "group": "Commander", "increment": 1, "longDesc": "Action the system takes when the remaining flight time is below\nthe estimated time it takes to reach the RTL destination.", "name": "COM_FLTT_LOW_ACT", "shortDesc": "Remaining flight time low failsafe", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Warning", "value": 1}, {"description": "Return", "value": 3}]}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "Describes the intended use of the vehicle.\nCan be used by ground control software or log post processing.\nThis param does not influence the behavior within the firmware. This means for example the control logic is independent of the setting of this param (but depends on other params).", "name": "COM_FLT_PROFILE", "shortDesc": "User Flight Profile", "type": "Int32", "values": [{"description": "Default", "value": 0}, {"description": "Pro User", "value": 100}, {"description": "Flight Tester", "value": 200}, {"description": "Developer", "value": 300}]}, {"category": "Standard", "default": -1, "group": "Commander", "longDesc": "The vehicle aborts the current operation and returns to launch when\nthe time since takeoff is above this value. It is not possible to resume the\nmission or switch to any auto mode other than RTL or Land. Taking over in any manual\nmode is still possible.\nStarting from 90% of the maximum flight time, a warning message will be sent\nevery 1 minute with the remaining time until automatic RTL.\nSet to -1 to disable.", "min": -1, "name": "COM_FLT_TIME_MAX", "shortDesc": "Maximum allowed flight time", "type": "Int32", "units": "s"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "Force safety when the vehicle disarms", "name": "COM_FORCE_SAFETY", "shortDesc": "Enable force safety", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 120, "group": "Commander", "longDesc": "After this amount of seconds without datalink the data link lost mode triggers", "max": 3600, "min": 60, "name": "COM_HLDL_LOSS_T", "shortDesc": "High Latency Datalink loss time threshold", "type": "Int32", "units": "s"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "After a data link loss: after this number of seconds with a healthy datalink the 'datalink loss'\nflag is set back to false", "max": 60, "min": 0, "name": "COM_HLDL_REG_T", "shortDesc": "High Latency Datalink regain time threshold", "type": "Int32", "units": "s"}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "Set home position automatically if possible.\nDuring missions, the latitude/longitude of the home position is locked and will not reset during intermediate landings.\nIt will only update once the mission is complete or landed outside of a mission.\nHowever, the altitude is still being adjusted to correct for GNSS vertical drift in the first 2 minutes after takeoff.", "name": "COM_HOME_EN", "rebootRequired": true, "shortDesc": "Home position enabled", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "If set to true, the autopilot is allowed to set its home position after takeoff\nThe true home position is back-computed if a local position is estimate if available.\nIf no local position is available, home is set to the current position.", "name": "COM_HOME_IN_AIR", "shortDesc": "Allows setting the home position after takeoff", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Commander", "increment": 1, "longDesc": "Action the system takes when an imbalanced propeller is detected by the failure detector.\nSee also FD_IMB_PROP_THR to set the failure threshold.", "name": "COM_IMB_PROP_ACT", "shortDesc": "Imbalanced propeller failsafe mode", "type": "Int32", "values": [{"description": "Disabled", "value": -1}, {"description": "Warning", "value": 0}, {"description": "Return", "value": 1}, {"description": "Land", "value": 2}]}, {"category": "Standard", "default": 5.0, "group": "Commander", "increment": 0.1, "longDesc": "Use RC_MAP_KILL_SW to map a kill switch.", "max": 30.0, "min": 0.0, "name": "COM_KILL_DISARM", "shortDesc": "Timeout value for disarming when kill switch is engaged", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 3, "default": 3.0, "group": "Commander", "longDesc": "A non-zero, positive value specifies the timeframe in seconds within failure detector is allowed to disarm the vehicle\nif attitude exceeds the limits defined in FD_FAIL_P and FD_FAIL_R.\nThe check is not executed for flight modes that do support acrobatic maneuvers, e.g: Acro (MC/FW) and Manual (FW).\nA zero or negative value means that the check is disabled.", "max": 5.0, "min": -1.0, "name": "COM_LKDOWN_TKO", "shortDesc": "Timeout for detecting a failure after takeoff", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "Action the system takes at critical battery. See also BAT_CRIT_THR and BAT_EMERGEN_THR\nfor definition of battery states.", "name": "COM_LOW_BAT_ACT", "shortDesc": "Battery failsafe mode", "type": "Int32", "values": [{"description": "Warning", "value": 0}, {"description": "Land mode", "value": 2}, {"description": "Return at critical level, land at emergency level", "value": 3}]}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE0_HASH", "shortDesc": "External mode identifier 0", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE1_HASH", "shortDesc": "External mode identifier 1", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE2_HASH", "shortDesc": "External mode identifier 2", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE3_HASH", "shortDesc": "External mode identifier 3", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE4_HASH", "shortDesc": "External mode identifier 4", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE5_HASH", "shortDesc": "External mode identifier 5", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE6_HASH", "shortDesc": "External mode identifier 6", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Commander", "longDesc": "This parameter is automatically set to identify external modes. It ensures that modes\nget assigned to the same index independent from their startup order,\nwhich is required when mapping an external mode to an RC switch.", "name": "COM_MODE7_HASH", "shortDesc": "External mode identifier 7", "type": "Int32", "volatile": true}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "By default disabled for safety reasons", "name": "COM_MODE_ARM_CHK", "shortDesc": "Allow external mode registration while armed", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "If set, enables the actuator test interface via MAVLink (ACTUATOR_TEST), that\nallows spinning the motors and moving the servos for testing purposes.", "name": "COM_MOT_TEST_EN", "shortDesc": "Enable Actuator Testing", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 5.0, "group": "Commander", "increment": 0.01, "max": 60.0, "min": 0.0, "name": "COM_OBC_LOSS_T", "shortDesc": "Time-out to wait when onboard computer connection is lost before warning about loss connection", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "The offboard loss failsafe will only be entered after a timeout,\nset by COM_OF_LOSS_T in seconds.", "name": "COM_OBL_RC_ACT", "shortDesc": "Set offboard loss failsafe mode", "type": "Int32", "values": [{"description": "Position mode", "value": 0}, {"description": "Altitude mode", "value": 1}, {"description": "Stabilized", "value": 2}, {"description": "Return mode", "value": 3}, {"description": "Land mode", "value": 4}, {"description": "Hold mode", "value": 5}, {"description": "Terminate", "value": 6}, {"description": "Disarm", "value": 7}]}, {"category": "Standard", "default": 1.0, "group": "Commander", "increment": 0.01, "longDesc": "See COM_OBL_RC_ACT to configure action.", "max": 60.0, "min": 0.0, "name": "COM_OF_LOSS_T", "shortDesc": "Time-out to wait when offboard connection is lost before triggering offboard lost action", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Commander", "name": "COM_PARACHUTE", "shortDesc": "Expect and require a healthy MAVLink parachute system", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Commander", "longDesc": "This is the horizontal position error (EPH) threshold that will trigger a failsafe.\nIf the previous position error was below this threshold, there is an additional\nfactor of 2.5 applied (threshold for invalidation 2.5 times the one for validation).\nOnly used for multicopters and VTOLs in hover mode.\nIndependent from estimator positioning data timeout threshold (see EKF2_NOAID_TOUT).\nSet to -1 to disable.", "max": 400.0, "min": -1.0, "name": "COM_POS_FS_EPH", "shortDesc": "Horizontal position error threshold for hovering systems", "type": "Float", "units": "m"}, {"category": "Standard", "default": 3, "group": "Commander", "increment": 1, "longDesc": "Action the system takes when the estimated position has an accuracy below the specified threshold.\nSee COM_POS_LOW_EPH to set the failsafe threshold.\nThe failsafe action is only executed if the vehicle is in auto mission or auto loiter mode,\notherwise it is only a warning.", "name": "COM_POS_LOW_ACT", "shortDesc": "Low position accuracy action", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Warning", "value": 1}, {"description": "Hold", "value": 2}, {"description": "Return", "value": 3}, {"description": "Terminate", "value": 4}, {"description": "Land", "value": 5}]}, {"category": "Standard", "default": -1.0, "group": "Commander", "longDesc": "This triggers the action specified in COM_POS_LOW_ACT if the estimated position accuracy is below this threshold.\nLocal position has to be still declared valid, which requires some kind of velocity aiding or large dead-reckoning time (EKF2_NOAID_TOUT),\nand a high failsafe threshold (COM_POS_FS_EPH).\nSet to -1 to disable.", "max": 1000.0, "min": -1.0, "name": "COM_POS_LOW_EPH", "shortDesc": "Low position accuracy failsafe threshold", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1, "group": "Commander", "longDesc": "This configures a check to verify the expected number of 5V rail power supplies are present. By default only one is expected.\nNote: CBRK_SUPPLY_CHK disables all power checks including this one.", "max": 4, "min": 0, "name": "COM_POWER_COUNT", "shortDesc": "Required number of redundant power modules", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "Condition to enter the prearmed state, an intermediate state between disarmed and armed\nin which non-throttling actuators are active.", "name": "COM_PREARM_MODE", "shortDesc": "Condition to enter prearmed mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Safety button", "value": 1}, {"description": "Always", "value": 2}]}, {"category": "Standard", "default": 0, "group": "Commander", "name": "COM_QC_ACT", "shortDesc": "Set action after a quadchute", "type": "Int32", "values": [{"description": "Warning only", "value": -1}, {"description": "Return mode", "value": 0}, {"description": "Land mode", "value": 1}, {"description": "Hold mode", "value": 2}]}, {"category": "Standard", "default": 95.0, "group": "Commander", "increment": 1.0, "longDesc": "The check fails if the RAM usage is above this threshold.\nA negative value disables the check.", "max": 100.0, "min": -1.0, "name": "COM_RAM_MAX", "shortDesc": "Maximum allowed RAM usage to pass checks", "type": "Float", "units": "%"}, {"bitmask": [{"description": "Mission", "index": 0}, {"description": "Auto modes", "index": 1}, {"description": "Offboard", "index": 2}, {"description": "External Mode", "index": 3}, {"description": "Altitude Cruise", "index": 4}], "category": "Standard", "default": 0, "group": "Commander", "longDesc": "Specify modes in which stick input is ignored and no failsafe action is triggered.\nExternal modes requiring stick input will still failsafe.\nAuto modes are: Hold, Takeoff, Land, RTL, Descend, Follow Target, Precland, Orbit.", "max": 31, "min": 0, "name": "COM_RCL_EXCEPT", "shortDesc": "Manual control loss exceptions", "type": "Int32"}, {"category": "Standard", "default": 3, "group": "Commander", "longDesc": "Selects stick input selection behavior:\neither a traditional remote control receiver (RC) or a MAVLink joystick (MANUAL_CONTROL message)\nPriority sources are immediately switched to whenever they get valid.\n0 RC only. Requires valid RC calibration.\n1 MAVLink only. RC and related checks are disabled.\n2 Switches only if current source becomes invalid.\n3 Locks to the first valid source until reboot.\n4 Ignores all sources.\n5 RC priority, then MAVLink (lower instance before higher)\n6 MAVLink priority (lower instance before higher), then RC\n7 RC priority, then MAVLink (higher instance before lower)\n8 MAVLink priority (higher instance before lower), then RC", "max": 8, "min": 0, "name": "COM_RC_IN_MODE", "shortDesc": "Manual control input source configuration", "type": "Int32", "values": [{"description": "RC only", "value": 0}, {"description": "MAVLink only", "value": 1}, {"description": "RC or MAVLink with fallback", "value": 2}, {"description": "RC or MAVLink keep first", "value": 3}, {"description": "Disable manual control", "value": 4}, {"description": "Prio: RC > MAVL 1 > MAVL 2", "value": 5}, {"description": "Prio: MAVL 1 > MAVL 2 > RC", "value": 6}, {"description": "Prio: RC > MAVL 2 > MAVL 1", "value": 7}, {"description": "Prio: MAVL 2 > MAVL 1 > RC", "value": 8}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.5, "group": "Commander", "increment": 0.1, "longDesc": "The time in seconds without a new setpoint from RC or Joystick, after which the connection is considered lost.\nThis must be kept short as the vehicle will use the last supplied setpoint until the timeout triggers.\nEnsure the value is not set lower than the update interval of the RC or Joystick.", "max": 35.0, "min": 0.0, "name": "COM_RC_LOSS_T", "shortDesc": "Manual control loss timeout", "type": "Float", "units": "s"}, {"bitmask": [{"description": "Enable override during auto modes (except for in critical battery reaction)", "index": 0}, {"description": "Enable override during offboard mode", "index": 1}], "category": "Standard", "default": 1, "group": "Commander", "longDesc": "When enabled, moving the sticks more than COM_RC_STICK_OV\nimmediately gives control back to the pilot by switching to Position mode and\nif position is unavailable Altitude mode.\nNote: Only has an effect on multicopters, and VTOLs in multicopter mode.", "max": 3, "min": 0, "name": "COM_RC_OVERRIDE", "shortDesc": "Enable manual control stick override", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 0, "default": 30.0, "group": "Commander", "increment": 0.05, "longDesc": "If COM_RC_OVERRIDE is enabled and the joystick input is moved more than this threshold\nthe autopilot the pilot takes over control.", "max": 80.0, "min": 5.0, "name": "COM_RC_STICK_OV", "shortDesc": "Stick override threshold", "type": "Float", "units": "%"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Commander", "increment": 0.1, "longDesc": "The minimal time from arming the motors until moving the vehicle is possible is COM_SPOOLUP_TIME seconds.\nGoal:\n- Motors and propellers spool up to idle speed before getting commanded to spin faster\n- Timeout for ESCs and smart batteries to successfulyy do failure checks\ne.g. for stuck rotors before the vehicle is off the ground", "max": 30.0, "min": 0.0, "name": "COM_SPOOLUP_TIME", "shortDesc": "Enforced delay between arming and further navigation", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "The mode transition after TAKEOFF has completed successfully.", "name": "COM_TAKEOFF_ACT", "shortDesc": "Action after TAKEOFF has been accepted", "type": "Int32", "values": [{"description": "Hold", "value": 0}, {"description": "Mission (if valid)", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "Allows to start the vehicle by throwing it into the air.", "name": "COM_THROW_EN", "shortDesc": "Enable throw-start", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Commander", "increment": 0.1, "longDesc": "When the throw launch is enabled, the drone will only allow motors to spin after this speed\nis exceeded before detecting the freefall. This is a safety feature to ensure the drone does\nnot turn on after accidental drop or a rapid movement before the throw.\nSet to 0 to disable.", "min": 0.0, "name": "COM_THROW_SPEED", "shortDesc": "Minimum speed for the throw start", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Commander", "longDesc": "This is the horizontal velocity error (EVH) threshold that will trigger a failsafe.\nThe default is appropriate for a multicopter. Can be increased for a fixed-wing.\nIf the previous velocity error was below this threshold, there is an additional\nfactor of 2.5 applied (threshold for invalidation 2.5 times the one for validation).", "min": 0.0, "name": "COM_VEL_FS_EVH", "shortDesc": "Horizontal velocity error threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Commander", "increment": 0.1, "longDesc": "Wind speed threshold above which an automatic failsafe action is triggered.\nFailsafe action can be specified with COM_WIND_MAX_ACT.", "min": -1.0, "name": "COM_WIND_MAX", "shortDesc": "High wind speed failsafe threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 0, "group": "Commander", "increment": 1, "longDesc": "Action the system takes when a wind speed above the specified threshold is detected.\nSee COM_WIND_MAX to set the failsafe threshold.\nIf enabled, it is not possible to resume the mission or switch to any auto mode other than\nRTL or Land if this threshold is exceeded. Taking over in any manual\nmode is still possible.", "name": "COM_WIND_MAX_ACT", "shortDesc": "High wind failsafe mode", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Warning", "value": 1}, {"description": "Hold", "value": 2}, {"description": "Return", "value": 3}, {"description": "Terminate", "value": 4}, {"description": "Land", "value": 5}]}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Commander", "increment": 0.1, "longDesc": "A warning is triggered if the currently estimated wind speed is above this value.\nWarning is sent periodically (every 1 minute).\nSet to -1 to disable.", "min": -1.0, "name": "COM_WIND_WARN", "shortDesc": "Wind speed warning threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 0, "group": "Commander", "longDesc": "The GCS connection loss failsafe will only be entered after a timeout,\nset by COM_DL_LOSS_T in seconds. Once the timeout occurs the selected\naction will be executed.", "max": 6, "min": 0, "name": "NAV_DLL_ACT", "shortDesc": "Set GCS connection loss failsafe mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Hold mode", "value": 1}, {"description": "Return mode", "value": 2}, {"description": "Land mode", "value": 3}, {"description": "Terminate", "value": 5}, {"description": "Disarm", "value": 6}]}, {"category": "Standard", "default": 2, "group": "Commander", "longDesc": "The manual control loss failsafe will only be entered after a timeout,\nset by COM_RC_LOSS_T in seconds.", "max": 6, "min": 1, "name": "NAV_RCL_ACT", "shortDesc": "Set manual control loss failsafe mode", "type": "Int32", "values": [{"description": "Hold mode", "value": 1}, {"description": "Return mode", "value": 2}, {"description": "Land mode", "value": 3}, {"description": "Terminate", "value": 5}, {"description": "Disarm", "value": 6}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "EKF2", "max": 0.5, "min": 0.0, "name": "EKF2_ABIAS_INIT", "rebootRequired": true, "shortDesc": "1-sigma IMU accelerometer switch-on bias", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 25.0, "group": "EKF2", "longDesc": "If the magnitude of the IMU accelerometer vector exceeds this value, the EKF accel bias state estimation will be inhibited. This reduces the adverse effect of high manoeuvre accelerations and IMU nonlinerity and scale factor errors on the accel bias estimates.", "max": 200.0, "min": 20.0, "name": "EKF2_ABL_ACCLIM", "shortDesc": "Maximum IMU accel magnitude that allows IMU bias learning", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "EKF2", "longDesc": "If the magnitude of the IMU angular rate vector exceeds this value, the EKF accel bias state estimation will be inhibited. This reduces the adverse effect of rapid rotation rates and associated errors on the accel bias estimates.", "max": 20.0, "min": 2.0, "name": "EKF2_ABL_GYRLIM", "shortDesc": "Maximum IMU gyro angular rate magnitude that allows IMU bias learning", "type": "Float", "units": "rad/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "EKF2", "longDesc": "The ekf accel bias states will be limited to within a range equivalent to +- of this value.", "max": 0.8, "min": 0.0, "name": "EKF2_ABL_LIM", "shortDesc": "Accelerometer bias learning limit", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "EKF2", "longDesc": "The vector magnitude of angular rate and acceleration used to check if learning should be inhibited has a peak hold filter applied to it with an exponential decay. This parameter controls the time constant of the decay.", "max": 1.0, "min": 0.1, "name": "EKF2_ABL_TAU", "shortDesc": "Accel bias learning inhibit time constant", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 6, "default": 0.003, "group": "EKF2", "max": 0.01, "min": 0.0, "name": "EKF2_ACC_B_NOISE", "shortDesc": "Process noise for IMU accelerometer bias prediction", "type": "Float", "units": "m/s^3"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.35, "group": "EKF2", "max": 1.0, "min": 0.01, "name": "EKF2_ACC_NOISE", "shortDesc": "Accelerometer noise for covariance prediction", "type": "Float", "units": "m/s^2"}, {"bitmask": [{"description": "Horizontal position", "index": 0}, {"description": "Vertical position", "index": 1}], "category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Set bits in the following positions to enable: 0 : Horizontal position fusion 1 : Vertical position fusion", "max": 3, "min": 0, "name": "EKF2_AGP_CTRL", "shortDesc": "Aux global position (AGP) sensor aiding", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "EKF2", "max": 300.0, "min": 0.0, "name": "EKF2_AGP_DELAY", "rebootRequired": true, "shortDesc": "Aux global position estimator delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_AGP_GATE", "shortDesc": "Gate size for aux global position fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Automatic: reset on fusion timeout if no other source of position is available Dead-reckoning: reset on fusion timeout if no source of velocity is available", "name": "EKF2_AGP_MODE", "shortDesc": "Fusion reset mode", "type": "Int32", "values": [{"description": "Automatic", "value": 0}, {"description": "Dead-reckoning", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.9, "group": "EKF2", "longDesc": "Used to lower bound or replace the uncertainty included in the message", "min": 0.01, "name": "EKF2_AGP_NOISE", "shortDesc": "Measurement noise for aux global position measurements", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "EKF2", "max": 0.5, "min": 0.0, "name": "EKF2_ANGERR_INIT", "rebootRequired": true, "shortDesc": "1-sigma tilt angle uncertainty after gravity vector alignment", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "EKF2", "longDesc": "Airspeed data is fused for wind estimation if above this threshold. Set to 0 to disable airspeed fusion. For reliable wind estimation both sideslip (see EKF2_FUSE_BETA) and airspeed fusion should be enabled. Only applies to fixed-wing vehicles (or VTOLs in fixed-wing mode).", "min": 0.0, "name": "EKF2_ARSP_THR", "shortDesc": "Airspeed fusion threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "EKF2", "max": 50.0, "min": 5.0, "name": "EKF2_ASPD_MAX", "shortDesc": "Maximum airspeed used for baro static pressure compensation", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 100.0, "group": "EKF2", "max": 300.0, "min": 0.0, "name": "EKF2_ASP_DELAY", "rebootRequired": true, "shortDesc": "Airspeed measurement delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "max": 300.0, "min": 0.0, "name": "EKF2_AVEL_DELAY", "rebootRequired": true, "shortDesc": "Auxiliary Velocity Estimate delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "default": 1, "group": "EKF2", "longDesc": "If this parameter is enabled then the estimator will make use of the barometric height measurements to estimate its height in addition to other height sources (if activated).", "name": "EKF2_BARO_CTRL", "shortDesc": "Barometric sensor height aiding", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "EKF2", "max": 300.0, "min": 0.0, "name": "EKF2_BARO_DELAY", "rebootRequired": true, "shortDesc": "Barometer measurement delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_BARO_GATE", "shortDesc": "Gate size for barometric and GPS height fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.5, "group": "EKF2", "max": 15.0, "min": 0.01, "name": "EKF2_BARO_NOISE", "shortDesc": "Measurement noise for barometric altitude", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 100.0, "group": "EKF2", "longDesc": "This parameter controls the prediction of drag produced by bluff body drag along the forward/reverse axis when flying a multi-copter which enables estimation of wind drift when enabled by the EKF2_DRAG_CTRL parameter. The drag produced by this effect scales with speed squared. The predicted drag from the rotors is specified separately by the EKF2_MCOEF parameter. Set this parameter to zero to turn off the bluff body drag model for this axis.", "max": 200.0, "min": 0.0, "name": "EKF2_BCOEF_X", "shortDesc": "X-axis ballistic coefficient used for multi-rotor wind estimation", "type": "Float", "units": "kg/m^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 100.0, "group": "EKF2", "longDesc": "This parameter controls the prediction of drag produced by bluff body drag along the right/left axis when flying a multi-copter, which enables estimation of wind drift when enabled by the EKF2_DRAG_CTRL parameter. The drag produced by this effect scales with speed squared. The predicted drag from the rotors is specified separately by the EKF2_MCOEF parameter. Set this parameter to zero to turn off the bluff body drag model for this axis.", "max": 200.0, "min": 0.0, "name": "EKF2_BCOEF_Y", "shortDesc": "Y-axis ballistic coefficient used for multi-rotor wind estimation", "type": "Float", "units": "kg/m^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_BETA_GATE", "shortDesc": "Gate size for synthetic sideslip fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "EKF2", "max": 1.0, "min": 0.1, "name": "EKF2_BETA_NOISE", "shortDesc": "Noise for synthetic sideslip fusion", "type": "Float", "units": "m/s"}, {"bitmask": [{"description": "use geo_lookup declination", "index": 0}, {"description": "save EKF2_MAG_DECL on disarm", "index": 1}], "category": "Standard", "default": 3, "group": "EKF2", "longDesc": "Set bits in the following positions to enable functions. 0 : Set to true to use the declination from the geo_lookup library when the GPS position becomes available, set to false to always use the EKF2_MAG_DECL value. 1 : Set to true to save the EKF2_MAG_DECL parameter to the value returned by the EKF when the vehicle disarms.", "max": 3, "min": 0, "name": "EKF2_DECL_TYPE", "rebootRequired": true, "shortDesc": "Integer bitmask controlling handling of magnetic declination", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 200.0, "group": "EKF2", "longDesc": "Defines the delay between the current time and the delayed-time horizon. This value should be at least as large as the largest EKF2_XXX_DELAY parameter.", "max": 1000.0, "min": 0.0, "name": "EKF2_DELAY_MAX", "rebootRequired": true, "shortDesc": "Maximum delay of all the aiding sensors", "type": "Float", "units": "ms"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Activate wind speed estimation using specific-force measurements and a drag model defined by EKF2_BCOEF_[XY] and EKF2_MCOEF. Only use on vehicles that have their thrust aligned with the Z axis and no thrust in the XY plane.", "name": "EKF2_DRAG_CTRL", "shortDesc": "Multirotor wind estimation selection", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 2.5, "group": "EKF2", "longDesc": "Used by the multi-rotor specific drag force model. Increasing this makes the multi-rotor wind estimates adjust more slowly.", "max": 10.0, "min": 0.5, "name": "EKF2_DRAG_NOISE", "shortDesc": "Specific drag force observation noise variance", "type": "Float", "units": "(m/s^2)^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.4, "group": "EKF2", "max": 5.0, "min": 0.5, "name": "EKF2_EAS_NOISE", "shortDesc": "Measurement noise for airspeed fusion", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 1, "group": "EKF2", "name": "EKF2_EN", "shortDesc": "EKF2 enable", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "When enabled, constant position fusion is enabled when the vehicle is landed and armed. This is intended for IC engine warmup (e.g., fuel engines on catapult) to allow mode transitions to auto/takeoff despite vibrations from running engines.", "name": "EKF2_ENGINE_WRM", "shortDesc": "Enable constant position fusion during engine warmup", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "EKF2", "longDesc": "Used to lower bound or replace the uncertainty included in the message", "min": 0.05, "name": "EKF2_EVA_NOISE", "shortDesc": "Measurement noise for vision angle measurements", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_EVP_GATE", "shortDesc": "Gate size for vision position fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "EKF2", "longDesc": "Used to lower bound or replace the uncertainty included in the message", "min": 0.01, "name": "EKF2_EVP_NOISE", "shortDesc": "Measurement noise for vision position measurements", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_EVV_GATE", "shortDesc": "Gate size for vision velocity estimate fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "EKF2", "longDesc": "Used to lower bound or replace the uncertainty included in the message", "min": 0.01, "name": "EKF2_EVV_NOISE", "shortDesc": "Measurement noise for vision velocity measurements", "type": "Float", "units": "m/s"}, {"bitmask": [{"description": "Horizontal position", "index": 0}, {"description": "Vertical position", "index": 1}, {"description": "3D velocity", "index": 2}, {"description": "Yaw", "index": 3}], "category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Set bits in the following positions to enable: 0 : Horizontal position fusion 1 : Vertical position fusion 2 : 3D velocity fusion 3 : Yaw", "max": 15, "min": 0, "name": "EKF2_EV_CTRL", "shortDesc": "External vision (EV) sensor aiding", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "EKF2", "max": 300.0, "min": 0.0, "name": "EKF2_EV_DELAY", "rebootRequired": true, "shortDesc": "Vision Position Estimator delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "If set to 0 (default) the measurement noise is taken from the vision message and the EV noise parameters are used as a lower bound. If set to 1 the observation noise is set from the parameters directly,", "name": "EKF2_EV_NOISE_MD", "shortDesc": "External vision (EV) noise mode", "type": "Int32", "values": [{"description": "EV reported variance (parameter lower bound)", "value": 0}, {"description": "EV noise parameters", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_EV_POS_X", "shortDesc": "X position of VI sensor focal point in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_EV_POS_Y", "shortDesc": "Y position of VI sensor focal point in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_EV_POS_Z", "shortDesc": "Z position of VI sensor focal point in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 0, "group": "EKF2", "longDesc": "External vision will only be started and fused if the quality metric is above this threshold. The quality metric is a completely optional field provided by some VIO systems.", "max": 100, "min": 0, "name": "EKF2_EV_QMIN", "shortDesc": "External vision (EV) minimum quality (optional)", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "For reliable wind estimation both sideslip and airspeed fusion (see EKF2_ARSP_THR) should be enabled. Only applies to vehicles in fixed-wing mode or with airspeed fusion active. Note: side slip fusion is currently not supported for tailsitters.", "name": "EKF2_FUSE_BETA", "shortDesc": "Enable synthetic sideslip fusion", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "EKF2", "max": 0.2, "min": 0.0, "name": "EKF2_GBIAS_INIT", "rebootRequired": true, "shortDesc": "1-sigma IMU gyro switch-on bias", "type": "Float", "units": "rad/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 4.0, "group": "EKF2", "longDesc": "Sets the value of deadzone applied to negative baro innovations. Deadzone is enabled when EKF2_GND_EFF_DZ > 0.", "max": 10.0, "min": 0.0, "name": "EKF2_GND_EFF_DZ", "shortDesc": "Baro deadzone range for height fusion", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.5, "group": "EKF2", "longDesc": "Sets the maximum distance to the ground level where negative baro innovations are expected.", "max": 5.0, "min": 0.0, "name": "EKF2_GND_MAX_HGT", "shortDesc": "Height above ground level for ground effect zone", "type": "Float", "units": "m"}, {"bitmask": [{"description": "Sat count (EKF2_REQ_NSATS)", "index": 0}, {"description": "PDOP (EKF2_REQ_PDOP)", "index": 1}, {"description": "EPH (EKF2_REQ_EPH)", "index": 2}, {"description": "EPV (EKF2_REQ_EPV)", "index": 3}, {"description": "Speed accuracy (EKF2_REQ_SACC)", "index": 4}, {"description": "Horizontal position drift (EKF2_REQ_HDRIFT)", "index": 5}, {"description": "Vertical position drift (EKF2_REQ_VDRIFT)", "index": 6}, {"description": "Horizontal speed offset (EKF2_REQ_HDRIFT)", "index": 7}, {"description": "Vertical speed offset (EKF2_REQ_VDRIFT)", "index": 8}, {"description": "Spoofing", "index": 9}, {"description": "GPS fix type (EKF2_REQ_FIX)", "index": 10}, {"description": "Jamming", "index": 11}], "category": "Standard", "default": 2047, "group": "EKF2", "longDesc": "Each threshold value is defined by the parameter indicated next to the check. Drift and offset checks only run when the vehicle is on ground and stationary.", "max": 4095, "min": 0, "name": "EKF2_GPS_CHECK", "shortDesc": "Integer bitmask controlling GPS checks", "type": "Int32"}, {"bitmask": [{"description": "Lon/lat", "index": 0}, {"description": "Altitude", "index": 1}, {"description": "3D velocity", "index": 2}, {"description": "Dual antenna heading", "index": 3}], "category": "Standard", "default": 7, "group": "EKF2", "longDesc": "Set bits in the following positions to enable: 0 : Longitude and latitude fusion 1 : Altitude fusion 2 : 3D velocity fusion 3 : Dual antenna heading fusion", "max": 15, "min": 0, "name": "EKF2_GPS_CTRL", "shortDesc": "GNSS sensor aiding", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 110.0, "group": "EKF2", "longDesc": "GPS measurement delay relative to IMU measurement if PPS time correction is not available/enabled (PPS_CAP_ENABLE).", "max": 300.0, "min": 0.0, "name": "EKF2_GPS_DELAY", "rebootRequired": true, "shortDesc": "GPS measurement delay relative to IMU measurement", "type": "Float", "units": "ms"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Automatic: reset on fusion timeout if no other source of position is available. Dead-reckoning: reset on fusion timeout if no source of velocity is available.", "name": "EKF2_GPS_MODE", "shortDesc": "Fusion reset mode", "type": "Int32", "values": [{"description": "Automatic", "value": 0}, {"description": "Dead-reckoning", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward (roll) axis with origin relative to vehicle centre of gravity", "name": "EKF2_GPS_POS_X", "shortDesc": "X position of GPS antenna in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Right (pitch) axis with origin relative to vehicle centre of gravity", "name": "EKF2_GPS_POS_Y", "shortDesc": "Y position of GPS antenna in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Down (yaw) axis with origin relative to vehicle centre of gravity", "name": "EKF2_GPS_POS_Z", "shortDesc": "Z position of GPS antenna in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_GPS_P_GATE", "shortDesc": "Gate size for GNSS position fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "EKF2", "max": 10.0, "min": 0.01, "name": "EKF2_GPS_P_NOISE", "shortDesc": "Measurement noise for GNSS position", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_GPS_V_GATE", "shortDesc": "Gate size for GNSS velocity fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "EKF2", "max": 5.0, "min": 0.01, "name": "EKF2_GPS_V_NOISE", "shortDesc": "Measurement noise for GNSS velocity", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "EKF2", "max": 360.0, "min": 0.0, "name": "EKF2_GPS_YAW_OFF", "shortDesc": "Heading/Yaw offset for dual antenna GPS", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "EKF2", "max": 10.0, "min": 0.1, "name": "EKF2_GRAV_NOISE", "shortDesc": "Accelerometer measurement noise for gravity based observations", "type": "Float", "units": "g0"}, {"category": "Standard", "decimalPlaces": 1, "default": 15.0, "group": "EKF2", "longDesc": "If no airspeed measurements are available, the EKF-GSF AHRS calculation will assume this value of true airspeed when compensating for centripetal acceleration during turns. Set to zero to disable centripetal acceleration compensation during fixed wing flight modes.", "max": 100.0, "min": 0.0, "name": "EKF2_GSF_TAS", "shortDesc": "Default value of true airspeed used in EKF-GSF AHRS calculation", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.15, "group": "EKF2", "longDesc": "The ekf gyro bias states will be limited to within a range equivalent to +- of this value.", "max": 0.4, "min": 0.0, "name": "EKF2_GYR_B_LIM", "shortDesc": "Gyro bias learning limit", "type": "Float", "units": "rad/s"}, {"category": "Standard", "decimalPlaces": 6, "default": 0.001, "group": "EKF2", "max": 0.01, "min": 0.0, "name": "EKF2_GYR_B_NOISE", "shortDesc": "Process noise for IMU rate gyro bias prediction", "type": "Float", "units": "rad/s^2"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.015, "group": "EKF2", "max": 0.1, "min": 0.0001, "name": "EKF2_GYR_NOISE", "shortDesc": "Rate gyro noise for covariance prediction", "type": "Float", "units": "rad/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.6, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_HDG_GATE", "shortDesc": "Gate size for heading fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "EKF2", "max": 1.0, "min": 0.01, "name": "EKF2_HEAD_NOISE", "shortDesc": "Measurement noise for magnetic heading fusion", "type": "Float", "units": "rad"}, {"category": "Standard", "default": 1, "group": "EKF2", "longDesc": "When multiple height sources are enabled at the same time, the height estimate will always converge towards the reference height source selected by this parameter. The range sensor and vision options should only be used when for operation over a flat surface as the local NED origin will move up and down with ground level. If GPS is set as reference but altitude fusion is disabled in EKF2_GPS_CTRL, the GPS altitude is still used to initiaize the bias of the other height sensors.", "name": "EKF2_HGT_REF", "rebootRequired": true, "shortDesc": "Determines the reference source of height data used by the EKF", "type": "Int32", "values": [{"description": "Barometric pressure", "value": 0}, {"description": "GPS", "value": 1}, {"description": "Range sensor", "value": 2}, {"description": "Vision", "value": 3}]}, {"bitmask": [{"description": "Gyro Bias", "index": 0}, {"description": "Accel Bias", "index": 1}, {"description": "Gravity vector fusion", "index": 2}], "category": "Standard", "default": 7, "group": "EKF2", "max": 7, "min": 0, "name": "EKF2_IMU_CTRL", "shortDesc": "IMU control", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_IMU_POS_X", "shortDesc": "X position of IMU in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_IMU_POS_Y", "shortDesc": "Y position of IMU in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_IMU_POS_Z", "shortDesc": "Z position of IMU in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1, "group": "EKF2", "name": "EKF2_LOG_VERBOSE", "shortDesc": "Verbose logging", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "EKF2", "longDesc": "The heading is assumed to be observable when the body acceleration is greater than this parameter when a global position/velocity aiding source is active.", "max": 5.0, "min": 0.0, "name": "EKF2_MAG_ACCLIM", "shortDesc": "Horizontal acceleration threshold used for heading observability check", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 6, "default": 0.0001, "group": "EKF2", "max": 0.1, "min": 0.0, "name": "EKF2_MAG_B_NOISE", "shortDesc": "Process noise for body magnetic field prediction", "type": "Float", "units": "gauss/s"}, {"bitmask": [{"description": "Strength (EKF2_MAG_CHK_STR)", "index": 0}, {"description": "Inclination (EKF2_MAG_CHK_INC)", "index": 1}, {"description": "Wait for WMM", "index": 2}], "category": "Standard", "default": 1, "group": "EKF2", "longDesc": "Bitmask to set which check is used to decide whether the magnetometer data is valid. If GNSS data is received, the magnetic field is compared to a World Magnetic Model (WMM), otherwise an average value is used. This check is useful to reject occasional hard iron disturbance. Set bits to 1 to enable checks. Checks enabled by the following bit positions 0 : Magnetic field strength. Set tolerance using EKF2_MAG_CHK_STR 1 : Magnetic field inclination. Set tolerance using EKF2_MAG_CHK_INC 2 : Wait for GNSS to find the theoretical strength and inclination using the WMM", "max": 7, "min": 0, "name": "EKF2_MAG_CHECK", "shortDesc": "Magnetic field strength test selection", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "EKF2", "longDesc": "Maximum allowed deviation from the expected magnetic field inclination to pass the check.", "max": 90.0, "min": 0.0, "name": "EKF2_MAG_CHK_INC", "shortDesc": "Magnetic field inclination check tolerance", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "EKF2", "longDesc": "Maximum allowed deviation from the expected magnetic field strength to pass the check.", "max": 1.0, "min": 0.0, "name": "EKF2_MAG_CHK_STR", "shortDesc": "Magnetic field strength check tolerance", "type": "Float", "units": "gauss"}, {"category": "System", "decimalPlaces": 1, "default": 0.0, "group": "EKF2", "name": "EKF2_MAG_DECL", "shortDesc": "Magnetic declination", "type": "Float", "units": "deg", "volatile": true}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "EKF2", "max": 300.0, "min": 0.0, "name": "EKF2_MAG_DELAY", "rebootRequired": true, "shortDesc": "Magnetometer measurement delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 6, "default": 0.001, "group": "EKF2", "max": 0.1, "min": 0.0, "name": "EKF2_MAG_E_NOISE", "shortDesc": "Process noise for earth magnetic field prediction", "type": "Float", "units": "gauss/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_MAG_GATE", "shortDesc": "Gate size for magnetometer XYZ component fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "EKF2", "max": 1.0, "min": 0.001, "name": "EKF2_MAG_NOISE", "shortDesc": "Measurement noise for magnetometer 3-axis fusion", "type": "Float", "units": "gauss"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Integer controlling the type of magnetometer fusion used - magnetic heading or 3-component vector. The fusion of magnetometer data as a three component vector enables vehicle body fixed hard iron errors to be learned, but requires a stable earth field. If set to 'Automatic' magnetic heading fusion is used when on-ground and 3-axis magnetic field fusion in-flight. If set to 'Magnetic heading' magnetic heading fusion is used at all times. If set to 'None' the magnetometer will not be used under any circumstance. If no external source of yaw is available, it is possible to use post-takeoff horizontal movement combined with GNSS velocity measurements to align the yaw angle. If set to 'Init' the magnetometer is only used to initalize the heading.", "name": "EKF2_MAG_TYPE", "rebootRequired": true, "shortDesc": "Type of magnetometer fusion", "type": "Int32", "values": [{"description": "Automatic", "value": 0}, {"description": "Magnetic heading", "value": 1}, {"description": "None", "value": 5}, {"description": "Init", "value": 6}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.15, "group": "EKF2", "longDesc": "This parameter controls the prediction of drag produced by the propellers when flying a multi-copter, which enables estimation of wind drift when enabled by the EKF2_DRAG_CTRL parameter. The drag produced by this effect scales with speed not speed squared and is produced because some of the air velocity normal to the propeller axis of rotation is lost when passing through the rotor disc. This changes the momentum of the flow which creates a drag reaction force. When comparing un-ducted propellers of the same diameter, the effect is roughly proportional to the area of the propeller blades when viewed side on and changes with propeller selection. Momentum drag is significantly higher for ducted rotors. To account for the drag produced by the body which scales with speed squared, see documentation for the EKF2_BCOEF_X and EKF2_BCOEF_Y parameters. Set this parameter to zero to turn off the momentum drag model for both axis.", "max": 1.0, "min": 0.0, "name": "EKF2_MCOEF", "shortDesc": "Propeller momentum drag coefficient for multi-rotor wind estimation", "type": "Float", "units": "1/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.01, "group": "EKF2", "longDesc": "If the vehicle is on ground, is not moving as determined by the motion test and the range finder is returning invalid or no data, then an assumed range value of EKF2_MIN_RNG will be used by the terrain estimator so that a terrain height estimate is available at the start of flight in situations where the range finder may be inside its minimum measurements distance when on ground.", "min": 0.01, "name": "EKF2_MIN_RNG", "shortDesc": "Expected range finder reading when on ground", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Maximum number of IMUs to use for Multi-EKF. Set 0 to disable. Requires SENS_IMU_MODE 0.", "max": 4, "min": 0, "name": "EKF2_MULTI_IMU", "rebootRequired": true, "shortDesc": "Multi-EKF IMUs", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Maximum number of magnetometers to use for Multi-EKF. Set 0 to disable. Requires SENS_MAG_MODE 0.", "max": 4, "min": 0, "name": "EKF2_MULTI_MAG", "rebootRequired": true, "shortDesc": "Multi-EKF Magnetometers", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "EKF2", "max": 50.0, "min": 0.5, "name": "EKF2_NOAID_NOISE", "shortDesc": "Measurement noise for non-aiding position hold", "type": "Float", "units": "m"}, {"category": "Standard", "default": 5000000, "group": "EKF2", "longDesc": "Maximum lapsed time from last fusion of measurements that constrain velocity drift before the EKF will report the horizontal nav solution as invalid", "max": 10000000, "min": 500000, "name": "EKF2_NOAID_TOUT", "shortDesc": "Maximum inertial dead-reckoning time", "type": "Int32", "units": "us"}, {"category": "Standard", "default": 1, "group": "EKF2", "longDesc": "Enable optical flow fusion.", "name": "EKF2_OF_CTRL", "shortDesc": "Optical flow aiding", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "EKF2", "longDesc": "Assumes measurement is timestamped at trailing edge of integration period", "max": 300.0, "min": 0.0, "name": "EKF2_OF_DELAY", "rebootRequired": true, "shortDesc": "Optical flow measurement delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_OF_GATE", "shortDesc": "Gate size for optical flow fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Auto: use gyro from optical flow message if available, internal gyro otherwise. Internal: always use internal gyro", "name": "EKF2_OF_GYR_SRC", "shortDesc": "Optical flow angular rate compensation source", "type": "Int32", "values": [{"description": "Auto", "value": 0}, {"description": "Internal", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "EKF2", "longDesc": "Measurement noise for the optical flow sensor when it's reported quality metric is at the minimum", "min": 0.05, "name": "EKF2_OF_N_MAX", "shortDesc": "Optical flow maximum noise", "type": "Float", "units": "rad/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.15, "group": "EKF2", "longDesc": "Measurement noise for the optical flow sensor when it's reported quality metric is at the maximum", "min": 0.05, "name": "EKF2_OF_N_MIN", "shortDesc": "Optical flow minimum noise", "type": "Float", "units": "rad/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_OF_POS_X", "shortDesc": "X position of optical flow focal point in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_OF_POS_Y", "shortDesc": "Y position of optical flow focal point in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_OF_POS_Z", "shortDesc": "Z position of optical flow focal point in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1, "group": "EKF2", "longDesc": "Optical Flow data will only be used in air if the sensor reports a quality metric >= EKF2_OF_QMIN", "max": 255, "min": 0, "name": "EKF2_OF_QMIN", "shortDesc": "In air optical flow minimum quality", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Optical Flow data will only be used on the ground if the sensor reports a quality metric >= EKF2_OF_QMIN_GND", "max": 255, "min": 0, "name": "EKF2_OF_QMIN_GND", "shortDesc": "On ground optical flow minimum quality", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "EKF2", "longDesc": "This is the ratio of static pressure error to dynamic pressure generated by a negative wind relative velocity along the X body axis. If the baro height estimate rises during backwards flight, then this will be a negative number.", "max": 0.5, "min": -0.5, "name": "EKF2_PCOEF_XN", "shortDesc": "Static pressure position error coefficient for the negative X axis", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "EKF2", "longDesc": "This is the ratio of static pressure error to dynamic pressure generated by a positive wind relative velocity along the X body axis. If the baro height estimate rises during forward flight, then this will be a negative number.", "max": 0.5, "min": -0.5, "name": "EKF2_PCOEF_XP", "shortDesc": "Static pressure position error coefficient for the positive X axis", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "EKF2", "longDesc": "This is the ratio of static pressure error to dynamic pressure generated by a wind relative velocity along the negative Y (LH) body axis. If the baro height estimate rises during sideways flight to the left, then this will be a negative number.", "max": 0.5, "min": -0.5, "name": "EKF2_PCOEF_YN", "shortDesc": "Pressure position error coefficient for the negative Y axis", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "EKF2", "longDesc": "This is the ratio of static pressure error to dynamic pressure generated by a wind relative velocity along the positive Y (RH) body axis. If the baro height estimate rises during sideways flight to the right, then this will be a negative number.", "max": 0.5, "min": -0.5, "name": "EKF2_PCOEF_YP", "shortDesc": "Pressure position error coefficient for the positive Y axis", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "EKF2", "longDesc": "This is the ratio of static pressure error to dynamic pressure generated by a wind relative velocity along the Z body axis.", "max": 0.5, "min": -0.5, "name": "EKF2_PCOEF_Z", "shortDesc": "Static pressure position error coefficient for the Z axis", "type": "Float"}, {"category": "Standard", "default": 10000, "group": "EKF2", "longDesc": "EKF prediction period in microseconds. This should ideally be an integer multiple of the IMU time delta. Actual filter update will be an integer multiple of IMU update.", "max": 20000, "min": 1000, "name": "EKF2_PREDICT_US", "shortDesc": "EKF prediction period", "type": "Int32", "units": "us"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "EKF2", "max": 100.0, "min": 2.0, "name": "EKF2_REQ_EPH", "shortDesc": "Required EPH to use GPS", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "max": 100.0, "min": 2.0, "name": "EKF2_REQ_EPV", "shortDesc": "Required EPV to use GPS", "type": "Float", "units": "m"}, {"category": "Standard", "default": 3, "group": "EKF2", "longDesc": "Minimum GPS fix type required for GPS usage.", "name": "EKF2_REQ_FIX", "shortDesc": "Required GPS fix", "type": "Int32", "values": [{"description": "No fix required", "value": 0}, {"description": "2D fix", "value": 2}, {"description": "3D fix", "value": 3}, {"description": "RTCM code differential", "value": 4}, {"description": "RTK float", "value": 5}, {"description": "RTK fixed", "value": 6}, {"description": "Extrapolated", "value": 8}]}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "EKF2", "longDesc": "Minimum continuous period without GPS failure required to mark a healthy GPS status. It can be reduced to speed up initialization, but it's recommended to keep this unchanged for a vehicle.", "min": 0.1, "name": "EKF2_REQ_GPS_H", "rebootRequired": true, "shortDesc": "Required GPS health time on startup", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "EKF2", "max": 1.0, "min": 0.1, "name": "EKF2_REQ_HDRIFT", "shortDesc": "Maximum horizontal drift speed to use GPS", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 6, "group": "EKF2", "max": 12, "min": 4, "name": "EKF2_REQ_NSATS", "shortDesc": "Required satellite count to use GPS", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.5, "group": "EKF2", "max": 5.0, "min": 1.5, "name": "EKF2_REQ_PDOP", "shortDesc": "Maximum PDOP to use GPS", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "EKF2", "max": 5.0, "min": 0.5, "name": "EKF2_REQ_SACC", "shortDesc": "Required speed accuracy to use GPS", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "EKF2", "max": 1.5, "min": 0.1, "name": "EKF2_REQ_VDRIFT", "shortDesc": "Maximum vertical drift speed to use GPS", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 5.0, "group": "EKF2", "longDesc": "If the vehicle absolute altitude exceeds this value then the estimator will not fuse range measurements to estimate its height. This only applies when conditional range aid mode is activated (EKF2_RNG_CTRL = 1).", "max": 10.0, "min": 1.0, "name": "EKF2_RNG_A_HMAX", "shortDesc": "Maximum height above ground allowed for conditional range aid mode", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1.0, "group": "EKF2", "longDesc": "If the vehicle horizontal speed exceeds this value then the estimator will not fuse range measurements to estimate its height. This only applies when conditional range aid mode is activated (EKF2_RNG_CTRL = 1).", "max": 2.0, "min": 0.1, "name": "EKF2_RNG_A_VMAX", "shortDesc": "Maximum horizontal velocity allowed for conditional range aid mode", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 1, "group": "EKF2", "longDesc": "WARNING: Range finder measurements are less reliable and can experience unexpected errors. For these reasons, if accurate control of height relative to ground is required, it is recommended to use the MPC_ALT_MODE parameter instead, unless baro errors are severe enough to cause problems with landing and takeoff. If this parameter is enabled then the estimator will make use of the range finder measurements to estimate its height in addition to other height sources (if activated). Range sensor aiding can be enabled (i.e.: always use) or set in \"conditional\" mode. Conditional mode: This enables the range finder to be used during low speed (< EKF2_RNG_A_VMAX) and low altitude (< EKF2_RNG_A_HMAX) operation, eg takeoff and landing, where baro interference from rotor wash is excessive and can corrupt EKF state estimates. It is intended to be used where a vertical takeoff and landing is performed, and horizontal flight does not occur until above EKF2_RNG_A_HMAX.", "name": "EKF2_RNG_CTRL", "shortDesc": "Range sensor height aiding", "type": "Int32", "values": [{"description": "Disable range fusion", "value": 0}, {"description": "Enabled (conditional mode)", "value": 1}, {"description": "Enabled", "value": 2}]}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "max": 300.0, "min": 0.0, "name": "EKF2_RNG_DELAY", "rebootRequired": true, "shortDesc": "Range finder measurement delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "EKF2", "longDesc": "Limit for fog detection. If the range finder measures a distance greater than this value, the measurement is considered to not be blocked by fog or rain. If there's a jump from larger than RNG_FOG to smaller than EKF2_RNG_FOG, the measurement may gets rejected. 0 - disabled", "max": 20.0, "min": 0.0, "name": "EKF2_RNG_FOG", "shortDesc": "Maximum distance at which the range finder could detect fog (m)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_RNG_GATE", "shortDesc": "Gate size for range finder fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "default": 1.0, "group": "EKF2", "longDesc": "To be used, the time derivative of the distance sensor measurements projected on the vertical axis needs to be statistically consistent with the estimated vertical velocity of the drone. Decrease this value to make the filter more robust against range finder faulty data (stuck, reflections, ...). Note: tune the range finder noise parameters (EKF2_RNG_NOISE and EKF2_RNG_SFE) before tuning this gate.", "max": 5.0, "min": 0.1, "name": "EKF2_RNG_K_GATE", "shortDesc": "Gate size used for range finder kinematic consistency check", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "EKF2", "min": 0.01, "name": "EKF2_RNG_NOISE", "shortDesc": "Measurement noise for range finder fusion", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "max": 0.75, "min": -0.75, "name": "EKF2_RNG_PITCH", "shortDesc": "Range sensor pitch offset", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_RNG_POS_X", "shortDesc": "X position of range finder origin in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_RNG_POS_Y", "shortDesc": "Y position of range finder origin in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "EKF2", "longDesc": "Forward axis with origin relative to vehicle centre of gravity", "name": "EKF2_RNG_POS_Z", "shortDesc": "Z position of range finder origin in body frame", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1.0, "group": "EKF2", "longDesc": "Minimum duration during which the reported range finder signal quality needs to be non-zero in order to be declared valid (s)", "max": 5.0, "min": 0.1, "name": "EKF2_RNG_QLTY_T", "shortDesc": "Minumum range validity period", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0.05, "group": "EKF2", "longDesc": "Specifies the increase in range finder noise with range.", "max": 0.2, "min": 0.0, "name": "EKF2_RNG_SFE", "shortDesc": "Range finder range dependent noise scaler", "type": "Float", "units": "m/m"}, {"category": "Standard", "default": 0.2, "group": "EKF2", "longDesc": "EKF2 instances have to be better than the selected by at least this amount before their relative score can be reduced.", "name": "EKF2_SEL_ERR_RED", "shortDesc": "Selector error reduce threshold", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "EKF2", "longDesc": "EKF2 selector acceleration error threshold for comparing accelerometers. Acceleration vector differences larger than this will result in accumulated velocity error.", "name": "EKF2_SEL_IMU_ACC", "shortDesc": "Selector acceleration threshold", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "default": 15.0, "group": "EKF2", "longDesc": "EKF2 selector maximum accumulated angular error threshold for comparing gyros. Accumulated angular error larger than this will result in the sensor being declared faulty.", "name": "EKF2_SEL_IMU_ANG", "shortDesc": "Selector angular threshold", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 7.0, "group": "EKF2", "longDesc": "EKF2 selector angular rate error threshold for comparing gyros. Angular rate vector differences larger than this will result in accumulated angular error.", "name": "EKF2_SEL_IMU_RAT", "shortDesc": "Selector angular rate threshold", "type": "Float", "units": "deg/s"}, {"category": "Standard", "default": 2.0, "group": "EKF2", "longDesc": "EKF2 selector maximum accumulated velocity threshold for comparing accelerometers. Accumulated velocity error larger than this will result in the sensor being declared faulty.", "name": "EKF2_SEL_IMU_VEL", "shortDesc": "Selector angular threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 0, "group": "EKF2", "longDesc": "Use for vehicles where the measured body Z magnetic field is subject to strong magnetic interference. For magnetic heading fusion the magnetometer Z measurement will be replaced by a synthetic value calculated using the knowledge of the 3D magnetic field vector at the location of the drone. Therefore, this parameter will only have an effect if the global position of the drone is known. For 3D mag fusion the magnetometer Z measurement will simply be ignored instead of fusing the synthetic value.", "name": "EKF2_SYNT_MAG_Z", "shortDesc": "Enable synthetic magnetometer Z component measurement", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "longDesc": "Sets the number of standard deviations used by the innovation consistency test.", "min": 1.0, "name": "EKF2_TAS_GATE", "shortDesc": "Gate size for TAS fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.25, "group": "EKF2", "longDesc": "Controls how tightly the output track the EKF states", "max": 1.0, "min": 0.1, "name": "EKF2_TAU_POS", "shortDesc": "Output predictor position time constant", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.25, "group": "EKF2", "max": 1.0, "name": "EKF2_TAU_VEL", "shortDesc": "Time constant of the velocity output prediction and smoothing filter", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "EKF2", "min": 0.0, "name": "EKF2_TERR_GRAD", "shortDesc": "Magnitude of terrain gradient", "type": "Float", "units": "m/m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "EKF2", "min": 0.5, "name": "EKF2_TERR_NOISE", "shortDesc": "Terrain altitude process noise", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 100.0, "group": "EKF2", "max": 299792458.0, "name": "EKF2_VEL_LIM", "shortDesc": "Velocity limit", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "EKF2", "longDesc": "When unaided, the wind estimate uncertainty (1-sigma, in m/s) increases by this amount every second.", "max": 1.0, "min": 0.0, "name": "EKF2_WIND_NSD", "shortDesc": "Process noise spectral density for wind velocity prediction", "type": "Float", "units": "m/s^2/sqrt(Hz)"}, {"category": "Standard", "default": 0, "group": "Events", "longDesc": "Enable/disable event task for RC Loss. When enabled, an alarm tune will be\nplayed via buzzer or ESCs, if supported. The alarm will sound after a disarm,\nif the vehicle was previously armed and only if the vehicle had RC signal at\nsome point. Particularly useful for locating crashed drones without a GPS\nsensor.", "name": "EV_TSK_RC_LOSS", "rebootRequired": true, "shortDesc": "RC Loss Alarm", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Events", "longDesc": "Enable/disable event task for displaying the vehicle status using arm-mounted\nLEDs. When enabled and if the vehicle supports it, LEDs will flash\nindicating various vehicle status changes. Currently PX4 has not implemented\nany specific status events.\n-", "name": "EV_TSK_STAT_DIS", "rebootRequired": true, "shortDesc": "Status Display", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 30.0, "group": "FW Attitude Control", "increment": 0.5, "longDesc": "Applies to both directions in all manual modes with attitude stabilization but without altitude control", "max": 90.0, "min": 0.0, "name": "FW_MAN_P_MAX", "shortDesc": "Maximum manual pitch angle", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 45.0, "group": "FW Attitude Control", "increment": 0.5, "longDesc": "Applies to both directions in all manual modes with attitude stabilization", "max": 90.0, "min": 0.0, "name": "FW_MAN_R_MAX", "shortDesc": "Maximum manual roll angle", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 30.0, "group": "FW Attitude Control", "increment": 0.5, "longDesc": "This is the maximally added yaw rate setpoint from the yaw stick in any attitude controlled flight mode.\nIt is added to the yaw rate setpoint generated by the controller for turn coordination.", "min": 0.0, "name": "FW_MAN_YR_MAX", "shortDesc": "Maximum manually added yaw rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "FW Attitude Control", "increment": 0.5, "longDesc": "An airframe specific offset of the pitch setpoint in degrees, the value is\nadded to the pitch setpoint and should correspond to the pitch at\ntypical cruise speed of the airframe.", "max": 90.0, "min": -90.0, "name": "FW_PSP_OFF", "shortDesc": "Pitch setpoint offset (pitch at level flight)", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 60.0, "group": "FW Attitude Control", "increment": 0.5, "max": 180.0, "min": 0.0, "name": "FW_P_RMAX_NEG", "shortDesc": "Maximum negative / down pitch rate setpoint", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 60.0, "group": "FW Attitude Control", "increment": 0.5, "max": 180.0, "min": 0.0, "name": "FW_P_RMAX_POS", "shortDesc": "Maximum positive / up pitch rate setpoint", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "FW Attitude Control", "increment": 0.05, "longDesc": "This defines the latency between a pitch step input and the achieved setpoint\n(inverse to a P gain). Smaller systems may require smaller values.", "max": 1.0, "min": 0.2, "name": "FW_P_TC", "shortDesc": "Attitude pitch time constant", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 70.0, "group": "FW Attitude Control", "increment": 0.5, "max": 180.0, "min": 0.0, "name": "FW_R_RMAX", "shortDesc": "Maximum roll rate setpoint", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "FW Attitude Control", "increment": 0.05, "longDesc": "This defines the latency between a roll step input and the achieved setpoint\n(inverse to a P gain). Smaller systems may require smaller values.", "max": 1.0, "min": 0.2, "name": "FW_R_TC", "shortDesc": "Attitude Roll Time Constant", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "FW Attitude Control", "increment": 0.05, "max": 10.0, "min": 0.0, "name": "FW_WR_FF", "shortDesc": "Wheel steering rate feed forward", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "FW Attitude Control", "increment": 0.005, "longDesc": "This gain defines how much control response will result out of a steady\nstate error. It trims any constant error.", "max": 10.0, "min": 0.0, "name": "FW_WR_I", "shortDesc": "Wheel steering rate integrator gain", "type": "Float", "units": "%/rad"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "FW Attitude Control", "increment": 0.05, "max": 1.0, "min": 0.0, "name": "FW_WR_IMAX", "shortDesc": "Wheel steering rate integrator limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.5, "group": "FW Attitude Control", "increment": 0.005, "longDesc": "This defines how much the wheel steering input will be commanded depending on the\ncurrent body angular rate error.", "max": 10.0, "min": 0.0, "name": "FW_WR_P", "shortDesc": "Wheel steering rate proportional gain", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "default": 0, "group": "FW Attitude Control", "longDesc": "Only enabled during automatic runway takeoff and landing.\nIn all manual modes the wheel is directly controlled with yaw stick.", "name": "FW_W_EN", "shortDesc": "Enable wheel steering controller", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 30.0, "group": "FW Attitude Control", "increment": 0.5, "longDesc": "This limits the maximum wheel steering rate the controller will output (in degrees per\nsecond).", "max": 90.0, "min": 0.0, "name": "FW_W_RMAX", "shortDesc": "Maximum wheel steering rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 50.0, "group": "FW Attitude Control", "increment": 0.5, "max": 180.0, "min": 0.0, "name": "FW_Y_RMAX", "shortDesc": "Maximum yaw rate setpoint", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "FW Auto Landing", "increment": 0.01, "longDesc": "Sets a fraction of full flaps during landing.\nAlso applies to flaperons if enabled in the mixer/allocation.", "max": 1.0, "min": 0.0, "name": "FW_FLAPS_LND_SCL", "shortDesc": "Flaps setting during landing", "type": "Float", "units": "norm"}, {"bitmask": [{"description": "Abort if terrain is not found (only applies to mission landings)", "index": 0}, {"description": "Abort if terrain times out (after a first successful measurement)", "index": 1}], "category": "Standard", "default": 3, "group": "FW Auto Landing", "longDesc": "Terrain estimation:\nbit 0: Abort if terrain is not found\nbit 1: Abort if terrain times out (after a first successful measurement)\nThe last estimate is always used as ground, whether the last valid measurement or the land waypoint, depending on the\nselected abort criteria, until an abort condition is entered. If FW_LND_USETER == 0, these bits are ignored.\nTODO: Extend automatic abort conditions\ne.g. glide slope tracking error (horizontal and vertical)", "max": 3, "min": 0, "name": "FW_LND_ABORT", "shortDesc": "Bit mask to set the automatic landing abort conditions", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "FW Auto Landing", "increment": 0.1, "longDesc": "The calibrated airspeed setpoint during landing.\nIf set <= 0, landing airspeed = FW_AIRSPD_MIN by default.", "min": -1.0, "name": "FW_LND_AIRSPD", "shortDesc": "Landing airspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "FW Auto Landing", "increment": 0.5, "longDesc": "Typically the desired landing slope angle when landing configuration (flaps, airspeed) is enabled.\nSet this value within the vehicle's performance limits.", "max": 45.0, "min": 1.0, "name": "FW_LND_ANG", "shortDesc": "Maximum landing slope angle", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "FW Auto Landing", "longDesc": "Allows to deploy the landing configuration (flaps, landing airspeed, etc.) already in\nthe loiter-down waypoint before the final approach.\nOtherwise is enabled only in the final approach.", "name": "FW_LND_EARLYCFG", "shortDesc": "Early landing configuration deployment", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.5, "group": "FW Auto Landing", "increment": 0.5, "longDesc": "NOTE: max(FW_LND_FLALT, FW_LND_FL_TIME * |z-velocity|) is taken as the flare altitude", "min": 0.0, "name": "FW_LND_FLALT", "shortDesc": "Landing flare altitude (relative to landing altitude)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 15.0, "group": "FW Auto Landing", "increment": 0.5, "longDesc": "Maximum pitch during landing flare.", "max": 45.0, "min": 0.0, "name": "FW_LND_FL_PMAX", "shortDesc": "Flare, maximum pitch", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.5, "group": "FW Auto Landing", "increment": 0.5, "longDesc": "Minimum pitch during landing flare.", "max": 15.0, "min": -5.0, "name": "FW_LND_FL_PMIN", "shortDesc": "Flare, minimum pitch", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.25, "group": "FW Auto Landing", "increment": 0.1, "longDesc": "TECS will attempt to control the aircraft to this sink rate via pitch angle (throttle killed during flare)", "max": 2.0, "min": 0.0, "name": "FW_LND_FL_SINK", "shortDesc": "Landing flare sink rate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "FW Auto Landing", "increment": 0.1, "longDesc": "Multiplied by the descent rate to calculate a dynamic altitude at which\nto trigger the flare.\nNOTE: max(FW_LND_FLALT, FW_LND_FL_TIME * descent rate) is taken as the flare altitude", "max": 5.0, "min": 0.1, "name": "FW_LND_FL_TIME", "shortDesc": "Landing flare time", "type": "Float", "units": "s"}, {"category": "Standard", "default": 2, "group": "FW Auto Landing", "longDesc": "Approach angle nudging: shifts the touchdown point laterally while keeping the approach entrance point constant\nApproach path nudging: shifts the touchdown point laterally along with the entire approach path\nThis is useful for manually adjusting the landing point in real time when map or GNSS errors cause an offset from the\ndesired landing vector. Nudging is done with yaw stick, constrained to FW_LND_TD_OFF (in meters) and the direction is\nrelative to the vehicle heading (stick deflection to the right = land point moves to the right as seen by the vehicle).", "max": 2, "min": 0, "name": "FW_LND_NUDGE", "shortDesc": "Landing touchdown nudging option", "type": "Int32", "values": [{"description": "Disable nudging", "value": 0}, {"description": "Nudge approach angle", "value": 1}, {"description": "Nudge approach path", "value": 2}]}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "FW Auto Landing", "increment": 1.0, "max": 10.0, "min": 0.0, "name": "FW_LND_TD_OFF", "shortDesc": "Maximum lateral position offset for the touchdown point", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "FW Auto Landing", "increment": 0.1, "longDesc": "This is the time after the start of flaring that we expect the vehicle to touch the runway.\nAt this time, a 0.5s clamp down ramp will engage, constraining the pitch setpoint to RWTO_PSP.\nIf enabled, ensure that RWTO_PSP is configured appropriately for full gear contact on ground roll.\nSet to -1.0 to disable touchdown clamping. E.g. it may not be desirable to clamp on belly landings.\nThe touchdown time will be constrained to be greater than or equal to the flare time (FW_LND_FL_TIME).", "max": 5.0, "min": -1.0, "name": "FW_LND_TD_TIME", "shortDesc": "Landing touchdown time (since flare start)", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "FW Auto Landing", "increment": 0.1, "longDesc": "The TECS altitude time constant (FW_T_ALT_TC) is multiplied by this value.", "max": 1.0, "min": 0.2, "name": "FW_LND_THRTC_SC", "shortDesc": "Altitude time constant factor for landing and low-height flight", "type": "Float", "units": ""}, {"category": "Standard", "default": 1, "group": "FW Auto Landing", "longDesc": "This is critical for detecting when to flare, and should be enabled if possible.\nIf enabled and no measurement is found within a given timeout, the landing waypoint altitude will be used OR the landing\nwill be aborted, depending on the criteria set in FW_LND_ABORT.\nIf disabled, FW_LND_ABORT terrain based criteria are ignored.", "max": 2, "min": 0, "name": "FW_LND_USETER", "shortDesc": "Use terrain estimation during landing", "type": "Int32", "values": [{"description": "Disable the terrain estimate", "value": 0}, {"description": "Use the terrain estimate to trigger the flare (only)", "value": 1}, {"description": "Calculate landing glide slope relative to the terrain estimate", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Auto Landing", "increment": 0.01, "max": 1.0, "min": 0.0, "name": "FW_SPOILERS_LND", "shortDesc": "Spoiler landing setting", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Auto Takeoff", "increment": 0.01, "longDesc": "Sets a fraction of full flaps during take-off.\nAlso applies to flaperons if enabled in the mixer/allocation.", "max": 1.0, "min": 0.0, "name": "FW_FLAPS_TO_SCL", "shortDesc": "Flaps setting during take-off", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.05, "group": "FW Auto Takeoff", "increment": 0.05, "longDesc": "Launch is detected when acceleration in body forward direction is above FW_LAUN_AC_THLD for FW_LAUN_AC_T seconds.", "max": 5.0, "min": 0.0, "name": "FW_LAUN_AC_T", "shortDesc": "Trigger time", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 30.0, "group": "FW Auto Takeoff", "increment": 0.5, "longDesc": "Launch is detected when acceleration in body forward direction is above FW_LAUN_AC_THLD for FW_LAUN_AC_T seconds.", "min": 0.0, "name": "FW_LAUN_AC_THLD", "shortDesc": "Trigger acceleration threshold", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "FW Auto Takeoff", "increment": 0.1, "longDesc": "Locks control surfaces during pre-launch (armed) and until this time since launch has passed.\nOnly affects control surfaces that have corresponding flag set, and not active for runway takeoff.\nSet to 0 to disable any surface locking after arming.", "min": 0.0, "name": "FW_LAUN_CS_LK_DY", "shortDesc": "Control surface launch delay", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "FW Auto Takeoff", "longDesc": "Enables automatic launch detection based on measured acceleration. Use for hand- or catapult-launched vehicles.\nNot compatible with runway takeoff.", "name": "FW_LAUN_DETCN_ON", "shortDesc": "Fixed-wing launch detection", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "FW Auto Takeoff", "increment": 0.5, "longDesc": "Start the motor(s) this amount of seconds after launch is detected.", "max": 10.0, "min": 0.0, "name": "FW_LAUN_MOT_DEL", "shortDesc": "Motor delay", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "FW Auto Takeoff", "increment": 0.1, "longDesc": "The calibrated airspeed setpoint during the takeoff climbout.\nIf set <= 0, FW_AIRSPD_MIN will be set by default.", "min": -1.0, "name": "FW_TKO_AIRSPD", "shortDesc": "Takeoff Airspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "FW Auto Takeoff", "increment": 0.5, "max": 80.0, "min": -5.0, "name": "FW_TKO_PITCH_MIN", "shortDesc": "Minimum pitch during takeoff", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 30, "group": "FW General", "longDesc": "The time the system should do open loop loiter and wait for GPS recovery\nbefore it starts descending. Set to 0 to disable. Roll angle is set to FW_GPSF_R.\nDoes only apply for fixed-wing vehicles or VTOLs with NAV_FORCE_VT set to 0.", "min": 0, "name": "FW_GPSF_LT", "shortDesc": "GPS failure loiter time", "type": "Int32", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 15.0, "group": "FW General", "increment": 0.5, "longDesc": "Roll angle in GPS failure loiter mode.", "max": 60.0, "min": 0.0, "name": "FW_GPSF_R", "shortDesc": "GPS failure fixed roll angle", "type": "Float", "units": "deg"}, {"bitmask": [{"description": "Alternative stick configuration (height rate on throttle stick, airspeed on pitch stick)", "index": 0}, {"description": "Enable airspeed setpoint via sticks in altitude and position flight mode", "index": 1}], "category": "Standard", "default": 2, "group": "FW General", "longDesc": "Applies in manual Position and Altitude flight modes.", "max": 3, "min": 0, "name": "FW_POS_STK_CONF", "shortDesc": "Custom stick configuration", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 30.0, "group": "FW General", "increment": 0.5, "longDesc": "Applies in any altitude controlled flight mode.", "max": 80.0, "min": 0.0, "name": "FW_P_LIM_MAX", "shortDesc": "Maximum pitch angle setpoint", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": -30.0, "group": "FW General", "increment": 0.5, "longDesc": "Applies in any altitude controlled flight mode.", "max": 0.0, "min": -60.0, "name": "FW_P_LIM_MIN", "shortDesc": "Minimum pitch angle setpoint", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 50.0, "group": "FW General", "increment": 0.5, "longDesc": "Applies in any altitude controlled flight mode.", "max": 75.0, "min": 35.0, "name": "FW_R_LIM", "shortDesc": "Maximum roll angle setpoint", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW General", "increment": 0.01, "longDesc": "This is the minimum throttle while on the ground (\"landed\") in auto modes.", "max": 1.0, "min": 0.0, "name": "FW_THR_IDLE", "shortDesc": "Idle throttle", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "FW General", "increment": 0.01, "longDesc": "Applies in any altitude controlled flight mode.\nShould be set accordingly to achieve FW_T_CLMB_MAX.", "max": 1.0, "min": 0.0, "name": "FW_THR_MAX", "shortDesc": "Throttle limit max", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW General", "increment": 0.01, "longDesc": "Applies in any altitude controlled flight mode.\nUsually set to 0 but can be increased to prevent the motor from stopping when\ndescending, which can increase achievable descent rates.", "max": 1.0, "min": 0.0, "name": "FW_THR_MIN", "shortDesc": "Throttle limit min", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.0, "group": "FW General", "increment": 0.01, "longDesc": "In auto modes: default climb rate output by controller to achieve altitude setpoints.\nIn manual modes: maximum climb rate setpoint.", "min": 0.1, "name": "FW_T_CLMB_R_SP", "shortDesc": "Default target climbrate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "FW General", "increment": 0.01, "longDesc": "In auto modes: default sink rate output by controller to achieve altitude setpoints.\nIn manual modes: maximum sink rate setpoint.", "min": 0.1, "name": "FW_T_SINK_R_SP", "shortDesc": "Default target sinkrate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "FW General", "increment": 1.0, "longDesc": "Adjusts the amount of weighting that the pitch control\napplies to speed vs height errors.\n0 -> control height only\n2 -> control speed only (gliders)", "max": 2.0, "min": 0.0, "name": "FW_T_SPDWEIGHT", "shortDesc": "Speed <--> Altitude weight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.5, "group": "FW General", "increment": 1.0, "longDesc": "This is used to constrain a minimum altitude below which we keep wings level to avoid wing tip strike. It's safer\nto give a slight margin here (> 0m)", "min": 0.0, "name": "FW_WING_HEIGHT", "shortDesc": "Height (AGL) of the wings when the aircraft is on the ground", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "FW General", "increment": 0.1, "longDesc": "This is used for limiting the roll setpoint near the ground. (if multiple wings, take the longest span)", "min": 0.1, "name": "FW_WING_SPAN", "shortDesc": "The aircraft's wing span (length from tip to tip)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 0, "default": 90.0, "group": "FW Lateral Control", "increment": 1.0, "longDesc": "Maximum change in roll angle setpoint per second.\nApplied in all Auto modes, plus manual Position & Altitude modes.", "min": 0.0, "name": "FW_PN_R_SLEW_MAX", "shortDesc": "Path navigation roll slew rate limit", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "FW Longitudinal Control", "increment": 0.5, "longDesc": "The controller will increase the commanded airspeed to maintain\nthis minimum groundspeed to the next waypoint.", "max": 40.0, "min": 0.0, "name": "FW_GND_SPD_MIN", "shortDesc": "Minimum groundspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Longitudinal Control", "increment": 0.01, "longDesc": "Maximum slew rate for the commanded throttle", "max": 1.0, "min": 0.0, "name": "FW_THR_SLEW_MAX", "shortDesc": "Throttle max slew rate", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 5.0, "group": "FW Longitudinal Control", "increment": 0.5, "min": 2.0, "name": "FW_T_ALT_TC", "shortDesc": "Altitude error time constant", "type": "Float"}, {"category": "Standard", "decimalPlaces": 0, "default": -1.0, "group": "FW Longitudinal Control", "longDesc": "Minimum altitude error needed to descend with max airspeed and minimal throttle.\nA negative value disables fast descend.", "min": -1.0, "name": "FW_T_F_ALT_ERR", "shortDesc": "Fast descend: minimum altitude error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "FW Longitudinal Control", "increment": 0.05, "max": 1.0, "min": 0.0, "name": "FW_T_HRATE_FF", "shortDesc": "Height rate feed forward", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "FW Longitudinal Control", "increment": 0.05, "longDesc": "Increase it to trim out speed and height offsets faster,\nwith the downside of possible overshoots and oscillations.", "max": 2.0, "min": 0.0, "name": "FW_T_I_GAIN_PIT", "shortDesc": "Integrator gain pitch", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "FW Longitudinal Control", "increment": 0.1, "max": 2.0, "min": 0.0, "name": "FW_T_PTCH_DAMP", "shortDesc": "Pitch damping gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 15.0, "group": "FW Longitudinal Control", "increment": 0.5, "longDesc": "Is used to compensate for the additional drag created by turning.\nIncrease this gain if the aircraft initially loses energy in turns\nand reduce if the aircraft initially gains energy in turns.", "max": 20.0, "min": 0.0, "name": "FW_T_RLL2THR", "shortDesc": "Roll -> Throttle feedforward", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "FW Longitudinal Control", "increment": 0.01, "max": 3.0, "min": 0.5, "name": "FW_T_SEB_R_FF", "shortDesc": "Specific total energy balance rate feedforward gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "FW Longitudinal Control", "increment": 0.5, "max": 15.0, "min": 1.0, "name": "FW_T_SINK_MAX", "shortDesc": "Maximum descent rate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "FW Longitudinal Control", "increment": 0.1, "longDesc": "For the airspeed filter in TECS.", "max": 10.0, "min": 0.01, "name": "FW_T_SPD_DEV_STD", "shortDesc": "Airspeed rate measurement standard deviation", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "FW Longitudinal Control", "increment": 0.1, "longDesc": "This is defining the noise in the airspeed rate for the constant airspeed rate model\nof the TECS airspeed filter.", "max": 10.0, "min": 0.01, "name": "FW_T_SPD_PRC_STD", "shortDesc": "Process noise standard deviation for the airspeed rate", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.07, "group": "FW Longitudinal Control", "increment": 0.1, "longDesc": "For the airspeed filter in TECS.", "max": 10.0, "min": 0.01, "name": "FW_T_SPD_STD", "shortDesc": "Airspeed measurement standard deviation", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "FW Longitudinal Control", "increment": 0.01, "longDesc": "This filter is applied to the specific total energy rate used for throttle damping.", "max": 2.0, "min": 0.0, "name": "FW_T_STE_R_TC", "shortDesc": "Specific total energy rate first order filter time constant", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 5.0, "group": "FW Longitudinal Control", "increment": 0.5, "min": 2.0, "name": "FW_T_TAS_TC", "shortDesc": "True airspeed error time constant", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "FW Longitudinal Control", "increment": 0.01, "longDesc": "This is the damping gain for the throttle demand loop.", "max": 1.0, "min": 0.0, "name": "FW_T_THR_DAMPING", "shortDesc": "Throttle damping factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.02, "group": "FW Longitudinal Control", "increment": 0.005, "longDesc": "Increase it to trim out speed and height offsets faster,\nwith the downside of possible overshoots and oscillations.", "max": 1.0, "min": 0.0, "name": "FW_T_THR_INTEG", "shortDesc": "Integrator gain throttle", "type": "Float"}, {"category": "Standard", "decimalPlaces": 0, "default": -1.0, "group": "FW Longitudinal Control", "increment": 1.0, "longDesc": "Height above ground threshold below which tighter altitude\ntracking gets enabled (see FW_LND_THRTC_SC). Below this height, TECS smoothly\n(1 sec / sec) transitions the altitude tracking time constant from FW_T_ALT_TC\nto FW_LND_THRTC_SC*FW_T_ALT_TC.\n-1 to disable.", "min": -1.0, "name": "FW_T_THR_LOW_HGT", "shortDesc": "Low-height threshold for tighter altitude tracking", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 7.0, "group": "FW Longitudinal Control", "increment": 0.5, "longDesc": "This is the maximum vertical acceleration\neither up or down that the controller will use to correct speed\nor height errors.", "max": 10.0, "min": 1.0, "name": "FW_T_VERT_ACC", "shortDesc": "Maximum vertical acceleration", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Longitudinal Control", "increment": 0.01, "longDesc": "Multiplying this factor with the current absolute wind estimate gives the airspeed offset\nadded to the minimum airspeed setpoint limit. This helps to make the\nsystem more robust against disturbances (turbulence) in high wind.", "min": 0.0, "name": "FW_WIND_ARSP_SC", "shortDesc": "Wind-based airspeed scaling factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.7, "group": "FW NPFG Control", "increment": 0.01, "longDesc": "Damping ratio of NPFG control law.", "max": 1.0, "min": 0.1, "name": "NPFG_DAMPING", "shortDesc": "NPFG damping ratio", "type": "Float"}, {"category": "Standard", "default": 1, "group": "FW NPFG Control", "longDesc": "Avoids limit cycling from a too aggressively tuned period/damping combination.\nIf false, also disables upper bound NPFG_PERIOD_UB.", "name": "NPFG_LB_PERIOD", "shortDesc": "Enable automatic lower bound on the NPFG period", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "FW NPFG Control", "increment": 0.1, "longDesc": "Period of NPFG control law.", "max": 100.0, "min": 1.0, "name": "NPFG_PERIOD", "shortDesc": "NPFG period", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.5, "group": "FW NPFG Control", "increment": 0.1, "longDesc": "Multiplied by period for conservative minimum period bounding (when period lower\nbounding is enabled). 1.0 bounds at marginal stability.", "max": 10.0, "min": 1.0, "name": "NPFG_PERIOD_SF", "shortDesc": "Period safety factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "FW NPFG Control", "increment": 0.05, "longDesc": "Time constant of roll controller command / response, modeled as first order delay.\nUsed to determine lower period bound. Setting zero disables automatic period bounding.", "max": 2.0, "min": 0.0, "name": "NPFG_ROLL_TC", "shortDesc": "Roll time constant", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.32, "group": "FW NPFG Control", "increment": 0.01, "longDesc": "Multiplied by the track error boundary to determine when the aircraft switches\nto the next waypoint and/or path segment. Should be less than 1.", "max": 1.0, "min": 0.1, "name": "NPFG_SW_DST_MLT", "shortDesc": "NPFG switch distance multiplier", "type": "Float"}, {"category": "Standard", "default": 1, "group": "FW NPFG Control", "longDesc": "Adapts period to maintain track keeping in variable winds and path curvature.", "name": "NPFG_UB_PERIOD", "shortDesc": "Enable automatic upper bound on the NPFG period", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "FW Performance", "increment": 0.01, "longDesc": "Factor applied to the minimum and stall airspeed when flaps are fully deployed.", "max": 1.0, "min": 0.5, "name": "FW_AIRSPD_FLP_SC", "shortDesc": "Airspeed scale with full flaps", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "FW Performance", "increment": 0.5, "longDesc": "The maximal airspeed (calibrated airspeed) the user is able to command.", "min": 0.5, "name": "FW_AIRSPD_MAX", "shortDesc": "Maximum Airspeed (CAS)", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "FW Performance", "increment": 0.5, "longDesc": "The minimal airspeed (calibrated airspeed) the user is able to command.\nFurther, if the airspeed falls below this value, the TECS controller will try to\nincrease airspeed more aggressively.\nHas to be set according to the vehicle's stall speed (which should be set in FW_AIRSPD_STALL),\nwith some margin between the stall speed and minimum airspeed.\nThis value corresponds to the desired minimum speed with the default load factor (level flight, default weight),\nand is automatically adpated to the current load factor (calculated from roll setpoint and WEIGHT_GROSS/WEIGHT_BASE).", "min": 0.5, "name": "FW_AIRSPD_MIN", "shortDesc": "Minimum Airspeed (CAS)", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 7.0, "group": "FW Performance", "increment": 0.5, "longDesc": "The stall airspeed (calibrated airspeed) of the vehicle.\nIt is used for airspeed sensor failure detection and for the control\nsurface scaling airspeed limits.", "min": 0.5, "name": "FW_AIRSPD_STALL", "shortDesc": "Stall Airspeed (CAS)", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 15.0, "group": "FW Performance", "increment": 0.5, "longDesc": "The trim CAS (calibrated airspeed) of the vehicle. If an airspeed controller is active,\nthis is the default airspeed setpoint that the controller will try to achieve.\nThis value corresponds to the trim airspeed with the default load factor (level flight, default weight).", "min": 0.5, "name": "FW_AIRSPD_TRIM", "shortDesc": "Trim (Cruise) Airspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 0, "default": -1.0, "group": "FW Performance", "increment": 1.0, "longDesc": "Altitude in standard atmosphere at which the vehicle in normal configuration (WEIGHT_BASE) is still able to achieve a maximum climb rate of\n0.5m/s at maximum throttle (FW_THR_MAX). Used to compensate for air density in FW_T_CLMB_MAX.\nSet negative to disable.", "min": -1.0, "name": "FW_SERVICE_CEIL", "shortDesc": "Service ceiling", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Performance", "increment": 0.01, "longDesc": "Required throttle (at sea level, standard atmosphere) for level flight at maximum airspeed FW_AIRSPD_MAX\nSet to 0 to disable mapping of airspeed to trim throttle.", "max": 1.0, "min": 0.0, "name": "FW_THR_ASPD_MAX", "shortDesc": "Throttle at max airspeed", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Performance", "increment": 0.01, "longDesc": "Required throttle (at sea level, standard atmosphere) for level flight at minimum airspeed FW_AIRSPD_MIN\nSet to 0 to disable mapping of airspeed to trim throttle below FW_AIRSPD_TRIM.", "max": 1.0, "min": 0.0, "name": "FW_THR_ASPD_MIN", "shortDesc": "Throttle at min airspeed", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.6, "group": "FW Performance", "increment": 0.01, "longDesc": "Required throttle (at sea level, standard atmosphere) for level flight at FW_AIRSPD_TRIM", "max": 1.0, "min": 0.0, "name": "FW_THR_TRIM", "shortDesc": "Trim throttle", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "FW Performance", "increment": 0.5, "longDesc": "This is the maximum calibrated climb rate that the aircraft can achieve with\nthe throttle set to FW_THR_MAX and the airspeed set to the\ntrim value. For electric aircraft make sure this number can be\nachieved towards the end of flight when the battery voltage has reduced.", "min": 1.0, "name": "FW_T_CLMB_MAX", "shortDesc": "Maximum climb rate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.0, "group": "FW Performance", "increment": 0.5, "longDesc": "This is the minimum calibrated sink rate of the aircraft with the throttle\nset to THR_MIN and flown at the same airspeed as used\nto measure FW_T_CLMB_MAX.", "min": 1.0, "name": "FW_T_SINK_MIN", "shortDesc": "Minimum descent rate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "FW Performance", "increment": 0.5, "longDesc": "This is the weight of the vehicle at which it's performance limits were derived. A zero or negative value\ndisables trim throttle and minimum airspeed compensation based on weight.", "name": "WEIGHT_BASE", "shortDesc": "Vehicle base weight", "type": "Float", "units": "kg"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "FW Performance", "increment": 0.1, "longDesc": "This is the actual weight of the vehicle at any time. This value will differ from WEIGHT_BASE in case weight was added\nor removed from the base weight. Examples are the addition of payloads or larger batteries. A zero or negative value\ndisables trim throttle and minimum airspeed compensation based on weight.", "name": "WEIGHT_GROSS", "shortDesc": "Vehicle gross weight", "type": "Float", "units": "kg"}, {"category": "Standard", "default": 90.0, "group": "FW Rate Control", "max": 720.0, "min": 10.0, "name": "FW_ACRO_X_MAX", "shortDesc": "Acro body roll max rate setpoint", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "FW Rate Control", "longDesc": "If this parameter is set to 1, the yaw rate controller is enabled in Fixed-wing Acro mode.\nOtherwise the pilot commands directly the yaw actuator.\nIt is disabled by default because an active yaw rate controller will fight against the\nnatural turn coordination of the plane.", "name": "FW_ACRO_YAW_EN", "shortDesc": "Enable yaw rate controller in Acro", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 90.0, "group": "FW Rate Control", "max": 720.0, "min": 10.0, "name": "FW_ACRO_Y_MAX", "shortDesc": "Acro body pitch max rate setpoint", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 45.0, "group": "FW Rate Control", "max": 720.0, "min": 10.0, "name": "FW_ACRO_Z_MAX", "shortDesc": "Acro body yaw max rate setpoint", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 1, "group": "FW Rate Control", "longDesc": "This enables a logic that automatically adjusts the output of the rate controller to take\ninto account the real torque produced by an aerodynamic control surface given\nthe current deviation from the trim airspeed (FW_AIRSPD_TRIM).\nEnable when using aerodynamic control surfaces (e.g.: plane)\nDisable when using rotor wings (e.g.: autogyro)", "name": "FW_ARSP_SCALE_EN", "shortDesc": "Enable airspeed scaling", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "FW Rate Control", "longDesc": "This compensates for voltage drop of the battery over time by attempting to\nnormalize performance across the operating range of the battery.", "name": "FW_BAT_SCALE_EN", "shortDesc": "Enable throttle scale by battery level", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "This increment is added to TRIM_PITCH when airspeed is FW_AIRSPD_MAX.", "max": 0.5, "min": -0.5, "name": "FW_DTRIM_P_VMAX", "shortDesc": "Pitch trim increment at maximum airspeed", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "This increment is added to TRIM_PITCH when airspeed is FW_AIRSPD_MIN.", "max": 0.5, "min": -0.5, "name": "FW_DTRIM_P_VMIN", "shortDesc": "Pitch trim increment at minimum airspeed", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "This increment is added to TRIM_ROLL when airspeed is FW_AIRSPD_MAX.", "max": 0.5, "min": -0.5, "name": "FW_DTRIM_R_VMAX", "shortDesc": "Roll trim increment at maximum airspeed", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "This increment is added to TRIM_ROLL when airspeed is FW_AIRSPD_MIN.", "max": 0.5, "min": -0.5, "name": "FW_DTRIM_R_VMIN", "shortDesc": "Roll trim increment at minimum airspeed", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "This increment is added to TRIM_YAW when airspeed is FW_AIRSPD_MAX.", "max": 0.5, "min": -0.5, "name": "FW_DTRIM_Y_VMAX", "shortDesc": "Yaw trim increment at maximum airspeed", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "This increment is added to TRIM_YAW when airspeed is FW_AIRSPD_MIN.", "max": 0.5, "min": -0.5, "name": "FW_DTRIM_Y_VMIN", "shortDesc": "Yaw trim increment at minimum airspeed", "type": "Float"}, {"category": "Standard", "default": 1, "group": "FW Rate Control", "name": "FW_GC_EN", "shortDesc": "Enable rate gain compression", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "FW Rate Control", "increment": 0.01, "longDesc": "The range of the compression gain is between this parameter and 1.0", "max": 1.0, "min": 0.0, "name": "FW_GC_GAIN_MIN", "shortDesc": "Compression gain lower limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "Scale factor applied to the desired pitch actuator command in full manual mode. This parameter allows\nto adjust the throws of the control surfaces.", "min": 0.0, "name": "FW_MAN_P_SC", "shortDesc": "Manual pitch scale", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "Scale factor applied to the desired roll actuator command in full manual mode. This parameter allows\nto adjust the throws of the control surfaces.", "max": 1.0, "min": 0.0, "name": "FW_MAN_R_SC", "shortDesc": "Manual roll scale", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "Scale factor applied to the desired yaw actuator command in full manual mode. This parameter allows\nto adjust the throws of the control surfaces.", "min": 0.0, "name": "FW_MAN_Y_SC", "shortDesc": "Manual yaw scale", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "FW Rate Control", "increment": 0.005, "longDesc": "Pitch rate differential gain.", "max": 10.0, "min": 0.0, "name": "FW_PR_D", "shortDesc": "Pitch rate derivative gain", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "FW Rate Control", "increment": 0.05, "longDesc": "Direct feed forward from rate setpoint to control surface output", "max": 10.0, "min": 0.0, "name": "FW_PR_FF", "shortDesc": "Pitch rate feed forward", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "FW Rate Control", "increment": 0.005, "max": 10.0, "min": 0.0, "name": "FW_PR_I", "shortDesc": "Pitch rate integrator gain", "type": "Float", "units": "%/rad"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "FW Rate Control", "increment": 0.05, "max": 1.0, "min": 0.0, "name": "FW_PR_IMAX", "shortDesc": "Pitch rate integrator limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.08, "group": "FW Rate Control", "increment": 0.005, "max": 10.0, "min": 0.0, "name": "FW_PR_P", "shortDesc": "Pitch rate proportional gain", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "FW Rate Control", "increment": 0.01, "longDesc": "This gain can be used to counteract the \"adverse yaw\" effect for fixed wings.\nWhen the plane enters a roll it will tend to yaw the nose out of the turn.\nThis gain enables the use of a yaw actuator to counteract this effect.", "min": 0.0, "name": "FW_RLL_TO_YAW_FF", "shortDesc": "Roll control to yaw control feedforward gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "FW Rate Control", "increment": 0.005, "max": 10.0, "min": 0.0, "name": "FW_RR_D", "shortDesc": "Roll rate derivative gain", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "FW Rate Control", "increment": 0.05, "longDesc": "Direct feed forward from rate setpoint to control surface output.", "max": 10.0, "min": 0.0, "name": "FW_RR_FF", "shortDesc": "Roll rate feed forward", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "FW Rate Control", "increment": 0.01, "max": 10.0, "min": 0.0, "name": "FW_RR_I", "shortDesc": "Roll rate integrator gain", "type": "Float", "units": "%/rad"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "FW Rate Control", "increment": 0.05, "max": 1.0, "min": 0.0, "name": "FW_RR_IMAX", "shortDesc": "Roll integrator limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "FW Rate Control", "increment": 0.005, "max": 10.0, "min": 0.0, "name": "FW_RR_P", "shortDesc": "Roll rate proportional gain", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "default": 0, "group": "FW Rate Control", "longDesc": "Chose source for manual setting of spoilers in manual flight modes.", "name": "FW_SPOILERS_MAN", "shortDesc": "Spoiler input in manual flight", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Flaps channel", "value": 1}, {"description": "Aux1", "value": 2}]}, {"category": "Standard", "default": 1, "group": "FW Rate Control", "longDesc": "If set to 1, the airspeed measurement data, if valid, is used in the following controllers:\n- Rate controller: output scaling\n- Attitude controller: coordinated turn controller\n- Position controller: airspeed setpoint tracking, takeoff logic\n- VTOL: transition logic", "name": "FW_USE_AIRSPD", "shortDesc": "Use airspeed for control", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "FW Rate Control", "increment": 0.005, "max": 10.0, "min": 0.0, "name": "FW_YR_D", "shortDesc": "Yaw rate derivative gain", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "FW Rate Control", "increment": 0.05, "longDesc": "Direct feed forward from rate setpoint to control surface output", "max": 10.0, "min": 0.0, "name": "FW_YR_FF", "shortDesc": "Yaw rate feed forward", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.1, "group": "FW Rate Control", "increment": 0.5, "max": 10.0, "min": 0.0, "name": "FW_YR_I", "shortDesc": "Yaw rate integrator gain", "type": "Float", "units": "%/rad"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "FW Rate Control", "increment": 0.05, "max": 1.0, "min": 0.0, "name": "FW_YR_IMAX", "shortDesc": "Yaw rate integrator limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "FW Rate Control", "increment": 0.005, "max": 10.0, "min": 0.0, "name": "FW_YR_P", "shortDesc": "Yaw rate proportional gain", "type": "Float", "units": "%/rad/s"}, {"category": "Standard", "default": 0, "group": "Failure Detector", "longDesc": "If enabled, failure detector will verify that for motors, a minimum amount of ESC current per throttle\nlevel is being consumed.\nOtherwise this indicates an motor failure.", "name": "FD_ACT_EN", "rebootRequired": true, "shortDesc": "Enable Actuator Failure check", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 10.0, "group": "Failure Detector", "increment": 1.0, "longDesc": "threshold = FD_ACT_MOT_C2T * thrust + FD_ACT_HIGH_OFF", "max": 30.0, "min": 0.0, "name": "FD_ACT_HIGH_OFF", "shortDesc": "Overcurrent motor failure limit offset", "type": "Float", "units": "A"}, {"category": "Standard", "decimalPlaces": 2, "default": 10.0, "group": "Failure Detector", "increment": 1.0, "longDesc": "threshold = FD_ACT_MOT_C2T * thrust - FD_ACT_LOW_OFF", "max": 30.0, "min": 0.0, "name": "FD_ACT_LOW_OFF", "shortDesc": "Undercurrent motor failure limit offset", "type": "Float", "units": "A"}, {"category": "Standard", "decimalPlaces": 2, "default": 35.0, "group": "Failure Detector", "increment": 1.0, "longDesc": "Determines the slope between expected steady state current and linearized, normalized thrust command.\nE.g. FD_ACT_MOT_C2T A represents the expected steady state current at 100%.\nFD_ACT_LOW_OFF and FD_ACT_HIGH_OFF offset the threshold from that slope.", "max": 50.0, "min": 0.0, "name": "FD_ACT_MOT_C2T", "shortDesc": "Motor Failure Current/Throttle Scale", "type": "Float", "units": "A/%"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Failure Detector", "increment": 0.01, "longDesc": "Failure detection per motor only triggers above this thrust value.\nSet to 1 to disable the detection.", "max": 1.0, "min": 0.0, "name": "FD_ACT_MOT_THR", "shortDesc": "Motor Failure Thrust Threshold", "type": "Float", "units": "norm"}, {"category": "Standard", "default": 1000, "group": "Failure Detector", "increment": 100, "longDesc": "Motor failure only triggers after current thresholds are exceeded for this time.", "max": 10000, "min": 10, "name": "FD_ACT_MOT_TOUT", "shortDesc": "Motor Failure Hysteresis Time", "type": "Int32", "units": "ms"}, {"category": "Standard", "default": 1, "group": "Failure Detector", "longDesc": "If enabled, failure detector will verify that all the ESCs have successfully armed when the vehicle has transitioned to the armed state.\nTimeout for receiving an acknowledgement from the ESCs is 0.3s, if no feedback is received the failure detector will auto disarm the vehicle.", "name": "FD_ESCS_EN", "shortDesc": "Enable checks on ESCs that report their arming state", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Failure Detector", "longDesc": "Enabled on either AUX5 or MAIN5 depending on board.\nExternal ATS is required by ASTM F3322-18.", "name": "FD_EXT_ATS_EN", "rebootRequired": true, "shortDesc": "Enable PWM input on for engaging failsafe from an external automatic trigger system (ATS)", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 1900, "group": "Failure Detector", "longDesc": "External ATS is required by ASTM F3322-18.", "name": "FD_EXT_ATS_TRIG", "shortDesc": "The PWM threshold from external automatic trigger system for engaging failsafe", "type": "Int32", "units": "us"}, {"category": "Standard", "default": 60, "group": "Failure Detector", "longDesc": "Maximum pitch angle before FailureDetector triggers the attitude_failure flag.\nThe flag triggers flight termination (if @CBRK_FLIGHTTERM = 0),\nwhich sets outputs to their failsafe values.\nOn takeoff the flag triggers lockdown (irrespective of @CBRK_FLIGHTTERM),\nwhich disarms motors but does not set outputs to failsafe values.\nSetting this parameter to 0 disables the check", "max": 180, "min": 0, "name": "FD_FAIL_P", "shortDesc": "FailureDetector Max Pitch", "type": "Int32", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Failure Detector", "longDesc": "Seconds (decimal) that pitch has to exceed FD_FAIL_P before being considered as a failure.", "max": 5.0, "min": 0.02, "name": "FD_FAIL_P_TTRI", "shortDesc": "Pitch failure trigger time", "type": "Float", "units": "s"}, {"category": "Standard", "default": 60, "group": "Failure Detector", "longDesc": "Maximum roll angle before FailureDetector triggers the attitude_failure flag.\nThe flag triggers flight termination (if @CBRK_FLIGHTTERM = 0),\nwhich sets outputs to their failsafe values.\nOn takeoff the flag triggers lockdown (irrespective of @CBRK_FLIGHTTERM),\nwhich disarms motors but does not set outputs to failsafe values.\nSetting this parameter to 0 disables the check", "max": 180, "min": 0, "name": "FD_FAIL_R", "shortDesc": "FailureDetector Max Roll", "type": "Int32", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Failure Detector", "longDesc": "Seconds (decimal) that roll has to exceed FD_FAIL_R before being considered as a failure.", "max": 5.0, "min": 0.02, "name": "FD_FAIL_R_TTRI", "shortDesc": "Roll failure trigger time", "type": "Float", "units": "s"}, {"category": "Standard", "default": 30, "group": "Failure Detector", "increment": 1, "longDesc": "Value at which the imbalanced propeller metric (based on horizontal and\nvertical acceleration variance) triggers a failure\nSetting this value to 0 disables the feature.", "max": 1000, "min": 0, "name": "FD_IMB_PROP_THR", "shortDesc": "Imbalanced propeller check threshold", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 1000.0, "group": "Flight Task Orbit", "increment": 0.5, "max": 10000.0, "min": 1.0, "name": "MC_ORBIT_RAD_MAX", "shortDesc": "Maximum radius of orbit", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Flight Task Orbit", "name": "MC_ORBIT_YAW_MOD", "shortDesc": "Yaw behaviour during orbit flight", "type": "Int32", "values": [{"description": "Front to Circle Center", "value": 0}, {"description": "Hold Initial Heading", "value": 1}, {"description": "Uncontrolled", "value": 2}, {"description": "Hold Front Tangent to Circle", "value": 3}, {"description": "Manually (yaw stick) Controlled", "value": 4}]}, {"category": "Standard", "default": 0, "group": "Follow target", "longDesc": "Maintain altitude or track target's altitude. When maintaining the altitude,\nthe drone can crash into terrain when the target moves uphill. When tracking\nthe target's altitude, the follow altitude FLW_TGT_HT should be high enough\nto prevent terrain collisions due to GPS inaccuracies of the target.", "name": "FLW_TGT_ALT_M", "shortDesc": "Altitude control mode", "type": "Int32", "values": [{"description": "2D Tracking: Maintain constant altitude relative to home and track XY position only", "value": 0}, {"description": "2D + Terrain: Maintain constant altitude relative to terrain below and track XY position", "value": 1}, {"description": "3D Tracking: Track target's altitude (be aware that GPS altitude bias usually makes this useless)", "value": 2}]}, {"category": "Standard", "default": 8.0, "group": "Follow target", "longDesc": "The distance in meters to follow the target at", "min": 1.0, "name": "FLW_TGT_DST", "shortDesc": "Distance to follow target from", "type": "Float", "units": "m"}, {"category": "Standard", "default": 180.0, "group": "Follow target", "longDesc": "Angle to follow the target from. 0.0 Equals straight in front of the target's\ncourse (direction of motion) and the angle increases in clockwise direction,\nmeaning Right-side would be 90.0 degrees while Left-side is -90.0 degrees\nNote: When the user force sets the angle out of the min/max range, it will be\nwrapped (e.g. 480 -> 120) in the range to gracefully handle the out of range.", "max": 180.0, "min": -180.0, "name": "FLW_TGT_FA", "shortDesc": "Follow Angle setting in degrees", "type": "Float"}, {"category": "Standard", "default": 8.0, "group": "Follow target", "longDesc": "Following height above the target", "min": 8.0, "name": "FLW_TGT_HT", "shortDesc": "Follow target height", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Follow target", "longDesc": "This is the maximum tangential velocity the drone will circle around the target whenever\nan orbit angle setpoint changes. Higher value means more aggressive follow behavior.", "max": 20.0, "min": 0.0, "name": "FLW_TGT_MAX_VEL", "shortDesc": "Maximum tangential velocity setting for generating the follow orbit trajectory", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Follow target", "longDesc": "lower values increase the responsiveness to changing position, but also ignore less noise", "max": 1.0, "min": 0.0, "name": "FLW_TGT_RS", "shortDesc": "Responsiveness to target movement in Target Estimator", "type": "Float"}, {"bitmask": [{"description": "GPS (with QZSS)", "index": 0}, {"description": "SBAS", "index": 1}, {"description": "Galileo", "index": 2}, {"description": "BeiDou", "index": 3}, {"description": "GLONASS", "index": 4}, {"description": "NAVIC", "index": 5}], "category": "Standard", "default": 0, "group": "GPS", "longDesc": "This integer bitmask controls the set of GNSS systems used by the receiver. Check your\nreceiver's documentation on how many systems are supported to be used in parallel.\nCurrently this functionality is just implemented for u-blox receivers.\nWhen no bits are set, the receiver's default configuration should be used.\nSet bits true to enable:\n0 : Use GPS (with QZSS)\n1 : Use SBAS (multiple GPS augmentation systems)\n2 : Use Galileo\n3 : Use BeiDou\n4 : Use GLONASS\n5 : Use NAVIC", "max": 63, "min": 0, "name": "GPS_1_GNSS", "rebootRequired": true, "shortDesc": "GNSS Systems for Primary GPS (integer bitmask)", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "GPS", "longDesc": "Select the GPS protocol over serial.\nAuto-detection will probe all protocols, and thus is a bit slower.", "max": 7, "min": 0, "name": "GPS_1_PROTOCOL", "rebootRequired": true, "shortDesc": "Protocol for Main GPS", "type": "Int32", "values": [{"description": "Auto detect", "value": 0}, {"description": "u-blox", "value": 1}, {"description": "MTK", "value": 2}, {"description": "Ashtech / Trimble", "value": 3}, {"description": "Emlid Reach", "value": 4}, {"description": "Femtomes", "value": 5}, {"description": "NMEA (generic)", "value": 6}]}, {"bitmask": [{"description": "GPS (with QZSS)", "index": 0}, {"description": "SBAS", "index": 1}, {"description": "Galileo", "index": 2}, {"description": "BeiDou", "index": 3}, {"description": "GLONASS", "index": 4}, {"description": "NAVIC", "index": 5}], "category": "Standard", "default": 0, "group": "GPS", "longDesc": "This integer bitmask controls the set of GNSS systems used by the receiver. Check your\nreceiver's documentation on how many systems are supported to be used in parallel.\nCurrently this functionality is just implemented for u-blox receivers.\nWhen no bits are set, the receiver's default configuration should be used.\nSet bits true to enable:\n0 : Use GPS (with QZSS)\n1 : Use SBAS (multiple GPS augmentation systems)\n2 : Use Galileo\n3 : Use BeiDou\n4 : Use GLONASS\n5 : Use NAVIC", "max": 63, "min": 0, "name": "GPS_2_GNSS", "rebootRequired": true, "shortDesc": "GNSS Systems for Secondary GPS (integer bitmask)", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "GPS", "longDesc": "Select the GPS protocol over serial.\nAuto-detection will probe all protocols, and thus is a bit slower.", "max": 6, "min": 0, "name": "GPS_2_PROTOCOL", "rebootRequired": true, "shortDesc": "Protocol for Secondary GPS", "type": "Int32", "values": [{"description": "Auto detect", "value": 0}, {"description": "u-blox", "value": 1}, {"description": "MTK", "value": 2}, {"description": "Ashtech / Trimble", "value": 3}, {"description": "Emlid Reach", "value": 4}, {"description": "Femtomes", "value": 5}, {"description": "NMEA (generic)", "value": 6}]}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "Some UBX modules have a FLASH that allows to store persistent configuration that will be loaded on start.\nPX4 does override all configuration parameters it needs in RAM, which takes precedence over the values in FLASH.\nHowever, configuration parameters that are not overriden by PX4 can still cause unexpected problems during flight.\nTo avoid these kind of problems a clean config can be reached by wiping the FLASH on boot.\nNote: Currently only supported on UBX.", "name": "GPS_CFG_WIPE", "rebootRequired": true, "shortDesc": "Wipes the flash config of UBX modules", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "If this is set to 1, all GPS communication data will be published via uORB,\nand written to the log file as gps_dump message.\nIf this is set to 2, the main GPS is configured to output RTCM data,\nwhich is then logged as gps_dump and can be used for PPK.", "max": 2, "min": 0, "name": "GPS_DUMP_COMM", "shortDesc": "Log GPS communication data", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "Full communication", "value": 1}, {"description": "RTCM output (PPK)", "value": 2}]}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "Enable publication of satellite info (ORB_ID(satellite_info)) if possible.\nNot available on MTK.", "name": "GPS_SAT_INFO", "rebootRequired": true, "shortDesc": "Enable sat info (if available)", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 230400, "group": "GPS", "longDesc": "Select a baudrate for the F9P's UART2 port.\nIn GPS_UBX_MODE 1, 2, and 3, the F9P's UART2 port is configured to send/receive RTCM corrections.\nSet this to 57600 if you want to attach a telemetry radio on UART2.", "min": 0, "name": "GPS_UBX_BAUD2", "rebootRequired": true, "shortDesc": "u-blox F9P UART2 Baudrate", "type": "Int32", "units": "B/s"}, {"bitmask": [{"description": "Enable I2C input protocol UBX", "index": 0}, {"description": "Enable I2C input protocol NMEA", "index": 1}, {"description": "Enable I2C input protocol RTCM3X", "index": 2}, {"description": "Enable I2C output protocol UBX", "index": 3}, {"description": "Enable I2C output protocol NMEA", "index": 4}, {"description": "Enable I2C output protocol RTCM3X", "index": 5}], "category": "Standard", "default": 0, "group": "GPS", "max": 32, "min": 0, "name": "GPS_UBX_CFG_INTF", "rebootRequired": true, "shortDesc": "u-blox protocol configuration for interfaces", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "When set to 0 (default), default DGNSS timeout set by u-blox will be used.", "max": 255, "min": 0, "name": "GPS_UBX_DGNSS_TO", "rebootRequired": true, "shortDesc": "u-blox GPS DGNSS timeout", "type": "Int32", "units": "s"}, {"category": "Standard", "default": 7, "group": "GPS", "longDesc": "u-blox receivers support different dynamic platform models to adjust the navigation engine to\nthe expected application environment.", "max": 9, "min": 0, "name": "GPS_UBX_DYNMODEL", "rebootRequired": true, "shortDesc": "u-blox GPS dynamic platform model", "type": "Int32", "values": [{"description": "stationary", "value": 2}, {"description": "automotive", "value": 4}, {"description": "airborne with <1g acceleration", "value": 6}, {"description": "airborne with <2g acceleration", "value": 7}, {"description": "airborne with <4g acceleration", "value": 8}]}, {"category": "Standard", "default": 1, "group": "GPS", "longDesc": "Enables or disables the high sensitivity mode for the u-blox jamming detection\n(CFG-SEC-JAMDET_SENSITIVITY_HI). When enabled, the receiver uses a\nmore sensitive algorithm to detect jamming. Disabling this may reduce false\npositives in electrically noisy environments.", "name": "GPS_UBX_JAM_DET", "rebootRequired": true, "shortDesc": "u-blox GPS jamming detection high sensitivity mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "When set to 0 (default), default minimum satellite signal level set by u-blox wll be used.", "max": 255, "min": 0, "name": "GPS_UBX_MIN_CNO", "rebootRequired": true, "shortDesc": "u-blox GPS minimum satellite signal level for navigation", "type": "Int32", "units": "dBHz"}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "When set to 0 (default), default minimum elevation set by u-blox will be used.", "max": 127, "min": 0, "name": "GPS_UBX_MIN_ELEV", "rebootRequired": true, "shortDesc": "u-blox GPS minimum elevation for a GNSS satellite to be used in navigation", "type": "Int32", "units": "deg"}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "Select the u-blox configuration setup. Most setups will use the default, including RTK and\ndual GPS without heading.\nIf rover has RTCM corrections from a static base (or other static correction source) coming in on UART2, then select Mode 5.\nThe Heading mode requires 2 F9P devices to be attached. The main GPS will act as rover and output\nheading information, whereas the secondary will act as moving base.\nModes 1 and 2 require each F9P UART1 to be connected to the Autopilot. In addition, UART2 on the\nF9P units are connected to each other.\nModes 3 and 4 only require UART1 on each F9P connected to the Autopilot or Can Node. UART RX DMA is required.\nRTK is still possible with this setup.\nMode 6 is intended for use with a ground control station (not necessarily an RTK correction base).", "max": 1, "min": 0, "name": "GPS_UBX_MODE", "rebootRequired": true, "shortDesc": "u-blox GPS Mode", "type": "Int32", "values": [{"description": "Default", "value": 0}, {"description": "Heading (Rover With Moving Base UART1 Connected To Autopilot, UART2 Connected To Moving Base)", "value": 1}, {"description": "Moving Base (UART1 Connected To Autopilot, UART2 Connected To Rover)", "value": 2}, {"description": "Heading (Rover With Moving Base UART1 Connected to Autopilot Or Can Node At 921600)", "value": 3}, {"description": "Moving Base (Moving Base UART1 Connected to Autopilot Or Can Node At 921600)", "value": 4}, {"description": "Rover with Static Base on UART2 (similar to Default, except coming in on UART2)", "value": 5}, {"description": "Ground Control Station (UART2 outputs NMEA)", "value": 6}]}, {"category": "Standard", "default": 0, "group": "GPS", "name": "GPS_UBX_PPK", "rebootRequired": true, "shortDesc": "Enable MSM7 message output for PPK workflow", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "GPS", "longDesc": "Configure the output rate of u-blox GPS receivers (protocol v27+).\nWhen set to 0, automatic rate selection is used based on the receiver model.\nDefault rates: M9N=8Hz, F9P L1L2=5Hz, F9P L1L5=5Hz, Others=10Hz.\nNote: Higher rates reduce satellite count (e.g., >8Hz limits to 16 SVs on M9N).\nMax rates vary by model and RTK mode: F9P L1L2=5-7Hz, F9P L1L5=7-8Hz, X20=25Hz.\nHigh rates at 115200 baud may cause dropouts.", "max": 25, "min": 0, "name": "GPS_UBX_RATE", "rebootRequired": true, "shortDesc": "u-blox GPS output rate", "type": "Int32", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "GPS", "longDesc": "Heading offset angle for dual antenna GPS setups that support heading estimation.\nSet this to 0 if the antennas are parallel to the forward-facing direction\nof the vehicle and the rover (or Unicore primary) antenna is in front.\nThe offset angle increases clockwise.\nSet this to 90 if the rover (or Unicore primary, or Septentrio Mosaic Aux)\nantenna is placed on the right side of the vehicle and the moving base\nantenna is on the left side.\n(Note: the Unicore primary antenna is the one connected on the right as seen\nfrom the top).", "max": 360.0, "min": 0.0, "name": "GPS_YAW_OFFSET", "rebootRequired": true, "shortDesc": "Heading/Yaw offset for dual antenna GPS", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 2, "group": "Geofence", "longDesc": "Note: Setting this value to 4 enables flight termination,\nwhich will kill the vehicle on violation of the fence.", "max": 5, "min": 0, "name": "GF_ACTION", "shortDesc": "Geofence violation action", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Warning", "value": 1}, {"description": "Hold mode", "value": 2}, {"description": "Return mode", "value": 3}, {"description": "Terminate", "value": 4}, {"description": "Land mode", "value": 5}]}, {"category": "Standard", "default": 0.0, "group": "Geofence", "increment": 1.0, "longDesc": "Maximum horizontal distance in meters the vehicle can be from Home before triggering a geofence action.\nDisabled if 0.", "max": 10000.0, "min": 0.0, "name": "GF_MAX_HOR_DIST", "shortDesc": "Max horizontal distance from Home", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0.0, "group": "Geofence", "increment": 1.0, "longDesc": "Maximum vertical distance in meters the vehicle can be from Home before triggering a geofence action.\nDisabled if 0.", "max": 10000.0, "min": 0.0, "name": "GF_MAX_VER_DIST", "shortDesc": "Max vertical distance from Home", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geofence", "longDesc": "WARNING: This experimental feature may cause flyaways. Use at your own risk.\nPredict the motion of the vehicle and trigger the breach if it is determined that the current trajectory\nwould result in a breach happening before the vehicle can make evasive maneuvers.\nThe vehicle is then re-routed to a safe hold position (stop for multirotor, loiter for fixed wing).", "name": "GF_PREDICT", "shortDesc": "[EXPERIMENTAL] Use Pre-emptive geofence triggering", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Geofence", "longDesc": "Select which position source should be used. Selecting GPS instead of global position makes sure that there is\nno dependence on the position estimator\n0 = global position, 1 = GPS", "max": 1, "min": 0, "name": "GF_SOURCE", "shortDesc": "Geofence source", "type": "Int32", "values": [{"description": "GPOS", "value": 0}, {"description": "GPS", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "Defines which mixer implementation to use.\nSome are generic, while others are specifically fit to a certain vehicle with a fixed set of actuators.\n'Custom' should only be used if noting else can be used.", "name": "CA_AIRFRAME", "shortDesc": "Airframe selection", "type": "Int32", "values": [{"description": "Multirotor", "value": 0}, {"description": "Fixed-wing", "value": 1}, {"description": "Standard VTOL", "value": 2}, {"description": "Tiltrotor VTOL", "value": 3}, {"description": "Tailsitter VTOL", "value": 4}, {"description": "Rover (Ackermann)", "value": 5}, {"description": "Rover (Differential)", "value": 6}, {"description": "Motors (6DOF)", "value": 7}, {"description": "Multirotor with Tilt", "value": 8}, {"description": "Custom", "value": 9}, {"description": "Helicopter (tail ESC)", "value": 10}, {"description": "Helicopter (tail Servo)", "value": 11}, {"description": "Helicopter (Coaxial)", "value": 12}, {"description": "Rover (Mecanum)", "value": 13}, {"description": "Spacecraft 2D", "value": 14}, {"description": "Spacecraft 3D", "value": 15}]}, {"bitmask": [{"description": "Control Surface 1", "index": 0}, {"description": "Control Surface 2", "index": 1}, {"description": "Control Surface 3", "index": 2}, {"description": "Control Surface 4", "index": 3}, {"description": "Control Surface 5", "index": 4}, {"description": "Control Surface 6", "index": 5}, {"description": "Control Surface 7", "index": 6}, {"description": "Control Surface 8", "index": 7}], "category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If actuator launch lock is enabled, this surface is kept at the disarmed value.", "max": 255, "min": 0, "name": "CA_CS_LAUN_LK", "shortDesc": "Control surface launch lock enabled", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "This is used to specify how to handle motor failures\nreported by failure detector.", "name": "CA_FAILURE_MODE", "shortDesc": "Motor failure handling mode", "type": "Int32", "values": [{"description": "Ignore", "value": 0}, {"description": "Remove first failed motor from effectiveness", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": -0.05, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the collective pitch at the interval position 0 for a given thrust setpoint.\nUse negative values if the swash plate needs to move down to provide upwards thrust.", "max": 1.0, "min": -1.0, "name": "CA_HELI_PITCH_C0", "shortDesc": "Collective pitch curve at position 0", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0725, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the collective pitch at the interval position 1 for a given thrust setpoint.\nUse negative values if the swash plate needs to move down to provide upwards thrust.", "max": 1.0, "min": -1.0, "name": "CA_HELI_PITCH_C1", "shortDesc": "Collective pitch curve at position 1", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.2, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the collective pitch at the interval position 2 for a given thrust setpoint.\nUse negative values if the swash plate needs to move down to provide upwards thrust.", "max": 1.0, "min": -1.0, "name": "CA_HELI_PITCH_C2", "shortDesc": "Collective pitch curve at position 2", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.325, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the collective pitch at the interval position 3 for a given thrust setpoint.\nUse negative values if the swash plate needs to move down to provide upwards thrust.", "max": 1.0, "min": -1.0, "name": "CA_HELI_PITCH_C3", "shortDesc": "Collective pitch curve at position 3", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.45, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the collective pitch at the interval position 4 for a given thrust setpoint.\nUse negative values if the swash plate needs to move down to provide upwards thrust.", "max": 1.0, "min": -1.0, "name": "CA_HELI_PITCH_C4", "shortDesc": "Collective pitch curve at position 4", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Same definition as the proportional gain but for integral.", "max": 10.0, "min": 0.0, "name": "CA_HELI_RPM_I", "shortDesc": "Integral gain for rpm control", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Ratio between rpm error devided by 1000 to how much normalized output gets added to correct for it.\nmotor_command = throttle_curve + CA_HELI_RPM_P * (rpm_setpoint - rpm_measurement) / 1000", "max": 10.0, "min": 0.0, "name": "CA_HELI_RPM_P", "shortDesc": "Proportional gain for rpm control", "type": "Float"}, {"category": "Standard", "decimalPlaces": 0, "default": 1500.0, "group": "Geometry", "increment": 1.0, "longDesc": "Requires rpm feedback for the controller.", "max": 10000.0, "min": 100.0, "name": "CA_HELI_RPM_SP", "shortDesc": "Setpoint for main rotor rpm", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the output throttle at the interval position 0.", "max": 1.0, "min": 0.0, "name": "CA_HELI_THR_C0", "shortDesc": "Throttle curve at position 0", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the output throttle at the interval position 1.", "max": 1.0, "min": 0.0, "name": "CA_HELI_THR_C1", "shortDesc": "Throttle curve at position 1", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the output throttle at the interval position 2.", "max": 1.0, "min": 0.0, "name": "CA_HELI_THR_C2", "shortDesc": "Throttle curve at position 2", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the output throttle at the interval position 3.", "max": 1.0, "min": 0.0, "name": "CA_HELI_THR_C3", "shortDesc": "Throttle curve at position 3", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Defines the output throttle at the interval position 4.", "max": 1.0, "min": 0.0, "name": "CA_HELI_THR_C4", "shortDesc": "Throttle curve at position 4", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "Default configuration is for a clockwise turning main rotor and\npositive thrust of the tail rotor is expected to rotate the vehicle clockwise.\nSet this parameter to true if the tail rotor provides thrust in counter-clockwise direction\nwhich is mostly the case when the main rotor turns counter-clockwise.", "name": "CA_HELI_YAW_CCW", "shortDesc": "Main rotor turns counter-clockwise", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "This allows to specify which collective pitch command results in the least amount of rotor drag.\nThis is used to increase the accuracy of the yaw drag torque compensation based on collective pitch\nby aligning the lowest rotor drag with zero compensation.\nFor symmetric profile blades this is the command that results in exactly 0\u00b0 collective blade angle.\nFor lift profile blades this is typically a command resulting in slightly negative collective blade angle.\ntail_output += CA_HELI_YAW_CP_S * abs(collective_pitch - CA_HELI_YAW_CP_O)", "max": 2.0, "min": -2.0, "name": "CA_HELI_YAW_CP_O", "shortDesc": "Offset for yaw compensation based on collective pitch", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "This allows to add a proportional factor of the collective pitch command to the yaw command.\nA negative value is needed when positive thrust of the tail rotor rotates the vehicle opposite to the main rotor turn direction.\ntail_output += CA_HELI_YAW_CP_S * abs(collective_pitch - CA_HELI_YAW_CP_O)", "max": 2.0, "min": -2.0, "name": "CA_HELI_YAW_CP_S", "shortDesc": "Scale for yaw compensation based on collective pitch", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "This allows to add a proportional factor of the throttle command to the yaw command.\nA negative value is needed when positive thrust of the tail rotor rotates the vehicle opposite to the main rotor turn direction.\ntail_output += CA_HELI_YAW_TH_S * throttle", "max": 2.0, "min": -2.0, "name": "CA_HELI_YAW_TH_S", "shortDesc": "Scale for yaw compensation based on throttle", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Ice shedding prevents ice buildup in VTOL aircraft motors by\nperiodically spinning inactive rotors. When enabled (period\n> 0), every cycle lasts for the defined period and includes\na 2\u2011second spin at 0.01 motor output. If period <= 0, the\nfeature is disabled.", "min": 0.0, "name": "CA_ICE_PERIOD", "shortDesc": "Ice shedding cycle period", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Used to linearize mechanical output of swashplate servos to avoid axis coupling and binding with 4 servo redundancy.\nThis requires a symmetric setup where the servo horn is exactly centered with a 0 command.\nSetting to zero disables feature.", "max": 75.0, "min": 0.0, "name": "CA_MAX_SVO_THROW", "shortDesc": "Throw angle of swashplate servo at maximum commands for linearization", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 2, "group": "Geometry", "longDesc": "Selects the algorithm and desaturation method.\nIf set to Automatic, the selection is based on the airframe (CA_AIRFRAME).", "name": "CA_METHOD", "shortDesc": "Control allocation method", "type": "Int32", "values": [{"description": "Pseudo-inverse with output clipping", "value": 0}, {"description": "Pseudo-inverse with sequential desaturation technique", "value": 1}, {"description": "Automatic", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R0_SLEW", "shortDesc": "Motor 0 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R10_SLEW", "shortDesc": "Motor 10 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R11_SLEW", "shortDesc": "Motor 11 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R1_SLEW", "shortDesc": "Motor 1 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R2_SLEW", "shortDesc": "Motor 2 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R3_SLEW", "shortDesc": "Motor 3 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R4_SLEW", "shortDesc": "Motor 4 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R5_SLEW", "shortDesc": "Motor 5 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R6_SLEW", "shortDesc": "Motor 6 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R7_SLEW", "shortDesc": "Motor 7 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R8_SLEW", "shortDesc": "Motor 8 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.01, "longDesc": "Forces the motor output signal to take at least the configured time (in seconds)\nto traverse its full range (normally [0, 1], or if reversible [-1, 1]).\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_R9_SLEW", "shortDesc": "Motor 9 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR0_AX", "shortDesc": "Axis of rotor 0 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR0_AY", "shortDesc": "Axis of rotor 0 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR0_AZ", "shortDesc": "Axis of rotor 0 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR0_CT", "shortDesc": "Thrust coefficient of rotor 0", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR0_KM", "shortDesc": "Moment coefficient of rotor 0", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR0_PX", "shortDesc": "Position of rotor 0 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR0_PY", "shortDesc": "Position of rotor 0 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR0_PZ", "shortDesc": "Position of rotor 0 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR0_TILT", "shortDesc": "Rotor 0 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR10_AX", "shortDesc": "Axis of rotor 10 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR10_AY", "shortDesc": "Axis of rotor 10 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR10_AZ", "shortDesc": "Axis of rotor 10 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR10_CT", "shortDesc": "Thrust coefficient of rotor 10", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR10_KM", "shortDesc": "Moment coefficient of rotor 10", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR10_PX", "shortDesc": "Position of rotor 10 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR10_PY", "shortDesc": "Position of rotor 10 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR10_PZ", "shortDesc": "Position of rotor 10 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR10_TILT", "shortDesc": "Rotor 10 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR11_AX", "shortDesc": "Axis of rotor 11 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR11_AY", "shortDesc": "Axis of rotor 11 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR11_AZ", "shortDesc": "Axis of rotor 11 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR11_CT", "shortDesc": "Thrust coefficient of rotor 11", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR11_KM", "shortDesc": "Moment coefficient of rotor 11", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR11_PX", "shortDesc": "Position of rotor 11 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR11_PY", "shortDesc": "Position of rotor 11 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR11_PZ", "shortDesc": "Position of rotor 11 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR11_TILT", "shortDesc": "Rotor 11 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR1_AX", "shortDesc": "Axis of rotor 1 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR1_AY", "shortDesc": "Axis of rotor 1 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR1_AZ", "shortDesc": "Axis of rotor 1 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR1_CT", "shortDesc": "Thrust coefficient of rotor 1", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR1_KM", "shortDesc": "Moment coefficient of rotor 1", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR1_PX", "shortDesc": "Position of rotor 1 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR1_PY", "shortDesc": "Position of rotor 1 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR1_PZ", "shortDesc": "Position of rotor 1 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR1_TILT", "shortDesc": "Rotor 1 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR2_AX", "shortDesc": "Axis of rotor 2 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR2_AY", "shortDesc": "Axis of rotor 2 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR2_AZ", "shortDesc": "Axis of rotor 2 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR2_CT", "shortDesc": "Thrust coefficient of rotor 2", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR2_KM", "shortDesc": "Moment coefficient of rotor 2", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR2_PX", "shortDesc": "Position of rotor 2 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR2_PY", "shortDesc": "Position of rotor 2 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR2_PZ", "shortDesc": "Position of rotor 2 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR2_TILT", "shortDesc": "Rotor 2 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR3_AX", "shortDesc": "Axis of rotor 3 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR3_AY", "shortDesc": "Axis of rotor 3 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR3_AZ", "shortDesc": "Axis of rotor 3 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR3_CT", "shortDesc": "Thrust coefficient of rotor 3", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR3_KM", "shortDesc": "Moment coefficient of rotor 3", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR3_PX", "shortDesc": "Position of rotor 3 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR3_PY", "shortDesc": "Position of rotor 3 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR3_PZ", "shortDesc": "Position of rotor 3 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR3_TILT", "shortDesc": "Rotor 3 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR4_AX", "shortDesc": "Axis of rotor 4 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR4_AY", "shortDesc": "Axis of rotor 4 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR4_AZ", "shortDesc": "Axis of rotor 4 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR4_CT", "shortDesc": "Thrust coefficient of rotor 4", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR4_KM", "shortDesc": "Moment coefficient of rotor 4", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR4_PX", "shortDesc": "Position of rotor 4 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR4_PY", "shortDesc": "Position of rotor 4 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR4_PZ", "shortDesc": "Position of rotor 4 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR4_TILT", "shortDesc": "Rotor 4 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR5_AX", "shortDesc": "Axis of rotor 5 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR5_AY", "shortDesc": "Axis of rotor 5 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR5_AZ", "shortDesc": "Axis of rotor 5 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR5_CT", "shortDesc": "Thrust coefficient of rotor 5", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR5_KM", "shortDesc": "Moment coefficient of rotor 5", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR5_PX", "shortDesc": "Position of rotor 5 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR5_PY", "shortDesc": "Position of rotor 5 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR5_PZ", "shortDesc": "Position of rotor 5 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR5_TILT", "shortDesc": "Rotor 5 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR6_AX", "shortDesc": "Axis of rotor 6 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR6_AY", "shortDesc": "Axis of rotor 6 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR6_AZ", "shortDesc": "Axis of rotor 6 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR6_CT", "shortDesc": "Thrust coefficient of rotor 6", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR6_KM", "shortDesc": "Moment coefficient of rotor 6", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR6_PX", "shortDesc": "Position of rotor 6 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR6_PY", "shortDesc": "Position of rotor 6 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR6_PZ", "shortDesc": "Position of rotor 6 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR6_TILT", "shortDesc": "Rotor 6 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR7_AX", "shortDesc": "Axis of rotor 7 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR7_AY", "shortDesc": "Axis of rotor 7 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR7_AZ", "shortDesc": "Axis of rotor 7 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR7_CT", "shortDesc": "Thrust coefficient of rotor 7", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR7_KM", "shortDesc": "Moment coefficient of rotor 7", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR7_PX", "shortDesc": "Position of rotor 7 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR7_PY", "shortDesc": "Position of rotor 7 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR7_PZ", "shortDesc": "Position of rotor 7 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR7_TILT", "shortDesc": "Rotor 7 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR8_AX", "shortDesc": "Axis of rotor 8 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR8_AY", "shortDesc": "Axis of rotor 8 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR8_AZ", "shortDesc": "Axis of rotor 8 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR8_CT", "shortDesc": "Thrust coefficient of rotor 8", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR8_KM", "shortDesc": "Moment coefficient of rotor 8", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR8_PX", "shortDesc": "Position of rotor 8 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR8_PY", "shortDesc": "Position of rotor 8 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR8_PZ", "shortDesc": "Position of rotor 8 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR8_TILT", "shortDesc": "Rotor 8 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR9_AX", "shortDesc": "Axis of rotor 9 thrust vector, X body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR9_AY", "shortDesc": "Axis of rotor 9 thrust vector, Y body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Geometry", "increment": 0.1, "longDesc": "Only the direction is considered (the vector is normalized).", "max": 100.0, "min": -100.0, "name": "CA_ROTOR9_AZ", "shortDesc": "Axis of rotor 9 thrust vector, Z body axis component", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.5, "group": "Geometry", "increment": 1.0, "longDesc": "The thrust coefficient if defined as Thrust = CT * u^2,\nwhere u (with value between actuator minimum and maximum)\nis the output signal sent to the motor controller.", "max": 100.0, "min": 0.0, "name": "CA_ROTOR9_CT", "shortDesc": "Thrust coefficient of rotor 9", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Geometry", "increment": 0.01, "longDesc": "The moment coefficient if defined as Torque = KM * Thrust.\nUse a positive value for a rotor with CCW rotation.\nUse a negative value for a rotor with CW rotation.", "max": 1.0, "min": -1.0, "name": "CA_ROTOR9_KM", "shortDesc": "Moment coefficient of rotor 9", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR9_PX", "shortDesc": "Position of rotor 9 along X body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR9_PY", "shortDesc": "Position of rotor 9 along Y body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.1, "max": 100.0, "min": -100.0, "name": "CA_ROTOR9_PZ", "shortDesc": "Position of rotor 9 along Z body axis relative to center of gravity", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "If not set to None, this motor is tilted by the configured tilt servo.", "name": "CA_ROTOR9_TILT", "shortDesc": "Rotor 9 tilt assignment", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Tilt 1", "value": 1}, {"description": "Tilt 2", "value": 2}, {"description": "Tilt 3", "value": 3}, {"description": "Tilt 4", "value": 4}]}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_ROTOR_COUNT", "shortDesc": "Total number of rotors", "type": "Int32", "values": [{"description": "0", "value": 0}, {"description": "1", "value": 1}, {"description": "2", "value": 2}, {"description": "3", "value": 3}, {"description": "4", "value": 4}, {"description": "5", "value": 5}, {"description": "6", "value": 6}, {"description": "7", "value": 7}, {"description": "8", "value": 8}, {"description": "9", "value": 9}, {"description": "10", "value": 10}, {"description": "11", "value": 11}, {"description": "12", "value": 12}]}, {"bitmask": [{"description": "Motor 1", "index": 0}, {"description": "Motor 2", "index": 1}, {"description": "Motor 3", "index": 2}, {"description": "Motor 4", "index": 3}, {"description": "Motor 5", "index": 4}, {"description": "Motor 6", "index": 5}, {"description": "Motor 7", "index": 6}, {"description": "Motor 8", "index": 7}, {"description": "Motor 9", "index": 8}, {"description": "Motor 10", "index": 9}, {"description": "Motor 11", "index": 10}, {"description": "Motor 12", "index": 11}], "category": "Standard", "default": 0, "group": "Geometry", "longDesc": "Configure motors to be bidirectional/reversible. Note that the output driver needs to support this as well.", "max": 4095, "min": 0, "name": "CA_R_REV", "shortDesc": "Bidirectional/Reversible motors", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 0, "default": 0.0, "group": "Geometry", "increment": 10.0, "longDesc": "The angle is measured clockwise (as seen from top), with 0 pointing forwards (X axis).", "max": 360.0, "min": 0.0, "name": "CA_SP0_ANG0", "shortDesc": "Angle for swash plate servo 0", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 140.0, "group": "Geometry", "increment": 10.0, "longDesc": "The angle is measured clockwise (as seen from top), with 0 pointing forwards (X axis).", "max": 360.0, "min": 0.0, "name": "CA_SP0_ANG1", "shortDesc": "Angle for swash plate servo 1", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 220.0, "group": "Geometry", "increment": 10.0, "longDesc": "The angle is measured clockwise (as seen from top), with 0 pointing forwards (X axis).", "max": 360.0, "min": 0.0, "name": "CA_SP0_ANG2", "shortDesc": "Angle for swash plate servo 2", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 0.0, "group": "Geometry", "increment": 10.0, "longDesc": "The angle is measured clockwise (as seen from top), with 0 pointing forwards (X axis).", "max": 360.0, "min": 0.0, "name": "CA_SP0_ANG3", "shortDesc": "Angle for swash plate servo 3", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "This is relative to the other arm lengths.", "max": 10.0, "min": 0.0, "name": "CA_SP0_ARM_L0", "shortDesc": "Arm length for swash plate servo 0", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "This is relative to the other arm lengths.", "max": 10.0, "min": 0.0, "name": "CA_SP0_ARM_L1", "shortDesc": "Arm length for swash plate servo 1", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "This is relative to the other arm lengths.", "max": 10.0, "min": 0.0, "name": "CA_SP0_ARM_L2", "shortDesc": "Arm length for swash plate servo 2", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Geometry", "increment": 0.1, "longDesc": "This is relative to the other arm lengths.", "max": 10.0, "min": 0.0, "name": "CA_SP0_ARM_L3", "shortDesc": "Arm length for swash plate servo 3", "type": "Float"}, {"category": "Standard", "default": 3, "group": "Geometry", "name": "CA_SP0_COUNT", "shortDesc": "Number of swash plates servos", "type": "Int32", "values": [{"description": "2", "value": 2}, {"description": "3", "value": 3}, {"description": "4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV0_SLEW", "shortDesc": "Servo 0 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV1_SLEW", "shortDesc": "Servo 1 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV2_SLEW", "shortDesc": "Servo 2 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV3_SLEW", "shortDesc": "Servo 3 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV4_SLEW", "shortDesc": "Servo 4 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV5_SLEW", "shortDesc": "Servo 5 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV6_SLEW", "shortDesc": "Servo 6 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "increment": 0.05, "longDesc": "Forces the servo output signal to take at least the configured time (in seconds)\nto traverse its full range [-100%, 100%].\nZero means that slew rate limiting is disabled.", "max": 10.0, "min": 0.0, "name": "CA_SV7_SLEW", "shortDesc": "Servo 7 slew rate limit", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS0_FLAP", "shortDesc": "Control Surface 0 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS0_SPOIL", "shortDesc": "Control Surface 0 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS0_TRIM", "shortDesc": "Control Surface 0 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS0_TRQ_P", "shortDesc": "Control Surface 0 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS0_TRQ_R", "shortDesc": "Control Surface 0 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS0_TRQ_Y", "shortDesc": "Control Surface 0 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS0_TYPE", "shortDesc": "Control Surface 0 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS1_FLAP", "shortDesc": "Control Surface 1 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS1_SPOIL", "shortDesc": "Control Surface 1 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS1_TRIM", "shortDesc": "Control Surface 1 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS1_TRQ_P", "shortDesc": "Control Surface 1 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS1_TRQ_R", "shortDesc": "Control Surface 1 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS1_TRQ_Y", "shortDesc": "Control Surface 1 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS1_TYPE", "shortDesc": "Control Surface 1 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS2_FLAP", "shortDesc": "Control Surface 2 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS2_SPOIL", "shortDesc": "Control Surface 2 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS2_TRIM", "shortDesc": "Control Surface 2 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS2_TRQ_P", "shortDesc": "Control Surface 2 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS2_TRQ_R", "shortDesc": "Control Surface 2 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS2_TRQ_Y", "shortDesc": "Control Surface 2 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS2_TYPE", "shortDesc": "Control Surface 2 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS3_FLAP", "shortDesc": "Control Surface 3 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS3_SPOIL", "shortDesc": "Control Surface 3 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS3_TRIM", "shortDesc": "Control Surface 3 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS3_TRQ_P", "shortDesc": "Control Surface 3 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS3_TRQ_R", "shortDesc": "Control Surface 3 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS3_TRQ_Y", "shortDesc": "Control Surface 3 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS3_TYPE", "shortDesc": "Control Surface 3 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS4_FLAP", "shortDesc": "Control Surface 4 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS4_SPOIL", "shortDesc": "Control Surface 4 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS4_TRIM", "shortDesc": "Control Surface 4 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS4_TRQ_P", "shortDesc": "Control Surface 4 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS4_TRQ_R", "shortDesc": "Control Surface 4 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS4_TRQ_Y", "shortDesc": "Control Surface 4 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS4_TYPE", "shortDesc": "Control Surface 4 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS5_FLAP", "shortDesc": "Control Surface 5 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS5_SPOIL", "shortDesc": "Control Surface 5 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS5_TRIM", "shortDesc": "Control Surface 5 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS5_TRQ_P", "shortDesc": "Control Surface 5 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS5_TRQ_R", "shortDesc": "Control Surface 5 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS5_TRQ_Y", "shortDesc": "Control Surface 5 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS5_TYPE", "shortDesc": "Control Surface 5 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS6_FLAP", "shortDesc": "Control Surface 6 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS6_SPOIL", "shortDesc": "Control Surface 6 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS6_TRIM", "shortDesc": "Control Surface 6 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS6_TRQ_P", "shortDesc": "Control Surface 6 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS6_TRQ_R", "shortDesc": "Control Surface 6 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS6_TRQ_Y", "shortDesc": "Control Surface 6 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS6_TYPE", "shortDesc": "Control Surface 6 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS7_FLAP", "shortDesc": "Control Surface 7 configuration as flap", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "max": 1.0, "min": -1.0, "name": "CA_SV_CS7_SPOIL", "shortDesc": "Control Surface 7 configuration as spoiler", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "longDesc": "Can be used to add an offset to the servo control.\nNOTE: Do not use for PWM servos. Use the PWM CENTER parameters instead (e.g., PWM_MAIN_CENT, PWM_AUX_CENT) instead.\nThis parameter can only be set if all PWM Center parameters are set to default.", "max": 1.0, "min": -1.0, "name": "CA_SV_CS7_TRIM", "shortDesc": "Control Surface 7 trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS7_TRQ_P", "shortDesc": "Control Surface 7 pitch torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS7_TRQ_R", "shortDesc": "Control Surface 7 roll torque scaling", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Geometry", "name": "CA_SV_CS7_TRQ_Y", "shortDesc": "Control Surface 7 yaw torque scaling", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS7_TYPE", "shortDesc": "Control Surface 7 type", "type": "Int32", "values": [{"description": "(Not set)", "value": 0}, {"description": "Left Aileron", "value": 1}, {"description": "Right Aileron", "value": 2}, {"description": "Elevator", "value": 3}, {"description": "Rudder", "value": 4}, {"description": "Left Elevon", "value": 5}, {"description": "Right Elevon", "value": 6}, {"description": "Left V-Tail", "value": 7}, {"description": "Right V-Tail", "value": 8}, {"description": "Left Flap", "value": 9}, {"description": "Right Flap", "value": 10}, {"description": "Airbrake", "value": 11}, {"description": "Custom", "value": 12}, {"description": "Left A-tail", "value": 13}, {"description": "Right A-tail", "value": 14}, {"description": "Single Channel Aileron", "value": 15}, {"description": "Steering Wheel", "value": 16}, {"description": "Left Spoiler", "value": 17}, {"description": "Right Spoiler", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_CS_COUNT", "shortDesc": "Total number of Control Surfaces", "type": "Int32", "values": [{"description": "0", "value": 0}, {"description": "1", "value": 1}, {"description": "2", "value": 2}, {"description": "3", "value": 3}, {"description": "4", "value": 4}, {"description": "5", "value": 5}, {"description": "6", "value": 6}, {"description": "7", "value": 7}, {"description": "8", "value": 8}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.5, "group": "Geometry", "max": 5.0, "min": 0.0, "name": "CA_SV_FLAP_SLEW", "shortDesc": "Control Surface slew rate for normalized flaps setpoint", "type": "Float"}, {"category": "Standard", "default": 1, "group": "Geometry", "longDesc": "Define if this servo is used for additional control.", "name": "CA_SV_TL0_CT", "shortDesc": "Tilt 0 is used for control", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Yaw", "value": 1}, {"description": "Pitch", "value": 2}, {"description": "Yaw and Pitch", "value": 3}]}, {"category": "Standard", "decimalPlaces": 0, "default": 90.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the maximum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL0_MAXA", "shortDesc": "Tilt Servo 0 Tilt Angle at Maximum", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 0.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the minimum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL0_MINA", "shortDesc": "Tilt Servo 0 Tilt Angle at Minimum", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "Defines the direction the servo tilts towards when moving towards the maximum tilt angle.\nFor example if the minimum tilt angle is -90, the maximum 90, and the direction 'Towards Front',\nthe motor axis aligns with the XZ-plane, points towards -X at the minimum and +X at the maximum tilt.", "max": 359, "min": 0, "name": "CA_SV_TL0_TD", "shortDesc": "Tilt Servo 0 Tilt Direction", "type": "Int32", "values": [{"description": "Towards Front", "value": 0}, {"description": "Towards Right", "value": 90}]}, {"category": "Standard", "default": 1, "group": "Geometry", "longDesc": "Define if this servo is used for additional control.", "name": "CA_SV_TL1_CT", "shortDesc": "Tilt 1 is used for control", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Yaw", "value": 1}, {"description": "Pitch", "value": 2}, {"description": "Yaw and Pitch", "value": 3}]}, {"category": "Standard", "decimalPlaces": 0, "default": 90.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the maximum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL1_MAXA", "shortDesc": "Tilt Servo 1 Tilt Angle at Maximum", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 0.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the minimum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL1_MINA", "shortDesc": "Tilt Servo 1 Tilt Angle at Minimum", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "Defines the direction the servo tilts towards when moving towards the maximum tilt angle.\nFor example if the minimum tilt angle is -90, the maximum 90, and the direction 'Towards Front',\nthe motor axis aligns with the XZ-plane, points towards -X at the minimum and +X at the maximum tilt.", "max": 359, "min": 0, "name": "CA_SV_TL1_TD", "shortDesc": "Tilt Servo 1 Tilt Direction", "type": "Int32", "values": [{"description": "Towards Front", "value": 0}, {"description": "Towards Right", "value": 90}]}, {"category": "Standard", "default": 1, "group": "Geometry", "longDesc": "Define if this servo is used for additional control.", "name": "CA_SV_TL2_CT", "shortDesc": "Tilt 2 is used for control", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Yaw", "value": 1}, {"description": "Pitch", "value": 2}, {"description": "Yaw and Pitch", "value": 3}]}, {"category": "Standard", "decimalPlaces": 0, "default": 90.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the maximum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL2_MAXA", "shortDesc": "Tilt Servo 2 Tilt Angle at Maximum", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 0.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the minimum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL2_MINA", "shortDesc": "Tilt Servo 2 Tilt Angle at Minimum", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "Defines the direction the servo tilts towards when moving towards the maximum tilt angle.\nFor example if the minimum tilt angle is -90, the maximum 90, and the direction 'Towards Front',\nthe motor axis aligns with the XZ-plane, points towards -X at the minimum and +X at the maximum tilt.", "max": 359, "min": 0, "name": "CA_SV_TL2_TD", "shortDesc": "Tilt Servo 2 Tilt Direction", "type": "Int32", "values": [{"description": "Towards Front", "value": 0}, {"description": "Towards Right", "value": 90}]}, {"category": "Standard", "default": 1, "group": "Geometry", "longDesc": "Define if this servo is used for additional control.", "name": "CA_SV_TL3_CT", "shortDesc": "Tilt 3 is used for control", "type": "Int32", "values": [{"description": "None", "value": 0}, {"description": "Yaw", "value": 1}, {"description": "Pitch", "value": 2}, {"description": "Yaw and Pitch", "value": 3}]}, {"category": "Standard", "decimalPlaces": 0, "default": 90.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the maximum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL3_MAXA", "shortDesc": "Tilt Servo 3 Tilt Angle at Maximum", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 0.0, "group": "Geometry", "longDesc": "Defines the tilt angle when the servo is at the minimum.\nAn angle of zero means upwards.", "max": 90.0, "min": -90.0, "name": "CA_SV_TL3_MINA", "shortDesc": "Tilt Servo 3 Tilt Angle at Minimum", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "Geometry", "longDesc": "Defines the direction the servo tilts towards when moving towards the maximum tilt angle.\nFor example if the minimum tilt angle is -90, the maximum 90, and the direction 'Towards Front',\nthe motor axis aligns with the XZ-plane, points towards -X at the minimum and +X at the maximum tilt.", "max": 359, "min": 0, "name": "CA_SV_TL3_TD", "shortDesc": "Tilt Servo 3 Tilt Direction", "type": "Int32", "values": [{"description": "Towards Front", "value": 0}, {"description": "Towards Right", "value": 90}]}, {"category": "Standard", "default": 0, "group": "Geometry", "name": "CA_SV_TL_COUNT", "shortDesc": "Total number of Tilt Servos", "type": "Int32", "values": [{"description": "0", "value": 0}, {"description": "1", "value": 1}, {"description": "2", "value": 2}, {"description": "3", "value": 3}, {"description": "4", "value": 4}]}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "Hover Thrust Estimator", "longDesc": "Sets the number of standard deviations used\nby the innovation consistency test.", "max": 10.0, "min": 1.0, "name": "HTE_ACC_GATE", "shortDesc": "Gate size for acceleration fusion", "type": "Float", "units": "SD"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "Hover Thrust Estimator", "longDesc": "Sets the number of standard deviations used\nby the innovation consistency test.", "max": 1.0, "min": 0.0, "name": "HTE_HT_ERR_INIT", "shortDesc": "1-sigma initial hover thrust uncertainty", "type": "Float", "units": "normalized_thrust"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.0036, "group": "Hover Thrust Estimator", "longDesc": "Reduce to make the hover thrust estimate\nmore stable, increase if the real hover thrust\nis expected to change quickly over time.", "max": 1.0, "min": 0.0001, "name": "HTE_HT_NOISE", "shortDesc": "Hover thrust process noise", "type": "Float", "units": "normalized_thrust/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Hover Thrust Estimator", "longDesc": "Defines the range of the hover thrust estimate around MPC_THR_HOVER.\nA value of 0.2 with MPC_THR_HOVER at 0.5 results in a range of [0.3, 0.7].\nSet to a large value if the vehicle operates in varying physical conditions that\naffect the required hover thrust strongly (e.g. differently sized payloads).", "max": 0.4, "min": 0.01, "name": "HTE_THR_RANGE", "shortDesc": "Max deviation from MPC_THR_HOVER", "type": "Float", "units": "normalized_thrust"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Hover Thrust Estimator", "longDesc": "Above this speed, the measurement noise is linearly increased\nto reduce the sensitivity of the estimator from biased measurement.\nSet to a low value on vehicles with large lifting surfaces.", "max": 20.0, "min": 1.0, "name": "HTE_VXY_THR", "shortDesc": "Horizontal velocity threshold for sensitivity reduction", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.0, "group": "Hover Thrust Estimator", "longDesc": "Above this speed, the measurement noise is linearly increased\nto reduce the sensitivity of the estimator from biased measurement.\nSet to a low value on vehicles affected by air drag when climbing or descending.", "max": 10.0, "min": 1.0, "name": "HTE_VZ_THR", "shortDesc": "Vertical velocity threshold for sensitivity reduction", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.0, "group": "Land Detector", "longDesc": "Maximum airspeed allowed in the landed state", "max": 30.0, "min": 2.0, "name": "LNDFW_AIRSPD_MAX", "shortDesc": "Fixed-wing land detector: Max airspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.5, "group": "Land Detector", "longDesc": "Maximum allowed norm of the angular velocity in the landed state.\nOnly used if neither airspeed nor groundspeed can be used for landing detection.", "name": "LNDFW_ROT_MAX", "shortDesc": "Fixed-wing land detector: max rotational speed", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.0, "group": "Land Detector", "longDesc": "Time the land conditions (speeds and acceleration) have to be satisfied to detect a landing.", "min": 0.1, "name": "LNDFW_TRIG_TIME", "rebootRequired": true, "shortDesc": "Fixed-wing land detection trigger time", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Land Detector", "longDesc": "Maximum horizontal velocity allowed in the landed state.\nA factor of 0.7 is applied in case of airspeed-less flying\n(either because no sensor is present or sensor data got invalid in flight).", "max": 20.0, "min": 0.5, "name": "LNDFW_VEL_XY_MAX", "shortDesc": "Fixed-wing land detector: Max horizontal velocity threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Land Detector", "longDesc": "Maximum vertical velocity allowed in the landed state.", "max": 20.0, "min": 0.1, "name": "LNDFW_VEL_Z_MAX", "shortDesc": "Fixed-wing land detector: Max vertiacal velocity threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 8.0, "group": "Land Detector", "longDesc": "Maximum horizontal (x,y body axes) acceleration allowed in the landed state", "max": 30.0, "min": 2.0, "name": "LNDFW_XYACC_MAX", "shortDesc": "Fixed-wing land detector: Max horizontal acceleration", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "Land Detector", "longDesc": "The height above ground below which ground effect creates barometric altitude errors.\nA negative value indicates no ground effect.", "min": -1.0, "name": "LNDMC_ALT_GND", "shortDesc": "Ground effect altitude for multicopters", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "Land Detector", "longDesc": "Maximum allowed norm of the angular velocity (roll, pitch) in the landed state.", "name": "LNDMC_ROT_MAX", "shortDesc": "Multicopter max rotational speed", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Land Detector", "longDesc": "Total time it takes to go through all three land detection stages:\nground contact, maybe landed, landed\nwhen all necessary conditions are constantly met.", "max": 10.0, "min": 0.1, "name": "LNDMC_TRIG_TIME", "shortDesc": "Multicopter land detection trigger time", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.5, "group": "Land Detector", "longDesc": "Maximum horizontal velocity allowed in the landed state", "name": "LNDMC_XY_VEL_MAX", "shortDesc": "Multicopter max horizontal velocity", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.25, "group": "Land Detector", "longDesc": "Vertical velocity threshold to detect landing.\nHas to be set lower than the expected minimal speed for landing,\nwhich is either MPC_LAND_SPEED or MPC_LAND_CRWL.\nThis is enforced by an automatic check.", "min": 0.0, "name": "LNDMC_Z_VEL_MAX", "shortDesc": "Multicopter vertical velocity threshold", "type": "Float", "units": "m/s"}, {"category": "System", "default": 0, "group": "Land Detector", "longDesc": "Total flight time of this autopilot. Higher 32 bits of the value.\nFlight time in microseconds = (LND_FLIGHT_T_HI << 32) | LND_FLIGHT_T_LO.", "min": 0, "name": "LND_FLIGHT_T_HI", "shortDesc": "Total flight time in microseconds", "type": "Int32", "volatile": true}, {"category": "System", "default": 0, "group": "Land Detector", "longDesc": "Total flight time of this autopilot. Lower 32 bits of the value.\nFlight time in microseconds = (LND_FLIGHT_T_HI << 32) | LND_FLIGHT_T_LO.", "min": 0, "name": "LND_FLIGHT_T_LO", "shortDesc": "Total flight time in microseconds", "type": "Int32", "volatile": true}, {"category": "Standard", "decimalPlaces": 2, "default": 10.0, "group": "Landing Target Estimator", "longDesc": "Variance of acceleration measurement used for landing target position prediction.\nHigher values results in tighter following of the measurements and more lenient outlier rejection", "min": 0.01, "name": "LTEST_ACC_UNC", "shortDesc": "Acceleration uncertainty", "type": "Float", "units": "(m/s^2)^2"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.005, "group": "Landing Target Estimator", "longDesc": "Variance of the landing target measurement from the driver.\nHigher values result in less aggressive following of the measurement and a smoother output as well as fewer rejected measurements.", "name": "LTEST_MEAS_UNC", "shortDesc": "Landing target measurement uncertainty", "type": "Float", "units": "tan(rad)^2"}, {"category": "Standard", "default": 0, "group": "Landing Target Estimator", "longDesc": "Configure the mode of the landing target. Depending on the mode, the landing target observations are used differently to aid position estimation.\nMode Moving: The landing target may be moving around while in the field of view of the vehicle. Landing target measurements are not used to aid positioning.\nMode Stationary: The landing target is stationary. Measured velocity w.r.t. the landing target is used to aid velocity estimation.", "max": 1, "min": 0, "name": "LTEST_MODE", "shortDesc": "Landing target mode", "type": "Int32", "values": [{"description": "Moving", "value": 0}, {"description": "Stationary", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "Landing Target Estimator", "longDesc": "Initial variance of the relative landing target position in x and y direction", "min": 0.001, "name": "LTEST_POS_UNC_IN", "shortDesc": "Initial landing target position uncertainty", "type": "Float", "units": "m^2"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Landing Target Estimator", "longDesc": "Landing target x measurements are scaled by this factor before being used", "min": 0.01, "name": "LTEST_SCALE_X", "shortDesc": "Scale factor for sensor measurements in sensor x axis", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Landing Target Estimator", "longDesc": "Landing target y measurements are scaled by this factor before being used", "min": 0.01, "name": "LTEST_SCALE_Y", "shortDesc": "Scale factor for sensor measurements in sensor y axis", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Landing Target Estimator", "name": "LTEST_SENS_POS_X", "rebootRequired": true, "shortDesc": "X Position of IRLOCK in body frame (forward)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Landing Target Estimator", "name": "LTEST_SENS_POS_Y", "rebootRequired": true, "shortDesc": "Y Position of IRLOCK in body frame (right)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Landing Target Estimator", "name": "LTEST_SENS_POS_Z", "rebootRequired": true, "shortDesc": "Z Position of IRLOCK in body frame (downward)", "type": "Float", "units": "m"}, {"category": "Standard", "default": 2, "group": "Landing Target Estimator", "longDesc": "Default orientation of Yaw 90\u00b0", "max": 40, "min": -1, "name": "LTEST_SENS_ROT", "rebootRequired": true, "shortDesc": "Rotation of IRLOCK sensor relative to airframe", "type": "Int32", "values": [{"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "Landing Target Estimator", "longDesc": "Initial variance of the relative landing target velocity in x and y directions", "min": 0.001, "name": "LTEST_VEL_UNC_IN", "shortDesc": "Initial landing target velocity uncertainty", "type": "Float", "units": "(m/s)^2"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.012, "group": "Local Position Estimator", "longDesc": "Data sheet noise density = 150ug/sqrt(Hz) = 0.0015 m/s^2/sqrt(Hz)\nLarger than data sheet to account for tilt error.", "max": 2.0, "min": 1e-05, "name": "LPE_ACC_XY", "shortDesc": "Accelerometer xy noise density", "type": "Float", "units": "m/s^2/sqrt(Hz)"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.02, "group": "Local Position Estimator", "longDesc": "Data sheet noise density = 150ug/sqrt(Hz) = 0.0015 m/s^2/sqrt(Hz)", "max": 2.0, "min": 1e-05, "name": "LPE_ACC_Z", "shortDesc": "Accelerometer z noise density", "type": "Float", "units": "m/s^2/sqrt(Hz)"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.0, "group": "Local Position Estimator", "max": 100.0, "min": 0.01, "name": "LPE_BAR_Z", "shortDesc": "Barometric presssure altitude z standard deviation", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Local Position Estimator", "name": "LPE_EN", "shortDesc": "Local position estimator enable (unsupported)", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 3.0, "group": "Local Position Estimator", "max": 5.0, "min": 1.0, "name": "LPE_EPH_MAX", "shortDesc": "Max EPH allowed for GPS initialization", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 5.0, "group": "Local Position Estimator", "max": 5.0, "min": 1.0, "name": "LPE_EPV_MAX", "shortDesc": "Max EPV allowed for GPS initialization", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Local Position Estimator", "longDesc": "By initializing the estimator to the LPE_LAT/LON parameters when global information is unavailable", "max": 1, "min": 0, "name": "LPE_FAKE_ORIGIN", "shortDesc": "Enable publishing of a fake global position (e.g for AUTO missions using Optical Flow)", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.001, "group": "Local Position Estimator", "max": 2.0, "min": 0.0, "name": "LPE_FGYRO_HP", "shortDesc": "Flow gyro high pass filter cut off frequency", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Local Position Estimator", "max": 1.0, "min": -1.0, "name": "LPE_FLW_OFF_Z", "shortDesc": "Optical flow z offset from center", "type": "Float", "units": "m"}, {"category": "Standard", "default": 150, "group": "Local Position Estimator", "max": 255, "min": 0, "name": "LPE_FLW_QMIN", "shortDesc": "Optical flow minimum quality threshold", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 3, "default": 7.0, "group": "Local Position Estimator", "max": 10.0, "min": 0.1, "name": "LPE_FLW_R", "shortDesc": "Optical flow rotation (roll/pitch) noise gain", "type": "Float", "units": "m/s/rad"}, {"category": "Standard", "decimalPlaces": 3, "default": 7.0, "group": "Local Position Estimator", "max": 10.0, "min": 0.0, "name": "LPE_FLW_RR", "shortDesc": "Optical flow angular velocity noise gain", "type": "Float", "units": "m/rad"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.3, "group": "Local Position Estimator", "max": 10.0, "min": 0.1, "name": "LPE_FLW_SCALE", "shortDesc": "Optical flow scale", "type": "Float", "units": "m"}, {"bitmask": [{"description": "fuse GPS, requires GPS for alt. init", "index": 0}, {"description": "fuse optical flow", "index": 1}, {"description": "fuse vision position", "index": 2}, {"description": "fuse landing target", "index": 3}, {"description": "fuse land detector", "index": 4}, {"description": "pub agl as lpos down", "index": 5}, {"description": "flow gyro compensation", "index": 6}, {"description": "fuse baro", "index": 7}], "category": "Standard", "default": 145, "group": "Local Position Estimator", "longDesc": "Set bits in the following positions to enable:\n0 : Set to true to fuse GPS data if available, also requires GPS for altitude init\n1 : Set to true to fuse optical flow data if available\n2 : Set to true to fuse vision position\n3 : Set to true to enable landing target\n4 : Set to true to fuse land detector\n5 : Set to true to publish AGL as local position down component\n6 : Set to true to enable flow gyro compensation\n7 : Set to true to enable baro fusion\ndefault (145 - GPS, baro, land detector)", "max": 255, "min": 0, "name": "LPE_FUSION", "shortDesc": "Integer bitmask controlling data fusion", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.29, "group": "Local Position Estimator", "max": 0.4, "min": 0.0, "name": "LPE_GPS_DELAY", "shortDesc": "GPS delay compensaton", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.25, "group": "Local Position Estimator", "longDesc": "EPV used if greater than this value.", "max": 2.0, "min": 0.01, "name": "LPE_GPS_VXY", "shortDesc": "GPS xy velocity standard deviation", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.25, "group": "Local Position Estimator", "max": 2.0, "min": 0.01, "name": "LPE_GPS_VZ", "shortDesc": "GPS z velocity standard deviation", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Local Position Estimator", "max": 5.0, "min": 0.01, "name": "LPE_GPS_XY", "shortDesc": "Minimum GPS xy standard deviation, uses reported EPH if greater", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.0, "group": "Local Position Estimator", "max": 200.0, "min": 0.01, "name": "LPE_GPS_Z", "shortDesc": "Minimum GPS z standard deviation, uses reported EPV if greater", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Local Position Estimator", "max": 10.0, "min": 0.01, "name": "LPE_LAND_VXY", "shortDesc": "Land detector xy velocity standard deviation", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.03, "group": "Local Position Estimator", "max": 10.0, "min": 0.001, "name": "LPE_LAND_Z", "shortDesc": "Land detector z standard deviation", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 8, "default": 47.397742, "group": "Local Position Estimator", "max": 90.0, "min": -90.0, "name": "LPE_LAT", "shortDesc": "Local origin latitude for nav w/o GPS", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Local Position Estimator", "max": 1.0, "min": -1.0, "name": "LPE_LDR_OFF_Z", "shortDesc": "Lidar z offset from center of vehicle +down", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.03, "group": "Local Position Estimator", "max": 1.0, "min": 0.01, "name": "LPE_LDR_Z", "shortDesc": "Lidar z standard deviation", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 8, "default": 8.545594, "group": "Local Position Estimator", "max": 180.0, "min": -180.0, "name": "LPE_LON", "shortDesc": "Local origin longitude for nav w/o GPS", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0001, "group": "Local Position Estimator", "max": 10.0, "min": 0.0, "name": "LPE_LT_COV", "shortDesc": "Minimum landing target standard covariance, uses reported covariance if greater", "type": "Float", "units": "m^2"}, {"category": "Standard", "decimalPlaces": 8, "default": 0.001, "group": "Local Position Estimator", "max": 1.0, "min": 0.0, "name": "LPE_PN_B", "shortDesc": "Accel bias propagation noise density", "type": "Float", "units": "m/s^3/sqrt(Hz)"}, {"category": "Standard", "decimalPlaces": 8, "default": 0.1, "group": "Local Position Estimator", "longDesc": "Increase to trust measurements more.\nDecrease to trust model more.", "max": 1.0, "min": 0.0, "name": "LPE_PN_P", "shortDesc": "Position propagation noise density", "type": "Float", "units": "m/s/sqrt(Hz)"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.001, "group": "Local Position Estimator", "max": 1.0, "min": 0.0, "name": "LPE_PN_T", "shortDesc": "Terrain random walk noise density, hilly/outdoor (0.1), flat/Indoor (0.001)", "type": "Float", "units": "m/s/sqrt(Hz)"}, {"category": "Standard", "decimalPlaces": 8, "default": 0.1, "group": "Local Position Estimator", "longDesc": "Increase to trust measurements more.\nDecrease to trust model more.", "max": 1.0, "min": 0.0, "name": "LPE_PN_V", "shortDesc": "Velocity propagation noise density", "type": "Float", "units": "m/s^2/sqrt(Hz)"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Local Position Estimator", "max": 1.0, "min": -1.0, "name": "LPE_SNR_OFF_Z", "shortDesc": "Sonar z offset from center of vehicle +down", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.05, "group": "Local Position Estimator", "max": 1.0, "min": 0.01, "name": "LPE_SNR_Z", "shortDesc": "Sonar z standard deviation", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Local Position Estimator", "longDesc": "Used to calculate increased terrain random walk nosie due to movement.", "max": 100.0, "min": 0.0, "name": "LPE_T_MAX_GRADE", "shortDesc": "Terrain maximum percent grade, hilly/outdoor (100 = 45 deg), flat/Indoor (0 = 0 deg)", "type": "Float", "units": "%"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.001, "group": "Local Position Estimator", "max": 1.0, "min": 0.0001, "name": "LPE_VIC_P", "shortDesc": "Vicon position standard deviation", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Local Position Estimator", "longDesc": "Set to zero to enable automatic compensation from measurement timestamps", "max": 0.1, "min": 0.0, "name": "LPE_VIS_DELAY", "shortDesc": "Vision delay compensation", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "Local Position Estimator", "max": 1.0, "min": 0.01, "name": "LPE_VIS_XY", "shortDesc": "Vision xy standard deviation", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.5, "group": "Local Position Estimator", "max": 100.0, "min": 0.01, "name": "LPE_VIS_Z", "shortDesc": "Vision z standard deviation", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.3, "group": "Local Position Estimator", "max": 1.0, "min": 0.01, "name": "LPE_VXY_PUB", "shortDesc": "Required velocity xy standard deviation to publish position", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 0, "default": 5.0, "group": "Local Position Estimator", "max": 1000.0, "min": 5.0, "name": "LPE_X_LP", "shortDesc": "Cut frequency for state publication", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Local Position Estimator", "max": 5.0, "min": 0.3, "name": "LPE_Z_PUB", "shortDesc": "Required z standard deviation to publish altitude/ terrain", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "This allows a ground control station to automatically find the drone\non the local network.", "name": "MAV_0_BROADCAST", "shortDesc": "Broadcast heartbeats on local network for MAVLink instance 0", "type": "Int32", "values": [{"description": "Never broadcast", "value": 0}, {"description": "Always broadcast", "value": 1}, {"description": "Only multicast", "value": 2}]}, {"category": "Standard", "default": 2, "group": "MAVLink", "longDesc": "This is used to force flow control on or off for the the mavlink\ninstance. By default it is auto detected. Use when auto detection fails.", "name": "MAV_0_FLOW_CTRL", "rebootRequired": true, "shortDesc": "Enable serial flow control for instance 0", "type": "Int32", "values": [{"description": "Force off", "value": 0}, {"description": "Force on", "value": 1}, {"description": "Auto-detected", "value": 2}]}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "If enabled, forward incoming MAVLink messages to other MAVLink ports if the\nmessage is either broadcast or the target is not the autopilot.\nThis allows for example a GCS to talk to a camera that is connected to the\nautopilot via MAVLink (on a different link than the GCS).", "name": "MAV_0_FORWARD", "rebootRequired": true, "shortDesc": "Enable MAVLink Message forwarding for instance 0", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.015, "group": "MAVLink", "increment": 0.001, "longDesc": "Positive real value that configures the transmission frequency of the\nHIGH_LATENCY2 stream for instance 0, configured in iridium mode.\nThis parameter has no effect if the instance mode is different from iridium.", "max": 50.0, "min": 0.0, "name": "MAV_0_HL_FREQ", "rebootRequired": true, "shortDesc": "Configures the frequency of HIGH_LATENCY2 stream for instance 0", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "The MAVLink Mode defines the set of streamed messages (for example the\nvehicle's attitude) and their sending rates.", "name": "MAV_0_MODE", "rebootRequired": true, "shortDesc": "MAVLink Mode for instance 0", "type": "Int32", "values": [{"description": "Normal", "value": 0}, {"description": "Custom", "value": 1}, {"description": "Onboard", "value": 2}, {"description": "OSD", "value": 3}, {"description": "Magic", "value": 4}, {"description": "Config", "value": 5}, {"description": "Minimal", "value": 7}, {"description": "External Vision", "value": 8}, {"description": "Gimbal", "value": 10}, {"description": "Onboard Low Bandwidth", "value": 11}, {"description": "uAvionix", "value": 12}, {"description": "Low Bandwidth", "value": 13}]}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "If enabled, MAVLink messages will be throttled according to\n`txbuf` field reported by radio_status.\nRequires a radio to send the mavlink message RADIO_STATUS.", "name": "MAV_0_RADIO_CTL", "rebootRequired": true, "shortDesc": "Enable software throttling of mavlink on instance 0", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1200, "group": "MAVLink", "longDesc": "Configure the maximum sending rate for the MAVLink streams in Bytes/sec.\nIf the configured streams exceed the maximum rate, the sending rate of\neach stream is automatically decreased.\nIf this is set to 0 a value of half of the theoretical maximum bandwidth is used.\nThis corresponds to baudrate/20 Bytes/s (baudrate/10 = maximum data rate on\n8N1-configured links).", "min": 0, "name": "MAV_0_RATE", "rebootRequired": true, "shortDesc": "Maximum MAVLink sending rate for instance 0", "type": "Int32", "units": "B/s"}, {"category": "Standard", "default": 14550, "group": "MAVLink", "longDesc": "If ethernet enabled and selected as configuration for MAVLink instance 0,\nselected remote port will be set and used in MAVLink instance 0.", "name": "MAV_0_REMOTE_PRT", "rebootRequired": true, "shortDesc": "MAVLink Remote Port for instance 0", "type": "Int32"}, {"category": "Standard", "default": 14556, "group": "MAVLink", "longDesc": "If ethernet enabled and selected as configuration for MAVLink instance 0,\nselected udp port will be set and used in MAVLink instance 0.", "name": "MAV_0_UDP_PRT", "rebootRequired": true, "shortDesc": "MAVLink Network Port for instance 0", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "This allows a ground control station to automatically find the drone\non the local network.", "name": "MAV_1_BROADCAST", "shortDesc": "Broadcast heartbeats on local network for MAVLink instance 1", "type": "Int32", "values": [{"description": "Never broadcast", "value": 0}, {"description": "Always broadcast", "value": 1}, {"description": "Only multicast", "value": 2}]}, {"category": "Standard", "default": 2, "group": "MAVLink", "longDesc": "This is used to force flow control on or off for the the mavlink\ninstance. By default it is auto detected. Use when auto detection fails.", "name": "MAV_1_FLOW_CTRL", "rebootRequired": true, "shortDesc": "Enable serial flow control for instance 1", "type": "Int32", "values": [{"description": "Force off", "value": 0}, {"description": "Force on", "value": 1}, {"description": "Auto-detected", "value": 2}]}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "If enabled, forward incoming MAVLink messages to other MAVLink ports if the\nmessage is either broadcast or the target is not the autopilot.\nThis allows for example a GCS to talk to a camera that is connected to the\nautopilot via MAVLink (on a different link than the GCS).", "name": "MAV_1_FORWARD", "rebootRequired": true, "shortDesc": "Enable MAVLink Message forwarding for instance 1", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.015, "group": "MAVLink", "increment": 0.001, "longDesc": "Positive real value that configures the transmission frequency of the\nHIGH_LATENCY2 stream for instance 1, configured in iridium mode.\nThis parameter has no effect if the instance mode is different from iridium.", "max": 50.0, "min": 0.0, "name": "MAV_1_HL_FREQ", "rebootRequired": true, "shortDesc": "Configures the frequency of HIGH_LATENCY2 stream for instance 1", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 2, "group": "MAVLink", "longDesc": "The MAVLink Mode defines the set of streamed messages (for example the\nvehicle's attitude) and their sending rates.", "name": "MAV_1_MODE", "rebootRequired": true, "shortDesc": "MAVLink Mode for instance 1", "type": "Int32", "values": [{"description": "Normal", "value": 0}, {"description": "Custom", "value": 1}, {"description": "Onboard", "value": 2}, {"description": "OSD", "value": 3}, {"description": "Magic", "value": 4}, {"description": "Config", "value": 5}, {"description": "Minimal", "value": 7}, {"description": "External Vision", "value": 8}, {"description": "Gimbal", "value": 10}, {"description": "Onboard Low Bandwidth", "value": 11}, {"description": "uAvionix", "value": 12}, {"description": "Low Bandwidth", "value": 13}]}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "If enabled, MAVLink messages will be throttled according to\n`txbuf` field reported by radio_status.\nRequires a radio to send the mavlink message RADIO_STATUS.", "name": "MAV_1_RADIO_CTL", "rebootRequired": true, "shortDesc": "Enable software throttling of mavlink on instance 1", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "Configure the maximum sending rate for the MAVLink streams in Bytes/sec.\nIf the configured streams exceed the maximum rate, the sending rate of\neach stream is automatically decreased.\nIf this is set to 0 a value of half of the theoretical maximum bandwidth is used.\nThis corresponds to baudrate/20 Bytes/s (baudrate/10 = maximum data rate on\n8N1-configured links).", "min": 0, "name": "MAV_1_RATE", "rebootRequired": true, "shortDesc": "Maximum MAVLink sending rate for instance 1", "type": "Int32", "units": "B/s"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "If ethernet enabled and selected as configuration for MAVLink instance 1,\nselected remote port will be set and used in MAVLink instance 1.", "name": "MAV_1_REMOTE_PRT", "rebootRequired": true, "shortDesc": "MAVLink Remote Port for instance 1", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "If ethernet enabled and selected as configuration for MAVLink instance 1,\nselected udp port will be set and used in MAVLink instance 1.", "name": "MAV_1_UDP_PRT", "rebootRequired": true, "shortDesc": "MAVLink Network Port for instance 1", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "This allows a ground control station to automatically find the drone\non the local network.", "name": "MAV_2_BROADCAST", "shortDesc": "Broadcast heartbeats on local network for MAVLink instance 2", "type": "Int32", "values": [{"description": "Never broadcast", "value": 0}, {"description": "Always broadcast", "value": 1}, {"description": "Only multicast", "value": 2}]}, {"category": "Standard", "default": 2, "group": "MAVLink", "longDesc": "This is used to force flow control on or off for the the mavlink\ninstance. By default it is auto detected. Use when auto detection fails.", "name": "MAV_2_FLOW_CTRL", "rebootRequired": true, "shortDesc": "Enable serial flow control for instance 2", "type": "Int32", "values": [{"description": "Force off", "value": 0}, {"description": "Force on", "value": 1}, {"description": "Auto-detected", "value": 2}]}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "If enabled, forward incoming MAVLink messages to other MAVLink ports if the\nmessage is either broadcast or the target is not the autopilot.\nThis allows for example a GCS to talk to a camera that is connected to the\nautopilot via MAVLink (on a different link than the GCS).", "name": "MAV_2_FORWARD", "rebootRequired": true, "shortDesc": "Enable MAVLink Message forwarding for instance 2", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.015, "group": "MAVLink", "increment": 0.001, "longDesc": "Positive real value that configures the transmission frequency of the\nHIGH_LATENCY2 stream for instance 2, configured in iridium mode.\nThis parameter has no effect if the instance mode is different from iridium.", "max": 50.0, "min": 0.0, "name": "MAV_2_HL_FREQ", "rebootRequired": true, "shortDesc": "Configures the frequency of HIGH_LATENCY2 stream for instance 2", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "The MAVLink Mode defines the set of streamed messages (for example the\nvehicle's attitude) and their sending rates.", "name": "MAV_2_MODE", "rebootRequired": true, "shortDesc": "MAVLink Mode for instance 2", "type": "Int32", "values": [{"description": "Normal", "value": 0}, {"description": "Custom", "value": 1}, {"description": "Onboard", "value": 2}, {"description": "OSD", "value": 3}, {"description": "Magic", "value": 4}, {"description": "Config", "value": 5}, {"description": "Minimal", "value": 7}, {"description": "External Vision", "value": 8}, {"description": "Gimbal", "value": 10}, {"description": "Onboard Low Bandwidth", "value": 11}, {"description": "uAvionix", "value": 12}, {"description": "Low Bandwidth", "value": 13}]}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "If enabled, MAVLink messages will be throttled according to\n`txbuf` field reported by radio_status.\nRequires a radio to send the mavlink message RADIO_STATUS.", "name": "MAV_2_RADIO_CTL", "rebootRequired": true, "shortDesc": "Enable software throttling of mavlink on instance 2", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "Configure the maximum sending rate for the MAVLink streams in Bytes/sec.\nIf the configured streams exceed the maximum rate, the sending rate of\neach stream is automatically decreased.\nIf this is set to 0 a value of half of the theoretical maximum bandwidth is used.\nThis corresponds to baudrate/20 Bytes/s (baudrate/10 = maximum data rate on\n8N1-configured links).", "min": 0, "name": "MAV_2_RATE", "rebootRequired": true, "shortDesc": "Maximum MAVLink sending rate for instance 2", "type": "Int32", "units": "B/s"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "If ethernet enabled and selected as configuration for MAVLink instance 2,\nselected remote port will be set and used in MAVLink instance 2.", "name": "MAV_2_REMOTE_PRT", "rebootRequired": true, "shortDesc": "MAVLink Remote Port for instance 2", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "If ethernet enabled and selected as configuration for MAVLink instance 2,\nselected udp port will be set and used in MAVLink instance 2.", "name": "MAV_2_UDP_PRT", "rebootRequired": true, "shortDesc": "MAVLink Network Port for instance 2", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "MAVLink", "max": 250, "min": 1, "name": "MAV_COMP_ID", "rebootRequired": true, "shortDesc": "MAVLink component ID", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "If set to 1 incoming external setpoint messages will be directly forwarded\nto the controllers if in offboard control mode", "name": "MAV_FWDEXTSP", "shortDesc": "Forward external setpoint messages", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "Disabling the parameter hash check functionality will make the mavlink instance\nstream parameters continuously.", "name": "MAV_HASH_CHK_EN", "shortDesc": "Parameter hash check", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "MAVLink", "longDesc": "The mavlink heartbeat message will not be forwarded if this parameter is set to 'disabled'.\nThe main reason for disabling heartbeats to be forwarded is because they confuse dronekit.", "name": "MAV_HB_FORW_EN", "shortDesc": "Heartbeat message forwarding", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 2, "group": "MAVLink", "name": "MAV_PROTO_VER", "shortDesc": "MAVLink protocol version", "type": "Int32", "values": [{"description": "Version 1 with auto-upgrade to v2 if detected", "value": 1}, {"description": "Version 2", "value": 2}]}, {"category": "Standard", "default": 5, "group": "MAVLink", "longDesc": "If the connected radio stops reporting RADIO_STATUS for a certain time,\na warning is triggered and, if MAV_X_RADIO_CTL is enabled, the software-flow\ncontrol is reset.", "max": 250, "min": 1, "name": "MAV_RADIO_TOUT", "shortDesc": "Timeout in seconds for the RADIO_STATUS reports coming in", "type": "Int32", "units": "s"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "When non-zero the MAVLink app will attempt to configure the\nSiK radio to this ID and re-set the parameter to 0. If the value\nis negative it will reset the complete radio config to\nfactory defaults. Only applies if this mavlink instance is going through a SiK radio", "max": 240, "min": -1, "name": "MAV_SIK_RADIO_ID", "shortDesc": "MAVLink SiK Radio ID", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "MAVLink", "max": 250, "min": 1, "name": "MAV_SYS_ID", "rebootRequired": true, "shortDesc": "MAVLink system ID", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "TELEM2 on Skynode only.", "name": "MAV_S_FORWARD", "rebootRequired": true, "shortDesc": "Enable MAVLink forwarding on TELEM2", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 11, "group": "MAVLink", "longDesc": "The MAVLink Mode defines the set of streamed messages (for example the\nvehicle's attitude) and their sending rates.", "name": "MAV_S_MODE", "rebootRequired": true, "shortDesc": "MAVLink Mode for SOM to FMU communication channel", "type": "Int32", "values": [{"description": "Normal", "value": 0}, {"description": "Onboard", "value": 2}, {"description": "Config", "value": 5}, {"description": "Minimal", "value": 7}, {"description": "Onboard Low Bandwidth", "value": 11}, {"description": "Low Bandwidth", "value": 13}]}, {"category": "Standard", "default": 0, "group": "MAVLink", "max": 22, "min": 0, "name": "MAV_TYPE", "shortDesc": "MAVLink airframe type", "type": "Int32", "values": [{"description": "Generic micro air vehicle", "value": 0}, {"description": "Fixed wing aircraft", "value": 1}, {"description": "Quadrotor", "value": 2}, {"description": "Coaxial helicopter", "value": 3}, {"description": "Normal helicopter with tail rotor", "value": 4}, {"description": "Airship, controlled", "value": 7}, {"description": "Free balloon, uncontrolled", "value": 8}, {"description": "Ground rover", "value": 10}, {"description": "Surface vessel, boat, ship", "value": 11}, {"description": "Submarine", "value": 12}, {"description": "Hexarotor", "value": 13}, {"description": "Octorotor", "value": 14}, {"description": "Tricopter", "value": 15}, {"description": "VTOL Two-rotor Tailsitter", "value": 19}, {"description": "VTOL Quad-rotor Tailsitter", "value": 20}, {"description": "VTOL Tiltrotor", "value": 21}, {"description": "VTOL Standard (separate fixed rotors for hover and cruise flight)", "value": 22}, {"description": "VTOL Tailsitter", "value": 23}]}, {"category": "Standard", "default": 0, "group": "MAVLink", "longDesc": "If set to 1 incoming HIL GPS messages are parsed.", "name": "MAV_USEHILGPS", "shortDesc": "Use/Accept HIL GPS message even if not in HIL mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "Magnetometer Bias Estimator", "longDesc": "This enables continuous calibration of the magnetometers\nbefore takeoff using gyro data.", "name": "MBE_ENABLE", "rebootRequired": true, "shortDesc": "Enable online mag bias calibration", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 18.0, "group": "Magnetometer Bias Estimator", "increment": 0.1, "longDesc": "Increase to make the estimator more responsive\nDecrease to make the estimator more robust to noise", "max": 100.0, "min": 0.1, "name": "MBE_LEARN_GAIN", "shortDesc": "Mag bias estimator learning gain", "type": "Float"}, {"category": "Standard", "default": 1, "group": "Manual Control", "longDesc": "This determines if moving the left stick to the lower right\narms and to the lower left disarms the vehicle.", "name": "MAN_ARM_GESTURE", "shortDesc": "Enable arm/disarm stick gesture", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Manual Control", "increment": 0.01, "longDesc": "Range around stick center ignored to prevent\nvehicle drift from stick hardware inaccuracy.\nDoes not apply to any precise constant input like\nthrottle and attitude or rate piloting.", "max": 1.0, "min": 0.0, "name": "MAN_DEADZONE", "shortDesc": "Deadzone for sticks (only specific use cases)", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Manual Control", "longDesc": "The timeout for holding the left stick to the lower left\nand the right stick to the lower right at the same time until the gesture\nkills the actuators one-way.\nA negative value disables the feature.", "max": 15.0, "min": -1.0, "name": "MAN_KILL_GEST_T", "shortDesc": "Trigger time for kill stick gesture", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Mission", "longDesc": "Ensure:\ngripper: NAV_CMD_DO_GRIPPER\nhas released before continuing mission.\nwinch: CMD_DO_WINCH\nhas delivered before continuing mission.\ngimbal: CMD_DO_GIMBAL_MANAGER_PITCHYAW\nhas reached the commanded orientation before beginning to take pictures.", "min": 0.0, "name": "MIS_COMMAND_TOUT", "shortDesc": "Timeout to allow the payload to execute the mission command", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 10000.0, "group": "Mission", "increment": 100.0, "longDesc": "There will be a warning message if the current waypoint is more distant than MIS_DIST_1WP from Home.\nHas no effect on mission validity.\nSet a value of zero or less to disable.", "max": 100000.0, "min": -1.0, "name": "MIS_DIST_1WP", "shortDesc": "Maximal horizontal distance from Home to first waypoint", "type": "Float", "units": "m"}, {"category": "Standard", "default": 30, "group": "Mission", "longDesc": "Minimum altitude above landing point that the vehicle will climb to after an aborted landing.\nThen vehicle will loiter in this altitude until further command is received.\nOnly applies to fixed-wing vehicles.", "min": 0, "name": "MIS_LND_ABRT_ALT", "shortDesc": "Landing abort min altitude", "type": "Int32", "units": "m"}, {"category": "Standard", "default": 0, "group": "Mission", "longDesc": "If enabled, yaw commands will be sent to the mount and the vehicle will follow its heading towards the flight direction.\nIf disabled, the vehicle will yaw towards the ROI.", "max": 1, "min": 0, "name": "MIS_MNT_YAW_CTL", "shortDesc": "Enable yaw control of the mount. (Only affects multicopters and ROI mission items)", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "Enable", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 2.5, "group": "Mission", "increment": 0.5, "longDesc": "This is the relative altitude the system will take off to\nif not otherwise specified.", "min": 0.0, "name": "MIS_TAKEOFF_ALT", "shortDesc": "Default take-off altitude", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Mission", "longDesc": "Specifies if a mission has to contain a takeoff and/or mission landing.\nValidity of configured takeoffs/landings is checked independently of the setting here.", "name": "MIS_TKO_LAND_REQ", "shortDesc": "Mission takeoff/landing required", "type": "Int32", "values": [{"description": "No requirements", "value": 0}, {"description": "Require a takeoff", "value": 1}, {"description": "Require a landing", "value": 2}, {"description": "Require a takeoff and a landing", "value": 3}, {"description": "Require both a takeoff and a landing, or neither", "value": 4}, {"description": "Same as previous when landed, in-air require landing only if no valid VTOL approach is present", "value": 5}]}, {"category": "Standard", "decimalPlaces": 1, "default": 12.0, "group": "Mission", "increment": 1.0, "max": 90.0, "min": 0.0, "name": "MIS_YAW_ERR", "shortDesc": "Max yaw error in degrees needed for waypoint heading acceptance", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Mission", "increment": 1.0, "longDesc": "If set > 0 it will ignore the target heading for normal waypoint acceptance. If the\nwaypoint forces the heading the timeout will matter. For example on VTOL forwards transition.\nMainly useful for VTOLs that have less yaw authority and might not reach target\nyaw in wind. Disabled by default.", "max": 20.0, "min": -1.0, "name": "MIS_YAW_TMT", "shortDesc": "Time in seconds we wait on reaching target heading at a waypoint if it is forced", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Mission", "max": 4, "min": 0, "name": "MPC_YAW_MODE", "shortDesc": "Heading behavior in autonomous modes", "type": "Int32", "values": [{"description": "towards waypoint", "value": 0}, {"description": "towards home", "value": 1}, {"description": "away from home", "value": 2}, {"description": "along trajectory", "value": 3}, {"description": "towards waypoint (yaw first)", "value": 4}, {"description": "yaw fixed", "value": 5}]}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Mission", "increment": 0.5, "longDesc": "Default acceptance radius, overridden by acceptance radius of waypoint if set.\nFor fixed wing the npfg switch distance is used for horizontal acceptance.", "max": 200.0, "min": 0.05, "name": "NAV_ACC_RAD", "shortDesc": "Acceptance Radius", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1, "group": "Mission", "name": "NAV_FORCE_VT", "shortDesc": "Force VTOL mode takeoff and land", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Mission", "longDesc": "Altitude acceptance used for the last waypoint before a fixed-wing landing. This is usually smaller\nthan the standard vertical acceptance because close to the ground higher accuracy is required.", "max": 200.0, "min": 0.05, "name": "NAV_FW_ALTL_RAD", "shortDesc": "FW Altitude Acceptance Radius before a landing", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Mission", "increment": 0.5, "longDesc": "Acceptance radius for fixedwing altitude.", "max": 200.0, "min": 0.05, "name": "NAV_FW_ALT_RAD", "shortDesc": "FW Altitude Acceptance Radius", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 80.0, "group": "Mission", "increment": 0.5, "longDesc": "Default value of loiter radius in fixed-wing mode (e.g. for Loiter mode).\nThe direction of the loiter can be set via the sign: A positive value for\nclockwise, negative for counter-clockwise.", "max": 10000.0, "min": -10000.0, "name": "NAV_LOITER_RAD", "shortDesc": "Loiter radius (FW only)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.8, "group": "Mission", "increment": 0.5, "longDesc": "Acceptance radius for multicopter altitude.", "max": 200.0, "min": 0.05, "name": "NAV_MC_ALT_RAD", "shortDesc": "MC Altitude Acceptance Radius", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Mission", "increment": 1.0, "longDesc": "Minimum height above ground the vehicle is allowed to descend to during Mission and RTL,\nexcluding landing commands.\nRequires a distance sensor to be set up.\nNote: only prevents the vehicle from descending further, but does not force it to climb.\nSet to a negative value to disable.", "min": -1.0, "name": "NAV_MIN_GND_DIST", "shortDesc": "Minimum height above ground during Mission and RTL", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Mission", "increment": 0.5, "longDesc": "This is the minimum altitude above Home the system will always obey in Loiter (Hold) mode if switched into this\nmode without specifying an altitude (e.g. through Loiter switch on RC).\nDoesn't affect Loiters that are part of Missions or that are entered through a reposition setpoint (\"Go to\").\nSet to a negative value to disable.", "min": -1.0, "name": "NAV_MIN_LTR_ALT", "shortDesc": "Minimum Loiter altitude", "type": "Float", "units": "m"}, {"category": "Standard", "default": 1, "group": "Mission", "longDesc": "Enabling this will allow the system to respond\nto transponder data from e.g. ADSB transponders", "name": "NAV_TRAFF_AVOID", "shortDesc": "Set traffic avoidance mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Warn only", "value": 1}, {"description": "Return mode", "value": 2}, {"description": "Land mode", "value": 3}, {"description": "Position Hold mode", "value": 4}]}, {"category": "Standard", "default": 500.0, "group": "Mission", "longDesc": "Defines a crosstrack horizontal distance", "min": 500.0, "name": "NAV_TRAFF_A_HOR", "shortDesc": "Set NAV TRAFFIC AVOID horizontal distance", "type": "Float", "units": "m"}, {"category": "Standard", "default": 500.0, "group": "Mission", "max": 500.0, "min": 10.0, "name": "NAV_TRAFF_A_VER", "shortDesc": "Set NAV TRAFFIC AVOID vertical distance", "type": "Float", "units": "m"}, {"category": "Standard", "default": 60, "group": "Mission", "longDesc": "Minimum acceptable time until collsion.\nAssumes constant speed over 3d distance.", "max": 900000000, "min": 1, "name": "NAV_TRAFF_COLL_T", "shortDesc": "Estimated time until collision", "type": "Int32", "units": "s"}, {"category": "Standard", "default": 0, "group": "Mixer Output", "longDesc": "The air-mode enables the mixer to increase the total thrust of the multirotor\nin order to keep attitude and rate control even at low and high throttle.\nThis function should be disabled during tuning as it will help the controller\nto diverge if the closed-loop is unstable (i.e. the vehicle is not tuned yet).\nEnabling air-mode for yaw requires the use of an arming switch.", "name": "MC_AIRMODE", "shortDesc": "Multicopter air-mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Roll/Pitch", "value": 1}, {"description": "Roll/Pitch/Yaw", "value": 2}]}, {"category": "Standard", "default": 0, "group": "Mount", "longDesc": "Set to true for servo gimbal, false for passthrough.\nThis is required for a gimbal which is not capable of stabilizing itself\nand relies on the IMU's attitude estimation.", "name": "MNT_DO_STAB", "shortDesc": "Stabilize the mount", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "Stabilize all axis", "value": 1}, {"description": "Stabilize yaw for absolute/lock mode.", "value": 2}, {"description": "Stabilize pitch for absolute/lock mode.", "value": 3}]}, {"category": "Standard", "decimalPlaces": 1, "default": 90.0, "group": "Mount", "max": 90.0, "min": -90.0, "name": "MNT_LND_P_MAX", "shortDesc": "Pitch maximum when landed", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": -90.0, "group": "Mount", "max": 90.0, "min": -90.0, "name": "MNT_LND_P_MIN", "shortDesc": "Pitch minimum when landed", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "Mount", "max": 6, "min": 0, "name": "MNT_MAN_PITCH", "shortDesc": "Auxiliary channel to control pitch (in AUX input or manual mode)", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "AUX1", "value": 1}, {"description": "AUX2", "value": 2}, {"description": "AUX3", "value": 3}, {"description": "AUX4", "value": 4}, {"description": "AUX5", "value": 5}, {"description": "AUX6", "value": 6}]}, {"category": "Standard", "default": 0, "group": "Mount", "max": 6, "min": 0, "name": "MNT_MAN_ROLL", "shortDesc": "Auxiliary channel to control roll (in AUX input or manual mode)", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "AUX1", "value": 1}, {"description": "AUX2", "value": 2}, {"description": "AUX3", "value": 3}, {"description": "AUX4", "value": 4}, {"description": "AUX5", "value": 5}, {"description": "AUX6", "value": 6}]}, {"category": "Standard", "default": 0, "group": "Mount", "max": 6, "min": 0, "name": "MNT_MAN_YAW", "shortDesc": "Auxiliary channel to control yaw (in AUX input or manual mode)", "type": "Int32", "values": [{"description": "Disable", "value": 0}, {"description": "AUX1", "value": 1}, {"description": "AUX2", "value": 2}, {"description": "AUX3", "value": 3}, {"description": "AUX4", "value": 4}, {"description": "AUX5", "value": 5}, {"description": "AUX6", "value": 6}]}, {"category": "Standard", "default": 154, "group": "Mount", "longDesc": "If MNT_MODE_OUT is MAVLink protocol v2, mount configure/control commands will be sent with this component ID.", "name": "MNT_MAV_COMPID", "shortDesc": "Mavlink Component ID of the mount", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "Mount", "longDesc": "If MNT_MODE_OUT is MAVLink gimbal protocol v1, mount configure/control commands will be sent with this target ID.", "name": "MNT_MAV_SYSID", "shortDesc": "Mavlink System ID of the mount", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 45.0, "group": "Mount", "longDesc": "Use output driver settings to calibrate (e.g. PWM_CENT/_MIN/_MAX).", "name": "MNT_MAX_PITCH", "shortDesc": "Max positive angle of pitch setpoint (only in MNT_MODE_OUT=AUX)", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": -45.0, "group": "Mount", "longDesc": "Use output driver settings to calibrate (e.g. PWM_CENT/_MIN/_MAX).", "name": "MNT_MIN_PITCH", "shortDesc": "Min negative angle of pitch setpoint (only in MNT_MODE_OUT=AUX)", "type": "Float", "units": "deg"}, {"category": "Standard", "default": -1, "group": "Mount", "longDesc": "This is the protocol used between the ground station and the autopilot.\nRecommended is Auto, RC only or MAVLink gimbal protocol v2.\nThe rest will be deprecated.", "max": 4, "min": -1, "name": "MNT_MODE_IN", "rebootRequired": true, "shortDesc": "Mount input mode", "type": "Int32", "values": [{"description": "DISABLED", "value": -1}, {"description": "Auto (RC and MAVLink gimbal protocol v2)", "value": 0}, {"description": "RC", "value": 1}, {"description": "MAVLINK_ROI (protocol v1, to be deprecated)", "value": 2}, {"description": "MAVLINK_DO_MOUNT (protocol v1, to be deprecated)", "value": 3}, {"description": "MAVlink gimbal protocol v2", "value": 4}]}, {"category": "Standard", "default": 0, "group": "Mount", "longDesc": "This is the protocol used between the autopilot and a connected gimbal.\nRecommended is the MAVLink gimbal protocol v2 if the gimbal supports it.", "max": 2, "min": 0, "name": "MNT_MODE_OUT", "rebootRequired": true, "shortDesc": "Mount output mode", "type": "Int32", "values": [{"description": "AUX", "value": 0}, {"description": "MAVLink gimbal protocol v1", "value": 1}, {"description": "MAVLink gimbal protocol v2", "value": 2}]}, {"category": "Standard", "decimalPlaces": 1, "default": 90.0, "group": "Mount", "longDesc": "Use output driver settings to calibrate (e.g. PWM_CENT/_MIN/_MAX). Note that only symmetric angular ranges are supported.", "max": 720.0, "min": 1.0, "name": "MNT_RANGE_ROLL", "shortDesc": "Range of roll channel output (only in MNT_MODE_OUT=AUX)", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 360.0, "group": "Mount", "longDesc": "Use output driver settings to calibrate (e.g. PWM_CENT/_MIN/_MAX). Note that only symmetric angular ranges are supported.", "max": 720.0, "min": 1.0, "name": "MNT_RANGE_YAW", "shortDesc": "Range of yaw channel output (only in MNT_MODE_OUT=AUX)", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 30.0, "group": "Mount", "longDesc": "Full stick input [-1..1] translats to [-pitch rate..pitch rate].", "max": 90.0, "min": 1.0, "name": "MNT_RATE_PITCH", "shortDesc": "Angular pitch rate for manual input in degrees/second", "type": "Float", "units": "deg/s"}, {"category": "Standard", "default": 30.0, "group": "Mount", "longDesc": "Full stick input [-1..1] translats to [-yaw rate..yaw rate].", "max": 90.0, "min": 1.0, "name": "MNT_RATE_YAW", "shortDesc": "Angular yaw rate for manual input in degrees/second", "type": "Float", "units": "deg/s"}, {"category": "Standard", "default": 1, "group": "Mount", "max": 1, "min": 0, "name": "MNT_RC_IN_MODE", "shortDesc": "Input mode for RC gimbal input", "type": "Int32", "values": [{"description": "Angle", "value": 0}, {"description": "Angular rate", "value": 1}]}, {"category": "Standard", "default": 0.3, "group": "Mount", "longDesc": "Use when no angular position feedback is available.\nWith MNT_MODE_OUT set to AUX, the mount operates in open-loop and directly commands the servo output.\nParameters must be tuned for the specific servo to approximate its speed and response.", "min": 0.0, "name": "MNT_TAU", "shortDesc": "Alpha filter time constant defining the convergence rate (in seconds) for open-loop AUX mount control", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Multicopter Acro Mode", "longDesc": "Exponential factor for tuning the input curve shape.\n0 Purely linear input curve\n1 Purely cubic input curve", "max": 1.0, "min": 0.0, "name": "MC_ACRO_EXPO", "shortDesc": "Acro mode roll, pitch expo factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Multicopter Acro Mode", "longDesc": "Exponential factor for tuning the input curve shape.\n0 Purely linear input curve\n1 Purely cubic input curve", "max": 1.0, "min": 0.0, "name": "MC_ACRO_EXPO_Y", "shortDesc": "Acro mode yaw expo factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 100.0, "group": "Multicopter Acro Mode", "increment": 5.0, "longDesc": "Full stick deflection leads to this rate.", "max": 1800.0, "min": 0.0, "name": "MC_ACRO_P_MAX", "shortDesc": "Acro mode maximum pitch rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 100.0, "group": "Multicopter Acro Mode", "increment": 5.0, "longDesc": "Full stick deflection leads to this rate.", "max": 1800.0, "min": 0.0, "name": "MC_ACRO_R_MAX", "shortDesc": "Acro mode maximum roll rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Multicopter Acro Mode", "longDesc": "\"Superexponential\" factor for refining the input curve shape tuned using MC_ACRO_EXPO.\n0 Pure Expo function\n0.7 reasonable shape enhancement for intuitive stick feel\n0.95 very strong bent input curve only near maxima have effect", "max": 0.95, "min": 0.0, "name": "MC_ACRO_SUPEXPO", "shortDesc": "Acro mode roll, pitch super expo factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Multicopter Acro Mode", "longDesc": "\"Superexponential\" factor for refining the input curve shape tuned using MC_ACRO_EXPO_Y.\n0 Pure Expo function\n0.7 reasonable shape enhancement for intuitive stick feel\n0.95 very strong bent input curve only near maxima have effect", "max": 0.95, "min": 0.0, "name": "MC_ACRO_SUPEXPOY", "shortDesc": "Acro mode yaw super expo factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 100.0, "group": "Multicopter Acro Mode", "increment": 5.0, "longDesc": "Full stick deflection leads to this rate.", "max": 1800.0, "min": 0.0, "name": "MC_ACRO_Y_MAX", "shortDesc": "Acro mode maximum yaw rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 220.0, "group": "Multicopter Attitude Control", "increment": 5.0, "longDesc": "Limit for pitch rate in manual and auto modes (except acro).\nHas effect for large rotations in autonomous mode, to avoid large control\noutput and mixer saturation.\nThis is not only limited by the vehicle's properties, but also by the maximum\nmeasurement rate of the gyro.", "max": 1800.0, "min": 0.0, "name": "MC_PITCHRATE_MAX", "shortDesc": "Max pitch rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 4.0, "group": "Multicopter Attitude Control", "increment": 0.1, "longDesc": "Pitch proportional gain, i.e. desired angular speed in rad/s for error 1 rad.", "max": 12.0, "min": 0.0, "name": "MC_PITCH_P", "shortDesc": "Pitch P gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 220.0, "group": "Multicopter Attitude Control", "increment": 5.0, "longDesc": "Limit for roll rate in manual and auto modes (except acro).\nHas effect for large rotations in autonomous mode, to avoid large control\noutput and mixer saturation.\nThis is not only limited by the vehicle's properties, but also by the maximum\nmeasurement rate of the gyro.", "max": 1800.0, "min": 0.0, "name": "MC_ROLLRATE_MAX", "shortDesc": "Max roll rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 4.0, "group": "Multicopter Attitude Control", "increment": 0.1, "longDesc": "Roll proportional gain, i.e. desired angular speed in rad/s for error 1 rad.", "max": 12.0, "min": 0.0, "name": "MC_ROLL_P", "shortDesc": "Roll P gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 200.0, "group": "Multicopter Attitude Control", "increment": 5.0, "max": 1800.0, "min": 0.0, "name": "MC_YAWRATE_MAX", "shortDesc": "Max yaw rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.8, "group": "Multicopter Attitude Control", "increment": 0.1, "longDesc": "Yaw proportional gain, i.e. desired angular speed in rad/s for error 1 rad.", "max": 5.0, "min": 0.0, "name": "MC_YAW_P", "shortDesc": "Yaw P gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "Multicopter Attitude Control", "increment": 0.1, "longDesc": "A fraction [0,1] deprioritizing yaw compared to roll and pitch in non-linear attitude control.\nDeprioritizing yaw is necessary because multicopters have much less control authority\nin yaw compared to the other axes and it makes sense because yaw is not critical for\nstable hovering or 3D navigation.\nFor yaw control tuning use MC_YAW_P. This ratio has no impact on the yaw gain.", "max": 1.0, "min": 0.0, "name": "MC_YAW_WEIGHT", "shortDesc": "Yaw weight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 0, "default": 20.0, "group": "Multicopter Attitude Control", "increment": 5.0, "longDesc": "Limits the acceleration of the yaw setpoint to avoid large\ncontrol output and mixer saturation.", "max": 360.0, "min": 5.0, "name": "MPC_YAWRAUTO_ACC", "shortDesc": "Maximum yaw acceleration in autonomous modes", "type": "Float", "units": "deg/s^2"}, {"category": "Standard", "decimalPlaces": 0, "default": 60.0, "group": "Multicopter Attitude Control", "increment": 5.0, "longDesc": "Limits the rate of change of the yaw setpoint to avoid large\ncontrol output and mixer saturation.", "max": 360.0, "min": 5.0, "name": "MPC_YAWRAUTO_MAX", "shortDesc": "Maximum yaw rate in autonomous modes", "type": "Float", "units": "deg/s"}, {"category": "Standard", "default": 0.4, "group": "Multicopter Position Control", "longDesc": "Only used in Position mode.", "max": 1.0, "min": 0.0, "name": "CP_DELAY", "shortDesc": "Average delay of the range sensor message plus the tracking delay of the position controller in seconds", "type": "Float", "units": "s"}, {"category": "Standard", "default": -1.0, "group": "Multicopter Position Control", "longDesc": "Only used in Position mode. Collision avoidance is disabled by setting this parameter to a negative value", "max": 15.0, "min": -1.0, "name": "CP_DIST", "shortDesc": "Minimum distance the vehicle should keep to all obstacles", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Multicopter Position Control", "longDesc": "Only used in Position mode.", "name": "CP_GO_NO_DATA", "shortDesc": "Boolean to allow moving into directions where there is no sensor data (outside FOV)", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 30.0, "group": "Multicopter Position Control", "longDesc": "Only used in Position mode.", "max": 90.0, "min": 0.0, "name": "CP_GUIDE_ANG", "shortDesc": "Angle left/right from the commanded setpoint by which the collision prevention algorithm can choose to change the setpoint direction", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Multicopter Position Control", "longDesc": "Setting this parameter to 0 disables the filter", "max": 2.0, "min": 0.0, "name": "MC_MAN_TILT_TAU", "shortDesc": "Manual tilt input filter time constant", "type": "Float", "units": "s"}, {"category": "Standard", "default": 1, "group": "Multicopter Position Control", "longDesc": "Set to decouple tilt from vertical acceleration.\nThis provides smoother flight but slightly worse tracking in position and auto modes.\nUnset if accurate position tracking during dynamic maneuvers is more important than a smooth flight.", "name": "MPC_ACC_DECOUPLE", "shortDesc": "Acceleration to tilt coupling", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "Multicopter Position Control", "increment": 1.0, "max": 15.0, "min": 2.0, "name": "MPC_ACC_DOWN_MAX", "shortDesc": "Maximum downwards acceleration in climb rate controlled modes", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "When piloting manually, this parameter is only used in MPC_POS_MODE Acceleration based.", "max": 15.0, "min": 2.0, "name": "MPC_ACC_HOR", "shortDesc": "Acceleration for autonomous and for manual modes", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 5.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "MPC_POS_MODE\n1 just deceleration\n4 not used, use MPC_ACC_HOR instead", "max": 15.0, "min": 2.0, "name": "MPC_ACC_HOR_MAX", "shortDesc": "Maximum horizontal acceleration", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 1, "default": 4.0, "group": "Multicopter Position Control", "increment": 1.0, "max": 15.0, "min": 2.0, "name": "MPC_ACC_UP_MAX", "shortDesc": "Maximum upwards acceleration in climb rate controlled modes", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "default": 2, "group": "Multicopter Position Control", "longDesc": "Control height\n0: relative earth frame origin which may drift due to sensors\n1: relative to ground (requires distance sensor) which changes with terrain variation.\nIt will revert to relative earth frame if the distance to ground estimate becomes invalid.\n2: relative to ground (requires distance sensor) when stationary\nand relative to earth frame when moving horizontally.\nThe speed threshold is MPC_HOLD_MAX_XY", "max": 2, "min": 0, "name": "MPC_ALT_MODE", "shortDesc": "Altitude reference mode", "type": "Int32", "values": [{"description": "Altitude following", "value": 0}, {"description": "Terrain following", "value": 1}, {"description": "Terrain hold", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.8, "group": "Multicopter Position Control", "longDesc": "Only used with MPC_POS_MODE Direct velocity or MPC_ALT_MODE 2", "max": 3.0, "min": 0.0, "name": "MPC_HOLD_MAX_XY", "shortDesc": "Maximum horizontal velocity for which position hold is enabled (use 0 to disable check)", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.6, "group": "Multicopter Position Control", "longDesc": "Only used with MPC_ALT_MODE 1", "max": 3.0, "min": 0.0, "name": "MPC_HOLD_MAX_Z", "shortDesc": "Maximum vertical velocity for which position hold is enabled (use 0 to disable check)", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 4.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "Limit the maximum jerk of the vehicle (how fast the acceleration can change).\nA lower value leads to smoother vehicle motions but also limited agility.", "max": 80.0, "min": 1.0, "name": "MPC_JERK_AUTO", "shortDesc": "Jerk limit in autonomous modes", "type": "Float", "units": "m/s^3"}, {"category": "Standard", "decimalPlaces": 0, "default": 8.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "Limit the maximum jerk (acceleration change) of the vehicle.\nA lower value leads to smoother motions but limits agility.\nSetting this to the maximum value essentially disables the limit.\nOnly used with MPC_POS_MODE Acceleration based.", "max": 500.0, "min": 0.5, "name": "MPC_JERK_MAX", "shortDesc": "Maximum horizontal and vertical jerk in Position/Altitude mode", "type": "Float", "units": "m/s^3"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Multicopter Position Control", "longDesc": "Below this altitude descending velocity gets limited to a value\nbetween \"MPC_Z_VEL_MAX_DN\" (or \"MPC_Z_V_AUTO_DN\") and \"MPC_LAND_SPEED\"\nValue needs to be higher than \"MPC_LAND_ALT2\"", "max": 122.0, "min": 0.0, "name": "MPC_LAND_ALT1", "shortDesc": "Altitude for 1. step of slow landing (descend)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Multicopter Position Control", "longDesc": "Below this altitude descending velocity gets\nlimited to \"MPC_LAND_SPEED\"\nValue needs to be lower than \"MPC_LAND_ALT1\"", "max": 122.0, "min": 0.0, "name": "MPC_LAND_ALT2", "shortDesc": "Altitude for 2. step of slow landing (landing)", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Multicopter Position Control", "longDesc": "If a valid distance sensor measurement to the ground is available,\nlimit descending velocity to \"MPC_LAND_CRWL\" below this altitude.", "max": 122.0, "min": 0.0, "name": "MPC_LAND_ALT3", "shortDesc": "Altitude for 3. step of slow landing", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.3, "group": "Multicopter Position Control", "longDesc": "Used below MPC_LAND_ALT3 if distance sensor data is availabe.", "min": 0.1, "name": "MPC_LAND_CRWL", "shortDesc": "Land crawl descend rate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 0, "default": -1.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "When nudging is enabled (see MPC_LAND_RC_HELP), this defines the maximum\nallowed horizontal displacement from the original landing point.\n- If inside of the radius, only allow nudging inputs that do not move the vehicle outside of it.\n- If outside of the radius, only allow nudging inputs that move the vehicle back towards it.\nSet it to -1 for infinite radius.", "min": -1.0, "name": "MPC_LAND_RADIUS", "shortDesc": "User assisted landing radius", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Multicopter Position Control", "longDesc": "Using stick input the vehicle can be moved horizontally and yawed.\nThe descend speed is amended:\nstick full up - 0\nstick centered - MPC_LAND_SPEED\nstick full down - 2 * MPC_LAND_SPEED\nManual override during auto modes has to be disabled to use this feature (see COM_RC_OVERRIDE).", "max": 1, "min": 0, "name": "MPC_LAND_RC_HELP", "shortDesc": "Enable nudging based on user input during autonomous land routine", "type": "Int32", "values": [{"description": "Nudging disabled", "value": 0}, {"description": "Nudging enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.7, "group": "Multicopter Position Control", "min": 0.6, "name": "MPC_LAND_SPEED", "shortDesc": "Landing descend rate", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.08, "group": "Multicopter Position Control", "increment": 0.01, "longDesc": "The value is mapped to the lowest throttle stick position in Stabilized mode.\nToo low collective thrust leads to loss of roll/pitch/yaw torque control authority.\nAirmode is used to keep torque authority with zero thrust (see MC_AIRMODE).", "max": 1.0, "min": 0.0, "name": "MPC_MANTHR_MIN", "shortDesc": "Minimum collective thrust in Stabilized mode", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 0, "default": 35.0, "group": "Multicopter Position Control", "increment": 1.0, "max": 70.0, "min": 1.0, "name": "MPC_MAN_TILT_MAX", "shortDesc": "Maximal tilt angle in Stabilized, Altitude and Altitude Cruise mode", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 150.0, "group": "Multicopter Position Control", "increment": 10.0, "max": 400.0, "min": 0.0, "name": "MPC_MAN_Y_MAX", "shortDesc": "Max manual yaw rate for Stabilized, Altitude, Position mode", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.08, "group": "Multicopter Position Control", "increment": 0.01, "longDesc": "Not used in Stabilized mode\nSetting this parameter to 0 disables the filter", "max": 5.0, "min": 0.0, "name": "MPC_MAN_Y_TAU", "shortDesc": "Manual yaw rate input filter time constant", "type": "Float", "units": "s"}, {"category": "Standard", "default": 4, "group": "Multicopter Position Control", "longDesc": "The supported sub-modes are:\nDirect velocity:\nSticks directly map to velocity setpoints without smoothing.\nAlso applies to vertical direction and Altitude mode.\nUseful for velocity control tuning.\nAcceleration based:\nSticks map to acceleration and there's a virtual brake drag", "name": "MPC_POS_MODE", "shortDesc": "Position/Altitude mode variant", "type": "Int32", "values": [{"description": "Direct velocity", "value": 0}, {"description": "Acceleration based", "value": 4}]}, {"category": "Standard", "default": 0, "group": "Multicopter Position Control", "longDesc": "Defines how the throttle stick is mapped to collective thrust in Stabilized mode.\nRescale to hover thrust estimate:\nStick input is linearly rescaled, such that a centered throttle stick corresponds to the hover thrust estimator's output.\nNo rescale:\nDirectly map the stick 1:1 to the output.\nCan be useful with very low hover thrust which leads to much distortion and the upper half getting sensitive.\nRescale to hover thrust parameter:\nSimilar to rescaling to the hover thrust estimate, but it uses the hover thrust parameter value (see MPC_THR_HOVER) instead of estimated value.\nWith MPC_THR_HOVER 0.5 it's equivalent to No rescale.", "name": "MPC_THR_CURVE", "shortDesc": "Thrust curve mapping in Stabilized Mode", "type": "Int32", "values": [{"description": "Rescale to estimate", "value": 0}, {"description": "No rescale", "value": 1}, {"description": "Rescale to parameter", "value": 2}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "Multicopter Position Control", "increment": 0.01, "longDesc": "Mapped to center throttle stick in Stabilized mode (see MPC_THR_CURVE).\nUsed for initialization of the hover thrust estimator (see MPC_USE_HTE).\nThe estimated hover thrust is used as base for zero vertical acceleration in altitude control.\nThe hover thrust is important for land detection to work correctly.", "max": 0.8, "min": 0.1, "name": "MPC_THR_HOVER", "shortDesc": "Vertical thrust required to hover", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Multicopter Position Control", "increment": 0.05, "longDesc": "Limit allowed thrust e.g. for indoor test of overpowered vehicle.", "max": 1.0, "min": 0.0, "name": "MPC_THR_MAX", "shortDesc": "Maximum collective thrust in climb rate controlled modes", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.12, "group": "Multicopter Position Control", "increment": 0.01, "longDesc": "Too low thrust leads to loss of roll/pitch/yaw torque control authority.\nWith airmode enabled this parameters can be set to 0\nwhile still keeping torque authority (see MC_AIRMODE).", "max": 0.5, "min": 0.05, "name": "MPC_THR_MIN", "shortDesc": "Minimum collective thrust in climb rate controlled modes", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Multicopter Position Control", "increment": 0.01, "longDesc": "Margin that is kept for horizontal control when higher priority vertical thrust is saturated.\nTo avoid completely starving horizontal control with high vertical error.", "max": 0.5, "min": 0.0, "name": "MPC_THR_XY_MARG", "shortDesc": "Horizontal thrust margin", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 0, "default": 45.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "Absolute maximum for all velocity or acceleration controlled modes.\nAny higher value is truncated.", "max": 89.0, "min": 20.0, "name": "MPC_TILTMAX_AIR", "shortDesc": "Maximum tilt angle in air", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 0, "default": 12.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "Tighter tilt limit during takeoff to avoid tip over.", "max": 89.0, "min": 5.0, "name": "MPC_TILTMAX_LND", "shortDesc": "Maximum tilt during inital takeoff ramp", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 3.0, "group": "Multicopter Position Control", "longDesc": "Increasing this value will make climb rate controlled takeoff slower.\nIf it's too slow the drone might scratch the ground and tip over.\nA time constant of 0 disables the ramp", "max": 5.0, "min": 0.0, "name": "MPC_TKO_RAMP_T", "shortDesc": "Smooth takeoff ramp time constant", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.5, "group": "Multicopter Position Control", "max": 5.0, "min": 1.0, "name": "MPC_TKO_SPEED", "shortDesc": "Takeoff climb rate", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 1, "group": "Multicopter Position Control", "longDesc": "Disable to use the fixed parameter MPC_THR_HOVER instead of the hover thrust estimate in the position controller.\nThis parameter does not influence Stabilized mode throttle curve (see MPC_THR_CURVE).", "name": "MPC_USE_HTE", "shortDesc": "Use hover thrust estimate for altitude control", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Multicopter Position Control", "increment": 0.5, "longDesc": "A value of 0 disables the filter.", "max": 50.0, "min": 0.0, "name": "MPC_VELD_LP", "shortDesc": "Velocity derivative low pass cutoff frequency", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Multicopter Position Control", "increment": 0.5, "longDesc": "A value of 0 disables the filter.", "max": 50.0, "min": 0.0, "name": "MPC_VEL_LP", "shortDesc": "Velocity low pass cutoff frequency", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "Must be smaller than MPC_XY_VEL_MAX.\nThe maximum sideways and backward speed can be set differently\nusing MPC_VEL_MAN_SIDE and MPC_VEL_MAN_BACK, respectively.", "max": 20.0, "min": 3.0, "name": "MPC_VEL_MANUAL", "shortDesc": "Maximum horizontal velocity setpoint in Position mode", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "If set to a negative value or larger than\nMPC_VEL_MANUAL then MPC_VEL_MANUAL is used.", "max": 20.0, "min": -1.0, "name": "MPC_VEL_MAN_BACK", "shortDesc": "Maximum backward velocity in Position mode", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "If set to a negative value or larger than\nMPC_VEL_MANUAL then MPC_VEL_MANUAL is used.", "max": 20.0, "min": -1.0, "name": "MPC_VEL_MAN_SIDE", "shortDesc": "Maximum sideways velocity in Position mode", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Multicopter Position Control", "increment": 0.5, "longDesc": "A value of 0 disables the filter.", "max": 50.0, "min": 0.0, "name": "MPC_VEL_NF_BW", "shortDesc": "Velocity notch filter bandwidth", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Multicopter Position Control", "increment": 0.5, "longDesc": "The center frequency for the 2nd order notch filter on the velocity.\nA value of 0 disables the filter.", "max": 50.0, "min": 0.0, "name": "MPC_VEL_NF_FRQ", "shortDesc": "Velocity notch filter frequency", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 0, "default": 5.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "e.g. in Missions, RTL, Goto if the waypoint does not specify differently", "max": 20.0, "min": 3.0, "name": "MPC_XY_CRUISE", "shortDesc": "Default horizontal velocity in autonomous modes", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "The integration speed of the trajectory setpoint is linearly\nreduced with the horizontal position tracking error. When the\nerror is above this parameter, the integration of the\ntrajectory is stopped to wait for the drone.\nThis value can be adjusted depending on the tracking\ncapabilities of the vehicle.", "max": 10.0, "min": 0.1, "name": "MPC_XY_ERR_MAX", "shortDesc": "Maximum horizontal error allowed by the trajectory generator", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.95, "group": "Multicopter Position Control", "increment": 0.1, "longDesc": "Defined as corrective velocity in m/s per m position error", "max": 2.0, "min": 0.0, "name": "MPC_XY_P", "shortDesc": "Proportional gain for horizontal position error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.5, "group": "Multicopter Position Control", "increment": 0.1, "max": 1.0, "min": 0.1, "name": "MPC_XY_TRAJ_P", "shortDesc": "Proportional gain for horizontal trajectory position error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": -10.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "If set to a value greater than zero, other parameters are automatically set (such as\nMPC_XY_VEL_MAX or MPC_VEL_MANUAL).\nIf set to a negative value, the existing individual parameters are used.", "max": 20.0, "min": -20.0, "name": "MPC_XY_VEL_ALL", "shortDesc": "Overall Horizontal Velocity Limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Multicopter Position Control", "increment": 0.02, "longDesc": "Defined as corrective acceleration in m/s^2 per m/s^2 velocity derivative", "max": 2.0, "min": 0.1, "name": "MPC_XY_VEL_D_ACC", "shortDesc": "Differential gain for horizontal velocity error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.4, "group": "Multicopter Position Control", "increment": 0.02, "longDesc": "Defined as correction acceleration in m/s^2 per m velocity integral\nAllows to eliminate steady state errors in disturbances like wind.", "max": 60.0, "min": 0.0, "name": "MPC_XY_VEL_I_ACC", "shortDesc": "Integral gain for horizontal velocity error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 12.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "Absolute maximum for all velocity controlled modes.\nAny higher value is truncated.", "max": 20.0, "min": 0.0, "name": "MPC_XY_VEL_MAX", "shortDesc": "Maximum horizontal velocity", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.8, "group": "Multicopter Position Control", "increment": 0.1, "longDesc": "Defined as corrective acceleration in m/s^2 per m/s velocity error", "max": 5.0, "min": 1.2, "name": "MPC_XY_VEL_P_ACC", "shortDesc": "Proportional gain for horizontal velocity error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Multicopter Position Control", "increment": 0.1, "longDesc": "Defined as corrective velocity in m/s per m position error", "max": 1.5, "min": 0.1, "name": "MPC_Z_P", "shortDesc": "Proportional gain for vertical position error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": -3.0, "group": "Multicopter Position Control", "increment": 0.5, "longDesc": "If set to a value greater than zero, other parameters are automatically set (such as\nMPC_Z_VEL_MAX_UP or MPC_LAND_SPEED).\nIf set to a negative value, the existing individual parameters are used.", "max": 8.0, "min": -3.0, "name": "MPC_Z_VEL_ALL", "shortDesc": "Overall Vertical Velocity Limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Multicopter Position Control", "increment": 0.02, "longDesc": "Defined as corrective acceleration in m/s^2 per m/s^2 velocity derivative", "max": 2.0, "min": 0.0, "name": "MPC_Z_VEL_D_ACC", "shortDesc": "Differential gain for vertical velocity error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "Multicopter Position Control", "increment": 0.1, "longDesc": "Defined as corrective acceleration in m/s^2 per m velocity integral", "max": 3.0, "min": 0.2, "name": "MPC_Z_VEL_I_ACC", "shortDesc": "Integral gain for vertical velocity error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.5, "group": "Multicopter Position Control", "increment": 0.1, "longDesc": "Absolute maximum for all climb rate controlled modes.\nIn manually piloted modes full stick deflection commands this velocity.\nFor default autonomous velocity see MPC_Z_V_AUTO_UP", "max": 4.0, "min": 0.5, "name": "MPC_Z_VEL_MAX_DN", "shortDesc": "Maximum descent velocity", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "Multicopter Position Control", "increment": 0.1, "longDesc": "Absolute maximum for all climb rate controlled modes.\nIn manually piloted modes full stick deflection commands this velocity.\nFor default autonomous velocity see MPC_Z_V_AUTO_UP", "max": 8.0, "min": 0.5, "name": "MPC_Z_VEL_MAX_UP", "shortDesc": "Maximum ascent velocity", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 4.0, "group": "Multicopter Position Control", "increment": 0.1, "longDesc": "Defined as corrective acceleration in m/s^2 per m/s velocity error", "max": 15.0, "min": 2.0, "name": "MPC_Z_VEL_P_ACC", "shortDesc": "Proportional gain for vertical velocity error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.5, "group": "Multicopter Position Control", "increment": 0.5, "longDesc": "For manual modes and offboard, see MPC_Z_VEL_MAX_DN", "max": 4.0, "min": 0.5, "name": "MPC_Z_V_AUTO_DN", "shortDesc": "Descent velocity in autonomous modes", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "Multicopter Position Control", "increment": 0.5, "longDesc": "For manually controlled modes and offboard see MPC_Z_VEL_MAX_UP", "max": 8.0, "min": 0.5, "name": "MPC_Z_V_AUTO_UP", "shortDesc": "Ascent velocity in autonomous modes", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": -0.4, "group": "Multicopter Position Control", "increment": 0.05, "longDesc": "Changes the overall responsiveness of the vehicle.\nThe higher the value, the faster the vehicle will react.\nIf set to a value greater than zero, other parameters are automatically set (such as\nthe acceleration or jerk limits).\nIf set to a negative value, the existing individual parameters are used.", "max": 1.0, "min": -1.0, "name": "SYS_VEHICLE_RESP", "shortDesc": "Responsiveness", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Multicopter Position Control", "name": "WV_EN", "shortDesc": "Enable weathervane", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1.0, "group": "Multicopter Position Control", "max": 5.0, "min": 0.0, "name": "WV_ROLL_MIN", "shortDesc": "Minimum roll angle setpoint for weathervane controller to demand a yaw-rate", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 90.0, "group": "Multicopter Position Control", "max": 120.0, "min": 0.0, "name": "WV_YRATE_MAX", "shortDesc": "Maximum yawrate the weathervane controller is allowed to demand", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.0, "group": "Multicopter Position Slow Mode", "increment": 0.1, "longDesc": "This value is used in slow mode if\nno aux channel is mapped and\nno limit is commanded through MAVLink.", "min": 0.1, "name": "MC_SLOW_DEF_HVEL", "shortDesc": "Default horizontal velocity limit", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Multicopter Position Slow Mode", "increment": 0.1, "longDesc": "This value is used in slow mode if\nno aux channel is mapped and\nno limit is commanded through MAVLink.", "min": 0.1, "name": "MC_SLOW_DEF_VVEL", "shortDesc": "Default vertical velocity limit", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 0, "default": 45.0, "group": "Multicopter Position Slow Mode", "increment": 0.1, "longDesc": "This value is used in slow mode if\nno aux channel is mapped and\nno limit is commanded through MAVLink.", "min": 1.0, "name": "MC_SLOW_DEF_YAWR", "shortDesc": "Default yaw rate limit", "type": "Float", "units": "deg/s"}, {"category": "Standard", "default": 0, "group": "Multicopter Position Slow Mode", "name": "MC_SLOW_MAP_HVEL", "shortDesc": "Manual input mapped to scale horizontal velocity in position slow mode", "type": "Int32", "values": [{"description": "No rescaling", "value": 0}, {"description": "AUX1", "value": 1}, {"description": "AUX2", "value": 2}, {"description": "AUX3", "value": 3}, {"description": "AUX4", "value": 4}, {"description": "AUX5", "value": 5}, {"description": "AUX6", "value": 6}]}, {"category": "Standard", "default": 0, "group": "Multicopter Position Slow Mode", "name": "MC_SLOW_MAP_PTCH", "shortDesc": "RC_MAP_AUX{N} to allow for gimbal pitch rate control in position slow mode", "type": "Int32", "values": [{"description": "No pitch rate input", "value": 0}, {"description": "AUX1", "value": 1}, {"description": "AUX2", "value": 2}, {"description": "AUX3", "value": 3}, {"description": "AUX4", "value": 4}, {"description": "AUX5", "value": 5}, {"description": "AUX6", "value": 6}]}, {"category": "Standard", "default": 0, "group": "Multicopter Position Slow Mode", "name": "MC_SLOW_MAP_VVEL", "shortDesc": "Manual input mapped to scale vertical velocity in position slow mode", "type": "Int32", "values": [{"description": "No rescaling", "value": 0}, {"description": "AUX1", "value": 1}, {"description": "AUX2", "value": 2}, {"description": "AUX3", "value": 3}, {"description": "AUX4", "value": 4}, {"description": "AUX5", "value": 5}, {"description": "AUX6", "value": 6}]}, {"category": "Standard", "default": 0, "group": "Multicopter Position Slow Mode", "name": "MC_SLOW_MAP_YAWR", "shortDesc": "Manual input mapped to scale yaw rate in position slow mode", "type": "Int32", "values": [{"description": "No rescaling", "value": 0}, {"description": "AUX1", "value": 1}, {"description": "AUX2", "value": 2}, {"description": "AUX3", "value": 3}, {"description": "AUX4", "value": 4}, {"description": "AUX5", "value": 5}, {"description": "AUX6", "value": 6}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Multicopter Position Slow Mode", "increment": 0.1, "longDesc": "The lowest input maps and is clamped to this velocity.", "min": 0.1, "name": "MC_SLOW_MIN_HVEL", "shortDesc": "Horizontal velocity lower limit", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Multicopter Position Slow Mode", "increment": 0.1, "longDesc": "The lowest input maps and is clamped to this velocity.", "min": 0.1, "name": "MC_SLOW_MIN_VVEL", "shortDesc": "Vertical velocity lower limit", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 0, "default": 3.0, "group": "Multicopter Position Slow Mode", "increment": 0.1, "longDesc": "The lowest input maps and is clamped to this rate.", "min": 1.0, "name": "MC_SLOW_MIN_YAWR", "shortDesc": "Yaw rate lower limit", "type": "Float", "units": "deg/s"}, {"category": "Standard", "default": 0, "group": "Multicopter Rate Control", "longDesc": "This compensates for voltage drop of the battery over time by attempting to\nnormalize performance across the operating range of the battery. The copter\nshould constantly behave as if it was fully charged with reduced max acceleration\nat lower battery percentages. i.e. if hover is at 0.5 throttle at 100% battery,\nit will still be 0.5 at 60% battery.", "name": "MC_BAT_SCALE_EN", "shortDesc": "Battery power level scaler", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 4, "default": 0.003, "group": "Multicopter Rate Control", "increment": 0.0005, "longDesc": "Pitch rate differential gain. Small values help reduce fast oscillations. If value is too big oscillations will appear again.", "min": 0.0, "name": "MC_PITCHRATE_D", "shortDesc": "Pitch rate D gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.0, "group": "Multicopter Rate Control", "longDesc": "Improves tracking performance.", "min": 0.0, "name": "MC_PITCHRATE_FF", "shortDesc": "Pitch rate feedforward", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.2, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Pitch rate integral gain. Can be set to compensate static thrust difference or gravity center offset.", "min": 0.0, "name": "MC_PITCHRATE_I", "shortDesc": "Pitch rate I gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 1.0, "group": "Multicopter Rate Control", "increment": 0.0005, "longDesc": "Global gain of the controller.\nThis gain scales the P, I and D terms of the controller:\noutput = MC_PITCHRATE_K * (MC_PITCHRATE_P * error\n+ MC_PITCHRATE_I * error_integral\n+ MC_PITCHRATE_D * error_derivative)\nSet MC_PITCHRATE_P=1 to implement a PID in the ideal form.\nSet MC_PITCHRATE_K=1 to implement a PID in the parallel form.", "max": 5.0, "min": 0.01, "name": "MC_PITCHRATE_K", "shortDesc": "Pitch rate controller gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.15, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Pitch rate proportional gain, i.e. control output for angular speed error 1 rad/s.", "max": 0.6, "min": 0.01, "name": "MC_PITCHRATE_P", "shortDesc": "Pitch rate P gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Pitch rate integrator limit. Can be set to increase the amount of integrator available to counteract disturbances or reduced to improve settling time after large pitch moment trim changes.", "min": 0.0, "name": "MC_PR_INT_LIM", "shortDesc": "Pitch rate integrator limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.003, "group": "Multicopter Rate Control", "increment": 0.0005, "longDesc": "Roll rate differential gain. Small values help reduce fast oscillations. If value is too big oscillations will appear again.", "max": 0.01, "min": 0.0, "name": "MC_ROLLRATE_D", "shortDesc": "Roll rate D gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.0, "group": "Multicopter Rate Control", "longDesc": "Improves tracking performance.", "min": 0.0, "name": "MC_ROLLRATE_FF", "shortDesc": "Roll rate feedforward", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.2, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Roll rate integral gain. Can be set to compensate static thrust difference or gravity center offset.", "min": 0.0, "name": "MC_ROLLRATE_I", "shortDesc": "Roll rate I gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 1.0, "group": "Multicopter Rate Control", "increment": 0.0005, "longDesc": "Global gain of the controller.\nThis gain scales the P, I and D terms of the controller:\noutput = MC_ROLLRATE_K * (MC_ROLLRATE_P * error\n+ MC_ROLLRATE_I * error_integral\n+ MC_ROLLRATE_D * error_derivative)\nSet MC_ROLLRATE_P=1 to implement a PID in the ideal form.\nSet MC_ROLLRATE_K=1 to implement a PID in the parallel form.", "max": 5.0, "min": 0.01, "name": "MC_ROLLRATE_K", "shortDesc": "Roll rate controller gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.15, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Roll rate proportional gain, i.e. control output for angular speed error 1 rad/s.", "max": 0.5, "min": 0.01, "name": "MC_ROLLRATE_P", "shortDesc": "Roll rate P gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Roll rate integrator limit. Can be set to increase the amount of integrator available to counteract disturbances or reduced to improve settling time after large roll moment trim changes.", "min": 0.0, "name": "MC_RR_INT_LIM", "shortDesc": "Roll rate integrator limit", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.0, "group": "Multicopter Rate Control", "increment": 0.0005, "longDesc": "Yaw rate differential gain. Small values help reduce fast oscillations. If value is too big oscillations will appear again.", "min": 0.0, "name": "MC_YAWRATE_D", "shortDesc": "Yaw rate D gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.0, "group": "Multicopter Rate Control", "longDesc": "Improves tracking performance.", "min": 0.0, "name": "MC_YAWRATE_FF", "shortDesc": "Yaw rate feedforward", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Yaw rate integral gain. Can be set to compensate static thrust difference or gravity center offset.", "min": 0.0, "name": "MC_YAWRATE_I", "shortDesc": "Yaw rate I gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 4, "default": 1.0, "group": "Multicopter Rate Control", "increment": 0.0005, "longDesc": "Global gain of the controller.\nThis gain scales the P, I and D terms of the controller:\noutput = MC_YAWRATE_K * (MC_YAWRATE_P * error\n+ MC_YAWRATE_I * error_integral\n+ MC_YAWRATE_D * error_derivative)\nSet MC_YAWRATE_P=1 to implement a PID in the ideal form.\nSet MC_YAWRATE_K=1 to implement a PID in the parallel form.", "max": 5.0, "min": 0.01, "name": "MC_YAWRATE_K", "shortDesc": "Yaw rate controller gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.2, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Yaw rate proportional gain, i.e. control output for angular speed error 1 rad/s.", "max": 0.6, "min": 0.0, "name": "MC_YAWRATE_P", "shortDesc": "Yaw rate P gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 2.0, "group": "Multicopter Rate Control", "longDesc": "Reduces vibrations by lowering high frequency torque caused by rotor acceleration.\n0 disables the filter", "max": 10.0, "min": 0.0, "name": "MC_YAW_TQ_CUTOFF", "shortDesc": "Low pass filter cutoff frequency for yaw torque setpoint", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Multicopter Rate Control", "increment": 0.01, "longDesc": "Yaw rate integrator limit. Can be set to increase the amount of integrator available to counteract disturbances or reduced to improve settling time after large yaw moment trim changes.", "min": 0.0, "name": "MC_YR_INT_LIM", "shortDesc": "Yaw rate integrator limit", "type": "Float"}, {"category": "Standard", "default": 0, "group": "OSD", "longDesc": "Controls the vertical position of the crosshair display.\nResolution is limited by OSD to 15 discrete values. Negative\nvalues will display the crosshairs below the horizon", "max": 8, "min": -8, "name": "OSD_CH_HEIGHT", "shortDesc": "OSD Crosshairs Height", "type": "Int32"}, {"category": "Standard", "default": 500, "group": "OSD", "longDesc": "Amount of time in milliseconds to dwell at the beginning of the display, when scrolling.", "max": 10000, "min": 100, "name": "OSD_DWELL_TIME", "shortDesc": "OSD Dwell Time (ms)", "type": "Int32"}, {"category": "Standard", "default": 3, "group": "OSD", "longDesc": "Minimum security of log level to display on the OSD.", "name": "OSD_LOG_LEVEL", "shortDesc": "OSD Warning Level", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "OSD", "longDesc": "Forward RC stick input to VTX when disarmed", "max": 1, "min": 0, "name": "OSD_RC_STICK", "shortDesc": "OSD RC Stick commands", "type": "Int32"}, {"category": "Standard", "default": 125, "group": "OSD", "longDesc": "Scroll rate in milliseconds for OSD messages longer than available character width.\nThis is lower-bounded by the nominal loop rate of this module.", "max": 1000, "min": 100, "name": "OSD_SCROLL_RATE", "shortDesc": "OSD Scroll Rate (ms)", "type": "Int32"}, {"bitmask": [{"description": "CRAFT_NAME", "index": 0}, {"description": "DISARMED", "index": 1}, {"description": "GPS_LAT", "index": 2}, {"description": "GPS_LON", "index": 3}, {"description": "GPS_SATS", "index": 4}, {"description": "GPS_SPEED", "index": 5}, {"description": "HOME_DIST", "index": 6}, {"description": "HOME_DIR", "index": 7}, {"description": "MAIN_BATT_VOLTAGE", "index": 8}, {"description": "CURRENT_DRAW", "index": 9}, {"description": "MAH_DRAWN", "index": 10}, {"description": "RSSI_VALUE", "index": 11}, {"description": "ALTITUDE", "index": 12}, {"description": "NUMERICAL_VARIO", "index": 13}, {"description": "(unused) FLYMODE", "index": 14}, {"description": "(unused) ESC_TMP", "index": 15}, {"description": "(unused) PITCH_ANGLE", "index": 16}, {"description": "(unused) ROLL_ANGLE", "index": 17}, {"description": "CROSSHAIRS", "index": 18}, {"description": "AVG_CELL_VOLTAGE", "index": 19}, {"description": "(unused) HORIZON_SIDEBARS", "index": 20}, {"description": "POWER", "index": 21}], "category": "Standard", "default": 16383, "group": "OSD", "longDesc": "Configure / toggle support display options.", "max": 4194303, "min": 0, "name": "OSD_SYMBOLS", "shortDesc": "OSD Symbol Selection", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "PWM Outputs", "increment": 0.1, "longDesc": "Parameter used to model the nonlinear relationship between\nmotor control signal (e.g. PWM) and static thrust.\nThe model is: rel_thrust = factor * rel_signal^2 + (1-factor) * rel_signal,\nwhere rel_thrust is the normalized thrust between 0 and 1, and\nrel_signal is the relative motor control signal between 0 and 1.", "max": 1.0, "min": 0.0, "name": "THR_MDL_FAC", "shortDesc": "Thrust to motor control signal model parameter", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "Payload Deliverer", "longDesc": "Maximum time Gripper will wait while the successful griper actuation isn't recognised.\nIf the gripper has no feedback sensor, it will simply wait for\nthis time before considering gripper actuation successful and publish a\n'VehicleCommandAck' signaling successful gripper action", "min": 0.0, "name": "PD_GRIPPER_TO", "shortDesc": "Timeout for successful gripper actuation acknowledgement", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Payload Deliverer", "max": 0, "min": -1, "name": "PD_GRIPPER_TYPE", "shortDesc": "Type of Gripper (Servo, etc.)", "type": "Int32", "values": [{"description": "Undefined", "value": -1}, {"description": "Servo", "value": 0}]}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Precision Land", "increment": 0.5, "longDesc": "Time after which the landing target is considered lost without any new measurements.", "max": 50.0, "min": 0.0, "name": "PLD_BTOUT", "shortDesc": "Landing Target Timeout", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Precision Land", "increment": 0.1, "longDesc": "Allow final approach (without horizontal positioning) if losing landing target closer than this to the ground.", "max": 10.0, "min": 0.0, "name": "PLD_FAPPR_ALT", "shortDesc": "Final approach altitude", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Precision Land", "increment": 0.1, "longDesc": "Start descending if closer above landing target than this.", "max": 10.0, "min": 0.0, "name": "PLD_HACC_RAD", "shortDesc": "Horizontal acceptance radius", "type": "Float", "units": "m"}, {"category": "Standard", "default": 3, "group": "Precision Land", "longDesc": "Maximum number of times to search for the landing target if it is lost during the precision landing.", "max": 100, "min": 0, "name": "PLD_MAX_SRCH", "shortDesc": "Maximum number of search attempts", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Precision Land", "increment": 0.1, "longDesc": "Altitude above home to which to climb when searching for the landing target.", "max": 100.0, "min": 0.0, "name": "PLD_SRCH_ALT", "shortDesc": "Search altitude", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Precision Land", "increment": 0.1, "longDesc": "Time allowed to search for the landing target before falling back to normal landing.", "max": 100.0, "min": 0.0, "name": "PLD_SRCH_TOUT", "shortDesc": "Search timeout", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Pure Pursuit", "increment": 0.01, "longDesc": "Lower value -> More aggressive controller (beware overshoot/oscillations)", "max": 100.0, "min": 0.1, "name": "PP_LOOKAHD_GAIN", "shortDesc": "Tuning parameter for the pure pursuit controller", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 10.0, "group": "Pure Pursuit", "increment": 0.01, "max": 100.0, "min": 0.1, "name": "PP_LOOKAHD_MAX", "shortDesc": "Maximum lookahead distance for the pure pursuit controller", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Pure Pursuit", "increment": 0.01, "max": 100.0, "min": 0.1, "name": "PP_LOOKAHD_MIN", "shortDesc": "Minimum lookahead distance for the pure pursuit controller", "type": "Float", "units": "m"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC10_MAX", "shortDesc": "RC channel 10 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC10_MIN", "shortDesc": "RC channel 10 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC10_REV", "shortDesc": "RC channel 10 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC10_TRIM", "shortDesc": "RC channel 10 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC11_MAX", "shortDesc": "RC channel 11 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC11_MIN", "shortDesc": "RC channel 11 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC11_REV", "shortDesc": "RC channel 11 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC11_TRIM", "shortDesc": "RC channel 11 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC12_MAX", "shortDesc": "RC channel 12 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC12_MIN", "shortDesc": "RC channel 12 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC12_REV", "shortDesc": "RC channel 12 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC12_TRIM", "shortDesc": "RC channel 12 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC13_MAX", "shortDesc": "RC channel 13 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC13_MIN", "shortDesc": "RC channel 13 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC13_REV", "shortDesc": "RC channel 13 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC13_TRIM", "shortDesc": "RC channel 13 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC14_MAX", "shortDesc": "RC channel 14 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC14_MIN", "shortDesc": "RC channel 14 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC14_REV", "shortDesc": "RC channel 14 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC14_TRIM", "shortDesc": "RC channel 14 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC15_MAX", "shortDesc": "RC channel 15 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC15_MIN", "shortDesc": "RC channel 15 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC15_REV", "shortDesc": "RC channel 15 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC15_TRIM", "shortDesc": "RC channel 15 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC16_MAX", "shortDesc": "RC channel 16 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC16_MIN", "shortDesc": "RC channel 16 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC16_REV", "shortDesc": "RC channel 16 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC16_TRIM", "shortDesc": "RC channel 16 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC17_MAX", "shortDesc": "RC channel 17 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC17_MIN", "shortDesc": "RC channel 17 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC17_REV", "shortDesc": "RC channel 17 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC17_TRIM", "shortDesc": "RC channel 17 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC18_MAX", "shortDesc": "RC channel 18 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC18_MIN", "shortDesc": "RC channel 18 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC18_REV", "shortDesc": "RC channel 18 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC18_TRIM", "shortDesc": "RC channel 18 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for RC channel 1", "max": 2200.0, "min": 1500.0, "name": "RC1_MAX", "shortDesc": "RC channel 1 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for RC channel 1", "max": 1500.0, "min": 800.0, "name": "RC1_MIN", "shortDesc": "RC channel 1 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC1_REV", "shortDesc": "RC channel 1 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC1_TRIM", "shortDesc": "RC channel 1 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC2_MAX", "shortDesc": "RC channel 2 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC2_MIN", "shortDesc": "RC channel 2 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC2_REV", "shortDesc": "RC channel 2 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC2_TRIM", "shortDesc": "RC channel 2 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC3_MAX", "shortDesc": "RC channel 3 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC3_MIN", "shortDesc": "RC channel 3 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC3_REV", "shortDesc": "RC channel 3 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC3_TRIM", "shortDesc": "RC channel 3 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC4_MAX", "shortDesc": "RC channel 4 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC4_MIN", "shortDesc": "RC channel 4 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC4_REV", "shortDesc": "RC channel 4 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC4_TRIM", "shortDesc": "RC channel 4 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC5_MAX", "shortDesc": "RC channel 5 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC5_MIN", "shortDesc": "RC channel 5 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC5_REV", "shortDesc": "RC channel 5 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC5_TRIM", "shortDesc": "RC channel 5 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC6_MAX", "shortDesc": "RC channel 6 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC6_MIN", "shortDesc": "RC channel 6 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC6_REV", "shortDesc": "RC channel 6 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC6_TRIM", "shortDesc": "RC channel 6 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC7_MAX", "shortDesc": "RC channel 7 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC7_MIN", "shortDesc": "RC channel 7 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC7_REV", "shortDesc": "RC channel 7 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC7_TRIM", "shortDesc": "RC channel 7 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC8_MAX", "shortDesc": "RC channel 8 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC8_MIN", "shortDesc": "RC channel 8 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC8_REV", "shortDesc": "RC channel 8 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC8_TRIM", "shortDesc": "RC channel 8 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 2000.0, "group": "Radio Calibration", "longDesc": "Maximum value for this channel.", "max": 2200.0, "min": 1500.0, "name": "RC9_MAX", "shortDesc": "RC channel 9 maximum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1000.0, "group": "Radio Calibration", "longDesc": "Minimum value for this channel.", "max": 1500.0, "min": 800.0, "name": "RC9_MIN", "shortDesc": "RC channel 9 minimum", "type": "Float", "units": "us"}, {"category": "Standard", "default": 1.0, "group": "Radio Calibration", "longDesc": "Set to -1 to reverse channel.", "max": 1.0, "min": -1.0, "name": "RC9_REV", "shortDesc": "RC channel 9 reverse", "type": "Float", "values": [{"description": "Reverse", "value": -1.0}, {"description": "Normal", "value": 1.0}]}, {"category": "Standard", "default": 1500.0, "group": "Radio Calibration", "longDesc": "Mid point value", "max": 2200.0, "min": 800.0, "name": "RC9_TRIM", "shortDesc": "RC channel 9 trim", "type": "Float", "units": "us"}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "This parameter is used by Ground Station software to save the number\nof channels which were used during RC calibration. It is only meant\nfor ground station use.", "max": 18, "min": 0, "name": "RC_CHAN_CNT", "shortDesc": "RC channel count", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "Use RC_MAP_FAILSAFE to specify which channel is used to indicate RC loss via this threshold.\nBy default this is the throttle channel.\nSet to a PWM value slightly above the PWM value for the channel (e.g. throttle) in a failsafe event,\nbut below the minimum PWM value for the channel during normal operation.\nNote: The default value of 0 disables the feature (it is below the expected range).", "max": 2200, "min": 0, "name": "RC_FAILS_THR", "shortDesc": "Failsafe channel PWM threshold", "type": "Int32", "units": "us"}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "max": 18, "min": 0, "name": "RC_MAP_AUX1", "shortDesc": "AUX1 Passthrough RC channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "max": 18, "min": 0, "name": "RC_MAP_AUX2", "shortDesc": "AUX2 Passthrough RC channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "max": 18, "min": 0, "name": "RC_MAP_AUX3", "shortDesc": "AUX3 Passthrough RC channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "max": 18, "min": 0, "name": "RC_MAP_AUX4", "shortDesc": "AUX4 Passthrough RC channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "max": 18, "min": 0, "name": "RC_MAP_AUX5", "shortDesc": "AUX5 Passthrough RC channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "max": 18, "min": 0, "name": "RC_MAP_AUX6", "shortDesc": "AUX6 Passthrough RC channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "max": 18, "min": 0, "name": "RC_MAP_ENG_MOT", "shortDesc": "RC channel to engage the main motor (for helicopters)", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "Configures which RC channel is used by the receiver to indicate the signal was lost\n(on receivers that use output a fixed signal value to report lost signal).\nIf set to 0, the channel mapped to throttle is used.\nUse RC_FAILS_THR to set the threshold indicating lost signal. By default it's below\nthe expected range and hence disabled.", "max": 18, "min": 0, "name": "RC_MAP_FAILSAFE", "shortDesc": "Failsafe channel mapping", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "Can be used for parameter tuning with the RC. This one is further referenced as the 1st parameter channel.\nSet to 0 to deactivate *", "max": 18, "min": 0, "name": "RC_MAP_PARAM1", "shortDesc": "PARAM1 tuning channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "Can be used for parameter tuning with the RC. This one is further referenced as the 2nd parameter channel.\nSet to 0 to deactivate *", "max": 18, "min": 0, "name": "RC_MAP_PARAM2", "shortDesc": "PARAM2 tuning channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "Can be used for parameter tuning with the RC. This one is further referenced as the 3th parameter channel.\nSet to 0 to deactivate *", "max": 18, "min": 0, "name": "RC_MAP_PARAM3", "shortDesc": "PARAM3 tuning channel", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "The channel index (starting from 1 for channel 1) indicates\nwhich channel should be used for reading pitch inputs from.\nA value of zero indicates the switch is not assigned.", "max": 18, "min": 0, "name": "RC_MAP_PITCH", "shortDesc": "Pitch control channel mapping", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "The channel index (starting from 1 for channel 1) indicates\nwhich channel should be used for reading roll inputs from.\nA value of zero indicates the switch is not assigned.", "max": 18, "min": 0, "name": "RC_MAP_ROLL", "shortDesc": "Roll control channel mapping", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "The channel index (starting from 1 for channel 1) indicates\nwhich channel should be used for reading throttle inputs from.\nA value of zero indicates the switch is not assigned.", "max": 18, "min": 0, "name": "RC_MAP_THROTTLE", "shortDesc": "Throttle control channel mapping", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "The channel index (starting from 1 for channel 1) indicates\nwhich channel should be used for reading yaw inputs from.\nA value of zero indicates the switch is not assigned.", "max": 18, "min": 0, "name": "RC_MAP_YAW", "shortDesc": "Yaw control channel mapping", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 0, "group": "Radio Calibration", "longDesc": "0: do not read RSSI from input channel\n1-18: read RSSI from specified input channel\nSpecify the range for RSSI input with RC_RSSI_PWM_MIN and RC_RSSI_PWM_MAX parameters.", "max": 18, "min": 0, "name": "RC_RSSI_PWM_CHAN", "shortDesc": "PWM input channel that provides RSSI", "type": "Int32", "values": [{"description": "Unassigned", "value": 0}, {"description": "Channel 1", "value": 1}, {"description": "Channel 2", "value": 2}, {"description": "Channel 3", "value": 3}, {"description": "Channel 4", "value": 4}, {"description": "Channel 5", "value": 5}, {"description": "Channel 6", "value": 6}, {"description": "Channel 7", "value": 7}, {"description": "Channel 8", "value": 8}, {"description": "Channel 9", "value": 9}, {"description": "Channel 10", "value": 10}, {"description": "Channel 11", "value": 11}, {"description": "Channel 12", "value": 12}, {"description": "Channel 13", "value": 13}, {"description": "Channel 14", "value": 14}, {"description": "Channel 15", "value": 15}, {"description": "Channel 16", "value": 16}, {"description": "Channel 17", "value": 17}, {"description": "Channel 18", "value": 18}]}, {"category": "Standard", "default": 2000, "group": "Radio Calibration", "longDesc": "Only used if RC_RSSI_PWM_CHAN > 0", "max": 2000, "min": 0, "name": "RC_RSSI_PWM_MAX", "shortDesc": "Max input value for RSSI reading", "type": "Int32"}, {"category": "Standard", "default": 1000, "group": "Radio Calibration", "longDesc": "Only used if RC_RSSI_PWM_CHAN > 0", "max": 2000, "min": 0, "name": "RC_RSSI_PWM_MIN", "shortDesc": "Min input value for RSSI reading", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Radio Calibration", "increment": 0.01, "longDesc": "The trim value is the actuator control value the system needs\nfor straight and level flight.", "max": 0.5, "min": -0.5, "name": "TRIM_PITCH", "shortDesc": "Pitch trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Radio Calibration", "increment": 0.01, "longDesc": "The trim value is the actuator control value the system needs\nfor straight and level flight.", "max": 0.5, "min": -0.5, "name": "TRIM_ROLL", "shortDesc": "Roll trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Radio Calibration", "increment": 0.01, "longDesc": "The trim value is the actuator control value the system needs\nfor straight and level flight.", "max": 0.5, "min": -0.5, "name": "TRIM_YAW", "shortDesc": "Yaw trim", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.75, "group": "Radio Switches", "longDesc": "0-1 indicate where in the full channel range the threshold sits\n0 : min\n1 : max\nsign indicates polarity of comparison\npositive : true when channel>th\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channelth\nnegative : true when channel The rover starts to cut the corner earlier.", "max": 100.0, "min": 1.0, "name": "RA_ACC_RAD_GAIN", "shortDesc": "Tuning parameter for corner cutting", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Ackermann", "increment": 0.01, "longDesc": "The controller scales the acceptance radius based on the angle between\nthe previous, current and next waypoint.\nHigher value -> smoother trajectory at the cost of how close the rover gets\nto the waypoint (Set to -1 to disable corner cutting).", "max": 100.0, "min": -1.0, "name": "RA_ACC_RAD_MAX", "shortDesc": "Maximum acceptance radius for the waypoints", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Rover Ackermann", "increment": 0.01, "max": 1.5708, "min": 0.0, "name": "RA_MAX_STR_ANG", "shortDesc": "Maximum steering angle", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Ackermann", "increment": 0.01, "longDesc": "Set to -1 to disable.", "max": 1000.0, "min": -1.0, "name": "RA_STR_RATE_LIM", "shortDesc": "Steering rate limit", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Rover Ackermann", "increment": 0.001, "longDesc": "Distance from the front to the rear axle.", "max": 100.0, "min": 0.0, "name": "RA_WHEEL_BASE", "shortDesc": "Wheel base", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Rover Attitude Control", "increment": 0.01, "max": 100.0, "min": 0.0, "name": "RO_YAW_P", "shortDesc": "Proportional gain for closed loop yaw controller", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.174533, "group": "Rover Differential", "increment": 0.01, "longDesc": "This threshold is used for the state machine to switch from driving to turning based on the\nerror between the desired and actual yaw. It is also used as the threshold whether the rover should come\nto a smooth stop at the next waypoint. This slow down effect is active if the angle between the\nline segments from prevWP-currWP and currWP-nextWP is smaller then 180 - RD_TRANS_DRV_TRN.", "max": 3.14159, "min": 0.001, "name": "RD_TRANS_DRV_TRN", "shortDesc": "Yaw error threshhold to switch from driving to spot turning", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0872665, "group": "Rover Differential", "increment": 0.01, "longDesc": "This threshold is used for the state machine to switch from turning to driving based on the\nerror between the desired and actual yaw.", "max": 3.14159, "min": 0.001, "name": "RD_TRANS_TRN_DRV", "shortDesc": "Yaw error threshhold to switch from spot turning to driving", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Rover Differential", "increment": 0.001, "longDesc": "Distance from the center of the right wheel to the center of the left wheel.", "max": 100.0, "min": 0.0, "name": "RD_WHEEL_TRACK", "shortDesc": "Wheel track", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Rover Differential", "increment": 0.01, "longDesc": "Assign value <1.0 to decrease stick response for yaw control.", "max": 1.0, "min": 0.1, "name": "RD_YAW_STK_GAIN", "shortDesc": "Yaw stick gain for Manual mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.17, "group": "Rover Mecanum", "increment": 0.01, "longDesc": "Threshold for the angle between the active cruise direction and the cruise direction given\nby the stick inputs.\nThis can be understood as a deadzone for the combined stick inputs for forward/backwards\nand lateral speed which defines a course direction.", "max": 3.14, "min": 0.0, "name": "RM_COURSE_CTL_TH", "shortDesc": "Threshold to update course control in manual position mode", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Rover Mecanum", "increment": 0.001, "longDesc": "Distance from the center of the right wheel to the center of the left wheel.", "max": 100.0, "min": 0.0, "name": "RM_WHEEL_TRACK", "shortDesc": "Wheel track", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Rover Mecanum", "increment": 0.01, "longDesc": "Assign value <1.0 to decrease stick response for yaw control.", "max": 1.0, "min": 0.1, "name": "RM_YAW_STK_GAIN", "shortDesc": "Yaw stick gain for Manual mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Rate Control", "increment": 0.01, "longDesc": "Used to cap how quickly the magnitude of yaw rate setpoints can increase.\nSet to -1 to disable.", "max": 10000.0, "min": -1.0, "name": "RO_YAW_ACCEL_LIM", "shortDesc": "Yaw acceleration limit", "type": "Float", "units": "deg/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Rate Control", "increment": 0.01, "longDesc": "Used to cap how quickly the magnitude of yaw rate setpoints can decrease.\nSet to -1 to disable.", "max": 10000.0, "min": -1.0, "name": "RO_YAW_DECEL_LIM", "shortDesc": "Yaw deceleration limit", "type": "Float", "units": "deg/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Rover Rate Control", "longDesc": "Exponential factor for tuning the input curve shape.\n0 Purely linear input curve\n1 Purely cubic input curve", "max": 1.0, "min": 0.0, "name": "RO_YAW_EXPO", "shortDesc": "Yaw rate expo factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Rover Rate Control", "increment": 0.01, "longDesc": "Multiplicative correction factor for the feedforward mapping of the yaw rate controller.\nIncrease this value (x > 1) if the measured yaw rate is lower than the setpoint, decrease (0 < x < 1) otherwise.\nNote: Tuning this is particularly useful for skid-steered rovers, or rovers with misaligned wheels/steering axes\nthat cause a lot of friction when turning.", "max": 10000.0, "min": 0.01, "name": "RO_YAW_RATE_CORR", "shortDesc": "Yaw rate correction factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Rover Rate Control", "increment": 0.01, "max": 100.0, "min": 0.0, "name": "RO_YAW_RATE_I", "shortDesc": "Integral gain for closed loop yaw rate controller", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Rover Rate Control", "increment": 0.01, "longDesc": "Used to cap yaw rate setpoints and map controller inputs to yaw rate setpoints\nin Acro, Stabilized and Position mode.", "max": 10000.0, "min": 0.0, "name": "RO_YAW_RATE_LIM", "shortDesc": "Yaw rate limit", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Rover Rate Control", "increment": 0.01, "max": 100.0, "min": 0.0, "name": "RO_YAW_RATE_P", "shortDesc": "Proportional gain for closed loop yaw rate controller", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 3.0, "group": "Rover Rate Control", "increment": 0.01, "longDesc": "The minimum threshold for the yaw rate measurement not to be interpreted as zero.", "max": 100.0, "min": 0.0, "name": "RO_YAW_RATE_TH", "shortDesc": "Yaw rate measurement threshold", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Rover Rate Control", "increment": 0.01, "longDesc": "Percentage of stick input range that will be interpreted as zero around the stick centered value.", "max": 1.0, "min": 0.0, "name": "RO_YAW_STICK_DZ", "shortDesc": "Yaw stick deadzone", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Rover Rate Control", "longDesc": "\"Superexponential\" factor for refining the input curve shape tuned using RO_YAW_EXPO.\n0 Pure Expo function\n0.7 reasonable shape enhancement for intuitive stick feel\n0.95 very strong bent input curve only near maxima have effect", "max": 0.95, "min": 0.0, "name": "RO_YAW_SUPEXPO", "shortDesc": "Yaw rate super expo factor", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Velocity Control", "increment": 0.01, "longDesc": "Set to -1 to disable.\nFor mecanum rovers this limit is used for longitudinal and lateral acceleration.", "max": 100.0, "min": -1.0, "name": "RO_ACCEL_LIM", "shortDesc": "Acceleration limit", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Velocity Control", "increment": 0.01, "longDesc": "Set to -1 to disable.\nNote that if it is disabled the rover will not slow down when approaching waypoints in auto modes.\nFor mecanum rovers this limit is used for longitudinal and lateral deceleration.", "max": 100.0, "min": -1.0, "name": "RO_DECEL_LIM", "shortDesc": "Deceleration limit", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Velocity Control", "increment": 0.01, "longDesc": "Set to -1 to disable.\nNote that if it is disabled the rover will not slow down when approaching waypoints in auto modes.\nFor mecanum rovers this limit is used for longitudinal and lateral jerk.", "max": 100.0, "min": -1.0, "name": "RO_JERK_LIM", "shortDesc": "Jerk limit", "type": "Float", "units": "m/s^3"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Rover Velocity Control", "increment": 0.01, "longDesc": "Used to linearly map speeds [m/s] to throttle values [-1. 1].", "max": 100.0, "min": 0.0, "name": "RO_MAX_THR_SPEED", "shortDesc": "Speed the rover drives at maximum throttle", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Rover Velocity Control", "increment": 0.001, "max": 100.0, "min": 0.0, "name": "RO_SPEED_I", "shortDesc": "Integral gain for ground speed controller", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Velocity Control", "increment": 0.01, "longDesc": "Used to cap speed setpoints and map controller inputs to speed setpoints in Position mode.", "max": 100.0, "min": -1.0, "name": "RO_SPEED_LIM", "shortDesc": "Speed limit", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Rover Velocity Control", "increment": 0.01, "max": 100.0, "min": 0.0, "name": "RO_SPEED_P", "shortDesc": "Proportional gain for ground speed controller", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": -1.0, "group": "Rover Velocity Control", "increment": 0.01, "longDesc": "Reduced_speed = RO_MAX_THR_SPEED * (1 - normalized_course_error * RO_SPEED_RED)\nThe normalized course error is the angle between the current course and the bearing setpoint\ninterpolated from [0, 180] -> [0, 1].\nHigher value -> More speed reduction.\nNote: This is also used to calculate the speed at which the vehicle arrives at a waypoint in auto modes.\nSet to -1 to disable bearing error based speed reduction.", "max": 100.0, "min": -1.0, "name": "RO_SPEED_RED", "shortDesc": "Tuning parameter for the speed reduction based on the course error", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Rover Velocity Control", "increment": 0.01, "longDesc": "Set to -1 to disable.\nThe minimum threshold for the speed measurement not to be interpreted as zero.", "max": 100.0, "min": 0.0, "name": "RO_SPEED_TH", "shortDesc": "Speed measurement threshold", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Runway Takeoff", "increment": 0.01, "max": 1.0, "min": 0.0, "name": "RWTO_MAX_THR", "shortDesc": "Throttle during runway takeoff", "type": "Float", "units": "norm"}, {"category": "Standard", "default": 1, "group": "Runway Takeoff", "longDesc": "This is useful when map, GNSS, or yaw errors on ground are misaligned with what the operator intends for takeoff course.\nParticularly useful for skinny runways or if the wheel servo is a bit off trim.", "name": "RWTO_NUDGE", "shortDesc": "Enable use of yaw stick for nudging the wheel during runway ground roll", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Runway Takeoff", "increment": 0.5, "longDesc": "A taildragger with steerable wheel might need to pitch up\na little to keep its wheel on the ground before airspeed\nto takeoff is reached.", "max": 20.0, "min": -10.0, "name": "RWTO_PSP", "shortDesc": "Pitch setpoint during taxi / before takeoff rotation airspeed is reached", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "Runway Takeoff", "increment": 0.1, "max": 15.0, "min": 1.0, "name": "RWTO_RAMP_TIME", "shortDesc": "Throttle ramp up time for runway takeoff", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": -1.0, "group": "Runway Takeoff", "increment": 0.1, "longDesc": "The calibrated airspeed threshold during the takeoff ground roll when the plane should start rotating (pitching up).\nMust be less than the takeoff airspeed, will otherwise be capped at the takeoff airpeed (see FW_TKO_AIRSPD).\nIf set <= 0.0, defaults to 0.9 * takeoff airspeed (see FW_TKO_AIRSPD)", "min": -1.0, "name": "RWTO_ROT_AIRSPD", "shortDesc": "Takeoff rotation airspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Runway Takeoff", "increment": 0.1, "longDesc": "This is the time desired to linearly ramp in takeoff pitch constraints during the takeoff rotation", "min": 0.1, "name": "RWTO_ROT_TIME", "shortDesc": "Takeoff rotation time", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Runway Takeoff", "name": "RWTO_TKOFF", "shortDesc": "Runway takeoff with landing gear", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"bitmask": [{"description": "SD card logging", "index": 0}, {"description": "Mavlink logging", "index": 1}], "category": "Standard", "default": 3, "group": "SD Logging", "longDesc": "If no logging is set the logger will not be started. Set bits true to enable: 0: SD card logging 1: Mavlink logging", "max": 3, "min": 0, "name": "SDLOG_BACKEND", "rebootRequired": true, "shortDesc": "Logging Backend (integer bitmask)", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "SD Logging", "longDesc": "When enabled, logging will not start from boot if battery power is not detected (e.g. powered via USB on a test bench). This prevents extraneous flight logs from being created during bench testing. Note that this only applies to log-from-boot modes. This has no effect on arm-based modes.", "name": "SDLOG_BOOT_BAT", "shortDesc": "Battery-only Logging", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "SD Logging", "longDesc": "If there are more log directories than this value, the system will delete the oldest directories during startup. In addition, the system will delete old logs if there is not enough free space left. The minimum amount is 300 MB. If this is set to 0, old directories will only be removed if the free space falls below the minimum. Note: this does not apply to mission log files.", "max": 1000, "min": 0, "name": "SDLOG_DIRS_MAX", "rebootRequired": true, "shortDesc": "Maximum number of log directories to keep", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "SD Logging", "longDesc": "If enabled, a small additional \"mission\" log file will be written to the SD card. The log contains just those messages that are useful for tasks like generating flight statistics and geotagging. The different modes can be used to further reduce the logged data (and thus the log file size). For example, choose geotagging mode to only log data required for geotagging. Note that the normal/full log is still created, and contains all the data in the mission log (and more).", "name": "SDLOG_MISSION", "rebootRequired": true, "shortDesc": "Mission Log", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "All mission messages", "value": 1}, {"description": "Geotagging messages", "value": 2}]}, {"category": "Standard", "default": 0, "group": "SD Logging", "longDesc": "Determines when to start and stop logging. By default, logging is started when arming the system, and stopped when disarming. Note: The logging start/end points that can be configured here only apply to SD logging. The mavlink backend is started/stopped independently of these points.", "name": "SDLOG_MODE", "rebootRequired": true, "shortDesc": "Logging Mode", "type": "Int32", "values": [{"description": "when armed until disarm (default)", "value": 0}, {"description": "from boot until disarm", "value": 1}, {"description": "from boot until shutdown", "value": 2}, {"description": "while manual input AUX1 >30%", "value": 3}, {"description": "from 1st armed until shutdown", "value": 4}]}, {"bitmask": [{"description": "Default set (general log analysis)", "index": 0}, {"description": "Estimator replay (EKF2)", "index": 1}, {"description": "Thermal calibration", "index": 2}, {"description": "System identification", "index": 3}, {"description": "High rate", "index": 4}, {"description": "Debug", "index": 5}, {"description": "Sensor comparison", "index": 6}, {"description": "Computer Vision and Avoidance", "index": 7}, {"description": "Raw FIFO high-rate IMU (Gyro)", "index": 8}, {"description": "Raw FIFO high-rate IMU (Accel)", "index": 9}, {"description": "Mavlink tunnel message logging", "index": 10}, {"description": "High rate sensors", "index": 11}], "category": "Standard", "default": 1, "group": "SD Logging", "longDesc": "This integer bitmask controls the set and rates of logged topics. The default allows for general log analysis while keeping the log file size reasonably small. Enabling multiple sets leads to higher bandwidth requirements and larger log files. Set bits true to enable: 0 : Default set (used for general log analysis) 1 : Full rate estimator (EKF2) replay topics 2 : Topics for thermal calibration (high rate raw IMU and Baro sensor data) 3 : Topics for system identification (high rate actuator control and IMU data) 4 : Full rates for analysis of fast maneuvers (RC, attitude, rates and actuators) 5 : Debugging topics (debug_*.msg topics, for custom code) 6 : Topics for sensor comparison (low rate raw IMU, Baro and magnetometer data) 7 : Topics for computer vision and collision prevention 8 : Raw FIFO high-rate IMU (Gyro) 9 : Raw FIFO high-rate IMU (Accel) 10: Logging of mavlink tunnel message (useful for payload communication debugging)", "max": 4095, "min": 0, "name": "SDLOG_PROFILE", "rebootRequired": true, "shortDesc": "Logging topic profile (integer bitmask)", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "SD Logging", "longDesc": "the difference in hours and minutes from Coordinated Universal Time (UTC) for a your place and date. for example, In case of South Korea(UTC+09:00), UTC offset is 540 min (9*60) refer to https://en.wikipedia.org/wiki/List_of_UTC_time_offsets", "max": 1000, "min": -1000, "name": "SDLOG_UTC_OFFSET", "shortDesc": "UTC offset (unit: min)", "type": "Int32", "units": "min"}, {"category": "Standard", "default": 1, "group": "SD Logging", "longDesc": "If set to 1, add an ID to the log, which uniquely identifies the vehicle", "name": "SDLOG_UUID", "shortDesc": "Log UUID", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 60.0, "group": "SITL", "increment": 1.0, "max": 86400.0, "min": 1.0, "name": "SIM_BAT_DRAIN", "shortDesc": "Simulator Battery drain interval", "type": "Float", "units": "s"}, {"category": "Standard", "default": 1, "group": "SITL", "longDesc": "Enable or disable the internal battery simulation. This is useful\nwhen the battery is simulated externally and interfaced with PX4\nthrough MAVLink for example.", "name": "SIM_BAT_ENABLE", "shortDesc": "Simulator Battery enabled", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 50.0, "group": "SITL", "increment": 0.1, "longDesc": "Can be used to alter the battery level during SITL- or HITL-simulation on the fly.\nParticularly useful for testing different low-battery behaviour.", "max": 100.0, "min": 0.0, "name": "SIM_BAT_MIN_PCT", "shortDesc": "Simulator Battery minimal percentage", "type": "Float", "units": "%"}, {"category": "System", "decimalPlaces": 3, "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the accelerometer this calibration applies to.", "name": "CAL_ACC0_ID", "shortDesc": "Accelerometer 0 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": -1, "group": "Sensor Calibration", "name": "CAL_ACC0_PRIO", "shortDesc": "Accelerometer 0 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_ACC0_ROT", "shortDesc": "Accelerometer 0 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC0_XOFF", "shortDesc": "Accelerometer 0 X-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC0_XSCALE", "shortDesc": "Accelerometer 0 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC0_YOFF", "shortDesc": "Accelerometer 0 Y-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC0_YSCALE", "shortDesc": "Accelerometer 0 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC0_ZOFF", "shortDesc": "Accelerometer 0 Z-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC0_ZSCALE", "shortDesc": "Accelerometer 0 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the accelerometer this calibration applies to.", "name": "CAL_ACC1_ID", "shortDesc": "Accelerometer 1 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": -1, "group": "Sensor Calibration", "name": "CAL_ACC1_PRIO", "shortDesc": "Accelerometer 1 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_ACC1_ROT", "shortDesc": "Accelerometer 1 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC1_XOFF", "shortDesc": "Accelerometer 1 X-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC1_XSCALE", "shortDesc": "Accelerometer 1 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC1_YOFF", "shortDesc": "Accelerometer 1 Y-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC1_YSCALE", "shortDesc": "Accelerometer 1 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC1_ZOFF", "shortDesc": "Accelerometer 1 Z-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC1_ZSCALE", "shortDesc": "Accelerometer 1 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the accelerometer this calibration applies to.", "name": "CAL_ACC2_ID", "shortDesc": "Accelerometer 2 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": -1, "group": "Sensor Calibration", "name": "CAL_ACC2_PRIO", "shortDesc": "Accelerometer 2 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_ACC2_ROT", "shortDesc": "Accelerometer 2 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC2_XOFF", "shortDesc": "Accelerometer 2 X-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC2_XSCALE", "shortDesc": "Accelerometer 2 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC2_YOFF", "shortDesc": "Accelerometer 2 Y-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC2_YSCALE", "shortDesc": "Accelerometer 2 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC2_ZOFF", "shortDesc": "Accelerometer 2 Z-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC2_ZSCALE", "shortDesc": "Accelerometer 2 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the accelerometer this calibration applies to.", "name": "CAL_ACC3_ID", "shortDesc": "Accelerometer 3 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": -1, "group": "Sensor Calibration", "name": "CAL_ACC3_PRIO", "shortDesc": "Accelerometer 3 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_ACC3_ROT", "shortDesc": "Accelerometer 3 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC3_XOFF", "shortDesc": "Accelerometer 3 X-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC3_XSCALE", "shortDesc": "Accelerometer 3 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC3_YOFF", "shortDesc": "Accelerometer 3 Y-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC3_YSCALE", "shortDesc": "Accelerometer 3 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_ACC3_ZOFF", "shortDesc": "Accelerometer 3 Z-axis offset", "type": "Float", "units": "m/s^2", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_ACC3_ZSCALE", "shortDesc": "Accelerometer 3 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the barometer this calibration applies to.", "name": "CAL_BARO0_ID", "shortDesc": "Barometer 0 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_BARO0_OFF", "shortDesc": "Barometer 0 offset", "type": "Float", "volatile": true}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_BARO0_PRIO", "shortDesc": "Barometer 0 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the barometer this calibration applies to.", "name": "CAL_BARO1_ID", "shortDesc": "Barometer 1 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_BARO1_OFF", "shortDesc": "Barometer 1 offset", "type": "Float", "volatile": true}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_BARO1_PRIO", "shortDesc": "Barometer 1 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the barometer this calibration applies to.", "name": "CAL_BARO2_ID", "shortDesc": "Barometer 2 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_BARO2_OFF", "shortDesc": "Barometer 2 offset", "type": "Float", "volatile": true}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_BARO2_PRIO", "shortDesc": "Barometer 2 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the barometer this calibration applies to.", "name": "CAL_BARO3_ID", "shortDesc": "Barometer 3 calibration device ID", "type": "Int32"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_BARO3_OFF", "shortDesc": "Barometer 3 offset", "type": "Float", "volatile": true}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_BARO3_PRIO", "shortDesc": "Barometer 3 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the gyroscope this calibration applies to.", "name": "CAL_GYRO0_ID", "shortDesc": "Gyroscope 0 calibration device ID", "type": "Int32"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_GYRO0_PRIO", "shortDesc": "Gyroscope 0 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_GYRO0_ROT", "shortDesc": "Gyroscope 0 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO0_XOFF", "shortDesc": "Gyroscope 0 X-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO0_YOFF", "shortDesc": "Gyroscope 0 Y-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO0_ZOFF", "shortDesc": "Gyroscope 0 Z-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the gyroscope this calibration applies to.", "name": "CAL_GYRO1_ID", "shortDesc": "Gyroscope 1 calibration device ID", "type": "Int32"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_GYRO1_PRIO", "shortDesc": "Gyroscope 1 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_GYRO1_ROT", "shortDesc": "Gyroscope 1 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO1_XOFF", "shortDesc": "Gyroscope 1 X-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO1_YOFF", "shortDesc": "Gyroscope 1 Y-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO1_ZOFF", "shortDesc": "Gyroscope 1 Z-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the gyroscope this calibration applies to.", "name": "CAL_GYRO2_ID", "shortDesc": "Gyroscope 2 calibration device ID", "type": "Int32"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_GYRO2_PRIO", "shortDesc": "Gyroscope 2 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_GYRO2_ROT", "shortDesc": "Gyroscope 2 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO2_XOFF", "shortDesc": "Gyroscope 2 X-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO2_YOFF", "shortDesc": "Gyroscope 2 Y-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO2_ZOFF", "shortDesc": "Gyroscope 2 Z-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the gyroscope this calibration applies to.", "name": "CAL_GYRO3_ID", "shortDesc": "Gyroscope 3 calibration device ID", "type": "Int32"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_GYRO3_PRIO", "shortDesc": "Gyroscope 3 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.", "max": 40, "min": -1, "name": "CAL_GYRO3_ROT", "shortDesc": "Gyroscope 3 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO3_XOFF", "shortDesc": "Gyroscope 3 X-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO3_YOFF", "shortDesc": "Gyroscope 3 Y-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_GYRO3_ZOFF", "shortDesc": "Gyroscope 3 Z-axis offset", "type": "Float", "units": "rad/s", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the magnetometer this calibration applies to.", "name": "CAL_MAG0_ID", "shortDesc": "Magnetometer 0 calibration device ID", "type": "Int32"}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG0_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG0_PITCH", "shortDesc": "Magnetometer 0 Custom Euler Pitch Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_MAG0_PRIO", "shortDesc": "Magnetometer 0 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG0_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG0_ROLL", "shortDesc": "Magnetometer 0 Custom Euler Roll Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.\nSet to \"Custom Euler Angle\" to define the rotation using CAL_MAG0_ROLL, CAL_MAG0_PITCH and CAL_MAG0_YAW.", "max": 100, "min": -1, "name": "CAL_MAG0_ROT", "shortDesc": "Magnetometer 0 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}, {"description": "Custom Euler Angle", "value": 100}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nX component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG0_XCOMP", "shortDesc": "Magnetometer 0 X Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG0_XODIAG", "shortDesc": "Magnetometer 0 X-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG0_XOFF", "shortDesc": "Magnetometer 0 X-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG0_XSCALE", "shortDesc": "Magnetometer 0 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG0_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG0_YAW", "shortDesc": "Magnetometer 0 Custom Euler Yaw Angle", "type": "Float", "units": "deg"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nY component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG0_YCOMP", "shortDesc": "Magnetometer 0 Y Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG0_YODIAG", "shortDesc": "Magnetometer 0 Y-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG0_YOFF", "shortDesc": "Magnetometer 0 Y-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG0_YSCALE", "shortDesc": "Magnetometer 0 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nZ component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG0_ZCOMP", "shortDesc": "Magnetometer 0 Z Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG0_ZODIAG", "shortDesc": "Magnetometer 0 Z-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG0_ZOFF", "shortDesc": "Magnetometer 0 Z-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG0_ZSCALE", "shortDesc": "Magnetometer 0 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the magnetometer this calibration applies to.", "name": "CAL_MAG1_ID", "shortDesc": "Magnetometer 1 calibration device ID", "type": "Int32"}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG1_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG1_PITCH", "shortDesc": "Magnetometer 1 Custom Euler Pitch Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_MAG1_PRIO", "shortDesc": "Magnetometer 1 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG1_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG1_ROLL", "shortDesc": "Magnetometer 1 Custom Euler Roll Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.\nSet to \"Custom Euler Angle\" to define the rotation using CAL_MAG1_ROLL, CAL_MAG1_PITCH and CAL_MAG1_YAW.", "max": 100, "min": -1, "name": "CAL_MAG1_ROT", "shortDesc": "Magnetometer 1 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}, {"description": "Custom Euler Angle", "value": 100}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nX component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG1_XCOMP", "shortDesc": "Magnetometer 1 X Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG1_XODIAG", "shortDesc": "Magnetometer 1 X-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG1_XOFF", "shortDesc": "Magnetometer 1 X-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG1_XSCALE", "shortDesc": "Magnetometer 1 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG1_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG1_YAW", "shortDesc": "Magnetometer 1 Custom Euler Yaw Angle", "type": "Float", "units": "deg"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nY component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG1_YCOMP", "shortDesc": "Magnetometer 1 Y Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG1_YODIAG", "shortDesc": "Magnetometer 1 Y-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG1_YOFF", "shortDesc": "Magnetometer 1 Y-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG1_YSCALE", "shortDesc": "Magnetometer 1 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nZ component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG1_ZCOMP", "shortDesc": "Magnetometer 1 Z Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG1_ZODIAG", "shortDesc": "Magnetometer 1 Z-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG1_ZOFF", "shortDesc": "Magnetometer 1 Z-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG1_ZSCALE", "shortDesc": "Magnetometer 1 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the magnetometer this calibration applies to.", "name": "CAL_MAG2_ID", "shortDesc": "Magnetometer 2 calibration device ID", "type": "Int32"}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG2_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG2_PITCH", "shortDesc": "Magnetometer 2 Custom Euler Pitch Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_MAG2_PRIO", "shortDesc": "Magnetometer 2 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG2_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG2_ROLL", "shortDesc": "Magnetometer 2 Custom Euler Roll Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.\nSet to \"Custom Euler Angle\" to define the rotation using CAL_MAG2_ROLL, CAL_MAG2_PITCH and CAL_MAG2_YAW.", "max": 100, "min": -1, "name": "CAL_MAG2_ROT", "shortDesc": "Magnetometer 2 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}, {"description": "Custom Euler Angle", "value": 100}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nX component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG2_XCOMP", "shortDesc": "Magnetometer 2 X Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG2_XODIAG", "shortDesc": "Magnetometer 2 X-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG2_XOFF", "shortDesc": "Magnetometer 2 X-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG2_XSCALE", "shortDesc": "Magnetometer 2 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG2_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG2_YAW", "shortDesc": "Magnetometer 2 Custom Euler Yaw Angle", "type": "Float", "units": "deg"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nY component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG2_YCOMP", "shortDesc": "Magnetometer 2 Y Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG2_YODIAG", "shortDesc": "Magnetometer 2 Y-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG2_YOFF", "shortDesc": "Magnetometer 2 Y-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG2_YSCALE", "shortDesc": "Magnetometer 2 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nZ component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG2_ZCOMP", "shortDesc": "Magnetometer 2 Z Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG2_ZODIAG", "shortDesc": "Magnetometer 2 Z-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG2_ZOFF", "shortDesc": "Magnetometer 2 Z-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG2_ZSCALE", "shortDesc": "Magnetometer 2 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Device ID of the magnetometer this calibration applies to.", "name": "CAL_MAG3_ID", "shortDesc": "Magnetometer 3 calibration device ID", "type": "Int32"}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG3_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG3_PITCH", "shortDesc": "Magnetometer 3 Custom Euler Pitch Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "name": "CAL_MAG3_PRIO", "shortDesc": "Magnetometer 3 priority", "type": "Int32", "values": [{"description": "Uninitialized", "value": -1}, {"description": "Disabled", "value": 0}, {"description": "Min", "value": 1}, {"description": "Low", "value": 25}, {"description": "Medium (Default)", "value": 50}, {"description": "High", "value": 75}, {"description": "Max", "value": 100}]}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG3_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG3_ROLL", "shortDesc": "Magnetometer 3 Custom Euler Roll Angle", "type": "Float", "units": "deg"}, {"category": "System", "default": -1, "group": "Sensor Calibration", "longDesc": "An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero.\nSet to \"Custom Euler Angle\" to define the rotation using CAL_MAG3_ROLL, CAL_MAG3_PITCH and CAL_MAG3_YAW.", "max": 100, "min": -1, "name": "CAL_MAG3_ROT", "shortDesc": "Magnetometer 3 rotation relative to airframe", "type": "Int32", "values": [{"description": "Internal", "value": -1}, {"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}, {"description": "Custom Euler Angle", "value": 100}]}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nX component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG3_XCOMP", "shortDesc": "Magnetometer 3 X Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG3_XODIAG", "shortDesc": "Magnetometer 3 X-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG3_XOFF", "shortDesc": "Magnetometer 3 X-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG3_XSCALE", "shortDesc": "Magnetometer 3 X-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Setting this parameter changes CAL_MAG3_ROT to \"Custom Euler Angle\"", "max": 180.0, "min": -180.0, "name": "CAL_MAG3_YAW", "shortDesc": "Magnetometer 3 Custom Euler Yaw Angle", "type": "Float", "units": "deg"}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nY component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG3_YCOMP", "shortDesc": "Magnetometer 3 Y Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG3_YODIAG", "shortDesc": "Magnetometer 3 Y-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG3_YOFF", "shortDesc": "Magnetometer 3 Y-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG3_YSCALE", "shortDesc": "Magnetometer 3 Y-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "longDesc": "Coefficient describing linear relationship between\nZ component of magnetometer in body frame axis\nand either current or throttle depending on value of CAL_MAG_COMP_TYP.\nUnit for throttle-based compensation is [G] and\nfor current-based compensation [G/kA]", "name": "CAL_MAG3_ZCOMP", "shortDesc": "Magnetometer 3 Z Axis throttle compensation", "type": "Float", "volatile": true}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG3_ZODIAG", "shortDesc": "Magnetometer 3 Z-axis off diagonal scale factor", "type": "Float", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 0.0, "group": "Sensor Calibration", "name": "CAL_MAG3_ZOFF", "shortDesc": "Magnetometer 3 Z-axis offset", "type": "Float", "units": "gauss", "volatile": true}, {"category": "System", "decimalPlaces": 3, "default": 1.0, "group": "Sensor Calibration", "max": 3.0, "min": 0.1, "name": "CAL_MAG3_ZSCALE", "shortDesc": "Magnetometer 3 Z-axis scaling factor", "type": "Float", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "name": "CAL_MAG_COMP_TYP", "shortDesc": "Type of magnetometer compensation", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Throttle-based compensation", "value": 1}, {"description": "Current-based compensation (battery_status instance 0)", "value": 2}, {"description": "Current-based compensation (battery_status instance 1)", "value": 3}]}, {"category": "Standard", "default": 0.0, "group": "Sensor Calibration", "longDesc": "Pick the appropriate scaling from the datasheet.\nthis number defines the (linear) conversion from voltage\nto Pascal (pa). For the MPXV7002DP this is 1000.\nNOTE: If the sensor always registers zero, try switching\nthe static and dynamic tubes.", "name": "SENS_DPRES_ANSC", "shortDesc": "Differential pressure sensor analog scaling", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Sensor Calibration", "longDesc": "The offset (zero-reading) in Pascal", "name": "SENS_DPRES_OFF", "shortDesc": "Differential pressure sensor offset", "type": "Float", "volatile": true}, {"category": "System", "default": 0, "group": "Sensor Calibration", "longDesc": "Reverse the raw measurements of all differential pressure sensors.\nThis can be enabled if the sensors have static and dynamic ports swapped.", "name": "SENS_DPRES_REV", "shortDesc": "Reverse differential pressure sensor readings", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 100.0, "group": "Sensor Calibration", "increment": 0.1, "longDesc": "This parameter defines the maximum distance from ground at which the optical flow sensor operates reliably.\nThe height setpoint will be limited to be no greater than this value when the navigation system\nis completely reliant on optical flow data and the height above ground estimate is valid.\nThe sensor may be usable above this height, but accuracy will progressively degrade.", "max": 100.0, "min": 1.0, "name": "SENS_FLOW_MAXHGT", "shortDesc": "Maximum height above ground when reliant on optical flow", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 8.0, "group": "Sensor Calibration", "longDesc": "Optical flow data will not fused by the estimators if the magnitude of the flow rate exceeds this value and\ncontrol loops will be instructed to limit ground speed such that the flow rate produced by movement over ground\nis less than 50% of this value.", "min": 1.0, "name": "SENS_FLOW_MAXR", "shortDesc": "Magnitude of maximum angular flow rate reliably measurable by the optical flow sensor", "type": "Float", "units": "rad/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.08, "group": "Sensor Calibration", "increment": 0.1, "longDesc": "This parameter defines the minimum distance from ground at which the optical flow sensor operates reliably.\nThe sensor may be usable below this height, but accuracy will progressively reduce to loss of focus.", "max": 1.0, "min": 0.0, "name": "SENS_FLOW_MINHGT", "shortDesc": "Minimum height above ground when reliant on optical flow", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "Sensors", "longDesc": "Model with Pitot\nCAL_AIR_TUBED_MM: Not used, 1.5 mm tubes assumed.\nCAL_AIR_TUBELEN: Length of the tubes connecting the pitot to the sensor.\nModel without Pitot (1.5 mm tubes)\nCAL_AIR_TUBED_MM: Not used, 1.5 mm tubes assumed.\nCAL_AIR_TUBELEN: Length of the tubes connecting the pitot to the sensor.\nTube Pressure Drop\nCAL_AIR_TUBED_MM: Diameter in mm of the pitot and tubes, must have the same diameter.\nCAL_AIR_TUBELEN: Length of the tubes connecting the pitot to the sensor and the static + dynamic port length of the pitot.", "name": "CAL_AIR_CMODEL", "shortDesc": "Airspeed sensor compensation model for the SDP3x", "type": "Int32", "values": [{"description": "Model with Pitot", "value": 0}, {"description": "Model without Pitot (1.5 mm tubes)", "value": 1}, {"description": "Tube Pressure Drop", "value": 2}]}, {"category": "Standard", "default": 1.5, "group": "Sensors", "max": 100.0, "min": 1.5, "name": "CAL_AIR_TUBED_MM", "shortDesc": "Airspeed sensor tube diameter. Only used for the Tube Pressure Drop Compensation", "type": "Float", "units": "mm"}, {"category": "Standard", "default": 0.2, "group": "Sensors", "longDesc": "See the CAL_AIR_CMODEL explanation on how this parameter should be set.", "max": 2.0, "min": 0.01, "name": "CAL_AIR_TUBELEN", "shortDesc": "Airspeed sensor tube length", "type": "Float", "units": "m"}, {"category": "Developer", "default": 63, "group": "Sensors", "longDesc": "Use SENS_MAG_SIDES instead", "name": "CAL_MAG_SIDES", "shortDesc": "For legacy QGC support only", "type": "Int32"}, {"category": "Standard", "default": 30.0, "group": "Sensors", "longDesc": "The cutoff frequency for the 2nd order butterworth filter on the primary accelerometer.\nThis only affects the signal sent to the controllers, not the estimators. 0 disables the filter.", "max": 1000.0, "min": 0.0, "name": "IMU_ACCEL_CUTOFF", "rebootRequired": true, "shortDesc": "Low pass filter cutoff frequency for accel", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "Sensors", "increment": 0.1, "longDesc": "The cutoff frequency for the 2nd order butterworth filter used on\nthe time derivative of the measured angular velocity, also known as\nthe D-term filter in the rate controller. The D-term uses the derivative of\nthe rate and thus is the most susceptible to noise. Therefore, using\na D-term filter allows to increase IMU_GYRO_CUTOFF, which\nleads to reduced control latency and permits to increase the P gains.\nA value of 0 disables the filter.", "max": 1000.0, "min": 0.0, "name": "IMU_DGYRO_CUTOFF", "rebootRequired": true, "shortDesc": "Cutoff frequency for angular acceleration (D-Term filter)", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 1, "group": "Sensors", "name": "IMU_GYRO_CAL_EN", "rebootRequired": true, "shortDesc": "IMU gyro auto calibration enable", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 40.0, "group": "Sensors", "increment": 0.1, "longDesc": "The cutoff frequency for the 2nd order butterworth filter on the primary gyro.\nThis only affects the angular velocity sent to the controllers, not the estimators.\nIt applies also to the angular acceleration (D-Term filter), see IMU_DGYRO_CUTOFF.\nA value of 0 disables the filter.", "max": 1000.0, "min": 0.0, "name": "IMU_GYRO_CUTOFF", "rebootRequired": true, "shortDesc": "Low pass filter cutoff frequency for gyro", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 15.0, "group": "Sensors", "increment": 0.1, "longDesc": "Bandwidth per notch filter when using dynamic notch filtering with ESC RPM.", "max": 30.0, "min": 5.0, "name": "IMU_GYRO_DNF_BW", "shortDesc": "IMU gyro ESC notch filter bandwidth", "type": "Float", "units": "Hz"}, {"bitmask": [{"description": "ESC RPM", "index": 0}, {"description": "FFT", "index": 1}], "category": "Standard", "default": 0, "group": "Sensors", "longDesc": "Enable bank of dynamically updating notch filters.\nRequires ESC RPM feedback or onboard FFT (IMU_GYRO_FFT_EN).", "max": 3, "min": 0, "name": "IMU_GYRO_DNF_EN", "shortDesc": "IMU gyro dynamic notch filtering", "type": "Int32"}, {"category": "Standard", "default": 3, "group": "Sensors", "longDesc": "ESC RPM number of harmonics (multiples of RPM) for ESC RPM dynamic notch filtering.", "max": 7, "min": 1, "name": "IMU_GYRO_DNF_HMC", "shortDesc": "IMU gyro dynamic notch filter harmonics", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 25.0, "group": "Sensors", "increment": 0.1, "longDesc": "Minimum notch filter frequency in Hz.", "name": "IMU_GYRO_DNF_MIN", "shortDesc": "IMU gyro dynamic notch filter minimum frequency", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 0, "group": "Sensors", "name": "IMU_GYRO_FFT_EN", "rebootRequired": true, "shortDesc": "IMU gyro FFT enable", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 512, "group": "Sensors", "name": "IMU_GYRO_FFT_LEN", "rebootRequired": true, "shortDesc": "IMU gyro FFT length", "type": "Int32", "units": "Hz", "values": [{"description": "256", "value": 256}, {"description": "512", "value": 512}, {"description": "1024", "value": 1024}, {"description": "4096", "value": 4096}]}, {"category": "Standard", "default": 150.0, "group": "Sensors", "max": 1000.0, "min": 1.0, "name": "IMU_GYRO_FFT_MAX", "rebootRequired": true, "shortDesc": "IMU gyro FFT maximum frequency", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 30.0, "group": "Sensors", "max": 1000.0, "min": 1.0, "name": "IMU_GYRO_FFT_MIN", "rebootRequired": true, "shortDesc": "IMU gyro FFT minimum frequency", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 10.0, "group": "Sensors", "max": 30.0, "min": 1.0, "name": "IMU_GYRO_FFT_SNR", "shortDesc": "IMU gyro FFT SNR", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "Sensors", "increment": 0.1, "longDesc": "The frequency width of the stop band for the 2nd order notch filter on the primary gyro.\nSee \"IMU_GYRO_NF0_FRQ\" to activate the filter and to set the notch frequency.\nApplies to both angular velocity and angular acceleration sent to the controllers.", "max": 100.0, "min": 0.0, "name": "IMU_GYRO_NF0_BW", "rebootRequired": true, "shortDesc": "Notch filter bandwidth for gyro", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Sensors", "increment": 0.1, "longDesc": "The center frequency for the 2nd order notch filter on the primary gyro.\nThis filter can be enabled to avoid feedback amplification of structural resonances at a specific frequency.\nThis only affects the signal sent to the controllers, not the estimators.\nApplies to both angular velocity and angular acceleration sent to the controllers.\nSee \"IMU_GYRO_NF0_BW\" to set the bandwidth of the filter.\nA value of 0 disables the filter.", "max": 1000.0, "min": 0.0, "name": "IMU_GYRO_NF0_FRQ", "rebootRequired": true, "shortDesc": "Notch filter frequency for gyro", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "Sensors", "increment": 0.1, "longDesc": "The frequency width of the stop band for the 2nd order notch filter on the primary gyro.\nSee \"IMU_GYRO_NF1_FRQ\" to activate the filter and to set the notch frequency.\nApplies to both angular velocity and angular acceleration sent to the controllers.", "max": 100.0, "min": 0.0, "name": "IMU_GYRO_NF1_BW", "rebootRequired": true, "shortDesc": "Notch filter 1 bandwidth for gyro", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Sensors", "increment": 0.1, "longDesc": "The center frequency for the 2nd order notch filter on the primary gyro.\nThis filter can be enabled to avoid feedback amplification of structural resonances at a specific frequency.\nThis only affects the signal sent to the controllers, not the estimators.\nApplies to both angular velocity and angular acceleration sent to the controllers.\nSee \"IMU_GYRO_NF1_BW\" to set the bandwidth of the filter.\nA value of 0 disables the filter.", "max": 1000.0, "min": 0.0, "name": "IMU_GYRO_NF1_FRQ", "rebootRequired": true, "shortDesc": "Notch filter 2 frequency for gyro", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 400, "group": "Sensors", "longDesc": "The maximum rate the gyro control data (vehicle_angular_velocity) will be\nallowed to publish at. This is the loop rate for the rate controller and outputs.\nNote: sensor data is always read and filtered at the full raw rate (eg commonly 8 kHz) regardless of this setting.", "max": 2000, "min": 100, "name": "IMU_GYRO_RATEMAX", "rebootRequired": true, "shortDesc": "Gyro control data maximum publication rate (inner loop rate)", "type": "Int32", "units": "Hz", "values": [{"description": "100 Hz", "value": 100}, {"description": "250 Hz", "value": 250}, {"description": "400 Hz", "value": 400}, {"description": "800 Hz", "value": 800}, {"description": "1000 Hz", "value": 1000}, {"description": "2000 Hz", "value": 2000}]}, {"category": "Standard", "default": 200, "group": "Sensors", "longDesc": "The rate at which raw IMU data is integrated to produce delta angles and delta velocities.\nRecommended to set this to a multiple of the estimator update period (currently 10 ms for ekf2).", "max": 1000, "min": 100, "name": "IMU_INTEG_RATE", "rebootRequired": true, "shortDesc": "IMU integration rate", "type": "Int32", "units": "Hz", "values": [{"description": "100 Hz", "value": 100}, {"description": "200 Hz", "value": 200}, {"description": "250 Hz", "value": 250}, {"description": "400 Hz", "value": 400}]}, {"category": "Standard", "default": 1013.25, "group": "Sensors", "max": 1500.0, "min": 500.0, "name": "SENS_BARO_QNH", "shortDesc": "QNH for barometer", "type": "Float", "units": "hPa"}, {"category": "Standard", "default": 20.0, "group": "Sensors", "longDesc": "Barometric air data maximum publication rate. This is an upper bound,\nactual barometric data rate is still dependent on the sensor.", "max": 200.0, "min": 1.0, "name": "SENS_BARO_RATE", "shortDesc": "Baro max rate", "type": "Float", "units": "Hz"}, {"category": "System", "default": 1, "group": "Sensors", "longDesc": "Automatically calibrate barometer based on the GNSS height", "name": "SENS_BAR_AUTOCAL", "shortDesc": "Barometer auto calibration", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Sensors", "longDesc": "This parameter defines the rotation of the FMU board relative to the platform.", "max": 40, "min": -1, "name": "SENS_BOARD_ROT", "rebootRequired": true, "shortDesc": "Board rotation", "type": "Int32", "values": [{"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}, {"description": "Roll 180\u00b0", "value": 8}, {"description": "Roll 180\u00b0, Yaw 45\u00b0", "value": 9}, {"description": "Roll 180\u00b0, Yaw 90\u00b0", "value": 10}, {"description": "Roll 180\u00b0, Yaw 135\u00b0", "value": 11}, {"description": "Pitch 180\u00b0", "value": 12}, {"description": "Roll 180\u00b0, Yaw 225\u00b0", "value": 13}, {"description": "Roll 180\u00b0, Yaw 270\u00b0", "value": 14}, {"description": "Roll 180\u00b0, Yaw 315\u00b0", "value": 15}, {"description": "Roll 90\u00b0", "value": 16}, {"description": "Roll 90\u00b0, Yaw 45\u00b0", "value": 17}, {"description": "Roll 90\u00b0, Yaw 90\u00b0", "value": 18}, {"description": "Roll 90\u00b0, Yaw 135\u00b0", "value": 19}, {"description": "Roll 270\u00b0", "value": 20}, {"description": "Roll 270\u00b0, Yaw 45\u00b0", "value": 21}, {"description": "Roll 270\u00b0, Yaw 90\u00b0", "value": 22}, {"description": "Roll 270\u00b0, Yaw 135\u00b0", "value": 23}, {"description": "Pitch 90\u00b0", "value": 24}, {"description": "Pitch 270\u00b0", "value": 25}, {"description": "Pitch 180\u00b0, Yaw 90\u00b0", "value": 26}, {"description": "Pitch 180\u00b0, Yaw 270\u00b0", "value": 27}, {"description": "Roll 90\u00b0, Pitch 90\u00b0", "value": 28}, {"description": "Roll 180\u00b0, Pitch 90\u00b0", "value": 29}, {"description": "Roll 270\u00b0, Pitch 90\u00b0", "value": 30}, {"description": "Roll 90\u00b0, Pitch 180\u00b0", "value": 31}, {"description": "Roll 270\u00b0, Pitch 180\u00b0", "value": 32}, {"description": "Roll 90\u00b0, Pitch 270\u00b0", "value": 33}, {"description": "Roll 180\u00b0, Pitch 270\u00b0", "value": 34}, {"description": "Roll 270\u00b0, Pitch 270\u00b0", "value": 35}, {"description": "Roll 90\u00b0, Pitch 180\u00b0, Yaw 90\u00b0", "value": 36}, {"description": "Roll 90\u00b0, Yaw 270\u00b0", "value": 37}, {"description": "Roll 90\u00b0, Pitch 68\u00b0, Yaw 293\u00b0", "value": 38}, {"description": "Pitch 315\u00b0", "value": 39}, {"description": "Roll 90\u00b0, Pitch 315\u00b0", "value": 40}]}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Sensors", "longDesc": "Rotation from flight controller board to vehicle body frame.\nThis parameter gets set during the \"level horizon\" calibration or can be\nset manually.", "max": 45.0, "min": -45.0, "name": "SENS_BOARD_X_OFF", "shortDesc": "Board rotation X (roll) offset", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Sensors", "longDesc": "Rotation from flight controller board to vehicle body frame.\nThis parameter gets set during the \"level horizon\" calibration or can be\nset manually.", "max": 45.0, "min": -45.0, "name": "SENS_BOARD_Y_OFF", "shortDesc": "Board rotation Y (pitch) offset", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Sensors", "longDesc": "Rotation from flight controller board to vehicle body frame.\nHas to be set manually (not set by any calibration).", "max": 45.0, "min": -45.0, "name": "SENS_BOARD_Z_OFF", "shortDesc": "Board rotation Z (yaw) offset", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "Sensors", "max": 1, "min": 0, "name": "SENS_EN_AGPSIM", "rebootRequired": true, "shortDesc": "Simulate Aux Global Position (AGP)", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Sensors", "max": 1, "min": 0, "name": "SENS_EN_ARSPDSIM", "rebootRequired": true, "shortDesc": "Enable simulated airspeed sensor instance", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Sensors", "max": 1, "min": 0, "name": "SENS_EN_BAROSIM", "rebootRequired": true, "shortDesc": "Enable simulated barometer sensor instance", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Sensors", "max": 1, "min": 0, "name": "SENS_EN_GPSSIM", "rebootRequired": true, "shortDesc": "Enable simulated GPS sinstance", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Sensors", "max": 1, "min": 0, "name": "SENS_EN_MAGSIM", "rebootRequired": true, "shortDesc": "Enable simulated magnetometer sensor instance", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": -1, "group": "Sensors", "name": "SENS_EN_THERMAL", "shortDesc": "Thermal control of sensor temperature", "type": "Int32", "values": [{"description": "Thermal control unavailable", "value": -1}, {"description": "Thermal control off", "value": 0}, {"description": "Thermal control enabled", "value": 1}]}, {"category": "System", "default": 1, "group": "Sensors", "longDesc": "Probe for optional external I2C devices.", "name": "SENS_EXT_I2C_PRB", "shortDesc": "External I2C probe", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 70.0, "group": "Sensors", "longDesc": "Optical flow data maximum publication rate. This is an upper bound,\nactual optical flow data rate is still dependent on the sensor.", "max": 200.0, "min": 1.0, "name": "SENS_FLOW_RATE", "rebootRequired": true, "shortDesc": "Optical flow max rate", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 0, "group": "Sensors", "longDesc": "This parameter defines the yaw rotation of the optical flow relative to the vehicle body frame.\nZero rotation is defined as X on flow board pointing towards front of vehicle.", "name": "SENS_FLOW_ROT", "shortDesc": "Optical flow rotation", "type": "Int32", "values": [{"description": "No rotation", "value": 0}, {"description": "Yaw 45\u00b0", "value": 1}, {"description": "Yaw 90\u00b0", "value": 2}, {"description": "Yaw 135\u00b0", "value": 3}, {"description": "Yaw 180\u00b0", "value": 4}, {"description": "Yaw 225\u00b0", "value": 5}, {"description": "Yaw 270\u00b0", "value": 6}, {"description": "Yaw 315\u00b0", "value": 7}]}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Sensors", "max": 1.5, "min": 0.5, "name": "SENS_FLOW_SCALE", "shortDesc": "Optical flow scale factor", "type": "Float"}, {"bitmask": [{"description": "use speed accuracy", "index": 0}, {"description": "use hpos accuracy", "index": 1}, {"description": "use vpos accuracy", "index": 2}], "category": "Standard", "default": 7, "group": "Sensors", "longDesc": "Set bits in the following positions to set which GPS accuracy metrics will be used to calculate the blending weight. Set to zero to disable and always used first GPS instance.\n0 : Set to true to use speed accuracy\n1 : Set to true to use horizontal position accuracy\n2 : Set to true to use vertical position accuracy", "max": 7, "min": 0, "name": "SENS_GPS_MASK", "shortDesc": "Multi GPS Blending Control Mask", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Sensors", "longDesc": "When no blending is active, this defines the preferred GPS receiver instance.\nThe GPS selection logic waits until the primary receiver is available to\nsend data to the EKF even if a secondary instance is already available.\nThe secondary instance is then only used if the primary one times out.\nAccepted values:\n-1 : Auto (equal priority for all instances)\n0 : Main serial GPS instance\n1 : Secondary serial GPS instance\n2-127 : UAVCAN module node ID\nThis parameter has no effect if blending is active.", "max": 127, "min": -1, "name": "SENS_GPS_PRIME", "shortDesc": "Multi GPS primary instance", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Sensors", "longDesc": "Sets the longest time constant that will be applied to the calculation of GPS position and height offsets used to correct data from multiple GPS data for steady state position differences.", "max": 100.0, "min": 1.0, "name": "SENS_GPS_TAU", "shortDesc": "Multi GPS Blending Time Constant", "type": "Float", "units": "s"}, {"category": "System", "default": 1, "group": "Sensors", "longDesc": "Automatically initialize IMU (accel/gyro) calibration from bias estimates if available.", "name": "SENS_IMU_AUTOCAL", "shortDesc": "IMU auto calibration", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 1, "group": "Sensors", "longDesc": "Notify the user if the IMU is clipping", "name": "SENS_IMU_CLPNOTI", "shortDesc": "IMU notify clipping", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 1, "group": "Sensors", "name": "SENS_IMU_MODE", "rebootRequired": true, "shortDesc": "Sensors hub IMU mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Publish primary IMU selection", "value": 1}]}, {"category": "System", "default": 1, "group": "Sensors", "longDesc": "For systems with an external barometer, this should be set to false to make sure that the external is used.", "name": "SENS_INT_BARO_EN", "rebootRequired": true, "shortDesc": "Enable internal barometers", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 1, "group": "Sensors", "longDesc": "Automatically initialize magnetometer calibration from bias estimate if available.", "name": "SENS_MAG_AUTOCAL", "shortDesc": "Magnetometer auto calibration", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "Sensors", "longDesc": "During calibration attempt to automatically determine the rotation of external magnetometers.", "name": "SENS_MAG_AUTOROT", "shortDesc": "Automatically set external rotations", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 1, "group": "Sensors", "name": "SENS_MAG_MODE", "rebootRequired": true, "shortDesc": "Sensors hub mag mode", "type": "Int32", "values": [{"description": "Publish all magnetometers", "value": 0}, {"description": "Publish primary magnetometer", "value": 1}]}, {"category": "Standard", "default": 15.0, "group": "Sensors", "longDesc": "Magnetometer data maximum publication rate. This is an upper bound,\nactual magnetometer data rate is still dependent on the sensor.", "max": 200.0, "min": 1.0, "name": "SENS_MAG_RATE", "rebootRequired": true, "shortDesc": "Magnetometer max rate", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 63, "group": "Sensors", "longDesc": "If set to two side calibration, only the offsets are estimated, the scale\ncalibration is left unchanged. Thus an initial six side calibration is\nrecommended.\nBits:\nORIENTATION_TAIL_DOWN = 1\nORIENTATION_NOSE_DOWN = 2\nORIENTATION_LEFT = 4\nORIENTATION_RIGHT = 8\nORIENTATION_UPSIDE_DOWN = 16\nORIENTATION_RIGHTSIDE_UP = 32", "max": 63, "min": 34, "name": "SENS_MAG_SIDES", "shortDesc": "Bitfield selecting mag sides for calibration", "type": "Int32", "values": [{"description": "Two side calibration", "value": 34}, {"description": "Three side calibration", "value": 38}, {"description": "Six side calibration", "value": 63}]}, {"category": "Standard", "default": 0, "group": "Sensors", "max": 1, "min": 0, "name": "SIM_ARSPD_FAIL", "rebootRequired": true, "shortDesc": "Dynamically simulate failure of airspeed sensor instance", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "Septentrio", "longDesc": "By default, the receiver is automatically configured. Sometimes it may be used for multiple purposes.\nIf the offered parameters aren't sufficient, this parameter can be disabled to have full control of the receiver configuration.\nA good way to use this is to enable automatic configuration, let the receiver be configured, and then disable it to make manual adjustments.", "name": "SEP_AUTO_CONFIG", "rebootRequired": true, "shortDesc": "Toggle automatic receiver configuration", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"bitmask": [{"description": "GPS", "index": 0}, {"description": "GLONASS", "index": 1}, {"description": "Galileo", "index": 2}, {"description": "SBAS", "index": 3}, {"description": "BeiDou", "index": 4}], "category": "Standard", "default": 0, "group": "Septentrio", "longDesc": "Choice of which constellations the receiver should use for PVT computation.\nWhen this is 0, the constellation usage isn't changed.", "max": 63, "min": 0, "name": "SEP_CONST_USAGE", "rebootRequired": true, "shortDesc": "Usage of different constellations", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "Septentrio", "longDesc": "Log raw communication between the driver and connected receivers.\nFor example, \"To receiver\" will log all commands and corrections sent by the driver to the receiver.", "max": 3, "min": 0, "name": "SEP_DUMP_COMM", "shortDesc": "Log GPS communication data", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "From receiver", "value": 1}, {"description": "To receiver", "value": 2}, {"description": "Both", "value": 3}]}, {"category": "Standard", "default": 0, "group": "Septentrio", "longDesc": "Setup and expected use of the hardware.\n- Default: Use two receivers as completely separate instances.\n- Moving base: Use two receivers in a rover & moving base setup for heading.", "max": 1, "min": 0, "name": "SEP_HARDW_SETUP", "rebootRequired": true, "shortDesc": "Setup and expected use of the hardware", "type": "Int32", "values": [{"description": "Default", "value": 0}, {"description": "Moving base", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Septentrio", "longDesc": "When the receiver is already set up to log data, this decides whether extra logged data should be added or overwrite existing data.", "name": "SEP_LOG_FORCE", "rebootRequired": true, "shortDesc": "Whether to overwrite or add to existing logging", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "Septentrio", "longDesc": "Select the frequency at which the connected receiver should log data to its internal storage.", "max": 10, "min": 0, "name": "SEP_LOG_HZ", "rebootRequired": true, "shortDesc": "Logging frequency for the receiver", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "0.1 Hz", "value": 1}, {"description": "0.2 Hz", "value": 2}, {"description": "0.5 Hz", "value": 3}, {"description": "1 Hz", "value": 4}, {"description": "2 Hz", "value": 5}, {"description": "5 Hz", "value": 6}, {"description": "10 Hz", "value": 7}, {"description": "20 Hz", "value": 8}, {"description": "25 Hz", "value": 9}, {"description": "50 Hz", "value": 10}]}, {"category": "Standard", "default": 2, "group": "Septentrio", "longDesc": "Select the level of detail that needs to be logged by the receiver.", "max": 3, "min": 0, "name": "SEP_LOG_LEVEL", "rebootRequired": true, "shortDesc": "Logging level for the receiver", "type": "Int32", "values": [{"description": "Lite", "value": 0}, {"description": "Basic", "value": 1}, {"description": "Default", "value": 2}, {"description": "Full", "value": 3}]}, {"category": "Standard", "default": 1, "group": "Septentrio", "longDesc": "The output frequency of the main SBF blocks needed for PVT information.", "max": 3, "min": 0, "name": "SEP_OUTP_HZ", "rebootRequired": true, "shortDesc": "Output frequency of main SBF blocks", "type": "Int32", "values": [{"description": "5 Hz", "value": 0}, {"description": "10 Hz", "value": 1}, {"description": "20 Hz", "value": 2}, {"description": "25 Hz", "value": 3}]}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Septentrio", "longDesc": "Vertical offsets can be compensated for by adjusting the Pitch offset.\nNote that this can be interpreted as the \"roll\" angle in case the antennas are aligned along the perpendicular axis.\nThis occurs in situations where the two antenna ARPs may not be exactly at the same height in the vehicle reference frame.\nSince pitch is defined as the right-handed rotation about the vehicle Y axis,\na situation where the main antenna is mounted lower than the aux antenna (assuming the default antenna setup) will result in a positive pitch.", "max": 90.0, "min": -90.0, "name": "SEP_PITCH_OFFS", "rebootRequired": true, "shortDesc": "Pitch offset for dual antenna GPS", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 0, "group": "Septentrio", "longDesc": "Enable publication of satellite info (ORB_ID(satellite_info)) if possible.", "name": "SEP_SAT_INFO", "rebootRequired": true, "shortDesc": "Enable sat info", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 2, "group": "Septentrio", "longDesc": "The stream the autopilot sets up on the receiver to output the logging data.\nSet this to another value if the default stream is already used for another purpose.", "max": 10, "min": 1, "name": "SEP_STREAM_LOG", "rebootRequired": true, "shortDesc": "Logging stream used during automatic configuration", "type": "Int32"}, {"category": "Standard", "default": 1, "group": "Septentrio", "longDesc": "The stream the autopilot sets up on the receiver to output the main data.\nSet this to another value if the default stream is already used for another purpose.", "max": 10, "min": 1, "name": "SEP_STREAM_MAIN", "rebootRequired": true, "shortDesc": "Main stream used during automatic configuration", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Septentrio", "longDesc": "Heading offset angle for dual antenna GPS setups that support heading estimation.\nSet this to 0 if the antennas are parallel to the forward-facing direction\nof the vehicle and the rover antenna is in front.\nThe offset angle increases clockwise.\nSet this to 90 if the rover antenna is placed on the\nright side of the vehicle and the moving base antenna is on the left side.", "max": 360.0, "min": -360.0, "name": "SEP_YAW_OFFS", "rebootRequired": true, "shortDesc": "Heading/Yaw offset for dual antenna GPS", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 4, "default": 100.0, "group": "Simulation In Hardware", "increment": 0.01, "max": 1000.0, "min": 0.0, "name": "SIH_DISTSNSR_MAX", "shortDesc": "distance sensor maximum range", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 4, "default": 0.0, "group": "Simulation In Hardware", "increment": 0.01, "max": 10.0, "min": 0.0, "name": "SIH_DISTSNSR_MIN", "shortDesc": "distance sensor minimum range", "type": "Float", "units": "m"}, {"category": "Standard", "default": -1.0, "group": "Simulation In Hardware", "longDesc": "Absolute value superior to 10000 will disable distance sensor", "name": "SIH_DISTSNSR_OVR", "shortDesc": "if >= 0 the distance sensor measures will be overridden by this value", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.025, "group": "Simulation In Hardware", "increment": 0.005, "longDesc": "The inertia is a 3 by 3 symmetric matrix.\nIt represents the difficulty of the vehicle to modify its angular rate.", "min": 0.0, "name": "SIH_IXX", "shortDesc": "Vehicle inertia about X axis", "type": "Float", "units": "kg m^2"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Simulation In Hardware", "increment": 0.005, "longDesc": "The inertia is a 3 by 3 symmetric matrix.\nThis value can be set to 0 for a quad symmetric about its center of mass.", "name": "SIH_IXY", "shortDesc": "Vehicle cross term inertia xy", "type": "Float", "units": "kg m^2"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Simulation In Hardware", "increment": 0.005, "longDesc": "The inertia is a 3 by 3 symmetric matrix.\nThis value can be set to 0 for a quad symmetric about its center of mass.", "name": "SIH_IXZ", "shortDesc": "Vehicle cross term inertia xz", "type": "Float", "units": "kg m^2"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.025, "group": "Simulation In Hardware", "increment": 0.005, "longDesc": "The inertia is a 3 by 3 symmetric matrix.\nIt represents the difficulty of the vehicle to modify its angular rate.", "min": 0.0, "name": "SIH_IYY", "shortDesc": "Vehicle inertia about Y axis", "type": "Float", "units": "kg m^2"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "Simulation In Hardware", "increment": 0.005, "longDesc": "The inertia is a 3 by 3 symmetric matrix.\nThis value can be set to 0 for a quad symmetric about its center of mass.", "name": "SIH_IYZ", "shortDesc": "Vehicle cross term inertia yz", "type": "Float", "units": "kg m^2"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.03, "group": "Simulation In Hardware", "increment": 0.005, "longDesc": "The inertia is a 3 by 3 symmetric matrix.\nIt represents the difficulty of the vehicle to modify its angular rate.", "min": 0.0, "name": "SIH_IZZ", "shortDesc": "Vehicle inertia about Z axis", "type": "Float", "units": "kg m^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Simulation In Hardware", "increment": 0.05, "longDesc": "Physical coefficient representing the friction with air particules.\nThe greater this value, the slower the quad will move.\nDrag force function of velocity: D=-KDV*V.\nThe maximum freefall velocity can be computed as V=10*MASS/KDV [m/s]", "min": 0.0, "name": "SIH_KDV", "shortDesc": "First order drag coefficient", "type": "Float", "units": "N/(m/s)"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.025, "group": "Simulation In Hardware", "increment": 0.005, "longDesc": "Physical coefficient representing the friction with air particules during rotations.\nThe greater this value, the slower the quad will rotate.\nAerodynamic moment function of body rate: Ma=-KDW*W_B.\nThis value can be set to 0 if unknown.", "min": 0.0, "name": "SIH_KDW", "shortDesc": "First order angular damper coefficient", "type": "Float", "units": "Nm/(rad/s)"}, {"category": "Standard", "decimalPlaces": 2, "default": 489.4, "group": "Simulation In Hardware", "increment": 0.01, "longDesc": "This value represents the Above Mean Sea Level (AMSL) altitude where the simulation begins.\nIf using FlightGear as a visual animation,\nthis value can be tweaked such that the vehicle lies on the ground at takeoff.\nLAT0, LON0, H0, MU_X, MU_Y, and MU_Z should ideally be consistent among each others\nto represent a physical ground location on Earth.", "max": 8848.0, "min": -420.0, "name": "SIH_LOC_H0", "shortDesc": "Initial AMSL ground altitude", "type": "Float", "units": "m"}, {"category": "Standard", "default": 47.397742, "group": "Simulation In Hardware", "longDesc": "This value represents the North-South location on Earth where the simulation begins.\nLAT0, LON0, H0, MU_X, MU_Y, and MU_Z should ideally be consistent among each others\nto represent a physical ground location on Earth.", "max": 90.0, "min": -90.0, "name": "SIH_LOC_LAT0", "shortDesc": "Initial geodetic latitude", "type": "Float", "units": "deg"}, {"category": "Standard", "default": 8.545594, "group": "Simulation In Hardware", "longDesc": "This value represents the East-West location on Earth where the simulation begins.\nLAT0, LON0, H0, MU_X, MU_Y, and MU_Z should ideally be consistent among each others\nto represent a physical ground location on Earth.", "max": 180.0, "min": -180.0, "name": "SIH_LOC_LON0", "shortDesc": "Initial geodetic longitude", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Simulation In Hardware", "increment": 0.05, "longDesc": "This is the arm length generating the pitching moment\nThis value can be measured with a ruler.\nThis corresponds to half the distance between the front and rear motors.", "min": 0.0, "name": "SIH_L_PITCH", "shortDesc": "Pitch arm length", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Simulation In Hardware", "increment": 0.05, "longDesc": "This is the arm length generating the rolling moment\nThis value can be measured with a ruler.\nThis corresponds to half the distance between the left and right motors.", "min": 0.0, "name": "SIH_L_ROLL", "shortDesc": "Roll arm length", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "Simulation In Hardware", "increment": 0.1, "longDesc": "This value can be measured by weighting the quad on a scale.", "min": 0.0, "name": "SIH_MASS", "shortDesc": "Vehicle mass", "type": "Float", "units": "kg"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.1, "group": "Simulation In Hardware", "increment": 0.05, "longDesc": "This is the maximum torque delivered by one propeller\nwhen the motor is running at full speed.\nThis value is usually about few percent of the maximum thrust force.", "min": 0.0, "name": "SIH_Q_MAX", "shortDesc": "Max propeller torque", "type": "Float", "units": "Nm"}, {"category": "Standard", "decimalPlaces": 2, "default": 5.0, "group": "Simulation In Hardware", "increment": 0.5, "longDesc": "This is the maximum force delivered by one propeller\nwhen the motor is running at full speed.\nThis value is usually about 5 times the mass of the quadrotor.", "min": 0.0, "name": "SIH_T_MAX", "shortDesc": "Max propeller thrust force", "type": "Float", "units": "N"}, {"category": "Standard", "default": 0.05, "group": "Simulation In Hardware", "longDesc": "the time taken for the thruster to step from 0 to 100% should be about 4 times tau", "name": "SIH_T_TAU", "shortDesc": "thruster time constant tau", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "Simulation In Hardware", "name": "SIH_VEHICLE_TYPE", "rebootRequired": true, "shortDesc": "Vehicle type", "type": "Int32", "values": [{"description": "Quadcopter", "value": 0}, {"description": "Fixed-Wing", "value": 1}, {"description": "Tailsitter", "value": 2}, {"description": "Standard VTOL", "value": 3}, {"description": "Hexacopter", "value": 4}, {"description": "Rover Ackermann", "value": 5}]}, {"bitmask": [{"description": "Stuck", "index": 0}, {"description": "Drift", "index": 1}], "category": "Standard", "default": 0, "group": "Simulator", "longDesc": "Stuck: freeze the measurement to the current location\nDrift: add a linearly growing bias to the sensor data", "max": 3, "min": 0, "name": "SIM_AGP_FAIL", "shortDesc": "AGP failure mode", "type": "Int32"}, {"category": "Standard", "default": 0.0, "group": "Simulator", "name": "SIM_BARO_OFF_P", "shortDesc": "simulated barometer pressure offset", "type": "Float"}, {"category": "Standard", "default": 0.0, "group": "Simulator", "name": "SIM_BARO_OFF_T", "shortDesc": "simulated barometer temperature offset", "type": "Float", "units": "celcius"}, {"category": "Standard", "default": 10, "group": "Simulator", "max": 50, "min": 0, "name": "SIM_GPS_USED", "shortDesc": "simulated GPS number of satellites used", "type": "Int32"}, {"category": "Standard", "default": 0.0, "group": "Simulator", "name": "SIM_MAG_OFFSET_X", "shortDesc": "simulated magnetometer X offset", "type": "Float", "units": "gauss"}, {"category": "Standard", "default": 0.0, "group": "Simulator", "name": "SIM_MAG_OFFSET_Y", "shortDesc": "simulated magnetometer Y offset", "type": "Float", "units": "gauss"}, {"category": "Standard", "default": 0.0, "group": "Simulator", "name": "SIM_MAG_OFFSET_Z", "shortDesc": "simulated magnetometer Z offset", "type": "Float", "units": "gauss"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "Set to 1 to reset parameters on next system startup (setting defaults).\nPlatform-specific values are used if available.\nRC* parameters are preserved.", "name": "SYS_AUTOCONFIG", "shortDesc": "Automatically configure default values", "type": "Int32", "values": [{"description": "Keep parameters", "value": 0}, {"description": "Reset parameters to airframe defaults", "value": 1}]}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "CHANGING THIS VALUE REQUIRES A RESTART. Defines the auto-start script used to bootstrap the system.", "max": 9999999, "min": 0, "name": "SYS_AUTOSTART", "rebootRequired": true, "shortDesc": "Auto-start script index", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "If enabled, update the bootloader on the next boot.\nWARNING: do not cut the power during an update process, otherwise you will\nhave to recover using some alternative method (e.g. JTAG).\nInstructions:\n- Insert an SD card\n- Enable this parameter\n- Reboot the board (plug the power or send a reboot command)\n- Wait until the board comes back up (or at least 2 minutes)\n- If it does not come back, check the file bootlog.txt on the SD card", "name": "SYS_BL_UPDATE", "rebootRequired": true, "shortDesc": "Bootloader update", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "0 : Set to 0 to do nothing\n1 : Set to 1 to start a calibration at next boot\nThis parameter is reset to zero when the temperature calibration starts.\ndefault (0, no calibration)", "max": 1, "min": 0, "name": "SYS_CAL_ACCEL", "shortDesc": "Enable auto start of accelerometer thermal calibration at the next power up", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "0 : Set to 0 to do nothing\n1 : Set to 1 to start a calibration at next boot\nThis parameter is reset to zero when the temperature calibration starts.\ndefault (0, no calibration)", "max": 1, "min": 0, "name": "SYS_CAL_BARO", "shortDesc": "Enable auto start of barometer thermal calibration at the next power up", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "0 : Set to 0 to do nothing\n1 : Set to 1 to start a calibration at next boot\nThis parameter is reset to zero when the temperature calibration starts.\ndefault (0, no calibration)", "max": 1, "min": 0, "name": "SYS_CAL_GYRO", "shortDesc": "Enable auto start of rate gyro thermal calibration at the next power up", "type": "Int32"}, {"category": "Standard", "default": 24, "group": "System", "longDesc": "A temperature increase greater than this value is required during calibration.\nCalibration will complete for each sensor when the temperature increase above the starting temperature exceeds the value set by SYS_CAL_TDEL.\nIf the temperature rise is insufficient, the calibration will continue indefinitely and the board will need to be repowered to exit.", "min": 10, "name": "SYS_CAL_TDEL", "shortDesc": "Required temperature rise during thermal calibration", "type": "Int32", "units": "celcius"}, {"category": "Standard", "default": 10, "group": "System", "longDesc": "Temperature calibration will not start if the temperature of any sensor is higher than the value set by SYS_CAL_TMAX.", "name": "SYS_CAL_TMAX", "shortDesc": "Maximum starting temperature for thermal calibration", "type": "Int32", "units": "celcius"}, {"category": "Standard", "default": 5, "group": "System", "longDesc": "Temperature calibration for each sensor will ignore data if the temperature is lower than the value set by SYS_CAL_TMIN.", "name": "SYS_CAL_TMIN", "shortDesc": "Minimum starting temperature for thermal calibration", "type": "Int32", "units": "celcius"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "If the board supports persistent storage (i.e., the KConfig variable DATAMAN_PERSISTENT_STORAGE is set),\nthe 'Default storage' backend uses a file on persistent storage. If not supported, this backend uses\nnon-persistent storage in RAM.", "name": "SYS_DM_BACKEND", "rebootRequired": true, "shortDesc": "Dataman storage backend", "type": "Int32", "values": [{"description": "Dataman disabled", "value": -1}, {"description": "Default storage", "value": 0}, {"description": "RAM storage", "value": 1}]}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "If enabled, future sensor calibrations will be stored to /fs/mtd_caldata.\nNote: this is only supported on boards with a separate calibration storage\n/fs/mtd_caldata.", "name": "SYS_FAC_CAL_MODE", "shortDesc": "Enable factory calibration mode", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "All sensors", "value": 1}, {"description": "All sensors except mag", "value": 2}]}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "If enabled allows MAVLink INJECT_FAILURE commands.\nWARNING: the failures can easily cause crashes and are to be used with caution!", "name": "SYS_FAILURE_EN", "shortDesc": "Enable failure injection", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "System", "longDesc": "Disable this if the board has no barometer, such as some of the Omnibus\nF4 SD variants.\nIf disabled, the preflight checks will not check for the presence of a\nbarometer.", "name": "SYS_HAS_BARO", "rebootRequired": true, "shortDesc": "Control if the vehicle has a barometer", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "System", "longDesc": "Disable this if the system has no GPS.\nIf disabled, the sensors hub will not process sensor_gps,\nand GPS will not be available for the rest of the system.", "name": "SYS_HAS_GPS", "rebootRequired": true, "shortDesc": "Control if the vehicle has a GPS", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 1, "group": "System", "longDesc": "0: System has no magnetometer, preflight checks should pass without one.\n1-N: Require the presence of N magnetometer sensors for check to pass.", "name": "SYS_HAS_MAG", "rebootRequired": true, "shortDesc": "Control if and how many magnetometers are expected", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "Set this to 0 if the board has no airspeed sensor.\nIf set to 0, the preflight checks will not check for the presence of an\nairspeed sensor.", "max": 1, "min": 0, "name": "SYS_HAS_NUM_ASPD", "shortDesc": "Control if the vehicle has an airspeed sensor", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "The preflight check will fail if fewer than this number of distance sensors with valid data is present.\nDisable the check with 0.", "max": 4, "min": 0, "name": "SYS_HAS_NUM_DIST", "shortDesc": "Number of distance sensors to check being available", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "The preflight check will fail if fewer than this number of optical flow sensors with valid data are present.", "max": 1, "min": 0, "name": "SYS_HAS_NUM_OF", "shortDesc": "Number of optical flow sensors required to be available", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "System", "longDesc": "While enabled the system will boot in Hardware-In-The-Loop (HITL)\nor Simulation-In-Hardware (SIH) mode and not enable all sensors and checks.\nWhen disabled the same vehicle can be flown normally.\nSet to 'external HITL', if the system should perform as if it were a real\nvehicle (the only difference to a real system is then only the parameter\nvalue, which can be used for log analysis).", "name": "SYS_HITL", "rebootRequired": true, "shortDesc": "Enable HITL/SIH mode on next boot", "type": "Int32", "values": [{"description": "external HITL", "value": -1}, {"description": "HITL and SIH disabled", "value": 0}, {"description": "HITL enabled", "value": 1}, {"description": "SIH enabled", "value": 2}]}, {"category": "Standard", "default": 1, "group": "System", "longDesc": "This is used internally only: an airframe configuration might set an expected\nparameter version value via PARAM_DEFAULTS_VER. This is checked on bootup\nagainst SYS_PARAM_VER, and if they do not match, parameters are reset and\nreloaded from the airframe configuration.", "min": 0, "name": "SYS_PARAM_VER", "shortDesc": "Parameter version", "type": "Int32"}, {"category": "Standard", "default": 1.0, "group": "System", "longDesc": "Set to 0 to disable, 1 for maximum brightness", "name": "SYS_RGB_MAXBRT", "shortDesc": "RGB Led brightness limit", "type": "Float", "units": "%"}, {"category": "Standard", "default": 1, "group": "System", "name": "SYS_STCK_EN", "shortDesc": "Enable stack checking", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 2, "group": "Testing", "name": "TEST_1", "shortDesc": "TEST_1", "type": "Int32"}, {"category": "Standard", "default": 4, "group": "Testing", "name": "TEST_2", "shortDesc": "TEST_2", "type": "Int32"}, {"category": "Standard", "default": 5.0, "group": "Testing", "name": "TEST_3", "shortDesc": "TEST_3", "type": "Float"}, {"category": "Standard", "default": 0.01, "group": "Testing", "name": "TEST_D", "shortDesc": "TEST_D", "type": "Float"}, {"category": "Standard", "default": 2.0, "group": "Testing", "name": "TEST_DEV", "shortDesc": "TEST_DEV", "type": "Float"}, {"category": "Standard", "default": 10.0, "group": "Testing", "name": "TEST_D_LP", "shortDesc": "TEST_D_LP", "type": "Float"}, {"category": "Standard", "default": 10.0, "group": "Testing", "name": "TEST_HP", "shortDesc": "TEST_HP", "type": "Float"}, {"category": "Standard", "default": 0.1, "group": "Testing", "name": "TEST_I", "shortDesc": "TEST_I", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "Testing", "name": "TEST_I_MAX", "shortDesc": "TEST_I_MAX", "type": "Float"}, {"category": "Standard", "default": 10.0, "group": "Testing", "name": "TEST_LP", "shortDesc": "TEST_LP", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "Testing", "name": "TEST_MAX", "shortDesc": "TEST_MAX", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "Testing", "name": "TEST_MEAN", "shortDesc": "TEST_MEAN", "type": "Float"}, {"category": "Standard", "default": -1.0, "group": "Testing", "name": "TEST_MIN", "shortDesc": "TEST_MIN", "type": "Float"}, {"category": "Standard", "default": 0.2, "group": "Testing", "name": "TEST_P", "shortDesc": "TEST_P", "type": "Float"}, {"category": "Standard", "default": 12345678, "group": "Testing", "name": "TEST_PARAMS", "shortDesc": "TEST_PARAMS", "type": "Int32"}, {"category": "Standard", "default": 16, "group": "Testing", "name": "TEST_RC2_X", "shortDesc": "TEST_RC2_X", "type": "Int32"}, {"category": "Standard", "default": 8, "group": "Testing", "name": "TEST_RC_X", "shortDesc": "TEST_RC_X", "type": "Int32"}, {"category": "Standard", "default": 0.5, "group": "Testing", "name": "TEST_TRIM", "shortDesc": "TEST_TRIM", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_A0_ID", "shortDesc": "ID of Accelerometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_A0_TMAX", "shortDesc": "Accelerometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_TMIN", "shortDesc": "Accelerometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_A0_TREF", "shortDesc": "Accelerometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X0_0", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X0_1", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X0_2", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X1_0", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X1_1", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X1_2", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X2_0", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X2_1", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X2_2", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X3_0", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X3_1", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A0_X3_2", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_A1_ID", "shortDesc": "ID of Accelerometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_A1_TMAX", "shortDesc": "Accelerometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_TMIN", "shortDesc": "Accelerometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_A1_TREF", "shortDesc": "Accelerometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X0_0", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X0_1", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X0_2", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X1_0", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X1_1", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X1_2", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X2_0", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X2_1", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X2_2", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X3_0", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X3_1", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A1_X3_2", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_A2_ID", "shortDesc": "ID of Accelerometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_A2_TMAX", "shortDesc": "Accelerometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_TMIN", "shortDesc": "Accelerometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_A2_TREF", "shortDesc": "Accelerometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X0_0", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X0_1", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X0_2", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X1_0", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X1_1", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X1_2", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X2_0", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X2_1", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X2_2", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X3_0", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X3_1", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A2_X3_2", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_A3_ID", "shortDesc": "ID of Accelerometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_A3_TMAX", "shortDesc": "Accelerometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_TMIN", "shortDesc": "Accelerometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_A3_TREF", "shortDesc": "Accelerometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X0_0", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X0_1", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X0_2", "shortDesc": "Accelerometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X1_0", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X1_1", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X1_2", "shortDesc": "Accelerometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X2_0", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X2_1", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X2_2", "shortDesc": "Accelerometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X3_0", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X3_1", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_A3_X3_2", "shortDesc": "Accelerometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Thermal Compensation", "name": "TC_A_ENABLE", "rebootRequired": true, "shortDesc": "Thermal compensation for accelerometer sensors", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_B0_ID", "shortDesc": "ID of Barometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 75.0, "group": "Thermal Compensation", "name": "TC_B0_TMAX", "shortDesc": "Barometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 5.0, "group": "Thermal Compensation", "name": "TC_B0_TMIN", "shortDesc": "Barometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 40.0, "group": "Thermal Compensation", "name": "TC_B0_TREF", "shortDesc": "Barometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B0_X0", "shortDesc": "Barometer offset temperature ^0 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B0_X1", "shortDesc": "Barometer offset temperature ^1 polynomial coefficients", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B0_X2", "shortDesc": "Barometer offset temperature ^2 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B0_X3", "shortDesc": "Barometer offset temperature ^3 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B0_X4", "shortDesc": "Barometer offset temperature ^4 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B0_X5", "shortDesc": "Barometer offset temperature ^5 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_B1_ID", "shortDesc": "ID of Barometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 75.0, "group": "Thermal Compensation", "name": "TC_B1_TMAX", "shortDesc": "Barometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 5.0, "group": "Thermal Compensation", "name": "TC_B1_TMIN", "shortDesc": "Barometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 40.0, "group": "Thermal Compensation", "name": "TC_B1_TREF", "shortDesc": "Barometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B1_X0", "shortDesc": "Barometer offset temperature ^0 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B1_X1", "shortDesc": "Barometer offset temperature ^1 polynomial coefficients", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B1_X2", "shortDesc": "Barometer offset temperature ^2 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B1_X3", "shortDesc": "Barometer offset temperature ^3 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B1_X4", "shortDesc": "Barometer offset temperature ^4 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B1_X5", "shortDesc": "Barometer offset temperature ^5 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_B2_ID", "shortDesc": "ID of Barometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 75.0, "group": "Thermal Compensation", "name": "TC_B2_TMAX", "shortDesc": "Barometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 5.0, "group": "Thermal Compensation", "name": "TC_B2_TMIN", "shortDesc": "Barometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 40.0, "group": "Thermal Compensation", "name": "TC_B2_TREF", "shortDesc": "Barometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B2_X0", "shortDesc": "Barometer offset temperature ^0 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B2_X1", "shortDesc": "Barometer offset temperature ^1 polynomial coefficients", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B2_X2", "shortDesc": "Barometer offset temperature ^2 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B2_X3", "shortDesc": "Barometer offset temperature ^3 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B2_X4", "shortDesc": "Barometer offset temperature ^4 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B2_X5", "shortDesc": "Barometer offset temperature ^5 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_B3_ID", "shortDesc": "ID of Barometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 75.0, "group": "Thermal Compensation", "name": "TC_B3_TMAX", "shortDesc": "Barometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 5.0, "group": "Thermal Compensation", "name": "TC_B3_TMIN", "shortDesc": "Barometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 40.0, "group": "Thermal Compensation", "name": "TC_B3_TREF", "shortDesc": "Barometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B3_X0", "shortDesc": "Barometer offset temperature ^0 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B3_X1", "shortDesc": "Barometer offset temperature ^1 polynomial coefficients", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B3_X2", "shortDesc": "Barometer offset temperature ^2 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B3_X3", "shortDesc": "Barometer offset temperature ^3 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B3_X4", "shortDesc": "Barometer offset temperature ^4 polynomial coefficient", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_B3_X5", "shortDesc": "Barometer offset temperature ^5 polynomial coefficient", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Thermal Compensation", "name": "TC_B_ENABLE", "rebootRequired": true, "shortDesc": "Thermal compensation for barometric pressure sensors", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_G0_ID", "shortDesc": "ID of Gyro that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_G0_TMAX", "shortDesc": "Gyro calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_TMIN", "shortDesc": "Gyro calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_G0_TREF", "shortDesc": "Gyro calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X0_0", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X0_1", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X0_2", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X1_0", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X1_1", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X1_2", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X2_0", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X2_1", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X2_2", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X3_0", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X3_1", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G0_X3_2", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_G1_ID", "shortDesc": "ID of Gyro that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_G1_TMAX", "shortDesc": "Gyro calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_TMIN", "shortDesc": "Gyro calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_G1_TREF", "shortDesc": "Gyro calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X0_0", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X0_1", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X0_2", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X1_0", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X1_1", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X1_2", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X2_0", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X2_1", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X2_2", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X3_0", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X3_1", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G1_X3_2", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_G2_ID", "shortDesc": "ID of Gyro that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_G2_TMAX", "shortDesc": "Gyro calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_TMIN", "shortDesc": "Gyro calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_G2_TREF", "shortDesc": "Gyro calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X0_0", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X0_1", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X0_2", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X1_0", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X1_1", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X1_2", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X2_0", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X2_1", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X2_2", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X3_0", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X3_1", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G2_X3_2", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_G3_ID", "shortDesc": "ID of Gyro that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_G3_TMAX", "shortDesc": "Gyro calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_TMIN", "shortDesc": "Gyro calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_G3_TREF", "shortDesc": "Gyro calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X0_0", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X0_1", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X0_2", "shortDesc": "Gyro rate offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X1_0", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X1_1", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X1_2", "shortDesc": "Gyro rate offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X2_0", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X2_1", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X2_2", "shortDesc": "Gyro rate offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X3_0", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X3_1", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_G3_X3_2", "shortDesc": "Gyro rate offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Thermal Compensation", "name": "TC_G_ENABLE", "rebootRequired": true, "shortDesc": "Thermal compensation for rate gyro sensors", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_M0_ID", "shortDesc": "ID of Magnetometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_M0_TMAX", "shortDesc": "Magnetometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_TMIN", "shortDesc": "Magnetometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_M0_TREF", "shortDesc": "Magnetometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X0_0", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X0_1", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X0_2", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X1_0", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X1_1", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X1_2", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X2_0", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X2_1", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X2_2", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X3_0", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X3_1", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M0_X3_2", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_M1_ID", "shortDesc": "ID of Magnetometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_M1_TMAX", "shortDesc": "Magnetometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_TMIN", "shortDesc": "Magnetometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_M1_TREF", "shortDesc": "Magnetometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X0_0", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X0_1", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X0_2", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X1_0", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X1_1", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X1_2", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X2_0", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X2_1", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X2_2", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X3_0", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X3_1", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M1_X3_2", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_M2_ID", "shortDesc": "ID of Magnetometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_M2_TMAX", "shortDesc": "Magnetometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_TMIN", "shortDesc": "Magnetometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_M2_TREF", "shortDesc": "Magnetometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X0_0", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X0_1", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X0_2", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X1_0", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X1_1", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X1_2", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X2_0", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X2_1", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X2_2", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X3_0", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X3_1", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M2_X3_2", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0, "group": "Thermal Compensation", "name": "TC_M3_ID", "shortDesc": "ID of Magnetometer that the calibration is for", "type": "Int32"}, {"category": "System", "default": 100.0, "group": "Thermal Compensation", "name": "TC_M3_TMAX", "shortDesc": "Magnetometer calibration maximum temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_TMIN", "shortDesc": "Magnetometer calibration minimum temperature", "type": "Float"}, {"category": "System", "default": 25.0, "group": "Thermal Compensation", "name": "TC_M3_TREF", "shortDesc": "Magnetometer calibration reference temperature", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X0_0", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X0_1", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X0_2", "shortDesc": "Magnetometer offset temperature ^0 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X1_0", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X1_1", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X1_2", "shortDesc": "Magnetometer offset temperature ^1 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X2_0", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X2_1", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X2_2", "shortDesc": "Magnetometer offset temperature ^2 polynomial coefficient - Z axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X3_0", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - X axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X3_1", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Y axis", "type": "Float"}, {"category": "System", "default": 0.0, "group": "Thermal Compensation", "name": "TC_M3_X3_2", "shortDesc": "Magnetometer offset temperature ^3 polynomial coefficient - Z axis", "type": "Float"}, {"category": "Standard", "default": 0, "group": "Thermal Compensation", "name": "TC_M_ENABLE", "rebootRequired": true, "shortDesc": "Thermal compensation for magnetometer sensors", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.05, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_MGM_PITCH", "shortDesc": "Pitch gain for manual inputs in manual control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.05, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_MGM_ROLL", "shortDesc": "Roll gain for manual inputs in manual control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_MGM_THRTL", "shortDesc": "Throttle gain for manual inputs in manual control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.05, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_MGM_YAW", "shortDesc": "Yaw gain for manual inputs in manual control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "UUV Attitude Control", "name": "UUV_PITCH_D", "shortDesc": "Pitch differential gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 4.0, "group": "UUV Attitude Control", "name": "UUV_PITCH_P", "shortDesc": "Pitch proportional gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 100.0, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_RGM_PITCH", "shortDesc": "Pitch gain for manual inputs in rate control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 100.0, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_RGM_ROLL", "shortDesc": "Roll gain for manual inputs in rate control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 10.0, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_RGM_THRTL", "shortDesc": "Throttle gain for manual inputs in rate control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 100.0, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_RGM_YAW", "shortDesc": "Yaw gain for manual inputs in rate control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.5, "group": "UUV Attitude Control", "name": "UUV_ROLL_D", "shortDesc": "Roll differential gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 4.0, "group": "UUV Attitude Control", "name": "UUV_ROLL_P", "shortDesc": "Roll proportional gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_SGM_PITCH", "shortDesc": "Pitch gain for manual inputs in attitude control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_SGM_ROLL", "shortDesc": "Roll gain for manual inputs in attitude control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_SGM_THRTL", "shortDesc": "Throttle gain for manual inputs in attitude control mode", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.5, "group": "UUV Attitude Control", "min": 0.0, "name": "UUV_SGM_YAW", "shortDesc": "Yaw gain for manual inputs in attitude control mode", "type": "Float"}, {"category": "Standard", "default": 2.0, "group": "UUV Attitude Control", "name": "UUV_SP_MAX_AGE", "shortDesc": "Maximum time (in seconds) before resetting setpoint", "type": "Float"}, {"category": "Standard", "default": 0, "group": "UUV Attitude Control", "max": 1, "min": 0, "name": "UUV_STICK_MODE", "shortDesc": "Stick mode selector (0=Heave/sway control, roll/pitch leveled; 1=Pitch/roll control)", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "UUV Attitude Control", "max": 1.0, "min": 0.0, "name": "UUV_THRUST_SAT", "shortDesc": "UUV Thrust setpoint Saturation", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "UUV Attitude Control", "max": 1.0, "min": 0.0, "name": "UUV_TORQUE_SAT", "shortDesc": "UUV Torque setpoint Saturation", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "UUV Attitude Control", "name": "UUV_YAW_D", "shortDesc": "Yaw differential gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 4.0, "group": "UUV Attitude Control", "name": "UUV_YAW_P", "shortDesc": "Yawh proportional gain", "type": "Float"}, {"category": "Standard", "default": 0.2, "group": "UUV Position Control", "name": "UUV_GAIN_X_D", "shortDesc": "Gain of D controller X", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "UUV Position Control", "name": "UUV_GAIN_X_P", "shortDesc": "Gain of P controller X", "type": "Float"}, {"category": "Standard", "default": 0.2, "group": "UUV Position Control", "name": "UUV_GAIN_Y_D", "shortDesc": "Gain of D controller Y", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "UUV Position Control", "name": "UUV_GAIN_Y_P", "shortDesc": "Gain of P controller Y", "type": "Float"}, {"category": "Standard", "default": 0.2, "group": "UUV Position Control", "name": "UUV_GAIN_Z_D", "shortDesc": "Gain of D controller Z", "type": "Float"}, {"category": "Standard", "default": 1.0, "group": "UUV Position Control", "name": "UUV_GAIN_Z_P", "shortDesc": "Gain of P controller Z", "type": "Float"}, {"category": "Standard", "default": 0.5, "group": "UUV Position Control", "name": "UUV_PGM_VEL", "shortDesc": "Gain for position control velocity setpoint update", "type": "Float"}, {"category": "Standard", "default": 1, "group": "UUV Position Control", "name": "UUV_POS_MODE", "shortDesc": "Stabilization mode(1) or Position Control(0)", "type": "Int32", "values": [{"description": "Moves position setpoint in world frame", "value": 0}, {"description": "Moves position setpoint in body frame", "value": 1}]}, {"category": "Standard", "default": 0.1, "group": "UUV Position Control", "name": "UUV_POS_STICK_DB", "shortDesc": "Deadband for changing position setpoint", "type": "Float"}, {"category": "Standard", "default": 1, "group": "UUV Position Control", "name": "UUV_STAB_MODE", "shortDesc": "Stabilization mode(1) or Position Control(0)", "type": "Int32", "values": [{"description": "Tracks previous attitude setpoint", "value": 0}, {"description": "Tracks horizontal attitude (allows yaw change)", "value": 1}]}, {"category": "Standard", "default": 2130706433, "group": "UXRCE-DDS Client", "longDesc": "If ethernet is enabled and is the selected configuration for uXRCE-DDS,\nthe selected Agent IP address will be set and used.\nDecimal dot notation is not supported. IP address must be provided\nin int32 format. For example, 192.168.1.2 is mapped to -1062731518;\n127.0.0.1 is mapped to 2130706433.", "name": "UXRCE_DDS_AG_IP", "rebootRequired": true, "shortDesc": "uXRCE-DDS Agent IP address", "type": "Int32"}, {"category": "System", "default": 0, "group": "UXRCE-DDS Client", "longDesc": "uXRCE-DDS domain ID", "name": "UXRCE_DDS_DOM_ID", "rebootRequired": true, "shortDesc": "uXRCE-DDS domain ID", "type": "Int32"}, {"category": "System", "default": 0, "group": "UXRCE-DDS Client", "longDesc": "This is used to enable flow control for the serial uXRCE instance.\nUsed for reliable high bandwidth communication.", "name": "UXRCE_DDS_FLCTRL", "rebootRequired": true, "shortDesc": "Enable serial flow control for UXRCE interface", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 1, "group": "UXRCE-DDS Client", "longDesc": "uXRCE-DDS key, must be different from zero.\nIn a single agent - multi client configuration, each client\nmust have a unique session key.", "name": "UXRCE_DDS_KEY", "rebootRequired": true, "shortDesc": "uXRCE-DDS session key", "type": "Int32"}, {"category": "System", "default": -1, "group": "UXRCE-DDS Client", "longDesc": "Defines an index-based namespace for DDS messages, e.g, uav_0, uav_1, up to uav_9999\nA value less than zero leaves the namespace empty", "max": 9999, "min": -1, "name": "UXRCE_DDS_NS_IDX", "rebootRequired": true, "shortDesc": "Define an index-based message namespace", "type": "Int32"}, {"category": "Standard", "default": 8888, "group": "UXRCE-DDS Client", "longDesc": "If ethernet is enabled and is the selected configuration for uXRCE-DDS,\nthe selected UDP port will be set and used.", "max": 65535, "min": 0, "name": "UXRCE_DDS_PRT", "rebootRequired": true, "shortDesc": "uXRCE-DDS UDP port", "type": "Int32"}, {"category": "System", "default": 0, "group": "UXRCE-DDS Client", "longDesc": "Set the participant configuration on the Agent's system.\n0: Use the default configuration.\n1: Restrict messages to localhost\n(use in combination with ROS_LOCALHOST_ONLY=1).\n2: Use a custom participant with the profile name \"px4_participant\".", "max": 2, "min": 0, "name": "UXRCE_DDS_PTCFG", "rebootRequired": true, "shortDesc": "uXRCE-DDS participant configuration", "type": "Int32", "values": [{"description": "Default", "value": 0}, {"description": "Localhost-only", "value": 1}, {"description": "Custom participant", "value": 2}]}, {"category": "System", "default": -1, "group": "UXRCE-DDS Client", "longDesc": "Specifies after how many seconds without receiving data the DDS connection is reestablished.\nA value less than one disables the RX rate timeout.", "name": "UXRCE_DDS_RX_TO", "rebootRequired": true, "shortDesc": "RX rate timeout configuration", "type": "Int32", "units": "s"}, {"category": "System", "default": 0, "group": "UXRCE-DDS Client", "longDesc": "When enabled along with UXRCE_DDS_SYNCT, uxrce_dds_client will set the system clock using the agents UTC timestamp.", "name": "UXRCE_DDS_SYNCC", "rebootRequired": true, "shortDesc": "Enable uXRCE-DDS system clock synchronization", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 1, "group": "UXRCE-DDS Client", "longDesc": "When enabled, uxrce_dds_client will synchronize the timestamps of the incoming and outgoing messages measuring the offset between the Agent OS time and the PX4 time.", "name": "UXRCE_DDS_SYNCT", "rebootRequired": true, "shortDesc": "Enable uXRCE-DDS timestamp synchronization", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "System", "default": 3, "group": "UXRCE-DDS Client", "longDesc": "Specifies after how many seconds without sending data the DDS connection is reestablished.\nA value less than one disables the TX rate timeout.", "name": "UXRCE_DDS_TX_TO", "rebootRequired": true, "shortDesc": "TX rate timeout configuration", "type": "Int32", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 8.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Airspeed at which we can start blending both fw and mc controls. Set to 0 to disable.", "max": 30.0, "min": 0.0, "name": "VT_ARSP_BLEND", "shortDesc": "Transition blending airspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 2, "default": 10.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Airspeed at which we can switch to fw mode", "max": 30.0, "min": 0.0, "name": "VT_ARSP_TRANS", "shortDesc": "Transition airspeed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Time in seconds it takes to tilt form VT_TILT_FW to VT_TILT_MC.", "max": 10.0, "min": 0.1, "name": "VT_BT_TILT_DUR", "shortDesc": "Duration motor tilt up in backtransition", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "VTOL Attitude Control", "increment": 0.05, "max": 0.3, "min": 0.0, "name": "VT_B_DEC_I", "shortDesc": "Backtransition deceleration setpoint to tilt I gain", "type": "Float", "units": "rad s/m"}, {"category": "Standard", "decimalPlaces": 2, "default": 2.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Used to calculate back transition distance in an auto mode.\nFor standard vtol and tiltrotors a controller is used to track this value during the transition.", "max": 10.0, "min": 0.5, "name": "VT_B_DEC_MSS", "shortDesc": "Approximate deceleration during back transition", "type": "Float", "units": "m/s^2"}, {"category": "Standard", "decimalPlaces": 2, "default": 10.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Transition is also declared over if the groundspeed drops below MPC_XY_CRUISE.", "max": 20.0, "min": 0.1, "name": "VT_B_TRANS_DUR", "shortDesc": "Maximum duration of a back transition", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "This sets the duration during which the MC motors ramp up to the commanded thrust during the back transition stage.", "max": 20.0, "min": 0.0, "name": "VT_B_TRANS_RAMP", "shortDesc": "Back transition MC motor ramp up time", "type": "Float", "units": "s"}, {"category": "Standard", "default": 1, "group": "VTOL Attitude Control", "longDesc": "If set to 1 the control surfaces are locked at the disarmed value in multicopter mode.", "name": "VT_ELEV_MC_LOCK", "shortDesc": "Lock control surfaces in hover", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 0, "group": "VTOL Attitude Control", "longDesc": "Prevents downforce from pitching the body down when facing wind.\nUses puller/pusher (standard VTOL), or forward-tilt (tiltrotor VTOL) to accelerate forward instead.\nOnly active if demanded pitch is below VT_PITCH_MIN.\nUse VT_FWD_THRUST_SC to tune it.\nDescend mode is treated as Landing too.\nOnly active (if enabled) in height-rate controlled modes.", "name": "VT_FWD_THRUST_EN", "shortDesc": "Use fixed-wing actuation in hover to accelerate forward", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled (except LANDING)", "value": 1}, {"description": "Enabled if above MPC_LAND_ALT1", "value": 2}, {"description": "Enabled if above MPC_LAND_ALT2", "value": 3}, {"description": "Enabled constantly", "value": 4}, {"description": "Enabled if above MPC_LAND_ALT1 (except LANDING)", "value": 5}, {"description": "Enabled if above MPC_LAND_ALT2 (except LANDING)", "value": 6}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.7, "group": "VTOL Attitude Control", "increment": 0.01, "longDesc": "Scale applied to the demanded pitch (below VT_PITCH_MIN) to get the fixed-wing forward actuation in hover mode.\nEnabled via VT_FWD_THRUST_EN.", "max": 5.0, "min": 0.0, "name": "VT_FWD_THRUST_SC", "shortDesc": "Fixed-wing actuation thrust scale in hover", "type": "Float"}, {"bitmask": [{"description": "Yaw", "index": 0}, {"description": "Roll", "index": 1}, {"description": "Pitch", "index": 2}], "category": "Standard", "default": 0, "group": "VTOL Attitude Control", "longDesc": "Enable differential thrust seperately for roll, pitch, yaw in forward (fixed-wing) mode.\nThe effectiveness of differential thrust around the corresponding axis can be\ntuned by setting VT_FW_DIFTHR_S_R / VT_FW_DIFTHR_S_P / VT_FW_DIFTHR_S_Y.", "max": 7, "min": 0, "name": "VT_FW_DIFTHR_EN", "shortDesc": "Differential thrust in forwards flight", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Differential thrust in forward flight is enabled via VT_FW_DIFTHR_EN.", "max": 2.0, "min": 0.0, "name": "VT_FW_DIFTHR_S_P", "shortDesc": "Pitch differential thrust factor in forward flight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 1.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Differential thrust in forward flight is enabled via VT_FW_DIFTHR_EN.", "max": 2.0, "min": 0.0, "name": "VT_FW_DIFTHR_S_R", "shortDesc": "Roll differential thrust factor in forward flight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Differential thrust in forward flight is enabled via VT_FW_DIFTHR_EN.", "max": 2.0, "min": 0.0, "name": "VT_FW_DIFTHR_S_Y", "shortDesc": "Yaw differential thrust factor in forward flight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Minimum altitude for fixed-wing flight. When the vehicle is in fixed-wing mode\nand the altitude drops below this altitude (relative altitude above local origin),\nit will instantly switch back to MC mode and execute behavior defined in COM_QC_ACT.", "max": 200.0, "min": 0.0, "name": "VT_FW_MIN_ALT", "shortDesc": "Quad-chute altitude", "type": "Float", "units": "m"}, {"category": "Standard", "default": 0, "group": "VTOL Attitude Control", "increment": 1, "longDesc": "Maximum height above the ground (if available, otherwise above\nHome if available, otherwise above the local origin) where triggering a quad-chute is possible.\nAt high altitudes there is a big risk to deplete the battery and therefore crash if quad-chuting there.", "min": 0, "name": "VT_FW_QC_HMAX", "shortDesc": "Quad-chute maximum height", "type": "Int32", "units": "m"}, {"category": "Standard", "default": 0, "group": "VTOL Attitude Control", "longDesc": "Absolute pitch threshold for quad-chute triggering in FW mode.\nAbove this the vehicle will transition back to MC mode and execute behavior defined in COM_QC_ACT.\nSet to 0 do disable this threshold.", "max": 180, "min": 0, "name": "VT_FW_QC_P", "shortDesc": "Quad-chute max pitch threshold", "type": "Int32", "units": "deg"}, {"category": "Standard", "default": 0, "group": "VTOL Attitude Control", "longDesc": "Absolute roll threshold for quad-chute triggering in FW mode.\nAbove this the vehicle will transition back to MC mode and execute behavior defined in COM_QC_ACT.\nSet to 0 do disable this threshold.", "max": 180, "min": 0, "name": "VT_FW_QC_R", "shortDesc": "Quad-chute max roll threshold", "type": "Int32", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 5.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Time in seconds used for a transition", "max": 20.0, "min": 0.1, "name": "VT_F_TRANS_DUR", "shortDesc": "Duration of a front transition", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "VTOL Attitude Control", "increment": 0.01, "max": 1.0, "min": 0.0, "name": "VT_F_TRANS_THR", "shortDesc": "Target throttle value for the transition to fixed-wing flight", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 6.0, "group": "VTOL Attitude Control", "increment": 0.5, "longDesc": "The duration of the front transition when there is no airspeed feedback available.\nWhen airspeed is used, transition timeout is declared if airspeed does not\nreach VT_ARSP_BLEND after this time.", "max": 30.0, "min": 1.0, "name": "VT_F_TR_OL_TM", "shortDesc": "Airspeed-less front transition time (open loop)", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Overrides VT_PITCH_MIN when the vehicle is in LAND mode (hovering).\nDuring landing it can be beneficial to reduce the pitch angle to reduce the generated lift in head wind.", "max": 45.0, "min": -10.0, "name": "VT_LND_PITCH_MIN", "shortDesc": "Minimum pitch angle during hover landing", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Any pitch setpoint below this value is translated to a forward force by the fixed-wing forward actuation if\nVT_FWD_TRHUST_EN is set.", "max": 45.0, "min": -10.0, "name": "VT_PITCH_MIN", "shortDesc": "Minimum pitch angle during hover", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.33, "group": "VTOL Attitude Control", "increment": 0.01, "longDesc": "Defines the slew rate of the puller/pusher throttle during transitions.\nZero will deactivate the slew rate limiting and thus produce an instant throttle\nrise to the transition throttle VT_F_TRANS_THR.", "min": 0.0, "name": "VT_PSHER_SLEW", "shortDesc": "Pusher throttle ramp up slew rate", "type": "Float", "units": "1/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Altitude error threshold for quad-chute triggering during fixed-wing flight.\nThe check is only active if altitude is controlled and the vehicle is below the current altitude reference.\nThe altitude error is relative to the highest altitude the vehicle has achieved since it has flown below the current\naltitude reference.\nSet to 0 do disable.", "max": 200.0, "min": 0.0, "name": "VT_QC_ALT_LOSS", "shortDesc": "Quad-chute uncommanded descent threshold", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 20.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Altitude loss threshold for quad-chute triggering during VTOL transition to fixed-wing flight\nin altitude-controlled flight modes.\nActive until 5s after completing transition to fixed-wing.\nIf the current altitude is more than this value below the altitude at the beginning of the\ntransition, it will instantly switch back to MC mode and execute behavior defined in COM_QC_ACT.\nSet to 0 do disable this threshold.", "max": 50.0, "min": 0.0, "name": "VT_QC_T_ALT_LOSS", "shortDesc": "Quad-chute transition altitude loss threshold", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "VTOL Attitude Control", "increment": 0.1, "max": 1.0, "min": -1.0, "name": "VT_SPOILER_MC_LD", "shortDesc": "Spoiler setting while landing (hover)", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "VTOL Attitude Control", "increment": 0.01, "max": 1.0, "min": 0.0, "name": "VT_TILT_FW", "shortDesc": "Normalized tilt in FW", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "VTOL Attitude Control", "increment": 0.01, "max": 1.0, "min": 0.0, "name": "VT_TILT_MC", "shortDesc": "Normalized tilt in Hover", "type": "Float"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.4, "group": "VTOL Attitude Control", "increment": 0.01, "max": 1.0, "min": 0.0, "name": "VT_TILT_TRANS", "shortDesc": "Normalized tilt in transition to FW", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 2.0, "group": "VTOL Attitude Control", "increment": 0.1, "longDesc": "Minimum time in seconds for front transition.", "max": 20.0, "min": 0.0, "name": "VT_TRANS_MIN_TM", "shortDesc": "Front transition minimum time", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.5, "group": "VTOL Attitude Control", "increment": 0.01, "longDesc": "Time in seconds it takes to tilt form VT_TILT_TRANS to VT_TILT_FW.", "max": 5.0, "min": 0.1, "name": "VT_TRANS_P2_DUR", "shortDesc": "Duration of front transition phase 2", "type": "Float", "units": "s"}, {"category": "Standard", "decimalPlaces": 2, "default": 15.0, "group": "VTOL Attitude Control", "increment": 1.0, "longDesc": "Time in seconds after which transition will be cancelled.", "max": 30.0, "min": 0.1, "name": "VT_TRANS_TIMEOUT", "shortDesc": "Front transition timeout", "type": "Float", "units": "s"}, {"category": "Standard", "default": 0, "group": "VTOL Attitude Control", "max": 2, "min": 0, "name": "VT_TYPE", "rebootRequired": true, "shortDesc": "VTOL Type (Tailsitter=0, Tiltrotor=1, Standard=2)", "type": "Int32", "values": [{"description": "Tailsitter", "value": 0}, {"description": "Tiltrotor", "value": 1}, {"description": "Standard", "value": 2}]}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "VTOL Attitude Control", "increment": 0.01, "longDesc": "The desired gain to convert roll sp into yaw rate sp.", "max": 3.0, "min": 0.0, "name": "WV_GAIN", "shortDesc": "Weather-vane roll angle to yawrate", "type": "Float", "units": "Hz"}, {"category": "Standard", "decimalPlaces": 1, "default": 80.0, "group": "VTOL Takeoff", "increment": 1.0, "longDesc": "Altitude relative to home at which vehicle will loiter after front transition.", "max": 300.0, "min": 20.0, "name": "VTO_LOITER_ALT", "shortDesc": "VTOL Takeoff relative loiter altitude", "type": "Float", "units": "m"}], "translation": {"items": {"parameters": {"list": {"items": {"bitmask": {"list": {"key": "index", "translate": ["description"]}}, "values": {"list": {"key": "value", "translate": ["description"]}}}, "key": "name", "translate": ["shortDesc", "longDesc"], "translate-global": ["category", "group"]}}}}, "version": 1} \ No newline at end of file From d84903d520ef96cfe5db6a31466b1c1fe3e272ff Mon Sep 17 00:00:00 2001 From: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> Date: Tue, 17 Feb 2026 00:06:29 -0900 Subject: [PATCH 68/83] init.d-posix/airframes/4004_gz_standard_vtol: param set-default VT_PITCH_MIN -5 (#26507) --- ROMFS/px4fmu_common/init.d-posix/airframes/4004_gz_standard_vtol | 1 + 1 file changed, 1 insertion(+) diff --git a/ROMFS/px4fmu_common/init.d-posix/airframes/4004_gz_standard_vtol b/ROMFS/px4fmu_common/init.d-posix/airframes/4004_gz_standard_vtol index 890a01f809..cc8bed693f 100644 --- a/ROMFS/px4fmu_common/init.d-posix/airframes/4004_gz_standard_vtol +++ b/ROMFS/px4fmu_common/init.d-posix/airframes/4004_gz_standard_vtol @@ -101,6 +101,7 @@ param set-default NAV_ACC_RAD 5 param set-default NAV_DLL_ACT 2 param set-default VT_FWD_THRUST_EN 4 +param set-default VT_PITCH_MIN -5 param set-default VT_F_TRANS_THR 1 param set-default VT_TYPE 2 param set-default FD_ESCS_EN 0 From 3a6f566e80187d4651b2f6baaa8d3be2e2137b2d Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Tue, 17 Feb 2026 09:15:19 +0000 Subject: [PATCH 69/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/middleware/dds_topics.md | 364 +++++++++++++++---------------- 1 file changed, 182 insertions(+), 182 deletions(-) diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index 612abca650..cfa995ddf0 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [PwmInput](../msg_docs/PwmInput.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [EscReport](../msg_docs/EscReport.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [Rpm](../msg_docs/Rpm.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [Event](../msg_docs/Event.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [UlogStream](../msg_docs/UlogStream.md) - [InputRc](../msg_docs/InputRc.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) - [RadioStatus](../msg_docs/RadioStatus.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [Vtx](../msg_docs/Vtx.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [Mission](../msg_docs/Mission.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [Gripper](../msg_docs/Gripper.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [EventV0](../msg_docs/EventV0.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [Ping](../msg_docs/Ping.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) - [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) - [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) - [LedControl](../msg_docs/LedControl.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [Event](../msg_docs/Event.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) - [QshellReq](../msg_docs/QshellReq.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) - [ButtonEvent](../msg_docs/ButtonEvent.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [Vtx](../msg_docs/Vtx.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [Rpm](../msg_docs/Rpm.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [SystemPower](../msg_docs/SystemPower.md) - [MissionResult](../msg_docs/MissionResult.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [LogMessage](../msg_docs/LogMessage.md) - [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) - [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [MountOrientation](../msg_docs/MountOrientation.md) - [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [Mission](../msg_docs/Mission.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [Ping](../msg_docs/Ping.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [EventV0](../msg_docs/EventV0.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [Gripper](../msg_docs/Gripper.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [EscReport](../msg_docs/EscReport.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) - [MagWorkerData](../msg_docs/MagWorkerData.md) - [SensorMag](../msg_docs/SensorMag.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [DebugValue](../msg_docs/DebugValue.md) ::: From d46a9266cefc6f9bc8afc0189dc1fa6bcc9d6cd5 Mon Sep 17 00:00:00 2001 From: Balduin Date: Tue, 17 Feb 2026 14:34:44 +0100 Subject: [PATCH 70/83] Failsafe docs: document COM_POS_LOW_EPH, COM_POS_LOW_ACT (#26508) * Failsafe docs: document COM_POS_LOW_EPH, COM_POS_LOW_ACT * Failsafe docs: address review --- docs/en/config/safety.md | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/docs/en/config/safety.md b/docs/en/config/safety.md index f8a224f945..002d09641b 100644 --- a/docs/en/config/safety.md +++ b/docs/en/config/safety.md @@ -181,17 +181,22 @@ The following settings also apply, but are not displayed in the QGC UI. | Preemptive geofence triggering | [GF_PREDICT](../advanced_config/parameter_reference.md#GF_PREDICT) | (Experimental) Trigger geofence if current motion of the vehicle is predicted to trigger the breach (rather than late triggering after the breach). | | Circuit breaker for flight termination | [CBRK_FLIGHTTERM](../advanced_config/parameter_reference.md#CBRK_FLIGHTTERM) | Enables/Disables flight termination action (disabled by default). | -## Position (GNSS) Loss Failsafe +## Position Estimation Failsafes + +This section describes failsafes related to the quality of the vehicle's position estimate. + +### Position Loss Failsafe The _Position Loss Failsafe_ is triggered if the quality of the PX4 position estimate falls below acceptable levels (this might be caused by GPS loss) while in a mode that requires an acceptable position estimate. -The sections below cover first the trigger and then the failsafe action taken by the controller. ### Position Loss Failsafe Trigger -There are basically two mechanisms in PX4 to trigger position failsafes: +The position loss failsafe triggers if the position estimate becomes _invalid_. There are two mechanisms in PX4 to invalidate the position estimate: -- A timeout since the last sensor data was fused that provides direct speed or horizontal position measurements. Sensors that fall into that category are: GNSS, optical flow, airspeed, VIO, auxiliary global position. -- The estimated horizontal position accuracy exceeds a certain threshold. This check is only done on hovering systems (rotary wing vehicles or VTOLs in hover phase). +- A timeout since the last sensor data was fused that provides direct speed or horizontal position measurements. + - Sensors that fall into that category are: GNSS, optical flow, airspeed, VIO, auxiliary global position. +- The estimated horizontal position inaccuracy exceeds the threshold [COM_POS_LOW_EPH](../advanced_config/parameter_reference.md#COM_POS_LOW_EPH) + - This check is only done on hovering systems (rotary-wing vehicles or VTOLs in hover phase). For fixed-wing vehicles, refer to the [Position Accuracy Low](#position-accuracy-low-failsafe) section. The relevant parameters shown below. @@ -207,14 +212,24 @@ Multicopters will switch to [Altitude mode](../flight_modes_mc/altitude.md) if a Fixed-wing planes, and VTOLs not configured to land in hover ([NAV_FORCE_VT](../advanced_config/parameter_reference.md#NAV_FORCE_VT)), have a parameter ([FW_GPSF_LT](../advanced_config/parameter_reference.md#FW_GPSF_LT)) that defines how long they will loiter (circle with a constant roll angle ([FW_GPSF_R](../advanced_config/parameter_reference.md#FW_GPSF_R)) at the current altitude) after losing position before attempting to land. If VTOLs have are configured to switch to hover for landing ([NAV_FORCE_VT](../advanced_config/parameter_reference.md#NAV_FORCE_VT)) then they will first transition and then descend. -The relevant parameters for all vehicles shown below. +The relevant parameters are: -Parameters that only affect Fixed-wing vehicles: +| Parameter | Description | +| ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| [FW_GPSF_LT](../advanced_config/parameter_reference.md#FW_GPSF_LT) | Fixed-wing only: Loiter time (waiting at current altitude for position estimation recovery before starting to descend). Set to 0 to disable. | +| [FW_GPSF_R](../advanced_config/parameter_reference.md#FW_GPSF_R) | Fixed roll/bank angle while circling. | +| [NAV_FORCE_VT](../advanced_config/parameter_reference.md#NAV_FORCE_VT) | If true, force VTOL takeoff and landing, even in `Descend` failsafe. | -| Parameter | Description | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -| [FW_GPSF_LT](../advanced_config/parameter_reference.md#FW_GPSF_LT) | Loiter time (waiting for GPS recovery before it goes into land or flight termination). Set to 0 to disable. | -| [FW_GPSF_R](../advanced_config/parameter_reference.md#FW_GPSF_R) | Fixed roll/bank angle while circling. | +### Position Accuracy Low Failsafe + +In Fixed-wing, the position estimate is never strictly invalidated as long as we have a horizontal aiding source, such as an airspeed sensor. In that case, a separate failsafe can be configured that triggers if the position estimate inacuraccy exceeds the threshold [COM_POS_LOW_EPH](../advanced_config/parameter_reference.md#COM_POS_LOW_EPH). The failsafe action is taken if the vehicle is in mission or hold mode, otherwise it is only a warning. The relevant parameters are: + +| Parameter | Description | +| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------| +| [COM_POS_LOW_EPH](../advanced_config/parameter_reference.md#COM_POS_LOW_EPH) | Position inaccuracy threshold above which COM_POS_LOW_ACT is taken. | +| [COM_POS_LOW_ACT](../advanced_config/parameter_reference.md#COM_POS_LOW_ACT) | Failsafe action taken when position inaccuracy is above configured threshold. | + +Note that if there is no horizontal aiding source anymore, the position estimate is invalidated after `EKF2_NOAID_TOUT`, and the standard position loss failsafe applies. ## Offboard Loss Failsafe From d17a5b2c26e29006f45e1df8271d45ed2e667abd Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Tue, 17 Feb 2026 13:41:39 +0000 Subject: [PATCH 71/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/config/safety.md | 16 +- docs/en/middleware/dds_topics.md | 384 +++++++++++++++---------------- 2 files changed, 200 insertions(+), 200 deletions(-) diff --git a/docs/en/config/safety.md b/docs/en/config/safety.md index 002d09641b..f89914c9b0 100644 --- a/docs/en/config/safety.md +++ b/docs/en/config/safety.md @@ -194,9 +194,9 @@ The _Position Loss Failsafe_ is triggered if the quality of the PX4 position est The position loss failsafe triggers if the position estimate becomes _invalid_. There are two mechanisms in PX4 to invalidate the position estimate: - A timeout since the last sensor data was fused that provides direct speed or horizontal position measurements. - - Sensors that fall into that category are: GNSS, optical flow, airspeed, VIO, auxiliary global position. + - Sensors that fall into that category are: GNSS, optical flow, airspeed, VIO, auxiliary global position. - The estimated horizontal position inaccuracy exceeds the threshold [COM_POS_LOW_EPH](../advanced_config/parameter_reference.md#COM_POS_LOW_EPH) - - This check is only done on hovering systems (rotary-wing vehicles or VTOLs in hover phase). For fixed-wing vehicles, refer to the [Position Accuracy Low](#position-accuracy-low-failsafe) section. + - This check is only done on hovering systems (rotary-wing vehicles or VTOLs in hover phase). For fixed-wing vehicles, refer to the [Position Accuracy Low](#position-accuracy-low-failsafe) section. The relevant parameters shown below. @@ -214,18 +214,18 @@ If VTOLs have are configured to switch to hover for landing ([NAV_FORCE_VT](../a The relevant parameters are: -| Parameter | Description | -| ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | -| [FW_GPSF_LT](../advanced_config/parameter_reference.md#FW_GPSF_LT) | Fixed-wing only: Loiter time (waiting at current altitude for position estimation recovery before starting to descend). Set to 0 to disable. | -| [FW_GPSF_R](../advanced_config/parameter_reference.md#FW_GPSF_R) | Fixed roll/bank angle while circling. | -| [NAV_FORCE_VT](../advanced_config/parameter_reference.md#NAV_FORCE_VT) | If true, force VTOL takeoff and landing, even in `Descend` failsafe. | +| Parameter | Description | +| ----------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| [FW_GPSF_LT](../advanced_config/parameter_reference.md#FW_GPSF_LT) | Fixed-wing only: Loiter time (waiting at current altitude for position estimation recovery before starting to descend). Set to 0 to disable. | +| [FW_GPSF_R](../advanced_config/parameter_reference.md#FW_GPSF_R) | Fixed roll/bank angle while circling. | +| [NAV_FORCE_VT](../advanced_config/parameter_reference.md#NAV_FORCE_VT) | If true, force VTOL takeoff and landing, even in `Descend` failsafe. | ### Position Accuracy Low Failsafe In Fixed-wing, the position estimate is never strictly invalidated as long as we have a horizontal aiding source, such as an airspeed sensor. In that case, a separate failsafe can be configured that triggers if the position estimate inacuraccy exceeds the threshold [COM_POS_LOW_EPH](../advanced_config/parameter_reference.md#COM_POS_LOW_EPH). The failsafe action is taken if the vehicle is in mission or hold mode, otherwise it is only a warning. The relevant parameters are: | Parameter | Description | -| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------| +| -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | [COM_POS_LOW_EPH](../advanced_config/parameter_reference.md#COM_POS_LOW_EPH) | Position inaccuracy threshold above which COM_POS_LOW_ACT is taken. | | [COM_POS_LOW_ACT](../advanced_config/parameter_reference.md#COM_POS_LOW_ACT) | Failsafe action taken when position inaccuracy is above configured threshold. | diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index cfa995ddf0..fc2fb68b16 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [InputRc](../msg_docs/InputRc.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [LedControl](../msg_docs/LedControl.md) -- [Event](../msg_docs/Event.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [Vtx](../msg_docs/Vtx.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) - [GpsDump](../msg_docs/GpsDump.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [Rpm](../msg_docs/Rpm.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [Mission](../msg_docs/Mission.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [Ping](../msg_docs/Ping.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [EventV0](../msg_docs/EventV0.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [Gripper](../msg_docs/Gripper.md) - [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [EscReport](../msg_docs/EscReport.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) - [DebugValue](../msg_docs/DebugValue.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [LedControl](../msg_docs/LedControl.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [Mission](../msg_docs/Mission.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [Rpm](../msg_docs/Rpm.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [Gripper](../msg_docs/Gripper.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [EventV0](../msg_docs/EventV0.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [EscReport](../msg_docs/EscReport.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [Vtx](../msg_docs/Vtx.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [Ping](../msg_docs/Ping.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [Event](../msg_docs/Event.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [InputRc](../msg_docs/InputRc.md) ::: From 864df9fc7bf34395f5860d386fb361f7655a1b73 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Tue, 17 Feb 2026 08:56:10 -0800 Subject: [PATCH 72/83] CI: disable VTOL and tailsitter SITL tests Persistent flaky failures (timeouts, erratic transitions) make these tests unreliable in CI. Commented out from the workflow matrix so they can be re-enabled once the test infrastructure is stabilized. The test definitions in sitl.json are preserved for local use. Signed-off-by: Ramon Roche --- .github/workflows/sitl_tests.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sitl_tests.yml b/.github/workflows/sitl_tests.yml index 813e78073b..c114b05cb3 100644 --- a/.github/workflows/sitl_tests.yml +++ b/.github/workflows/sitl_tests.yml @@ -33,8 +33,10 @@ jobs: matrix: config: - {model: "iris", latitude: "59.617693", longitude: "-151.145316", altitude: "48", build_type: "RelWithDebInfo" } # Alaska - - {model: "tailsitter" , latitude: "29.660316", longitude: "-82.316658", altitude: "30", build_type: "RelWithDebInfo" } # Florida - - {model: "standard_vtol", latitude: "47.397742", longitude: "8.545594", altitude: "488", build_type: "Coverage" } # Zurich + # VTOL/tailsitter disabled: persistent flaky CI failures (timeouts, erratic + # transitions). Re-enable once the test infrastructure is stabilized. + # - {model: "tailsitter" , latitude: "29.660316", longitude: "-82.316658", altitude: "30", build_type: "RelWithDebInfo" } # Florida + # - {model: "standard_vtol", latitude: "47.397742", longitude: "8.545594", altitude: "488", build_type: "Coverage" } # Zurich steps: - uses: actions/checkout@v4 From 0e6b904e801ba79e212e84bea67ed549dc7c5069 Mon Sep 17 00:00:00 2001 From: Alex Klimaj Date: Tue, 17 Feb 2026 12:54:38 -0700 Subject: [PATCH 73/83] LightwareLaser: add SF1XX rotation parameter (#26428) * Add SF1XX rotation parameter and update orientation in LightwareLaser driver * remove rotation opt arg, update docs about supported lightware --------- Co-authored-by: Jacob Dahl --- .../lightware_laser_i2c.cpp | 23 +++++++------------ .../lightware_laser_i2c/parameters.c | 23 +++++++++++++++++-- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/src/drivers/distance_sensor/lightware_laser_i2c/lightware_laser_i2c.cpp b/src/drivers/distance_sensor/lightware_laser_i2c/lightware_laser_i2c.cpp index d5e9a8088b..93c4b94b82 100644 --- a/src/drivers/distance_sensor/lightware_laser_i2c/lightware_laser_i2c.cpp +++ b/src/drivers/distance_sensor/lightware_laser_i2c/lightware_laser_i2c.cpp @@ -162,7 +162,8 @@ private: DEFINE_PARAMETERS( (ParamInt) _param_sens_en_sf1xx, - (ParamInt) _param_sf1xx_mode + (ParamInt) _param_sf1xx_mode, + (ParamInt) _param_sf1xx_rot ) uORB::Subscription _parameter_update_sub{ORB_ID(parameter_update)}; uORB::Subscription _vehicle_status_sub{ORB_ID(vehicle_status)}; @@ -178,7 +179,7 @@ LightwareLaser::LightwareLaser(const I2CSPIDriverConfig &config) : I2C(config), I2CSPIDriver(config), ModuleParams(nullptr), - _px4_rangefinder(get_device_id(), config.rotation) + _px4_rangefinder(get_device_id()) { _px4_rangefinder.set_device_type(DRV_DIST_DEVTYPE_LIGHTWARE_LASER); } @@ -194,6 +195,9 @@ int LightwareLaser::init() { int ret = PX4_ERROR; updateParams(); + + _px4_rangefinder.set_orientation(_param_sf1xx_rot.get()); + const int32_t hw_model = _param_sens_en_sf1xx.get(); switch (hw_model) { @@ -630,7 +634,7 @@ void LightwareLaser::print_usage() R"DESCR_STR( ### Description -I2C bus driver for Lightware SFxx series LIDAR rangefinders: SF10/a, SF10/b, SF10/c, SF11/c, SF/LW20, SF30/d. +I2C bus driver for Lightware LIDAR rangefinders: SF10/a, SF10/b, SF10/c, SF11/c, SF/LW20, SF/LW30/d, GRF250, GRF500. Setup/usage information: https://docs.px4.io/main/en/sensor/sfxx_lidar.html )DESCR_STR"); @@ -640,28 +644,17 @@ Setup/usage information: https://docs.px4.io/main/en/sensor/sfxx_lidar.html PRINT_MODULE_USAGE_COMMAND("start"); PRINT_MODULE_USAGE_PARAMS_I2C_SPI_DRIVER(true, false); PRINT_MODULE_USAGE_PARAMS_I2C_ADDRESS(0x66); - PRINT_MODULE_USAGE_PARAM_INT('R', 25, 0, 25, "Sensor rotation - downward facing by default", true); PRINT_MODULE_USAGE_DEFAULT_COMMANDS(); } extern "C" __EXPORT int lightware_laser_i2c_main(int argc, char *argv[]) { - int ch; using ThisDriver = LightwareLaser; BusCLIArguments cli{true, false}; - cli.rotation = (Rotation)distance_sensor_s::ROTATION_DOWNWARD_FACING; cli.default_i2c_frequency = 400000; cli.i2c_address = LIGHTWARE_LASER_BASEADDR; - while ((ch = cli.getOpt(argc, argv, "R:")) != EOF) { - switch (ch) { - case 'R': - cli.rotation = (Rotation)atoi(cli.optArg()); - break; - } - } - - const char *verb = cli.optArg(); + const char *verb = cli.parseDefaultArguments(argc, argv); if (!verb) { ThisDriver::print_usage(); diff --git a/src/drivers/distance_sensor/lightware_laser_i2c/parameters.c b/src/drivers/distance_sensor/lightware_laser_i2c/parameters.c index 8fa96b629e..d549144f9d 100644 --- a/src/drivers/distance_sensor/lightware_laser_i2c/parameters.c +++ b/src/drivers/distance_sensor/lightware_laser_i2c/parameters.c @@ -32,7 +32,7 @@ ****************************************************************************/ /** - * Lightware SF1xx/SF20/LW20 laser rangefinder (i2c) + * Lightware laser rangefinder (i2c) * * @reboot_required true * @min 0 @@ -52,7 +52,7 @@ PARAM_DEFINE_INT32(SENS_EN_SF1XX, 0); /** - * Lightware SF1xx/SF20/LW20 Operation Mode + * Lightware laser rangefinder Operation Mode * * @value 0 Disabled * @value 1 Enabled @@ -62,3 +62,22 @@ PARAM_DEFINE_INT32(SENS_EN_SF1XX, 0); * @max 2 */ PARAM_DEFINE_INT32(SF1XX_MODE, 1); + +/** + * Lightware laser rangefinder Rotation + * + * Distance sensor orientation as MAV_SENSOR_ORIENTATION enum. + * Applies to all models supported by SENS_EN_SF1XX. + * + * @reboot_required true + * @min 0 + * @max 25 + * @group Sensors + * @value 0 Forward + * @value 2 Right + * @value 4 Backward + * @value 6 Left + * @value 24 Upward + * @value 25 Downward + */ +PARAM_DEFINE_INT32(SF1XX_ROT, 25); From 6b67ccb0ad6f2fd20b79d782a9d254e06e0a3756 Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Tue, 17 Feb 2026 20:02:19 +0000 Subject: [PATCH 74/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- .../en/advanced_config/parameter_reference.md | 24 +- docs/en/middleware/dds_topics.md | 374 +++++++++--------- .../modules/modules_driver_distance_sensor.md | 4 +- 3 files changed, 210 insertions(+), 192 deletions(-) diff --git a/docs/en/advanced_config/parameter_reference.md b/docs/en/advanced_config/parameter_reference.md index 63b3f3d195..2a179899a5 100644 --- a/docs/en/advanced_config/parameter_reference.md +++ b/docs/en/advanced_config/parameter_reference.md @@ -34607,7 +34607,7 @@ Lightware Laser Rangefinder hardware model (serial). ### SENS_EN_SF1XX (`INT32`) {#SENS_EN_SF1XX} -Lightware SF1xx/SF20/LW20 laser rangefinder (i2c). +Lightware laser rangefinder (i2c). **Values:** @@ -35782,6 +35782,26 @@ Configure on which serial port to run VectorNav (VN-100, VN-200, VN-300). | ------- | -------- | -------- | --------- | ------- | ---- | | ✓ | | | | 0 | +### SF1XX_ROT (`INT32`) {#SF1XX_ROT} + +Lightware laser rangefinder Rotation. + +Distance sensor orientation as MAV_SENSOR_ORIENTATION enum. +Applies to all models supported by SENS_EN_SF1XX. + +**Values:** + +- `0`: Forward +- `2`: Right +- `4`: Backward +- `6`: Left +- `24`: Upward +- `25`: Downward + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ------- | ---- | +| ✓ | 0 | 25 | | 25 | + ### SF45_ORIENT_CFG (`INT32`) {#SF45_ORIENT_CFG} Orientation upright or facing downward. @@ -42610,7 +42630,7 @@ Gyro filter settings. ### SF1XX_MODE (`INT32`) {#SF1XX_MODE} -Lightware SF1xx/SF20/LW20 Operation Mode. +Lightware laser rangefinder Operation Mode. **Values:** diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index fc2fb68b16..226f0a801c 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [GpsDump](../msg_docs/GpsDump.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [LedControl](../msg_docs/LedControl.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [Mission](../msg_docs/Mission.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [Rpm](../msg_docs/Rpm.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [Gripper](../msg_docs/Gripper.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [EventV0](../msg_docs/EventV0.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [EscReport](../msg_docs/EscReport.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) - [BatteryInfo](../msg_docs/BatteryInfo.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) - [ActionRequest](../msg_docs/ActionRequest.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [Vtx](../msg_docs/Vtx.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [Ping](../msg_docs/Ping.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) - [GpsInjectData](../msg_docs/GpsInjectData.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) - [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [Event](../msg_docs/Event.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [PwmInput](../msg_docs/PwmInput.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) - [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) - [GpioRequest](../msg_docs/GpioRequest.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) - [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [EventV0](../msg_docs/EventV0.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [EscReport](../msg_docs/EscReport.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) - [InputRc](../msg_docs/InputRc.md) +- [Ping](../msg_docs/Ping.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [Event](../msg_docs/Event.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [Rpm](../msg_docs/Rpm.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [LedControl](../msg_docs/LedControl.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [Mission](../msg_docs/Mission.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [Gripper](../msg_docs/Gripper.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [Vtx](../msg_docs/Vtx.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) ::: diff --git a/docs/en/modules/modules_driver_distance_sensor.md b/docs/en/modules/modules_driver_distance_sensor.md index 9b82e6fc4a..101ba55dd3 100644 --- a/docs/en/modules/modules_driver_distance_sensor.md +++ b/docs/en/modules/modules_driver_distance_sensor.md @@ -147,7 +147,7 @@ Source: [drivers/distance_sensor/lightware_laser_i2c](https://github.com/PX4/PX4 ### Description -I2C bus driver for Lightware SFxx series LIDAR rangefinders: SF10/a, SF10/b, SF10/c, SF11/c, SF/LW20, SF30/d. +I2C bus driver for Lightware LIDAR rangefinders: SF10/a, SF10/b, SF10/c, SF11/c, SF/LW20, SF/LW30/d, GRF250, GRF500. Setup/usage information: https://docs.px4.io/main/en/sensor/sfxx_lidar.html @@ -165,8 +165,6 @@ lightware_laser_i2c [arguments...] [-q] quiet startup (no message if no device found) [-a ] I2C address default: 102 - [-R ] Sensor rotation - downward facing by default - default: 25 stop From d5ddc9135d5447e27df291829ea0e8ec50905abf Mon Sep 17 00:00:00 2001 From: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> Date: Tue, 17 Feb 2026 14:09:43 -0900 Subject: [PATCH 75/83] clang-tidy: fix issues (#26498) --- Makefile | 2 +- src/lib/mathlib/math/filter/LowPassFilter2p.hpp | 2 +- src/lib/rate_control/rate_control.cpp | 2 +- .../MecanumActControl/MecanumActControl.cpp | 2 +- src/modules/sensors/Integrator.hpp | 2 +- .../gz_plugins/buoyancy/BuoyancySystem.cpp | 2 +- .../SpacecraftThrusterModel.cpp | 15 ++++++++++----- 7 files changed, 16 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index df7c54f412..3cbe67acc9 100644 --- a/Makefile +++ b/Makefile @@ -505,7 +505,7 @@ px4_sitl_default-clang: # To add manual exclusions, append to CLANG_TIDY_EXCLUDE_EXTRA below. # Submodules are automatically excluded - no action needed when adding new ones. CLANG_TIDY_SUBMODULES := $(shell git config --file .gitmodules --get-regexp path | awk '{print $$2}' | tr '\n' '|' | sed 's/|$$//') -CLANG_TIDY_EXCLUDE_EXTRA := src/systemcmds/tests|src/examples|src/modules/gyro_fft/CMSIS_5|src/lib/drivers/smbus|src/drivers/gpio|src/modules/commander/failsafe/emscripten|failsafe_test\.dir +CLANG_TIDY_EXCLUDE_EXTRA := src/systemcmds/tests|src/examples|src/modules/gyro_fft/CMSIS_5|src/lib/drivers/smbus|src/drivers/gpio|src/modules/commander/failsafe/emscripten|failsafe_test\.dir|\.pb\.cc CLANG_TIDY_EXCLUDE := $(CLANG_TIDY_SUBMODULES)|$(CLANG_TIDY_EXCLUDE_EXTRA) clang-tidy: px4_sitl_default-clang diff --git a/src/lib/mathlib/math/filter/LowPassFilter2p.hpp b/src/lib/mathlib/math/filter/LowPassFilter2p.hpp index 159d2bcbfb..9999be13d4 100644 --- a/src/lib/mathlib/math/filter/LowPassFilter2p.hpp +++ b/src/lib/mathlib/math/filter/LowPassFilter2p.hpp @@ -100,7 +100,7 @@ public: // Direct Form II implementation T delay_element_0{sample - _delay_element_1 *_a1 - _delay_element_2 * _a2}; - const T output{delay_element_0 *_b0 + _delay_element_1 *_b1 + _delay_element_2 * _b2}; + T output{delay_element_0 *_b0 + _delay_element_1 *_b1 + _delay_element_2 * _b2}; _delay_element_2 = _delay_element_1; _delay_element_1 = delay_element_0; diff --git a/src/lib/rate_control/rate_control.cpp b/src/lib/rate_control/rate_control.cpp index 7d6367a886..ddfb796991 100644 --- a/src/lib/rate_control/rate_control.cpp +++ b/src/lib/rate_control/rate_control.cpp @@ -75,7 +75,7 @@ Vector3f RateControl::update(const Vector3f &rate, const Vector3f &rate_sp, cons Vector3f rate_error = rate_sp - rate; // PID control with feed forward - const Vector3f torque = _gain_p.emult(rate_error) + _rate_int - _gain_d.emult(angular_accel) + _gain_ff.emult(rate_sp); + Vector3f torque = _gain_p.emult(rate_error) + _rate_int - _gain_d.emult(angular_accel) + _gain_ff.emult(rate_sp); // update integral only if we are not landed if (!landed) { diff --git a/src/modules/rover_mecanum/MecanumActControl/MecanumActControl.cpp b/src/modules/rover_mecanum/MecanumActControl/MecanumActControl.cpp index 203aadc365..2f3280e853 100644 --- a/src/modules/rover_mecanum/MecanumActControl/MecanumActControl.cpp +++ b/src/modules/rover_mecanum/MecanumActControl/MecanumActControl.cpp @@ -111,7 +111,7 @@ Vector4f MecanumActControl::computeInverseKinematics(float throttle_body_x, floa const Matrix input(input_data); const float m_data[12] = {1.f, -1.f, -1.f, 1.f, 1.f, 1.f, 1.f, 1.f, -1.f, 1.f, -1.f, 1.f}; const Matrix m(m_data); - const Vector4f motor_commands = m * input; + Vector4f motor_commands = m * input; return motor_commands; } diff --git a/src/modules/sensors/Integrator.hpp b/src/modules/sensors/Integrator.hpp index 7895bd0c5b..74a54c7c3a 100644 --- a/src/modules/sensors/Integrator.hpp +++ b/src/modules/sensors/Integrator.hpp @@ -132,7 +132,7 @@ protected: // Use trapezoidal integration to calculate the delta integral _integrated_samples++; _integral_dt += dt; - const matrix::Vector3f delta_alpha{(val + _last_val) *dt * 0.5f}; + matrix::Vector3f delta_alpha{(val + _last_val) *dt * 0.5f}; _last_val = val; return delta_alpha; diff --git a/src/modules/simulation/gz_plugins/buoyancy/BuoyancySystem.cpp b/src/modules/simulation/gz_plugins/buoyancy/BuoyancySystem.cpp index d9fd3c200e..a16ff5eafb 100644 --- a/src/modules/simulation/gz_plugins/buoyancy/BuoyancySystem.cpp +++ b/src/modules/simulation/gz_plugins/buoyancy/BuoyancySystem.cpp @@ -277,7 +277,7 @@ void BuoyancyPrivate::CheckForNewEntities(const EntityComponentManager &_ecm) [&](const Entity & _entity, const components::Link *, const components::Inertial *) -> bool { - if (this->basicBuoyancy == true) return true; + if (this->basicBuoyancy == true) { return true; } // Skip if the entity already has a volume and center of volume if (_ecm.EntityHasComponentType(_entity, components::CenterOfVolume().TypeId()) && diff --git a/src/modules/simulation/gz_plugins/spacecraft_thruster/SpacecraftThrusterModel.cpp b/src/modules/simulation/gz_plugins/spacecraft_thruster/SpacecraftThrusterModel.cpp index 846d794de4..f4f9994b6f 100644 --- a/src/modules/simulation/gz_plugins/spacecraft_thruster/SpacecraftThrusterModel.cpp +++ b/src/modules/simulation/gz_plugins/spacecraft_thruster/SpacecraftThrusterModel.cpp @@ -334,16 +334,18 @@ void SpacecraftThrusterModelPrivate::UpdateForcesAndMoments( // d: cycle period double targetDutyCycle = normalizedInput * (1.0 / this->dutyCycleFrequency); - if (this->actuatorNumber == 0) + if (this->actuatorNumber == 0) { gzdbg << this->actuatorNumber << ": target duty cycle: " << targetDutyCycle << std::endl; + } // Calculate cycle start time if (this->samplingTime >= 1.0 / this->dutyCycleFrequency) { - if (this->actuatorNumber == 0) + if (this->actuatorNumber == 0) { gzdbg << this->actuatorNumber << ": Cycle completed. Resetting cycle start time." << std::endl; + } this->cycleStartTime = this->simTime; } @@ -351,22 +353,24 @@ void SpacecraftThrusterModelPrivate::UpdateForcesAndMoments( // Calculate sampling time instant within the cycle this->samplingTime = this->simTime - this->cycleStartTime; - if (this->actuatorNumber == 0) + if (this->actuatorNumber == 0) { gzdbg << this->actuatorNumber << ": PWM Period: " << 1.0 / this->dutyCycleFrequency << " Cycle Start time: " << this->cycleStartTime << " Sampling time: " << this->samplingTime << std::endl; + } // Apply force if the sampling time is less than the target ON duty cycle double force = this->samplingTime <= targetDutyCycle ? this->maxThrust : 0.0; if (targetDutyCycle < 1e-9) { force = 0.0; } - if (this->actuatorNumber == 0) + if (this->actuatorNumber == 0) { gzdbg << this->actuatorNumber << ": Force: " << force << " Sampling time: " << this->samplingTime << " Tgt duty cycle: " << targetDutyCycle << std::endl; + } // Apply force to the link Link link(this->linkEntity); @@ -374,10 +378,11 @@ void SpacecraftThrusterModelPrivate::UpdateForcesAndMoments( link.AddWorldForce(_ecm, worldPose->Rot().RotateVector(math::Vector3d(0, 0, force))); - if (this->actuatorNumber == 0) + if (this->actuatorNumber == 0) { gzdbg << this->actuatorNumber << ": Input Value: " << msg->velocity(this->actuatorNumber) << " Calc. Force: " << force << std::endl; + } } GZ_ADD_PLUGIN(SpacecraftThrusterModel, From b2fc5993cc59f64e941d3ced2fd1e780954a2190 Mon Sep 17 00:00:00 2001 From: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> Date: Tue, 17 Feb 2026 14:10:04 -0900 Subject: [PATCH 76/83] range_finder_consistency_check: fix consistency check timeout units (#26497) * range_finder_consistency_check: fix consistency check timeout units * explicit float * format --- .../range_finder/range_finder_consistency_check.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/ekf2/EKF/aid_sources/range_finder/range_finder_consistency_check.cpp b/src/modules/ekf2/EKF/aid_sources/range_finder/range_finder_consistency_check.cpp index e6b520b600..17a54e60cb 100644 --- a/src/modules/ekf2/EKF/aid_sources/range_finder/range_finder_consistency_check.cpp +++ b/src/modules/ekf2/EKF/aid_sources/range_finder/range_finder_consistency_check.cpp @@ -75,7 +75,9 @@ void RangeFinderConsistencyCheck::update(float dist_bottom, float dist_bottom_va void RangeFinderConsistencyCheck::updateConsistency(float vz, uint64_t time_us) { if (fabsf(_signed_test_ratio_lpf.getState()) >= 1.f) { - if ((time_us - _time_last_horizontal_motion) > _signed_test_ratio_tau) { + uint64_t timeout_us = _signed_test_ratio_tau * 1e6f; + + if ((time_us - _time_last_horizontal_motion) > timeout_us) { _is_kinematically_consistent = false; _time_last_inconsistent_us = time_us; } From 911fc81c5996267f269b62a28fff8066c5dbe82a Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Tue, 17 Feb 2026 23:17:55 +0000 Subject: [PATCH 77/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/middleware/dds_topics.md | 364 +++++++++++++++---------------- 1 file changed, 182 insertions(+), 182 deletions(-) diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index 226f0a801c..97ae93a59f 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [EventV0](../msg_docs/EventV0.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [EscReport](../msg_docs/EscReport.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [InputRc](../msg_docs/InputRc.md) -- [Ping](../msg_docs/Ping.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [Event](../msg_docs/Event.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [Rpm](../msg_docs/Rpm.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [LedControl](../msg_docs/LedControl.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) - [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) - [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [Mission](../msg_docs/Mission.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [EventV0](../msg_docs/EventV0.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) - [GimbalControls](../msg_docs/GimbalControls.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [SensorGyro](../msg_docs/SensorGyro.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [Mission](../msg_docs/Mission.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [InputRc](../msg_docs/InputRc.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) - [MagWorkerData](../msg_docs/MagWorkerData.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [Vtx](../msg_docs/Vtx.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [Event](../msg_docs/Event.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) - [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [Gripper](../msg_docs/Gripper.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [EscReport](../msg_docs/EscReport.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [LedControl](../msg_docs/LedControl.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) - [ParameterUpdate](../msg_docs/ParameterUpdate.md) - [MissionResult](../msg_docs/MissionResult.md) - [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [Gripper](../msg_docs/Gripper.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) - [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) - [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [RaptorInput](../msg_docs/RaptorInput.md) - [RcChannels](../msg_docs/RcChannels.md) -- [Vtx](../msg_docs/Vtx.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [Rpm](../msg_docs/Rpm.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) - [LoggerStatus](../msg_docs/LoggerStatus.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) - [SensorBaro](../msg_docs/SensorBaro.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [Ping](../msg_docs/Ping.md) ::: From 2a0b795760ce214c118368549566c09c7fc39ee7 Mon Sep 17 00:00:00 2001 From: Victor Nan Fernandez-Ayala <34630264+ViktorNfa@users.noreply.github.com> Date: Wed, 18 Feb 2026 01:15:45 +0100 Subject: [PATCH 78/83] fix: set UXRCE_DDS_AG_IP in UUV airframe, remove from defaults (#26485) --- ROMFS/px4fmu_common/init.d/airframes/60002_uuv_bluerov2_heavy | 3 +++ ROMFS/px4fmu_common/init.d/rc.uuv_defaults | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ROMFS/px4fmu_common/init.d/airframes/60002_uuv_bluerov2_heavy b/ROMFS/px4fmu_common/init.d/airframes/60002_uuv_bluerov2_heavy index 7ad928367d..179d2732c9 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/60002_uuv_bluerov2_heavy +++ b/ROMFS/px4fmu_common/init.d/airframes/60002_uuv_bluerov2_heavy @@ -22,6 +22,9 @@ . ${R}etc/init.d/rc.uuv_defaults +# Overwrite DDS AG IP to `192.168.0.1` +param set-default UXRCE_DDS_AG_IP -1062731775 + # param set-default MAV_1_CONFIG 102 param set-default BAT1_A_PER_V 37.8798 diff --git a/ROMFS/px4fmu_common/init.d/rc.uuv_defaults b/ROMFS/px4fmu_common/init.d/rc.uuv_defaults index 2bf3c60168..f88dd82e19 100644 --- a/ROMFS/px4fmu_common/init.d/rc.uuv_defaults +++ b/ROMFS/px4fmu_common/init.d/rc.uuv_defaults @@ -10,9 +10,6 @@ set VEHICLE_TYPE uuv # MAV_TYPE_SUBMARINE 12 param set-default MAV_TYPE 12 -# Set micro-dds-client to use ethernet and IP-address 192.168.0.1 -param set-default UXRCE_DDS_AG_IP -1062731775 - # Disable preflight disarm to not interfere with external launching param set-default COM_DISARM_PRFLT -1 param set-default CBRK_SUPPLY_CHK 894281 From 7ef57f626285f2455ba5134b448535bada216e8a Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Wed, 18 Feb 2026 00:23:31 +0000 Subject: [PATCH 79/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/middleware/dds_topics.md | 376 +++++++++++++++---------------- 1 file changed, 188 insertions(+), 188 deletions(-) diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index 97ae93a59f..725fe7579e 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [EventV0](../msg_docs/EventV0.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [Mission](../msg_docs/Mission.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [InputRc](../msg_docs/InputRc.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [Vtx](../msg_docs/Vtx.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [Event](../msg_docs/Event.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [Gripper](../msg_docs/Gripper.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) - [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [DebugArray](../msg_docs/DebugArray.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [EscReport](../msg_docs/EscReport.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [LedControl](../msg_docs/LedControl.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) - [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) - [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [EventV0](../msg_docs/EventV0.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) - [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [Rpm](../msg_docs/Rpm.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) - [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [SensorBaro](../msg_docs/SensorBaro.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) - [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [InputRc](../msg_docs/InputRc.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [Rpm](../msg_docs/Rpm.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [Mission](../msg_docs/Mission.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) - [Ping](../msg_docs/Ping.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [Event](../msg_docs/Event.md) +- [LedControl](../msg_docs/LedControl.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [EscReport](../msg_docs/EscReport.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [Gripper](../msg_docs/Gripper.md) +- [Vtx](../msg_docs/Vtx.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) ::: From 47d5971f42ebf18c314ad41988a2c538b8f61a09 Mon Sep 17 00:00:00 2001 From: PX4 Build Bot Date: Wed, 18 Feb 2026 16:44:34 +1100 Subject: [PATCH 80/83] New Crowdin translations - zh-CN (#26488) Co-authored-by: Crowdin Bot --- docs/zh/SUMMARY.md | 4 +- .../ark_jetson_pab_carrier.md | 3 - .../holybro_pixhawk_rpi_cm4_baseboard.md | 2 - docs/zh/companion_computer/pixhawk_rpi.md | 2 - .../computer_vision/collision_prevention.md | 1 - docs/zh/concept/flight_tasks.md | 1 - docs/zh/config/_autotune.md | 9 +- docs/zh/config/level_horizon_calibration.md | 1 - docs/zh/config_heli/index.md | 1 - .../pid_tuning_guide_multicopter_basic.md | 1 - docs/zh/config_rover/index.md | 43 +- docs/zh/dev_airframes/adding_a_new_frame.md | 1 - docs/zh/dev_setup/building_px4.md | 60 +- docs/zh/dev_setup/config_initial.md | 2 +- docs/zh/dev_setup/dev_env.md | 6 +- docs/zh/dev_setup/dev_env_linux_centos.md | 5 +- docs/zh/dev_setup/dev_env_linux_ubuntu.md | 26 +- docs/zh/dev_setup/dev_env_windows_wsl.md | 16 +- docs/zh/dev_setup/vscode.md | 5 +- docs/zh/dronecan/holybro_h_rtk_zed_f9p_gps.md | 1 - docs/zh/esc/ark_4in1_esc.md | 2 - docs/zh/flight_controller/airlink.md | 22 +- .../autopilot_manufacturer_supported.md | 1 + .../flight_controller/gearup_airbrainh743.md | 96 + docs/zh/flight_modes/offboard.md | 28 +- docs/zh/flight_modes_fw/mission.md | 1 - docs/zh/flight_modes_mc/follow_me.md | 1 - docs/zh/flight_modes_mc/mission.md | 1 - docs/zh/flight_modes_vtol/return.md | 1 - docs/zh/flight_stack/controller_diagrams.md | 6 +- docs/zh/flying/package_delivery_mission.md | 1 - docs/zh/frames_rover/index.md | 6 + docs/zh/getting_started/led_meanings.md | 21 +- docs/zh/getting_started/tunes.md | 2 +- docs/zh/gps_compass/rtk_gps.md | 1 - docs/zh/index.md | 90 +- docs/zh/middleware/dds_topics.md | 374 ++-- docs/zh/modules/module_template.md | 4 +- docs/zh/modules/modules_driver.md | 140 +- docs/zh/modules/modules_template.md | 31 + docs/zh/msg_docs/ActionRequest.md | 52 +- docs/zh/msg_docs/ActuatorArmed.md | 29 +- docs/zh/msg_docs/ActuatorControlsStatus.md | 23 +- docs/zh/msg_docs/ActuatorMotors.md | 35 +- docs/zh/msg_docs/ActuatorOutputs.md | 31 +- docs/zh/msg_docs/ActuatorServos.md | 33 +- docs/zh/msg_docs/ActuatorServosTrim.md | 31 +- docs/zh/msg_docs/ActuatorTest.md | 38 +- docs/zh/msg_docs/AdcReport.md | 27 +- docs/zh/msg_docs/Airspeed.md | 28 +- docs/zh/msg_docs/AirspeedValidated.md | 52 +- docs/zh/msg_docs/AirspeedValidatedV0.md | 38 +- docs/zh/msg_docs/AirspeedWind.md | 46 +- docs/zh/msg_docs/ArmingCheckReply.md | 59 +- docs/zh/msg_docs/ArmingCheckReplyV0.md | 49 +- docs/zh/msg_docs/ArmingCheckRequest.md | 32 +- docs/zh/msg_docs/ArmingCheckRequestV0.md | 29 +- .../msg_docs/AutotuneAttitudeControlStatus.md | 62 +- docs/zh/msg_docs/BatteryInfo.md | 26 +- docs/zh/msg_docs/BatteryStatus.md | 112 +- docs/zh/msg_docs/BatteryStatusV0.md | 113 +- docs/zh/msg_docs/ButtonEvent.md | 29 +- docs/zh/msg_docs/CameraCapture.md | 30 +- docs/zh/msg_docs/CameraStatus.md | 24 +- docs/zh/msg_docs/CameraTrigger.md | 31 +- docs/zh/msg_docs/CanInterfaceStatus.md | 26 +- docs/zh/msg_docs/CellularStatus.md | 70 +- docs/zh/msg_docs/CollisionConstraints.md | 27 +- docs/zh/msg_docs/ConfigOverrides.md | 39 +- docs/zh/msg_docs/ConfigOverridesV0.md | 38 +- docs/zh/msg_docs/ControlAllocatorStatus.md | 39 +- docs/zh/msg_docs/Cpuload.md | 24 +- docs/zh/msg_docs/DatamanRequest.md | 28 +- docs/zh/msg_docs/DatamanResponse.md | 39 +- docs/zh/msg_docs/DebugArray.md | 31 +- docs/zh/msg_docs/DebugKeyValue.md | 24 +- docs/zh/msg_docs/DebugValue.md | 24 +- docs/zh/msg_docs/DebugVect.md | 26 +- docs/zh/msg_docs/DeviceInformation.md | 54 +- docs/zh/msg_docs/DifferentialPressure.md | 29 +- docs/zh/msg_docs/DistanceSensor.md | 63 +- .../DistanceSensorModeChangeRequest.md | 30 +- docs/zh/msg_docs/DronecanNodeStatus.md | 42 +- docs/zh/msg_docs/Ekf2Timestamps.md | 39 +- docs/zh/msg_docs/EscReport.md | 61 +- docs/zh/msg_docs/EscStatus.md | 40 +- docs/zh/msg_docs/EstimatorAidSource1d.md | 35 +- docs/zh/msg_docs/EstimatorAidSource2d.md | 35 +- docs/zh/msg_docs/EstimatorAidSource3d.md | 35 +- docs/zh/msg_docs/EstimatorBias.md | 29 +- docs/zh/msg_docs/EstimatorBias3d.md | 29 +- docs/zh/msg_docs/EstimatorEventFlags.md | 41 +- docs/zh/msg_docs/EstimatorGpsStatus.md | 38 +- docs/zh/msg_docs/EstimatorInnovations.md | 43 +- docs/zh/msg_docs/EstimatorSelectorStatus.md | 37 +- docs/zh/msg_docs/EstimatorSensorBias.md | 44 +- docs/zh/msg_docs/EstimatorStates.md | 26 +- docs/zh/msg_docs/EstimatorStatus.md | 108 +- docs/zh/msg_docs/EstimatorStatusFlags.md | 98 +- docs/zh/msg_docs/Event.md | 35 +- docs/zh/msg_docs/EventV0.md | 36 +- docs/zh/msg_docs/FailsafeFlags.md | 63 +- docs/zh/msg_docs/FailureDetectorStatus.md | 33 +- docs/zh/msg_docs/FigureEightStatus.md | 29 +- .../FixedWingLateralGuidanceStatus.md | 33 +- docs/zh/msg_docs/FixedWingLateralSetpoint.md | 35 +- docs/zh/msg_docs/FixedWingLateralStatus.md | 27 +- .../msg_docs/FixedWingLongitudinalSetpoint.md | 38 +- docs/zh/msg_docs/FixedWingRunwayControl.md | 45 +- docs/zh/msg_docs/FlightPhaseEstimation.md | 32 +- docs/zh/msg_docs/FollowTarget.md | 29 +- docs/zh/msg_docs/FollowTargetEstimator.md | 33 +- docs/zh/msg_docs/FollowTargetStatus.md | 29 +- docs/zh/msg_docs/FuelTankStatus.md | 38 +- docs/zh/msg_docs/GainCompression.md | 25 +- docs/zh/msg_docs/GeneratorStatus.md | 61 +- docs/zh/msg_docs/GeofenceResult.md | 37 +- docs/zh/msg_docs/GeofenceStatus.md | 31 +- docs/zh/msg_docs/GimbalControls.md | 34 +- .../zh/msg_docs/GimbalDeviceAttitudeStatus.md | 46 +- docs/zh/msg_docs/GimbalDeviceInformation.md | 54 +- docs/zh/msg_docs/GimbalDeviceSetAttitude.md | 39 +- docs/zh/msg_docs/GimbalManagerInformation.md | 49 +- docs/zh/msg_docs/GimbalManagerSetAttitude.md | 43 +- .../msg_docs/GimbalManagerSetManualControl.md | 42 +- docs/zh/msg_docs/GimbalManagerStatus.md | 28 +- docs/zh/msg_docs/GotoSetpoint.md | 44 +- docs/zh/msg_docs/GpioConfig.md | 44 +- docs/zh/msg_docs/GpioIn.md | 32 +- docs/zh/msg_docs/GpioOut.md | 27 +- docs/zh/msg_docs/GpioRequest.md | 25 +- docs/zh/msg_docs/GpsDump.md | 34 +- docs/zh/msg_docs/GpsInjectData.md | 33 +- docs/zh/msg_docs/Gripper.md | 32 +- docs/zh/msg_docs/HealthReport.md | 29 +- docs/zh/msg_docs/HeaterStatus.md | 40 +- docs/zh/msg_docs/HomePosition.md | 42 +- docs/zh/msg_docs/HomePositionV0.md | 40 +- docs/zh/msg_docs/HoverThrustEstimate.md | 30 +- docs/zh/msg_docs/InputRc.md | 59 +- .../InternalCombustionEngineControl.md | 27 +- .../InternalCombustionEngineStatus.md | 77 +- docs/zh/msg_docs/IridiumsbdStatus.md | 36 +- docs/zh/msg_docs/IrlockReport.md | 29 +- docs/zh/msg_docs/LandingGear.md | 31 +- docs/zh/msg_docs/LandingGearWheel.md | 23 +- docs/zh/msg_docs/LandingTargetInnovations.md | 26 +- docs/zh/msg_docs/LandingTargetPose.md | 40 +- .../msg_docs/LateralControlConfiguration.md | 32 +- docs/zh/msg_docs/LaunchDetectionStatus.md | 33 +- docs/zh/msg_docs/LedControl.md | 54 +- docs/zh/msg_docs/LogMessage.md | 32 +- docs/zh/msg_docs/LoggerStatus.md | 42 +- .../LongitudinalControlConfiguration.md | 41 +- docs/zh/msg_docs/MagWorkerData.md | 37 +- docs/zh/msg_docs/MagnetometerBiasEstimate.md | 27 +- docs/zh/msg_docs/ManualControlSetpoint.md | 52 +- docs/zh/msg_docs/ManualControlSwitches.md | 54 +- docs/zh/msg_docs/MavlinkLog.md | 30 +- docs/zh/msg_docs/MavlinkTunnel.md | 47 +- docs/zh/msg_docs/MessageFormatRequest.md | 30 +- docs/zh/msg_docs/MessageFormatResponse.md | 26 +- docs/zh/msg_docs/Mission.md | 32 +- docs/zh/msg_docs/MissionResult.md | 36 +- docs/zh/msg_docs/ModeCompleted.md | 37 +- docs/zh/msg_docs/MountOrientation.md | 23 +- docs/zh/msg_docs/NavigatorMissionItem.md | 38 +- docs/zh/msg_docs/NavigatorStatus.md | 34 +- docs/zh/msg_docs/NeuralControl.md | 28 +- .../zh/msg_docs/NormalizedUnsignedSetpoint.md | 23 +- docs/zh/msg_docs/ObstacleDistance.md | 41 +- docs/zh/msg_docs/OffboardControlMode.md | 31 +- docs/zh/msg_docs/OnboardComputerStatus.md | 43 +- docs/zh/msg_docs/OpenDroneIdArmStatus.md | 24 +- docs/zh/msg_docs/OpenDroneIdOperatorId.md | 25 +- docs/zh/msg_docs/OpenDroneIdSelfId.md | 25 +- docs/zh/msg_docs/OpenDroneIdSystem.md | 34 +- docs/zh/msg_docs/OrbTest.md | 23 +- docs/zh/msg_docs/OrbTestLarge.md | 24 +- docs/zh/msg_docs/OrbTestMedium.md | 30 +- docs/zh/msg_docs/OrbitStatus.md | 41 +- docs/zh/msg_docs/ParameterResetRequest.md | 32 +- docs/zh/msg_docs/ParameterSetUsedRequest.md | 31 +- docs/zh/msg_docs/ParameterSetValueRequest.md | 33 +- docs/zh/msg_docs/ParameterSetValueResponse.md | 32 +- docs/zh/msg_docs/ParameterUpdate.md | 32 +- docs/zh/msg_docs/Ping.md | 28 +- .../PositionControllerLandingStatus.md | 35 +- docs/zh/msg_docs/PositionControllerStatus.md | 30 +- docs/zh/msg_docs/PositionSetpoint.md | 56 +- docs/zh/msg_docs/PositionSetpointTriplet.md | 28 +- docs/zh/msg_docs/PowerButtonState.md | 34 +- docs/zh/msg_docs/PowerMonitor.md | 35 +- docs/zh/msg_docs/PpsCapture.md | 24 +- docs/zh/msg_docs/PurePursuitStatus.md | 29 +- docs/zh/msg_docs/PwmInput.md | 25 +- docs/zh/msg_docs/Px4ioStatus.md | 53 +- docs/zh/msg_docs/QshellReq.md | 31 +- docs/zh/msg_docs/QshellRetval.md | 24 +- docs/zh/msg_docs/RadioStatus.md | 30 +- docs/zh/msg_docs/RaptorInput.md | 59 + docs/zh/msg_docs/RaptorStatus.md | 109 ++ docs/zh/msg_docs/RateCtrlStatus.md | 25 +- docs/zh/msg_docs/RcChannels.md | 65 +- docs/zh/msg_docs/RcParameterMap.md | 36 +- docs/zh/msg_docs/RegisterExtComponentReply.md | 37 +- .../msg_docs/RegisterExtComponentReplyV0.md | 36 +- .../msg_docs/RegisterExtComponentRequest.md | 42 +- .../msg_docs/RegisterExtComponentRequestV0.md | 41 +- docs/zh/msg_docs/RoverAttitudeSetpoint.md | 25 +- docs/zh/msg_docs/RoverAttitudeStatus.md | 26 +- docs/zh/msg_docs/RoverPositionSetpoint.md | 29 +- docs/zh/msg_docs/RoverRateSetpoint.md | 25 +- docs/zh/msg_docs/RoverRateStatus.md | 27 +- docs/zh/msg_docs/RoverSpeedSetpoint.md | 26 +- docs/zh/msg_docs/RoverSpeedStatus.md | 30 +- docs/zh/msg_docs/RoverSteeringSetpoint.md | 25 +- docs/zh/msg_docs/RoverThrottleSetpoint.md | 26 +- docs/zh/msg_docs/Rpm.md | 24 +- docs/zh/msg_docs/RtlStatus.md | 37 +- docs/zh/msg_docs/RtlTimeEstimate.md | 25 +- docs/zh/msg_docs/SatelliteInfo.md | 35 +- docs/zh/msg_docs/SensorAccel.md | 37 +- docs/zh/msg_docs/SensorAccelFifo.md | 30 +- docs/zh/msg_docs/SensorAirflow.md | 26 +- docs/zh/msg_docs/SensorBaro.md | 35 +- docs/zh/msg_docs/SensorCombined.md | 44 +- docs/zh/msg_docs/SensorCorrection.md | 48 +- docs/zh/msg_docs/SensorGnssRelative.md | 42 +- docs/zh/msg_docs/SensorGnssStatus.md | 30 +- docs/zh/msg_docs/SensorGps.md | 97 +- docs/zh/msg_docs/SensorGyro.md | 37 +- docs/zh/msg_docs/SensorGyroFft.md | 32 +- docs/zh/msg_docs/SensorGyroFifo.md | 36 +- docs/zh/msg_docs/SensorHygrometer.md | 26 +- docs/zh/msg_docs/SensorMag.md | 35 +- docs/zh/msg_docs/SensorOpticalFlow.md | 45 +- docs/zh/msg_docs/SensorPreflightMag.md | 26 +- docs/zh/msg_docs/SensorSelection.md | 27 +- docs/zh/msg_docs/SensorTemp.md | 24 +- docs/zh/msg_docs/SensorUwb.md | 45 +- docs/zh/msg_docs/SensorsStatus.md | 29 +- docs/zh/msg_docs/SensorsStatusImu.md | 32 +- docs/zh/msg_docs/SystemPower.md | 48 +- docs/zh/msg_docs/TakeoffStatus.md | 37 +- docs/zh/msg_docs/TaskStackInfo.md | 32 +- docs/zh/msg_docs/TecsStatus.md | 46 +- docs/zh/msg_docs/TelemetryStatus.md | 70 +- docs/zh/msg_docs/TiltrotorExtraControls.md | 24 +- docs/zh/msg_docs/TimesyncStatus.md | 35 +- docs/zh/msg_docs/TrajectorySetpoint.md | 39 +- docs/zh/msg_docs/TrajectorySetpoint6dof.md | 31 +- docs/zh/msg_docs/TransponderReport.md | 70 +- docs/zh/msg_docs/TuneControl.md | 61 +- docs/zh/msg_docs/UavcanParameterRequest.md | 44 +- docs/zh/msg_docs/UavcanParameterValue.md | 31 +- docs/zh/msg_docs/UlogStream.md | 37 +- docs/zh/msg_docs/UlogStreamAck.md | 33 +- docs/zh/msg_docs/UnregisterExtComponent.md | 32 +- docs/zh/msg_docs/VehicleAcceleration.md | 25 +- docs/zh/msg_docs/VehicleAirData.md | 32 +- .../VehicleAngularAccelerationSetpoint.md | 25 +- docs/zh/msg_docs/VehicleAngularVelocity.md | 31 +- docs/zh/msg_docs/VehicleAttitude.md | 35 +- docs/zh/msg_docs/VehicleAttitudeSetpoint.md | 31 +- docs/zh/msg_docs/VehicleAttitudeSetpointV0.md | 33 +- docs/zh/msg_docs/VehicleCommand.md | 1582 ++++++++++++++++- docs/zh/msg_docs/VehicleCommandAck.md | 55 +- docs/zh/msg_docs/VehicleConstraints.md | 39 +- docs/zh/msg_docs/VehicleControlMode.md | 43 +- docs/zh/msg_docs/VehicleGlobalPosition.md | 51 +- docs/zh/msg_docs/VehicleImu.md | 41 +- docs/zh/msg_docs/VehicleImuStatus.md | 41 +- docs/zh/msg_docs/VehicleLandDetected.md | 40 +- docs/zh/msg_docs/VehicleLocalPosition.md | 86 +- .../msg_docs/VehicleLocalPositionSetpoint.md | 36 +- docs/zh/msg_docs/VehicleLocalPositionV0.md | 85 +- docs/zh/msg_docs/VehicleMagnetometer.md | 36 +- docs/zh/msg_docs/VehicleOdometry.md | 61 +- docs/zh/msg_docs/VehicleOpticalFlow.md | 32 +- docs/zh/msg_docs/VehicleOpticalFlowVel.md | 32 +- docs/zh/msg_docs/VehicleRatesSetpoint.md | 33 +- docs/zh/msg_docs/VehicleRoi.md | 42 +- docs/zh/msg_docs/VehicleStatus.md | 130 +- docs/zh/msg_docs/VehicleStatusV0.md | 137 +- docs/zh/msg_docs/VehicleThrustSetpoint.md | 35 +- docs/zh/msg_docs/VehicleTorqueSetpoint.md | 25 +- docs/zh/msg_docs/VelocityLimits.md | 38 +- docs/zh/msg_docs/VtolVehicleStatus.md | 37 +- docs/zh/msg_docs/Vtx.md | 84 + docs/zh/msg_docs/WheelEncoders.md | 25 +- docs/zh/msg_docs/Wind.md | 39 +- docs/zh/msg_docs/YawEstimatorStatus.md | 30 +- docs/zh/msg_docs/index.md | 260 ++- docs/zh/peripherals/remote_id.md | 1 - .../power_module/ark_12s_pab_power_module.md | 4 - docs/zh/releases/1.13.md | 1 - docs/zh/releases/index.md | 6 +- docs/zh/releases/release_process.md | 301 ++++ docs/zh/ros/mavros_custom_messages.md | 19 +- docs/zh/ros/mavros_installation.md | 4 +- docs/zh/ros2/px4_ros2_control_interface.md | 2 +- docs/zh/sensor/microstrain.md | 20 - docs/zh/sensor/optical_flow.md | 2 +- docs/zh/sensor/sbgecom.md | 4 +- docs/zh/sensor/sfxx_lidar.md | 2 +- docs/zh/sensor/vectornav.md | 1 - docs/zh/sensor_bus/i2c_development.md | 2 +- docs/zh/sim_gazebo_gz/index.md | 5 - .../community_supported_simulators.md | 14 +- docs/zh/smart_batteries/rotoye_batmon.md | 2 +- docs/zh/test_and_ci/continous_integration.md | 193 +- docs/zh/test_and_ci/docker.md | 56 +- .../uart/user_configurable_serial_driver.md | 1 - 314 files changed, 11960 insertions(+), 1374 deletions(-) create mode 100644 docs/zh/flight_controller/gearup_airbrainh743.md create mode 100644 docs/zh/msg_docs/RaptorInput.md create mode 100644 docs/zh/msg_docs/RaptorStatus.md create mode 100644 docs/zh/msg_docs/Vtx.md create mode 100644 docs/zh/releases/release_process.md diff --git a/docs/zh/SUMMARY.md b/docs/zh/SUMMARY.md index ad7cdcd297..1751699ff0 100644 --- a/docs/zh/SUMMARY.md +++ b/docs/zh/SUMMARY.md @@ -179,6 +179,7 @@ - [CubePilot Cube Orange (CubePilot)](flight_controller/cubepilot_cube_orange.md) - [CubePilot Cube Yellow (CubePilot)](flight_controller/cubepilot_cube_yellow.md) - [Cube Wiring Quickstart](assembly/quick_start_cube.md) + - [Gear Up AirBrainH743](flight_controller/gearup_airbrainh743.md) - [Holybro Kakute H7v2](flight_controller/kakuteh7v2.md) - [Holybro Kakute H7mini](flight_controller/kakuteh7mini.md) - [Holybro Kakute H7](flight_controller/kakuteh7.md) @@ -255,7 +256,7 @@ - [北醒 TFmini 激光雷达](sensor/tfmini.md) - [LeddarOne 激光雷达](sensor/leddar_one.md) - [Lidar-Lite](sensor/lidar_lite.md) - - [Lightware Lidars (SF/LW)](sensor/sfxx_lidar.md) + - [Lightware Lidars (SF/LW/GRF)](sensor/sfxx_lidar.md) - [Lightware SF45 Rotary Lidar](sensor/sf45_rotating_lidar.md) - [TeraRanger](sensor/teraranger.md) - [✘ Lanbao PSK-CM8JL65-CC5](sensor/cm8jl65_ir_distance_sensor.md) @@ -932,6 +933,7 @@ - [许可证](contribute/licenses.md) - [版本发布](releases/index.md) + - [Release Process](releases/release_process.md) - [main (alpha)](releases/main.md) - [1.17 (alpha)](releases/1.17.md) - [1.16 (stable)](releases/1.16.md) diff --git a/docs/zh/companion_computer/ark_jetson_pab_carrier.md b/docs/zh/companion_computer/ark_jetson_pab_carrier.md index bbfa91cc1e..756f20b2a1 100644 --- a/docs/zh/companion_computer/ark_jetson_pab_carrier.md +++ b/docs/zh/companion_computer/ark_jetson_pab_carrier.md @@ -12,19 +12,16 @@ The [ARK Jetson Pixhawk Autopilot Bus (PAB) Carrier](https://arkelectron.gitbook ## 产品规格 - **Power Requirements** - - 5V - 4A minimum (dependent on usage and peripherals) - **Additional Features** - - Pixhawk Autopilot Bus (PAB) Form Factor ([PAB Standard](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-010%20Pixhawk%20Autopilot%20Bus%20Standard.pdf)) - MicroSD Slot - USA-built, NDAA compliant - Integrated 1W heater for sensor stability in extreme conditions - **Physical Details** - - Weight: - Without Jetson and Flight Controller – 80g - With Jetson, no heatsink or Flight Controller – 108g diff --git a/docs/zh/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md b/docs/zh/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md index 91bceef69c..e3b90f22b0 100644 --- a/docs/zh/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md +++ b/docs/zh/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md @@ -170,7 +170,6 @@ To enable this MAVLink instance on the FC: ![Image of baseboard showing FC USB-C connector](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/baseboard_fc_usb_c.jpg) 2. [Set the parameters](../advanced_config/parameters.md): - - `MAV_1_CONFIG` = `102` - `MAV_1_MODE = 2` - `SER_TEL2_BAUD` = `921600` @@ -184,7 +183,6 @@ On the RPi side: 1. Connect to the RPi (using WiFi, a router, or a WiFi Dongle). 2. Enable the RPi serial port by running `RPi-config` - - Go to `3 Interface Options`, then `I6 Serial Port`. Then choose: - `login shell accessible over serial → No` diff --git a/docs/zh/companion_computer/pixhawk_rpi.md b/docs/zh/companion_computer/pixhawk_rpi.md index 73406d2a8d..cefb5a2bcc 100644 --- a/docs/zh/companion_computer/pixhawk_rpi.md +++ b/docs/zh/companion_computer/pixhawk_rpi.md @@ -145,7 +145,6 @@ Enter the following commands (in sequence) a terminal to configure Ubuntu for RP ``` 3. Go to the **Interface Option** and then click **Serial Port**. - - Select **No** to disable serial login shell. - Select **Yes** to enable the serial interface. - Click **Finish** and restart the RPi. @@ -164,7 +163,6 @@ Enter the following commands (in sequence) a terminal to configure Ubuntu for RP ``` 6. Then save the file and restart the RPi. - - In `nano` you can save the file using the following sequence of keyboard shortcuts: **ctrl+x**, **ctrl+y**, **Enter**. 7. Check that the serial port is available. diff --git a/docs/zh/computer_vision/collision_prevention.md b/docs/zh/computer_vision/collision_prevention.md index 53c5572090..df2266205d 100644 --- a/docs/zh/computer_vision/collision_prevention.md +++ b/docs/zh/computer_vision/collision_prevention.md @@ -214,7 +214,6 @@ The Lua script works by extracting the `obstacle_distance_fused` data at each ti 3. Open PlotJuggler and navigate to the **Tools > Reactive Script Editor** section. In the **Script Editor** tab, add following scripts in the appropriate sections: - - **Global code, executed once:** ```lua diff --git a/docs/zh/concept/flight_tasks.md b/docs/zh/concept/flight_tasks.md index a2aeecea79..a2b0d71994 100644 --- a/docs/zh/concept/flight_tasks.md +++ b/docs/zh/concept/flight_tasks.md @@ -33,7 +33,6 @@ The instructions below might be used to create a task named _MyTask_: - FlightTaskMyTask.cpp 3. Update **CMakeLists.txt** for the new task - - Copy the contents of the **CMakeLists.txt** for another task - e.g. [Orbit/CMakeLists.txt](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/flight_mode_manager/tasks/Orbit/CMakeLists.txt) - Update the copyright to the current year diff --git a/docs/zh/config/_autotune.md b/docs/zh/config/_autotune.md index c9e2b5bfee..8af3df65be 100644 --- a/docs/zh/config/_autotune.md +++ b/docs/zh/config/_autotune.md @@ -84,16 +84,9 @@ The test steps are: If an [Enable/Disable Autotune Switch](#enable-disable-autotune-switch) is configured you can just toggle the switch to the "enabled" position.

- 1. In QGroundControl, open the menu **Vehicle setup > PID Tuning**: - ![Tuning Setup > Autotune Enabled](../../assets/qgc/setup/autotune/autotune.png) - - 2. Select either the _Rate Controller_ or _Attitude Controller_ tabs. - - 3. Ensure that the **Autotune enabled** button is enabled (this will display the **Autotune** button and remove the manual tuning selectors). - - 4. Read the warning popup and click on **OK** to start tuning. + ![Tuning Setup > Autotune Enabled](../../assets/qgc/setup/autotune/autotune.png) 2. Select either the _Rate Controller_ or _Attitude Controller_ tabs. 3. Ensure that the **Autotune enabled** button is enabled (this will display the **Autotune** button and remove the manual tuning selectors). 4. Read the warning popup and click on **OK** to start tuning.
diff --git a/docs/zh/config/level_horizon_calibration.md b/docs/zh/config/level_horizon_calibration.md index f209ad44e0..28e8b92e78 100644 --- a/docs/zh/config/level_horizon_calibration.md +++ b/docs/zh/config/level_horizon_calibration.md @@ -22,7 +22,6 @@ To level the horizon: ::: 4. Place the vehicle in its level flight orientation on a level surface: - - For planes this is the position during level flight (planes tend to have their wings slightly pitched up!) - For copters this is the hover position. diff --git a/docs/zh/config_heli/index.md b/docs/zh/config_heli/index.md index f2c5ac697e..c432e95203 100644 --- a/docs/zh/config_heli/index.md +++ b/docs/zh/config_heli/index.md @@ -77,7 +77,6 @@ To setup and configure a helicopter: 3. Remove the rotor blades and propellers 4. Assign motors and servos to outputs and test (also in [Actuator configuration](../config/actuators.md)): - 1. Assign the [motors and servos to the outputs](../config/actuators.md#actuator-outputs). 2. Power the vehicle with a battery and use the [actuator testing sliders](../config/actuators.md#actuator-testing) to validate correct servo and motor assignment and direction. diff --git a/docs/zh/config_mc/pid_tuning_guide_multicopter_basic.md b/docs/zh/config_mc/pid_tuning_guide_multicopter_basic.md index 2a7602bae5..456c34a6b0 100644 --- a/docs/zh/config_mc/pid_tuning_guide_multicopter_basic.md +++ b/docs/zh/config_mc/pid_tuning_guide_multicopter_basic.md @@ -140,7 +140,6 @@ The tuning procedure is: 13. Repeat the tuning process for the attitude controller on all the axes. 14. Repeat the tuning process for the velocity and positions controllers (on all the axes). - - Use Position mode when tuning these controllers - Select the **Simple position control** option in the _Position control mode ..._ selector (this allows direct control for the generation of step inputs) diff --git a/docs/zh/config_rover/index.md b/docs/zh/config_rover/index.md index 212839bc12..b6b955f786 100644 --- a/docs/zh/config_rover/index.md +++ b/docs/zh/config_rover/index.md @@ -18,28 +18,37 @@ A drive mode will only work properly if all the configuration for the preceding ## Flashing the Rover Build -Rovers use a custom build that must be flashed onto your flight controller instead of the default PX4 build: +Rover is built as a [firmware variant](../dev_setup/building_px4.md#px4-make-build-targets), and must be installed as "Custom Firmware" in QGC (other vehicles are present in the default variant). -1. First build the rover firmware for your flight controller from the `main` branch (there is no release build, so you can't just select this build from QGroundControl). +The release versions of Rover firmware for different boards are attached to the associated GitHub release tag. +For example, you can find `px4_fmu-v5x_rover.px4` on [PX4-Autopilot/releases/tag/v1.16.1](https://github.com/PX4/PX4-Autopilot/releases/tag/v1.16.1). +For the `main` branch version of Rover you will need to [build the firmware](#building-rover). - To build for rover with the `make` command, replace the `_default` suffix with `_rover`. - For example, to build rover for px4_fmu-v6x boards, you would use the command: +Load the firmware onto your flight controller as "Custom Firmware" (see [Loading Firmware > Installing PX4 Main, Beta or Custom Firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware)). - ```sh - make px4_fmu-v6x_rover - ``` +## Building Rover - ::: info - You can also enable the modules in default builds by adding these lines to your [board configuration](../hardware/porting_guide_config.md) (e.g. for fmu-v6x you might add them to [`main/boards/px4/fmu-v6x/default.px4board`](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board)): +Rover is built as the `rover` [firmware variant](../dev_setup/building_px4.md#px4-make-build-targets). +What this means is that when building the firmware with the `make` command, you replace the `_default` suffix in the configuration target with `_rover`. - ```sh - CONFIG_MODULES_ROVER_ACKERMANN=y - CONFIG_MODULES_ROVER_DIFFERENTIAL=y - CONFIG_MODULES_ROVER_MECANUM=y - ``` +For example, to build rover for `px4_fmu-v6x` boards, you would use the following command: - Note that adding the rover modules may lead to flash overflow, in which case you will need to disable modules that you do not plan to use (such as those related to multicopter or fixed wing). +```sh +make px4_fmu-v6x_rover +``` +Note that configuration targets are constructed with the format "VENDOR_MODEL_VARIANT". + +The built firmware can be installed as custom firmware, as shown above in in [Flashing the Rover Build](#flashing-the-rover-build). + +:::info +You can also enable the modules in default builds by adding these lines to your [board configuration](../hardware/porting_guide_config.md) (e.g. for fmu-v6x you might add them to [`main/boards/px4/fmu-v6x/default.px4board`](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board)): + +```sh +CONFIG_MODULES_ROVER_ACKERMANN=y +CONFIG_MODULES_ROVER_DIFFERENTIAL=y +CONFIG_MODULES_ROVER_MECANUM=y +``` + +Adding the rover modules may lead to flash overflow, in which case you will need to disable modules that you do not plan to use (such as those related to multicopter or fixed wing). ::: - -2. Load the **custom firmware** that you just built onto your flight controller (see [Loading Firmware > Installing PX4 Main, Beta or Custom Firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware)). diff --git a/docs/zh/dev_airframes/adding_a_new_frame.md b/docs/zh/dev_airframes/adding_a_new_frame.md index 6bc2662d6d..407c541df7 100644 --- a/docs/zh/dev_airframes/adding_a_new_frame.md +++ b/docs/zh/dev_airframes/adding_a_new_frame.md @@ -307,7 +307,6 @@ If the airframe is for a **new group** you additionally need to: ``` 3. Update _QGroundControl_: - - Add the svg image for the group into: [src/AutopilotPlugins/Common/images](https://github.com/mavlink/qgroundcontrol/tree/master/src/AutoPilotPlugins/Common/Images) - Add reference to the svg image into [qgcimages.qrc](https://github.com/mavlink/qgroundcontrol/blob/master/qgcimages.qrc), following the pattern below: diff --git a/docs/zh/dev_setup/building_px4.md b/docs/zh/dev_setup/building_px4.md index ba27d4940a..9ca4157ec9 100644 --- a/docs/zh/dev_setup/building_px4.md +++ b/docs/zh/dev_setup/building_px4.md @@ -39,16 +39,6 @@ git clone https://github.com/PX4/PX4-Autopilot.git --recursive make px4_sitl gz_x500 ``` -:::details -如果您安装的是 Gazebo Classic -使用以下命令启动 [Gazebo SITL](../sim_gazebo_classic/index.md): - -```sh -make px4_sitl gazebo-classic -``` - -::: - 这将显示 PX4 控制台: ![PX4 控制台](../../assets/toolchain/console_gazebo.png) @@ -89,6 +79,16 @@ cd PX4-Autopilot make px4_fmu-v5_default ``` +:::tip +You can also build using the [px4-dev Docker container](../test_and_ci/docker.md) without installing the toolchain locally. +From the PX4-Autopilot directory: + +```sh +./Tools/docker_run.sh 'make px4_fmu-v5_default' +``` + +::: + 运行成功后将输出类似结果: ```sh @@ -145,7 +145,8 @@ make px4_fmu-v5_default - [Pixhawk 1 (FMUv2)](../flight_controller/pixhawk.md): `make px4_fmu-v2_default` :::warning - 您**必须**使用受支持的GCC版本来构建此开发板(例如与[CI/docker](../test_and_ci/docker.md)中使用的相同版本),否则需从构建中移除相关模块。 使用不受支持的GCC进行构建可能会失败,因为PX4接近板载1MB闪存的容量限制。 + You **must** use a supported version of GCC to build this board (e.g. the `gcc-arm-none-eabi` package from the current Ubuntu LTS, which is the same toolchain used by CI) or remove modules from the build. + 使用不受支持的GCC进行构建可能会失败,因为PX4接近板载1MB闪存的容量限制。 ::: @@ -211,7 +212,7 @@ make distclean 这对于`make px4_fmu-v2_default` 构建是常见的,它的 flash 大小被限制在 1MB。 如果您正在构建_vanilla_master 分支,最可能的原因是使用不支持的 GCC版本。 -在这种情况下,安装[开发者工具链](../dev_setup/dev_env.md)说明中指定的版本。 +In this case, install the `gcc-arm-none-eabi` package from the current Ubuntu LTS as described in the [Developer Toolchain](../dev_setup/dev_env.md) instructions. 如果在构建自己的分支,您可能已将固件大小增加到超过1MB的限制。 在这种情况下,您需要从构建中删除您不需要的任何驱动程序/模块。 @@ -224,7 +225,7 @@ PX4构建系统打开大量文件,因此您可能会超出此数量。 构建工具链为很多文件报 `Too many open files`,如下所示: ```sh -/usr/local/Cellar/gcc-arm-none-eabi/20171218/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/ld: cannot find NuttX/nuttx/fs/libfs.a: Too many open files +arm-none-eabi-ld: cannot find NuttX/nuttx/fs/libfs.a: Too many open files ``` 解决方案是增加允许打开文件的最大数量(例如增加到300)。 @@ -247,34 +248,9 @@ xcode-select --install sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/ ``` -### Ubuntu 18.04:涉及arm_none_eabi_gcc的编译错误 - -与 arm_none_eabi_gcc 相关的构建问题可能是由于损坏的g++工具链安装引起的。 -您可以通过检查缺少的依赖项来验证这一点: - -```sh -arm-none-eabi-gcc --version -arm-none-eabi-g++ --version -arm-none-eabi-gdb --version -arm-none-eabi-size --version -``` - -缺少依赖项的 bash 输出示例: - -```sh -arm-none-eabi-gdb --version -arm-none-eabi-gdb: command not found -``` - -这个问题可以通过删除和[重新安装编译器](https://askubuntu.com/questions/1243252/how-to-install-arm-none-eabi-gdb-on-ubuntu-20-04-lts-focal-fossa)来解决。 - -### Ubuntu 18.04:Visual Studio Code 无法监视此大型工作区中的文件更改 - -请参阅[Visual Studio 代码 IDE (VSCode) > 疑难解答](../dev_setup/vscode.md#troubleshooting)。 - ### 导入Python软件包失败 -在运行 `make px4_sitl jmavsim` 命令时,“导入失败”错误表示某些Python 软件包未安装(如预期般安装)。 +"Failed to import" errors when running the `make px4_sitl gz_x500` command indicates that some Python packages are not installed (where expected). ```sh Failed to import jinja2: No module named 'jinja2' @@ -282,12 +258,12 @@ Failed to import jinja2: No module named 'jinja2' pip3 install --user jinja2 ``` -如果您已经安装了这些依赖关系,这可能是因为计算机上存在多个 Python 版本(例如 Python 2.7.16 和 Python 3.8.3),并且该模块不存在于构建工具链使用的版本中。 +If you have already installed these dependencies this may be because there is more than one Python version on the computer (e.g. Python 2.7.16 and Python 3.8.3), and the module is not present in the version used by the build toolchain. -您应该能够按照所示明确安装依赖项来解决此问题。 +You should be able to fix this by installing the dependencies from the repository's requirements file: ```sh -pip3 install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging +pip3 install --user -r Tools/setup/requirements.txt ``` ## PX4 创建生成目标 diff --git a/docs/zh/dev_setup/config_initial.md b/docs/zh/dev_setup/config_initial.md index dd6cdf1e6a..6c2ae642e2 100644 --- a/docs/zh/dev_setup/config_initial.md +++ b/docs/zh/dev_setup/config_initial.md @@ -23,7 +23,7 @@ A Taranis RC and a mid-range Android tablet make a very inexpensive field kit. - Lenovo Thinkpad with i5-core running Windows 11 - MacBook Pro (early 2015 and later) with macOS 10.15 or later - - Lenovo Thinkpad i5 with Ubuntu Linux 20.04 or later + - Lenovo Thinkpad i5 with Ubuntu Linux 22.04 or later - **Ground control station** (computer or tablet): - iPad (may require Wifi telemetry adapter) diff --git a/docs/zh/dev_setup/dev_env.md b/docs/zh/dev_setup/dev_env.md index b53b801540..b614154333 100644 --- a/docs/zh/dev_setup/dev_env.md +++ b/docs/zh/dev_setup/dev_env.md @@ -2,7 +2,7 @@ The _supported platforms_ for PX4 development are: -- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended +- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) - [Windows (10/11)](../dev_setup/dev_env_windows_wsl.md) — via WSL2 - [macOS](../dev_setup/dev_env_mac.md) @@ -15,9 +15,9 @@ The _supported platforms_ for PX4 development are: | **NuttX based hardware:** [Pixhawk Series](../flight_controller/pixhawk_series.md), [Crazyflie](../complete_vehicles_mc/crazyflie2.md) | ✓ | ✓ | ✓ | | **Linux-based hardware:** [Raspberry Pi 2/3](../flight_controller/raspberry_pi_navio2.md) | ✓ | | | | **Simulation:** [Gazebo SITL](../sim_gazebo_gz/index.md) | ✓ | ✓ | ✓ | -| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | ✓ | ✓ | ✓ | -| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | ✓ | | ✓ | | **Simulation:** ROS 2 with Gazebo | ✓ | | ✓ | +| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | | ✓ | ✓ | +| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | | | ✓ | Experienced Docker users can also build with the containers used by our continuous integration system: [Docker Containers](../test_and_ci/docker.md) diff --git a/docs/zh/dev_setup/dev_env_linux_centos.md b/docs/zh/dev_setup/dev_env_linux_centos.md index 3ad1b5c526..35be404a69 100644 --- a/docs/zh/dev_setup/dev_env_linux_centos.md +++ b/docs/zh/dev_setup/dev_env_linux_centos.md @@ -39,8 +39,9 @@ You may want to also install `python-pip` and `screen`. Execute the script below to install GCC 7-2017-q4: :::warning -This version of GCC is out of date. -At time of writing the current version on Ubuntu is `9-2020-q2-update` (see [focal nuttx docker file](https://github.com/PX4/PX4-containers/blob/master/docker/Dockerfile_nuttx-focal#L28)) +This version of GCC is very outdated. +PX4 now uses the `gcc-arm-none-eabi` package from the current Ubuntu LTS (GCC 13.2.1 on Ubuntu 24.04). +This CentOS guide is community-maintained and may not produce working builds. ::: ```sh diff --git a/docs/zh/dev_setup/dev_env_linux_ubuntu.md b/docs/zh/dev_setup/dev_env_linux_ubuntu.md index 85e5d3670e..15ef977bd8 100644 --- a/docs/zh/dev_setup/dev_env_linux_ubuntu.md +++ b/docs/zh/dev_setup/dev_env_linux_ubuntu.md @@ -4,21 +4,14 @@ The following instructions use a bash script to set up the PX4 development envir The environment includes: -- [Gazebo Simulator](../sim_gazebo_gz/index.md) ("Harmonic") -- [Build toolchain for Pixhawk (and other NuttX-based hardware)](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards). - -On Ubuntu 22.04: - -- [Gazebo Classic Simulator](../sim_gazebo_classic/index.md) can be used instead of Gazebo. - Gazebo is nearing feature-parity with Gazebo-Classic on PX4, and will soon replace it for all use cases. +- [Gazebo Simulator](../sim_gazebo_gz/index.md) (Gazebo Harmonic) +- [Build toolchain for Pixhawk (and other NuttX-based hardware)](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards) using the `gcc-arm-none-eabi` compiler from the Ubuntu package manager. The build toolchain for other flight controllers, simulators, and working with ROS are discussed in the [Other Targets](#other-targets) section below. -:::details -Can I use an older version of Ubuntu? -PX4 supports the current and last Ubuntu LTS release where possible. -Older releases are not supported (so you can't raise defects against them), but may still work. -For example, Gazebo Classic setup is included in our standard build instructions for macOS, Ubuntu 18.04 and 20.04, and Windows on WSL2 for the same hosts. +:::info +PX4 targets the **current Ubuntu LTS** (24.04) for CI and release builds, with the **previous LTS** (22.04) also supported. +Older Ubuntu versions are not supported and may not work. ::: ## Simulation and NuttX (Pixhawk) Targets @@ -52,9 +45,7 @@ To install the toolchain: - 在安装过程中确认并通过所有的提示。 - You can use the `--no-nuttx` and `--no-sim-tools` options to omit the NuttX and/or simulation tools. -3. If you need Gazebo Classic (Ubuntu 22.04 only) then you can manually remove Gazebo and install it by following the instructions in [Gazebo Classic > Installation](../sim_gazebo_classic/index.md#installation). - -4. 完成后重新启动计算机。 +3. 完成后重新启动计算机。 :::details Additional notes @@ -63,10 +54,11 @@ These notes are provided "for information only": - This setup is supported by the PX4 Dev Team. The instructions may also work on other Debian Linux based systems. -- You can verify the NuttX installation by confirming the `gcc` version as shown: +- You can verify the NuttX installation by confirming `gcc` is available. + The version depends on your Ubuntu release (e.g. GCC 13.2.1 on Ubuntu 24.04): ```sh - $arm-none-eabi-gcc --version + $ arm-none-eabi-gcc --version arm-none-eabi-gcc (15:13.2.rel1-2) 13.2.1 20231009 Copyright (C) 2023 Free Software Foundation, Inc. diff --git a/docs/zh/dev_setup/dev_env_windows_wsl.md b/docs/zh/dev_setup/dev_env_windows_wsl.md index 769ce4fc46..794ccb41a1 100644 --- a/docs/zh/dev_setup/dev_env_windows_wsl.md +++ b/docs/zh/dev_setup/dev_env_windows_wsl.md @@ -61,20 +61,20 @@ To install WSL2 with Ubuntu on a new installation of Windows 10 or 11: wsl --install ``` - - Ubuntu 20.04 ([Gazebo-Classic Simulation](../sim_gazebo_classic/index.md)) - - ```sh - wsl --install -d Ubuntu-20.04 - ``` - - Ubuntu 22.04 ([Gazebo Simulation](../sim_gazebo_gz/index.md)) ```sh wsl --install -d Ubuntu-22.04 ``` + - Ubuntu 24.04 ([Gazebo Simulation](../sim_gazebo_gz/index.md)) + + ```sh + wsl --install -d Ubuntu-24.04 + ``` + ::: info - You can also install[Ubuntu 20.04](https://www.microsoft.com/store/productId/9MTTCL66CPXJ) and [Ubuntu 22.04](https://www.microsoft.com/store/productId/9PN20MSR04DW) from the store, which allows you to delete the application using the normal Windows Add/Remove settings: + You can also [Ubuntu 24.04](https://www.microsoft.com/store/productId/9nz3klhxdjp5) or [Ubuntu 22.04](https://www.microsoft.com/store/productId/9PN20MSR04DW) from Microsoft Store, which allows you to delete the application using the normal Windows Add/Remove settings. ::: @@ -110,7 +110,7 @@ To open a WSL shell using a command prompt: ``` ```sh - wsl -d Ubuntu-20.04 + wsl -d Ubuntu-24.04 ``` If you only have one version of Ubuntu, you can just use `wsl`. diff --git a/docs/zh/dev_setup/vscode.md b/docs/zh/dev_setup/vscode.md index 27d65694fb..36239558d1 100644 --- a/docs/zh/dev_setup/vscode.md +++ b/docs/zh/dev_setup/vscode.md @@ -61,7 +61,6 @@ You must already have installed the command line [PX4 developer environment](../ To build: 1. Select your build target ("cmake build config"): - - The current _cmake build target_ is shown on the blue _config_ bar at the bottom (if this is already your desired target, skip to next step). ![Select Cmake build target](../../assets/toolchain/vscode/cmake_build_config.jpg) @@ -133,10 +132,10 @@ Once that is done you don't need to do anything else; the toolchain will automat This section includes guidance on setup and build errors. -### Ubuntu 18.04: "Visual Studio Code is unable to watch for file changes in this large workspace" +### "Visual Studio Code is unable to watch for file changes in this large workspace" This error surfaces on startup. -On some systems, there is an upper-limit of 8192 file handles imposed on applications, which means that VSCode might not be able to detect file modifications in `/PX4-Autopilot`. +On some systems, there is an upper-limit on file handles imposed on applications, which means that VSCode might not be able to detect file modifications in `/PX4-Autopilot`. You can increase this limit to avoid the error, at the expense of memory consumption. Follow the [instructions here](https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc). diff --git a/docs/zh/dronecan/holybro_h_rtk_zed_f9p_gps.md b/docs/zh/dronecan/holybro_h_rtk_zed_f9p_gps.md index 9418fab0b8..56d4061e5a 100644 --- a/docs/zh/dronecan/holybro_h_rtk_zed_f9p_gps.md +++ b/docs/zh/dronecan/holybro_h_rtk_zed_f9p_gps.md @@ -100,7 +100,6 @@ In order to use dual ZED-F9P GPS heading in PX4, follow these steps: 3. Components should be visible on the left panel. Click on the first `_Component_` that maps to the ZED-F9P DroneCAN node (below shown as _Component 124_). 4. Click on the _GPS_ subsection and configure the parameters listed below: - - `GPS_TYPE`: Either set to `17` for moving baseline _base_, or set to `18` to be the moving baseline _rover_. One F9P MUST be _rover_, and the other MUST be _base_. - `GPS_AUTO_CONFIG`: set to 1 for both the rover and base diff --git a/docs/zh/esc/ark_4in1_esc.md b/docs/zh/esc/ark_4in1_esc.md index 561e71e969..1706c00a24 100644 --- a/docs/zh/esc/ark_4in1_esc.md +++ b/docs/zh/esc/ark_4in1_esc.md @@ -39,12 +39,10 @@ Order this module from: - 10 Pin JST-SH Debug - Motor & Battery Connectors (with-connector version) - - MR30 Connector Limit Per Motor: 30A Continuous, 40A Burst - Four MR30 Motor Connectors - Dimensions (with connectors) - - Size: 77.00mm x 42.00mm x 9.43mm - Mounting Pattern: 30.5mm - Weight: 24g diff --git a/docs/zh/flight_controller/airlink.md b/docs/zh/flight_controller/airlink.md index 56bd5c87c1..862c2baf8e 100644 --- a/docs/zh/flight_controller/airlink.md +++ b/docs/zh/flight_controller/airlink.md @@ -26,7 +26,6 @@ AIRLink has two computers and integrated LTE Module: ## 产品规格 - **Sensors** - - 3x Accelerometers, 3x Gyroscopes, 3x Magnetometers, 3x Pressure sensorss - GNSS, Rangefinders, Lidars, Optical Flow, Cameras - 3x-redundant IMU @@ -34,7 +33,6 @@ AIRLink has two computers and integrated LTE Module: - Temperature stabilization - **Flight Controller** - - STM32F7, ARM Cortex M7 with FPU, 216 MHz, 2MB Flash, 512 kB RAM - STM32F1, I/O co-processor - Ethernet, 10/100 Mbps @@ -51,7 +49,6 @@ AIRLink has two computers and integrated LTE Module: - Safety switch / LED option - **AI Mission Computer** - - 6-Core CPU: Dual-Core Cortex-A72 + Quad-Core Cortex-A53 - GPU Mali-T864, OpenGL ES1.1/2.0/3.0/3.1 - VPU with 4K VP8/9, 4K 10bits H265/H264 60fps Decoding @@ -65,7 +62,6 @@ AIRLink has two computers and integrated LTE Module: - 2x Video: 4-Lane MIPI CSI (FPV Camera) and 4-Lane MIPI CSI with HMDI Input (Payload Camera) - **LTE/5G Connectivity Module** - - Up to 600 Mbps bandwidth - 5G sub-6 and mmWave, SA and NSA operations - 4G Cat 20, up to 7xCA, 256-QAM DL/UL, 2xCA UL @@ -142,7 +138,6 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production ![Left side](../../assets/flight_controller/airlink/airlink-interfaces-left.jpg) - **Left side interfaces:** - - Power input with voltage & current monitoring - AI Mission Computer micro SD card - Flight Controller micro SD card @@ -170,13 +165,13 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production - **RC Connector - JST GH SM06B-GHS-TB** - | Pin number | Pin name | 方向 | Voltage | 功能 | | | | - | ---------- | ----------------------------- | --- | --------------------- | ----------- | - | --- | ------ | - | 1 | 5V | OUT | +5V | 5V output | | | | - | 2 | PPM_IN | IN | +3.3V | PPM 输入 | | | | - | 3 | RSSI_IN | IN | +3.3V | RSSI 输入 | | | | - | 4 | FAN_OUT | OUT | +5V | Fan output | | | | - | 5 | SBUS_OUT | OUT | +3.3V | SBUS output | 6 | GND | Ground | + \| Pin number | Pin name | Direction | Voltage | Function | + \| ---------- | -------- | --------- | ------- | ----------- | --- | --- | ------ | + \| 1 | 5V | OUT | +5V | 5V output | + \| 2 | PPM_IN | IN | +3.3V | PPM input | + \| 3 | RSSI_IN | IN | +3.3V | RSSI input | + \| 4 | FAN_OUT | OUT | +5V | Fan output | + \| 5 | SBUS_OUT | OUT | +3.3V | SBUS output | 6 | GND | Ground | * **FMU SD card - microSD** @@ -185,7 +180,6 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production ![Right side](../../assets/flight_controller/airlink/airlink-interfaces-right.jpg) - **Right side interfaces:** - - Ethernet port with power output - Telemetry port - Second GPS port @@ -251,7 +245,6 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production ![Front side](../../assets/flight_controller/airlink/airlink-interfaces-front.jpg) - **Front side interfaces:** - - Main GNSS and compass port - Main telemetry port - CSI camera input @@ -309,7 +302,6 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production ![Back side](../../assets/flight_controller/airlink/airlink-interfaces-back.jpg) - **Rear side interfaces:** - - SBUS input - 16 PWM output channels - 2x LTE antenna sockets (MIMO) diff --git a/docs/zh/flight_controller/autopilot_manufacturer_supported.md b/docs/zh/flight_controller/autopilot_manufacturer_supported.md index 10d0093619..1468aa5b55 100644 --- a/docs/zh/flight_controller/autopilot_manufacturer_supported.md +++ b/docs/zh/flight_controller/autopilot_manufacturer_supported.md @@ -25,6 +25,7 @@ The boards in this category are: - [CubePilot Cube Orange+](../flight_controller/cubepilot_cube_orangeplus.md) - [CubePilot Cube Orange](../flight_controller/cubepilot_cube_orange.md) - [CubePilot Cube Yellow](../flight_controller/cubepilot_cube_yellow.md) +- [Gear Up AirBrainH743](../flight_controller/gearup_airbrainh743.md) - [Holybro Kakute H7v2](../flight_controller/kakuteh7v2.md) - [Holybro Kakute H7mini](../flight_controller/kakuteh7mini.md) - [Holybro Kakute H7](../flight_controller/kakuteh7.md) diff --git a/docs/zh/flight_controller/gearup_airbrainh743.md b/docs/zh/flight_controller/gearup_airbrainh743.md new file mode 100644 index 0000000000..381ce520c5 --- /dev/null +++ b/docs/zh/flight_controller/gearup_airbrainh743.md @@ -0,0 +1,96 @@ +# Gear Up AirBrainH743 + +:::warning +PX4 does not manufacture this (or any) autopilot. +Contact the [manufacturer](https://takeyourgear.com/) for hardware support. +::: + +:::info +This flight controller is [manufacturer supported](../flight_controller/autopilot_manufacturer_supported.md). +::: + +Purchase from [takeyourgear.com](https://takeyourgear.com/pages/products/airbrain). + +For more information and pinout, check the [GitHub documentation](https://github.com/GearUp-Company/AirBrainH743). + +## 主要特性 + +- MCU: STM32H743 32-bit processor running at 480 MHz +- IMU: ICM42688P +- Barometer: DPS310 +- Magnetometer: LIS2MDL (internal) +- 128MB NAND Flash for logging (W25N) +- 7x UARTs +- I2C, SPI +- 9x PWM Outputs (8 Motor outputs, 1 LED strip) +- Battery input voltage: 3S-10S +- Battery voltage/current monitoring +- 5V@2A and 10V@2.5A BEC outputs +- USB Type-C (IP68) +- EMC and ESD protection + +## Connectors and Pins + +:::warning +The pin order is different from the Pixhawk standard (compatible to the Betaflight standard). +::: + +### UARTs + +Current UART configuration: + +| UART | 设备 | 功能 | +| ------ | ---------- | --------------------------------------- | +| USART1 | /dev/ttyS0 | Console/Debug | +| USART2 | /dev/ttyS1 | RC Input | +| USART3 | /dev/ttyS2 | TEL4 (DJI/MSP) | +| UART4 | /dev/ttyS3 | TEL1 | +| UART5 | /dev/ttyS4 | TEL2 | +| UART7 | /dev/ttyS5 | TEL3 (ESC Telemetry) | +| UART8 | /dev/ttyS6 | GPS1 | + +### Motor/Servo Outputs + +| Connector | 针脚 | 功能 | +| --------- | -- | ---------------------------- | +| ESC | M1 | Motor 1 | +| ESC | M2 | Motor 2 | +| ESC | M3 | Motor 3 | +| ESC | M4 | Motor 4 | +| PWM | M5 | Motor 5 | +| PWM | M6 | Motor 6 | +| PWM | M7 | Motor 7 | +| PWM | M8 | Motor 8 | +| AUX | M9 | LED/PWM/etc. | + + + +## PX4 Bootloader Update + +Before PX4 firmware can be installed, the _PX4 bootloader_ must be flashed. +Download the [gearup_airbrainh743_bootloader.bin](https://github.com/PX4/PX4-Autopilot/blob/main/boards/gearup/airbrainh743/extras/gearup_airbrainh743_bootloader.bin) bootloader binary and read [this page](../advanced_config/bootloader_update_from_betaflight.md) for flashing instructions. + +## 编译固件 + +To [build PX4](../dev_setup/building_px4.md) for this target: + +``` +make gearup_airbrainh743_default +``` + +## Installing PX4 Firmware + +Firmware can be installed in any of the normal ways: + +- Build and upload the source: + + ``` + make gearup_airbrainh743_default upload + ``` + +- [Load the firmware](../config/firmware.md) using _QGroundControl_. + You can use either pre-built firmware or your own custom firmware. + +### 系统控制台 + +UART1 (ttyS0) is configured for use as the [System Console](../debug/system_console.md). diff --git a/docs/zh/flight_modes/offboard.md b/docs/zh/flight_modes/offboard.md index 9560407f2c..3a501cff3e 100644 --- a/docs/zh/flight_modes/offboard.md +++ b/docs/zh/flight_modes/offboard.md @@ -231,7 +231,7 @@ Ackermann rovers do not support the yaw setpoint. - Position setpoint **and** velocity setpoint (the velocity setpoint is used as feedforward; it is added to the output of the position controller and the result is used as the input to the velocity controller). - - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL). + - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT). - [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) - 支持以下输入组合: @@ -278,7 +278,7 @@ Ackermann rovers do not support the yaw setpoint. - 12288:悬停设定值(以设定值为中心绕圈飞行)。 - 16384:空闲设定值(油门为0, 横滚 / 俯仰为0)。 - - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL). + - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT). - [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) - 支持以下输入组合: @@ -287,7 +287,29 @@ Ackermann rovers do not support the yaw setpoint. ### 无人车 -Rover does not support a MAVLink offboard API (ROS2 is supported). +Rover supports offboard control using the generic MAVLink position/velocity setpoint messages listed below. +These are converted into a [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) internally, and then into rover setpoints by the rover offboard modes. +For rover-specific control setpoints and better behaviour we recommend using the [Rover Setpoints](#rover-setpoints) via ROS 2. + +:::info +Rover MAVLink setpoints are gated by the MAVLink parameter [MAV_FWDEXTSP](../advanced_config/parameter_reference.md#MAV_FWDEXTSP) (Forward external setpoint messages). +::: + +- [SET_POSITION_TARGET_LOCAL_NED](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_LOCAL_NED) + - Position setpoint: `x`, `y` in [MAV_FRAME_LOCAL_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_LOCAL_NED) (`z` is ignored by rover modules). + - Velocity setpoint: `vx`, `vy` in [MAV_FRAME_LOCAL_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_LOCAL_NED) or [MAV_FRAME_BODY_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_BODY_NED). + - `yaw`/`yaw_rate`: + - Ackermann/Differential: ignored (in velocity control the yaw setpoint is derived from the velocity direction). + - Mecanum: can be controlled independently (decoupled) using `yaw`/`yaw_rate`. + - Acceleration setpoints (`afx`, `afy`, `afz`) are ignored by rover modules. + +- [SET_POSITION_TARGET_GLOBAL_INT](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_GLOBAL_INT) + - Position setpoint: `lat_int`, `lon_int`, `alt` (converted into local NED internally; rover modules only use the horizontal components). + - Velocity setpoint: `vx`, `vy`, `vz` (rover modules use only the horizontal components). + - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT). + +- [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) + - Not supported for rover offboard control. ## Offboard参数 diff --git a/docs/zh/flight_modes_fw/mission.md b/docs/zh/flight_modes_fw/mission.md index ee19cd8b22..b3a5552282 100644 --- a/docs/zh/flight_modes_fw/mission.md +++ b/docs/zh/flight_modes_fw/mission.md @@ -28,7 +28,6 @@ Missions are uploaded onto a SD card that needs to be inserted **before** bootin At high level all vehicle types behave in the same way when MISSION mode is engaged: 1. If no mission is stored, or if PX4 has finished executing all mission commands, or if the [mission is not feasible](#mission-feasibility-checks): - - If flying the vehicle will loiter. - If landed the vehicle will "wait". diff --git a/docs/zh/flight_modes_mc/follow_me.md b/docs/zh/flight_modes_mc/follow_me.md index a356ffd919..278c2f8595 100644 --- a/docs/zh/flight_modes_mc/follow_me.md +++ b/docs/zh/flight_modes_mc/follow_me.md @@ -115,7 +115,6 @@ The altitude control mode determine whether the vehicle altitude is relative to The relative distance to the drone to the target will change as you ascend and descend (use with care in hilly terrain). - `2D + Terrain` makes the drone follow at a fixed height relative to the terrain underneath it, using information from a distance sensor. - - If the vehicle does not have a distance sensor following will be identical to `2D tracking`. - Distance sensors aren't always accurate and vehicles may be "jumpy" when flying in this mode. - Note that that height is relative to the ground underneath the vehicle, not the follow target. diff --git a/docs/zh/flight_modes_mc/mission.md b/docs/zh/flight_modes_mc/mission.md index 9d30914129..030b6d1d96 100644 --- a/docs/zh/flight_modes_mc/mission.md +++ b/docs/zh/flight_modes_mc/mission.md @@ -30,7 +30,6 @@ Missions are uploaded onto a SD card that needs to be inserted **before** bootin At high level all vehicle types behave in the same way when MISSION mode is engaged: 1. If no mission is stored, or if PX4 has finished executing all mission commands, or if the [mission is not feasible](#mission-feasibility-checks): - - If flying the vehicle will hold. - If landed the vehicle will "wait". diff --git a/docs/zh/flight_modes_vtol/return.md b/docs/zh/flight_modes_vtol/return.md index 34876f9f68..eaae35346b 100644 --- a/docs/zh/flight_modes_vtol/return.md +++ b/docs/zh/flight_modes_vtol/return.md @@ -49,7 +49,6 @@ If returning as a fixed-wing, the vehicle: A mission landing pattern for a VTOL vehicle consists of a [MAV_CMD_DO_LAND_START](https://mavlink.io/en/messages/common.html#MAV_CMD_DO_LAND_START), one or more position waypoints, and a [MAV_CMD_NAV_VTOL_LAND](https://mavlink.io/en/messages/common.html#MAV_CMD_NAV_VTOL_LAND). - If the destination is a rally point or home it will: - - Loiter/spiral down to [RTL_DESCEND_ALT](#RTL_DESCEND_ALT). - Circle for a short time, as defined by [RTL_LAND_DELAY](#RTL_LAND_DELAY). - Yaw towards the destination (centre of loiter). diff --git a/docs/zh/flight_stack/controller_diagrams.md b/docs/zh/flight_stack/controller_diagrams.md index 4bd7ce64b3..c28efa4590 100644 --- a/docs/zh/flight_stack/controller_diagrams.md +++ b/docs/zh/flight_stack/controller_diagrams.md @@ -30,7 +30,7 @@ The diagrams use the standard [PX4 notation](../contribute/notation.md) (and eac ::: info The IMU pipeline is: - gyro data > apply calibration parameters > remove estimated bias > notch filter (`IMU_GYRO_NF0_BW` and `IMU_GYRO_NF0_FRQ`) > low-pass filter (`IMU_GYRO_CUTOFF`) > vehicle_angular_velocity (_filtered angular rate used by the P and I controllers_) > derivative -> low-pass filter (`IMU_DGYRO_CUTOFF`) > vehicle_angular_acceleration (_filtered angular acceleration used by the D controller_) + gyro data > apply calibration parameters > remove estimated bias > notch filter (`IMU_GYRO_NF0_BW` and `IMU_GYRO_NF0_FRQ`) > low-pass filter (`IMU_GYRO_CUTOFF`) > vehicle_angular_velocity (\_filtered angular rate used by the P and I controllers_) > derivative -> low-pass filter (`IMU_DGYRO_CUTOFF`) > vehicle_angular_acceleration (\_filtered angular acceleration used by the D controller_) ![IMU pipeline](../../assets/diagrams/px4_imu_pipeline.png) @@ -177,7 +177,7 @@ The angular position of the control effectors (ailerons, elevators, rudders, ... 此外,由于控制面在高速时更有效,而在低速时效率较低,因此根据巡航速度调整的控制器使用空速测量值进行缩放(如果使用这样的传感器)。 :::info -If no airspeed sensor is used then gain scheduling for the FW attitude controller is disabled (it's open loop); no correction is/can be made in TECS using airspeed feedback. +If no airspeed sensor is used then gain scheduling for the FW attitude controller is disabled (it's open loop); no correction is/can be made in TECS using airspeed feedback. ::: 前馈增益用于补偿空气动力阻尼。 @@ -187,7 +187,7 @@ If no airspeed sensor is used then gain scheduling for the FW attitude controlle ### Turn coordination 滚转和俯仰控制器具有相同的结构,并且假设纵向和横向动力学足够解耦,可以独立工作。 -但是,为了将飞机侧滑产生的侧向加速度最小化,偏航控制器利用转向协调约束产生偏航速率设定值。 The turn coordination algorithm is based solely on coordinated turn geometry calculation. +但是,为了将飞机侧滑产生的侧向加速度最小化,偏航控制器利用转向协调约束产生偏航速率设定值。 The turn coordination algorithm is based solely on coordinated turn geometry calculation. $$\dot{\Psi}_{sp} = \frac{g}{V_T} \tan{\phi_{sp}} \cos{\theta_{sp}}$$ diff --git a/docs/zh/flying/package_delivery_mission.md b/docs/zh/flying/package_delivery_mission.md index a04437f19f..847b4c92e4 100644 --- a/docs/zh/flying/package_delivery_mission.md +++ b/docs/zh/flying/package_delivery_mission.md @@ -33,7 +33,6 @@ To create a package delivery mission (with a Gripper): 1. Create a normal mission with a `Takeoff` mission item, and additional waypoints for your required flight path. 2. Add a waypoint on the map for where you'd like to release the package. - - To drop the package while flying set an appropriate altitude for the waypoint (and ensure the waypoint is at a safe location to drop the package). - If you'd like to land the vehicle to make the delivery you will need to change the `Waypoint` to a `Land` mission item. diff --git a/docs/zh/frames_rover/index.md b/docs/zh/frames_rover/index.md index 7c6b4bffbc..fa73d3a689 100644 --- a/docs/zh/frames_rover/index.md +++ b/docs/zh/frames_rover/index.md @@ -7,6 +7,12 @@ Support for rover is [experimental](../airframes/index.md#experimental-vehicles) Maintainer volunteers, [contribution](../contribute/index.md) of new features, new frame configurations, or other improvements would all be very welcome! ::: +:::tip +Rover is not in the default PX4 firmware downloaded from QGC. +Unlike for other vehicle types you will need to install it as custom firmware. +For more information see [Flashing the Rover Build](../config_rover/index.md#flashing-the-rover-build). +::: + ![Rovers](../../assets/airframes/rover/rovers.png) PX4 provides support for the three most common types of rovers: diff --git a/docs/zh/getting_started/led_meanings.md b/docs/zh/getting_started/led_meanings.md index fc376fa338..b57d584b9f 100644 --- a/docs/zh/getting_started/led_meanings.md +++ b/docs/zh/getting_started/led_meanings.md @@ -20,7 +20,7 @@ It is possible to have a GPS lock (Green LED) and still not be able to arm the v ::: :::tip -In the event of an error (blinking red), or if the vehicle can't achieve GPS lock (change from blue to green), check for more detailed status information in _QGroundControl_ including calibration status, and errors messages reported by the [Preflight Checks (Internal)](../flying/pre_flight_checks.md). +In the event of an error (blinking red), or if the vehicle can't achieve GPS lock (change from blue to green), check for more detailed status information in _QGroundControl_ including calibration status, and errors messages reported by the [Preflight Checks (Internal)](../flying/pre_flight_checks.md). 还要检查GPS模块是否正确连接,Pixhawk是否正确读取GPS信息,GPS是否发送正确的GPS位置。 ::: @@ -47,7 +47,8 @@ In the event of an error (blinking red), or if the vehicle can't achieve GPS loc 在故障保护模式时,飞行器将试图返回起飞位置,或者降落在当前位置。 - **[Solid Amber] Low Battery Warning:** Indicates your vehicle's battery is running dangerously low. - 在某一点之后,飞行器将进入故障保护模式。 但是,此模式警告此次飞行应该结束。 + 在某一点之后,飞行器将进入故障保护模式。 However, this mode should signal caution that it's time to end + this flight. - **[Blinking Red] Error / Setup Required:** Indicates that your autopilot needs to be configured or calibrated before flying. 将飞行器连接到地面站以找出问题所在。 @@ -77,11 +78,11 @@ The LED labels shown above are commonly used, but might differ on some boards. 下面给出了LED更详细的信息(“x”表示任意状态) -| 红色/琥珀色 | 蓝色 | 绿色 | 含义 | -| ------ | -- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| 10Hz | x | x | Overload CPU load > 80%, or RAM usage > 98% | -| 关闭 | x | x | Overload CPU load <= 80%, or RAM usage <= 98% | -| 不可用 | 关闭 | 4 赫兹 | actuator_armed->armed && failsafe | -| 不可用 | 打开 | 4 赫兹 | actuator_armed->armed && !failsafe | -| 不可用 | 关闭 | 1 赫兹 | !actuator_armed-> armed && actuator_armed->ready_to_arm | -| 不可用 | 关闭 | 10 赫兹 | !actuator_armed->armed && !actuator_armed->ready_to_arm | +| 红色/琥珀色 | 蓝色 | 绿色 | 含义 | +| ------ | -- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 10Hz | x | x | Overload CPU load > 80%, or RAM usage > 98% | +| 关闭 | x | x | Overload CPU load <= 80%, or RAM usage <= 98% | +| 不可用 | 关闭 | 4 赫兹 | actuator_armed->armed && failsafe | +| 不可用 | 打开 | 4 赫兹 | actuator_armed->armed && !failsafe | +| 不可用 | 关闭 | 1 赫兹 | !actuator_armed-> armed && actuator_armed->ready_to_arm | +| 不可用 | 关闭 | 10 赫兹 | !actuator_armed->armed && !actuator_armed->ready_to_arm | diff --git a/docs/zh/getting_started/tunes.md b/docs/zh/getting_started/tunes.md index 7b0907a952..2b35e9a5e2 100644 --- a/docs/zh/getting_started/tunes.md +++ b/docs/zh/getting_started/tunes.md @@ -13,7 +13,7 @@ You can search for tune use using the string `TUNE_ID_name`(e.g. \`TUNE_ID_PARAC These tunes are played during the boot sequence. - + #### 启动声音 diff --git a/docs/zh/gps_compass/rtk_gps.md b/docs/zh/gps_compass/rtk_gps.md index 2b12d8208a..20470f8c52 100644 --- a/docs/zh/gps_compass/rtk_gps.md +++ b/docs/zh/gps_compass/rtk_gps.md @@ -152,7 +152,6 @@ The RTK GPS connection is essentially plug and play: ![survey-in](../../assets/qgc/setup/rtk/qgc_rtk_survey-in.png) 4. 测量完成: - - The RTK GPS icon changes to white and _QGroundControl_ starts to stream position data to the vehicle: ![RTK streaming](../../assets/qgc/setup/rtk/qgc_rtk_streaming.png) diff --git a/docs/zh/index.md b/docs/zh/index.md index e7fea0a665..8187b1648c 100644 --- a/docs/zh/index.md +++ b/docs/zh/index.md @@ -3,19 +3,11 @@ import { useData } from 'vitepress' const { site } = useData(); -
- # PX4 自动驾驶仪用户指南 [![Releases](https://img.shields.io/badge/release-main-blue.svg)](https://github.com/PX4/PX4-Autopilot/releases) [![Discuss](https://img.shields.io/badge/discuss-px4-ff69b4.svg)](https://discuss.px4.io//) [![Discord](https://discordapp.com/api/guilds/1022170275984457759/widget.png?style=shield)](https://discord.gg/dronecode) -_PX4_ 是一款专业级飞控。 -它由来自业界和学术界的世界级开发商开发,并得到活跃的全球社区的支持,为从竞速和物流无人机到地面车辆和潜水艇的各种载具提供动力。 - -:::tip -这份指南包含组装、配置、安全使用 PX4 的设备的各种只是。 -对贡献感兴趣吗 查看 [Development](development/development.md) 部分。 -::: +PX4 is an open-source autopilot for drones and autonomous vehicles. It runs on multirotors, fixed-wing, VTOL, helicopters, rovers, and more. This guide covers everything from assembly and configuration to flight operations and development.
@@ -29,83 +21,43 @@ _PX4_ 是一款专业级飞控。
-## 如何开始? +## For Developers -所有用户都应该先阅读[基本概念](getting_started/px4_basic_concepts.md) ! -它概述了PX4,包括由飞行堆栈提供的功能(飞行模式和安全特征)和支持的硬件(飞行控制器、载具类型、数传系统、遥控控制系统)。 +:::tip +Building on PX4 or extending the platform? Start here: [Development Guide](development/development.md). Set up your [dev environment](dev_setup/config_initial.md), [build from source](dev_setup/building_px4.md), run [SITL simulation](simulation/index.md), or integrate via [ROS 2](ros2/index.md) and [MAVSDK](https://mavsdk.mavlink.io/). +::: -根据您想要实现的目标,以下提示将帮助您浏览本指南: +## 入门指南 -### 我想要一个能与PX4配合使用的载具 +Start with [Basic Concepts](getting_started/px4_basic_concepts.md) for an overview of the flight stack, flight modes, safety features, and supported hardware. -在 [多旋翼](frames_multicopter/index.md), [VTOL](frames_vtol/index.md), 和 [飞机(固定翼)](frames_plane/index.md)部分你会找到如下主题(这些链接针对多旋翼飞行器): +## Build a Vehicle -- [完整的载具](complete_vehicles_mc/index.md)列出了到手飞(RTF)的硬件 -- [套件(frames_multicopter/kits.md) 列出了需要你利用一组预先选定的部件自行组装的无人机。 -- [DIY 组装](frames_multicopter/diy_builds.md) 展示了一些使用单独采购的零部件组装而成的无人机示例。 +Pick your frame type: [Multicopter](frames_multicopter/index.md), [Fixed-Wing](frames_plane/index.md), [VTOL](frames_vtol/index.md), [Helicopter](frames_helicopter/index.md), or [Rover](frames_rover/index.md). Each section covers complete vehicles, kits, and DIY builds. For assembly instructions see [Assembling a Multicopter](assembly/assembly_mc.md) or the equivalent for your frame. -无论是套件还是成品飞行器,通常都包含你所需的一切,除了电池和遥控系统。 -套装通常不难建造,可以很好地介绍无人机如何合在一起,而且费用相对较低。 -我们提供了一般的组装指示,例如[组装一个多旋翼机](assembly/assembly_mc.md),大多数套装也附有具体的指示。 +## Configure and Tune -如果套件和成品无人机不太符合你的需求,那么你可以从零开始打造一架飞行器,但这需要更多专业知识。 -[机身构建](airframes/index.md) 列出了受支持的机身起点,让你了解哪些方案是可行的。 +Once assembled, follow the configuration guide for your vehicle type (e.g. [Multicopter Configuration](config_mc/index.md)). This covers sensor calibration, flight mode setup, and tuning. -一旦你拥有支持PX4的载具,你将需要配置它并校准传感器。 -每种飞行器类型都有其专属的配置章节,阐述主要步骤,比如[多旋翼飞行器配置 / 调校](config_mc/index.md))。 +## 硬件 -### 我想添加一个有效载荷/相机 +The [Hardware Selection & Setup](hardware/drone_parts.md) section covers flight controllers, sensors, telemetry, RC systems, and payloads. See [Payloads](payloads/index.md) for camera and delivery integrations. -[有效载荷](payloads/index.md)部分描述了如何添加相机,以及如何配置 PX4 以实现交付包裹。 +## Fly -### 我正在修改一个支持的载具 +Read [Operations](config/operations.md) to understand safety features and failsafe behavior before your first flight. Then see [Basic Flying (Multicopter)](flying/basic_flying_mc.md) or the equivalent for your frame type. -[硬件选择和设置](hardware/drone_parts.md)部分提供了关于您可能使用 PX4 的硬件及其配置的高层次和特定产品信息。 -如果你想改装无人机并添加新组件,这里是你首先应该查看的地方。 +## 技术支持 -### 我想飞行 - -在飞行之前,您应该阅读 [Operations](config/operations.md)来了解如何设置您的载具的安全性能和所有机型的常见特性。 -完成后,你可以准备飞行。 - -每种飞行器类型的基本飞行说明在各自对应部分给出,例如[基本飞行(多旋翼飞行器)](flying/basic_flying_mc.md)。 - -### 我想在一个新的飞行控制器上运行 PX4并扩展平台 - -[开发](development/development.md)部分解释了如何支持新的机体和车辆类型,修改飞行算法添加新模式,整合新的硬件,与飞行控制器外的 PX4 进行沟通,并为PX4 作出贡献。 - -## 获取帮助 - -[支持](contribute/support.md)页解释了如何从核心开发团队和更广泛的社区获得帮助。 - -除此以外,它还包括了: - -- [您可以获得帮助的论坛](contribute/support.md#forums-and-chat) -- [诊断问题](contribute/support.md#diagnosing-problems) -- [如何报告bug](contribute/support.md#issue-bug-reporting) -- [每周开发会议](contribute/support.md#weekly-dev-call) - -## 报告错误和问题 - -如果您在使用 PX4 首次发布时遇到任何问题,请在[支持论坛](contribute/support.md#forums-and-chat) 上(因为它们可能是由载具配置引起)。 - -如果开发团队指示,代码问题可以在 [Github](https://github.com/PX4/PX4-Autopilot/issues) 上提出。 -尽可能提供 [飞行日志](getting_started/flight_reporting.md) 和问题模板中要求的其他信息。 +Get help on the [discussion forums](https://discuss.px4.io/) or [Discord](https://discord.gg/dronecode). See the [Support](contribute/support.md) page for diagnosing problems, reporting bugs, and joining the [weekly dev call](contribute/dev_call.md). ## 参与贡献 -如何贡献代码和文档的信息可以在 [贡献](contribute/index.md部分中找到: - -- [代码](contribute/index.md) -- [Documentation](contribute/docs.md) -- [Translation](contribute/translation.md) +See the [Contributing](contribute/index.md) section for code, [documentation](contribute/docs.md), and [translation](contribute/translation.md) guidelines. ## 翻译 -本指南有多种 [译文](contribute/translation.md)。 -您可以从语言菜单中访问到它们 (右上角): - -![语言选择器](../assets/vuepress/language_selector.png) +本指南有多种 [译文](contribute/translation.md)。 Use the language selector in the top navigation. @@ -141,9 +93,9 @@ _Dronecode 日历_ 展示了面向平台用户和开发者的重要社区活动 ## 治理 -PX4 飞行控制架构由[Dronecode Project](https://dronecode.org/)负责管理。 +The PX4 Autopilot project is hosted by the [Dronecode Foundation](https://www.dronecode.org/), a [Linux Foundation](https://www.linuxfoundation.org/) Collaborative Project. Dronecode holds all PX4 trademarks and serves as the project's legal guardian, ensuring vendor-neutral stewardship. No single company owns the name or controls the roadmap. The source code is licensed under the [BSD 3-Clause](https://opensource.org/license/BSD-3-Clause) license, so you are free to use, modify, and distribute it in your own projects. -Dronecode Logo Linux Foundation Logo +Dronecode Logo Linux Foundation Logo
 
diff --git a/docs/zh/middleware/dds_topics.md b/docs/zh/middleware/dds_topics.md index 062ba2ff01..911a7d358c 100644 --- a/docs/zh/middleware/dds_topics.md +++ b/docs/zh/middleware/dds_topics.md @@ -95,192 +95,200 @@ They are not build into the module, and hence are neither published or subscribe :::details See messages -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.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) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [GpioOut](../msg_docs/GpioOut.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) -- [Cpuload](../msg_docs/Cpuload.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.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) -- [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) +- [SystemPower](../msg_docs/SystemPower.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.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) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) - [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [Mission](../msg_docs/Mission.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [LedControl](../msg_docs/LedControl.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [InputRc](../msg_docs/InputRc.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [EventV0](../msg_docs/EventV0.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [Rpm](../msg_docs/Rpm.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) - [IrlockReport](../msg_docs/IrlockReport.md) +- [Ping](../msg_docs/Ping.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [Vtx](../msg_docs/Vtx.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [EscReport](../msg_docs/EscReport.md) +- [Gripper](../msg_docs/Gripper.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [Event](../msg_docs/Event.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) ::: diff --git a/docs/zh/modules/module_template.md b/docs/zh/modules/module_template.md index 4e41399412..fc69875c01 100644 --- a/docs/zh/modules/module_template.md +++ b/docs/zh/modules/module_template.md @@ -35,8 +35,8 @@ PX4-Autopilot contains a template for writing a new application (module) that ru ```cpp WorkItemExample::WorkItemExample() : - ModuleParams(nullptr), - ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::test1) + ModuleParams(nullptr), + ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::test1) { } ``` diff --git a/docs/zh/modules/modules_driver.md b/docs/zh/modules/modules_driver.md index 9d2534d052..336383a42c 100644 --- a/docs/zh/modules/modules_driver.md +++ b/docs/zh/modules/modules_driver.md @@ -45,6 +45,26 @@ atxxxx [arguments...] status print status info ``` +## auterion_autostarter + +Source: [drivers/auterion_autostarter](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/auterion_autostarter) + +### 描述 + +Driver for starting and auto-detecting different power monitors. + +### Usage {#auterion_autostarter_usage} + +``` +auterion_autostarter [arguments...] + Commands: + start + + stop + + status print status info +``` + ## batmon Source: [drivers/smart_battery/batmon](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/smart_battery/batmon) @@ -925,26 +945,6 @@ pca9685_pwm_out [arguments...] status print status info ``` -## pm_selector_auterion - -Source: [drivers/power_monitor/pm_selector_auterion](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/power_monitor/pm_selector_auterion) - -### 描述 - -Driver for starting and auto-detecting different power monitors. - -### Usage {#pm_selector_auterion_usage} - -``` -pm_selector_auterion [arguments...] - Commands: - start - - stop - - status print status info -``` - ## pmw3901 Source: [drivers/optical_flow/pmw3901](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/optical_flow/pmw3901) @@ -1109,7 +1109,7 @@ px4io [arguments...] ## rgbled -Source: [drivers/lights/rgbled_ncp5623c](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/lights/rgbled_ncp5623c) +Source: [drivers/lights/rgbled](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/lights/rgbled) ### Usage {#rgbled_usage} @@ -1124,9 +1124,7 @@ rgbled [arguments...] [-f ] bus frequency in kHz [-q] quiet startup (no message if no device found) [-a ] I2C address - default: 57 - [-o ] RGB PWM Assignment - default: 123 + default: 85 stop @@ -1438,6 +1436,30 @@ tap_esc [arguments...] default: 4 ``` +## tmp102 + +Source: [drivers/temperature_sensor/tmp102](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/temperature_sensor/tmp102) + +### Usage {#tmp102_usage} + +``` +tmp102 [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 +``` + ## tone_alarm Source: [drivers/tone_alarm](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/tone_alarm) @@ -1627,6 +1649,76 @@ voxlpm [arguments...] status print status info ``` +## vtx + +Source: [drivers/vtx](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/vtx) + +### 描述 + +This module communicates with a VTX camera via serial port. It can be used to +configure the camera settings and to control the camera's video transmission. +Supported protocols are: + +- SmartAudio v1, v2.0, v2.1 +- Tramp + +### Usage {#vtx_usage} + +``` +vtx [arguments...] + Commands: + start + -d VTX device + values: + + Sets an entry in the mapping table: + + + stop + + status print status info +``` + +## vtxtable + +Source: [drivers/vtxtable](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/vtxtable) + +### 描述 + +Manages the VTX frequency, power level and RC mapping table for VTX configuration. + +### Usage {#vtxtable_usage} + +``` +vtxtable [arguments...] + Commands: + status Shows the current VTX table configuration. + + name Sets the VTX table name: + + bands Sets the number of bands: + + band Sets the band frequencies: <1-index> + + + channels Sets the number of channels: + + powerlevels Sets number of power levels: + + powervalues Sets the power level values: + + powerlabels Sets the power level labels: <3 chars...> + + Sets an entry in the mapping table: <0-index> + + + clear Clears the VTX table configuration. + + save Saves the VTX config to a file: + + load Loads the VTX config from a file: +``` + ## zenoh Source: [modules/zenoh](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/zenoh) diff --git a/docs/zh/modules/modules_template.md b/docs/zh/modules/modules_template.md index 77fdcf216c..d414398671 100644 --- a/docs/zh/modules/modules_template.md +++ b/docs/zh/modules/modules_template.md @@ -1,5 +1,36 @@ # 模块参考: 模板 +## mc_raptor + +Source: [modules/mc_raptor](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/mc_raptor) + +### 描述 + +RAPTOR Policy Flight Mode + +### Usage {#mc_raptor_usage} + +``` +mc_raptor [arguments...] + Commands: + start + + intref Modify internal reference + lissajous Set Lissajous trajectory parameters + Amplitude X [m] + Amplitude Y [m] + Amplitude Z [m] + Frequency a + Frequency b + Frequency c + Total duration [s] + Ramp duration [s] + + stop + + status print status info +``` + ## 模块 Source: [templates/template_module](https://github.com/PX4/PX4-Autopilot/tree/main/src/templates/template_module) diff --git a/docs/zh/msg_docs/ActionRequest.md b/docs/zh/msg_docs/ActionRequest.md index 1c724dabb7..e3ccbd5578 100644 --- a/docs/zh/msg_docs/ActionRequest.md +++ b/docs/zh/msg_docs/ActionRequest.md @@ -1,12 +1,57 @@ +--- +pageClass: is-wide-page +--- + # ActionRequest (UORB message) -Action request for the vehicle's main state +Action request for the vehicle's main state. Message represents actions requested by a PX4 internal component towards the main state machine such as a request to arm or switch mode. It allows mapping triggers from various external interfaces like RC channels or MAVLink to cause an action. Request are published by `manual_control` and subscribed by the `commander` and `vtol_att_control` modules. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActionRequest.msg) +**TOPICS:** action_request + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | -------- | ---------------------------------------------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| action | `uint8` | | [ACTION](#ACTION) | Requested action | +| source | `uint8` | | [SOURCE](#SOURCE) | Request trigger type, such as a switch, button or gesture | +| mode | `uint8` | | | Requested mode. Only applies when `action` is `ACTION_SWITCH_MODE`. Values for this field are defined by the `vehicle_status_s::NAVIGATION_STATE_*` enumeration. | + +## Enums + +### ACTION {#ACTION} + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | - | ---------------------------------------------------------------------------------------- | +| ACTION_DISARM | `uint8` | 0 | Disarm vehicle | +| ACTION_ARM | `uint8` | 1 | Arm vehicle | +| ACTION_TOGGLE_ARMING | `uint8` | 2 | Toggle arming | +| ACTION_UNKILL | `uint8` | 3 | Revert a kill action | +| ACTION_KILL | `uint8` | 4 | Kill vehicle (instantly stop the motors) | +| ACTION_SWITCH_MODE | `uint8` | 5 | Switch mode. The target mode is set in the `mode` field. | +| ACTION_VTOL_TRANSITION_TO_MULTICOPTER | `uint8` | 6 | Transition to hover flight | +| ACTION_VTOL_TRANSITION_TO_FIXEDWING | `uint8` | 7 | Transition to fast forward flight | +| ACTION_TERMINATION | `uint8` | 8 | Irreversibly output failsafe values on all outputs, trigger parachute | + +### SOURCE {#SOURCE} + +| 参数名 | 类型 | 值 | 描述 | +| ---------------------------------------------------------------------------------------------------------------------- | ------- | - | --------------------------------------------------------------- | +| SOURCE_STICK_GESTURE | `uint8` | 0 | Triggered by holding the sticks in a certain position | +| SOURCE_RC_SWITCH | `uint8` | 1 | Triggered by an RC switch moving into a certain position | +| SOURCE_RC_BUTTON | `uint8` | 2 | Triggered by a momentary button on the RC being pressed or held | +| SOURCE_RC_MODE_SLOT | `uint8` | 3 | Mode change through the RC mode selection mechanism | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActionRequest.msg) + +:::details +Click here to see original file ```c # Action request for the vehicle's main state @@ -35,5 +80,6 @@ uint8 SOURCE_RC_BUTTON = 2 # Triggered by a momentary button on the RC bein uint8 SOURCE_RC_MODE_SLOT = 3 # Mode change through the RC mode selection mechanism uint8 mode # Requested mode. Only applies when `action` is `ACTION_SWITCH_MODE`. Values for this field are defined by the `vehicle_status_s::NAVIGATION_STATE_*` enumeration. - ``` + +::: diff --git a/docs/zh/msg_docs/ActuatorArmed.md b/docs/zh/msg_docs/ActuatorArmed.md index adee89cb21..8ed2054db4 100644 --- a/docs/zh/msg_docs/ActuatorArmed.md +++ b/docs/zh/msg_docs/ActuatorArmed.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # ActuatorArmed (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorArmed.msg) +**TOPICS:** actuator_armed + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| armed | `bool` | | | Set to true if system is armed | +| prearmed | `bool` | | | Set to true if the actuator safety is disabled but motors are not armed | +| ready_to_arm | `bool` | | | Set to true if system is ready to be armed | +| lockdown | `bool` | | | Set to true if actuators are forced to being disabled (due to emergency or HIL) | +| kill | `bool` | | | Set to true if manual throttle kill switch is engaged | +| termination | `bool` | | | Send out failsafe (by default same as disarmed) output | +| in_esc_calibration_mode | `bool` | | | IO/FMU should ignore messages from the actuator controls topics | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorArmed.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -12,5 +36,6 @@ bool lockdown # Set to true if actuators are forced to being disabled (due to e bool kill # Set to true if manual throttle kill switch is engaged bool termination # Send out failsafe (by default same as disarmed) output bool in_esc_calibration_mode # IO/FMU should ignore messages from the actuator controls topics - ``` + +::: diff --git a/docs/zh/msg_docs/ActuatorControlsStatus.md b/docs/zh/msg_docs/ActuatorControlsStatus.md index e8b30d6132..fe225a28e7 100644 --- a/docs/zh/msg_docs/ActuatorControlsStatus.md +++ b/docs/zh/msg_docs/ActuatorControlsStatus.md @@ -1,6 +1,24 @@ +--- +pageClass: is-wide-page +--- + # ActuatorControlsStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorControlsStatus.msg) +**TOPICS:** actuator_controls_status_0 actuator_controls_status_1 + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| control_power | `float32[3]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorControlsStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +26,6 @@ uint64 timestamp # time since system start (microseconds) float32[3] control_power # TOPICS actuator_controls_status_0 actuator_controls_status_1 - ``` + +::: diff --git a/docs/zh/msg_docs/ActuatorMotors.md b/docs/zh/msg_docs/ActuatorMotors.md index 701465d6ea..d7c6a1d14b 100644 --- a/docs/zh/msg_docs/ActuatorMotors.md +++ b/docs/zh/msg_docs/ActuatorMotors.md @@ -1,11 +1,39 @@ +--- +pageClass: is-wide-page +--- + # ActuatorMotors (UORB message) -Motor control message +Motor control message. Normalised thrust setpoint for up to 12 motors. Published by the vehicle's allocation and consumed by the ESC protocol drivers e.g. PWM, DSHOT, UAVCAN. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorMotors.msg) +**TOPICS:** actuator_motors + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Sampling timestamp of the data this control response is based on | +| reversible_flags | `uint16` | | | Bitset indicating which motors are configured to be reversible | +| control | `float32[12]` | | [-1 : 1] | Normalized thrust. where 1 means maximum positive thrust, -1 maximum negative (if not supported by the output, <0 maps to NaN). NaN maps to disarmed (stop the motors) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ----------------------------------------------------------------------------------------------------------- | -------- | --- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ACTUATOR_FUNCTION_MOTOR1 | `uint8` | 101 | | +| NUM_CONTROLS | `uint8` | 12 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorMotors.msg) + +:::details +Click here to see original file ```c # Motor control message @@ -24,5 +52,6 @@ uint8 ACTUATOR_FUNCTION_MOTOR1 = 101 # uint8 NUM_CONTROLS = 12 # float32[12] control # [@range -1, 1] Normalized thrust. where 1 means maximum positive thrust, -1 maximum negative (if not supported by the output, <0 maps to NaN). NaN maps to disarmed (stop the motors) - ``` + +::: diff --git a/docs/zh/msg_docs/ActuatorOutputs.md b/docs/zh/msg_docs/ActuatorOutputs.md index cf89004982..20c3f325dd 100644 --- a/docs/zh/msg_docs/ActuatorOutputs.md +++ b/docs/zh/msg_docs/ActuatorOutputs.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # ActuatorOutputs (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorOutputs.msg) +**TOPICS:** actuator_outputs actuator_outputs_sim actuator_outputs_debug + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | ------------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| noutputs | `uint32` | | | valid outputs | +| output | `float32[16]` | | | output data, in natural output units | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------- | ------- | -- | ------------------- | +| NUM_ACTUATOR_OUTPUTS | `uint8` | 16 | | +| NUM_ACTUATOR_OUTPUT_GROUPS | `uint8` | 4 | for sanity checking | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorOutputs.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +37,6 @@ float32[16] output # output data, in natural output units # actuator_outputs_sim is used for SITL, HITL & SIH (with an output range of [-1, 1]) # TOPICS actuator_outputs actuator_outputs_sim actuator_outputs_debug - ``` + +::: diff --git a/docs/zh/msg_docs/ActuatorServos.md b/docs/zh/msg_docs/ActuatorServos.md index ea053f67a3..a02dfdfc2b 100644 --- a/docs/zh/msg_docs/ActuatorServos.md +++ b/docs/zh/msg_docs/ActuatorServos.md @@ -1,11 +1,37 @@ +--- +pageClass: is-wide-page +--- + # ActuatorServos (UORB message) -Servo control message +Servo control message. Normalised output setpoint for up to 8 servos. Published by the vehicle's allocation and consumed by the actuator output drivers. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorServos.msg) +**TOPICS:** actuator_servos + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Sampling timestamp of the data this control response is based on | +| control | `float32[8]` | | [-1 : 1] | Normalized output. 1 means maximum positive position. -1 maximum negative position (if not supported by the output, <0 maps to NaN). NaN maps to disarmed. | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| NUM_CONTROLS | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorServos.msg) + +:::details +Click here to see original file ```c # Servo control message @@ -20,5 +46,6 @@ uint64 timestamp_sample # [us] Sampling timestamp of the data this control resp uint8 NUM_CONTROLS = 8 # float32[8] control # [-] [@range -1, 1] Normalized output. 1 means maximum positive position. -1 maximum negative position (if not supported by the output, <0 maps to NaN). NaN maps to disarmed. - ``` + +::: diff --git a/docs/zh/msg_docs/ActuatorServosTrim.md b/docs/zh/msg_docs/ActuatorServosTrim.md index 07f42a43ce..180237bc65 100644 --- a/docs/zh/msg_docs/ActuatorServosTrim.md +++ b/docs/zh/msg_docs/ActuatorServosTrim.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # ActuatorServosTrim (UORB message) -Servo trims, added as offset to servo outputs +Servo trims, added as offset to servo outputs. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorServosTrim.msg) +**TOPICS:** actuator_servostrim + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| trim | `float32[8]` | | | range: [-1, 1] | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------- | ------- | - | -- | +| NUM_CONTROLS | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorServosTrim.msg) + +:::details +Click here to see original file ```c # Servo trims, added as offset to servo outputs @@ -10,5 +34,6 @@ uint64 timestamp # time since system start (microseconds) uint8 NUM_CONTROLS = 8 float32[8] trim # range: [-1, 1] - ``` + +::: diff --git a/docs/zh/msg_docs/ActuatorTest.md b/docs/zh/msg_docs/ActuatorTest.md index 16d1523c9d..8d966f2436 100644 --- a/docs/zh/msg_docs/ActuatorTest.md +++ b/docs/zh/msg_docs/ActuatorTest.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # ActuatorTest (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorTest.msg) +**TOPICS:** actuator_test + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| action | `uint8` | | | one of ACTION\_\* | +| function | `uint16` | | | actuator output function | +| value | `float32` | | | range: [-1, 1], where 1 means maximum positive output, | +| timeout_ms | `uint32` | | | timeout in ms after which to exit test mode (if 0, do not time out) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------- | ------- | --- | -------------------------------------------------------------------------------------------------------------------- | +| ACTION_RELEASE_CONTROL | `uint8` | 0 | exit test mode for the given function | +| ACTION_DO_CONTROL | `uint8` | 1 | enable actuator test mode | +| FUNCTION_MOTOR1 | `uint8` | 101 | | +| MAX_NUM_MOTORS | `uint8` | 12 | | +| FUNCTION_SERVO1 | `uint8` | 201 | | +| MAX_NUM_SERVOS | `uint8` | 8 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | > = MAX_NUM_MOTORS to support code in esc_calibration | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorTest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -24,5 +57,6 @@ float32 value # range: [-1, 1], where 1 means maximum positive output, uint32 timeout_ms # timeout in ms after which to exit test mode (if 0, do not time out) uint8 ORB_QUEUE_LENGTH = 16 # >= MAX_NUM_MOTORS to support code in esc_calibration - ``` + +::: diff --git a/docs/zh/msg_docs/AdcReport.md b/docs/zh/msg_docs/AdcReport.md index 50fde63ff5..fb77691ca6 100644 --- a/docs/zh/msg_docs/AdcReport.md +++ b/docs/zh/msg_docs/AdcReport.md @@ -1,10 +1,32 @@ +--- +pageClass: is-wide-page +--- + # AdcReport (UORB message) 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) +**TOPICS:** adc_report + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| channel_id | `int16[16]` | | | ADC channel IDs, negative for non-existent, TODO: should be kept same as array index | +| raw_data | `int32[16]` | | | ADC channel raw value, accept negative value, valid if channel ID is positive | +| resolution | `uint32` | | | ADC channel resolution | +| v_ref | `float32` | V | | ADC channel voltage reference, use to calculate LSB voltage(lsb=scale/resolution) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AdcReport.msg) + +:::details +Click here to see original file ```c # ADC raw data. @@ -17,5 +39,6 @@ int16[16] channel_id # [-] ADC channel IDs, negative for non-existent, TODO: sh 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/zh/msg_docs/Airspeed.md b/docs/zh/msg_docs/Airspeed.md index 949af8d5e7..649d2f0cf7 100644 --- a/docs/zh/msg_docs/Airspeed.md +++ b/docs/zh/msg_docs/Airspeed.md @@ -1,11 +1,32 @@ +--- +pageClass: is-wide-page +--- + # Airspeed (UORB message) -Airspeed data from sensors +Airspeed data from sensors. This is published by airspeed sensor drivers, CAN airspeed sensors, simulators. It is subscribed by the airspeed selector module, which validates the data from multiple sensors and passes on a single estimation to the EKF, controllers and telemetry providers. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Airspeed.msg) +**TOPICS:** airspeed + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------- | -------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp of the raw data | +| indicated_airspeed_m_s | `float32` | 米/秒 | | Indicated airspeed | +| true_airspeed_m_s | `float32` | 米/秒 | | True airspeed | +| confidence | `float32` | | [0 : 1] | Confidence value for this sensor | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Airspeed.msg) + +:::details +Click here to see original file ```c # Airspeed data from sensors @@ -18,5 +39,6 @@ uint64 timestamp_sample # [us] Timestamp of the raw data float32 indicated_airspeed_m_s # [m/s] Indicated airspeed float32 true_airspeed_m_s # [m/s] True airspeed float32 confidence # [@range 0,1] Confidence value for this sensor - ``` + +::: diff --git a/docs/zh/msg_docs/AirspeedValidated.md b/docs/zh/msg_docs/AirspeedValidated.md index 61f607e7fa..ad69ec7389 100644 --- a/docs/zh/msg_docs/AirspeedValidated.md +++ b/docs/zh/msg_docs/AirspeedValidated.md @@ -1,11 +1,56 @@ +--- +pageClass: is-wide-page +--- + # AirspeedValidated (UORB message) -Validated airspeed +Validated airspeed. Provides information about airspeed (indicated, true, calibrated) and the source of the data. Used by controllers, estimators and for airspeed reporting to operator. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/AirspeedValidated.msg) +**TOPICS:** airspeed_validated + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| indicated_airspeed_m_s | `float32` | 米/秒 | | Indicated airspeed (IAS) (Invalid: NaN) | +| calibrated_airspeed_m_s | `float32` | 米/秒 | | Calibrated airspeed (CAS) (Invalid: NaN) | +| true_airspeed_m_s | `float32` | 米/秒 | | True airspeed (TAS) (Invalid: NaN) | +| airspeed_source | `int8` | | [SOURCE](#SOURCE) | Source of currently published airspeed values | +| calibrated_ground_minus_wind_m_s | `float32` | 米/秒 | | CAS calculated from groundspeed - windspeed, where windspeed is estimated based on a zero-sideslip assumption (Invalid: NaN) | +| calibraded_airspeed_synth_m_s | `float32` | 米/秒 | | Synthetic airspeed (Invalid: NaN) | +| airspeed_derivative_filtered | `float32` | m/s^2 | | Filtered indicated airspeed derivative | +| throttle_filtered | `float32` | | | Filtered fixed-wing throttle | +| pitch_filtered | `float32` | rad | | Filtered pitch | + +## Enums + +### SOURCE {#SOURCE} + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------- | ------ | -- | ----------------------- | +| SOURCE_DISABLED | `int8` | -1 | Disabled | +| SOURCE_GROUND_MINUS_WIND | `int8` | 0 | Ground speed minus wind | +| SOURCE_SENSOR_1 | `int8` | 1 | Sensor 1 | +| SOURCE_SENSOR_2 | `int8` | 2 | Sensor 2 | +| SOURCE_SENSOR_3 | `int8` | 3 | Sensor 3 | +| SOURCE_SYNTHETIC | `int8` | 4 | Synthetic airspeed | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/AirspeedValidated.msg) + +:::details +Click here to see original file ```c # Validated airspeed @@ -35,5 +80,6 @@ float32 calibraded_airspeed_synth_m_s # [m/s] [@invalid NaN] Synthetic airsp float32 airspeed_derivative_filtered # [m/s^2] Filtered indicated airspeed derivative float32 throttle_filtered # [-] Filtered fixed-wing throttle float32 pitch_filtered # [rad] Filtered pitch - ``` + +::: diff --git a/docs/zh/msg_docs/AirspeedValidatedV0.md b/docs/zh/msg_docs/AirspeedValidatedV0.md index 8bca98a224..7eb82c74fc 100644 --- a/docs/zh/msg_docs/AirspeedValidatedV0.md +++ b/docs/zh/msg_docs/AirspeedValidatedV0.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # AirspeedValidatedV0 (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/AirspeedValidatedV0.msg) +**TOPICS:** airspeed_validatedv0 + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| indicated_airspeed_m_s | `float32` | | | indicated airspeed in m/s (IAS), set to NAN if invalid | +| calibrated_airspeed_m_s | `float32` | | | calibrated airspeed in m/s (CAS, accounts for instrumentation errors), set to NAN if invalid | +| true_airspeed_m_s | `float32` | | | true filtered airspeed in m/s (TAS), set to NAN if invalid | +| calibrated_ground_minus_wind_m_s | `float32` | | | CAS calculated from groundspeed - windspeed, where windspeed is estimated based on a zero-sideslip assumption, set to NAN if invalid | +| true_ground_minus_wind_m_s | `float32` | | | TAS calculated from groundspeed - windspeed, where windspeed is estimated based on a zero-sideslip assumption, set to NAN if invalid | +| airspeed_sensor_measurement_valid | `bool` | | | True if data from at least one airspeed sensor is declared valid. | +| selected_airspeed_index | `int8` | | | 1-3: airspeed sensor index, 0: groundspeed-windspeed, -1: airspeed invalid | +| airspeed_derivative_filtered | `float32` | | | filtered indicated airspeed derivative [m/s/s] | +| throttle_filtered | `float32` | | | filtered fixed-wing throttle [-] | +| pitch_filtered | `float32` | | | filtered pitch [rad] | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/AirspeedValidatedV0.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -21,5 +54,6 @@ int8 selected_airspeed_index # 1-3: airspeed sensor index, 0: groundspeed-win float32 airspeed_derivative_filtered # filtered indicated airspeed derivative [m/s/s] float32 throttle_filtered # filtered fixed-wing throttle [-] float32 pitch_filtered # filtered pitch [rad] - ``` + +::: diff --git a/docs/zh/msg_docs/AirspeedWind.md b/docs/zh/msg_docs/AirspeedWind.md index 23e91399b0..712e2ec667 100644 --- a/docs/zh/msg_docs/AirspeedWind.md +++ b/docs/zh/msg_docs/AirspeedWind.md @@ -1,6 +1,10 @@ +--- +pageClass: is-wide-page +--- + # AirspeedWind (UORB message) -Wind estimate (from airspeed_selector) +Wind estimate (from airspeed_selector). Contains wind estimation and airspeed innovation information estimated by the WindEstimator in the airspeed selector module. @@ -8,7 +12,42 @@ in the airspeed selector module. This message is published by the airspeed selector for debugging purposes, and is not subscribed to by any other modules. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AirspeedWind.msg) +**TOPICS:** airspeed_wind + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp of the raw data | +| windspeed_north | `float32` | 米/秒 | | Wind component in north / X direction | +| windspeed_east | `float32` | 米/秒 | | Wind component in east / Y direction | +| variance_north | `float32` | (m/s)^2 | | Wind estimate error variance in north / X direction (Invalid: 0 if not estimated) | +| variance_east | `float32` | (m/s)^2 | | Wind estimate error variance in east / Y direction (Invalid: 0 if not estimated) | +| tas_innov | `float32` | 米/秒 | | True airspeed innovation | +| tas_innov_var | `float32` | 米/秒 | | True airspeed innovation variance | +| tas_scale_raw | `float32` | | | Estimated true airspeed scale factor (not validated) | +| tas_scale_raw_var | `float32` | | | True airspeed scale factor variance | +| tas_scale_validated | `float32` | | | Estimated true airspeed scale factor after validation | +| beta_innov | `float32` | rad | | Sideslip measurement innovation | +| beta_innov_var | `float32` | rad^2 | | Sideslip measurement innovation variance | +| source | `uint8` | | | source of wind estimate | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ---------------------------------------------------------------------------------------------------------------------- | ------- | - | ----------------------------------------------------------------------------------------------------- | +| SOURCE_AS_BETA_ONLY | `uint8` | 0 | Wind estimate only based on synthetic sideslip fusion | +| SOURCE_AS_SENSOR_1 | `uint8` | 1 | Combined synthetic sideslip and airspeed fusion (data from first airspeed sensor) | +| SOURCE_AS_SENSOR_2 | `uint8` | 2 | Combined synthetic sideslip and airspeed fusion (data from second airspeed sensor) | +| SOURCE_AS_SENSOR_3 | `uint8` | 3 | Combined synthetic sideslip and airspeed fusion (data from third airspeed sensor) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AirspeedWind.msg) + +:::details +Click here to see original file ```c # Wind estimate (from airspeed_selector) @@ -45,5 +84,6 @@ uint8 SOURCE_AS_BETA_ONLY = 0 # Wind estimate only based on synthetic sideslip f uint8 SOURCE_AS_SENSOR_1 = 1 # Combined synthetic sideslip and airspeed fusion (data from first airspeed sensor) uint8 SOURCE_AS_SENSOR_2 = 2 # Combined synthetic sideslip and airspeed fusion (data from second airspeed sensor) uint8 SOURCE_AS_SENSOR_3 = 3 # Combined synthetic sideslip and airspeed fusion (data from third airspeed sensor) - ``` + +::: diff --git a/docs/zh/msg_docs/ArmingCheckReply.md b/docs/zh/msg_docs/ArmingCheckReply.md index 14af54f0d1..1a211fe047 100644 --- a/docs/zh/msg_docs/ArmingCheckReply.md +++ b/docs/zh/msg_docs/ArmingCheckReply.md @@ -1,6 +1,10 @@ +--- +pageClass: is-wide-page +--- + # ArmingCheckReply (UORB message) -Arming check reply +Arming check reply. This is a response to an ArmingCheckRequest message sent by the FMU to an external component, such as a ROS 2 navigation mode. The response contains the current set of external mode requirements, and a queue of events indicating recent failures to set the mode (which the FMU may then forward to a ground station). @@ -9,7 +13,55 @@ The request is sent regularly to all registered ROS modes, even while armed, so Note that the external component is identified by its registration_id, which is allocated to the component during registration (arming_check_id in RegisterExtComponentReply). The message is not used by internal/FMU components, as their mode requirements are known at compile time. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ArmingCheckReply.msg) +**TOPICS:** arming_checkreply + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start. | +| request_id | `uint8` | | | Id of ArmingCheckRequest for which this is a response | +| registration_id | `uint8` | | | Id of external component emitting this response | +| health_component_index | `uint8` | | [HEALTH_COMPONENT_INDEX](#HEALTH_COMPONENT_INDEX) | | +| health_component_is_present | `bool` | | | Unused. Intended for use with health events interface (health_component_t in events.json) | +| health_component_warning | `bool` | | | Unused. Intended for use with health events interface (health_component_t in events.json) | +| health_component_error | `bool` | | | Unused. Intended for use with health events interface (health_component_t in events.json) | +| can_arm_and_run | `bool` | | | True if the component can arm. For navigation mode components, true if the component can arm in the mode or switch to the mode when already armed | +| num_events | `uint8` | | | Number of queued failure messages (Event) in the events field | +| events | `Event[5]` | | | Arming failure reasons (Queue of events to report to GCS) | +| mode_req_angular_velocity | `bool` | | | Requires angular velocity estimate (e.g. from gyroscope) | +| mode_req_attitude | `bool` | | | Requires an attitude estimate | +| mode_req_local_alt | `bool` | | | Requires a local altitude estimate | +| mode_req_local_position | `bool` | | | Requires a local position estimate | +| mode_req_local_position_relaxed | `bool` | | | Requires a more relaxed global position estimate | +| mode_req_global_position | `bool` | | | Requires a global position estimate | +| mode_req_global_position_relaxed | `bool` | | | Requires a relaxed global position estimate | +| mode_req_mission | `bool` | | | Requires an uploaded mission | +| mode_req_home_position | `bool` | | | Requires a home position (such as RTL/Return mode) | +| mode_req_prevent_arming | `bool` | | | Prevent arming (such as in Land mode) | +| mode_req_manual_control | `bool` | | | Requires a manual controller | + +## Enums + +### HEALTH_COMPONENT_INDEX {#HEALTH_COMPONENT_INDEX} + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------------- | ------- | - | --------------------------------------------------------- | +| HEALTH_COMPONENT_INDEX_NONE | `uint8` | 0 | Index of health component for which this response applies | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ArmingCheckReply.msg) + +:::details +Click here to see original file ```c # Arming check reply @@ -55,5 +107,6 @@ bool mode_req_prevent_arming # Prevent arming (such as in Land mode) bool mode_req_manual_control # Requires a manual controller uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/zh/msg_docs/ArmingCheckReplyV0.md b/docs/zh/msg_docs/ArmingCheckReplyV0.md index 48917da802..97b988b505 100644 --- a/docs/zh/msg_docs/ArmingCheckReplyV0.md +++ b/docs/zh/msg_docs/ArmingCheckReplyV0.md @@ -1,6 +1,50 @@ +--- +pageClass: is-wide-page +--- + # ArmingCheckReplyV0 (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ArmingCheckReplyV0.msg) +**TOPICS:** arming_checkreplyv0 + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint8` | | | | +| registration_id | `uint8` | | | | +| health_component_index | `uint8` | | | HEALTH_COMPONENT_INDEX_\* | +| health_component_is_present | `bool` | | | | +| health_component_warning | `bool` | | | | +| health_component_error | `bool` | | | | +| can_arm_and_run | `bool` | | | whether arming is possible, and if it's a navigation mode, if it can run | +| num_events | `uint8` | | | | +| events | `EventV0[5]` | | | | +| mode_req_angular_velocity | `bool` | | | | +| mode_req_attitude | `bool` | | | | +| mode_req_local_alt | `bool` | | | | +| mode_req_local_position | `bool` | | | | +| mode_req_local_position_relaxed | `bool` | | | | +| mode_req_global_position | `bool` | | | | +| mode_req_mission | `bool` | | | | +| mode_req_home_position | `bool` | | | | +| mode_req_prevent_arming | `bool` | | | | +| mode_req_manual_control | `bool` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| HEALTH_COMPONENT_INDEX_NONE | `uint8` | 0 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ArmingCheckReplyV0.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -37,5 +81,6 @@ bool mode_req_manual_control uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/zh/msg_docs/ArmingCheckRequest.md b/docs/zh/msg_docs/ArmingCheckRequest.md index d093dfb5e1..59af550982 100644 --- a/docs/zh/msg_docs/ArmingCheckRequest.md +++ b/docs/zh/msg_docs/ArmingCheckRequest.md @@ -1,6 +1,10 @@ +--- +pageClass: is-wide-page +--- + # ArmingCheckRequest (UORB message) -Arming check request +Arming check request. Broadcast message to request arming checks be reported by all registered components, such as external ROS 2 navigation modes. All registered components should respond with an ArmingCheckReply message that indicates their current mode requirements, and any arming failure information. @@ -9,7 +13,28 @@ The request is sent regularly, even while armed, so that the FMU always knows th The reply will include the published request_id, allowing correlation of all arming check information for a particular request. The reply will also include the registration_id for each external component, provided to it during the registration process (RegisterExtComponentReply). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ArmingCheckRequest.msg) +**TOPICS:** arming_checkrequest + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| request_id | `uint8` | | | Id of this request. Allows correlation with associated ArmingCheckReply messages. | +| valid_registrations_mask | `uint32` | | | Bitmask of valid registration ID's (the bit is also cleared if flagged as unresponsive) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ArmingCheckRequest.msg) + +:::details +Click here to see original file ```c # Arming check request @@ -28,5 +53,6 @@ uint64 timestamp # [us] Time since system start uint8 request_id # [-] Id of this request. Allows correlation with associated ArmingCheckReply messages. uint32 valid_registrations_mask # [-] Bitmask of valid registration ID's (the bit is also cleared if flagged as unresponsive) - ``` + +::: diff --git a/docs/zh/msg_docs/ArmingCheckRequestV0.md b/docs/zh/msg_docs/ArmingCheckRequestV0.md index f5680c11f2..df81ca3fbb 100644 --- a/docs/zh/msg_docs/ArmingCheckRequestV0.md +++ b/docs/zh/msg_docs/ArmingCheckRequestV0.md @@ -1,3 +1,7 @@ +--- +pageClass: is-wide-page +--- + # ArmingCheckRequestV0 (UORB message) Arming check request. @@ -9,7 +13,27 @@ The request is sent regularly, even while armed, so that the FMU always knows th The reply will include the published request_id, allowing correlation of all arming check information for a particular request. The reply will also include the registration_id for each external component, provided to it during the registration process (RegisterExtComponentReply). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ArmingCheckRequestV0.msg) +**TOPICS:** arming_checkrequestv0 + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start. | +| request_id | `uint8` | | | Id of this request. Allows correlation with associated ArmingCheckReply messages. | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ArmingCheckRequestV0.msg) + +:::details +Click here to see original file ```c # Arming check request. @@ -26,5 +50,6 @@ uint32 MESSAGE_VERSION = 0 uint64 timestamp # [us] Time since system start. uint8 request_id # Id of this request. Allows correlation with associated ArmingCheckReply messages. - ``` + +::: diff --git a/docs/zh/msg_docs/AutotuneAttitudeControlStatus.md b/docs/zh/msg_docs/AutotuneAttitudeControlStatus.md index 31a47ef204..dc59ccd84e 100644 --- a/docs/zh/msg_docs/AutotuneAttitudeControlStatus.md +++ b/docs/zh/msg_docs/AutotuneAttitudeControlStatus.md @@ -1,13 +1,68 @@ +--- +pageClass: is-wide-page +--- + # AutotuneAttitudeControlStatus (UORB message) -Autotune attitude control status +Autotune attitude control status. This message is published by the fw_autotune_attitude_control and mc_autotune_attitude_control modules when the user engages autotune, and is subscribed to by the respective attitude controllers to command rate setpoints. The rate_sp field is consumed by the controllers, while the remaining fields (model coefficients, gains, filters, and autotune state) are used for logging and debugging. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AutotuneAttitudeControlStatus.msg) +**TOPICS:** autotune_attitudecontrol_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------ | ------------ | ---------------------------------------------------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| coeff | `float32[5]` | | | Coefficients of the identified discrete-time model | +| coeff_var | `float32[5]` | | | Coefficients' variance of the identified discrete-time model | +| fitness | `float32` | | | Fitness of the parameter estimate | +| innov | `float32` | rad/s | | Innovation (residual error between model and measured output) | +| dt_model | `float32` | s | | Model sample time used for identification | +| kc | `float32` | | | Proportional rate-loop gain (ideal form) | +| ki | `float32` | | | Integral rate-loop gain (ideal form) | +| kd | `float32` | | | Derivative rate-loop gain (ideal form) | +| kff | `float32` | | | Feedforward rate-loop gain | +| att_p | `float32` | | | Proportional attitude gain | +| rate_sp | `float32[3]` | rad/s | | Rate setpoint commanded to the attitude controller. | +| u_filt | `float32` | | | Filtered input signal (normalized torque setpoint) used in system identification. | +| y_filt | `float32` | rad/s | | Filtered output signal (angular velocity) used in system identification. | +| state | `uint8` | | [STATE](#STATE) | Current state of the autotune procedure. | + +## Enums + +### STATE {#STATE} + +| 参数名 | 类型 | 值 | 描述 | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -- | ------------------------------------------------------------------------------------------- | +| STATE_IDLE | `uint8` | 0 | Idle (not running) | +| STATE_INIT | `uint8` | 1 | Initialize filters and setup | +| STATE_ROLL_AMPLITUDE_DETECTION | `uint8` | 2 | FW only: determine required excitation amplitude (roll) | +| STATE_ROLL | `uint8` | 3 | Roll-axis excitation and model identification | +| STATE_ROLL_PAUSE | `uint8` | 4 | Pause to return to level flight | +| STATE_PITCH_AMPLITUDE_DETECTION | `uint8` | 5 | FW only: determine required excitation amplitude (pitch) | +| STATE_PITCH | `uint8` | 6 | Pitch-axis excitation and model identification | +| STATE_PITCH_PAUSE | `uint8` | 7 | Pause to return to level flight | +| STATE_YAW_AMPLITUDE_DETECTION | `uint8` | 8 | FW only: determine required excitation amplitude (yaw) | +| STATE_YAW | `uint8` | 9 | Yaw-axis excitation and model identification | +| STATE_YAW_PAUSE | `uint8` | 10 | Pause to return to level flight | +| STATE_VERIFICATION | `uint8` | 11 | Verify model and candidate gains | +| STATE_APPLY | `uint8` | 12 | Apply gains | +| STATE_TEST | `uint8` | 13 | Test gains in closed-loop | +| STATE_COMPLETE | `uint8` | 14 | Tuning completed successfully | +| STATE_FAIL | `uint8` | 15 | Tuning failed (model invalid or controller unstable) | +| STATE_WAIT_FOR_DISARM | `uint8` | 16 | Waiting for disarm before finalizing | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AutotuneAttitudeControlStatus.msg) + +:::details +Click here to see original file ```c # Autotune attitude control status @@ -55,5 +110,6 @@ uint8 STATE_TEST = 13 # Test gains in closed-loop uint8 STATE_COMPLETE = 14 # Tuning completed successfully uint8 STATE_FAIL = 15 # Tuning failed (model invalid or controller unstable) uint8 STATE_WAIT_FOR_DISARM = 16 # Waiting for disarm before finalizing - ``` + +::: diff --git a/docs/zh/msg_docs/BatteryInfo.md b/docs/zh/msg_docs/BatteryInfo.md index 4b0c2823ce..e0d9b73ddf 100644 --- a/docs/zh/msg_docs/BatteryInfo.md +++ b/docs/zh/msg_docs/BatteryInfo.md @@ -1,11 +1,30 @@ +--- +pageClass: is-wide-page +--- + # BatteryInfo (UORB message) -Battery information +Battery information. Static or near-invariant battery information. Should be streamed at low rate. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/BatteryInfo.msg) +**TOPICS:** battery_info + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| id | `uint8` | | | Must match the id in the battery_status message for the same battery | +| serial_number | `char[32]` | | | Serial number of the battery pack in ASCII characters, 0 terminated (Invalid: 0 All bytes) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/BatteryInfo.msg) + +:::details +Click here to see original file ```c # Battery information @@ -17,5 +36,6 @@ uint64 timestamp # [us] Time since system start uint8 id # Must match the id in the battery_status message for the same battery char[32] serial_number # [@invalid 0 All bytes] Serial number of the battery pack in ASCII characters, 0 terminated - ``` + +::: diff --git a/docs/zh/msg_docs/BatteryStatus.md b/docs/zh/msg_docs/BatteryStatus.md index ec2c19c59e..7527a153cc 100644 --- a/docs/zh/msg_docs/BatteryStatus.md +++ b/docs/zh/msg_docs/BatteryStatus.md @@ -1,12 +1,117 @@ +--- +pageClass: is-wide-page +--- + # BatteryStatus (UORB message) -Battery status +Battery status. Battery status information for up to 3 battery instances. These are populated from power module and smart battery device drivers, and one battery updated from MAVLink. Battery instance information is also logged and streamed in MAVLink telemetry. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/BatteryStatus.msg) +**TOPICS:** battery_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------------------------------------- | ------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| connected | `bool` | | | Whether or not a battery is connected. For power modules this is based on a voltage threshold. | +| voltage_v | `float32` | V | | Battery voltage (Invalid: 0) | +| current_a | `float32` | A | | Battery current (Invalid: -1) | +| current_average_a | `float32` | A | | Battery current average (for FW average in level flight) (Invalid: -1) | +| discharged_mah | `float32` | mAh | | Discharged amount (Invalid: -1) | +| remaining | `float32` | | [0 : 1] | Remaining capacity (Invalid: -1) | +| scale | `float32` | | [1 : -] | Scaling factor to compensate for lower actuation power caused by voltage sag (Invalid: -1) | +| time_remaining_s | `float32` | s | | Predicted time remaining until battery is empty under previous averaged load (Invalid: NaN) | +| temperature | `float32` | °C | | Temperature of the battery (Invalid: NaN) | +| cell_count | `uint8` | | | Number of cells (Invalid: 0) | +| source | `uint8` | | [SOURCE](#SOURCE) | Battery source | +| priority | `uint8` | | | Zero based priority is the connection on the Power Controller V1..Vn AKA BrickN-1 | +| capacity | `uint16` | mAh | | Capacity of the battery when fully charged | +| cycle_count | `uint16` | | | Number of discharge cycles the battery has experienced | +| average_time_to_empty | `uint16` | minutes | | Predicted remaining battery capacity based on the average rate of discharge | +| manufacture_date | `uint16` | | | Manufacture date, part of serial number of the battery pack. Formatted as: Day + Month×32 + (Year–1980)×512 | +| state_of_health | `uint16` | % | [0 : 100] | State of health. FullChargeCapacity/DesignCapacity | +| max_error | `uint16` | % | [1 : 100] | Max error, expected margin of error in the state-of-charge calculation | +| id | `uint8` | | | ID number of a battery. Should be unique and consistent for the lifetime of a vehicle. 1-indexed | +| interface_error | `uint16` | | | Interface error counter | +| voltage_cell_v | `float32[14]` | V | | Battery individual cell voltages (Invalid: 0) | +| max_cell_voltage_delta | `float32` | V | | Max difference between individual cell voltages | +| is_powering_off | `bool` | | | Power off event imminent indication, false if unknown | +| is_required | `bool` | | | Set if the battery is explicitly required before arming | +| warning | `uint8` | | [WARNING](#WARNING)[STATE](#STATE) | Current battery warning | +| faults | `uint16` | | [FAULT](#FAULT) | Smart battery supply status/fault flags (bitmask) for health indication | +| full_charge_capacity_wh | `float32` | Wh | | Compensated battery capacity | +| remaining_capacity_wh | `float32` | Wh | | Compensated battery capacity remaining | +| over_discharge_count | `uint16` | | | Number of battery overdischarge | +| nominal_voltage | `float32` | V | | Nominal voltage of the battery pack | +| internal_resistance_estimate | `float32` | Ohm | | Internal resistance per cell estimate | +| ocv_estimate | `float32` | V | | Open circuit voltage estimate | +| ocv_estimate_filtered | `float32` | V | | Filtered open circuit voltage estimate | +| volt_based_soc_estimate | `float32` | | [0 : 1] | Normalized volt based state of charge estimate | +| voltage_prediction | `float32` | V | | Predicted voltage | +| prediction_error | `float32` | V | | Prediction error | +| estimation_covariance_norm | `float32` | | | Norm of the covariance matrix | + +## Enums + +### SOURCE {#SOURCE} + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------- | ------- | - | ----------------------------------------------------------------- | +| SOURCE_POWER_MODULE | `uint8` | 0 | Power module (analog ADC or I2C power monitor) | +| SOURCE_EXTERNAL | `uint8` | 1 | External (MAVLink, CAN, or external driver) | +| SOURCE_ESCS | `uint8` | 2 | ESCs (via ESC telemetry) | + +### WARNING {#WARNING} + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------ | ------- | - | -------------------------------------------- | +| WARNING_NONE | `uint8` | 0 | No battery low voltage warning active | +| WARNING_LOW | `uint8` | 1 | Low voltage warning | +| WARNING_CRITICAL | `uint8` | 2 | Critical voltage, return / abort immediately | +| WARNING_EMERGENCY | `uint8` | 3 | Immediate landing required | +| WARNING_FAILED | `uint8` | 4 | Battery has failed completely | + +### STATE {#STATE} + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | ------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| STATE_UNHEALTHY | `uint8` | 6 | Battery is diagnosed to be defective or an error occurred, usage is discouraged / prohibited. Possible causes (faults) are listed in faults field | +| STATE_CHARGING | `uint8` | 7 | Battery is charging | + +### FAULT {#FAULT} + +| 参数名 | 类型 | 值 | 描述 | +| ---------------------------------------------------------------------------------------------------------------------- | ------- | -- | --------------------------------------------------------------------------------------------------------------------------------- | +| FAULT_DEEP_DISCHARGE | `uint8` | 0 | Battery has deep discharged | +| FAULT_SPIKES | `uint8` | 1 | Voltage spikes | +| FAULT_CELL_FAIL | `uint8` | 2 | One or more cells have failed | +| FAULT_OVER_CURRENT | `uint8` | 3 | Over-current | +| FAULT_OVER_TEMPERATURE | `uint8` | 4 | Over-temperature | +| FAULT_UNDER_TEMPERATURE | `uint8` | 5 | Under-temperature fault | +| FAULT_INCOMPATIBLE_VOLTAGE | `uint8` | 6 | Vehicle voltage is not compatible with this battery (batteries on same power rail should have similar voltage) | +| FAULT_INCOMPATIBLE_FIRMWARE | `uint8` | 7 | Battery firmware is not compatible with current autopilot firmware | +| FAULT_INCOMPATIBLE_MODEL | `uint8` | 8 | Battery model is not supported by the system | +| FAULT_HARDWARE_FAILURE | `uint8` | 9 | Hardware problem | +| FAULT_FAILED_TO_ARM | `uint8` | 10 | Battery had a problem while arming | +| FAULT_COUNT | `uint8` | 11 | Counter. Keep this as last element | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 1 | | +| MAX_INSTANCES | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/BatteryStatus.msg) + +:::details +Click here to see original file ```c # Battery status @@ -88,5 +193,6 @@ float32 volt_based_soc_estimate # [-] [@range 0, 1] Normalized volt based float32 voltage_prediction # [V] Predicted voltage float32 prediction_error # [V] Prediction error float32 estimation_covariance_norm # [-] Norm of the covariance matrix - ``` + +::: diff --git a/docs/zh/msg_docs/BatteryStatusV0.md b/docs/zh/msg_docs/BatteryStatusV0.md index cd900a1f17..2d3c1ce06b 100644 --- a/docs/zh/msg_docs/BatteryStatusV0.md +++ b/docs/zh/msg_docs/BatteryStatusV0.md @@ -1,12 +1,118 @@ +--- +pageClass: is-wide-page +--- + # BatteryStatusV0 (UORB message) -Battery status +Battery status. Battery status information for up to 4 battery instances. These are populated from power module and smart battery device drivers, and one battery updated from MAVLink. Battery instance information is also logged and streamed in MAVLink telemetry. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/BatteryStatusV0.msg) +**TOPICS:** battery_statusv0 + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------------------------------------- | ------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| connected | `bool` | | | Whether or not a battery is connected. For power modules this is based on a voltage threshold. | +| voltage_v | `float32` | V | | Battery voltage (Invalid: 0) | +| current_a | `float32` | A | | Battery current (Invalid: -1) | +| current_average_a | `float32` | A | | Battery current average (for FW average in level flight) (Invalid: -1) | +| discharged_mah | `float32` | mAh | | Discharged amount (Invalid: -1) | +| remaining | `float32` | | [0 : 1] | Remaining capacity (Invalid: -1) | +| scale | `float32` | | [1 : -] | Scaling factor to compensate for lower actuation power caused by voltage sag (Invalid: -1) | +| time_remaining_s | `float32` | s | | Predicted time remaining until battery is empty under previous averaged load (Invalid: NaN) | +| temperature | `float32` | °C | | Temperature of the battery (Invalid: NaN) | +| cell_count | `uint8` | | | Number of cells (Invalid: 0) | +| source | `uint8` | | [SOURCE](#SOURCE) | Battery source | +| priority | `uint8` | | | Zero based priority is the connection on the Power Controller V1..Vn AKA BrickN-1 | +| capacity | `uint16` | mAh | | Capacity of the battery when fully charged | +| cycle_count | `uint16` | | | Number of discharge cycles the battery has experienced | +| average_time_to_empty | `uint16` | minutes | | Predicted remaining battery capacity based on the average rate of discharge | +| serial_number | `uint16` | | | Serial number of the battery pack | +| manufacture_date | `uint16` | | | Manufacture date, part of serial number of the battery pack. Formatted as: Day + Month×32 + (Year–1980)×512 | +| state_of_health | `uint16` | % | [0 : 100] | State of health. FullChargeCapacity/DesignCapacity | +| max_error | `uint16` | % | [1 : 100] | Max error, expected margin of error in the state-of-charge calculation | +| id | `uint8` | | | ID number of a battery. Should be unique and consistent for the lifetime of a vehicle. 1-indexed | +| interface_error | `uint16` | | | Interface error counter | +| voltage_cell_v | `float32[14]` | V | | Battery individual cell voltages (Invalid: 0) | +| max_cell_voltage_delta | `float32` | | | Max difference between individual cell voltages | +| is_powering_off | `bool` | | | Power off event imminent indication, false if unknown | +| is_required | `bool` | | | Set if the battery is explicitly required before arming | +| warning | `uint8` | | [WARNING](#WARNING)[STATE](#STATE) | Current battery warning | +| faults | `uint16` | | [FAULT](#FAULT) | Smart battery supply status/fault flags (bitmask) for health indication | +| full_charge_capacity_wh | `float32` | Wh | | Compensated battery capacity | +| remaining_capacity_wh | `float32` | Wh | | Compensated battery capacity remaining | +| over_discharge_count | `uint16` | | | Number of battery overdischarge | +| nominal_voltage | `float32` | V | | Nominal voltage of the battery pack | +| internal_resistance_estimate | `float32` | Ohm | | Internal resistance per cell estimate | +| ocv_estimate | `float32` | V | | Open circuit voltage estimate | +| ocv_estimate_filtered | `float32` | V | | Filtered open circuit voltage estimate | +| volt_based_soc_estimate | `float32` | | [0 : 1] | Normalized volt based state of charge estimate | +| voltage_prediction | `float32` | V | | Predicted voltage | +| prediction_error | `float32` | V | | Prediction error | +| estimation_covariance_norm | `float32` | | | Norm of the covariance matrix | + +## Enums + +### SOURCE {#SOURCE} + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------- | ------- | - | ----------------------------------------------------------------- | +| SOURCE_POWER_MODULE | `uint8` | 0 | Power module (analog ADC or I2C power monitor) | +| SOURCE_EXTERNAL | `uint8` | 1 | External (MAVLink, CAN, or external driver) | +| SOURCE_ESCS | `uint8` | 2 | ESCs (via ESC telemetry) | + +### WARNING {#WARNING} + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------ | ------- | - | -------------------------------------------- | +| WARNING_NONE | `uint8` | 0 | No battery low voltage warning active | +| WARNING_LOW | `uint8` | 1 | Low voltage warning | +| WARNING_CRITICAL | `uint8` | 2 | Critical voltage, return / abort immediately | +| WARNING_EMERGENCY | `uint8` | 3 | Immediate landing required | +| WARNING_FAILED | `uint8` | 4 | Battery has failed completely | + +### STATE {#STATE} + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | ------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| STATE_UNHEALTHY | `uint8` | 6 | Battery is diagnosed to be defective or an error occurred, usage is discouraged / prohibited. Possible causes (faults) are listed in faults field | +| STATE_CHARGING | `uint8` | 7 | Battery is charging | + +### FAULT {#FAULT} + +| 参数名 | 类型 | 值 | 描述 | +| ---------------------------------------------------------------------------------------------------------------------- | ------- | -- | --------------------------------------------------------------------------------------------------------------------------------- | +| FAULT_DEEP_DISCHARGE | `uint8` | 0 | Battery has deep discharged | +| FAULT_SPIKES | `uint8` | 1 | Voltage spikes | +| FAULT_CELL_FAIL | `uint8` | 2 | One or more cells have failed | +| FAULT_OVER_CURRENT | `uint8` | 3 | Over-current | +| FAULT_OVER_TEMPERATURE | `uint8` | 4 | Over-temperature | +| FAULT_UNDER_TEMPERATURE | `uint8` | 5 | Under-temperature fault | +| FAULT_INCOMPATIBLE_VOLTAGE | `uint8` | 6 | Vehicle voltage is not compatible with this battery (batteries on same power rail should have similar voltage) | +| FAULT_INCOMPATIBLE_FIRMWARE | `uint8` | 7 | Battery firmware is not compatible with current autopilot firmware | +| FAULT_INCOMPATIBLE_MODEL | `uint8` | 8 | Battery model is not supported by the system | +| FAULT_HARDWARE_FAILURE | `uint8` | 9 | Hardware problem | +| FAULT_FAILED_TO_ARM | `uint8` | 10 | Battery had a problem while arming | +| FAULT_COUNT | `uint8` | 11 | Counter. Keep this as last element | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| MAX_INSTANCES | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/BatteryStatusV0.msg) + +:::details +Click here to see original file ```c # Battery status @@ -88,5 +194,6 @@ float32 volt_based_soc_estimate # [@range 0, 1] Normalized volt based state of c float32 voltage_prediction # [V] Predicted voltage float32 prediction_error # [V] Prediction error float32 estimation_covariance_norm # Norm of the covariance matrix - ``` + +::: diff --git a/docs/zh/msg_docs/ButtonEvent.md b/docs/zh/msg_docs/ButtonEvent.md index 8c22ff2491..161a3ea184 100644 --- a/docs/zh/msg_docs/ButtonEvent.md +++ b/docs/zh/msg_docs/ButtonEvent.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # ButtonEvent (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ButtonEvent.msg) +**TOPICS:** button_event safety_button + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| triggered | `bool` | | | Set to true if the event is triggered | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | - | -- | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ButtonEvent.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,5 +33,6 @@ bool triggered # Set to true if the event is triggered # TOPICS button_event safety_button uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/zh/msg_docs/CameraCapture.md b/docs/zh/msg_docs/CameraCapture.md index cafef27922..81694b7c5a 100644 --- a/docs/zh/msg_docs/CameraCapture.md +++ b/docs/zh/msg_docs/CameraCapture.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # CameraCapture (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraCapture.msg) +**TOPICS:** camera_capture + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_utc | `uint64` | | | Capture time in UTC / GPS time | +| seq | `uint32` | | | Image sequence number | +| lat | `float64` | | | Latitude in degrees (WGS84) | +| lon | `float64` | | | Longitude in degrees (WGS84) | +| alt | `float32` | | | Altitude (AMSL) | +| ground_distance | `float32` | | | Altitude above ground (meters) | +| q | `float32[4]` | | | Attitude of the camera relative to NED earth-fixed frame when using a gimbal, otherwise vehicle attitude | +| result | `int8` | | | 1 for success, 0 for failure, -1 if camera does not provide feedback | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraCapture.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -12,5 +37,6 @@ float32 alt # Altitude (AMSL) float32 ground_distance # Altitude above ground (meters) float32[4] q # Attitude of the camera relative to NED earth-fixed frame when using a gimbal, otherwise vehicle attitude int8 result # 1 for success, 0 for failure, -1 if camera does not provide feedback - ``` + +::: diff --git a/docs/zh/msg_docs/CameraStatus.md b/docs/zh/msg_docs/CameraStatus.md index 2ed1011c50..b47b8bfbfe 100644 --- a/docs/zh/msg_docs/CameraStatus.md +++ b/docs/zh/msg_docs/CameraStatus.md @@ -1,11 +1,31 @@ +--- +pageClass: is-wide-page +--- + # CameraStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraStatus.msg) +**TOPICS:** camera_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| active_sys_id | `uint8` | | | mavlink system id of the currently active camera | +| active_comp_id | `uint8` | | | mavlink component id of currently active camera | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) uint8 active_sys_id # mavlink system id of the currently active camera uint8 active_comp_id # mavlink component id of currently active camera - ``` + +::: diff --git a/docs/zh/msg_docs/CameraTrigger.md b/docs/zh/msg_docs/CameraTrigger.md index edd07edd5a..5bf8c8cdec 100644 --- a/docs/zh/msg_docs/CameraTrigger.md +++ b/docs/zh/msg_docs/CameraTrigger.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # CameraTrigger (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraTrigger.msg) +**TOPICS:** camera_trigger + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_utc | `uint64` | | | UTC timestamp | +| seq | `uint32` | | | Image sequence number | +| feedback | `bool` | | | Trigger feedback from camera | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | -------- | - | -- | +| ORB_QUEUE_LENGTH | `uint32` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraTrigger.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +36,6 @@ uint32 seq # Image sequence number bool feedback # Trigger feedback from camera uint32 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/zh/msg_docs/CanInterfaceStatus.md b/docs/zh/msg_docs/CanInterfaceStatus.md index 1d0f618f8d..732a8bd2d7 100644 --- a/docs/zh/msg_docs/CanInterfaceStatus.md +++ b/docs/zh/msg_docs/CanInterfaceStatus.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # CanInterfaceStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CanInterfaceStatus.msg) +**TOPICS:** can_interfacestatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| interface | `uint8` | | | | +| io_errors | `uint64` | | | | +| frames_tx | `uint64` | | | | +| frames_rx | `uint64` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CanInterfaceStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,5 +30,6 @@ uint8 interface uint64 io_errors uint64 frames_tx uint64 frames_rx - ``` + +::: diff --git a/docs/zh/msg_docs/CellularStatus.md b/docs/zh/msg_docs/CellularStatus.md index 04ca0a65dc..57bfd5f695 100644 --- a/docs/zh/msg_docs/CellularStatus.md +++ b/docs/zh/msg_docs/CellularStatus.md @@ -1,10 +1,73 @@ +--- +pageClass: is-wide-page +--- + # CellularStatus (UORB message) -Cellular status +Cellular status. This is currently used only for logging cell status from MAVLink. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CellularStatus.msg) +**TOPICS:** cellular_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------- | -------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| status | `uint16` | | [STATUS_FLAG](#STATUS_FLAG) | Status bitmap | +| failure_reason | `uint8` | | [FAILURE_REASON](#FAILURE_REASON) | Failure reason | +| type | `uint8` | | [CELLULAR_NETWORK_RADIO_TYPE](#CELLULAR_NETWORK_RADIO_TYPE) | Cellular network radio type | +| quality | `uint8` | dBm | | Cellular network RSSI/RSRP, absolute value | +| mcc | `uint16` | | | Mobile country code (Invalid: UINT16_MAX) | +| mnc | `uint16` | | | Mobile network code (Invalid: UINT16_MAX) | +| lac | `uint16` | | | Location area code (Invalid: 0) | + +## Enums + +### STATUS_FLAG {#STATUS_FLAG} + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------- | -------- | ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| STATUS_FLAG_UNKNOWN | `uint16` | 1 | State unknown or not reportable | +| STATUS_FLAG_FAILED | `uint16` | 2 | Modem is unusable | +| STATUS_FLAG_INITIALIZING | `uint16` | 4 | Modem is being initialized | +| STATUS_FLAG_LOCKED | `uint16` | 8 | Modem is locked | +| STATUS_FLAG_DISABLED | `uint16` | 16 | Modem is not enabled and is powered down | +| STATUS_FLAG_DISABLING | `uint16` | 32 | Modem is currently transitioning to the STATUS_FLAG_DISABLED state | +| STATUS_FLAG_ENABLING | `uint16` | 64 | Modem is currently transitioning to the STATUS_FLAG_ENABLED state | +| STATUS_FLAG_ENABLED | `uint16` | 128 | Modem is enabled and powered on but not registered with a network provider and not available for data connections | +| STATUS_FLAG_SEARCHING | `uint16` | 256 | Modem is searching for a network provider to register | +| STATUS_FLAG_REGISTERED | `uint16` | 512 | Modem is registered with a network provider, and data connections and messaging may be available for use | +| STATUS_FLAG_DISCONNECTING | `uint16` | 1024 | Modem is disconnecting and deactivating the last active packet data bearer. This state will not be entered if more than one packet data bearer is active and one of the active bearers is deactivated | +| STATUS_FLAG_CONNECTING | `uint16` | 2048 | Modem is activating and connecting the first packet data bearer. Subsequent bearer activations when another bearer is already active do not cause this state to be entered | +| STATUS_FLAG_CONNECTED | `uint16` | 4096 | One or more packet data bearers is active and connected | + +### FAILURE_REASON {#FAILURE_REASON} + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------- | - | ----------------------------------------------- | +| FAILURE_REASON_NONE | `uint8` | 0 | No error | +| FAILURE_REASON_UNKNOWN | `uint8` | 1 | Error state is unknown | +| FAILURE_REASON_SIM_MISSING | `uint8` | 2 | SIM is required for the modem but missing | +| FAILURE_REASON_SIM_ERROR | `uint8` | 3 | SIM is available, but not usable for connection | + +### CELLULAR_NETWORK_RADIO_TYPE {#CELLULAR_NETWORK_RADIO_TYPE} + +| 参数名 | 类型 | 值 | 描述 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | - | ----- | +| CELLULAR_NETWORK_RADIO_TYPE_NONE | `uint8` | 0 | None | +| CELLULAR_NETWORK_RADIO_TYPE_GSM | `uint8` | 1 | GSM | +| CELLULAR_NETWORK_RADIO_TYPE_CDMA | `uint8` | 2 | CDMA | +| CELLULAR_NETWORK_RADIO_TYPE_WCDMA | `uint8` | 3 | WCDMA | +| CELLULAR_NETWORK_RADIO_TYPE_LTE | `uint8` | 4 | LTE | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CellularStatus.msg) + +:::details +Click here to see original file ```c # Cellular status @@ -45,5 +108,6 @@ uint8 quality # [dBm] Cellular network RSSI/RSRP, absolute value uint16 mcc # [@invalid UINT16_MAX] Mobile country code uint16 mnc # [@invalid UINT16_MAX] Mobile network code uint16 lac # [@invalid 0] Location area code - ``` + +::: diff --git a/docs/zh/msg_docs/CollisionConstraints.md b/docs/zh/msg_docs/CollisionConstraints.md index fd0f562886..1f504a04a3 100644 --- a/docs/zh/msg_docs/CollisionConstraints.md +++ b/docs/zh/msg_docs/CollisionConstraints.md @@ -1,9 +1,27 @@ +--- +pageClass: is-wide-page +--- + # CollisionConstraints (UORB message) -Local setpoint constraints in NED frame -setting something to NaN means that no limit is provided +Local setpoint constraints in NED frame. setting something to NaN means that no limit is provided. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CollisionConstraints.msg) +**TOPICS:** collision_constraints + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| original_setpoint | `float32[2]` | | | velocities demanded | +| adapted_setpoint | `float32[2]` | | | velocities allowed | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CollisionConstraints.msg) + +:::details +Click here to see original file ```c # Local setpoint constraints in NED frame @@ -13,5 +31,6 @@ uint64 timestamp # time since system start (microseconds) float32[2] original_setpoint # velocities demanded float32[2] adapted_setpoint # velocities allowed - ``` + +::: diff --git a/docs/zh/msg_docs/ConfigOverrides.md b/docs/zh/msg_docs/ConfigOverrides.md index caa4d0816b..198b320a4a 100644 --- a/docs/zh/msg_docs/ConfigOverrides.md +++ b/docs/zh/msg_docs/ConfigOverrides.md @@ -1,8 +1,40 @@ +--- +pageClass: is-wide-page +--- + # ConfigOverrides (UORB message) -Configurable overrides by (external) modes or mode executors +Configurable overrides by (external) modes or mode executors. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ConfigOverrides.msg) +**TOPICS:** config_overrides config_overrides_request + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| disable_auto_disarm | `bool` | | | Prevent the drone from automatically disarming after landing (if configured) | +| defer_failsafes | `bool` | | | Defer all failsafes that can be deferred (until the flag is cleared) | +| defer_failsafes_timeout_s | `int16` | | | Maximum time a failsafe can be deferred. 0 = system default, -1 = no timeout | +| disable_auto_set_home | `bool` | | | Prevent the drone from automatically setting the home position on arm or takeoff | +| source_type | `int8` | | | | +| source_id | `uint8` | | | ID depending on source_type | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ---------------------------------------------------------------------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 1 | | +| SOURCE_TYPE_MODE | `int8` | 0 | | +| SOURCE_TYPE_MODE_EXECUTOR | `int8` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ConfigOverrides.msg) + +:::details +Click here to see original file ```c # Configurable overrides by (external) modes or mode executors @@ -26,5 +58,6 @@ uint8 source_id # ID depending on source_type uint8 ORB_QUEUE_LENGTH = 4 # TOPICS config_overrides config_overrides_request - ``` + +::: diff --git a/docs/zh/msg_docs/ConfigOverridesV0.md b/docs/zh/msg_docs/ConfigOverridesV0.md index 91e2cf5b48..f091abce99 100644 --- a/docs/zh/msg_docs/ConfigOverridesV0.md +++ b/docs/zh/msg_docs/ConfigOverridesV0.md @@ -1,8 +1,39 @@ +--- +pageClass: is-wide-page +--- + # ConfigOverridesV0 (UORB message) -Configurable overrides by (external) modes or mode executors +Configurable overrides by (external) modes or mode executors. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ConfigOverridesV0.msg) +**TOPICS:** config_overrides config_overrides_request + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| disable_auto_disarm | `bool` | | | Prevent the drone from automatically disarming after landing (if configured) | +| defer_failsafes | `bool` | | | Defer all failsafes that can be deferred (until the flag is cleared) | +| defer_failsafes_timeout_s | `int16` | | | Maximum time a failsafe can be deferred. 0 = system default, -1 = no timeout | +| source_type | `int8` | | | | +| source_id | `uint8` | | | ID depending on source_type | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ---------------------------------------------------------------------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| SOURCE_TYPE_MODE | `int8` | 0 | | +| SOURCE_TYPE_MODE_EXECUTOR | `int8` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ConfigOverridesV0.msg) + +:::details +Click here to see original file ```c # Configurable overrides by (external) modes or mode executors @@ -26,5 +57,6 @@ uint8 source_id # ID depending on source_type uint8 ORB_QUEUE_LENGTH = 4 # TOPICS config_overrides config_overrides_request - ``` + +::: diff --git a/docs/zh/msg_docs/ControlAllocatorStatus.md b/docs/zh/msg_docs/ControlAllocatorStatus.md index 4068e7b4f4..5734f740d8 100644 --- a/docs/zh/msg_docs/ControlAllocatorStatus.md +++ b/docs/zh/msg_docs/ControlAllocatorStatus.md @@ -1,6 +1,40 @@ +--- +pageClass: is-wide-page +--- + # ControlAllocatorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ControlAllocatorStatus.msg) +**TOPICS:** control_allocatorstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| torque_setpoint_achieved | `bool` | | | Boolean indicating whether the 3D torque setpoint was correctly allocated to actuators. 0 if not achieved, 1 if achieved. | +| unallocated_torque | `float32[3]` | | | Unallocated torque. Equal to 0 if the setpoint was achieved. | +| thrust_setpoint_achieved | `bool` | | | Boolean indicating whether the 3D thrust setpoint was correctly allocated to actuators. 0 if not achieved, 1 if achieved. | +| unallocated_thrust | `float32[3]` | | | Unallocated thrust. Equal to 0 if the setpoint was achieved. | +| actuator_saturation | `int8[16]` | | | Indicates actuator saturation status. | +| handled_motor_failure_mask | `uint16` | | | Bitmask of failed motors that were removed from the allocation / effectiveness matrix. Not necessarily identical to the report from FailureDetector | +| motor_stop_mask | `uint16` | | | Bitmaks of motors stopped by failure injection | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------ | -- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| ACTUATOR_SATURATION_OK | `int8` | 0 | The actuator is not saturated | +| ACTUATOR_SATURATION_UPPER_DYN | `int8` | 1 | The actuator is saturated (with a value <= the desired value) because it cannot increase its value faster | +| ACTUATOR_SATURATION_UPPER | `int8` | 2 | The actuator is saturated (with a value <= the desired value) because it has reached its maximum value | +| ACTUATOR_SATURATION_LOWER_DYN | `int8` | -1 | The actuator is saturated (with a value >= the desired value) because it cannot decrease its value faster | +| ACTUATOR_SATURATION_LOWER | `int8` | -2 | The actuator is saturated (with a value >= the desired value) because it has reached its minimum value | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ControlAllocatorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -25,5 +59,6 @@ int8[16] actuator_saturation # Indicates actuator saturation status. uint16 handled_motor_failure_mask # Bitmask of failed motors that were removed from the allocation / effectiveness matrix. Not necessarily identical to the report from FailureDetector uint16 motor_stop_mask # Bitmaks of motors stopped by failure injection - ``` + +::: diff --git a/docs/zh/msg_docs/Cpuload.md b/docs/zh/msg_docs/Cpuload.md index fd865702a8..643aca16fd 100644 --- a/docs/zh/msg_docs/Cpuload.md +++ b/docs/zh/msg_docs/Cpuload.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # Cpuload (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Cpuload.msg) +**TOPICS:** cpuload + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| load | `float32` | | | processor load from 0 to 1 | +| ram_usage | `float32` | | | RAM usage from 0 to 1 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Cpuload.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) float32 load # processor load from 0 to 1 float32 ram_usage # RAM usage from 0 to 1 - ``` + +::: diff --git a/docs/zh/msg_docs/DatamanRequest.md b/docs/zh/msg_docs/DatamanRequest.md index ae8701f157..1c16164745 100644 --- a/docs/zh/msg_docs/DatamanRequest.md +++ b/docs/zh/msg_docs/DatamanRequest.md @@ -1,6 +1,29 @@ +--- +pageClass: is-wide-page +--- + # DatamanRequest (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DatamanRequest.msg) +**TOPICS:** dataman_request + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| client_id | `uint8` | | | | +| request_type | `uint8` | | | id/read/write/clear | +| item | `uint8` | | | dm_item_t | +| index | `uint32` | | | | +| data | `uint8[56]` | | | | +| data_length | `uint32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DatamanRequest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +34,6 @@ uint8 item # dm_item_t uint32 index uint8[56] data uint32 data_length - ``` + +::: diff --git a/docs/zh/msg_docs/DatamanResponse.md b/docs/zh/msg_docs/DatamanResponse.md index e8cd9f5c71..b719146c23 100644 --- a/docs/zh/msg_docs/DatamanResponse.md +++ b/docs/zh/msg_docs/DatamanResponse.md @@ -1,6 +1,40 @@ +--- +pageClass: is-wide-page +--- + # DatamanResponse (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DatamanResponse.msg) +**TOPICS:** dataman_response + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| client_id | `uint8` | | | | +| request_type | `uint8` | | | id/read/write/clear | +| item | `uint8` | | | dm_item_t | +| index | `uint32` | | | | +| data | `uint8[56]` | | | | +| status | `uint8` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------------- | ------- | - | -- | +| STATUS_SUCCESS | `uint8` | 0 | | +| STATUS_FAILURE_ID_ERR | `uint8` | 1 | | +| STATUS_FAILURE_NO_DATA | `uint8` | 2 | | +| STATUS_FAILURE_READ_FAILED | `uint8` | 3 | | +| STATUS_FAILURE_WRITE_FAILED | `uint8` | 4 | | +| STATUS_FAILURE_CLEAR_FAILED | `uint8` | 5 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DatamanResponse.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +52,6 @@ uint8 STATUS_FAILURE_READ_FAILED = 3 uint8 STATUS_FAILURE_WRITE_FAILED = 4 uint8 STATUS_FAILURE_CLEAR_FAILED = 5 uint8 status - ``` + +::: diff --git a/docs/zh/msg_docs/DebugArray.md b/docs/zh/msg_docs/DebugArray.md index 1e1cacd739..e0998ce320 100644 --- a/docs/zh/msg_docs/DebugArray.md +++ b/docs/zh/msg_docs/DebugArray.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # DebugArray (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugArray.msg) +**TOPICS:** debug_array + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | ------------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| id | `uint16` | | | unique ID of debug array, used to discriminate between arrays | +| name | `char[10]` | | | name of the debug array (max. 10 characters) | +| data | `float32[58]` | | | data | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ---------------------------------------------------------- | ------- | -- | -- | +| ARRAY_SIZE | `uint8` | 58 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugArray.msg) + +:::details +Click here to see original file ```c uint8 ARRAY_SIZE = 58 @@ -8,5 +34,6 @@ uint64 timestamp # time since system start (microseconds) uint16 id # unique ID of debug array, used to discriminate between arrays char[10] name # name of the debug array (max. 10 characters) float32[58] data # data - ``` + +::: diff --git a/docs/zh/msg_docs/DebugKeyValue.md b/docs/zh/msg_docs/DebugKeyValue.md index f9d6a5bde2..66a7719589 100644 --- a/docs/zh/msg_docs/DebugKeyValue.md +++ b/docs/zh/msg_docs/DebugKeyValue.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # DebugKeyValue (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugKeyValue.msg) +**TOPICS:** debug_keyvalue + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| 键 | `char[10]` | | | max. 10 characters as key / name | +| value | `float32` | | | the value to send as debug output | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugKeyValue.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) char[10] key # max. 10 characters as key / name float32 value # the value to send as debug output - ``` + +::: diff --git a/docs/zh/msg_docs/DebugValue.md b/docs/zh/msg_docs/DebugValue.md index 04457e37cc..989c6e6371 100644 --- a/docs/zh/msg_docs/DebugValue.md +++ b/docs/zh/msg_docs/DebugValue.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # DebugValue (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugValue.msg) +**TOPICS:** debug_value + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| ind | `int8` | | | index of debug variable | +| value | `float32` | | | the value to send as debug output | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugValue.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) int8 ind # index of debug variable float32 value # the value to send as debug output - ``` + +::: diff --git a/docs/zh/msg_docs/DebugVect.md b/docs/zh/msg_docs/DebugVect.md index ec009e7279..80f1a3b2eb 100644 --- a/docs/zh/msg_docs/DebugVect.md +++ b/docs/zh/msg_docs/DebugVect.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # DebugVect (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugVect.msg) +**TOPICS:** debug_vect + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| name | `char[10]` | | | max. 10 characters as key / name | +| x | `float32` | | | x value | +| y | `float32` | | | y value | +| z | `float32` | | | z value | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugVect.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +29,6 @@ char[10] name # max. 10 characters as key / name float32 x # x value float32 y # y value float32 z # z value - ``` + +::: diff --git a/docs/zh/msg_docs/DeviceInformation.md b/docs/zh/msg_docs/DeviceInformation.md index d415461f94..e1686f4a81 100644 --- a/docs/zh/msg_docs/DeviceInformation.md +++ b/docs/zh/msg_docs/DeviceInformation.md @@ -1,11 +1,58 @@ +--- +pageClass: is-wide-page +--- + # DeviceInformation (UORB message) -Device information +Device information. Can be used to uniquely associate a device_id from a sensor topic with a physical device using serial number. as well as tracking of the used firmware versions on the devices. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DeviceInformation.msg) +**TOPICS:** device_information + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_type | `uint8` | | [DEVICE_TYPE](#DEVICE_TYPE) | Type of the device. Matches MAVLink DEVICE_TYPE enum | +| vendor_name | `char[32]` | | | Name of the device vendor | +| model_name | `char[32]` | | | Name of the device model | +| `uint32` | | | Unique device ID for the sensor. Does not change between power cycles. (Invalid: 0 if not available) | | +| firmware_version | `char[24]` | | | Firmware version. (Invalid: empty if not available) | +| hardware_version | `char[24]` | | | Hardware version. (Invalid: empty if not available) | +| serial_number | `char[33]` | | | Device serial number or unique identifier. (Invalid: empty if not available) | + +## Enums + +### DEVICE_TYPE {#DEVICE_TYPE} + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -- | ---------------------- | +| DEVICE_TYPE_GENERIC | `uint8` | 0 | Generic/unknown sensor | +| DEVICE_TYPE_AIRSPEED | `uint8` | 1 | 空速传感器 | +| DEVICE_TYPE_ESC | `uint8` | 2 | ESC | +| DEVICE_TYPE_SERVO | `uint8` | 3 | Servo | +| DEVICE_TYPE_GPS | `uint8` | 4 | GPS | +| DEVICE_TYPE_MAGNETOMETER | `uint8` | 5 | 磁力计 | +| DEVICE_TYPE_PARACHUTE | `uint8` | 6 | 降落伞 | +| DEVICE_TYPE_RANGEFINDER | `uint8` | 7 | Rangefinder | +| DEVICE_TYPE_WINCH | `uint8` | 8 | Winch | +| DEVICE_TYPE_BAROMETER | `uint8` | 9 | Barometer | +| DEVICE_TYPE_OPTICAL_FLOW | `uint8` | 10 | Optical flow | +| DEVICE_TYPE_ACCELEROMETER | `uint8` | 11 | Accelerometer | +| DEVICE_TYPE_GYROSCOPE | `uint8` | 12 | Gyroscope | +| DEVICE_TYPE_DIFFERENTIAL_PRESSURE | `uint8` | 13 | Differential pressure | +| DEVICE_TYPE_BATTERY | `uint8` | 14 | Battery | +| DEVICE_TYPE_HYGROMETER | `uint8` | 15 | Hygrometer | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DeviceInformation.msg) + +:::details +Click here to see original file ```c # Device information @@ -41,5 +88,6 @@ uint32 device_id # [-] [@invalid 0 if not available] Unique device ID char[24] firmware_version # [-] [@invalid empty if not available] Firmware version. char[24] hardware_version # [-] [@invalid empty if not available] Hardware version. char[33] serial_number # [-] [@invalid empty if not available] Device serial number or unique identifier. - ``` + +::: diff --git a/docs/zh/msg_docs/DifferentialPressure.md b/docs/zh/msg_docs/DifferentialPressure.md index 83adb2d03e..96a76b5a2d 100644 --- a/docs/zh/msg_docs/DifferentialPressure.md +++ b/docs/zh/msg_docs/DifferentialPressure.md @@ -1,11 +1,33 @@ +--- +pageClass: is-wide-page +--- + # DifferentialPressure (UORB message) -Differential-pressure (airspeed) sensor +Differential-pressure (airspeed) sensor. This is populated by airspeed sensor drivers and used by the sensor module to calculate airspeed. The information is published in the `SCALED_PRESSURE_n` MAVLink messages (along with information from a corresponding `SensorBaro` instance). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DifferentialPressure.msg) +**TOPICS:** differential_pressure + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time of publication (since system start) | +| timestamp_sample | `uint64` | us | | Time of raw data capture | +| device_id | `uint32` | | | Unique device ID for the sensor that does not change between power cycles | +| differential_pressure_pa | `float32` | Pa | | Differential pressure reading (may be negative) | +| temperature | `float32` | degC | | Temperature (Invalid: NaN if unknown) | +| error_count | `uint32` | | | Number of errors detected by driver | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DifferentialPressure.msg) + +:::details +Click here to see original file ```c # Differential-pressure (airspeed) sensor @@ -20,5 +42,6 @@ uint32 device_id # [-] Unique device ID for the sensor that doe float32 differential_pressure_pa # [Pa] Differential pressure reading (may be negative) float32 temperature # [degC] [@invalid NaN if unknown] Temperature uint32 error_count # [-] Number of errors detected by driver - ``` + +::: diff --git a/docs/zh/msg_docs/DistanceSensor.md b/docs/zh/msg_docs/DistanceSensor.md index c4d5bbc2c0..33ccfef699 100644 --- a/docs/zh/msg_docs/DistanceSensor.md +++ b/docs/zh/msg_docs/DistanceSensor.md @@ -1,8 +1,64 @@ +--- +pageClass: is-wide-page +--- + # DistanceSensor (UORB message) -DISTANCE_SENSOR message data +DISTANCE_SENSOR message data. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DistanceSensor.msg) +**TOPICS:** distance_sensor + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| min_distance | `float32` | | | Minimum distance the sensor can measure (in m) | +| max_distance | `float32` | | | Maximum distance the sensor can measure (in m) | +| current_distance | `float32` | | | Current distance reading (in m) | +| variance | `float32` | | | Measurement variance (in m^2), 0 for unknown / invalid readings | +| signal_quality | `int8` | | | Signal quality in percent (0...100%), where 0 = invalid signal, 100 = perfect signal, and -1 = unknown signal quality. | +| type | `uint8` | | | Type from MAV_DISTANCE_SENSOR enum | +| h_fov | `float32` | | | Sensor horizontal field of view (rad) | +| v_fov | `float32` | | | Sensor vertical field of view (rad) | +| q | `float32[4]` | | | Quaterion sensor orientation with respect to the vehicle body frame to specify the orientation ROTATION_CUSTOM | +| orientation | `uint8` | | | Direction the sensor faces from MAV_SENSOR_ORIENTATION enum | +| mode | `uint8` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------------------- | ------- | --- | ----------------------------------------------------------------------------------------------------------------- | +| MAV_DISTANCE_SENSOR_LASER | `uint8` | 0 | | +| MAV_DISTANCE_SENSOR_ULTRASOUND | `uint8` | 1 | | +| MAV_DISTANCE_SENSOR_INFRARED | `uint8` | 2 | | +| MAV_DISTANCE_SENSOR_RADAR | `uint8` | 3 | | +| ROTATION_YAW_0 | `uint8` | 0 | MAV_SENSOR_ROTATION_NONE | +| ROTATION_YAW_45 | `uint8` | 1 | MAV_SENSOR_ROTATION_YAW_45 | +| ROTATION_YAW_90 | `uint8` | 2 | MAV_SENSOR_ROTATION_YAW_90 | +| ROTATION_YAW_135 | `uint8` | 3 | MAV_SENSOR_ROTATION_YAW_135 | +| ROTATION_YAW_180 | `uint8` | 4 | MAV_SENSOR_ROTATION_YAW_180 | +| ROTATION_YAW_225 | `uint8` | 5 | MAV_SENSOR_ROTATION_YAW_225 | +| ROTATION_YAW_270 | `uint8` | 6 | MAV_SENSOR_ROTATION_YAW_270 | +| ROTATION_YAW_315 | `uint8` | 7 | MAV_SENSOR_ROTATION_YAW_315 | +| ROTATION_FORWARD_FACING | `uint8` | 0 | MAV_SENSOR_ROTATION_NONE | +| ROTATION_RIGHT_FACING | `uint8` | 2 | MAV_SENSOR_ROTATION_YAW_90 | +| ROTATION_BACKWARD_FACING | `uint8` | 4 | MAV_SENSOR_ROTATION_YAW_180 | +| ROTATION_LEFT_FACING | `uint8` | 6 | MAV_SENSOR_ROTATION_YAW_270 | +| ROTATION_UPWARD_FACING | `uint8` | 24 | MAV_SENSOR_ROTATION_PITCH_90 | +| ROTATION_DOWNWARD_FACING | `uint8` | 25 | MAV_SENSOR_ROTATION_PITCH_270 | +| ROTATION_CUSTOM | `uint8` | 100 | MAV_SENSOR_ROTATION_CUSTOM | +| MODE_UNKNOWN | `uint8` | 0 | | +| MODE_ENABLED | `uint8` | 1 | | +| MODE_DISABLED | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DistanceSensor.msg) + +:::details +Click here to see original file ```c # DISTANCE_SENSOR message data @@ -52,5 +108,6 @@ uint8 mode uint8 MODE_UNKNOWN = 0 uint8 MODE_ENABLED = 1 uint8 MODE_DISABLED = 2 - ``` + +::: diff --git a/docs/zh/msg_docs/DistanceSensorModeChangeRequest.md b/docs/zh/msg_docs/DistanceSensorModeChangeRequest.md index ab957de133..271c8282ac 100644 --- a/docs/zh/msg_docs/DistanceSensorModeChangeRequest.md +++ b/docs/zh/msg_docs/DistanceSensorModeChangeRequest.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # DistanceSensorModeChangeRequest (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DistanceSensorModeChangeRequest.msg) +**TOPICS:** distance_sensormode_changerequest + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_on_off | `uint8` | | | request to disable/enable the distance sensor | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------ | ------- | - | -- | +| REQUEST_OFF | `uint8` | 0 | | +| REQUEST_ON | `uint8` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DistanceSensorModeChangeRequest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +33,6 @@ uint64 timestamp # time since system start (microseconds) uint8 request_on_off # request to disable/enable the distance sensor uint8 REQUEST_OFF = 0 uint8 REQUEST_ON = 1 - ``` + +::: diff --git a/docs/zh/msg_docs/DronecanNodeStatus.md b/docs/zh/msg_docs/DronecanNodeStatus.md index 5c8a8d7862..46211f26c3 100644 --- a/docs/zh/msg_docs/DronecanNodeStatus.md +++ b/docs/zh/msg_docs/DronecanNodeStatus.md @@ -1,6 +1,43 @@ +--- +pageClass: is-wide-page +--- + # DronecanNodeStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DronecanNodeStatus.msg) +**TOPICS:** dronecan_nodestatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| node_id | `uint16` | | | The node ID which this data comes from | +| uptime_sec | `uint32` | | | Node uptime | +| health | `uint8` | | | | +| mode | `uint8` | | | | +| sub_mode | `uint8` | | | | +| vendor_specific_status_code | `uint16` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| --------------------------------------------------------------------------------------------------- | ------- | - | ------------------------------------------------------------------------------------------------- | +| HEALTH_OK | `uint8` | 0 | The node is functioning properly. | +| HEALTH_WARNING | `uint8` | 1 | A critical parameter went out of range or the node encountered a minor failure. | +| HEALTH_ERROR | `uint8` | 2 | The node encountered a major failure. | +| HEALTH_CRITICAL | `uint8` | 3 | The node suffered a fatal malfunction. | +| MODE_OPERATIONAL | `uint8` | 0 | Normal operating mode. | +| MODE_INITIALIZATION | `uint8` | 1 | Initialization is in progress; this mode is entered immediately after startup. | +| MODE_MAINTENANCE | `uint8` | 2 | E.g. calibration, the bootloader is running, etc. | +| MODE_SOFTWARE_UPDATE | `uint8` | 3 | New software/firmware is being loaded. | +| MODE_OFFLINE | `uint8` | 7 | The node is no longer available. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DronecanNodeStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -44,5 +81,6 @@ uint8 sub_mode # Optional, vendor-specific node status code, e.g. a fault code or a status bitmask. # uint16 vendor_specific_status_code - ``` + +::: diff --git a/docs/zh/msg_docs/Ekf2Timestamps.md b/docs/zh/msg_docs/Ekf2Timestamps.md index 8de695f523..c5ecbb7693 100644 --- a/docs/zh/msg_docs/Ekf2Timestamps.md +++ b/docs/zh/msg_docs/Ekf2Timestamps.md @@ -1,12 +1,38 @@ +--- +pageClass: is-wide-page +--- + # Ekf2Timestamps (UORB message) -this message contains the (relative) timestamps of the sensor inputs used by EKF2. -It can be used for reproducible replay. +this message contains the (relative) timestamps of the sensor inputs used by EKF2. It can be used for reproducible replay. -the timestamp field is the ekf2 reference time and matches the timestamp of -the sensor_combined topic. +**TOPICS:** ekf2_timestamps -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Ekf2Timestamps.msg) +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| airspeed_timestamp_rel | `int16` | | | | +| airspeed_validated_timestamp_rel | `int16` | | | | +| distance_sensor_timestamp_rel | `int16` | | | | +| optical_flow_timestamp_rel | `int16` | | | | +| vehicle_air_data_timestamp_rel | `int16` | | | | +| vehicle_magnetometer_timestamp_rel | `int16` | | | | +| visual_odometry_timestamp_rel | `int16` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| --------------------------------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------- | +| RELATIVE_TIMESTAMP_INVALID | `int16` | 32767 | (0x7fff) If one of the relative timestamps | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Ekf2Timestamps.msg) + +:::details +Click here to see original file ```c # this message contains the (relative) timestamps of the sensor inputs used by EKF2. @@ -33,5 +59,6 @@ int16 vehicle_magnetometer_timestamp_rel int16 visual_odometry_timestamp_rel # Note: this is a high-rate logged topic, so it needs to be as small as possible - ``` + +::: diff --git a/docs/zh/msg_docs/EscReport.md b/docs/zh/msg_docs/EscReport.md index 277402ae69..6fbde14d4c 100644 --- a/docs/zh/msg_docs/EscReport.md +++ b/docs/zh/msg_docs/EscReport.md @@ -1,6 +1,62 @@ +--- +pageClass: is-wide-page +--- + # EscReport (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscReport.msg) +**TOPICS:** esc_report + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| esc_errorcount | `uint32` | | | Number of reported errors by ESC - if supported | +| esc_rpm | `int32` | | | Motor RPM, negative for reverse rotation [RPM] - if supported | +| esc_voltage | `float32` | | | Voltage measured from current ESC [V] - if supported | +| esc_current | `float32` | | | Current measured from current ESC [A] - if supported | +| esc_temperature | `float32` | | | Temperature measured from current ESC [degC] - if supported | +| esc_address | `uint8` | | | Address of current ESC (in most cases 1-8 / must be set by driver) | +| esc_cmdcount | `uint8` | | | Counter of number of commands | +| esc_state | `uint8` | | | State of ESC - depend on Vendor | +| actuator_function | `uint8` | | | actuator output function (one of Motor1...MotorN) | +| failures | `uint16` | | | Bitmask to indicate the internal ESC faults | +| esc_power | `int8` | | | Applied power 0-100 in % (negative values reserved) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------------------- | ------- | --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| ACTUATOR_FUNCTION_MOTOR1 | `uint8` | 101 | | +| ACTUATOR_FUNCTION_MOTOR2 | `uint8` | 102 | | +| ACTUATOR_FUNCTION_MOTOR3 | `uint8` | 103 | | +| ACTUATOR_FUNCTION_MOTOR4 | `uint8` | 104 | | +| ACTUATOR_FUNCTION_MOTOR5 | `uint8` | 105 | | +| ACTUATOR_FUNCTION_MOTOR6 | `uint8` | 106 | | +| ACTUATOR_FUNCTION_MOTOR7 | `uint8` | 107 | | +| ACTUATOR_FUNCTION_MOTOR8 | `uint8` | 108 | | +| ACTUATOR_FUNCTION_MOTOR9 | `uint8` | 109 | | +| ACTUATOR_FUNCTION_MOTOR10 | `uint8` | 110 | | +| ACTUATOR_FUNCTION_MOTOR11 | `uint8` | 111 | | +| ACTUATOR_FUNCTION_MOTOR12 | `uint8` | 112 | | +| FAILURE_OVER_CURRENT | `uint8` | 0 | (1 << 0) | +| FAILURE_OVER_VOLTAGE | `uint8` | 1 | (1 << 1) | +| FAILURE_MOTOR_OVER_TEMPERATURE | `uint8` | 2 | (1 << 2) | +| FAILURE_OVER_RPM | `uint8` | 3 | (1 << 3) | +| FAILURE_INCONSISTENT_CMD | `uint8` | 4 | (1 << 4) Set if ESC received an inconsistent command (i.e out of boundaries) | +| FAILURE_MOTOR_STUCK | `uint8` | 5 | (1 << 5) | +| FAILURE_GENERIC | `uint8` | 6 | (1 << 6) | +| FAILURE_MOTOR_WARN_TEMPERATURE | `uint8` | 7 | (1 << 7) | +| FAILURE_WARN_ESC_TEMPERATURE | `uint8` | 8 | (1 << 8) | +| FAILURE_OVER_ESC_TEMPERATURE | `uint8` | 9 | (1 << 9) | +| ESC_FAILURE_COUNT | `uint8` | 10 | Counter - keep it as last element! | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscReport.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -43,5 +99,6 @@ uint8 FAILURE_MOTOR_WARN_TEMPERATURE = 7 # (1 << 7) uint8 FAILURE_WARN_ESC_TEMPERATURE = 8 # (1 << 8) uint8 FAILURE_OVER_ESC_TEMPERATURE = 9 # (1 << 9) uint8 ESC_FAILURE_COUNT = 10 # Counter - keep it as last element! - ``` + +::: diff --git a/docs/zh/msg_docs/EscStatus.md b/docs/zh/msg_docs/EscStatus.md index 97ca475568..96e7990067 100644 --- a/docs/zh/msg_docs/EscStatus.md +++ b/docs/zh/msg_docs/EscStatus.md @@ -1,6 +1,41 @@ +--- +pageClass: is-wide-page +--- + # EscStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscStatus.msg) +**TOPICS:** esc_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------- | -------------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| counter | `uint16` | | | incremented by the writing thread everytime new data is stored | +| esc_count | `uint8` | | | number of connected ESCs | +| esc_connectiontype | `uint8` | | | how ESCs connected to the system | +| esc_online_flags | `uint8` | | | Bitmask indicating which ESC is online/offline | +| esc_armed_flags | `uint8` | | | Bitmask indicating which ESC is armed. For ESC's where the arming state is not known (returned by the ESC), the arming bits should always be set. | +| esc | `EscReport[8]` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------------- | ------- | - | ---------------------------------------------------------------------------------------------------- | +| CONNECTED_ESC_MAX | `uint8` | 8 | The number of ESCs supported. Current (Q2/2013) we support 8 ESCs | +| ESC_CONNECTION_TYPE_PPM | `uint8` | 0 | Traditional PPM ESC | +| ESC_CONNECTION_TYPE_SERIAL | `uint8` | 1 | Serial Bus connected ESC | +| ESC_CONNECTION_TYPE_ONESHOT | `uint8` | 2 | One Shot PPM | +| ESC_CONNECTION_TYPE_I2C | `uint8` | 3 | I2C | +| ESC_CONNECTION_TYPE_CAN | `uint8` | 4 | CAN-Bus | +| ESC_CONNECTION_TYPE_DSHOT | `uint8` | 5 | DShot | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -31,5 +66,6 @@ uint8 esc_online_flags # Bitmask indicating which ESC is online/offline uint8 esc_armed_flags # Bitmask indicating which ESC is armed. For ESC's where the arming state is not known (returned by the ESC), the arming bits should always be set. EscReport[8] esc - ``` + +::: diff --git a/docs/zh/msg_docs/EstimatorAidSource1d.md b/docs/zh/msg_docs/EstimatorAidSource1d.md index da73b0859f..09f39597a7 100644 --- a/docs/zh/msg_docs/EstimatorAidSource1d.md +++ b/docs/zh/msg_docs/EstimatorAidSource1d.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # EstimatorAidSource1d (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource1d.msg) +**TOPICS:** estimator_aid_src_baro_hgt estimator_aid_src_ev_hgt estimator_aid_src_gnss_hgt estimator_aid_src_rng_hgt estimator_aid_src_airspeed estimator_aid_src_sideslip estimator_aid_src_fake_hgt estimator_aid_src_gnss_yaw estimator_aid_src_ev_yaw + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| estimator_instance | `uint8` | | | | +| device_id | `uint32` | | | | +| time_last_fuse | `uint64` | | | | +| observation | `float32` | | | | +| observation_variance | `float32` | | | | +| innovation | `float32` | | | | +| innovation_filtered | `float32` | | | | +| innovation_variance | `float32` | | | | +| test_ratio | `float32` | | | normalized innovation squared | +| test_ratio_filtered | `float32` | | | signed filtered test ratio | +| innovation_rejected | `bool` | | | true if the observation has been rejected | +| fused | `bool` | | | true if the sample was successfully fused | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource1d.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -30,5 +60,6 @@ bool fused # true if the sample was successfully fused # TOPICS estimator_aid_src_airspeed estimator_aid_src_sideslip # TOPICS estimator_aid_src_fake_hgt # TOPICS estimator_aid_src_gnss_yaw estimator_aid_src_ev_yaw - ``` + +::: diff --git a/docs/zh/msg_docs/EstimatorAidSource2d.md b/docs/zh/msg_docs/EstimatorAidSource2d.md index 9714e3491d..d1334504bc 100644 --- a/docs/zh/msg_docs/EstimatorAidSource2d.md +++ b/docs/zh/msg_docs/EstimatorAidSource2d.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # EstimatorAidSource2d (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource2d.msg) +**TOPICS:** estimator_aid_src_ev_pos estimator_aid_src_fake_pos estimator_aid_src_gnss_pos estimator_aid_src_aux_global_position estimator_aid_src_aux_vel estimator_aid_src_optical_flow estimator_aid_src_drag + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| estimator_instance | `uint8` | | | | +| device_id | `uint32` | | | | +| time_last_fuse | `uint64` | | | | +| observation | `float64[2]` | | | | +| observation_variance | `float32[2]` | | | | +| innovation | `float32[2]` | | | | +| innovation_filtered | `float32[2]` | | | | +| innovation_variance | `float32[2]` | | | | +| test_ratio | `float32[2]` | | | normalized innovation squared | +| test_ratio_filtered | `float32[2]` | | | signed filtered test ratio | +| innovation_rejected | `bool` | | | true if the observation has been rejected | +| fused | `bool` | | | true if the sample was successfully fused | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource2d.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -29,5 +59,6 @@ bool fused # true if the sample was successfully fused # TOPICS estimator_aid_src_ev_pos estimator_aid_src_fake_pos estimator_aid_src_gnss_pos estimator_aid_src_aux_global_position # TOPICS estimator_aid_src_aux_vel estimator_aid_src_optical_flow # TOPICS estimator_aid_src_drag - ``` + +::: diff --git a/docs/zh/msg_docs/EstimatorAidSource3d.md b/docs/zh/msg_docs/EstimatorAidSource3d.md index 69b38719a3..79df9d8eae 100644 --- a/docs/zh/msg_docs/EstimatorAidSource3d.md +++ b/docs/zh/msg_docs/EstimatorAidSource3d.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # EstimatorAidSource3d (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource3d.msg) +**TOPICS:** estimator_aid_src_ev_vel estimator_aid_src_gnss_vel estimator_aid_src_gravity estimator_aid_src_mag + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| estimator_instance | `uint8` | | | | +| device_id | `uint32` | | | | +| time_last_fuse | `uint64` | | | | +| observation | `float32[3]` | | | | +| observation_variance | `float32[3]` | | | | +| innovation | `float32[3]` | | | | +| innovation_filtered | `float32[3]` | | | | +| innovation_variance | `float32[3]` | | | | +| test_ratio | `float32[3]` | | | normalized innovation squared | +| test_ratio_filtered | `float32[3]` | | | signed filtered test ratio | +| innovation_rejected | `bool` | | | true if the observation has been rejected | +| fused | `bool` | | | true if the sample was successfully fused | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource3d.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -27,5 +57,6 @@ bool innovation_rejected # true if the observation has been rejected bool fused # true if the sample was successfully fused # TOPICS estimator_aid_src_ev_vel estimator_aid_src_gnss_vel estimator_aid_src_gravity estimator_aid_src_mag - ``` + +::: diff --git a/docs/zh/msg_docs/EstimatorBias.md b/docs/zh/msg_docs/EstimatorBias.md index fa911d05b8..e286acdc3c 100644 --- a/docs/zh/msg_docs/EstimatorBias.md +++ b/docs/zh/msg_docs/EstimatorBias.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # EstimatorBias (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorBias.msg) +**TOPICS:** estimator_baro_bias estimator_gnss_hgt_bias + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| bias | `float32` | | | estimated barometric altitude bias (m) | +| bias_var | `float32` | | | estimated barometric altitude bias variance (m^2) | +| innov | `float32` | | | innovation of the last measurement fusion (m) | +| innov_var | `float32` | | | innovation variance of the last measurement fusion (m^2) | +| innov_test_ratio | `float32` | | | normalized innovation squared test ratio | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorBias.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -15,5 +39,6 @@ float32 innov_var # innovation variance of the last measurement fusion (m^2) float32 innov_test_ratio # normalized innovation squared test ratio # TOPICS estimator_baro_bias estimator_gnss_hgt_bias - ``` + +::: diff --git a/docs/zh/msg_docs/EstimatorBias3d.md b/docs/zh/msg_docs/EstimatorBias3d.md index 7fff18ae25..f42a4993c7 100644 --- a/docs/zh/msg_docs/EstimatorBias3d.md +++ b/docs/zh/msg_docs/EstimatorBias3d.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # EstimatorBias3d (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorBias3d.msg) +**TOPICS:** estimator_bias3d estimator_ev_pos_bias + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| bias | `float32[3]` | | | estimated barometric altitude bias (m) | +| bias_var | `float32[3]` | | | estimated barometric altitude bias variance (m^2) | +| innov | `float32[3]` | | | innovation of the last measurement fusion (m) | +| innov_var | `float32[3]` | | | innovation variance of the last measurement fusion (m^2) | +| innov_test_ratio | `float32[3]` | | | normalized innovation squared test ratio | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorBias3d.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -17,5 +41,6 @@ float32[3] innov_test_ratio # normalized innovation squared test ratio # TOPICS estimator_bias3d # TOPICS estimator_ev_pos_bias - ``` + +::: diff --git a/docs/zh/msg_docs/EstimatorEventFlags.md b/docs/zh/msg_docs/EstimatorEventFlags.md index 54f333d788..811b5ad12f 100644 --- a/docs/zh/msg_docs/EstimatorEventFlags.md +++ b/docs/zh/msg_docs/EstimatorEventFlags.md @@ -1,6 +1,42 @@ +--- +pageClass: is-wide-page +--- + # EstimatorEventFlags (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorEventFlags.msg) +**TOPICS:** estimator_eventflags + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| information_event_changes | `uint32` | | | number of information event changes | +| gps_checks_passed | `bool` | | | 0 - true when gps quality checks are passing passed | +| reset_vel_to_gps | `bool` | | | 1 - true when the velocity states are reset to the gps measurement | +| reset_vel_to_flow | `bool` | | | 2 - true when the velocity states are reset using the optical flow measurement | +| reset_vel_to_vision | `bool` | | | 3 - true when the velocity states are reset to the vision system measurement | +| reset_vel_to_zero | `bool` | | | 4 - true when the velocity states are reset to zero | +| reset_pos_to_last_known | `bool` | | | 5 - true when the position states are reset to the last known position | +| reset_pos_to_gps | `bool` | | | 6 - true when the position states are reset to the gps measurement | +| reset_pos_to_vision | `bool` | | | 7 - true when the position states are reset to the vision system measurement | +| starting_gps_fusion | `bool` | | | 8 - true when the filter starts using gps measurements to correct the state estimates | +| starting_vision_pos_fusion | `bool` | | | 9 - true when the filter starts using vision system position measurements to correct the state estimates | +| starting_vision_vel_fusion | `bool` | | | 10 - true when the filter starts using vision system velocity measurements to correct the state estimates | +| starting_vision_yaw_fusion | `bool` | | | 11 - true when the filter starts using vision system yaw measurements to correct the state estimates | +| yaw_aligned_to_imu_gps | `bool` | | | 12 - true when the filter resets the yaw to an estimate derived from IMU and GPS data | +| reset_hgt_to_baro | `bool` | | | 13 - true when the vertical position state is reset to the baro measurement | +| reset_hgt_to_gps | `bool` | | | 14 - true when the vertical position state is reset to the gps measurement | +| reset_hgt_to_rng | `bool` | | | 15 - true when the vertical position state is reset to the rng measurement | +| reset_hgt_to_ev | `bool` | | | 16 - true when the vertical position state is reset to the ev measurement | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorEventFlags.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -25,5 +61,6 @@ bool reset_hgt_to_baro # 13 - true when the vertical position s bool reset_hgt_to_gps # 14 - true when the vertical position state is reset to the gps measurement bool reset_hgt_to_rng # 15 - true when the vertical position state is reset to the rng measurement bool reset_hgt_to_ev # 16 - true when the vertical position state is reset to the ev measurement - ``` + +::: diff --git a/docs/zh/msg_docs/EstimatorGpsStatus.md b/docs/zh/msg_docs/EstimatorGpsStatus.md index 1833682def..2d32b4aac5 100644 --- a/docs/zh/msg_docs/EstimatorGpsStatus.md +++ b/docs/zh/msg_docs/EstimatorGpsStatus.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # EstimatorGpsStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorGpsStatus.msg) +**TOPICS:** estimator_gpsstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| checks_passed | `bool` | | | | +| check_fail_gps_fix | `bool` | | | 0 : insufficient fix type (no 3D solution) | +| check_fail_min_sat_count | `bool` | | | 1 : minimum required sat count fail | +| check_fail_max_pdop | `bool` | | | 2 : maximum allowed PDOP fail | +| check_fail_max_horz_err | `bool` | | | 3 : maximum allowed horizontal position error fail | +| check_fail_max_vert_err | `bool` | | | 4 : maximum allowed vertical position error fail | +| check_fail_max_spd_err | `bool` | | | 5 : maximum allowed speed error fail | +| check_fail_max_horz_drift | `bool` | | | 6 : maximum allowed horizontal position drift fail - requires stationary vehicle | +| check_fail_max_vert_drift | `bool` | | | 7 : maximum allowed vertical position drift fail - requires stationary vehicle | +| check_fail_max_horz_spd_err | `bool` | | | 8 : maximum allowed horizontal speed fail - requires stationary vehicle | +| check_fail_max_vert_spd_err | `bool` | | | 9 : maximum allowed vertical velocity discrepancy fail | +| check_fail_spoofed_gps | `bool` | | | 10 : GPS signal is spoofed | +| position_drift_rate_horizontal_m_s | `float32` | | | Horizontal position rate magnitude (m/s) | +| position_drift_rate_vertical_m_s | `float32` | | | Vertical position rate magnitude (m/s) | +| filtered_horizontal_speed_m_s | `float32` | | | Filtered horizontal velocity magnitude (m/s) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorGpsStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -23,5 +56,6 @@ bool check_fail_spoofed_gps # 10 : GPS signal is spoofed float32 position_drift_rate_horizontal_m_s # Horizontal position rate magnitude (m/s) float32 position_drift_rate_vertical_m_s # Vertical position rate magnitude (m/s) float32 filtered_horizontal_speed_m_s # Filtered horizontal velocity magnitude (m/s) - ``` + +::: diff --git a/docs/zh/msg_docs/EstimatorInnovations.md b/docs/zh/msg_docs/EstimatorInnovations.md index 59014ef15b..09a2aef8d2 100644 --- a/docs/zh/msg_docs/EstimatorInnovations.md +++ b/docs/zh/msg_docs/EstimatorInnovations.md @@ -1,6 +1,44 @@ +--- +pageClass: is-wide-page +--- + # EstimatorInnovations (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorInnovations.msg) +**TOPICS:** estimator_innovations estimator_innovation_variances estimator_innovation_test_ratios + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| gps_hvel | `float32[2]` | | | horizontal GPS velocity innovation (m/sec) and innovation variance ((m/sec)\*\*2) | +| `float32` | | | vertical GPS velocity innovation (m/sec) and innovation variance ((m/sec)\*\*2) | | +| gps_hpos | `float32[2]` | | | horizontal GPS position innovation (m) and innovation variance (m\*\*2) | +| `float32` | | | vertical GPS position innovation (m) and innovation variance (m\*\*2) | | +| ev_hvel | `float32[2]` | | | horizontal external vision velocity innovation (m/sec) and innovation variance ((m/sec)\*\*2) | +| `float32` | | | vertical external vision velocity innovation (m/sec) and innovation variance ((m/sec)\*\*2) | | +| ev_hpos | `float32[2]` | | | horizontal external vision position innovation (m) and innovation variance (m\*\*2) | +| `float32` | | | vertical external vision position innovation (m) and innovation variance (m\*\*2) | | +| rng_vpos | `float32` | | | range sensor height innovation (m) and innovation variance (m\*\*2) | +| baro_vpos | `float32` | | | barometer height innovation (m) and innovation variance (m\*\*2) | +| aux_hvel | `float32[2]` | | | horizontal auxiliary velocity innovation from landing target measurement (m/sec) and innovation variance ((m/sec)\*\*2) | +| flow | `float32[2]` | | | flow innvoation (rad/sec) and innovation variance ((rad/sec)\*\*2) | +| heading | `float32` | | | heading innovation (rad) and innovation variance (rad\*\*2) | +| mag_field | `float32[3]` | | | earth magnetic field innovation (Gauss) and innovation variance (Gauss\*\*2) | +| gravity | `float32[3]` | | | gravity innovation from accelerometerr vector (m/s\*\*2) | +| drag | `float32[2]` | | | drag specific force innovation (m/sec\*\*2) and innovation variance ((m/sec)\*\*2) | +| airspeed | `float32` | | | airspeed innovation (m/sec) and innovation variance ((m/sec)\*\*2) | +| beta | `float32` | | | synthetic sideslip innovation (rad) and innovation variance (rad\*\*2) | +| hagl | `float32` | | | height of ground innovation (m) and innovation variance (m\*\*2) | +| hagl_rate | `float32` | | | height of ground rate innovation (m/s) and innovation variance ((m/s)\*\*2) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorInnovations.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -42,5 +80,6 @@ float32 hagl_rate # height of ground rate innovation (m/s) and innovation varian # the test ratio will be put in the first component of the vector. # TOPICS estimator_innovations estimator_innovation_variances estimator_innovation_test_ratios - ``` + +::: diff --git a/docs/zh/msg_docs/EstimatorSelectorStatus.md b/docs/zh/msg_docs/EstimatorSelectorStatus.md index fd1145e2dc..79e16d52f9 100644 --- a/docs/zh/msg_docs/EstimatorSelectorStatus.md +++ b/docs/zh/msg_docs/EstimatorSelectorStatus.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # EstimatorSelectorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorSelectorStatus.msg) +**TOPICS:** estimator_selectorstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| primary_instance | `uint8` | | | | +| instances_available | `uint8` | | | | +| instance_changed_count | `uint32` | | | | +| last_instance_change | `uint64` | | | | +| accel_device_id | `uint32` | | | | +| baro_device_id | `uint32` | | | | +| gyro_device_id | `uint32` | | | | +| mag_device_id | `uint32` | | | | +| combined_test_ratio | `float32[9]` | | | | +| relative_test_ratio | `float32[9]` | | | | +| healthy | `bool[9]` | | | | +| accumulated_gyro_error | `float32[4]` | | | | +| accumulated_accel_error | `float32[4]` | | | | +| gyro_fault_detected | `bool` | | | | +| accel_fault_detected | `bool` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorSelectorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -25,5 +57,6 @@ float32[4] accumulated_gyro_error float32[4] accumulated_accel_error bool gyro_fault_detected bool accel_fault_detected - ``` + +::: diff --git a/docs/zh/msg_docs/EstimatorSensorBias.md b/docs/zh/msg_docs/EstimatorSensorBias.md index 9b4a1d66c2..3f1da574de 100644 --- a/docs/zh/msg_docs/EstimatorSensorBias.md +++ b/docs/zh/msg_docs/EstimatorSensorBias.md @@ -1,9 +1,44 @@ +--- +pageClass: is-wide-page +--- + # EstimatorSensorBias (UORB message) -Sensor readings and in-run biases in SI-unit form. Sensor readings are compensated for static offsets, -scale errors, in-run bias and thermal drift (if thermal compensation is enabled and available). +Sensor readings and in-run biases in SI-unit form. Sensor readings are compensated for static offsets,. scale errors, in-run bias and thermal drift (if thermal compensation is enabled and available). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorSensorBias.msg) +**TOPICS:** estimator_sensorbias + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| gyro_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| gyro_bias | `float32[3]` | | | gyroscope in-run bias in body frame (rad/s) | +| gyro_bias_limit | `float32` | | | magnitude of maximum gyroscope in-run bias in body frame (rad/s) | +| gyro_bias_variance | `float32[3]` | | | | +| gyro_bias_valid | `bool` | | | | +| gyro_bias_stable | `bool` | | | true when the gyro bias estimate is stable enough to use for calibration | +| accel_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| accel_bias | `float32[3]` | | | accelerometer in-run bias in body frame (m/s^2) | +| accel_bias_limit | `float32` | | | magnitude of maximum accelerometer in-run bias in body frame (m/s^2) | +| accel_bias_variance | `float32[3]` | | | | +| accel_bias_valid | `bool` | | | | +| accel_bias_stable | `bool` | | | true when the accel bias estimate is stable enough to use for calibration | +| mag_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| mag_bias | `float32[3]` | | | magnetometer in-run bias in body frame (Gauss) | +| mag_bias_limit | `float32` | | | magnitude of maximum magnetometer in-run bias in body frame (Gauss) | +| mag_bias_variance | `float32[3]` | | | | +| mag_bias_valid | `bool` | | | | +| mag_bias_stable | `bool` | | | true when the mag bias estimate is stable enough to use for calibration | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorSensorBias.msg) + +:::details +Click here to see original file ```c # @@ -36,5 +71,6 @@ float32 mag_bias_limit # magnitude of maximum magnetometer in-run bias float32[3] mag_bias_variance bool mag_bias_valid bool mag_bias_stable # true when the mag bias estimate is stable enough to use for calibration - ``` + +::: diff --git a/docs/zh/msg_docs/EstimatorStates.md b/docs/zh/msg_docs/EstimatorStates.md index 7d13493ca9..08714776c3 100644 --- a/docs/zh/msg_docs/EstimatorStates.md +++ b/docs/zh/msg_docs/EstimatorStates.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # EstimatorStates (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStates.msg) +**TOPICS:** estimator_states + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ------------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| states | `float32[25]` | | | Internal filter states | +| n_states | `uint8` | | | Number of states effectively used | +| covariances | `float32[24]` | | | Diagonal Elements of Covariance Matrix | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStates.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +31,6 @@ float32[25] states # Internal filter states uint8 n_states # Number of states effectively used float32[24] covariances # Diagonal Elements of Covariance Matrix - ``` + +::: diff --git a/docs/zh/msg_docs/EstimatorStatus.md b/docs/zh/msg_docs/EstimatorStatus.md index aca77484b9..c6738a439d 100644 --- a/docs/zh/msg_docs/EstimatorStatus.md +++ b/docs/zh/msg_docs/EstimatorStatus.md @@ -1,6 +1,109 @@ +--- +pageClass: is-wide-page +--- + # EstimatorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatus.msg) +**TOPICS:** estimator_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| output_tracking_error | `float32[3]` | | | return a vector containing the output predictor angular, velocity and position tracking error magnitudes (rad), (m/s), (m) | +| gps_check_fail_flags | `uint16` | | | Bitmask to indicate status of GPS checks - see definition below | +| control_mode_flags | `uint64` | | | Bitmask to indicate EKF logic state | +| filter_fault_flags | `uint32` | | | Bitmask to indicate EKF internal faults | +| pos_horiz_accuracy | `float32` | | | 1-Sigma estimated horizontal position accuracy relative to the estimators origin (m) | +| pos_vert_accuracy | `float32` | | | 1-Sigma estimated vertical position accuracy relative to the estimators origin (m) | +| hdg_test_ratio | `float32` | | | low-pass filtered ratio of the largest heading innovation component to the innovation test limit | +| vel_test_ratio | `float32` | | | low-pass filtered ratio of the largest velocity innovation component to the innovation test limit | +| pos_test_ratio | `float32` | | | low-pass filtered ratio of the largest horizontal position innovation component to the innovation test limit | +| hgt_test_ratio | `float32` | | | low-pass filtered ratio of the vertical position innovation to the innovation test limit | +| tas_test_ratio | `float32` | | | low-pass filtered ratio of the true airspeed innovation to the innovation test limit | +| hagl_test_ratio | `float32` | | | low-pass filtered ratio of the height above ground innovation to the innovation test limit | +| beta_test_ratio | `float32` | | | low-pass filtered ratio of the synthetic sideslip innovation to the innovation test limit | +| solution_status_flags | `uint16` | | | Bitmask indicating which filter kinematic state outputs are valid for flight control use. | +| reset_count_vel_ne | `uint8` | | | number of horizontal position reset events (allow to wrap if count exceeds 255) | +| reset_count_vel_d | `uint8` | | | number of vertical velocity reset events (allow to wrap if count exceeds 255) | +| reset_count_pos_ne | `uint8` | | | number of horizontal position reset events (allow to wrap if count exceeds 255) | +| reset_count_pod_d | `uint8` | | | number of vertical position reset events (allow to wrap if count exceeds 255) | +| reset_count_quat | `uint8` | | | number of quaternion reset events (allow to wrap if count exceeds 255) | +| time_slip | `float32` | | | cumulative amount of time in seconds that the EKF inertial calculation has slipped relative to system time | +| pre_flt_fail_innov_heading | `bool` | | | | +| pre_flt_fail_innov_height | `bool` | | | | +| pre_flt_fail_innov_pos_horiz | `bool` | | | | +| pre_flt_fail_innov_vel_horiz | `bool` | | | | +| pre_flt_fail_innov_vel_vert | `bool` | | | | +| pre_flt_fail_mag_field_disturbed | `bool` | | | | +| accel_device_id | `uint32` | | | | +| gyro_device_id | `uint32` | | | | +| baro_device_id | `uint32` | | | | +| mag_device_id | `uint32` | | | | +| health_flags | `uint8` | | | Bitmask to indicate sensor health states (vel, pos, hgt) | +| timeout_flags | `uint8` | | | Bitmask to indicate timeout flags (vel, pos, hgt) | +| mag_inclination_deg | `float32` | | | | +| mag_inclination_ref_deg | `float32` | | | | +| mag_strength_gs | `float32` | | | | +| mag_strength_ref_gs | `float32` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -- | ------------------------------------------------------------------------------------------------- | +| GPS_CHECK_FAIL_GPS_FIX | `uint8` | 0 | 0 : insufficient fix type (no 3D solution) | +| GPS_CHECK_FAIL_MIN_SAT_COUNT | `uint8` | 1 | 1 : minimum required sat count fail | +| GPS_CHECK_FAIL_MAX_PDOP | `uint8` | 2 | 2 : maximum allowed PDOP fail | +| GPS_CHECK_FAIL_MAX_HORZ_ERR | `uint8` | 3 | 3 : maximum allowed horizontal position error fail | +| GPS_CHECK_FAIL_MAX_VERT_ERR | `uint8` | 4 | 4 : maximum allowed vertical position error fail | +| GPS_CHECK_FAIL_MAX_SPD_ERR | `uint8` | 5 | 5 : maximum allowed speed error fail | +| GPS_CHECK_FAIL_MAX_HORZ_DRIFT | `uint8` | 6 | 6 : maximum allowed horizontal position drift fail - requires stationary vehicle | +| GPS_CHECK_FAIL_MAX_VERT_DRIFT | `uint8` | 7 | 7 : maximum allowed vertical position drift fail - requires stationary vehicle | +| GPS_CHECK_FAIL_MAX_HORZ_SPD_ERR | `uint8` | 8 | 8 : maximum allowed horizontal speed fail - requires stationary vehicle | +| GPS_CHECK_FAIL_MAX_VERT_SPD_ERR | `uint8` | 9 | 9 : maximum allowed vertical velocity discrepancy fail | +| GPS_CHECK_FAIL_SPOOFED | `uint8` | 10 | 10 : GPS signal is spoofed | +| GPS_CHECK_FAIL_JAMMED | `uint8` | 11 | 11 : GPS signal is jammed | +| CS_TILT_ALIGN | `uint8` | 0 | 0 - true if the filter tilt alignment is complete | +| CS_YAW_ALIGN | `uint8` | 1 | 1 - true if the filter yaw alignment is complete | +| CS_GNSS_POS | `uint8` | 2 | 2 - true if GNSS position measurements are being fused | +| CS_OPT_FLOW | `uint8` | 3 | 3 - true if optical flow measurements are being fused | +| CS_MAG_HDG | `uint8` | 4 | 4 - true if a simple magnetic yaw heading is being fused | +| CS_MAG_3D | `uint8` | 5 | 5 - true if 3-axis magnetometer measurement are being fused | +| CS_MAG_DEC | `uint8` | 6 | 6 - true if synthetic magnetic declination measurements are being fused | +| CS_IN_AIR | `uint8` | 7 | 7 - true when thought to be airborne | +| CS_WIND | `uint8` | 8 | 8 - true when wind velocity is being estimated | +| CS_BARO_HGT | `uint8` | 9 | 9 - true when baro data is being fused | +| CS_RNG_HGT | `uint8` | 10 | 10 - true when range finder data is being fused for height aiding | +| CS_GPS_HGT | `uint8` | 11 | 11 - true when GPS altitude is being fused | +| CS_EV_POS | `uint8` | 12 | 12 - true when local position data from external vision is being fused | +| CS_EV_YAW | `uint8` | 13 | 13 - true when yaw data from external vision measurements is being fused | +| CS_EV_HGT | `uint8` | 14 | 14 - true when height data from external vision measurements is being fused | +| CS_BETA | `uint8` | 15 | 15 - true when synthetic sideslip measurements are being fused | +| CS_MAG_FIELD | `uint8` | 16 | 16 - true when only the magnetic field states are updated by the magnetometer | +| CS_FIXED_WING | `uint8` | 17 | 17 - true when thought to be operating as a fixed wing vehicle with constrained sideslip | +| CS_MAG_FAULT | `uint8` | 18 | 18 - true when the magnetometer has been declared faulty and is no longer being used | +| CS_ASPD | `uint8` | 19 | 19 - true when airspeed measurements are being fused | +| CS_GND_EFFECT | `uint8` | 20 | 20 - true when when protection from ground effect induced static pressure rise is active | +| CS_RNG_STUCK | `uint8` | 21 | 21 - true when a stuck range finder sensor has been detected | +| CS_GPS_YAW | `uint8` | 22 | 22 - true when yaw (not ground course) data from a GPS receiver is being fused | +| CS_MAG_ALIGNED | `uint8` | 23 | 23 - true when the in-flight mag field alignment has been completed | +| CS_EV_VEL | `uint8` | 24 | 24 - true when local frame velocity data fusion from external vision measurements is intended | +| CS_SYNTHETIC_MAG_Z | `uint8` | 25 | 25 - true when we are using a synthesized measurement for the magnetometer Z component | +| CS_VEHICLE_AT_REST | `uint8` | 26 | 26 - true when the vehicle is at rest | +| CS_GPS_YAW_FAULT | `uint8` | 27 | 27 - true when the GNSS heading has been declared faulty and is no longer being used | +| CS_RNG_FAULT | `uint8` | 28 | 28 - true when the range finder has been declared faulty and is no longer being used | +| CS_GNSS_VEL | `uint8` | 44 | 44 - true if GNSS velocity measurement fusion is intended | +| CS_GNSS_FAULT | `uint8` | 45 | 45 - true if GNSS measurements have been declared faulty and are no longer used | +| CS_YAW_MANUAL | `uint8` | 46 | 46 - true if yaw has been set manually | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -130,5 +233,6 @@ float32 mag_inclination_deg float32 mag_inclination_ref_deg float32 mag_strength_gs float32 mag_strength_ref_gs - ``` + +::: diff --git a/docs/zh/msg_docs/EstimatorStatusFlags.md b/docs/zh/msg_docs/EstimatorStatusFlags.md index aa7250fe1e..3b9e09d810 100644 --- a/docs/zh/msg_docs/EstimatorStatusFlags.md +++ b/docs/zh/msg_docs/EstimatorStatusFlags.md @@ -1,6 +1,85 @@ +--- +pageClass: is-wide-page +--- + # EstimatorStatusFlags (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatusFlags.msg) +**TOPICS:** estimator_statusflags + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| control_status_changes | `uint32` | | | number of filter control status (cs) changes | +| cs_tilt_align | `bool` | | | 0 - true if the filter tilt alignment is complete | +| cs_yaw_align | `bool` | | | 1 - true if the filter yaw alignment is complete | +| cs_gnss_pos | `bool` | | | 2 - true if GNSS position measurement fusion is intended | +| cs_opt_flow | `bool` | | | 3 - true if optical flow measurements fusion is intended | +| cs_mag_hdg | `bool` | | | 4 - true if a simple magnetic yaw heading fusion is intended | +| cs_mag_3d | `bool` | | | 5 - true if 3-axis magnetometer measurement fusion is intended | +| cs_mag_dec | `bool` | | | 6 - true if synthetic magnetic declination measurements fusion is intended | +| cs_in_air | `bool` | | | 7 - true when the vehicle is airborne | +| cs_wind | `bool` | | | 8 - true when wind velocity is being estimated | +| cs_baro_hgt | `bool` | | | 9 - true when baro data is being fused | +| cs_rng_hgt | `bool` | | | 10 - true when range finder data is being fused for height aiding | +| cs_gps_hgt | `bool` | | | 11 - true when GPS altitude is being fused | +| cs_ev_pos | `bool` | | | 12 - true when local position data fusion from external vision is intended | +| cs_ev_yaw | `bool` | | | 13 - true when yaw data from external vision measurements fusion is intended | +| cs_ev_hgt | `bool` | | | 14 - true when height data from external vision measurements is being fused | +| cs_fuse_beta | `bool` | | | 15 - true when synthetic sideslip measurements are being fused | +| cs_mag_field_disturbed | `bool` | | | 16 - true when the mag field does not match the expected strength | +| cs_fixed_wing | `bool` | | | 17 - true when the vehicle is operating as a fixed wing vehicle | +| cs_mag_fault | `bool` | | | 18 - true when the magnetometer has been declared faulty and is no longer being used | +| cs_fuse_aspd | `bool` | | | 19 - true when airspeed measurements are being fused | +| cs_gnd_effect | `bool` | | | 20 - true when protection from ground effect induced static pressure rise is active | +| cs_rng_stuck | `bool` | | | 21 - true when rng data wasn't ready for more than 10s and new rng values haven't changed enough | +| cs_gnss_yaw | `bool` | | | 22 - true when yaw (not ground course) data fusion from a GPS receiver is intended | +| cs_mag_aligned_in_flight | `bool` | | | 23 - true when the in-flight mag field alignment has been completed | +| cs_ev_vel | `bool` | | | 24 - true when local frame velocity data fusion from external vision measurements is intended | +| cs_synthetic_mag_z | `bool` | | | 25 - true when we are using a synthesized measurement for the magnetometer Z component | +| cs_vehicle_at_rest | `bool` | | | 26 - true when the vehicle is at rest | +| cs_gnss_yaw_fault | `bool` | | | 27 - true when the GNSS heading has been declared faulty and is no longer being used | +| cs_rng_fault | `bool` | | | 28 - true when the range finder has been declared faulty and is no longer being used | +| cs_inertial_dead_reckoning | `bool` | | | 29 - true if we are no longer fusing measurements that constrain horizontal velocity drift | +| cs_wind_dead_reckoning | `bool` | | | 30 - true if we are navigationg reliant on wind relative measurements | +| cs_rng_kin_consistent | `bool` | | | 31 - true when the range finder kinematic consistency check is passing | +| cs_fake_pos | `bool` | | | 32 - true when fake position measurements are being fused | +| cs_fake_hgt | `bool` | | | 33 - true when fake height measurements are being fused | +| cs_gravity_vector | `bool` | | | 34 - true when gravity vector measurements are being fused | +| cs_mag | `bool` | | | 35 - true if 3-axis magnetometer measurement fusion (mag states only) is intended | +| cs_ev_yaw_fault | `bool` | | | 36 - true when the EV heading has been declared faulty and is no longer being used | +| cs_mag_heading_consistent | `bool` | | | 37 - true when the heading obtained from mag data is declared consistent with the filter | +| cs_aux_gpos | `bool` | | | 38 - true if auxiliary global position measurement fusion is intended | +| cs_rng_terrain | `bool` | | | 39 - true if we are fusing range finder data for terrain | +| cs_opt_flow_terrain | `bool` | | | 40 - true if we are fusing flow data for terrain | +| cs_valid_fake_pos | `bool` | | | 41 - true if a valid constant position is being fused | +| cs_constant_pos | `bool` | | | 42 - true if the vehicle is at a constant position | +| cs_baro_fault | `bool` | | | 43 - true when the current baro has been declared faulty and is no longer being used | +| cs_gnss_vel | `bool` | | | 44 - true if GNSS velocity measurement fusion is intended | +| cs_gnss_fault | `bool` | | | 45 - true if GNSS true if GNSS measurements (lat, lon, vel) have been declared faulty | +| cs_yaw_manual | `bool` | | | 46 - true if yaw has been set manually | +| cs_gnss_hgt_fault | `bool` | | | 47 - true if GNSS true if GNSS measurements (alt) have been declared faulty | +| fault_status_changes | `uint32` | | | number of filter fault status (fs) changes | +| fs_bad_mag_x | `bool` | | | 0 - true if the fusion of the magnetometer X-axis has encountered a numerical error | +| fs_bad_mag_y | `bool` | | | 1 - true if the fusion of the magnetometer Y-axis has encountered a numerical error | +| fs_bad_mag_z | `bool` | | | 2 - true if the fusion of the magnetometer Z-axis has encountered a numerical error | +| fs_bad_hdg | `bool` | | | 3 - true if the fusion of the heading angle has encountered a numerical error | +| fs_bad_mag_decl | `bool` | | | 4 - true if the fusion of the magnetic declination has encountered a numerical error | +| fs_bad_airspeed | `bool` | | | 5 - true if fusion of the airspeed has encountered a numerical error | +| fs_bad_sideslip | `bool` | | | 6 - true if fusion of the synthetic sideslip constraint has encountered a numerical error | +| fs_bad_optflow_x | `bool` | | | 7 - true if fusion of the optical flow X axis has encountered a numerical error | +| fs_bad_optflow_y | `bool` | | | 8 - true if fusion of the optical flow Y axis has encountered a numerical error | +| fs_bad_acc_vertical | `bool` | | | 10 - true if bad vertical accelerometer data has been detected | +| fs_bad_acc_clipping | `bool` | | | 11 - true if delta velocity data contains clipping (asymmetric railing) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatusFlags.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -71,19 +150,6 @@ bool fs_bad_optflow_x # 7 - true if fusion of the optical flow X axis h bool fs_bad_optflow_y # 8 - true if fusion of the optical flow Y axis has encountered a numerical error bool fs_bad_acc_vertical # 10 - true if bad vertical accelerometer data has been detected bool fs_bad_acc_clipping # 11 - true if delta velocity data contains clipping (asymmetric railing) - - -# innovation test failures -uint32 innovation_fault_status_changes # number of innovation fault status (reject) changes -bool reject_hor_vel # 0 - true if horizontal velocity observations have been rejected -bool reject_ver_vel # 1 - true if vertical velocity observations have been rejected -bool reject_hor_pos # 2 - true if horizontal position observations have been rejected -bool reject_ver_pos # 3 - true if vertical position observations have been rejected -bool reject_yaw # 7 - true if the yaw observation has been rejected -bool reject_airspeed # 8 - true if the airspeed observation has been rejected -bool reject_sideslip # 9 - true if the synthetic sideslip observation has been rejected -bool reject_hagl # 10 - true if the height above ground observation has been rejected -bool reject_optflow_x # 11 - true if the X optical flow observation has been rejected -bool reject_optflow_y # 12 - true if the Y optical flow observation has been rejected - ``` + +::: diff --git a/docs/zh/msg_docs/Event.md b/docs/zh/msg_docs/Event.md index 5d22f337f5..d182533105 100644 --- a/docs/zh/msg_docs/Event.md +++ b/docs/zh/msg_docs/Event.md @@ -1,8 +1,36 @@ +--- +pageClass: is-wide-page +--- + # Event (UORB message) -Events interface +Events interface. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/Event.msg) +**TOPICS:** event + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| id | `uint32` | | | Event ID | +| event_sequence | `uint16` | | | Event sequence number | +| arguments | `uint8[25]` | | | (optional) arguments, depend on event id | +| log_levels | `uint8` | | | Log levels: 4 bits MSB: internal, 4 bits LSB: external | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | -------- | -- | -- | +| MESSAGE_VERSION | `uint32` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/Event.msg) + +:::details +Click here to see original file ```c # Events interface @@ -17,5 +45,6 @@ uint8[25] arguments # (optional) arguments, depend on event id uint8 log_levels # Log levels: 4 bits MSB: internal, 4 bits LSB: external uint8 ORB_QUEUE_LENGTH = 16 - ``` + +::: diff --git a/docs/zh/msg_docs/EventV0.md b/docs/zh/msg_docs/EventV0.md index 19cfa7b70c..cf73c2970c 100644 --- a/docs/zh/msg_docs/EventV0.md +++ b/docs/zh/msg_docs/EventV0.md @@ -1,9 +1,36 @@ +--- +pageClass: is-wide-page +--- + # EventV0 (UORB message) -this message is required here in the msg_old folder because other msg are depending on it -Events interface +this message is required here in the msg_old folder because other msg are depending on it. Events interface. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/EventV0.msg) +**TOPICS:** eventv0 + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| id | `uint32` | | | Event ID | +| event_sequence | `uint16` | | | Event sequence number | +| arguments | `uint8[25]` | | | (optional) arguments, depend on event id | +| log_levels | `uint8` | | | Log levels: 4 bits MSB: internal, 4 bits LSB: external | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | -------- | -- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/EventV0.msg) + +:::details +Click here to see original file ```c # this message is required here in the msg_old folder because other msg are depending on it @@ -20,5 +47,6 @@ uint8[25] arguments # (optional) arguments, depend on event id uint8 log_levels # Log levels: 4 bits MSB: internal, 4 bits LSB: external uint8 ORB_QUEUE_LENGTH = 16 - ``` + +::: diff --git a/docs/zh/msg_docs/FailsafeFlags.md b/docs/zh/msg_docs/FailsafeFlags.md index a9e0079ae8..ad9ea06a4a 100644 --- a/docs/zh/msg_docs/FailsafeFlags.md +++ b/docs/zh/msg_docs/FailsafeFlags.md @@ -1,3 +1,7 @@ +--- +pageClass: is-wide-page +--- + # FailsafeFlags (UORB message) Input flags for the failsafe state machine set by the arming & health checks. @@ -5,7 +9,61 @@ Input flags for the failsafe state machine set by the arming & health checks. Flags must be named such that false == no failure (e.g. \_invalid, \_unhealthy, \_lost) The flag comments are used as label for the failsafe state machine simulation -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FailsafeFlags.msg) +**TOPICS:** failsafe_flags + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mode_req_angular_velocity | `uint32` | | | | +| mode_req_attitude | `uint32` | | | | +| mode_req_local_alt | `uint32` | | | | +| mode_req_local_position | `uint32` | | | | +| mode_req_local_position_relaxed | `uint32` | | | | +| mode_req_global_position | `uint32` | | | | +| mode_req_global_position_relaxed | `uint32` | | | | +| mode_req_mission | `uint32` | | | | +| mode_req_offboard_signal | `uint32` | | | | +| mode_req_home_position | `uint32` | | | | +| mode_req_wind_and_flight_time_compliance | `uint32` | | | if set, mode cannot be entered if wind or flight time limit exceeded | +| mode_req_prevent_arming | `uint32` | | | if set, cannot arm while in this mode | +| mode_req_manual_control | `uint32` | | | | +| mode_req_other | `uint32` | | | other requirements, not covered above (for external modes) | +| angular_velocity_invalid | `bool` | | | Angular velocity invalid | +| attitude_invalid | `bool` | | | Attitude invalid | +| local_altitude_invalid | `bool` | | | Local altitude invalid | +| local_position_invalid | `bool` | | | Local position estimate invalid | +| local_position_invalid_relaxed | `bool` | | | Local position with reduced accuracy requirements invalid (e.g. flying with optical flow) | +| local_velocity_invalid | `bool` | | | Local velocity estimate invalid | +| global_position_invalid | `bool` | | | Global position estimate invalid | +| global_position_invalid_relaxed | `bool` | | | Global position estimate invalid with relaxed accuracy requirements | +| auto_mission_missing | `bool` | | | No mission available | +| offboard_control_signal_lost | `bool` | | | Offboard signal lost | +| home_position_invalid | `bool` | | | No home position available | +| manual_control_signal_lost | `bool` | | | Manual control (RC) signal lost | +| gcs_connection_lost | `bool` | | | GCS connection lost | +| battery_warning | `uint8` | | | Battery warning level (see BatteryStatus.msg) | +| battery_low_remaining_time | `bool` | | | Low battery based on remaining flight time | +| battery_unhealthy | `bool` | | | Battery unhealthy | +| geofence_breached | `bool` | | | Geofence breached (one or multiple) | +| mission_failure | `bool` | | | Mission failure | +| vtol_fixed_wing_system_failure | `bool` | | | vehicle in fixed-wing system failure failsafe mode (after quad-chute) | +| wind_limit_exceeded | `bool` | | | Wind limit exceeded | +| flight_time_limit_exceeded | `bool` | | | Maximum flight time exceeded | +| position_accuracy_low | `bool` | | | Position estimate has dropped below threshold, but is currently still declared valid | +| navigator_failure | `bool` | | | Navigator failed to execute a mode | +| fd_critical_failure | `bool` | | | Critical failure (attitude/altitude limit exceeded, or external ATS) | +| fd_esc_arming_failure | `bool` | | | ESC failed to arm | +| fd_imbalanced_prop | `bool` | | | Imbalanced propeller detected | +| fd_motor_failure | `bool` | | | Motor failure | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FailsafeFlags.msg) + +:::details +Click here to see original file ```c # Input flags for the failsafe state machine set by the arming & health checks. @@ -68,5 +126,6 @@ bool fd_critical_failure # Critical failure (attitude/altitude limi bool fd_esc_arming_failure # ESC failed to arm bool fd_imbalanced_prop # Imbalanced propeller detected bool fd_motor_failure # Motor failure - ``` + +::: diff --git a/docs/zh/msg_docs/FailureDetectorStatus.md b/docs/zh/msg_docs/FailureDetectorStatus.md index a112a1e642..d42b6a3995 100644 --- a/docs/zh/msg_docs/FailureDetectorStatus.md +++ b/docs/zh/msg_docs/FailureDetectorStatus.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # FailureDetectorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FailureDetectorStatus.msg) +**TOPICS:** failure_detectorstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| fd_roll | `bool` | | | | +| fd_pitch | `bool` | | | | +| fd_alt | `bool` | | | | +| fd_ext | `bool` | | | | +| fd_arm_escs | `bool` | | | | +| fd_battery | `bool` | | | | +| fd_imbalanced_prop | `bool` | | | | +| fd_motor | `bool` | | | | +| imbalanced_prop_metric | `float32` | | | Metric of the imbalanced propeller check (low-passed) | +| motor_failure_mask | `uint16` | | | Bit-mask with motor indices, indicating critical motor failures | +| motor_stop_mask | `uint16` | | | Bitmaks of motors stopped by failure injection | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FailureDetectorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +46,6 @@ bool fd_motor float32 imbalanced_prop_metric # Metric of the imbalanced propeller check (low-passed) uint16 motor_failure_mask # Bit-mask with motor indices, indicating critical motor failures uint16 motor_stop_mask # Bitmaks of motors stopped by failure injection - ``` + +::: diff --git a/docs/zh/msg_docs/FigureEightStatus.md b/docs/zh/msg_docs/FigureEightStatus.md index 7a8ae760c2..aee9838ffb 100644 --- a/docs/zh/msg_docs/FigureEightStatus.md +++ b/docs/zh/msg_docs/FigureEightStatus.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # FigureEightStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FigureEightStatus.msg) +**TOPICS:** figure_eightstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| major_radius | `float32` | | | Major axis radius of the figure eight [m]. Positive values orbit clockwise, negative values orbit counter-clockwise. | +| minor_radius | `float32` | | | Minor axis radius of the figure eight [m]. | +| orientation | `float32` | | | Orientation of the major axis of the figure eight [rad]. | +| frame | `uint8` | | | The coordinate system of the fields: x, y, z. | +| x | `int32` | | | X coordinate of center point. Coordinate system depends on frame field: local = x position in meters _ 1e4, global = latitude in degrees _ 1e7. | +| y | `int32` | | | Y coordinate of center point. Coordinate system depends on frame field: local = y position in meters _ 1e4, global = latitude in degrees _ 1e7. | +| z | `float32` | | | Altitude of center point. Coordinate system depends on frame field. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FigureEightStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +35,6 @@ uint8 frame # The coordinate system of the fields: x, y, z. int32 x # X coordinate of center point. Coordinate system depends on frame field: local = x position in meters * 1e4, global = latitude in degrees * 1e7. int32 y # Y coordinate of center point. Coordinate system depends on frame field: local = y position in meters * 1e4, global = latitude in degrees * 1e7. float32 z # Altitude of center point. Coordinate system depends on frame field. - ``` + +::: diff --git a/docs/zh/msg_docs/FixedWingLateralGuidanceStatus.md b/docs/zh/msg_docs/FixedWingLateralGuidanceStatus.md index 02dc50b410..926eff99da 100644 --- a/docs/zh/msg_docs/FixedWingLateralGuidanceStatus.md +++ b/docs/zh/msg_docs/FixedWingLateralGuidanceStatus.md @@ -1,9 +1,33 @@ +--- +pageClass: is-wide-page +--- + # FixedWingLateralGuidanceStatus (UORB message) -Fixed Wing Lateral Guidance Status message -Published by fw_pos_control module to report the resultant lateral setpoints and NPFG debug outputs +Fixed Wing Lateral Guidance Status message. Published by fw_pos_control module to report the resultant lateral setpoints and NPFG debug outputs. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingLateralGuidanceStatus.msg) +**TOPICS:** fixed_winglateral_guidancestatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| course_setpoint | `float32` | rad | [-pi : pi] | Desired direction of travel over ground w.r.t (true) North. Set by guidance law | +| lateral_acceleration_ff | `float32` | FRD | | lateral acceleration demand only for maintaining curvature | +| bearing_feas | `float32` | | [0 : 1] | bearing feasibility | +| bearing_feas_on_track | `float32` | | [0 : 1] | on-track bearing feasibility | +| signed_track_error | `float32` | 米 | | signed track error | +| track_error_bound | `float32` | 米 | | track error bound | +| adapted_period | `float32` | s | | adapted period (if auto-tuning enabled) | +| wind_est_valid | `uint8` | boolean | | true = wind estimate is valid and/or being used by controller (also indicates if wind estimate usage is disabled despite being valid) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingLateralGuidanceStatus.msg) + +:::details +Click here to see original file ```c # Fixed Wing Lateral Guidance Status message @@ -19,5 +43,6 @@ float32 signed_track_error # [m] signed track error float32 track_error_bound # [m] track error bound float32 adapted_period # [s] adapted period (if auto-tuning enabled) uint8 wind_est_valid # [boolean] true = wind estimate is valid and/or being used by controller (also indicates if wind estimate usage is disabled despite being valid) - ``` + +::: diff --git a/docs/zh/msg_docs/FixedWingLateralSetpoint.md b/docs/zh/msg_docs/FixedWingLateralSetpoint.md index 153167bb62..0038fe46ca 100644 --- a/docs/zh/msg_docs/FixedWingLateralSetpoint.md +++ b/docs/zh/msg_docs/FixedWingLateralSetpoint.md @@ -1,10 +1,34 @@ +--- +pageClass: is-wide-page +--- + # FixedWingLateralSetpoint (UORB message) -Fixed Wing Lateral Setpoint message -Used by the fw_lateral_longitudinal_control module -At least one of course, airspeed_direction, or lateral_acceleration must be finite. +Fixed Wing Lateral Setpoint message. Used by the fw_lateral_longitudinal_control module. At least one of course, airspeed_direction, or lateral_acceleration must be finite. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/FixedWingLateralSetpoint.msg) +**TOPICS:** fixed_winglateral_setpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| course | `float32` | rad | [-pi : pi] | Desired direction of travel over ground w.r.t (true) North. NAN if not controlled directly. | +| airspeed_direction | `float32` | rad | [-pi : pi] | Desired horizontal angle of airspeed vector w.r.t. (true) North. Same as vehicle heading if in the absence of sideslip. NAN if not controlled directly, takes precedence over course if finite. | +| lateral_acceleration | `float32` | FRD | | Lateral acceleration setpoint. NAN if not controlled directly, used as feedforward if either course setpoint or airspeed_direction is finite. | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/FixedWingLateralSetpoint.msg) + +:::details +Click here to see original file ```c # Fixed Wing Lateral Setpoint message @@ -18,5 +42,6 @@ uint64 timestamp # time since system start (microseconds) float32 course # [rad] [@range -pi, pi] Desired direction of travel over ground w.r.t (true) North. NAN if not controlled directly. float32 airspeed_direction # [rad] [@range -pi, pi] Desired horizontal angle of airspeed vector w.r.t. (true) North. Same as vehicle heading if in the absence of sideslip. NAN if not controlled directly, takes precedence over course if finite. float32 lateral_acceleration # [m/s^2] [FRD] Lateral acceleration setpoint. NAN if not controlled directly, used as feedforward if either course setpoint or airspeed_direction is finite. - ``` + +::: diff --git a/docs/zh/msg_docs/FixedWingLateralStatus.md b/docs/zh/msg_docs/FixedWingLateralStatus.md index 9214d1e9e0..33000ba018 100644 --- a/docs/zh/msg_docs/FixedWingLateralStatus.md +++ b/docs/zh/msg_docs/FixedWingLateralStatus.md @@ -1,9 +1,27 @@ +--- +pageClass: is-wide-page +--- + # FixedWingLateralStatus (UORB message) -Fixed Wing Lateral Status message -Published by the fw_lateral_longitudinal_control module to report the resultant lateral setpoint +Fixed Wing Lateral Status message. Published by the fw_lateral_longitudinal_control module to report the resultant lateral setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingLateralStatus.msg) +**TOPICS:** fixed_winglateral_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lateral_acceleration_setpoint | `float32` | FRD | | resultant lateral acceleration setpoint | +| can_run_factor | `float32` | norm | [0 : 1] | estimate of certainty of the correct functionality of the npfg roll setpoint | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingLateralStatus.msg) + +:::details +Click here to see original file ```c # Fixed Wing Lateral Status message @@ -13,5 +31,6 @@ uint64 timestamp # time since system start (microseconds float32 lateral_acceleration_setpoint # [m/s^2] [FRD] resultant lateral acceleration setpoint float32 can_run_factor # [norm] [@range 0, 1] estimate of certainty of the correct functionality of the npfg roll setpoint - ``` + +::: diff --git a/docs/zh/msg_docs/FixedWingLongitudinalSetpoint.md b/docs/zh/msg_docs/FixedWingLongitudinalSetpoint.md index 6b8fb29e5b..8dac3b3999 100644 --- a/docs/zh/msg_docs/FixedWingLongitudinalSetpoint.md +++ b/docs/zh/msg_docs/FixedWingLongitudinalSetpoint.md @@ -1,11 +1,36 @@ +--- +pageClass: is-wide-page +--- + # FixedWingLongitudinalSetpoint (UORB message) -Fixed Wing Longitudinal Setpoint message -Used by the fw_lateral_longitudinal_control module -If pitch_direct and throttle_direct are not both finite, then the controller relies on altitude/height_rate and equivalent_airspeed to control vertical motion. -If both altitude and height_rate are NAN, the controller maintains the current altitude. +Fixed Wing Longitudinal Setpoint message. Used by the fw_lateral_longitudinal_control module. If pitch_direct and throttle_direct are not both finite, then the controller relies on altitude/height_rate and equivalent_airspeed to control vertical motion. If both altitude and height_rate are NAN, the controller maintains the current altitude. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/FixedWingLongitudinalSetpoint.msg) +**TOPICS:** fixed_winglongitudinal_setpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| altitude | `float32` | 米 | | Altitude setpoint AMSL, not controlled directly if NAN or if height_rate is finite | +| height_rate | `float32` | ENU | | Scalar height rate setpoint. NAN if not controlled directly | +| equivalent_airspeed | `float32` | 米/秒 | [0 : inf] | Scalar equivalent airspeed setpoint. NAN if system default should be used | +| pitch_direct | `float32` | FRD | [-pi : pi] | NAN if not controlled, overrides total energy controller | +| throttle_direct | `float32` | norm | [0 : 1] | NAN if not controlled, overrides total energy controller | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/FixedWingLongitudinalSetpoint.msg) + +:::details +Click here to see original file ```c # Fixed Wing Longitudinal Setpoint message @@ -22,5 +47,6 @@ float32 height_rate # [m/s] [ENU] Scalar height rate setpoint. NAN if not con float32 equivalent_airspeed # [m/s] [@range 0, inf] Scalar equivalent airspeed setpoint. NAN if system default should be used float32 pitch_direct # [rad] [@range -pi, pi] [FRD] NAN if not controlled, overrides total energy controller float32 throttle_direct # [norm] [@range 0,1] NAN if not controlled, overrides total energy controller - ``` + +::: diff --git a/docs/zh/msg_docs/FixedWingRunwayControl.md b/docs/zh/msg_docs/FixedWingRunwayControl.md index 9e9f5ff428..3683f8c9e3 100644 --- a/docs/zh/msg_docs/FixedWingRunwayControl.md +++ b/docs/zh/msg_docs/FixedWingRunwayControl.md @@ -1,19 +1,54 @@ +--- +pageClass: is-wide-page +--- + # FixedWingRunwayControl (UORB message) -Auxiliary control fields for fixed-wing runway takeoff/landing +Auxiliary control fields for fixed-wing runway takeoff/landing. -Passes information from the FixedWingModeManager to the FixedWingAttitudeController +**TOPICS:** fixed_wingrunway_control -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingRunwayControl.msg) +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | time since system start | +| runway_takeoff_state | `uint8` | | | Current state of runway takeoff state machine | +| wheel_steering_enabled | `bool` | | | Flag that enables the wheel steering. | +| wheel_steering_nudging_rate | `float32` | FRD | [-1 : 1] | Manual wheel nudging, added to controller output. NAN is interpreted as 0. | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------ | ------- | - | -------------------------------------------------------------------------------- | +| STATE_THROTTLE_RAMP | `uint8` | 0 | ramping up throttle | +| STATE_CLAMPED_TO_RUNWAY | `uint8` | 1 | clamped to runway, controlling yaw directly (wheel or rudder) | +| STATE_CLIMBOUT | `uint8` | 2 | climbout to safe height before navigation | +| STATE_FLYING | `uint8` | 3 | navigate freely | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingRunwayControl.msg) + +:::details +Click here to see original file ```c # Auxiliary control fields for fixed-wing runway takeoff/landing -# Passes information from the FixedWingModeManager to the FixedWingAttitudeController +# Passes information from the FixedWingModeManager to the FixedWingAttitudeController (wheel control) and FixedWingLandDetector (takeoff state) uint64 timestamp # [us] time since system start +uint8 STATE_THROTTLE_RAMP = 0 # ramping up throttle +uint8 STATE_CLAMPED_TO_RUNWAY = 1 # clamped to runway, controlling yaw directly (wheel or rudder) +uint8 STATE_CLIMBOUT = 2 # climbout to safe height before navigation +uint8 STATE_FLYING = 3 # navigate freely + +uint8 runway_takeoff_state # Current state of runway takeoff state machine + bool wheel_steering_enabled # Flag that enables the wheel steering. float32 wheel_steering_nudging_rate # [norm] [@range -1, 1] [FRD] Manual wheel nudging, added to controller output. NAN is interpreted as 0. - ``` + +::: diff --git a/docs/zh/msg_docs/FlightPhaseEstimation.md b/docs/zh/msg_docs/FlightPhaseEstimation.md index 51561e39e3..0bfeae8a21 100644 --- a/docs/zh/msg_docs/FlightPhaseEstimation.md +++ b/docs/zh/msg_docs/FlightPhaseEstimation.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # FlightPhaseEstimation (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FlightPhaseEstimation.msg) +**TOPICS:** flight_phaseestimation + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| flight_phase | `uint8` | | | Estimate of current flight phase | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| --------------------------------------------------------------------------------------------------- | ------- | - | ------------------------------- | +| FLIGHT_PHASE_UNKNOWN | `uint8` | 0 | vehicle flight phase is unknown | +| FLIGHT_PHASE_LEVEL | `uint8` | 1 | Vehicle is in level flight | +| FLIGHT_PHASE_DESCEND | `uint8` | 2 | vehicle is in descend | +| FLIGHT_PHASE_CLIMB | `uint8` | 3 | vehicle is climbing | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FlightPhaseEstimation.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +38,6 @@ uint8 FLIGHT_PHASE_UNKNOWN = 0 # vehicle flight phase is unknown uint8 FLIGHT_PHASE_LEVEL = 1 # Vehicle is in level flight uint8 FLIGHT_PHASE_DESCEND = 2 # vehicle is in descend uint8 FLIGHT_PHASE_CLIMB = 3 # vehicle is climbing - ``` + +::: diff --git a/docs/zh/msg_docs/FollowTarget.md b/docs/zh/msg_docs/FollowTarget.md index ae194a6019..5b1b376c2e 100644 --- a/docs/zh/msg_docs/FollowTarget.md +++ b/docs/zh/msg_docs/FollowTarget.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # FollowTarget (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTarget.msg) +**TOPICS:** follow_target + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lat | `float64` | | | target position (deg \* 1e7) | +| lon | `float64` | | | target position (deg \* 1e7) | +| alt | `float32` | | | target position | +| vy | `float32` | | | target vel in y | +| vx | `float32` | | | target vel in x | +| vz | `float32` | | | target vel in z | +| est_cap | `uint8` | | | target reporting capabilities | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTarget.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +38,6 @@ float32 vx # target vel in x float32 vz # target vel in z uint8 est_cap # target reporting capabilities - ``` + +::: diff --git a/docs/zh/msg_docs/FollowTargetEstimator.md b/docs/zh/msg_docs/FollowTargetEstimator.md index 00d5760b36..d947750054 100644 --- a/docs/zh/msg_docs/FollowTargetEstimator.md +++ b/docs/zh/msg_docs/FollowTargetEstimator.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # FollowTargetEstimator (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTargetEstimator.msg) +**TOPICS:** follow_targetestimator + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| last_filter_reset_timestamp | `uint64` | | | time of last filter reset (microseconds) | +| valid | `bool` | | | True if estimator states are okay to be used | +| stale | `bool` | | | True if estimator stopped receiving follow_target messages for some time. The estimate can still be valid, though it might be inaccurate. | +| lat_est | `float64` | | | Estimated target latitude | +| lon_est | `float64` | | | Estimated target longitude | +| alt_est | `float32` | | | Estimated target altitude | +| pos_est | `float32[3]` | | | Estimated target NED position (m) | +| vel_est | `float32[3]` | | | Estimated target NED velocity (m/s) | +| acc_est | `float32[3]` | | | Estimated target NED acceleration (m^2/s) | +| prediction_count | `uint64` | | | | +| fusion_count | `uint64` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTargetEstimator.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -19,5 +47,6 @@ float32[3] acc_est # Estimated target NED acceleration (m^2/s) uint64 prediction_count uint64 fusion_count - ``` + +::: diff --git a/docs/zh/msg_docs/FollowTargetStatus.md b/docs/zh/msg_docs/FollowTargetStatus.md index 99594c5fcb..36d2582e12 100644 --- a/docs/zh/msg_docs/FollowTargetStatus.md +++ b/docs/zh/msg_docs/FollowTargetStatus.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # FollowTargetStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTargetStatus.msg) +**TOPICS:** follow_targetstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | microseconds | | time since system start | +| tracked_target_course | `float32` | rad | | Tracked target course in NED local frame (North is course zero) | +| follow_angle | `float32` | rad | | Current follow angle setting | +| orbit_angle_setpoint | `float32` | rad | | Current orbit angle setpoint from the smooth trajectory generator | +| angular_rate_setpoint | `float32` | rad/s | | Angular rate commanded from Jerk-limited Orbit Angle trajectory for Orbit Angle | +| desired_position_raw | `float32[3]` | 米 | | Raw 'idealistic' desired drone position if a drone could teleport from place to places | +| in_emergency_ascent | `bool` | bool | | True when doing emergency ascent (when distance to ground is below safety altitude) | +| gimbal_pitch | `float32` | rad | | Gimbal pitch commanded to track target in the center of the frame | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTargetStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # [microseconds] time since system start @@ -15,5 +39,6 @@ float32[3] desired_position_raw # [m] Raw 'idealistic' desired drone position bool in_emergency_ascent # [bool] True when doing emergency ascent (when distance to ground is below safety altitude) float32 gimbal_pitch # [rad] Gimbal pitch commanded to track target in the center of the frame - ``` + +::: diff --git a/docs/zh/msg_docs/FuelTankStatus.md b/docs/zh/msg_docs/FuelTankStatus.md index f36eaff6dc..ea20b673ae 100644 --- a/docs/zh/msg_docs/FuelTankStatus.md +++ b/docs/zh/msg_docs/FuelTankStatus.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # FuelTankStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FuelTankStatus.msg) +**TOPICS:** fuel_tankstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| maximum_fuel_capacity | `float32` | | | maximum fuel capacity. Must always be provided, either from the driver or a parameter | +| consumed_fuel | `float32` | | | consumed fuel, NaN if not measured. Should not be inferred from the max fuel capacity | +| fuel_consumption_rate | `float32` | | | fuel consumption rate, NaN if not measured | +| percent_remaining | `uint8` | | | percentage of remaining fuel, UINT8_MAX if not provided | +| remaining_fuel | `float32` | | | remaining fuel, NaN if not measured. Should not be inferred from the max fuel capacity | +| fuel_tank_id | `uint8` | | | identifier for the fuel tank. Must match ID of other messages for same fuel system. 0 by default when only a single tank exists | +| fuel_type | `uint32` | | | type of fuel based on MAV_FUEL_TYPE enum. Set to MAV_FUEL_TYPE_UNKNOWN if unknown or it does not fit the provided types | +| temperature | `float32` | | | fuel temperature in Kelvin, NaN if not measured | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------- | ------- | - | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| MAV_FUEL_TYPE_UNKNOWN | `uint8` | 0 | fuel type not specified. Fuel levels are normalized (i.e., maximum is 1, and other levels are relative to 1). | +| MAV_FUEL_TYPE_LIQUID | `uint8` | 1 | represents generic liquid fuels, such as gasoline or diesel. Fuel levels are measured in millilitres (ml), and flow rates in millilitres per second (ml/s). | +| MAV_FUEL_TYPE_GAS | `uint8` | 2 | represents a gas fuel, such as hydrogen, methane, or propane. Fuel levels are in kilo-Pascal (kPa), and flow rates are in milliliters per second (ml/s). | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FuelTankStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -20,5 +53,6 @@ uint8 MAV_FUEL_TYPE_LIQUID = 1 # represents generic liquid fuels, such as gasol uint8 MAV_FUEL_TYPE_GAS = 2 # represents a gas fuel, such as hydrogen, methane, or propane. Fuel levels are in kilo-Pascal (kPa), and flow rates are in milliliters per second (ml/s). float32 temperature # fuel temperature in Kelvin, NaN if not measured - ``` + +::: diff --git a/docs/zh/msg_docs/GainCompression.md b/docs/zh/msg_docs/GainCompression.md index e26c1e8fcc..7da0bcb30c 100644 --- a/docs/zh/msg_docs/GainCompression.md +++ b/docs/zh/msg_docs/GainCompression.md @@ -1,6 +1,26 @@ +--- +pageClass: is-wide-page +--- + # GainCompression (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GainCompression.msg) +**TOPICS:** gain_compression + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------- | +| timestamp | `uint64` | | | Time since system start (microseconds) | +| compression_gains | `float32[3]` | [FRD] | [0 : 1] | Multiplicative gain to modify the output of the controller per axis | +| spectral_damper_hpf | `float32[3]` | [FRD] | | Squared output of spectral damper high-pass filter | +| spectral_damper_out | `float32[3]` | [FRD] | | Spectral damper output squared | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GainCompression.msg) + +:::details +Click here to see original file ```c uint64 timestamp # Time since system start (microseconds) @@ -8,5 +28,6 @@ uint64 timestamp # Time since system start (microseconds) 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 # [-] [@frame FRD] Squared output of spectral damper high-pass filter float32[3] spectral_damper_out # [-] [@frame FRD] Spectral damper output squared - ``` + +::: diff --git a/docs/zh/msg_docs/GeneratorStatus.md b/docs/zh/msg_docs/GeneratorStatus.md index b21bc9852a..b3d8c36b28 100644 --- a/docs/zh/msg_docs/GeneratorStatus.md +++ b/docs/zh/msg_docs/GeneratorStatus.md @@ -1,6 +1,62 @@ +--- +pageClass: is-wide-page +--- + # GeneratorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeneratorStatus.msg) +**TOPICS:** generator_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| status | `uint64` | | | Status flags | +| battery_current | `float32` | A | | Current into/out of battery. Positive for out. Negative for in. NaN: field not provided. | +| load_current | `float32` | A | | Current going to the UAV. If battery current not available this is the DC current from the generator. Positive for out. Negative for in. NaN: field not provided | +| power_generated | `float32` | W | | The power being generated. NaN: field not provided | +| bus_voltage | `float32` | V | | Voltage of the bus seen at the generator, or battery bus if battery bus is controlled by generator and at a different voltage to main bus. | +| bat_current_setpoint | `float32` | A | | The target battery current. Positive for out. Negative for in. NaN: field not provided | +| runtime | `uint32` | s | | Seconds this generator has run since it was rebooted. UINT32_MAX: field not provided. | +| time_until_maintenance | `int32` | s | | Seconds until this generator requires maintenance. A negative value indicates maintenance is past-due. INT32_MAX: field not provided. | +| generator_speed | `uint16` | rpm | | Speed of electrical generator or alternator. UINT16_MAX: field not provided. | +| rectifier_temperature | `int16` | degC | | The temperature of the rectifier or power converter. INT16_MAX: field not provided. | +| generator_temperature | `int16` | degC | | The temperature of the mechanical motor, fuel cell core or generator. INT16_MAX: field not provided. | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| STATUS_FLAG_OFF | `uint64` | 1 | Generator is off. | +| STATUS_FLAG_READY | `uint64` | 2 | Generator is ready to start generating power. | +| STATUS_FLAG_GENERATING | `uint64` | 4 | Generator is generating power. | +| STATUS_FLAG_CHARGING | `uint64` | 8 | Generator is charging the batteries (generating enough power to charge and provide the load). | +| STATUS_FLAG_REDUCED_POWER | `uint64` | 16 | Generator is operating at a reduced maximum power. | +| STATUS_FLAG_MAXPOWER | `uint64` | 32 | Generator is providing the maximum output. | +| STATUS_FLAG_OVERTEMP_WARNING | `uint64` | 64 | Generator is near the maximum operating temperature, cooling is insufficient. | +| STATUS_FLAG_OVERTEMP_FAULT | `uint64` | 128 | Generator hit the maximum operating temperature and shutdown. | +| STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING | `uint64` | 256 | Power electronics are near the maximum operating temperature, cooling is insufficient. | +| STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT | `uint64` | 512 | Power electronics hit the maximum operating temperature and shutdown. | +| STATUS_FLAG_ELECTRONICS_FAULT | `uint64` | 1024 | Power electronics experienced a fault and shutdown. | +| STATUS_FLAG_POWERSOURCE_FAULT | `uint64` | 2048 | The power source supplying the generator failed e.g. mechanical generator stopped, tether is no longer providing power, solar cell is in shade, hydrogen reaction no longer happening. | +| STATUS_FLAG_COMMUNICATION_WARNING | `uint64` | 4096 | Generator controller having communication problems. | +| STATUS_FLAG_COOLING_WARNING | `uint64` | 8192 | Power electronic or generator cooling system error. | +| STATUS_FLAG_POWER_RAIL_FAULT | `uint64` | 16384 | Generator controller power rail experienced a fault. | +| STATUS_FLAG_OVERCURRENT_FAULT | `uint64` | 32768 | Generator controller exceeded the overcurrent threshold and shutdown to prevent damage. | +| STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT | `uint64` | 65536 | Generator controller detected a high current going into the batteries and shutdown to prevent battery damage. | +| STATUS_FLAG_OVERVOLTAGE_FAULT | `uint64` | 131072 | Generator controller exceeded it's overvoltage threshold and shutdown to prevent it exceeding the voltage rating. | +| STATUS_FLAG_BATTERY_UNDERVOLT_FAULT | `uint64` | 262144 | Batteries are under voltage (generator will not start). | +| STATUS_FLAG_START_INHIBITED | `uint64` | 524288 | Generator start is inhibited by e.g. a safety switch. | +| STATUS_FLAG_MAINTENANCE_REQUIRED | `uint64` | 1048576 | Generator requires maintenance. | +| STATUS_FLAG_WARMING_UP | `uint64` | 2097152 | Generator is not ready to generate yet. | +| STATUS_FLAG_IDLE | `uint64` | 4194304 | Generator is idle. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeneratorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -47,5 +103,6 @@ uint16 generator_speed # [rpm] Speed of electrical generator or alte int16 rectifier_temperature # [degC] The temperature of the rectifier or power converter. INT16_MAX: field not provided. int16 generator_temperature # [degC] The temperature of the mechanical motor, fuel cell core or generator. INT16_MAX: field not provided. - ``` + +::: diff --git a/docs/zh/msg_docs/GeofenceResult.md b/docs/zh/msg_docs/GeofenceResult.md index 1259594be7..a6d347f2fe 100644 --- a/docs/zh/msg_docs/GeofenceResult.md +++ b/docs/zh/msg_docs/GeofenceResult.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # GeofenceResult (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeofenceResult.msg) +**TOPICS:** geofence_result + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| geofence_max_dist_triggered | `bool` | | | true the check for max distance from Home is triggered | +| geofence_max_alt_triggered | `bool` | | | true the check for max altitude above Home is triggered | +| geofence_custom_fence_triggered | `bool` | | | true the check for custom inclusion/exclusion geofence(s) is triggered | +| geofence_action | `uint8` | | | action to take when the geofence is breached | + +## Constants + +\| Name | Type | Value | Description | +\| ------------------------------------------------------- | ------- | ----- | ------------------------------- | ------ | +\| GF_ACTION_NONE | `uint8` | 0 | no action on geofence violation | +\| GF_ACTION_WARN | `uint8` | 1 | critical mavlink message | +\| GF_ACTION_LOITER | `uint8` | 2 | switch to AUTO | LOITER | +\| GF_ACTION_RTL | `uint8` | 3 | switch to AUTO | RTL | +\| GF_ACTION_TERMINATE | `uint8` | 4 | flight termination | +\| GF_ACTION_LAND | `uint8` | 5 | switch to AUTO | LAND | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeofenceResult.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -16,5 +48,6 @@ bool geofence_max_alt_triggered # true the check for max altitude above Home is bool geofence_custom_fence_triggered # true the check for custom inclusion/exclusion geofence(s) is triggered uint8 geofence_action # action to take when the geofence is breached - ``` + +::: diff --git a/docs/zh/msg_docs/GeofenceStatus.md b/docs/zh/msg_docs/GeofenceStatus.md index 9918290e4d..329e9dfa45 100644 --- a/docs/zh/msg_docs/GeofenceStatus.md +++ b/docs/zh/msg_docs/GeofenceStatus.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # GeofenceStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeofenceStatus.msg) +**TOPICS:** geofence_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| geofence_id | `uint32` | | | loaded geofence id | +| status | `uint8` | | | Current geofence status | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| --------------------------------------------------------------------------------------------- | ------- | - | -- | +| GF_STATUS_LOADING | `uint8` | 0 | | +| GF_STATUS_READY | `uint8` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeofenceStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +36,6 @@ uint8 status # Current geofence status uint8 GF_STATUS_LOADING = 0 uint8 GF_STATUS_READY = 1 - ``` + +::: diff --git a/docs/zh/msg_docs/GimbalControls.md b/docs/zh/msg_docs/GimbalControls.md index bc8408cffa..84276b477d 100644 --- a/docs/zh/msg_docs/GimbalControls.md +++ b/docs/zh/msg_docs/GimbalControls.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # GimbalControls (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalControls.msg) +**TOPICS:** gimbal_controls + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp the data this control response is based on was sampled | +| control | `float32[3]` | | | Normalized output. 1 means maximum positive position. -1 maximum negative position. 0 means no deflection. NaN maps to disarmed. | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------ | ------- | - | -- | +| INDEX_ROLL | `uint8` | 0 | | +| INDEX_PITCH | `uint8` | 1 | | +| INDEX_YAW | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalControls.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,6 +36,7 @@ uint8 INDEX_PITCH = 1 uint8 INDEX_YAW = 2 uint64 timestamp_sample # the timestamp the data this control response is based on was sampled -float32[3] control - +float32[3] control # Normalized output. 1 means maximum positive position. -1 maximum negative position. 0 means no deflection. NaN maps to disarmed. ``` + +::: diff --git a/docs/zh/msg_docs/GimbalDeviceAttitudeStatus.md b/docs/zh/msg_docs/GimbalDeviceAttitudeStatus.md index 0935029087..37ecb4d5af 100644 --- a/docs/zh/msg_docs/GimbalDeviceAttitudeStatus.md +++ b/docs/zh/msg_docs/GimbalDeviceAttitudeStatus.md @@ -1,6 +1,47 @@ +--- +pageClass: is-wide-page +--- + # GimbalDeviceAttitudeStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceAttitudeStatus.msg) +**TOPICS:** gimbal_deviceattitude_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| target_system | `uint8` | | | | +| target_component | `uint8` | | | | +| device_flags | `uint16` | | | | +| q | `float32[4]` | | | | +| angular_velocity_x | `float32` | | | | +| angular_velocity_y | `float32` | | | | +| angular_velocity_z | `float32` | | | | +| failure_flags | `uint32` | | | | +| delta_yaw | `float32` | | | | +| delta_yaw_velocity | `float32` | | | | +| gimbal_device_id | `uint8` | | | | +| received_from_mavlink | `bool` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -- | -- | +| DEVICE_FLAGS_RETRACT | `uint16` | 1 | | +| DEVICE_FLAGS_NEUTRAL | `uint16` | 2 | | +| DEVICE_FLAGS_ROLL_LOCK | `uint16` | 4 | | +| DEVICE_FLAGS_PITCH_LOCK | `uint16` | 8 | | +| DEVICE_FLAGS_YAW_LOCK | `uint16` | 16 | | +| DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME | `uint16` | 32 | | +| DEVICE_FLAGS_YAW_IN_EARTH_FRAME | `uint16` | 64 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceAttitudeStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -29,5 +70,6 @@ float32 delta_yaw_velocity uint8 gimbal_device_id bool received_from_mavlink - ``` + +::: diff --git a/docs/zh/msg_docs/GimbalDeviceInformation.md b/docs/zh/msg_docs/GimbalDeviceInformation.md index d06837a049..8c9f50c5b9 100644 --- a/docs/zh/msg_docs/GimbalDeviceInformation.md +++ b/docs/zh/msg_docs/GimbalDeviceInformation.md @@ -1,6 +1,55 @@ +--- +pageClass: is-wide-page +--- + # GimbalDeviceInformation (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceInformation.msg) +**TOPICS:** gimbal_deviceinformation + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| vendor_name | `uint8[32]` | | | | +| model_name | `uint8[32]` | | | | +| custom_name | `uint8[32]` | | | | +| firmware_version | `uint32` | | | | +| hardware_version | `uint32` | | | | +| uid | `uint64` | | | | +| cap_flags | `uint16` | | | | +| custom_cap_flags | `uint16` | | | | +| roll_min | `float32` | rad | | | +| roll_max | `float32` | rad | | | +| pitch_min | `float32` | rad | | | +| pitch_max | `float32` | rad | | | +| yaw_min | `float32` | rad | | | +| yaw_max | `float32` | rad | | | +| gimbal_device_id | `uint8` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---- | -- | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT | `uint32` | 1 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS | `uint32` | 4 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW | `uint32` | 8 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK | `uint32` | 16 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS | `uint32` | 32 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW | `uint32` | 64 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK | `uint32` | 128 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS | `uint32` | 256 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW | `uint32` | 512 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK | `uint32` | 1024 | | +| GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW | `uint32` | 2048 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceInformation.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -39,5 +88,6 @@ float32 yaw_min # [rad] float32 yaw_max # [rad] uint8 gimbal_device_id - ``` + +::: diff --git a/docs/zh/msg_docs/GimbalDeviceSetAttitude.md b/docs/zh/msg_docs/GimbalDeviceSetAttitude.md index d47cdf4689..decc960730 100644 --- a/docs/zh/msg_docs/GimbalDeviceSetAttitude.md +++ b/docs/zh/msg_docs/GimbalDeviceSetAttitude.md @@ -1,6 +1,40 @@ +--- +pageClass: is-wide-page +--- + # GimbalDeviceSetAttitude (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceSetAttitude.msg) +**TOPICS:** gimbal_deviceset_attitude + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| target_system | `uint8` | | | | +| target_component | `uint8` | | | | +| flags | `uint16` | | | | +| q | `float32[4]` | | | | +| angular_velocity_x | `float32` | | | | +| angular_velocity_y | `float32` | | | | +| angular_velocity_z | `float32` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -- | -- | +| GIMBAL_DEVICE_FLAGS_RETRACT | `uint32` | 1 | | +| GIMBAL_DEVICE_FLAGS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_DEVICE_FLAGS_ROLL_LOCK | `uint32` | 4 | | +| GIMBAL_DEVICE_FLAGS_PITCH_LOCK | `uint32` | 8 | | +| GIMBAL_DEVICE_FLAGS_YAW_LOCK | `uint32` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceSetAttitude.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -20,5 +54,6 @@ float32[4] q float32 angular_velocity_x float32 angular_velocity_y float32 angular_velocity_z - ``` + +::: diff --git a/docs/zh/msg_docs/GimbalManagerInformation.md b/docs/zh/msg_docs/GimbalManagerInformation.md index fab5d6a87e..b1dc7492c1 100644 --- a/docs/zh/msg_docs/GimbalManagerInformation.md +++ b/docs/zh/msg_docs/GimbalManagerInformation.md @@ -1,6 +1,50 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerInformation (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerInformation.msg) +**TOPICS:** gimbal_managerinformation + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| cap_flags | `uint32` | | | | +| gimbal_device_id | `uint8` | | | | +| roll_min | `float32` | rad | | | +| roll_max | `float32` | rad | | | +| pitch_min | `float32` | rad | | | +| pitch_max | `float32` | rad | | | +| yaw_min | `float32` | rad | | | +| yaw_max | `float32` | rad | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------ | -- | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT | `uint32` | 1 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS | `uint32` | 4 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW | `uint32` | 8 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK | `uint32` | 16 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS | `uint32` | 32 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW | `uint32` | 64 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK | `uint32` | 128 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS | `uint32` | 256 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW | `uint32` | 512 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK | `uint32` | 1024 | | +| GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW | `uint32` | 2048 | | +| GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL | `uint32` | 65536 | | +| GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL | `uint32` | 131072 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerInformation.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -32,5 +76,6 @@ float32 pitch_max # [rad] float32 yaw_min # [rad] float32 yaw_max # [rad] - ``` + +::: diff --git a/docs/zh/msg_docs/GimbalManagerSetAttitude.md b/docs/zh/msg_docs/GimbalManagerSetAttitude.md index 1415f34b42..561fefb37c 100644 --- a/docs/zh/msg_docs/GimbalManagerSetAttitude.md +++ b/docs/zh/msg_docs/GimbalManagerSetAttitude.md @@ -1,6 +1,44 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerSetAttitude (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerSetAttitude.msg) +**TOPICS:** gimbal_managerset_attitude + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| origin_sysid | `uint8` | | | | +| origin_compid | `uint8` | | | | +| target_system | `uint8` | | | | +| target_component | `uint8` | | | | +| flags | `uint32` | | | | +| gimbal_device_id | `uint8` | | | | +| q | `float32[4]` | | | | +| angular_velocity_x | `float32` | | | | +| angular_velocity_y | `float32` | | | | +| angular_velocity_z | `float32` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -- | -- | +| GIMBAL_MANAGER_FLAGS_RETRACT | `uint32` | 1 | | +| GIMBAL_MANAGER_FLAGS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_MANAGER_FLAGS_ROLL_LOCK | `uint32` | 4 | | +| GIMBAL_MANAGER_FLAGS_PITCH_LOCK | `uint32` | 8 | | +| GIMBAL_MANAGER_FLAGS_YAW_LOCK | `uint32` | 16 | | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerSetAttitude.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -27,5 +65,6 @@ float32 angular_velocity_y float32 angular_velocity_z uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/zh/msg_docs/GimbalManagerSetManualControl.md b/docs/zh/msg_docs/GimbalManagerSetManualControl.md index 10ec822415..dc112f81a0 100644 --- a/docs/zh/msg_docs/GimbalManagerSetManualControl.md +++ b/docs/zh/msg_docs/GimbalManagerSetManualControl.md @@ -1,6 +1,43 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerSetManualControl (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerSetManualControl.msg) +**TOPICS:** gimbal_managerset_manualcontrol + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| origin_sysid | `uint8` | | | | +| origin_compid | `uint8` | | | | +| target_system | `uint8` | | | | +| target_component | `uint8` | | | | +| flags | `uint32` | | | | +| gimbal_device_id | `uint8` | | | | +| pitch | `float32` | | | unitless -1..1, can be NAN | +| yaw | `float32` | | | unitless -1..1, can be NAN | +| pitch_rate | `float32` | | | unitless -1..1, can be NAN | +| yaw_rate | `float32` | | | unitless -1..1, can be NAN | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -- | -- | +| GIMBAL_MANAGER_FLAGS_RETRACT | `uint32` | 1 | | +| GIMBAL_MANAGER_FLAGS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_MANAGER_FLAGS_ROLL_LOCK | `uint32` | 4 | | +| GIMBAL_MANAGER_FLAGS_PITCH_LOCK | `uint32` | 8 | | +| GIMBAL_MANAGER_FLAGS_YAW_LOCK | `uint32` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerSetManualControl.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -24,5 +61,6 @@ float32 pitch # unitless -1..1, can be NAN float32 yaw # unitless -1..1, can be NAN float32 pitch_rate # unitless -1..1, can be NAN float32 yaw_rate # unitless -1..1, can be NAN - ``` + +::: diff --git a/docs/zh/msg_docs/GimbalManagerStatus.md b/docs/zh/msg_docs/GimbalManagerStatus.md index 317e1d3538..6a70505163 100644 --- a/docs/zh/msg_docs/GimbalManagerStatus.md +++ b/docs/zh/msg_docs/GimbalManagerStatus.md @@ -1,6 +1,29 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerStatus.msg) +**TOPICS:** gimbal_managerstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| flags | `uint32` | | | | +| gimbal_device_id | `uint8` | | | | +| primary_control_sysid | `uint8` | | | | +| primary_control_compid | `uint8` | | | | +| secondary_control_sysid | `uint8` | | | | +| secondary_control_compid | `uint8` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +34,6 @@ uint8 primary_control_sysid uint8 primary_control_compid uint8 secondary_control_sysid uint8 secondary_control_compid - ``` + +::: diff --git a/docs/zh/msg_docs/GotoSetpoint.md b/docs/zh/msg_docs/GotoSetpoint.md index 746d15eb00..f9a1467ad8 100644 --- a/docs/zh/msg_docs/GotoSetpoint.md +++ b/docs/zh/msg_docs/GotoSetpoint.md @@ -1,13 +1,40 @@ +--- +pageClass: is-wide-page +--- + # GotoSetpoint (UORB message) -Position and (optional) heading setpoints with corresponding speed constraints -Setpoints are intended as inputs to position and heading smoothers, respectively -Setpoints do not need to be kinematically consistent -Optional heading setpoints may be specified as controlled by the respective flag -Unset optional setpoints are not controlled -Unset optional constraints default to vehicle specifications +Position and (optional) heading setpoints with corresponding speed constraints. Setpoints are intended as inputs to position and heading smoothers, respectively. Setpoints do not need to be kinematically consistent. Optional heading setpoints may be specified as controlled by the respective flag. Unset optional setpoints are not controlled. Unset optional constraints default to vehicle specifications. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/GotoSetpoint.msg) +**TOPICS:** goto_setpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| 位置 | `float32[3]` | 米 | | NED local world frame | +| flag_control_heading | `bool` | | | true if heading is to be controlled | +| heading | `float32` | | | (optional) [rad] [-pi,pi] from North | +| flag_set_max_horizontal_speed | `bool` | | | true if setting a non-default horizontal speed limit | +| max_horizontal_speed | `float32` | | | (optional) [m/s] maximum speed (absolute) in the NE-plane | +| flag_set_max_vertical_speed | `bool` | | | true if setting a non-default vertical speed limit | +| max_vertical_speed | `float32` | | | (optional) [m/s] maximum speed (absolute) in the D-axis | +| flag_set_max_heading_rate | `bool` | | | true if setting a non-default heading rate limit | +| max_heading_rate | `float32` | | | (optional) [rad/s] maximum heading rate (absolute) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/GotoSetpoint.msg) + +:::details +Click here to see original file ```c # Position and (optional) heading setpoints with corresponding speed constraints @@ -36,5 +63,6 @@ float32 max_vertical_speed # (optional) [m/s] maximum speed (absolute) in the D- bool flag_set_max_heading_rate # true if setting a non-default heading rate limit float32 max_heading_rate # (optional) [rad/s] maximum heading rate (absolute) - ``` + +::: diff --git a/docs/zh/msg_docs/GpioConfig.md b/docs/zh/msg_docs/GpioConfig.md index 0d21b3ce66..284d6bb8e1 100644 --- a/docs/zh/msg_docs/GpioConfig.md +++ b/docs/zh/msg_docs/GpioConfig.md @@ -1,8 +1,45 @@ +--- +pageClass: is-wide-page +--- + # GpioConfig (UORB message) -GPIO configuration +GPIO configuration. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioConfig.msg) +**TOPICS:** gpio_config + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | Device id | +| mask | `uint32` | | | Pin mask | +| state | `uint32` | | | Initial pin output state | +| config | `uint32` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ---------------------------------------------------------------------------------------------------------- | -------- | --- | ------ | +| INPUT | `uint32` | 0 | 0x0000 | +| OUTPUT | `uint32` | 1 | 0x0001 | +| PULLUP | `uint32` | 16 | 0x0010 | +| PULLDOWN | `uint32` | 32 | 0x0020 | +| OPENDRAIN | `uint32` | 256 | 0x0100 | +| INPUT_FLOATING | `uint32` | 0 | 0x0000 | +| INPUT_PULLUP | `uint32` | 16 | 0x0010 | +| INPUT_PULLDOWN | `uint32` | 32 | 0x0020 | +| OUTPUT_PUSHPULL | `uint32` | 0 | 0x0000 | +| OUTPUT_OPENDRAIN | `uint32` | 256 | 0x0100 | +| OUTPUT_OPENDRAIN_PULLUP | `uint32` | 272 | 0x0110 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioConfig.msg) + +:::details +Click here to see original file ```c # GPIO configuration @@ -33,5 +70,6 @@ uint32 OUTPUT_OPENDRAIN = 256 # 0x0100 uint32 OUTPUT_OPENDRAIN_PULLUP = 272 # 0x0110 uint32 config - ``` + +::: diff --git a/docs/zh/msg_docs/GpioIn.md b/docs/zh/msg_docs/GpioIn.md index 589e7d7841..659eee9abd 100644 --- a/docs/zh/msg_docs/GpioIn.md +++ b/docs/zh/msg_docs/GpioIn.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # GpioIn (UORB message) -GPIO mask and state +GPIO mask and state. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioIn.msg) +**TOPICS:** gpio_in + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | Device id | +| state | `uint32` | | | pin state mask | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ---------------------------------------------------------------- | ------- | - | -- | +| MAX_INSTANCES | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioIn.msg) + +:::details +Click here to see original file ```c # GPIO mask and state @@ -12,5 +37,6 @@ uint64 timestamp # time since system start (microseconds) uint32 device_id # Device id uint32 state # pin state mask - ``` + +::: diff --git a/docs/zh/msg_docs/GpioOut.md b/docs/zh/msg_docs/GpioOut.md index fd77f0be3b..39064f77e6 100644 --- a/docs/zh/msg_docs/GpioOut.md +++ b/docs/zh/msg_docs/GpioOut.md @@ -1,8 +1,28 @@ +--- +pageClass: is-wide-page +--- + # GpioOut (UORB message) -GPIO mask and state +GPIO mask and state. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioOut.msg) +**TOPICS:** gpio_out + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | Device id | +| mask | `uint32` | | | pin mask | +| state | `uint32` | | | pin state mask | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioOut.msg) + +:::details +Click here to see original file ```c # GPIO mask and state @@ -12,5 +32,6 @@ uint32 device_id # Device id uint32 mask # pin mask uint32 state # pin state mask - ``` + +::: diff --git a/docs/zh/msg_docs/GpioRequest.md b/docs/zh/msg_docs/GpioRequest.md index 027b84c685..bf4dde5780 100644 --- a/docs/zh/msg_docs/GpioRequest.md +++ b/docs/zh/msg_docs/GpioRequest.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # GpioRequest (UORB message) -Request GPIO mask to be read +Request GPIO mask to be read. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioRequest.msg) +**TOPICS:** gpio_request + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | Device id | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioRequest.msg) + +:::details +Click here to see original file ```c # Request GPIO mask to be read uint64 timestamp # time since system start (microseconds) uint32 device_id # Device id - ``` + +::: diff --git a/docs/zh/msg_docs/GpsDump.md b/docs/zh/msg_docs/GpsDump.md index 03910da906..916128d66d 100644 --- a/docs/zh/msg_docs/GpsDump.md +++ b/docs/zh/msg_docs/GpsDump.md @@ -1,8 +1,37 @@ +--- +pageClass: is-wide-page +--- + # GpsDump (UORB message) This message is used to dump the raw gps communication to the log. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpsDump.msg) +**TOPICS:** gps_dump + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------ | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| instance | `uint8` | | | Instance of GNSS receiver | +| device_id | `uint32` | | | | +| len | `uint8` | | | length of data, MSB bit set = message to the gps device, | +| data | `uint8[79]` | | | data to write to the log | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | -- | -- | +| INSTANCE_MAIN | `uint8` | 0 | | +| INSTANCE_SECONDARY | `uint8` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpsDump.msg) + +:::details +Click here to see original file ```c # This message is used to dump the raw gps communication to the log. @@ -19,5 +48,6 @@ uint8 len # length of data, MSB bit set = message to the gps device, uint8[79] data # data to write to the log uint8 ORB_QUEUE_LENGTH = 16 - ``` + +::: diff --git a/docs/zh/msg_docs/GpsInjectData.md b/docs/zh/msg_docs/GpsInjectData.md index 2eda49d0c4..f7d4dcf781 100644 --- a/docs/zh/msg_docs/GpsInjectData.md +++ b/docs/zh/msg_docs/GpsInjectData.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # GpsInjectData (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpsInjectData.msg) +**TOPICS:** gps_injectdata + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| len | `uint16` | | | length of data | +| flags | `uint8` | | | LSB: 1=fragmented | +| data | `uint8[300]` | | | data to write to GPS device (RTCM message) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | - | -- | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | +| MAX_INSTANCES | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpsInjectData.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +42,6 @@ uint8[300] data # data to write to GPS device (RTCM message) uint8 ORB_QUEUE_LENGTH = 8 uint8 MAX_INSTANCES = 2 - ``` + +::: diff --git a/docs/zh/msg_docs/Gripper.md b/docs/zh/msg_docs/Gripper.md index eb888e2017..533e5a3ec5 100644 --- a/docs/zh/msg_docs/Gripper.md +++ b/docs/zh/msg_docs/Gripper.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # Gripper (UORB message) -# Used to command an actuation in the gripper, which is mapped to a specific output in the control allocation module +# Used to command an actuation in the gripper, which is mapped to a specific output in the control allocation module. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Gripper.msg) +**TOPICS:** gripper + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------- | +| timestamp | `uint64` | | | | +| command | `int8` | | | Commanded state for the gripper | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | ------ | - | -- | +| COMMAND_GRAB | `int8` | 0 | | +| COMMAND_RELEASE | `int8` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Gripper.msg) + +:::details +Click here to see original file ```c ## Used to command an actuation in the gripper, which is mapped to a specific output in the control allocation module @@ -12,5 +37,6 @@ uint64 timestamp int8 command # Commanded state for the gripper int8 COMMAND_GRAB = 0 int8 COMMAND_RELEASE = 1 - ``` + +::: diff --git a/docs/zh/msg_docs/HealthReport.md b/docs/zh/msg_docs/HealthReport.md index f69de0b179..c1dc76cce7 100644 --- a/docs/zh/msg_docs/HealthReport.md +++ b/docs/zh/msg_docs/HealthReport.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # HealthReport (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HealthReport.msg) +**TOPICS:** health_report + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| can_arm_mode_flags | `uint64` | | | bitfield for each flight mode (NAVIGATION_STATE_\*) if arming is possible | +| can_run_mode_flags | `uint64` | | | bitfield for each flight mode if it can run | +| health_is_present_flags | `uint64` | | | flags for each health_component_t | +| health_warning_flags | `uint64` | | | | +| health_error_flags | `uint64` | | | | +| arming_check_warning_flags | `uint64` | | | | +| arming_check_error_flags | `uint64` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HealthReport.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -15,5 +39,6 @@ uint64 health_error_flags uint64 arming_check_warning_flags uint64 arming_check_error_flags - ``` + +::: diff --git a/docs/zh/msg_docs/HeaterStatus.md b/docs/zh/msg_docs/HeaterStatus.md index 49194eed01..70f2ea04ce 100644 --- a/docs/zh/msg_docs/HeaterStatus.md +++ b/docs/zh/msg_docs/HeaterStatus.md @@ -1,6 +1,41 @@ +--- +pageClass: is-wide-page +--- + # HeaterStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HeaterStatus.msg) +**TOPICS:** heater_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | | +| heater_on | `bool` | | | | +| temperature_target_met | `bool` | | | | +| temperature_sensor | `float32` | | | | +| temperature_target | `float32` | | | | +| controller_period_usec | `uint32` | | | | +| controller_time_on_usec | `uint32` | | | | +| proportional_value | `float32` | | | | +| integrator_value | `float32` | | | | +| feed_forward_value | `float32` | | | | +| mode | `uint8` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ---------------------------------------------------------- | ------- | - | -- | +| MODE_GPIO | `uint8` | 1 | | +| MODE_PX4IO | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HeaterStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -23,5 +58,6 @@ float32 feed_forward_value uint8 MODE_GPIO = 1 uint8 MODE_PX4IO = 2 uint8 mode - ``` + +::: diff --git a/docs/zh/msg_docs/HomePosition.md b/docs/zh/msg_docs/HomePosition.md index b48528de7e..dfb626284e 100644 --- a/docs/zh/msg_docs/HomePosition.md +++ b/docs/zh/msg_docs/HomePosition.md @@ -1,8 +1,45 @@ +--- +pageClass: is-wide-page +--- + # HomePosition (UORB message) GPS home position in WGS84 coordinates. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/HomePosition.msg) +**TOPICS:** home_position + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lat | `float64` | | | Latitude in degrees | +| lon | `float64` | | | Longitude in degrees | +| alt | `float32` | | | Altitude in meters (AMSL) | +| x | `float32` | | | X coordinate in meters | +| y | `float32` | | | Y coordinate in meters | +| z | `float32` | | | Z coordinate in meters | +| roll | `float32` | | | Pitch angle in radians | +| pitch | `float32` | | | Roll angle in radians | +| yaw | `float32` | | | Yaw angle in radians | +| valid_alt | `bool` | | | true when the altitude has been set | +| valid_hpos | `bool` | | | true when the latitude and longitude have been set | +| valid_lpos | `bool` | | | true when the local position (xyz) has been set | +| manual_home | `bool` | | | true when home position was set manually | +| update_count | `uint32` | | | update counter of the home position | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/HomePosition.msg) + +:::details +Click here to see original file ```c # GPS home position in WGS84 coordinates. @@ -30,5 +67,6 @@ bool valid_lpos # true when the local position (xyz) has been set bool manual_home # true when home position was set manually uint32 update_count # update counter of the home position - ``` + +::: diff --git a/docs/zh/msg_docs/HomePositionV0.md b/docs/zh/msg_docs/HomePositionV0.md index 270d752337..e9e5f9029b 100644 --- a/docs/zh/msg_docs/HomePositionV0.md +++ b/docs/zh/msg_docs/HomePositionV0.md @@ -1,8 +1,43 @@ +--- +pageClass: is-wide-page +--- + # HomePositionV0 (UORB message) GPS home position in WGS84 coordinates. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/HomePositionV0.msg) +**TOPICS:** home_positionv0 + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lat | `float64` | | | Latitude in degrees | +| lon | `float64` | | | Longitude in degrees | +| alt | `float32` | | | Altitude in meters (AMSL) | +| x | `float32` | | | X coordinate in meters | +| y | `float32` | | | Y coordinate in meters | +| z | `float32` | | | Z coordinate in meters | +| yaw | `float32` | | | Yaw angle in radians | +| valid_alt | `bool` | | | true when the altitude has been set | +| valid_hpos | `bool` | | | true when the latitude and longitude have been set | +| valid_lpos | `bool` | | | true when the local position (xyz) has been set | +| manual_home | `bool` | | | true when home position was set manually | +| update_count | `uint32` | | | update counter of the home position | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/HomePositionV0.msg) + +:::details +Click here to see original file ```c # GPS home position in WGS84 coordinates. @@ -28,5 +63,6 @@ bool valid_lpos # true when the local position (xyz) has been set bool manual_home # true when home position was set manually uint32 update_count # update counter of the home position - ``` + +::: diff --git a/docs/zh/msg_docs/HoverThrustEstimate.md b/docs/zh/msg_docs/HoverThrustEstimate.md index d84945da58..9a643698e1 100644 --- a/docs/zh/msg_docs/HoverThrustEstimate.md +++ b/docs/zh/msg_docs/HoverThrustEstimate.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # HoverThrustEstimate (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HoverThrustEstimate.msg) +**TOPICS:** hover_thrustestimate + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | time of corresponding sensor data last used for this estimate | +| hover_thrust | `float32` | | | estimated hover thrust [0.1, 0.9] | +| hover_thrust_var | `float32` | | | estimated hover thrust variance | +| accel_innov | `float32` | | | innovation of the last acceleration fusion | +| accel_innov_var | `float32` | | | innovation variance of the last acceleration fusion | +| accel_innov_test_ratio | `float32` | | | normalized innovation squared test ratio | +| accel_noise_var | `float32` | | | vertical acceleration noise variance estimated form innovation residual | +| valid | `bool` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HoverThrustEstimate.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -16,5 +41,6 @@ float32 accel_innov_test_ratio # normalized innovation squared test ratio float32 accel_noise_var # vertical acceleration noise variance estimated form innovation residual bool valid - ``` + +::: diff --git a/docs/zh/msg_docs/InputRc.md b/docs/zh/msg_docs/InputRc.md index fbae6e0254..d594ab203b 100644 --- a/docs/zh/msg_docs/InputRc.md +++ b/docs/zh/msg_docs/InputRc.md @@ -1,6 +1,60 @@ +--- +pageClass: is-wide-page +--- + # InputRc (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InputRc.msg) +**TOPICS:** input_rc + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_last_signal | `uint64` | | | last valid reception time | +| channel_count | `uint8` | | | number of channels actually being seen | +| rssi | `int32` | | | receive signal strength indicator (RSSI): < 0: Undefined, 0: no signal, 100: full reception | +| rc_failsafe | `bool` | | | explicit failsafe flag: true on TX failure or TX out of range , false otherwise. Only the true state is reliable, as there are some (PPM) receivers on the market going into failsafe without telling us explicitly. | +| rc_lost | `bool` | | | RC receiver connection status: True,if no frame has arrived in the expected time, false otherwise. True usually means that the receiver has been disconnected, but can also indicate a radio link loss on "stupid" systems. Will remain false, if a RX with failsafe option continues to transmit frames after a link loss. | +| rc_lost_frame_count | `uint16` | | | 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. | +| rc_total_frame_count | `uint16` | | | 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. | +| rc_ppm_frame_length | `uint16` | | | Length of a single PPM frame. Zero for non-PPM systems | +| rc_frame_rate | `uint16` | | | RC frame rate in msg/second. 0 = invalid | +| input_source | `uint8` | | | Input source | +| values | `uint16[18]` | | | measured pulse widths for each of the supported channels | +| link_quality | `int8` | | | link quality. Percentage 0-100%. -1 = invalid | +| rssi_dbm | `float32` | | | Actual rssi in units of dBm. NaN = invalid | +| link_snr | `int8` | | | link signal to noise ratio in units of dB. -1 = invalid | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | --- | -------------------------------------------------------------------------------------------------------------------------------- | +| RC_INPUT_SOURCE_UNKNOWN | `uint8` | 0 | | +| RC_INPUT_SOURCE_PX4FMU_PPM | `uint8` | 1 | | +| RC_INPUT_SOURCE_PX4IO_PPM | `uint8` | 2 | | +| RC_INPUT_SOURCE_PX4IO_SPEKTRUM | `uint8` | 3 | | +| RC_INPUT_SOURCE_PX4IO_SBUS | `uint8` | 4 | | +| RC_INPUT_SOURCE_PX4IO_ST24 | `uint8` | 5 | | +| RC_INPUT_SOURCE_MAVLINK | `uint8` | 6 | | +| RC_INPUT_SOURCE_QURT | `uint8` | 7 | | +| RC_INPUT_SOURCE_PX4FMU_SPEKTRUM | `uint8` | 8 | | +| RC_INPUT_SOURCE_PX4FMU_SBUS | `uint8` | 9 | | +| RC_INPUT_SOURCE_PX4FMU_ST24 | `uint8` | 10 | | +| RC_INPUT_SOURCE_PX4FMU_SUMD | `uint8` | 11 | | +| RC_INPUT_SOURCE_PX4FMU_DSM | `uint8` | 12 | | +| RC_INPUT_SOURCE_PX4IO_SUMD | `uint8` | 13 | | +| RC_INPUT_SOURCE_PX4FMU_CRSF | `uint8` | 14 | | +| RC_INPUT_SOURCE_PX4FMU_GHST | `uint8` | 15 | | +| RC_INPUT_MAX_CHANNELS | `uint8` | 18 | Maximum number of R/C input channels in the system. S.Bus has up to 18 channels. | +| RSSI_MAX | `int8` | 100 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InputRc.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -45,5 +99,6 @@ 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/zh/msg_docs/InternalCombustionEngineControl.md b/docs/zh/msg_docs/InternalCombustionEngineControl.md index aacacd8973..af98f6a115 100644 --- a/docs/zh/msg_docs/InternalCombustionEngineControl.md +++ b/docs/zh/msg_docs/InternalCombustionEngineControl.md @@ -1,6 +1,28 @@ +--- +pageClass: is-wide-page +--- + # InternalCombustionEngineControl (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InternalCombustionEngineControl.msg) +**TOPICS:** internal_combustionengine_control + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| ignition_on | `bool` | | | activate/deactivate ignition (spark plug) | +| throttle_control | `float32` | | | setpoint for throttle actuator, with slew rate if enabled, idles with 0 [norm] [@range 0,1] [@uncontrolled NAN to stop motor] | +| choke_control | `float32` | | | setpoint for choke actuator, 1: fully closed [norm] [@range 0,1] | +| starter_engine_control | `float32` | | | setpoint for (electric) starter motor [norm] [@range 0,1] | +| user_request | `uint8` | | | user intent for the ICE being on/off | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InternalCombustionEngineControl.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +33,6 @@ float32 choke_control # setpoint for choke actuator, 1: fully closed [norm] [@ float32 starter_engine_control # setpoint for (electric) starter motor [norm] [@range 0,1] uint8 user_request # user intent for the ICE being on/off - ``` + +::: diff --git a/docs/zh/msg_docs/InternalCombustionEngineStatus.md b/docs/zh/msg_docs/InternalCombustionEngineStatus.md index 2ebb28ef4d..79866cfb21 100644 --- a/docs/zh/msg_docs/InternalCombustionEngineStatus.md +++ b/docs/zh/msg_docs/InternalCombustionEngineStatus.md @@ -1,6 +1,78 @@ +--- +pageClass: is-wide-page +--- + # InternalCombustionEngineStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InternalCombustionEngineStatus.msg) +**TOPICS:** internal_combustionengine_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| state | `uint8` | | | | +| flags | `uint32` | | | | +| engine_load_percent | `uint8` | | | Engine load estimate, percent, [0, 127] | +| engine_speed_rpm | `uint32` | | | Engine speed, revolutions per minute | +| spark_dwell_time_ms | `float32` | | | Spark dwell time, millisecond | +| atmospheric_pressure_kpa | `float32` | | | Atmospheric (barometric) pressure, kilopascal | +| intake_manifold_pressure_kpa | `float32` | | | Engine intake manifold pressure, kilopascal | +| intake_manifold_temperature | `float32` | | | Engine intake manifold temperature, kelvin | +| coolant_temperature | `float32` | | | Engine coolant temperature, kelvin | +| oil_pressure | `float32` | | | Oil pressure, kilopascal | +| oil_temperature | `float32` | | | Oil temperature, kelvin | +| fuel_pressure | `float32` | | | Fuel pressure, kilopascal | +| fuel_consumption_rate_cm3pm | `float32` | | | Instant fuel consumption estimate, (centimeter^3)/minute | +| estimated_consumed_fuel_volume_cm3 | `float32` | | | Estimate of the consumed fuel since the start of the engine, centimeter^3 | +| throttle_position_percent | `uint8` | | | Throttle position, percent | +| ecu_index | `uint8` | | | The index of the publishing ECU | +| spark_plug_usage | `uint8` | | | Spark plug activity report. | +| ignition_timing_deg | `float32` | | | Cylinder ignition timing, angular degrees of the crankshaft | +| injection_time_ms | `float32` | | | Fuel injection time, millisecond | +| cylinder_head_temperature | `float32` | | | Cylinder head temperature (CHT), kelvin | +| exhaust_gas_temperature | `float32` | | | Exhaust gas temperature (EGT), kelvin | +| lambda_coefficient | `float32` | | | Estimated lambda coefficient, dimensionless ratio | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------ | -------------------------------------------------------------------------------------- | +| STATE_STOPPED | `uint8` | 0 | The engine is not running. This is the default state. | +| STATE_STARTING | `uint8` | 1 | The engine is starting. This is a transient state. | +| STATE_RUNNING | `uint8` | 2 | The engine is running normally. | +| STATE_FAULT | `uint8` | 3 | The engine can no longer function. | +| FLAG_GENERAL_ERROR | `uint32` | 1 | General error. | +| FLAG_CRANKSHAFT_SENSOR_ERROR_SUPPORTED | `uint32` | 2 | Error of the crankshaft sensor. This flag is optional. | +| FLAG_CRANKSHAFT_SENSOR_ERROR | `uint32` | 4 | | +| FLAG_TEMPERATURE_SUPPORTED | `uint32` | 8 | Temperature levels. These flags are optional | +| FLAG_TEMPERATURE_BELOW_NOMINAL | `uint32` | 16 | Under-temperature warning | +| FLAG_TEMPERATURE_ABOVE_NOMINAL | `uint32` | 32 | Over-temperature warning | +| FLAG_TEMPERATURE_OVERHEATING | `uint32` | 64 | Critical overheating | +| FLAG_TEMPERATURE_EGT_ABOVE_NOMINAL | `uint32` | 128 | Exhaust gas over-temperature warning | +| FLAG_FUEL_PRESSURE_SUPPORTED | `uint32` | 256 | Fuel pressure. These flags are optional | +| FLAG_FUEL_PRESSURE_BELOW_NOMINAL | `uint32` | 512 | Under-pressure warning | +| FLAG_FUEL_PRESSURE_ABOVE_NOMINAL | `uint32` | 1024 | Over-pressure warning | +| FLAG_DETONATION_SUPPORTED | `uint32` | 2048 | Detonation warning. This flag is optional. | +| FLAG_DETONATION_OBSERVED | `uint32` | 4096 | Detonation condition observed warning | +| FLAG_MISFIRE_SUPPORTED | `uint32` | 8192 | Misfire warning. This flag is optional. | +| FLAG_MISFIRE_OBSERVED | `uint32` | 16384 | Misfire condition observed warning | +| FLAG_OIL_PRESSURE_SUPPORTED | `uint32` | 32768 | Oil pressure. These flags are optional | +| FLAG_OIL_PRESSURE_BELOW_NOMINAL | `uint32` | 65536 | Under-pressure warning | +| FLAG_OIL_PRESSURE_ABOVE_NOMINAL | `uint32` | 131072 | Over-pressure warning | +| FLAG_DEBRIS_SUPPORTED | `uint32` | 262144 | Debris warning. This flag is optional | +| FLAG_DEBRIS_DETECTED | `uint32` | 524288 | Detection of debris warning | +| SPARK_PLUG_SINGLE | `uint8` | 0 | | +| SPARK_PLUG_FIRST_ACTIVE | `uint8` | 1 | | +| SPARK_PLUG_SECOND_ACTIVE | `uint8` | 2 | | +| SPARK_PLUG_BOTH_ACTIVE | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InternalCombustionEngineStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -67,5 +139,6 @@ float32 injection_time_ms # Fuel injection time, millisecond float32 cylinder_head_temperature # Cylinder head temperature (CHT), kelvin float32 exhaust_gas_temperature # Exhaust gas temperature (EGT), kelvin float32 lambda_coefficient # Estimated lambda coefficient, dimensionless ratio - ``` + +::: diff --git a/docs/zh/msg_docs/IridiumsbdStatus.md b/docs/zh/msg_docs/IridiumsbdStatus.md index 07355178c9..5b9d07bf11 100644 --- a/docs/zh/msg_docs/IridiumsbdStatus.md +++ b/docs/zh/msg_docs/IridiumsbdStatus.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # IridiumsbdStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/IridiumsbdStatus.msg) +**TOPICS:** iridiumsbd_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| last_at_ok_timestamp | `uint64` | | | timestamp of the last "OK" received after the "AT" command | +| tx_buf_write_index | `uint16` | | | current size of the tx buffer | +| rx_buf_read_index | `uint16` | | | the rx buffer is parsed up to that index | +| rx_buf_end_index | `uint16` | | | current size of the rx buffer | +| failed_sbd_sessions | `uint16` | | | number of failed sbd sessions | +| successful_sbd_sessions | `uint16` | | | number of successful sbd sessions | +| num_tx_buf_reset | `uint16` | | | number of times the tx buffer was reset | +| signal_quality | `uint8` | | | current signal quality, 0 is no signal, 5 the best | +| state | `uint8` | | | current state of the driver, see the satcom_state of IridiumSBD.h for the definition | +| ring_pending | `bool` | | | indicates if a ring call is pending | +| tx_buf_write_pending | `bool` | | | indicates if a tx buffer write is pending | +| tx_session_pending | `bool` | | | indicates if a tx session is pending | +| rx_read_pending | `bool` | | | indicates if a rx read is pending | +| rx_session_pending | `bool` | | | indicates if a rx session is pending | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/IridiumsbdStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +49,6 @@ bool tx_buf_write_pending # indicates if a tx buffer write is pending bool tx_session_pending # indicates if a tx session is pending bool rx_read_pending # indicates if a rx read is pending bool rx_session_pending # indicates if a rx session is pending - ``` + +::: diff --git a/docs/zh/msg_docs/IrlockReport.md b/docs/zh/msg_docs/IrlockReport.md index d850a0bb1e..ad13a521e1 100644 --- a/docs/zh/msg_docs/IrlockReport.md +++ b/docs/zh/msg_docs/IrlockReport.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # IrlockReport (UORB message) -IRLOCK_REPORT message data +IRLOCK_REPORT message data. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/IrlockReport.msg) +**TOPICS:** irlock_report + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| signature | `uint16` | | | | +| pos_x | `float32` | | | tan(theta), where theta is the angle between the target and the camera center of projection in camera x-axis | +| pos_y | `float32` | | | tan(theta), where theta is the angle between the target and the camera center of projection in camera y-axis | +| size_x | `float32` | | | /\*\* size of target along camera x-axis in units of tan(theta) \*\*/ | +| size_y | `float32` | | | /\*\* size of target along camera y-axis in units of tan(theta) \*\*/ | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/IrlockReport.msg) + +:::details +Click here to see original file ```c # IRLOCK_REPORT message data @@ -16,5 +38,6 @@ float32 pos_x # tan(theta), where theta is the angle between the target and the float32 pos_y # tan(theta), where theta is the angle between the target and the camera center of projection in camera y-axis float32 size_x #/** size of target along camera x-axis in units of tan(theta) **/ float32 size_y #/** size of target along camera y-axis in units of tan(theta) **/ - ``` + +::: diff --git a/docs/zh/msg_docs/LandingGear.md b/docs/zh/msg_docs/LandingGear.md index 25e803e461..cfee3fe457 100644 --- a/docs/zh/msg_docs/LandingGear.md +++ b/docs/zh/msg_docs/LandingGear.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # LandingGear (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingGear.msg) +**TOPICS:** landing_gear + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| landing_gear | `int8` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------- | ------ | -- | ---------------------- | +| GEAR_UP | `int8` | 1 | landing gear up | +| GEAR_DOWN | `int8` | -1 | landing gear down | +| GEAR_KEEP | `int8` | 0 | keep the current state | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingGear.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +36,6 @@ int8 GEAR_DOWN = -1 # landing gear down int8 GEAR_KEEP = 0 # keep the current state int8 landing_gear - ``` + +::: diff --git a/docs/zh/msg_docs/LandingGearWheel.md b/docs/zh/msg_docs/LandingGearWheel.md index 74da2943fd..3e9fa40e51 100644 --- a/docs/zh/msg_docs/LandingGearWheel.md +++ b/docs/zh/msg_docs/LandingGearWheel.md @@ -1,10 +1,29 @@ +--- +pageClass: is-wide-page +--- + # LandingGearWheel (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingGearWheel.msg) +**TOPICS:** landing_gearwheel + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| normalized_wheel_setpoint | `float32` | | | negative is turning left, positive turning right [-1, 1] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingGearWheel.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) float32 normalized_wheel_setpoint # negative is turning left, positive turning right [-1, 1] - ``` + +::: diff --git a/docs/zh/msg_docs/LandingTargetInnovations.md b/docs/zh/msg_docs/LandingTargetInnovations.md index 9c896092e3..d2dd689763 100644 --- a/docs/zh/msg_docs/LandingTargetInnovations.md +++ b/docs/zh/msg_docs/LandingTargetInnovations.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # LandingTargetInnovations (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingTargetInnovations.msg) +**TOPICS:** landing_targetinnovations + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| innov_x | `float32` | | | | +| innov_y | `float32` | | | | +| innov_cov_x | `float32` | | | | +| innov_cov_y | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingTargetInnovations.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +32,6 @@ float32 innov_y # Innovation covariance of landing target position estimator float32 innov_cov_x float32 innov_cov_y - ``` + +::: diff --git a/docs/zh/msg_docs/LandingTargetPose.md b/docs/zh/msg_docs/LandingTargetPose.md index b4a76aeda7..b0e05a7e65 100644 --- a/docs/zh/msg_docs/LandingTargetPose.md +++ b/docs/zh/msg_docs/LandingTargetPose.md @@ -1,8 +1,41 @@ +--- +pageClass: is-wide-page +--- + # LandingTargetPose (UORB message) -Relative position of precision land target in navigation (body fixed, north aligned, NED) and inertial (world fixed, north aligned, NED) frames +Relative position of precision land target in navigation (body fixed, north aligned, NED) and inertial (world fixed, north aligned, NED) frames. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingTargetPose.msg) +**TOPICS:** landing_targetpose + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| is_static | `bool` | | | Flag indicating whether the landing target is static or moving with respect to the ground | +| rel_pos_valid | `bool` | | | Flag showing whether relative position is valid | +| rel_vel_valid | `bool` | | | Flag showing whether relative velocity is valid | +| x_rel | `float32` | | | X/north position of target, relative to vehicle (navigation frame) [meters] | +| y_rel | `float32` | | | Y/east position of target, relative to vehicle (navigation frame) [meters] | +| z_rel | `float32` | | | Z/down position of target, relative to vehicle (navigation frame) [meters] | +| vx_rel | `float32` | | | X/north velocity of target, relative to vehicle (navigation frame) [meters/second] | +| vy_rel | `float32` | | | Y/east velocity of target, relative to vehicle (navigation frame) [meters/second] | +| cov_x_rel | `float32` | | | X/north position variance [meters^2] | +| cov_y_rel | `float32` | | | Y/east position variance [meters^2] | +| cov_vx_rel | `float32` | | | X/north velocity variance [(meters/second)^2] | +| cov_vy_rel | `float32` | | | Y/east velocity variance [(meters/second)^2] | +| abs_pos_valid | `bool` | | | Flag showing whether absolute position is valid | +| x_abs | `float32` | | | X/north position of target, relative to origin (navigation frame) [meters] | +| y_abs | `float32` | | | Y/east position of target, relative to origin (navigation frame) [meters] | +| z_abs | `float32` | | | Z/down position of target, relative to origin (navigation frame) [meters] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingTargetPose.msg) + +:::details +Click here to see original file ```c # Relative position of precision land target in navigation (body fixed, north aligned, NED) and inertial (world fixed, north aligned, NED) frames @@ -31,5 +64,6 @@ bool abs_pos_valid # Flag showing whether absolute position is valid float32 x_abs # X/north position of target, relative to origin (navigation frame) [meters] float32 y_abs # Y/east position of target, relative to origin (navigation frame) [meters] float32 z_abs # Z/down position of target, relative to origin (navigation frame) [meters] - ``` + +::: diff --git a/docs/zh/msg_docs/LateralControlConfiguration.md b/docs/zh/msg_docs/LateralControlConfiguration.md index b0a03a6378..59a1d9ad11 100644 --- a/docs/zh/msg_docs/LateralControlConfiguration.md +++ b/docs/zh/msg_docs/LateralControlConfiguration.md @@ -1,9 +1,32 @@ +--- +pageClass: is-wide-page +--- + # LateralControlConfiguration (UORB message) -Fixed Wing Lateral Control Configuration message -Used by the fw_lateral_longitudinal_control module to constrain FixedWingLateralSetpoint messages. +Fixed Wing Lateral Control Configuration message. Used by the fw_lateral_longitudinal_control module to constrain FixedWingLateralSetpoint messages. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/LateralControlConfiguration.msg) +**TOPICS:** lateral_controlconfiguration + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lateral_accel_max | `float32` | m/s^2 | | currently maps to a maximum roll angle, accel_max = tan(roll_max) \* GRAVITY | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/LateralControlConfiguration.msg) + +:::details +Click here to see original file ```c # Fixed Wing Lateral Control Configuration message @@ -14,5 +37,6 @@ uint32 MESSAGE_VERSION = 0 uint64 timestamp # time since system start (microseconds) float32 lateral_accel_max # [m/s^2] currently maps to a maximum roll angle, accel_max = tan(roll_max) * GRAVITY - ``` + +::: diff --git a/docs/zh/msg_docs/LaunchDetectionStatus.md b/docs/zh/msg_docs/LaunchDetectionStatus.md index a85c63e4e8..b6389ee7c8 100644 --- a/docs/zh/msg_docs/LaunchDetectionStatus.md +++ b/docs/zh/msg_docs/LaunchDetectionStatus.md @@ -1,8 +1,34 @@ +--- +pageClass: is-wide-page +--- + # LaunchDetectionStatus (UORB message) -Status of the launch detection state machine (fixed-wing only) +Status of the launch detection state machine (fixed-wing only). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LaunchDetectionStatus.msg) +**TOPICS:** launch_detectionstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| launch_detection_state | `uint8` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | - | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| STATE_WAITING_FOR_LAUNCH | `uint8` | 0 | waiting for launch | +| STATE_LAUNCH_DETECTED_DISABLED_MOTOR | `uint8` | 1 | launch detected, but keep motor(s) disabled (e.g. because it can't spin freely while on catapult) | +| STATE_FLYING | `uint8` | 2 | launch detected, use normal takeoff/flying configuration | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LaunchDetectionStatus.msg) + +:::details +Click here to see original file ```c # Status of the launch detection state machine (fixed-wing only) @@ -14,5 +40,6 @@ uint8 STATE_LAUNCH_DETECTED_DISABLED_MOTOR = 1 # launch detected, but keep moto uint8 STATE_FLYING = 2 # launch detected, use normal takeoff/flying configuration uint8 launch_detection_state - ``` + +::: diff --git a/docs/zh/msg_docs/LedControl.md b/docs/zh/msg_docs/LedControl.md index 69590eb8a5..2b83e1c972 100644 --- a/docs/zh/msg_docs/LedControl.md +++ b/docs/zh/msg_docs/LedControl.md @@ -1,9 +1,54 @@ +--- +pageClass: is-wide-page +--- + # LedControl (UORB message) -LED control: control a single or multiple LED's. -These are the externally visible LED's, not the board LED's +LED control: control a single or multiple LED's. These are the externally visible LED's, not the board LED's. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LedControl.msg) +**TOPICS:** led_control + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| led_mask | `uint8` | | | bitmask which LED(s) to control, set to 0xff for all | +| color | `uint8` | | | see COLOR\_\* | +| mode | `uint8` | | | see MODE\_\* | +| num_blinks | `uint8` | | | how many times to blink (number of on-off cycles if mode is one of MODE_BLINK_\*) . Set to 0 for infinite | +| priority | `uint8` | | | priority: higher priority events will override current lower priority events (see MAX_PRIORITY) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| --------------------------------------------------------------------------------------------- | ------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| COLOR_OFF | `uint8` | 0 | this is only used in the drivers | +| COLOR_RED | `uint8` | 1 | | +| COLOR_GREEN | `uint8` | 2 | | +| COLOR_BLUE | `uint8` | 3 | | +| COLOR_YELLOW | `uint8` | 4 | | +| COLOR_PURPLE | `uint8` | 5 | | +| COLOR_AMBER | `uint8` | 6 | | +| COLOR_CYAN | `uint8` | 7 | | +| COLOR_WHITE | `uint8` | 8 | | +| MODE_OFF | `uint8` | 0 | turn LED off | +| MODE_ON | `uint8` | 1 | turn LED on | +| MODE_DISABLED | `uint8` | 2 | disable this priority (switch to lower priority setting) | +| MODE_BLINK_SLOW | `uint8` | 3 | | +| MODE_BLINK_NORMAL | `uint8` | 4 | | +| MODE_BLINK_FAST | `uint8` | 5 | | +| MODE_BREATHE | `uint8` | 6 | continuously increase & decrease brightness (solid color if driver does not support it) | +| MODE_FLASH | `uint8` | 7 | two fast blinks (on/off) with timing as in MODE_BLINK_FAST and then off for a while | +| MAX_PRIORITY | `uint8` | 2 | maximum priority (minimum is 0) | +| ORB_QUEUE_LENGTH | `uint8` | 8 | needs to match BOARD_MAX_LEDS | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LedControl.msg) + +:::details +Click here to see original file ```c # LED control: control a single or multiple LED's. @@ -43,5 +88,6 @@ uint8 num_blinks # how many times to blink (number of on-off cycles if mode is o uint8 priority # priority: higher priority events will override current lower priority events (see MAX_PRIORITY) uint8 ORB_QUEUE_LENGTH = 8 # needs to match BOARD_MAX_LEDS - ``` + +::: diff --git a/docs/zh/msg_docs/LogMessage.md b/docs/zh/msg_docs/LogMessage.md index 5f640bae18..b6cf33bc6e 100644 --- a/docs/zh/msg_docs/LogMessage.md +++ b/docs/zh/msg_docs/LogMessage.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # LogMessage (UORB message) -A logging message, output with PX4_WARN, PX4_ERR, PX4_INFO +A logging message, output with PX4_WARN, PX4_ERR, PX4_INFO. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LogMessage.msg) +**TOPICS:** log_message + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| severity | `uint8` | | | log level (same as in the linux kernel, starting with 0) | +| text | `char[127]` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | - | -- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LogMessage.msg) + +:::details +Click here to see original file ```c # A logging message, output with PX4_WARN, PX4_ERR, PX4_INFO @@ -13,5 +38,6 @@ uint8 severity # log level (same as in the linux kernel, starting with 0) char[127] text uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/zh/msg_docs/LoggerStatus.md b/docs/zh/msg_docs/LoggerStatus.md index 81dd11e035..11472db2f2 100644 --- a/docs/zh/msg_docs/LoggerStatus.md +++ b/docs/zh/msg_docs/LoggerStatus.md @@ -1,6 +1,43 @@ +--- +pageClass: is-wide-page +--- + # LoggerStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LoggerStatus.msg) +**TOPICS:** logger_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| type | `uint8` | | | | +| backend | `uint8` | | | | +| is_logging | `bool` | | | | +| total_written_kb | `float32` | | | total written to log in kiloBytes | +| write_rate_kb_s | `float32` | | | write rate in kiloBytes/s | +| dropouts | `uint32` | | | number of failed buffer writes due to buffer overflow | +| message_gaps | `uint32` | | | messages misssed | +| buffer_used_bytes | `uint32` | | | current buffer fill in Bytes | +| buffer_size_bytes | `uint32` | | | total buffer size in Bytes | +| num_messages | `uint8` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------- | ------- | - | -------------------------------------------------------------------------------------------- | +| LOGGER_TYPE_FULL | `uint8` | 0 | Normal, full size log | +| LOGGER_TYPE_MISSION | `uint8` | 1 | reduced mission log (e.g. for geotagging) | +| BACKEND_FILE | `uint8` | 1 | | +| BACKEND_MAVLINK | `uint8` | 2 | | +| BACKEND_ALL | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LoggerStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -26,5 +63,6 @@ uint32 buffer_used_bytes # current buffer fill in Bytes uint32 buffer_size_bytes # total buffer size in Bytes uint8 num_messages - ``` + +::: diff --git a/docs/zh/msg_docs/LongitudinalControlConfiguration.md b/docs/zh/msg_docs/LongitudinalControlConfiguration.md index 901d5c23bc..e33c7d4669 100644 --- a/docs/zh/msg_docs/LongitudinalControlConfiguration.md +++ b/docs/zh/msg_docs/LongitudinalControlConfiguration.md @@ -1,10 +1,40 @@ +--- +pageClass: is-wide-page +--- + # LongitudinalControlConfiguration (UORB message) -Fixed Wing Longitudinal Control Configuration message -Used by the fw_lateral_longitudinal_control module and TECS to constrain FixedWingLongitudinalSetpoint messages -and configure the resultant setpoints. +Fixed Wing Longitudinal Control Configuration message. Used by the fw_lateral_longitudinal_control module and TECS to constrain FixedWingLongitudinalSetpoint messages. and configure the resultant setpoints. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/LongitudinalControlConfiguration.msg) +**TOPICS:** longitudinal_controlconfiguration + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| pitch_min | `float32` | rad | [-pi : pi] | defaults to FW_P_LIM_MIN if NAN. | +| pitch_max | `float32` | rad | [-pi : pi] | defaults to FW_P_LIM_MAX if NAN. | +| throttle_min | `float32` | norm | [0 : 1] | deaults to FW_THR_MIN if NAN. | +| throttle_max | `float32` | norm | [0 : 1] | defaults to FW_THR_MAX if NAN. | +| climb_rate_target | `float32` | 米/秒 | | target climbrate to change altitude. Defaults to FW_T_CLIMB_MAX if NAN. Not used if height_rate is directly set in FixedWingLongitudinalSetpoint. | +| sink_rate_target | `float32` | 米/秒 | | target sinkrate to change altitude. Defaults to FW_T_SINK_MAX if NAN. Not used if height_rate is directly set in FixedWingLongitudinalSetpoint. | +| speed_weight | `float32` | | [0 : 2] | , 0=pitch controls altitude only, 2=pitch controls airspeed only | +| enforce_low_height_condition | `bool` | boolean | | if true, the altitude controller is configured with an alternative timeconstant for tighter altitude tracking | +| disable_underspeed_protection | `bool` | boolean | | if true, underspeed handling is disabled in the altitude controller | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/LongitudinalControlConfiguration.msg) + +:::details +Click here to see original file ```c # Fixed Wing Longitudinal Control Configuration message @@ -24,5 +54,6 @@ float32 sink_rate_target # [m/s] target sinkrate to change altitude. Defaults float32 speed_weight # [@range 0,2], 0=pitch controls altitude only, 2=pitch controls airspeed only bool enforce_low_height_condition # [boolean] if true, the altitude controller is configured with an alternative timeconstant for tighter altitude tracking bool disable_underspeed_protection # [boolean] if true, underspeed handling is disabled in the altitude controller - ``` + +::: diff --git a/docs/zh/msg_docs/MagWorkerData.md b/docs/zh/msg_docs/MagWorkerData.md index d761c92843..fa90b4cd67 100644 --- a/docs/zh/msg_docs/MagWorkerData.md +++ b/docs/zh/msg_docs/MagWorkerData.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # MagWorkerData (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MagWorkerData.msg) +**TOPICS:** mag_workerdata + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| done_count | `uint32` | | | | +| calibration_points_perside | `uint32` | | | | +| calibration_interval_perside_us | `uint64` | | | | +| calibration_counter_total | `uint32[4]` | | | | +| side_data_collected | `bool[4]` | | | | +| x | `float32[4]` | | | | +| y | `float32[4]` | | | | +| z | `float32[4]` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------ | ------- | - | -- | +| MAX_MAGS | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MagWorkerData.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -16,5 +48,6 @@ bool[4] side_data_collected float32[4] x float32[4] y float32[4] z - ``` + +::: diff --git a/docs/zh/msg_docs/MagnetometerBiasEstimate.md b/docs/zh/msg_docs/MagnetometerBiasEstimate.md index 0c8c28af9b..b215bbc04f 100644 --- a/docs/zh/msg_docs/MagnetometerBiasEstimate.md +++ b/docs/zh/msg_docs/MagnetometerBiasEstimate.md @@ -1,6 +1,28 @@ +--- +pageClass: is-wide-page +--- + # MagnetometerBiasEstimate (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MagnetometerBiasEstimate.msg) +**TOPICS:** magnetometer_biasestimate + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| bias_x | `float32[4]` | | | estimated X-bias of all the sensors | +| bias_y | `float32[4]` | | | estimated Y-bias of all the sensors | +| bias_z | `float32[4]` | | | estimated Z-bias of all the sensors | +| valid | `bool[4]` | | | true if the estimator has converged | +| stable | `bool[4]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MagnetometerBiasEstimate.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +33,6 @@ float32[4] bias_z # estimated Z-bias of all the sensors bool[4] valid # true if the estimator has converged bool[4] stable - ``` + +::: diff --git a/docs/zh/msg_docs/ManualControlSetpoint.md b/docs/zh/msg_docs/ManualControlSetpoint.md index b96cb64322..9059326deb 100644 --- a/docs/zh/msg_docs/ManualControlSetpoint.md +++ b/docs/zh/msg_docs/ManualControlSetpoint.md @@ -1,6 +1,53 @@ +--- +pageClass: is-wide-page +--- + # ManualControlSetpoint (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ManualControlSetpoint.msg) +**TOPICS:** manual_control_setpoint manual_control_input + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| valid | `bool` | | | | +| data_source | `uint8` | | | | +| roll | `float32` | | | move right, positive roll rotation, right side down | +| pitch | `float32` | | | move forward, negative pitch rotation, nose down | +| yaw | `float32` | | | positive yaw rotation, clockwise when seen top down | +| throttle | `float32` | | | move up, positive thrust, -1 is minimum available 0% or -100% +1 is 100% thrust | +| flaps | `float32` | | | position of flaps switch/knob/lever [-1, 1] | +| aux1 | `float32` | | | | +| aux2 | `float32` | | | | +| aux3 | `float32` | | | | +| aux4 | `float32` | | | | +| aux5 | `float32` | | | | +| aux6 | `float32` | | | | +| sticks_moving | `bool` | | | | +| buttons | `uint16` | | | From uint16 buttons field of Mavlink manual_control message | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | -------- | - | ---------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| SOURCE_UNKNOWN | `uint8` | 0 | | +| SOURCE_RC | `uint8` | 1 | radio control (input_rc) | +| SOURCE_MAVLINK_0 | `uint8` | 2 | mavlink instance 0 | +| SOURCE_MAVLINK_1 | `uint8` | 3 | mavlink instance 1 | +| SOURCE_MAVLINK_2 | `uint8` | 4 | mavlink instance 2 | +| SOURCE_MAVLINK_3 | `uint8` | 5 | mavlink instance 3 | +| SOURCE_MAVLINK_4 | `uint8` | 6 | mavlink instance 4 | +| SOURCE_MAVLINK_5 | `uint8` | 7 | mavlink instance 5 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ManualControlSetpoint.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -51,5 +98,6 @@ uint16 buttons # From uint16 buttons field of Mavlink manual_control message # DEPRECATED: float32 y # DEPRECATED: float32 z # DEPRECATED: float32 r - ``` + +::: diff --git a/docs/zh/msg_docs/ManualControlSwitches.md b/docs/zh/msg_docs/ManualControlSwitches.md index 189682730f..6a3c09c14b 100644 --- a/docs/zh/msg_docs/ManualControlSwitches.md +++ b/docs/zh/msg_docs/ManualControlSwitches.md @@ -1,6 +1,55 @@ +--- +pageClass: is-wide-page +--- + # ManualControlSwitches (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ManualControlSwitches.msg) +**TOPICS:** manual_controlswitches + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| mode_slot | `uint8` | | | the slot a specific model selector is in | +| arm_switch | `uint8` | | | arm/disarm switch: _DISARMED_, ARMED | +| return_switch | `uint8` | | | return to launch 2 position switch (mandatory): _NORMAL_, RTL | +| loiter_switch | `uint8` | | | loiter 2 position switch (optional): _MISSION_, LOITER | +| offboard_switch | `uint8` | | | offboard 2 position switch (optional): _NORMAL_, OFFBOARD | +| kill_switch | `uint8` | | | throttle kill: _NORMAL_, KILL | +| termination_switch | `uint8` | | | trigger termination which cannot be undone | +| gear_switch | `uint8` | | | landing gear switch: _DOWN_, UP | +| transition_switch | `uint8` | | | VTOL transition switch: \_HOVER, FORWARD_FLIGHT | +| photo_switch | `uint8` | | | Photo trigger switch | +| video_switch | `uint8` | | | Photo trigger switch | +| engage_main_motor_switch | `uint8` | | | Engage the main motor (for helicopters) | +| payload_power_switch | `uint8` | | | Payload power switch | +| switch_changes | `uint32` | | | number of switch changes | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| --------------------------------------------------------------------------------------------- | ------- | - | ---------------------------------------------------- | +| SWITCH_POS_NONE | `uint8` | 0 | switch is not mapped | +| SWITCH_POS_ON | `uint8` | 1 | switch activated (value = 1) | +| SWITCH_POS_MIDDLE | `uint8` | 2 | middle position (value = 0) | +| SWITCH_POS_OFF | `uint8` | 3 | switch not activated (value = -1) | +| MODE_SLOT_NONE | `uint8` | 0 | no mode slot assigned | +| MODE_SLOT_1 | `uint8` | 1 | mode slot 1 selected | +| MODE_SLOT_2 | `uint8` | 2 | mode slot 2 selected | +| MODE_SLOT_3 | `uint8` | 3 | mode slot 3 selected | +| MODE_SLOT_4 | `uint8` | 4 | mode slot 4 selected | +| MODE_SLOT_5 | `uint8` | 5 | mode slot 5 selected | +| MODE_SLOT_6 | `uint8` | 6 | mode slot 6 selected | +| MODE_SLOT_NUM | `uint8` | 6 | number of slots | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ManualControlSwitches.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -40,5 +89,6 @@ uint8 engage_main_motor_switch # Engage the main motor (for helicopters) uint8 payload_power_switch # Payload power switch uint32 switch_changes # number of switch changes - ``` + +::: diff --git a/docs/zh/msg_docs/MavlinkLog.md b/docs/zh/msg_docs/MavlinkLog.md index 64ab9a8085..6567ec6eea 100644 --- a/docs/zh/msg_docs/MavlinkLog.md +++ b/docs/zh/msg_docs/MavlinkLog.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # MavlinkLog (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MavlinkLog.msg) +**TOPICS:** mavlink_log + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| text | `char[127]` | | | | +| severity | `uint8` | | | log level (same as in the linux kernel, starting with 0) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | - | -- | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MavlinkLog.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,5 +34,6 @@ char[127] text uint8 severity # log level (same as in the linux kernel, starting with 0) uint8 ORB_QUEUE_LENGTH = 8 - ``` + +::: diff --git a/docs/zh/msg_docs/MavlinkTunnel.md b/docs/zh/msg_docs/MavlinkTunnel.md index 8775e82ae4..4462d631ba 100644 --- a/docs/zh/msg_docs/MavlinkTunnel.md +++ b/docs/zh/msg_docs/MavlinkTunnel.md @@ -1,8 +1,46 @@ +--- +pageClass: is-wide-page +--- + # MavlinkTunnel (UORB message) -MAV_TUNNEL_PAYLOAD_TYPE enum +MAV_TUNNEL_PAYLOAD_TYPE enum. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MavlinkTunnel.msg) +**TOPICS:** mavlink_tunnel esc_serial_passthru io_serial_passthru + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | Time since system start (microseconds) | +| payload_type | `uint16` | | | A code that identifies the content of the payload (0 for unknown, which is the default). If this code is less than 32768, it is a 'registered' payload type and the corresponding code should be added to the MAV_TUNNEL_PAYLOAD_TYPE enum. Software creators can register blocks of types as needed. Codes greater than 32767 are considered local experiments and should not be checked in to any widely distributed codebase. | +| target_system | `uint8` | | | System ID (can be 0 for broadcast, but this is discouraged) | +| target_component | `uint8` | | | Component ID (can be 0 for broadcast, but this is discouraged) | +| payload_length | `uint8` | | | Length of the data transported in payload | +| payload | `uint8[128]` | | | Data itself | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | --- | ---------------------------------------- | +| MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN | `uint8` | 0 | Encoding of payload unknown | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0 | `uint8` | 200 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1 | `uint8` | 201 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2 | `uint8` | 202 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3 | `uint8` | 203 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4 | `uint8` | 204 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5 | `uint8` | 205 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6 | `uint8` | 206 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7 | `uint8` | 207 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8 | `uint8` | 208 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9 | `uint8` | 209 | Registered for STorM32 gimbal controller | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MavlinkTunnel.msg) + +:::details +Click here to see original file ```c # MAV_TUNNEL_PAYLOAD_TYPE enum @@ -27,6 +65,7 @@ uint8 payload_length # Length of the data transported in payload uint8[128] payload # Data itself # Topic aliases for known payload types -# TOPICS mavlink_tunnel esc_serial_passthru - +# TOPICS mavlink_tunnel esc_serial_passthru io_serial_passthru ``` + +::: diff --git a/docs/zh/msg_docs/MessageFormatRequest.md b/docs/zh/msg_docs/MessageFormatRequest.md index a141574434..d522c3e777 100644 --- a/docs/zh/msg_docs/MessageFormatRequest.md +++ b/docs/zh/msg_docs/MessageFormatRequest.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # MessageFormatRequest (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MessageFormatRequest.msg) +**TOPICS:** message_formatrequest + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| protocol_version | `uint16` | | | Must be set to LATEST_PROTOCOL_VERSION. Do not change this field, it must be the first field after the timestamp | +| topic_name | `char[50]` | | | E.g. /fmu/in/vehicle_command | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| --------------------------------------------------------------------------------------------------------- | -------- | - | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| LATEST_PROTOCOL_VERSION | `uint16` | 1 | Current version of this protocol. Increase this whenever the MessageFormatRequest or MessageFormatResponse changes. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MessageFormatRequest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -12,5 +37,6 @@ uint16 LATEST_PROTOCOL_VERSION = 1 # Current version of this protocol. Increase uint16 protocol_version # Must be set to LATEST_PROTOCOL_VERSION. Do not change this field, it must be the first field after the timestamp char[50] topic_name # E.g. /fmu/in/vehicle_command - ``` + +::: diff --git a/docs/zh/msg_docs/MessageFormatResponse.md b/docs/zh/msg_docs/MessageFormatResponse.md index 5b9bd86917..a3a1790d0b 100644 --- a/docs/zh/msg_docs/MessageFormatResponse.md +++ b/docs/zh/msg_docs/MessageFormatResponse.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # MessageFormatResponse (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MessageFormatResponse.msg) +**TOPICS:** message_formatresponse + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| protocol_version | `uint16` | | | Must be set to LATEST_PROTOCOL_VERSION. Do not change this field, it must be the first field after the timestamp | +| topic_name | `char[50]` | | | E.g. /fmu/in/vehicle_command | +| success | `bool` | | | | +| message_hash | `uint32` | | | hash over all message fields | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MessageFormatResponse.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -13,5 +34,6 @@ char[50] topic_name # E.g. /fmu/in/vehicle_command bool success uint32 message_hash # hash over all message fields - ``` + +::: diff --git a/docs/zh/msg_docs/Mission.md b/docs/zh/msg_docs/Mission.md index d878aba5a6..df9ffa9aef 100644 --- a/docs/zh/msg_docs/Mission.md +++ b/docs/zh/msg_docs/Mission.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # Mission (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Mission.msg) +**TOPICS:** mission + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mission_dataman_id | `uint8` | | | default 0, there are two offboard storage places in the dataman: 0 or 1 | +| fence_dataman_id | `uint8` | | | default 0, there are two offboard storage places in the dataman: 0 or 1 | +| safepoint_dataman_id | `uint8` | | | default 0, there are two offboard storage places in the dataman: 0 or 1 | +| count | `uint16` | | | count of the missions stored in the dataman | +| current_seq | `int32` | | | default -1, start at the one changed latest | +| land_start_index | `int32` | | | Index of the land start marker, if unavailable index of the land item, -1 otherwise | +| land_index | `int32` | | | Index of the land item, -1 otherwise | +| mission_id | `uint32` | | | indicates updates to the mission, reload from dataman if changed | +| geofence_id | `uint32` | | | indicates updates to the geofence, reload from dataman if changed | +| safe_points_id | `uint32` | | | indicates updates to the safe points, reload from dataman if changed | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Mission.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -17,5 +44,6 @@ int32 land_index # Index of the land item, -1 otherwise uint32 mission_id # indicates updates to the mission, reload from dataman if changed uint32 geofence_id # indicates updates to the geofence, reload from dataman if changed uint32 safe_points_id # indicates updates to the safe points, reload from dataman if changed - ``` + +::: diff --git a/docs/zh/msg_docs/MissionResult.md b/docs/zh/msg_docs/MissionResult.md index 60ee84c923..9727ad63ae 100644 --- a/docs/zh/msg_docs/MissionResult.md +++ b/docs/zh/msg_docs/MissionResult.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # MissionResult (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MissionResult.msg) +**TOPICS:** mission_result + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mission_id | `uint32` | | | Id for the mission for which the result was generated | +| geofence_id | `uint32` | | | Id for the corresponding geofence for which the result was generated (used for mission feasibility) | +| home_position_counter | `uint32` | | | Counter of the home position for which the result was generated (used for mission feasibility) | +| seq_reached | `int32` | | | Sequence of the mission item which has been reached, default -1 | +| seq_current | `uint16` | | | Sequence of the current mission item | +| seq_total | `uint16` | | | Total number of mission items | +| valid | `bool` | | | true if mission is valid | +| warning | `bool` | | | true if mission is valid, but has potentially problematic items leading to safety warnings | +| finished | `bool` | | | true if mission has been completed | +| failure | `bool` | | | true if the mission cannot continue or be completed for some reason | +| item_do_jump_changed | `bool` | | | true if the number of do jumps remaining has changed | +| item_changed_index | `uint16` | | | indicate which item has changed | +| item_do_jump_remaining | `uint16` | | | set to the number of do jumps remaining for that item | +| execution_mode | `uint8` | | | indicates the mode in which the mission is executed | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MissionResult.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -23,5 +54,6 @@ uint16 item_changed_index # indicate which item has changed uint16 item_do_jump_remaining # set to the number of do jumps remaining for that item uint8 execution_mode # indicates the mode in which the mission is executed - ``` + +::: diff --git a/docs/zh/msg_docs/ModeCompleted.md b/docs/zh/msg_docs/ModeCompleted.md index 76c0c297e6..731503b039 100644 --- a/docs/zh/msg_docs/ModeCompleted.md +++ b/docs/zh/msg_docs/ModeCompleted.md @@ -1,11 +1,35 @@ +--- +pageClass: is-wide-page +--- + # ModeCompleted (UORB message) -Mode completion result, published by an active mode. -The possible values of nav_state are defined in the VehicleStatus msg. -Note that this is not always published (e.g. when a user switches modes or on -failsafe activation) +Mode completion result, published by an active mode. The possible values of nav_state are defined in the VehicleStatus msg. Note that this is not always published (e.g. when a user switches modes or on. failsafe activation). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ModeCompleted.msg) +**TOPICS:** mode_completed + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| result | `uint8` | | | One of RESULT\_\* | +| nav_state | `uint8` | | | Source mode (values in VehicleStatus) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| --------------------------------------------------------------------------------------------------- | -------- | --- | ---------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| RESULT_SUCCESS | `uint8` | 0 | | +| RESULT_FAILURE_OTHER | `uint8` | 100 | Mode failed (generic error) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ModeCompleted.msg) + +:::details +Click here to see original file ```c # Mode completion result, published by an active mode. @@ -25,5 +49,6 @@ uint8 RESULT_FAILURE_OTHER = 100 # Mode failed (generic error) uint8 result # One of RESULT_* uint8 nav_state # Source mode (values in VehicleStatus) - ``` + +::: diff --git a/docs/zh/msg_docs/MountOrientation.md b/docs/zh/msg_docs/MountOrientation.md index 4ab3f5b3e4..51d3b74654 100644 --- a/docs/zh/msg_docs/MountOrientation.md +++ b/docs/zh/msg_docs/MountOrientation.md @@ -1,9 +1,28 @@ +--- +pageClass: is-wide-page +--- + # MountOrientation (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MountOrientation.msg) +**TOPICS:** mount_orientation + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| attitude_euler_angle | `float32[3]` | | | Attitude/direction of the mount as euler angles in rad | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MountOrientation.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) float32[3] attitude_euler_angle # Attitude/direction of the mount as euler angles in rad - ``` + +::: diff --git a/docs/zh/msg_docs/NavigatorMissionItem.md b/docs/zh/msg_docs/NavigatorMissionItem.md index 0899681c54..63e3e56b0b 100644 --- a/docs/zh/msg_docs/NavigatorMissionItem.md +++ b/docs/zh/msg_docs/NavigatorMissionItem.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # NavigatorMissionItem (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NavigatorMissionItem.msg) +**TOPICS:** navigator_missionitem + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| sequence_current | `uint16` | | | Sequence of the current mission item | +| nav_cmd | `uint16` | | | | +| latitude | `float32` | | | | +| longitude | `float32` | | | | +| time_inside | `float32` | | | time that the MAV should stay inside the radius before advancing in seconds | +| acceptance_radius | `float32` | | | default radius in which the mission is accepted as reached in meters | +| loiter_radius | `float32` | | | loiter radius in meters, 0 for a VTOL to hover, negative for counter-clockwise | +| yaw | `float32` | | | in radians NED -PI..+PI, NAN means don't change yaw | +| altitude | `float32` | | | altitude in meters (AMSL) | +| frame | `uint8` | | | mission frame | +| origin | `uint8` | | | mission item origin (onboard or mavlink) | +| loiter_exit_xtrack | `bool` | | | exit xtrack location: 0 for center of loiter wp, 1 for exit location | +| force_heading | `bool` | | | heading needs to be reached | +| altitude_is_relative | `bool` | | | true if altitude is relative from start point | +| autocontinue | `bool` | | | true if next waypoint should follow after this one | +| vtol_back_transition | `bool` | | | part of the vtol back transition sequence | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NavigatorMissionItem.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -26,5 +59,6 @@ bool force_heading # heading needs to be reached bool altitude_is_relative # true if altitude is relative from start point bool autocontinue # true if next waypoint should follow after this one bool vtol_back_transition # part of the vtol back transition sequence - ``` + +::: diff --git a/docs/zh/msg_docs/NavigatorStatus.md b/docs/zh/msg_docs/NavigatorStatus.md index 4eb53a56c8..554b9fe18a 100644 --- a/docs/zh/msg_docs/NavigatorStatus.md +++ b/docs/zh/msg_docs/NavigatorStatus.md @@ -1,9 +1,34 @@ +--- +pageClass: is-wide-page +--- + # NavigatorStatus (UORB message) -Current status of a Navigator mode -The possible values of nav_state are defined in the VehicleStatus msg. +Current status of a Navigator mode. The possible values of nav_state are defined in the VehicleStatus msg. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NavigatorStatus.msg) +**TOPICS:** navigator_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| nav_state | `uint8` | | | Source mode (values in VehicleStatus) | +| failure | `uint8` | | | Navigator failure enum | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------- | ------- | - | --------------------------------------------------- | +| FAILURE_NONE | `uint8` | 0 | | +| FAILURE_HAGL | `uint8` | 1 | Target altitude exceeds maximum height above ground | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NavigatorStatus.msg) + +:::details +Click here to see original file ```c # Current status of a Navigator mode @@ -15,5 +40,6 @@ uint8 failure # Navigator failure enum uint8 FAILURE_NONE = 0 uint8 FAILURE_HAGL = 1 # Target altitude exceeds maximum height above ground - ``` + +::: diff --git a/docs/zh/msg_docs/NeuralControl.md b/docs/zh/msg_docs/NeuralControl.md index 3e99004fbc..82d077e4ad 100644 --- a/docs/zh/msg_docs/NeuralControl.md +++ b/docs/zh/msg_docs/NeuralControl.md @@ -1,12 +1,33 @@ +--- +pageClass: is-wide-page +--- + # NeuralControl (UORB message) -Neural control +Neural control. Debugging topic for the Neural controller, logs the inputs and output vectors of the neural network, and the time it takes to run Publisher: mc_nn_control Subscriber: logger -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NeuralControl.msg) +**TOPICS:** neural_control + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------ | ------------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| observation | `float32[15]` | | | Observation vector (pos error (3), att (6d), lin vel (3), ang vel (3)) | +| network_output | `float32[4]` | | | Output from neural network | +| controller_time | `int32` | us | | Time spent from input to output | +| inference_time | `int32` | us | | Time spent for NN inference | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NeuralControl.msg) + +:::details +Click here to see original file ```c # Neural control @@ -22,5 +43,6 @@ float32[4] network_output # Output from neural network int32 controller_time # [us] Time spent from input to output int32 inference_time # [us] Time spent for NN inference - ``` + +::: diff --git a/docs/zh/msg_docs/NormalizedUnsignedSetpoint.md b/docs/zh/msg_docs/NormalizedUnsignedSetpoint.md index 8533b090ae..0d6ef5c452 100644 --- a/docs/zh/msg_docs/NormalizedUnsignedSetpoint.md +++ b/docs/zh/msg_docs/NormalizedUnsignedSetpoint.md @@ -1,6 +1,24 @@ +--- +pageClass: is-wide-page +--- + # NormalizedUnsignedSetpoint (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NormalizedUnsignedSetpoint.msg) +**TOPICS:** flaps_setpoint spoilers_setpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| normalized_setpoint | `float32` | 0, 1 | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NormalizedUnsignedSetpoint.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +26,6 @@ uint64 timestamp # time since system start (microseconds) float32 normalized_setpoint # [0, 1] # TOPICS flaps_setpoint spoilers_setpoint - ``` + +::: diff --git a/docs/zh/msg_docs/ObstacleDistance.md b/docs/zh/msg_docs/ObstacleDistance.md index 622ba0a2ba..7dce3a0e4f 100644 --- a/docs/zh/msg_docs/ObstacleDistance.md +++ b/docs/zh/msg_docs/ObstacleDistance.md @@ -1,8 +1,44 @@ +--- +pageClass: is-wide-page +--- + # ObstacleDistance (UORB message) Obstacle distances in front of the sensor. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ObstacleDistance.msg) +**TOPICS:** obstacle_distance obstacle_distance_fused + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| frame | `uint8` | | | Coordinate frame of reference for the yaw rotation and offset of the sensor data. Defaults to MAV_FRAME_GLOBAL, which is North aligned. For body-mounted sensors use MAV_FRAME_BODY_FRD, which is vehicle front aligned. | +| sensor_type | `uint8` | | | Type from MAV_DISTANCE_SENSOR enum. | +| distances | `uint16[72]` | | | Distance of obstacles around the UAV with index 0 corresponding to local North. A value of 0 means that the obstacle is right in front of the sensor. A value of max_distance +1 means no obstacle is present. A value of UINT16_MAX for unknown/not used. In a array element, one unit corresponds to 1cm. | +| increment | `float32` | | | Angular width in degrees of each array element. | +| min_distance | `uint16` | | | Minimum distance the sensor can measure in centimeters. | +| max_distance | `uint16` | | | Maximum distance the sensor can measure in centimeters. | +| angle_offset | `float32` | | | Relative angle offset of the 0-index element in the distances array. Value of 0 corresponds to forward. Positive is clockwise direction, negative is counter-clockwise. | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -- | -- | +| MAV_FRAME_GLOBAL | `uint8` | 0 | | +| MAV_FRAME_LOCAL_NED | `uint8` | 1 | | +| MAV_FRAME_BODY_FRD | `uint8` | 12 | | +| MAV_DISTANCE_SENSOR_LASER | `uint8` | 0 | | +| MAV_DISTANCE_SENSOR_ULTRASOUND | `uint8` | 1 | | +| MAV_DISTANCE_SENSOR_INFRARED | `uint8` | 2 | | +| MAV_DISTANCE_SENSOR_RADAR | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ObstacleDistance.msg) + +:::details +Click here to see original file ```c # Obstacle distances in front of the sensor. @@ -29,5 +65,6 @@ uint16 max_distance # Maximum distance the sensor can measure in centimeters. float32 angle_offset # Relative angle offset of the 0-index element in the distances array. Value of 0 corresponds to forward. Positive is clockwise direction, negative is counter-clockwise. # TOPICS obstacle_distance obstacle_distance_fused - ``` + +::: diff --git a/docs/zh/msg_docs/OffboardControlMode.md b/docs/zh/msg_docs/OffboardControlMode.md index 090d31aa7a..b52cdf8187 100644 --- a/docs/zh/msg_docs/OffboardControlMode.md +++ b/docs/zh/msg_docs/OffboardControlMode.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # OffboardControlMode (UORB消息) -Offboard控制模式 +Off-board control mode. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OffboardControlMode.msg) +**TOPICS:** offboard_controlmode + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| 位置 | `bool` | | | | +| 速度 | `bool` | | | | +| acceleration | `bool` | | | | +| attitude | `bool` | | | | +| body_rate | `bool` | | | | +| thrust_and_torque | `bool` | | | | +| direct_actuator | `bool` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OffboardControlMode.msg) + +:::details +Click here to see original file ```c # Off-board control mode @@ -16,5 +40,6 @@ bool attitude bool body_rate bool thrust_and_torque bool direct_actuator - ``` + +::: diff --git a/docs/zh/msg_docs/OnboardComputerStatus.md b/docs/zh/msg_docs/OnboardComputerStatus.md index fc60e6f789..0a34170c56 100644 --- a/docs/zh/msg_docs/OnboardComputerStatus.md +++ b/docs/zh/msg_docs/OnboardComputerStatus.md @@ -1,8 +1,44 @@ +--- +pageClass: is-wide-page +--- + # OnboardComputerStatus (UORB message) -ONBOARD_COMPUTER_STATUS message data +ONBOARD_COMPUTER_STATUS message data. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OnboardComputerStatus.msg) +**TOPICS:** onboard_computerstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------ | ----------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | time since system start (microseconds) | +| uptime | `uint32` | ms | | time since system boot of the companion (milliseconds) | +| type | `uint8` | | | type of onboard computer 0: Mission computer primary, 1: Mission computer backup 1, 2: Mission computer backup 2, 3: Compute node, 4-5: Compute spares, 6-9: Payload computers. | +| cpu_cores | `uint8[8]` | | | CPU usage on the component in percent | +| cpu_combined | `uint8[10]` | | | Combined CPU usage as the last 10 slices of 100 MS | +| gpu_cores | `uint8[4]` | | | GPU usage on the component in percent | +| gpu_combined | `uint8[10]` | | | Combined GPU usage as the last 10 slices of 100 MS | +| temperature_board | `int8` | degC | | Temperature of the board | +| temperature_core | `int8[8]` | degC | | Temperature of the CPU core | +| fan_speed | `int16[4]` | rpm | | Fan speeds | +| ram_usage | `uint32` | MB | | Amount of used RAM on the component system | +| ram_total | `uint32` | MB | | Total amount of RAM on the component system | +| storage_type | `uint32[4]` | | | Storage type: 0: HDD, 1: SSD, 2: EMMC, 3: SD card (non-removable), 4: SD card (removable) | +| storage_usage | `uint32[4]` | MB | | Amount of used storage space on the component system | +| storage_total | `uint32[4]` | MB | | Total amount of storage space on the component system | +| link_type | `uint32[6]` | Kb/s | | Link type: 0-9: UART, 10-19: Wired network, 20-29: Wifi, 30-39: Point-to-point proprietary, 40-49: Mesh proprietary | +| link_tx_rate | `uint32[6]` | Kb/s | | Network traffic from the component system | +| link_rx_rate | `uint32[6]` | Kb/s | | Network traffic to the component system | +| link_tx_max | `uint32[6]` | Kb/s | | Network capacity from the component system | +| link_rx_max | `uint32[6]` | Kb/s | | Network capacity to the component system | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OnboardComputerStatus.msg) + +:::details +Click here to see original file ```c # ONBOARD_COMPUTER_STATUS message data @@ -28,5 +64,6 @@ uint32[6] link_tx_rate # [Kb/s] Network traffic from the component system uint32[6] link_rx_rate # [Kb/s] Network traffic to the component system uint32[6] link_tx_max # [Kb/s] Network capacity from the component system uint32[6] link_rx_max # [Kb/s] Network capacity to the component system - ``` + +::: diff --git a/docs/zh/msg_docs/OpenDroneIdArmStatus.md b/docs/zh/msg_docs/OpenDroneIdArmStatus.md index 152d34a166..e648c5fc96 100644 --- a/docs/zh/msg_docs/OpenDroneIdArmStatus.md +++ b/docs/zh/msg_docs/OpenDroneIdArmStatus.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdArmStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdArmStatus.msg) +**TOPICS:** open_droneid_armstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | ---------- | ---------------------------------------------------------------- | ---------- | -- | +| timestamp | `uint64` | | | | +| status | `uint8` | | | | +| error | `char[50]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdArmStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp uint8 status char[50] error - ``` + +::: diff --git a/docs/zh/msg_docs/OpenDroneIdOperatorId.md b/docs/zh/msg_docs/OpenDroneIdOperatorId.md index cafca0aa09..35d96ba699 100644 --- a/docs/zh/msg_docs/OpenDroneIdOperatorId.md +++ b/docs/zh/msg_docs/OpenDroneIdOperatorId.md @@ -1,11 +1,32 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdOperatorId (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdOperatorId.msg) +**TOPICS:** open_droneid_operatorid + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | -- | +| timestamp | `uint64` | | | | +| id_or_mac | `uint8[20]` | | | | +| operator_id_type | `uint8` | | | | +| operator_id | `char[20]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdOperatorId.msg) + +:::details +Click here to see original file ```c uint64 timestamp uint8[20] id_or_mac uint8 operator_id_type char[20] operator_id - ``` + +::: diff --git a/docs/zh/msg_docs/OpenDroneIdSelfId.md b/docs/zh/msg_docs/OpenDroneIdSelfId.md index 493be28d9f..5bb087df07 100644 --- a/docs/zh/msg_docs/OpenDroneIdSelfId.md +++ b/docs/zh/msg_docs/OpenDroneIdSelfId.md @@ -1,11 +1,32 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdSelfId (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdSelfId.msg) +**TOPICS:** open_droneid_selfid + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | -- | +| timestamp | `uint64` | | | | +| id_or_mac | `uint8[20]` | | | | +| description_type | `uint8` | | | | +| description | `char[23]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdSelfId.msg) + +:::details +Click here to see original file ```c uint64 timestamp uint8[20] id_or_mac uint8 description_type char[23] description - ``` + +::: diff --git a/docs/zh/msg_docs/OpenDroneIdSystem.md b/docs/zh/msg_docs/OpenDroneIdSystem.md index 402b7d0baf..d8572d8a26 100644 --- a/docs/zh/msg_docs/OpenDroneIdSystem.md +++ b/docs/zh/msg_docs/OpenDroneIdSystem.md @@ -1,6 +1,35 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdSystem (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdSystem.msg) +**TOPICS:** open_droneid_system + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | -- | +| timestamp | `uint64` | | | | +| id_or_mac | `uint8[20]` | | | | +| operator_location_type | `uint8` | | | | +| classification_type | `uint8` | | | | +| operator_latitude | `int32` | | | | +| operator_longitude | `int32` | | | | +| area_count | `uint16` | | | | +| area_radius | `uint16` | | | | +| area_ceiling | `float32` | | | | +| area_floor | `float32` | | | | +| category_eu | `uint8` | | | | +| class_eu | `uint8` | | | | +| operator_altitude_geo | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdSystem.msg) + +:::details +Click here to see original file ```c uint64 timestamp @@ -16,5 +45,6 @@ float32 area_floor uint8 category_eu uint8 class_eu float32 operator_altitude_geo - ``` + +::: diff --git a/docs/zh/msg_docs/OrbTest.md b/docs/zh/msg_docs/OrbTest.md index 3cd2460956..455b0a419f 100644 --- a/docs/zh/msg_docs/OrbTest.md +++ b/docs/zh/msg_docs/OrbTest.md @@ -1,6 +1,24 @@ +--- +pageClass: is-wide-page +--- + # OrbTest (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTest.msg) +**TOPICS:** orb_test orb_multitest + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| val | `int32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +26,6 @@ uint64 timestamp # time since system start (microseconds) int32 val # TOPICS orb_test orb_multitest - ``` + +::: diff --git a/docs/zh/msg_docs/OrbTestLarge.md b/docs/zh/msg_docs/OrbTestLarge.md index 3298811450..5fa4df6d84 100644 --- a/docs/zh/msg_docs/OrbTestLarge.md +++ b/docs/zh/msg_docs/OrbTestLarge.md @@ -1,6 +1,25 @@ +--- +pageClass: is-wide-page +--- + # OrbTestLarge (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTestLarge.msg) +**TOPICS:** orb_testlarge + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| val | `int32` | | | | +| junk | `uint8[512]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTestLarge.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +27,6 @@ uint64 timestamp # time since system start (microseconds) int32 val uint8[512] junk - ``` + +::: diff --git a/docs/zh/msg_docs/OrbTestMedium.md b/docs/zh/msg_docs/OrbTestMedium.md index e4a7bec7c0..25bb53a8db 100644 --- a/docs/zh/msg_docs/OrbTestMedium.md +++ b/docs/zh/msg_docs/OrbTestMedium.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # OrbTestMedium (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTestMedium.msg) +**TOPICS:** orb_test_medium orb_test_medium_multi orb_test_medium_wrap_around orb_test_medium_queue orb_test_medium_queue_poll + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| val | `int32` | | | | +| junk | `uint8[64]` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | -- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTestMedium.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -12,5 +37,6 @@ uint8[64] junk uint8 ORB_QUEUE_LENGTH = 16 # TOPICS orb_test_medium orb_test_medium_multi orb_test_medium_wrap_around orb_test_medium_queue orb_test_medium_queue_poll - ``` + +::: diff --git a/docs/zh/msg_docs/OrbitStatus.md b/docs/zh/msg_docs/OrbitStatus.md index 2cbeeec36b..c0d0b826de 100644 --- a/docs/zh/msg_docs/OrbitStatus.md +++ b/docs/zh/msg_docs/OrbitStatus.md @@ -1,8 +1,42 @@ +--- +pageClass: is-wide-page +--- + # OrbitStatus (UORB message) -ORBIT_YAW_BEHAVIOUR +ORBIT_YAW_BEHAVIOUR. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbitStatus.msg) +**TOPICS:** orbit_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| radius | `float32` | | | Radius of the orbit circle. Positive values orbit clockwise, negative values orbit counter-clockwise. [m] | +| frame | `uint8` | | | The coordinate system of the fields: x, y, z. | +| x | `float64` | | | X coordinate of center point. Coordinate system depends on frame field: local = x position in meters _ 1e4, global = latitude in degrees _ 1e7. | +| y | `float64` | | | Y coordinate of center point. Coordinate system depends on frame field: local = y position in meters _ 1e4, global = latitude in degrees _ 1e7. | +| z | `float32` | | | Altitude of center point. Coordinate system depends on frame field. | +| yaw_behaviour | `uint8` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | - | -- | +| ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER | `uint8` | 0 | | +| ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING | `uint8` | 1 | | +| ORBIT_YAW_BEHAVIOUR_UNCONTROLLED | `uint8` | 2 | | +| ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE | `uint8` | 3 | | +| ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED | `uint8` | 4 | | +| ORBIT_YAW_BEHAVIOUR_UNCHANGED | `uint8` | 5 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbitStatus.msg) + +:::details +Click here to see original file ```c # ORBIT_YAW_BEHAVIOUR @@ -20,5 +54,6 @@ float64 x # X coordinate of center point. Coordinate system depends on fr float64 y # Y coordinate of center point. Coordinate system depends on frame field: local = y position in meters * 1e4, global = latitude in degrees * 1e7. float32 z # Altitude of center point. Coordinate system depends on frame field. uint8 yaw_behaviour - ``` + +::: diff --git a/docs/zh/msg_docs/ParameterResetRequest.md b/docs/zh/msg_docs/ParameterResetRequest.md index 3c776a0faf..e1cbda865c 100644 --- a/docs/zh/msg_docs/ParameterResetRequest.md +++ b/docs/zh/msg_docs/ParameterResetRequest.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # ParameterResetRequest (UORB message) -ParameterResetRequest : Used by the primary to reset one or all parameter value(s) on the remote +ParameterResetRequest : Used by the primary to reset one or all parameter value(s) on the remote. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterResetRequest.msg) +**TOPICS:** parameter_resetrequest + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | +| timestamp | `uint64` | | | | +| parameter_index | `uint16` | | | | +| reset_all | `bool` | | | If this is true then ignore parameter_index | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | - | -- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterResetRequest.msg) + +:::details +Click here to see original file ```c # ParameterResetRequest : Used by the primary to reset one or all parameter value(s) on the remote @@ -13,5 +38,6 @@ uint16 parameter_index bool reset_all # If this is true then ignore parameter_index uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/zh/msg_docs/ParameterSetUsedRequest.md b/docs/zh/msg_docs/ParameterSetUsedRequest.md index 14684c0eed..007d8b68e8 100644 --- a/docs/zh/msg_docs/ParameterSetUsedRequest.md +++ b/docs/zh/msg_docs/ParameterSetUsedRequest.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # ParameterSetUsedRequest (UORB message) -ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary +ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetUsedRequest.msg) +**TOPICS:** parameter_setused_request + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | -- | +| timestamp | `uint64` | | | | +| parameter_index | `uint16` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | -- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 64 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetUsedRequest.msg) + +:::details +Click here to see original file ```c # ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary @@ -11,5 +35,6 @@ uint64 timestamp uint16 parameter_index uint8 ORB_QUEUE_LENGTH = 64 - ``` + +::: diff --git a/docs/zh/msg_docs/ParameterSetValueRequest.md b/docs/zh/msg_docs/ParameterSetValueRequest.md index b8322a952e..002d74b89d 100644 --- a/docs/zh/msg_docs/ParameterSetValueRequest.md +++ b/docs/zh/msg_docs/ParameterSetValueRequest.md @@ -1,8 +1,34 @@ +--- +pageClass: is-wide-page +--- + # ParameterSetValueRequest (UORB message) -ParameterSetValueRequest : Used by a remote or primary to update the value for a parameter at the other end +ParameterSetValueRequest : Used by a remote or primary to update the value for a parameter at the other end. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetValueRequest.msg) +**TOPICS:** parameter_set_value_request parameter_remote_set_value_request parameter_primary_set_value_request + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------- | +| timestamp | `uint64` | | | | +| parameter_index | `uint16` | | | | +| int_value | `int32` | | | Optional value for an integer parameter | +| float_value | `float32` | | | Optional value for a float parameter | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | -- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 32 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetValueRequest.msg) + +:::details +Click here to see original file ```c # ParameterSetValueRequest : Used by a remote or primary to update the value for a parameter at the other end @@ -16,5 +42,6 @@ float32 float_value # Optional value for a float parameter uint8 ORB_QUEUE_LENGTH = 32 # TOPICS parameter_set_value_request parameter_remote_set_value_request parameter_primary_set_value_request - ``` + +::: diff --git a/docs/zh/msg_docs/ParameterSetValueResponse.md b/docs/zh/msg_docs/ParameterSetValueResponse.md index dbb44d46ea..fd014cb827 100644 --- a/docs/zh/msg_docs/ParameterSetValueResponse.md +++ b/docs/zh/msg_docs/ParameterSetValueResponse.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # ParameterSetValueResponse (UORB message) -ParameterSetValueResponse : Response to a set value request by either primary or secondary +ParameterSetValueResponse : Response to a set value request by either primary or secondary. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetValueResponse.msg) +**TOPICS:** parameter_set_value_response parameter_remote_set_value_response parameter_primary_set_value_response + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | -- | +| timestamp | `uint64` | | | | +| request_timestamp | `uint64` | | | | +| parameter_index | `uint16` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | - | -- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetValueResponse.msg) + +:::details +Click here to see original file ```c # ParameterSetValueResponse : Response to a set value request by either primary or secondary @@ -14,5 +39,6 @@ uint16 parameter_index uint8 ORB_QUEUE_LENGTH = 4 # TOPICS parameter_set_value_response parameter_remote_set_value_response parameter_primary_set_value_response - ``` + +::: diff --git a/docs/zh/msg_docs/ParameterUpdate.md b/docs/zh/msg_docs/ParameterUpdate.md index 29148e2b5b..43a5c585c8 100644 --- a/docs/zh/msg_docs/ParameterUpdate.md +++ b/docs/zh/msg_docs/ParameterUpdate.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # ParameterUpdate (UORB message) -This message is used to notify the system about one or more parameter changes +This message is used to notify the system about one or more parameter changes. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterUpdate.msg) +**TOPICS:** parameter_update + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| instance | `uint32` | | | Instance count - constantly incrementing | +| get_count | `uint32` | | | | +| set_count | `uint32` | | | | +| find_count | `uint32` | | | | +| export_count | `uint32` | | | | +| active | `uint16` | | | | +| changed | `uint16` | | | | +| custom_default | `uint16` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterUpdate.msg) + +:::details +Click here to see original file ```c # This message is used to notify the system about one or more parameter changes @@ -19,5 +44,6 @@ uint32 export_count uint16 active uint16 changed uint16 custom_default - ``` + +::: diff --git a/docs/zh/msg_docs/Ping.md b/docs/zh/msg_docs/Ping.md index 1cb8ac5413..e865f246a0 100644 --- a/docs/zh/msg_docs/Ping.md +++ b/docs/zh/msg_docs/Ping.md @@ -1,6 +1,29 @@ +--- +pageClass: is-wide-page +--- + # Ping (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Ping.msg) +**TOPICS:** ping + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| ping_time | `uint64` | | | Timestamp of the ping packet | +| ping_sequence | `uint32` | | | Sequence number of the ping packet | +| dropped_packets | `uint32` | | | Number of dropped ping packets | +| rtt_ms | `float32` | | | Round trip time (in ms) | +| system_id | `uint8` | | | System ID of the remote system | +| component_id | `uint8` | | | Component ID of the remote system | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Ping.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +33,6 @@ uint32 dropped_packets # Number of dropped ping packets float32 rtt_ms # Round trip time (in ms) uint8 system_id # System ID of the remote system uint8 component_id # Component ID of the remote system - ``` + +::: diff --git a/docs/zh/msg_docs/PositionControllerLandingStatus.md b/docs/zh/msg_docs/PositionControllerLandingStatus.md index 3e58676dc3..853d7ab722 100644 --- a/docs/zh/msg_docs/PositionControllerLandingStatus.md +++ b/docs/zh/msg_docs/PositionControllerLandingStatus.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # PositionControllerLandingStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionControllerLandingStatus.msg) +**TOPICS:** position_controllerlanding_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------- | +| timestamp | `uint64` | us | | time since system start | +| lateral_touchdown_offset | `float32` | 米 | | lateral touchdown position offset manually commanded during landing | +| flaring | `bool` | | | true if the aircraft is flaring | +| abort_status | `uint8` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| --------------------------------------------------------------------------------------------------------- | ------- | - | ------------------------------------------------------------------------------------------------------------------------------------ | +| NOT_ABORTED | `uint8` | 0 | | +| ABORTED_BY_OPERATOR | `uint8` | 1 | | +| TERRAIN_NOT_FOUND | `uint8` | 2 | FW_LND_ABORT (1 << 0) | +| TERRAIN_TIMEOUT | `uint8` | 3 | FW_LND_ABORT (1 << 1) | +| UNKNOWN_ABORT_CRITERION | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionControllerLandingStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # [us] time since system start @@ -19,5 +49,6 @@ uint8 ABORTED_BY_OPERATOR = 1 uint8 TERRAIN_NOT_FOUND = 2 # FW_LND_ABORT (1 << 0) uint8 TERRAIN_TIMEOUT = 3 # FW_LND_ABORT (1 << 1) uint8 UNKNOWN_ABORT_CRITERION = 4 - ``` + +::: diff --git a/docs/zh/msg_docs/PositionControllerStatus.md b/docs/zh/msg_docs/PositionControllerStatus.md index 2fadf80a9e..b9ffbecf3d 100644 --- a/docs/zh/msg_docs/PositionControllerStatus.md +++ b/docs/zh/msg_docs/PositionControllerStatus.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # PositionControllerStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionControllerStatus.msg) +**TOPICS:** position_controllerstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| nav_roll | `float32` | | | Roll setpoint [rad] | +| nav_pitch | `float32` | | | Pitch setpoint [rad] | +| nav_bearing | `float32` | | | Bearing angle[rad] | +| target_bearing | `float32` | | | Bearing angle from aircraft to current target [rad] | +| xtrack_error | `float32` | | | Signed track error [m] | +| wp_dist | `float32` | | | Distance to active (next) waypoint [m] | +| acceptance_radius | `float32` | | | Current horizontal acceptance radius [m] | +| type | `uint8` | | | Current (applied) position setpoint type (see PositionSetpoint.msg) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionControllerStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -13,5 +38,6 @@ float32 xtrack_error # Signed track error [m] float32 wp_dist # Distance to active (next) waypoint [m] float32 acceptance_radius # Current horizontal acceptance radius [m] uint8 type # Current (applied) position setpoint type (see PositionSetpoint.msg) - ``` + +::: diff --git a/docs/zh/msg_docs/PositionSetpoint.md b/docs/zh/msg_docs/PositionSetpoint.md index b4e16681b7..fcbe027d42 100644 --- a/docs/zh/msg_docs/PositionSetpoint.md +++ b/docs/zh/msg_docs/PositionSetpoint.md @@ -1,8 +1,57 @@ +--- +pageClass: is-wide-page +--- + # PositionSetpoint (UORB message) -this file is only used in the position_setpoint triple as a dependency +this file is only used in the position_setpoint triple as a dependency. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionSetpoint.msg) +**TOPICS:** position_setpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| valid | `bool` | | | true if setpoint is valid | +| type | `uint8` | | | setpoint type to adjust behavior of position controller | +| vx | `float32` | | | local velocity setpoint in m/s in NED | +| vy | `float32` | | | local velocity setpoint in m/s in NED | +| vz | `float32` | | | local velocity setpoint in m/s in NED | +| lat | `float64` | | | latitude, in deg | +| lon | `float64` | | | longitude, in deg | +| alt | `float32` | | | altitude AMSL, in m | +| yaw | `float32` | | | yaw (only in hover), in rad [-PI..PI), NaN = leave to flight task | +| loiter_radius | `float32` | 米 | [0 : INF] | loiter major axis radius | +| loiter_minor_radius | `float32` | 米 | [0 : INF] | loiter minor axis radius (used for non-circular loiter shapes) | +| loiter_direction_counter_clockwise | `bool` | | | loiter direction is clockwise by default and can be changed using this field | +| loiter_orientation | `float32` | rad | [-pi : pi] | orientation of the major axis with respect to true north | +| loiter_pattern | `uint8` | | | loitern pattern to follow | +| acceptance_radius | `float32` | | | horizontal acceptance_radius (meters) | +| alt_acceptance_radius | `float32` | | | vertical acceptance radius, only used for fixed wing guidance, NAN = let guidance choose (meters) | +| cruising_speed | `float32` | | | the generally desired cruising speed (not a hard constraint) | +| gliding_enabled | `bool` | | | commands the vehicle to glide if the capability is available (fixed wing only) | +| cruising_throttle | `float32` | | | the generally desired cruising throttle (not a hard constraint), only has an effect for rover | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| --------------------------------------------------------------------------------------------------------- | ------- | - | --------------------------------------------------------------------------- | +| SETPOINT_TYPE_POSITION | `uint8` | 0 | position setpoint | +| SETPOINT_TYPE_VELOCITY | `uint8` | 1 | velocity setpoint | +| SETPOINT_TYPE_LOITER | `uint8` | 2 | loiter setpoint | +| SETPOINT_TYPE_TAKEOFF | `uint8` | 3 | takeoff setpoint | +| SETPOINT_TYPE_LAND | `uint8` | 4 | land setpoint, altitude must be ignored, descend until landing | +| SETPOINT_TYPE_IDLE | `uint8` | 5 | do nothing, switch off motors or keep at idle speed (MC) | +| LOITER_TYPE_ORBIT | `uint8` | 0 | Circular pattern | +| LOITER_TYPE_FIGUREEIGHT | `uint8` | 1 | Pattern resembling an 8 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionSetpoint.msg) + +:::details +Click here to see original file ```c # this file is only used in the position_setpoint triple as a dependency @@ -43,5 +92,6 @@ float32 alt_acceptance_radius # vertical acceptance radius, only used for fixed float32 cruising_speed # the generally desired cruising speed (not a hard constraint) bool gliding_enabled # commands the vehicle to glide if the capability is available (fixed wing only) float32 cruising_throttle # the generally desired cruising throttle (not a hard constraint), only has an effect for rover - ``` + +::: diff --git a/docs/zh/msg_docs/PositionSetpointTriplet.md b/docs/zh/msg_docs/PositionSetpointTriplet.md index d4de724bdd..8d1e06a47c 100644 --- a/docs/zh/msg_docs/PositionSetpointTriplet.md +++ b/docs/zh/msg_docs/PositionSetpointTriplet.md @@ -1,9 +1,28 @@ +--- +pageClass: is-wide-page +--- + # PositionSetpointTriplet (UORB message) -Global position setpoint triplet in WGS84 coordinates. -This are the three next waypoints (or just the next two or one). +Global position setpoint triplet in WGS84 coordinates. This are the three next waypoints (or just the next two or one). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionSetpointTriplet.msg) +**TOPICS:** position_setpointtriplet + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | ------------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| previous | `PositionSetpoint` | | | | +| current | `PositionSetpoint` | | | | +| next | `PositionSetpoint` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionSetpointTriplet.msg) + +:::details +Click here to see original file ```c # Global position setpoint triplet in WGS84 coordinates. @@ -14,5 +33,6 @@ uint64 timestamp # time since system start (microseconds) PositionSetpoint previous PositionSetpoint current PositionSetpoint next - ``` + +::: diff --git a/docs/zh/msg_docs/PowerButtonState.md b/docs/zh/msg_docs/PowerButtonState.md index 8d6f38461e..831b00dba5 100644 --- a/docs/zh/msg_docs/PowerButtonState.md +++ b/docs/zh/msg_docs/PowerButtonState.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # PowerButtonState (UORB message) -power button state notification message +power button state notification message. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PowerButtonState.msg) +**TOPICS:** power_buttonstate + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| event | `uint8` | | | one of PWR_BUTTON_STATE_\* | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | - | ------------------------------------------------------------------------------------------ | +| PWR_BUTTON_STATE_IDEL | `uint8` | 0 | Button went up without meeting shutdown button down time (delete event) | +| PWR_BUTTON_STATE_DOWN | `uint8` | 1 | Button went Down | +| PWR_BUTTON_STATE_UP | `uint8` | 2 | Button went Up | +| PWR_BUTTON_STATE_REQUEST_SHUTDOWN | `uint8` | 3 | Button went Up after meeting shutdown button down time | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PowerButtonState.msg) + +:::details +Click here to see original file ```c # power button state notification message @@ -15,5 +42,6 @@ uint8 PWR_BUTTON_STATE_UP = 2 # Button went Up uint8 PWR_BUTTON_STATE_REQUEST_SHUTDOWN = 3 # Button went Up after meeting shutdown button down time uint8 event # one of PWR_BUTTON_STATE_* - ``` + +::: diff --git a/docs/zh/msg_docs/PowerMonitor.md b/docs/zh/msg_docs/PowerMonitor.md index 5f38bb3d56..d24a734ae3 100644 --- a/docs/zh/msg_docs/PowerMonitor.md +++ b/docs/zh/msg_docs/PowerMonitor.md @@ -1,8 +1,36 @@ +--- +pageClass: is-wide-page +--- + # PowerMonitor (UORB message) -power monitor message +power monitor message. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PowerMonitor.msg) +**TOPICS:** power_monitor + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | Time since system start (microseconds) | +| voltage_v | `float32` | | | Voltage in volts, 0 if unknown | +| current_a | `float32` | | | Current in amperes, -1 if unknown | +| power_w | `float32` | | | power in watts, -1 if unknown | +| rconf | `int16` | | | | +| rsv | `int16` | | | | +| rbv | `int16` | | | | +| rp | `int16` | | | | +| rc | `int16` | | | | +| rcal | `int16` | | | | +| me | `int16` | | | | +| al | `int16` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PowerMonitor.msg) + +:::details +Click here to see original file ```c # power monitor message @@ -20,5 +48,6 @@ int16 rc int16 rcal int16 me int16 al - ``` + +::: diff --git a/docs/zh/msg_docs/PpsCapture.md b/docs/zh/msg_docs/PpsCapture.md index e566147389..fc5451910c 100644 --- a/docs/zh/msg_docs/PpsCapture.md +++ b/docs/zh/msg_docs/PpsCapture.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # PpsCapture (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PpsCapture.msg) +**TOPICS:** pps_capture + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------- | -------- | ---------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) at PPS capture event | +| rtc_timestamp | `uint64` | | | Corrected GPS UTC timestamp at PPS capture event | +| `uint8` | | | Increments when PPS dt < 50ms | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PpsCapture.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) at PPS capture event uint64 rtc_timestamp # Corrected GPS UTC timestamp at PPS capture event uint8 pps_rate_exceeded_counter # Increments when PPS dt < 50ms - ``` + +::: diff --git a/docs/zh/msg_docs/PurePursuitStatus.md b/docs/zh/msg_docs/PurePursuitStatus.md index 8d54ba473e..878cf0f173 100644 --- a/docs/zh/msg_docs/PurePursuitStatus.md +++ b/docs/zh/msg_docs/PurePursuitStatus.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # PurePursuitStatus (UORB message) -Pure pursuit status +Pure pursuit status. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PurePursuitStatus.msg) +**TOPICS:** pure_pursuitstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| lookahead_distance | `float32` | 米 | [0 : inf] | Lookahead distance of pure the pursuit controller | +| target_bearing | `float32` | rad [NED] | [-pi : pi] | Target bearing calculated by the pure pursuit controller | +| crosstrack_error | `float32` | 米 | [-inf (Left of the path) : inf (Right of the path)] | Shortest distance from the vehicle to the path | +| distance_to_waypoint | `float32` | 米 | [-inf : inf] | Distance from the vehicle to the current waypoint | +| bearing_to_waypoint | `float32` | rad [NED] | [-pi : pi] | Bearing towards current waypoint | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PurePursuitStatus.msg) + +:::details +Click here to see original file ```c # Pure pursuit status @@ -13,5 +35,6 @@ float32 target_bearing # [rad] [@range -pi, pi] [@frame NED] Target beari float32 crosstrack_error # [m] [@range -inf (Left of the path), inf (Right of the path)] Shortest distance from the vehicle to the path float32 distance_to_waypoint # [m] [@range -inf, inf]Distance from the vehicle to the current waypoint float32 bearing_to_waypoint # [rad] [@range -pi, pi] [@frame NED]Bearing towards current waypoint - ``` + +::: diff --git a/docs/zh/msg_docs/PwmInput.md b/docs/zh/msg_docs/PwmInput.md index 9389ca3fb1..8b01da89b4 100644 --- a/docs/zh/msg_docs/PwmInput.md +++ b/docs/zh/msg_docs/PwmInput.md @@ -1,11 +1,32 @@ +--- +pageClass: is-wide-page +--- + # PwmInput (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PwmInput.msg) +**TOPICS:** pwm_input + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | Time since system start (microseconds) | +| error_count | `uint64` | | | Timer overcapture error flag (AUX5 or MAIN5) | +| pulse_width | `uint32` | | | Pulse width, timer counts (microseconds) | +| period | `uint32` | | | Period, timer counts (microseconds) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PwmInput.msg) + +:::details +Click here to see original file ```c uint64 timestamp # Time since system start (microseconds) uint64 error_count # Timer overcapture error flag (AUX5 or MAIN5) uint32 pulse_width # Pulse width, timer counts (microseconds) uint32 period # Period, timer counts (microseconds) - ``` + +::: diff --git a/docs/zh/msg_docs/Px4ioStatus.md b/docs/zh/msg_docs/Px4ioStatus.md index 4b1fbb1314..d35010c354 100644 --- a/docs/zh/msg_docs/Px4ioStatus.md +++ b/docs/zh/msg_docs/Px4ioStatus.md @@ -1,6 +1,54 @@ +--- +pageClass: is-wide-page +--- + # Px4ioStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Px4ioStatus.msg) +**TOPICS:** px4io_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| free_memory_bytes | `uint16` | | | | +| voltage_v | `float32` | | | Servo rail voltage in volts | +| rssi_v | `float32` | | | RSSI pin voltage in volts | +| status_arm_sync | `bool` | | | | +| status_failsafe | `bool` | | | | +| status_fmu_initialized | `bool` | | | | +| status_fmu_ok | `bool` | | | | +| status_init_ok | `bool` | | | | +| status_outputs_armed | `bool` | | | | +| status_raw_pwm | `bool` | | | | +| status_rc_ok | `bool` | | | | +| status_rc_dsm | `bool` | | | | +| status_rc_ppm | `bool` | | | | +| status_rc_sbus | `bool` | | | | +| status_rc_st24 | `bool` | | | | +| status_rc_sumd | `bool` | | | | +| status_safety_button_event | `bool` | | | px4io safety button was pressed for longer than 1 second | +| alarm_pwm_error | `bool` | | | | +| alarm_rc_lost | `bool` | | | | +| arming_failsafe_custom | `bool` | | | | +| arming_fmu_armed | `bool` | | | | +| arming_fmu_prearmed | `bool` | | | | +| arming_termination | `bool` | | | | +| arming_io_arm_ok | `bool` | | | | +| arming_lockdown | `bool` | | | | +| arming_termination_failsafe | `bool` | | | | +| pwm | `uint16[8]` | | | | +| pwm_disarmed | `uint16[8]` | | | | +| pwm_failsafe | `uint16[8]` | | | | +| pwm_rate_hz | `uint16[8]` | | | | +| raw_inputs | `uint16[18]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Px4ioStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -46,5 +94,6 @@ uint16[8] pwm_failsafe uint16[8] pwm_rate_hz uint16[18] raw_inputs - ``` + +::: diff --git a/docs/zh/msg_docs/QshellReq.md b/docs/zh/msg_docs/QshellReq.md index 7f8e38c701..5d63c2deb1 100644 --- a/docs/zh/msg_docs/QshellReq.md +++ b/docs/zh/msg_docs/QshellReq.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # QshellReq (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/QshellReq.msg) +**TOPICS:** qshell_req + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| cmd | `char[100]` | | | | +| strlen | `uint32` | | | | +| request_sequence | `uint32` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ---------------------------------------------------------- | -------- | --- | -- | +| MAX_STRLEN | `uint32` | 100 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/QshellReq.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +34,6 @@ char[100] cmd uint32 MAX_STRLEN = 100 uint32 strlen uint32 request_sequence - ``` + +::: diff --git a/docs/zh/msg_docs/QshellRetval.md b/docs/zh/msg_docs/QshellRetval.md index 3a27b00e93..f9bbb8b523 100644 --- a/docs/zh/msg_docs/QshellRetval.md +++ b/docs/zh/msg_docs/QshellRetval.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # QshellRetval (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/QshellRetval.msg) +**TOPICS:** qshell_retval + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| return_value | `int32` | | | | +| return_sequence | `uint32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/QshellRetval.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) int32 return_value uint32 return_sequence - ``` + +::: diff --git a/docs/zh/msg_docs/RadioStatus.md b/docs/zh/msg_docs/RadioStatus.md index 58c320308e..7626c73747 100644 --- a/docs/zh/msg_docs/RadioStatus.md +++ b/docs/zh/msg_docs/RadioStatus.md @@ -1,9 +1,32 @@ +--- +pageClass: is-wide-page +--- + # RadioStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RadioStatus.msg) +**TOPICS:** radio_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| rssi | `uint8` | | | local signal strength | +| remote_rssi | `uint8` | | | remote signal strength | +| txbuf | `uint8` | | | how full the tx buffer is as a percentage | +| noise | `uint8` | | | background noise level | +| remote_noise | `uint8` | | | remote background noise level | +| rxerrors | `uint16` | | | receive errors | +| fix | `uint16` | | | count of error corrected packets | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RadioStatus.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint8 rssi # local signal strength @@ -16,5 +39,6 @@ uint8 remote_noise # remote background noise level uint16 rxerrors # receive errors uint16 fix # count of error corrected packets - ``` + +::: diff --git a/docs/zh/msg_docs/RaptorInput.md b/docs/zh/msg_docs/RaptorInput.md new file mode 100644 index 0000000000..a6e4786526 --- /dev/null +++ b/docs/zh/msg_docs/RaptorInput.md @@ -0,0 +1,59 @@ +--- +pageClass: is-wide-page +--- + +# RaptorInput (UORB message) + +Raptor Input. + +**TOPICS:** raptor_input + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Sampling timestamp of the data this control response is based on | +| active | `bool` | | | Signals if the policy is active (aka publishing actuator_motors) | +| 位置 | `float32[3]` | m [FLU] | | Position of the vehicle_local_position frame | +| orientation | `float32[4]` | | | Orientation in the vehicle_attitude frame but using the FLU convention as a unit quaternion (w, x, y, z) | +| linear_velocity | `float32[3]` | m/s [FLU] | | Linear velocity in the vehicle_local_position frame | +| angular_velocity | `float32[3]` | rad/s [FLU] | | Angular velocity in the body frame | +| previous_action | `float32[4]` | | [-1 : 1] | Previous action. Motor commands normalized to [-1, 1] | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | ---------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ACTION_DIM | `uint8` | 4 | Policy output dimensionality (for quadrotors) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RaptorInput.msg) + +:::details +Click here to see original file + +```c +# Raptor Input + +# The exact inputs to the Raptor foundation policy. +# Having access to the exact inputs helps with debugging and post-hoc analysis. + +uint32 MESSAGE_VERSION = 0 + +uint64 timestamp # [us] Time since system start +uint64 timestamp_sample # [us] Sampling timestamp of the data this control response is based on +bool active # Signals if the policy is active (aka publishing actuator_motors) +float32[3] position # [m] [@frame FLU] Position of the vehicle_local_position frame +float32[4] orientation # [-] Orientation in the vehicle_attitude frame but using the FLU convention as a unit quaternion (w, x, y, z) +float32[3] linear_velocity # [m/s] [@frame FLU] Linear velocity in the vehicle_local_position frame +float32[3] angular_velocity # [rad/s] [@frame FLU] Angular velocity in the body frame +uint8 ACTION_DIM = 4 # Policy output dimensionality (for quadrotors) +float32[4] previous_action # [@range -1, 1] Previous action. Motor commands normalized to [-1, 1] + +# TOPICS raptor_input +``` + +::: diff --git a/docs/zh/msg_docs/RaptorStatus.md b/docs/zh/msg_docs/RaptorStatus.md new file mode 100644 index 0000000000..9f3d70b244 --- /dev/null +++ b/docs/zh/msg_docs/RaptorStatus.md @@ -0,0 +1,109 @@ +--- +pageClass: is-wide-page +--- + +# RaptorStatus (UORB message) + +Raptor Status. + +**TOPICS:** raptor_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Sampling timestamp of the data this control response is based on | +| subscription_update_angular_velocity | `bool` | bool | | Flag signalling if the vehicle_angular_velocity was updated | +| subscription_update_local_position | `bool` | bool | | Flag signalling if the vehicle_local_position was updated | +| subscription_update_attitude | `bool` | bool | | Flag signalling if the vehicle_attitude was updated | +| subscription_update_trajectory_setpoint | `bool` | bool | | Flag signalling if the trajectory_setpoint was updated | +| subscription_update_vehicle_status | `bool` | bool | | Flag signalling if the vehicle_status was updated | +| exit_reason | `uint8` | enum | | Exit reason identifier. Representing conditions that lead to the Raptor policy not being executed | +| timestamp_last_vehicle_angular_velocity | `uint32` | us | | Timestamp of the last received vehicle_angular_velocity message | +| timestamp_last_vehicle_local_position | `uint32` | us | | Timestamp of the last received vehicle_local_position message | +| timestamp_last_vehicle_attitude | `uint32` | us | | Timestamp of the last received vehicle_attitude message | +| timestamp_last_trajectory_setpoint | `uint32` | us | | Timestamp of the last received trajectory_setpoint message | +| vehicle_angular_velocity_stale | `bool` | bool | | True if vehicle_angular_velocity data is considered stale (exceeded timeout) | +| vehicle_local_position_stale | `bool` | bool | | True if vehicle_local_position data is considered stale (exceeded timeout) | +| vehicle_attitude_stale | `bool` | bool | | True if vehicle_attitude data is considered stale (exceeded timeout) | +| trajectory_setpoint_stale | `bool` | bool | | True if trajectory_setpoint data is considered stale (exceeded timeout) | +| active | `bool` | bool | | True if the Raptor policy is currently active (publishing actuator_motors) | +| substep | `uint8` | | | The policy is trained at a fixed frequency (e.g. 100 Hz) but we might want to use it for control at higher frequencies (e.g. 400 Hz), which leads to a number of intermediate steps before the actual policy state is advanced (in this case 4 = 400 Hz / 100 Hz). This field provides the current substep (e.g. 0-3). | +| control_interval | `float32` | s | | Time interval between control updates | +| trajectory_setpoint_dt_mean | `float32` | us | | The average trajectory setpoint arrival time interval (since Raptor mode activation within NUM_TRAJECTORY_SETPOINT_DTS received trajectory_setpoint messages) | +| trajectory_setpoint_dt_max | `float32` | us | | The max trajectory setpoint arrival time interval (since Raptor mode activation and within NUM_TRAJECTORY_SETPOINT_DTS received trajectory_setpoint messages) | +| trajectory_setpoint_dt_max_since_activation | `float32` | us | | The max trajectory setpoint arrival time interval (since Raptor mode activation) | +| internal_reference_position | `float32[3]` | m [FLU] | | Internal reference position | +| internal_reference_linear_velocity | `float32[3]` | m/s [FLU] | | Internal reference linear velocity | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | - | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| EXIT_REASON_NONE | `uint8` | 0 | No exit reason => Raptor control step was executed (actuator_motors should have been published) | +| EXIT_REASON_NO_ANGULAR_VELOCITY_UPDATE | `uint8` | 1 | We synchronize the control onto the input observation with the highest update frequency, which is vehicle_angular_velocity. If there was no update, we do not need to execute the policy again | +| EXIT_REASON_NOT_ALL_OBSERVATIONS_SET | `uint8` | 2 | We can not execute the policy if not all observations are available | +| EXIT_REASON_ANGULAR_VELOCITY_STALE | `uint8` | 3 | If OBSERVATION_TIMEOUT_ANGULAR_VELOCITY is exceeded, we treat the vehicle_angular_velocity as stale and can not run the policy | +| EXIT_REASON_LOCAL_POSITION_STALE | `uint8` | 4 | If OBSERVATION_TIMEOUT_LOCAL_POSITION is exceeded, we treat the vehicle_local_position as stale and can not run the policy | +| EXIT_REASON_ATTITUDE_STALE | `uint8` | 5 | If OBSERVATION_TIMEOUT_ATTITUDE is exceeded, we treat the vehicle_attitude as stale and can not run the policy | +| EXIT_REASON_EXECUTOR_STATUS_SOURCE_NOT_CONTROL | `uint8` | 6 | The executor that runs the policy can run in oversampling mode, where it decides if the policy should be ran based on the timestamp and not based on fixed synchronization onto the vehicle_angular_velocity. In this case the executor can decide to skip running the policy if the interval is too small, in which case this flag is set. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RaptorStatus.msg) + +:::details +Click here to see original file + +```c +# Raptor Status + +# Diagnostic messages for the Raptor foundation policy. +# This diagnostic data is useful for debugging (e.g. identifying missing input information). + +uint32 MESSAGE_VERSION = 0 + +uint64 timestamp # [us] Time since system start +uint64 timestamp_sample # [us] Sampling timestamp of the data this control response is based on +bool subscription_update_angular_velocity # [bool] Flag signalling if the vehicle_angular_velocity was updated +bool subscription_update_local_position # [bool] Flag signalling if the vehicle_local_position was updated +bool subscription_update_attitude # [bool] Flag signalling if the vehicle_attitude was updated +bool subscription_update_trajectory_setpoint # [bool] Flag signalling if the trajectory_setpoint was updated +bool subscription_update_vehicle_status # [bool] Flag signalling if the vehicle_status was updated + +uint8 exit_reason # [enum] Exit reason identifier. Representing conditions that lead to the Raptor policy not being executed +uint8 EXIT_REASON_NONE = 0 # No exit reason => Raptor control step was executed (actuator_motors should have been published) +uint8 EXIT_REASON_NO_ANGULAR_VELOCITY_UPDATE = 1 # We synchronize the control onto the input observation with the highest update frequency, which is vehicle_angular_velocity. If there was no update, we do not need to execute the policy again +uint8 EXIT_REASON_NOT_ALL_OBSERVATIONS_SET = 2 # We can not execute the policy if not all observations are available +uint8 EXIT_REASON_ANGULAR_VELOCITY_STALE = 3 # If OBSERVATION_TIMEOUT_ANGULAR_VELOCITY is exceeded, we treat the vehicle_angular_velocity as stale and can not run the policy +uint8 EXIT_REASON_LOCAL_POSITION_STALE = 4 # If OBSERVATION_TIMEOUT_LOCAL_POSITION is exceeded, we treat the vehicle_local_position as stale and can not run the policy +uint8 EXIT_REASON_ATTITUDE_STALE = 5 # If OBSERVATION_TIMEOUT_ATTITUDE is exceeded, we treat the vehicle_attitude as stale and can not run the policy +uint8 EXIT_REASON_EXECUTOR_STATUS_SOURCE_NOT_CONTROL = 6 # The executor that runs the policy can run in oversampling mode, where it decides if the policy should be ran based on the timestamp and not based on fixed synchronization onto the vehicle_angular_velocity. In this case the executor can decide to skip running the policy if the interval is too small, in which case this flag is set. + +uint32 timestamp_last_vehicle_angular_velocity # [us] Timestamp of the last received vehicle_angular_velocity message +uint32 timestamp_last_vehicle_local_position # [us] Timestamp of the last received vehicle_local_position message +uint32 timestamp_last_vehicle_attitude # [us] Timestamp of the last received vehicle_attitude message +uint32 timestamp_last_trajectory_setpoint # [us] Timestamp of the last received trajectory_setpoint message + +bool vehicle_angular_velocity_stale # [bool] True if vehicle_angular_velocity data is considered stale (exceeded timeout) +bool vehicle_local_position_stale # [bool] True if vehicle_local_position data is considered stale (exceeded timeout) +bool vehicle_attitude_stale # [bool] True if vehicle_attitude data is considered stale (exceeded timeout) +bool trajectory_setpoint_stale # [bool] True if trajectory_setpoint data is considered stale (exceeded timeout) + +bool active # [bool] True if the Raptor policy is currently active (publishing actuator_motors) +uint8 substep # [-] The policy is trained at a fixed frequency (e.g. 100 Hz) but we might want to use it for control at higher frequencies (e.g. 400 Hz), which leads to a number of intermediate steps before the actual policy state is advanced (in this case 4 = 400 Hz / 100 Hz). This field provides the current substep (e.g. 0-3). +float32 control_interval # [s] Time interval between control updates + +float32 trajectory_setpoint_dt_mean # [us] The average trajectory setpoint arrival time interval (since Raptor mode activation within NUM_TRAJECTORY_SETPOINT_DTS received trajectory_setpoint messages) +float32 trajectory_setpoint_dt_max # [us] The max trajectory setpoint arrival time interval (since Raptor mode activation and within NUM_TRAJECTORY_SETPOINT_DTS received trajectory_setpoint messages) +float32 trajectory_setpoint_dt_max_since_activation # [us] The max trajectory setpoint arrival time interval (since Raptor mode activation) + +float32[3] internal_reference_position # [m] [@frame FLU] Internal reference position +float32[3] internal_reference_linear_velocity # [m/s] [@frame FLU] Internal reference linear velocity + +# TOPICS raptor_status +``` + +::: diff --git a/docs/zh/msg_docs/RateCtrlStatus.md b/docs/zh/msg_docs/RateCtrlStatus.md index 90eaa1208f..087357cb2b 100644 --- a/docs/zh/msg_docs/RateCtrlStatus.md +++ b/docs/zh/msg_docs/RateCtrlStatus.md @@ -1,6 +1,26 @@ +--- +pageClass: is-wide-page +--- + # RateCtrlStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RateCtrlStatus.msg) +**TOPICS:** rate_ctrlstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| rollspeed_integ | `float32` | | | | +| pitchspeed_integ | `float32` | | | | +| yawspeed_integ | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RateCtrlStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,5 +29,6 @@ uint64 timestamp # time since system start (microseconds) float32 rollspeed_integ float32 pitchspeed_integ float32 yawspeed_integ - ``` + +::: diff --git a/docs/zh/msg_docs/RcChannels.md b/docs/zh/msg_docs/RcChannels.md index 7abb87c0bc..5bcdc36912 100644 --- a/docs/zh/msg_docs/RcChannels.md +++ b/docs/zh/msg_docs/RcChannels.md @@ -1,6 +1,66 @@ +--- +pageClass: is-wide-page +--- + # RcChannels (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RcChannels.msg) +**TOPICS:** rc_channels + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------------- | ------------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_last_valid | `uint64` | | | Timestamp of last valid RC signal | +| channels | `float32[18]` | | | Scaled to -1..1 (throttle: 0..1) | +| channel_count | `uint8` | | | Number of valid channels | +| function | `int8[30]` | | | Functions mapping | +| rssi | `uint8` | | | Receive signal strength index | +| signal_lost | `bool` | | | Control signal lost, should be checked together with topic timeout | +| frame_drop_count | `uint32` | | | Number of dropped frames | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------- | -- | -- | +| FUNCTION_THROTTLE | `uint8` | 0 | | +| FUNCTION_ROLL | `uint8` | 1 | | +| FUNCTION_PITCH | `uint8` | 2 | | +| FUNCTION_YAW | `uint8` | 3 | | +| FUNCTION_RETURN | `uint8` | 4 | | +| FUNCTION_LOITER | `uint8` | 5 | | +| FUNCTION_OFFBOARD | `uint8` | 6 | | +| FUNCTION_FLAPS | `uint8` | 7 | | +| FUNCTION_AUX_1 | `uint8` | 8 | | +| FUNCTION_AUX_2 | `uint8` | 9 | | +| FUNCTION_AUX_3 | `uint8` | 10 | | +| FUNCTION_AUX_4 | `uint8` | 11 | | +| FUNCTION_AUX_5 | `uint8` | 12 | | +| FUNCTION_AUX_6 | `uint8` | 13 | | +| FUNCTION_PARAM_1 | `uint8` | 14 | | +| FUNCTION_PARAM_2 | `uint8` | 15 | | +| FUNCTION_PARAM_3_5 | `uint8` | 16 | | +| FUNCTION_KILLSWITCH | `uint8` | 17 | | +| FUNCTION_TRANSITION | `uint8` | 18 | | +| FUNCTION_GEAR | `uint8` | 19 | | +| FUNCTION_ARMSWITCH | `uint8` | 20 | | +| FUNCTION_FLTBTN_SLOT_1 | `uint8` | 21 | | +| FUNCTION_FLTBTN_SLOT_2 | `uint8` | 22 | | +| FUNCTION_FLTBTN_SLOT_3 | `uint8` | 23 | | +| FUNCTION_FLTBTN_SLOT_4 | `uint8` | 24 | | +| FUNCTION_FLTBTN_SLOT_5 | `uint8` | 25 | | +| FUNCTION_FLTBTN_SLOT_6 | `uint8` | 26 | | +| FUNCTION_ENGAGE_MAIN_MOTOR | `uint8` | 27 | | +| FUNCTION_PAYLOAD_POWER | `uint8` | 28 | | +| FUNCTION_TERMINATION | `uint8` | 29 | | +| FUNCTION_FLTBTN_SLOT_COUNT | `uint8` | 6 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RcChannels.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -45,5 +105,6 @@ int8[30] function # Functions mapping uint8 rssi # Receive signal strength index bool signal_lost # Control signal lost, should be checked together with topic timeout uint32 frame_drop_count # Number of dropped frames - ``` + +::: diff --git a/docs/zh/msg_docs/RcParameterMap.md b/docs/zh/msg_docs/RcParameterMap.md index e1ced1f8d1..1d350e334a 100644 --- a/docs/zh/msg_docs/RcParameterMap.md +++ b/docs/zh/msg_docs/RcParameterMap.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # RcParameterMap (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RcParameterMap.msg) +**TOPICS:** rc_parametermap + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| valid | `bool[3]` | | | true for RC-Param channels which are mapped to a param | +| param_index | `int32[3]` | | | corresponding param index, this field is ignored if set to -1, in this case param_id will be used | +| param_id | `char[51]` | | | MAP_NCHAN \* (ID_LEN + 1) chars, corresponding param id, null terminated | +| scale | `float32[3]` | | | scale to map the RC input [-1, 1] to a parameter value | +| value0 | `float32[3]` | | | initial value around which the parameter value is changed | +| value_min | `float32[3]` | | | minimal parameter value | +| value_max | `float32[3]` | | | minimal parameter value | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------- | ------- | -- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| RC_PARAM_MAP_NCHAN | `uint8` | 3 | This limit is also hardcoded in the enum RC_CHANNELS_FUNCTION in rc_channels.h | +| PARAM_ID_LEN | `uint8` | 16 | corresponds to MAVLINK_MSG_PARAM_VALUE_FIELD_PARAM_ID_LEN | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RcParameterMap.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +45,6 @@ float32[3] scale # scale to map the RC input [-1, 1] to a parameter value float32[3] value0 # initial value around which the parameter value is changed float32[3] value_min # minimal parameter value float32[3] value_max # minimal parameter value - ``` + +::: diff --git a/docs/zh/msg_docs/RegisterExtComponentReply.md b/docs/zh/msg_docs/RegisterExtComponentReply.md index 119703472a..286676e3f0 100644 --- a/docs/zh/msg_docs/RegisterExtComponentReply.md +++ b/docs/zh/msg_docs/RegisterExtComponentReply.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # RegisterExtComponentReply (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RegisterExtComponentReply.msg) +**TOPICS:** register_extcomponent_reply + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint64` | | | ID from the request | +| name | `char[25]` | | | name from the request | +| px4_ros2_api_version | `uint16` | | | | +| success | `bool` | | | | +| arming_check_id | `int8` | | | arming check registration ID (-1 if invalid) | +| mode_id | `int8` | | | assigned mode ID (-1 if invalid) | +| mode_executor_id | `int8` | | | assigned mode executor ID (-1 if invalid) | +| not_user_selectable | `bool` | | | mode cannot be selected by the user | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RegisterExtComponentReply.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 1 @@ -20,5 +52,6 @@ int8 mode_executor_id # assigned mode executor ID (-1 if invalid) bool not_user_selectable # mode cannot be selected by the user uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/zh/msg_docs/RegisterExtComponentReplyV0.md b/docs/zh/msg_docs/RegisterExtComponentReplyV0.md index cceec88d5c..73d32efaaf 100644 --- a/docs/zh/msg_docs/RegisterExtComponentReplyV0.md +++ b/docs/zh/msg_docs/RegisterExtComponentReplyV0.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # RegisterExtComponentReplyV0 (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/RegisterExtComponentReplyV0.msg) +**TOPICS:** register_extcomponent_replyv0 + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint64` | | | ID from the request | +| name | `char[25]` | | | name from the request | +| px4_ros2_api_version | `uint16` | | | | +| success | `bool` | | | | +| arming_check_id | `int8` | | | arming check registration ID (-1 if invalid) | +| mode_id | `int8` | | | assigned mode ID (-1 if invalid) | +| mode_executor_id | `int8` | | | assigned mode executor ID (-1 if invalid) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/RegisterExtComponentReplyV0.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -18,5 +49,6 @@ int8 mode_id # assigned mode ID (-1 if invalid) int8 mode_executor_id # assigned mode executor ID (-1 if invalid) uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/zh/msg_docs/RegisterExtComponentRequest.md b/docs/zh/msg_docs/RegisterExtComponentRequest.md index 814ea6e51b..1fa2e661fb 100644 --- a/docs/zh/msg_docs/RegisterExtComponentRequest.md +++ b/docs/zh/msg_docs/RegisterExtComponentRequest.md @@ -1,8 +1,43 @@ +--- +pageClass: is-wide-page +--- + # RegisterExtComponentRequest (UORB message) -Request to register an external component +Request to register an external component. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RegisterExtComponentRequest.msg) +**TOPICS:** register_extcomponent_request + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint64` | | | ID, set this to a random value | +| name | `char[25]` | | | either the requested mode name, or component name | +| px4_ros2_api_version | `uint16` | | | Set to LATEST_PX4_ROS2_API_VERSION | +| register_arming_check | `bool` | | | | +| register_mode | `bool` | | | registering a mode also requires arming_check to be set | +| register_mode_executor | `bool` | | | registering an executor also requires a mode to be registered (which is the owned mode by the executor) | +| enable_replace_internal_mode | `bool` | | | set to true if an internal mode should be replaced | +| replace_internal_mode | `uint8` | | | vehicle_status::NAVIGATION_STATE_\* | +| activate_mode_immediately | `bool` | | | switch to the registered mode (can only be set in combination with an executor) | +| not_user_selectable | `bool` | | | mode cannot be selected by the user | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | - | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 1 | | +| LATEST_PX4_ROS2_API_VERSION | `uint16` | 1 | API version compatibility. Increase this on a breaking semantic change. Changes to any message field are detected separately and do not require an API version change. | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RegisterExtComponentRequest.msg) + +:::details +Click here to see original file ```c # Request to register an external component @@ -29,5 +64,6 @@ bool activate_mode_immediately # switch to the registered mode (can only be bool not_user_selectable # mode cannot be selected by the user uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/zh/msg_docs/RegisterExtComponentRequestV0.md b/docs/zh/msg_docs/RegisterExtComponentRequestV0.md index 58e99a484e..21202b552f 100644 --- a/docs/zh/msg_docs/RegisterExtComponentRequestV0.md +++ b/docs/zh/msg_docs/RegisterExtComponentRequestV0.md @@ -1,8 +1,42 @@ +--- +pageClass: is-wide-page +--- + # RegisterExtComponentRequestV0 (UORB message) -Request to register an external component +Request to register an external component. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/RegisterExtComponentRequestV0.msg) +**TOPICS:** register_extcomponent_requestv0 + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint64` | | | ID, set this to a random value | +| name | `char[25]` | | | either the requested mode name, or component name | +| px4_ros2_api_version | `uint16` | | | Set to LATEST_PX4_ROS2_API_VERSION | +| register_arming_check | `bool` | | | | +| register_mode | `bool` | | | registering a mode also requires arming_check to be set | +| register_mode_executor | `bool` | | | registering an executor also requires a mode to be registered (which is the owned mode by the executor) | +| enable_replace_internal_mode | `bool` | | | set to true if an internal mode should be replaced | +| replace_internal_mode | `uint8` | | | vehicle_status::NAVIGATION_STATE_\* | +| activate_mode_immediately | `bool` | | | switch to the registered mode (can only be set in combination with an executor) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | - | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| LATEST_PX4_ROS2_API_VERSION | `uint16` | 1 | API version compatibility. Increase this on a breaking semantic change. Changes to any message field are detected separately and do not require an API version change. | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/RegisterExtComponentRequestV0.msg) + +:::details +Click here to see original file ```c # Request to register an external component @@ -29,5 +63,6 @@ bool activate_mode_immediately # switch to the registered mode (can only be uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/zh/msg_docs/RoverAttitudeSetpoint.md b/docs/zh/msg_docs/RoverAttitudeSetpoint.md index ca75a6e3e2..c1c2cee024 100644 --- a/docs/zh/msg_docs/RoverAttitudeSetpoint.md +++ b/docs/zh/msg_docs/RoverAttitudeSetpoint.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # RoverAttitudeSetpoint (UORB message) -Rover Attitude Setpoint +Rover Attitude Setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverAttitudeSetpoint.msg) +**TOPICS:** rover_attitudesetpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | --------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------- | +| timestamp | `uint64` | us | | Time since system start | +| yaw_setpoint | `float32` | rad [NED] | [-inf : inf] | Yaw setpoint | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverAttitudeSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Attitude Setpoint uint64 timestamp # [us] Time since system start float32 yaw_setpoint # [rad] [@range -inf, inf] [@frame NED] Yaw setpoint - ``` + +::: diff --git a/docs/zh/msg_docs/RoverAttitudeStatus.md b/docs/zh/msg_docs/RoverAttitudeStatus.md index f5a9ce1f02..f006d5b330 100644 --- a/docs/zh/msg_docs/RoverAttitudeStatus.md +++ b/docs/zh/msg_docs/RoverAttitudeStatus.md @@ -1,8 +1,27 @@ +--- +pageClass: is-wide-page +--- + # RoverAttitudeStatus (UORB message) -Rover Attitude Status +Rover Attitude Status. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverAttitudeStatus.msg) +**TOPICS:** rover_attitudestatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| measured_yaw | `float32` | rad [NED] | [-pi : pi] | Measured yaw | +| adjusted_yaw_setpoint | `float32` | rad [NED] | [-pi : pi] | Yaw setpoint that is being tracked (Applied slew rates) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverAttitudeStatus.msg) + +:::details +Click here to see original file ```c # Rover Attitude Status @@ -10,5 +29,6 @@ Rover Attitude Status uint64 timestamp # [us] Time since system start float32 measured_yaw # [rad] [@range -pi, pi] [@frame NED]Measured yaw float32 adjusted_yaw_setpoint # [rad] [@range -pi, pi] [@frame NED] Yaw setpoint that is being tracked (Applied slew rates) - ``` + +::: diff --git a/docs/zh/msg_docs/RoverPositionSetpoint.md b/docs/zh/msg_docs/RoverPositionSetpoint.md index 751536e7f9..59e9680d77 100644 --- a/docs/zh/msg_docs/RoverPositionSetpoint.md +++ b/docs/zh/msg_docs/RoverPositionSetpoint.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # RoverPositionSetpoint (UORB message) -Rover Position Setpoint +Rover Position Setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverPositionSetpoint.msg) +**TOPICS:** rover_positionsetpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------- | ------------ | ---------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| position_ned | `float32[2]` | m [NED] | [-inf : inf] | Target position | +| start_ned | `float32[2]` | m [NED] | [-inf : inf] | Start position which specifies a line for the rover to track (Invalid: NaN Defaults to vehicle position) | +| cruising_speed | `float32` | 米/秒 | [0 : inf] | Cruising speed (Invalid: NaN Defaults to maximum speed) | +| arrival_speed | `float32` | 米/秒 | [0 : inf] | Speed the rover should arrive at the target with (Invalid: NaN Defaults to 0) | +| yaw | `float32` | rad [NED] | [-pi : pi] | Mecanum only: Specify vehicle yaw during travel (Invalid: NaN Defaults to vehicle yaw) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverPositionSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Position Setpoint @@ -13,5 +35,6 @@ float32[2] start_ned # [m] [@range -inf, inf] [@frame NED] [@invalid NaN Def float32 cruising_speed # [m/s] [@range 0, inf] [@invalid NaN Defaults to maximum speed] Cruising speed float32 arrival_speed # [m/s] [@range 0, inf] [@invalid NaN Defaults to 0] Speed the rover should arrive at the target with float32 yaw # [rad] [@range -pi,pi] [@frame NED] [@invalid NaN Defaults to vehicle yaw] Mecanum only: Specify vehicle yaw during travel - ``` + +::: diff --git a/docs/zh/msg_docs/RoverRateSetpoint.md b/docs/zh/msg_docs/RoverRateSetpoint.md index 9bb844e802..8c04911b69 100644 --- a/docs/zh/msg_docs/RoverRateSetpoint.md +++ b/docs/zh/msg_docs/RoverRateSetpoint.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # RoverRateSetpoint (UORB message) -Rover Rate setpoint +Rover Rate setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverRateSetpoint.msg) +**TOPICS:** rover_ratesetpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------- | --------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------- | +| timestamp | `uint64` | us | | Time since system start | +| yaw_rate_setpoint | `float32` | rad/s [NED] | [-inf : inf] | Yaw rate setpoint | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverRateSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Rate setpoint uint64 timestamp # [us] Time since system start float32 yaw_rate_setpoint # [rad/s] [@range -inf, inf] [@frame NED] Yaw rate setpoint - ``` + +::: diff --git a/docs/zh/msg_docs/RoverRateStatus.md b/docs/zh/msg_docs/RoverRateStatus.md index 70345fe315..1755f63f12 100644 --- a/docs/zh/msg_docs/RoverRateStatus.md +++ b/docs/zh/msg_docs/RoverRateStatus.md @@ -1,8 +1,28 @@ +--- +pageClass: is-wide-page +--- + # RoverRateStatus (UORB message) -Rover Rate Status +Rover Rate Status. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverRateStatus.msg) +**TOPICS:** rover_ratestatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| measured_yaw_rate | `float32` | rad/s [NED] | [-inf : inf] | Measured yaw rate | +| adjusted_yaw_rate_setpoint | `float32` | rad/s [NED] | [-inf : inf] | Yaw rate setpoint that is being tracked (Applied slew rates) | +| pid_yaw_rate_integral | `float32` | | [-1 : 1] | Integral of the PID for the closed loop yaw rate controller | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverRateStatus.msg) + +:::details +Click here to see original file ```c # Rover Rate Status @@ -11,5 +31,6 @@ uint64 timestamp # [us] Time since system start float32 measured_yaw_rate # [rad/s] [@range -inf, inf] [@frame NED] Measured yaw rate float32 adjusted_yaw_rate_setpoint # [rad/s] [@range -inf, inf] [@frame NED] Yaw rate setpoint that is being tracked (Applied slew rates) float32 pid_yaw_rate_integral # [-] [@range -1, 1] Integral of the PID for the closed loop yaw rate controller - ``` + +::: diff --git a/docs/zh/msg_docs/RoverSpeedSetpoint.md b/docs/zh/msg_docs/RoverSpeedSetpoint.md index 84176cd1c3..b9689cdbbb 100644 --- a/docs/zh/msg_docs/RoverSpeedSetpoint.md +++ b/docs/zh/msg_docs/RoverSpeedSetpoint.md @@ -1,8 +1,27 @@ +--- +pageClass: is-wide-page +--- + # RoverSpeedSetpoint (UORB message) -Rover Speed Setpoint +Rover Speed Setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSpeedSetpoint.msg) +**TOPICS:** rover_speedsetpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------ | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| speed_body_x | `float32` | m/s [Body] | [-inf (Backwards) : inf (Forwards)] | Speed setpoint in body x direction | +| speed_body_y | `float32` | m/s [Body] | [-inf (Left) : inf (Right)] | Mecanum only: Speed setpoint in body y direction (Invalid: NaN If not mecanum) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSpeedSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Speed Setpoint @@ -10,5 +29,6 @@ Rover Speed Setpoint uint64 timestamp # [us] Time since system start float32 speed_body_x # [m/s] [@range -inf (Backwards), inf (Forwards)] [@frame Body] Speed setpoint in body x direction float32 speed_body_y # [m/s] [@range -inf (Left), inf (Right)] [@frame Body] [@invalid NaN If not mecanum] Mecanum only: Speed setpoint in body y direction - ``` + +::: diff --git a/docs/zh/msg_docs/RoverSpeedStatus.md b/docs/zh/msg_docs/RoverSpeedStatus.md index 4213e1e5df..ffd4bb3661 100644 --- a/docs/zh/msg_docs/RoverSpeedStatus.md +++ b/docs/zh/msg_docs/RoverSpeedStatus.md @@ -1,8 +1,31 @@ +--- +pageClass: is-wide-page +--- + # RoverSpeedStatus (UORB message) -Rover Velocity Status +Rover Velocity Status. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSpeedStatus.msg) +**TOPICS:** rover_speedstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| measured_speed_body_x | `float32` | m/s [Body] | [-inf (Backwards) : inf (Forwards)] | Measured speed in body x direction | +| adjusted_speed_body_x_setpoint | `float32` | m/s [Body] | [-inf (Backwards) : inf (Forwards)] | Speed setpoint in body x direction that is being tracked (Applied slew rates) | +| pid_throttle_body_x_integral | `float32` | | [-1 : 1] | Integral of the PID for the closed loop controller of the speed in body x direction | +| measured_speed_body_y | `float32` | m/s [Body] | [-inf (Left) : inf (Right)] | Mecanum only: Measured speed in body y direction (Invalid: NaN If not mecanum) | +| adjusted_speed_body_y_setpoint | `float32` | m/s [Body] | [-inf (Left) : inf (Right)] | Mecanum only: Speed setpoint in body y direction that is being tracked (Applied slew rates) (Invalid: NaN If not mecanum) | +| pid_throttle_body_y_integral | `float32` | | [-1 : 1] | Mecanum only: Integral of the PID for the closed loop controller of the speed in body y direction (Invalid: NaN If not mecanum) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSpeedStatus.msg) + +:::details +Click here to see original file ```c # Rover Velocity Status @@ -14,5 +37,6 @@ float32 pid_throttle_body_x_integral # [-] [@range -1, 1] Integral of the PID float32 measured_speed_body_y # [m/s] [@range -inf (Left), inf (Right)] [@frame Body] [@invalid NaN If not mecanum] Mecanum only: Measured speed in body y direction float32 adjusted_speed_body_y_setpoint # [m/s] [@range -inf (Left), inf (Right)] [@frame Body] [@invalid NaN If not mecanum] Mecanum only: Speed setpoint in body y direction that is being tracked (Applied slew rates) float32 pid_throttle_body_y_integral # [-] [@range -1, 1] [@invalid NaN If not mecanum] Mecanum only: Integral of the PID for the closed loop controller of the speed in body y direction - ``` + +::: diff --git a/docs/zh/msg_docs/RoverSteeringSetpoint.md b/docs/zh/msg_docs/RoverSteeringSetpoint.md index 974f3fc4c9..60ca511e3d 100644 --- a/docs/zh/msg_docs/RoverSteeringSetpoint.md +++ b/docs/zh/msg_docs/RoverSteeringSetpoint.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # RoverSteeringSetpoint (UORB message) -Rover Steering setpoint +Rover Steering setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSteeringSetpoint.msg) +**TOPICS:** rover_steeringsetpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| normalized_steering_setpoint | `float32` | [Body] | [-1 (Left) : 1 (Right)] | Ackermann: Normalized steering angle, Differential/Mecanum: Normalized speed difference between the left and right wheels | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSteeringSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Steering setpoint uint64 timestamp # [us] Time since system start float32 normalized_steering_setpoint # [-] [@range -1 (Left), 1 (Right)] [@frame Body] Ackermann: Normalized steering angle, Differential/Mecanum: Normalized speed difference between the left and right wheels - ``` + +::: diff --git a/docs/zh/msg_docs/RoverThrottleSetpoint.md b/docs/zh/msg_docs/RoverThrottleSetpoint.md index bd5ee93d55..bf137546aa 100644 --- a/docs/zh/msg_docs/RoverThrottleSetpoint.md +++ b/docs/zh/msg_docs/RoverThrottleSetpoint.md @@ -1,8 +1,27 @@ +--- +pageClass: is-wide-page +--- + # RoverThrottleSetpoint (UORB message) -Rover Throttle setpoint +Rover Throttle setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverThrottleSetpoint.msg) +**TOPICS:** rover_throttlesetpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| throttle_body_x | `float32` | [Body] | [-1 (Backwards) : 1 (Forwards)] | Throttle setpoint along body X axis | +| throttle_body_y | `float32` | [Body] | [-1 (Left) : 1 (Right)] | Mecanum only: Throttle setpoint along body Y axis (Invalid: NaN If not mecanum) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverThrottleSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Throttle setpoint @@ -10,5 +29,6 @@ Rover Throttle setpoint uint64 timestamp # [us] Time since system start float32 throttle_body_x # [-] [@range -1 (Backwards), 1 (Forwards)] [@frame Body] Throttle setpoint along body X axis float32 throttle_body_y # [-] [@range -1 (Left), 1 (Right)] [@frame Body] [@invalid NaN If not mecanum] Mecanum only: Throttle setpoint along body Y axis - ``` + +::: diff --git a/docs/zh/msg_docs/Rpm.md b/docs/zh/msg_docs/Rpm.md index ff2bf9c827..8535210e01 100644 --- a/docs/zh/msg_docs/Rpm.md +++ b/docs/zh/msg_docs/Rpm.md @@ -1,6 +1,25 @@ +--- +pageClass: is-wide-page +--- + # Rpm (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Rpm.msg) +**TOPICS:** rpm + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| rpm_estimate | `float32` | | | filtered revolutions per minute | +| rpm_raw | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Rpm.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +27,6 @@ uint64 timestamp # time since system start (microseconds) # rpm values of 0.0 mean within a timeout there is no movement measured float32 rpm_estimate # filtered revolutions per minute float32 rpm_raw - ``` + +::: diff --git a/docs/zh/msg_docs/RtlStatus.md b/docs/zh/msg_docs/RtlStatus.md index e585898e8b..6b8b7e94c7 100644 --- a/docs/zh/msg_docs/RtlStatus.md +++ b/docs/zh/msg_docs/RtlStatus.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # RtlStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RtlStatus.msg) +**TOPICS:** rtl_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| safe_points_id | `uint32` | | | unique ID of active set of safe_point_items | +| is_evaluation_pending | `bool` | | | flag if the RTL point needs reevaluation (e.g. new safe points available, but need loading). | +| has_vtol_approach | `bool` | | | flag if approaches are defined for current RTL_TYPE parameter setting | +| rtl_type | `uint8` | | | Type of RTL chosen | +| safe_point_index | `uint8` | | | index of the chosen safe point, if in RTL_STATUS_TYPE_DIRECT_SAFE_POINT mode | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| RTL_STATUS_TYPE_NONE | `uint8` | 0 | pending if evaluation can't pe performed currently e.g. when it is still loading the safe points | +| RTL_STATUS_TYPE_DIRECT_SAFE_POINT | `uint8` | 1 | chosen to directly go to a safe point or home position | +| RTL_STATUS_TYPE_DIRECT_MISSION_LAND | `uint8` | 2 | going straight to the beginning of the mission landing | +| RTL_STATUS_TYPE_FOLLOW_MISSION | `uint8` | 3 | Following the mission from start index to mission landing. Start index is current WP if in Mission mode, and closest WP otherwise. | +| RTL_STATUS_TYPE_FOLLOW_MISSION_REVERSE | `uint8` | 4 | Following the mission in reverse from start index to the beginning of the mission. Start index is previous WP if in Mission mode, and closest WP otherwise. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RtlStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +50,6 @@ uint8 RTL_STATUS_TYPE_DIRECT_SAFE_POINT=1 # chosen to directly go to a safe poi uint8 RTL_STATUS_TYPE_DIRECT_MISSION_LAND=2 # going straight to the beginning of the mission landing uint8 RTL_STATUS_TYPE_FOLLOW_MISSION=3 # Following the mission from start index to mission landing. Start index is current WP if in Mission mode, and closest WP otherwise. uint8 RTL_STATUS_TYPE_FOLLOW_MISSION_REVERSE=4 # Following the mission in reverse from start index to the beginning of the mission. Start index is previous WP if in Mission mode, and closest WP otherwise. - ``` + +::: diff --git a/docs/zh/msg_docs/RtlTimeEstimate.md b/docs/zh/msg_docs/RtlTimeEstimate.md index a12f553d71..5ed2e8d097 100644 --- a/docs/zh/msg_docs/RtlTimeEstimate.md +++ b/docs/zh/msg_docs/RtlTimeEstimate.md @@ -1,6 +1,26 @@ +--- +pageClass: is-wide-page +--- + # RtlTimeEstimate (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RtlTimeEstimate.msg) +**TOPICS:** rtl_timeestimate + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| valid | `bool` | | | Flag indicating whether the time estiamtes are valid | +| time_estimate | `float32` | s | | Estimated time for RTL | +| safe_time_estimate | `float32` | s | | Same as time_estimate, but with safety factor and safety margin included (factor\*t + margin) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RtlTimeEstimate.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +28,6 @@ uint64 timestamp # time since system start (microseconds) bool valid # Flag indicating whether the time estiamtes are valid float32 time_estimate # [s] Estimated time for RTL float32 safe_time_estimate # [s] Same as time_estimate, but with safety factor and safety margin included (factor*t + margin) - ``` + +::: diff --git a/docs/zh/msg_docs/SatelliteInfo.md b/docs/zh/msg_docs/SatelliteInfo.md index c040856148..65ff7152a2 100644 --- a/docs/zh/msg_docs/SatelliteInfo.md +++ b/docs/zh/msg_docs/SatelliteInfo.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # SatelliteInfo (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SatelliteInfo.msg) +**TOPICS:** satellite_info + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------- | ----------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| count | `uint8` | | | Number of satellites visible to the receiver | +| svid | `uint8[40]` | | | Space vehicle ID [1..255], see scheme below | +| used | `uint8[40]` | | | 0: Satellite not used, 1: used for navigation | +| elevation | `uint8[40]` | | | Elevation (0: right on top of receiver, 90: on the horizon) of satellite | +| azimuth | `uint8[40]` | | | Direction of satellite, 0: 0 deg, 255: 360 deg. | +| snr | `uint8[40]` | | | dBHz, Signal to noise ratio of satellite C/N0, range 0..99, zero when not tracking this satellite. | +| prn | `uint8[40]` | | | Satellite PRN code assignment, (psuedorandom number SBAS, valid codes are 120-144) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------ | ------- | -- | -- | +| SAT_INFO_MAX_SATELLITES | `uint8` | 40 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SatelliteInfo.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -13,5 +43,6 @@ uint8[40] elevation # Elevation (0: right on top of receiver, 90: on the horizo uint8[40] azimuth # Direction of satellite, 0: 0 deg, 255: 360 deg. uint8[40] snr # dBHz, Signal to noise ratio of satellite C/N0, range 0..99, zero when not tracking this satellite. uint8[40] prn # Satellite PRN code assignment, (psuedorandom number SBAS, valid codes are 120-144) - ``` + +::: diff --git a/docs/zh/msg_docs/SensorAccel.md b/docs/zh/msg_docs/SensorAccel.md index 7f7ad93e57..9df887f343 100644 --- a/docs/zh/msg_docs/SensorAccel.md +++ b/docs/zh/msg_docs/SensorAccel.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # SensorAccel (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAccel.msg) +**TOPICS:** sensor_accel + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| x | `float32` | | | acceleration in the FRD board frame X-axis in m/s^2 | +| y | `float32` | | | acceleration in the FRD board frame Y-axis in m/s^2 | +| z | `float32` | | | acceleration in the FRD board frame Z-axis in m/s^2 | +| temperature | `float32` | | | temperature in degrees Celsius | +| error_count | `uint32` | | | | +| clip_counter | `uint8[3]` | | | clip count per axis in the sample period | +| samples | `uint8` | | | number of raw samples that went into this message | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | - | -- | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAccel.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -21,5 +53,6 @@ uint8[3] clip_counter # clip count per axis in the sample period uint8 samples # number of raw samples that went into this message uint8 ORB_QUEUE_LENGTH = 8 - ``` + +::: diff --git a/docs/zh/msg_docs/SensorAccelFifo.md b/docs/zh/msg_docs/SensorAccelFifo.md index 86f5a02a06..fdc8e20826 100644 --- a/docs/zh/msg_docs/SensorAccelFifo.md +++ b/docs/zh/msg_docs/SensorAccelFifo.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # SensorAccelFifo (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAccelFifo.msg) +**TOPICS:** sensor_accelfifo + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| dt | `float32` | | | delta time between samples (microseconds) | +| scale | `float32` | | | | +| samples | `uint8` | | | number of valid samples | +| x | `int16[32]` | | | acceleration in the FRD board frame X-axis in m/s^2 | +| y | `int16[32]` | | | acceleration in the FRD board frame Y-axis in m/s^2 | +| z | `int16[32]` | | | acceleration in the FRD board frame Z-axis in m/s^2 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAccelFifo.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -16,5 +41,6 @@ uint8 samples # number of valid samples int16[32] x # acceleration in the FRD board frame X-axis in m/s^2 int16[32] y # acceleration in the FRD board frame Y-axis in m/s^2 int16[32] z # acceleration in the FRD board frame Z-axis in m/s^2 - ``` + +::: diff --git a/docs/zh/msg_docs/SensorAirflow.md b/docs/zh/msg_docs/SensorAirflow.md index 82b8706060..9b7cccd0ad 100644 --- a/docs/zh/msg_docs/SensorAirflow.md +++ b/docs/zh/msg_docs/SensorAirflow.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # SensorAirflow (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAirflow.msg) +**TOPICS:** sensor_airflow + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| speed | `float32` | | | the speed being reported by the wind / airflow sensor | +| direction | `float32` | | | the direction being reported by the wind / airflow sensor | +| status | `uint8` | | | Status code from the sensor | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAirflow.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +29,6 @@ uint32 device_id # unique device ID for the sensor that does not float32 speed # the speed being reported by the wind / airflow sensor float32 direction # the direction being reported by the wind / airflow sensor uint8 status # Status code from the sensor - ``` + +::: diff --git a/docs/zh/msg_docs/SensorBaro.md b/docs/zh/msg_docs/SensorBaro.md index ef4d7a8f28..8498376d07 100644 --- a/docs/zh/msg_docs/SensorBaro.md +++ b/docs/zh/msg_docs/SensorBaro.md @@ -1,11 +1,39 @@ +--- +pageClass: is-wide-page +--- + # SensorBaro (UORB message) -Barometer sensor +Barometer sensor. This is populated by barometer drivers and used by the EKF2 estimator. The information is published in the `SCALED_PRESSURE_n` MAVLink messages (along with information from a corresponding `DifferentialPressure` instance). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorBaro.msg) +**TOPICS:** sensor_baro + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time of publication (since system start) | +| timestamp_sample | `uint64` | us | | Time of raw data capture | +| device_id | `uint32` | | | Unique device ID for the sensor that does not change between power cycles | +| pressure | `float32` | Pa | | Static pressure measurement | +| temperature | `float32` | degC | | Temperature. | +| error_count | `uint32` | | | Number of errors detected by driver. | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | - | -- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorBaro.msg) + +:::details +Click here to see original file ```c # Barometer sensor @@ -22,5 +50,6 @@ float32 temperature # [degC] Temperature. uint32 error_count # [-] Number of errors detected by driver. uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/zh/msg_docs/SensorCombined.md b/docs/zh/msg_docs/SensorCombined.md index 29a22b6326..8ab0c5fadb 100644 --- a/docs/zh/msg_docs/SensorCombined.md +++ b/docs/zh/msg_docs/SensorCombined.md @@ -1,10 +1,43 @@ +--- +pageClass: is-wide-page +--- + # SensorCombined (UORB message) -Sensor readings in SI-unit form. -These fields are scaled and offset-compensated where possible and do not -change with board revisions and sensor updates. +Sensor readings in SI-unit form. These fields are scaled and offset-compensated where possible and do not. change with board revisions and sensor updates. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorCombined.msg) +**TOPICS:** sensor_combined + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| gyro_rad | `float32[3]` | | | average angular rate measured in the FRD body frame XYZ-axis in rad/s over the last gyro sampling period | +| gyro_integral_dt | `uint32` | | | gyro measurement sampling period in microseconds | +| accelerometer_timestamp_relative | `int32` | | | timestamp + accelerometer_timestamp_relative = Accelerometer timestamp | +| accelerometer_m_s2 | `float32[3]` | | | average value acceleration measured in the FRD body frame XYZ-axis in m/s^2 over the last accelerometer sampling period | +| accelerometer_integral_dt | `uint32` | | | accelerometer measurement sampling period in microseconds | +| accelerometer_clipping | `uint8` | | | bitfield indicating if there was any accelerometer clipping (per axis) during the integration time frame | +| gyro_clipping | `uint8` | | | bitfield indicating if there was any gyro clipping (per axis) during the integration time frame | +| accel_calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever accelermeter calibration changes. | +| gyro_calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever rate gyro calibration changes. | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| --------------------------------------------------------------------------------------------------------------- | ------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| RELATIVE_TIMESTAMP_INVALID | `int32` | 2147483647 | (0x7fffffff) If one of the relative timestamps is set to this value, it means the associated sensor values are invalid | +| CLIPPING_X | `uint8` | 1 | | +| CLIPPING_Y | `uint8` | 2 | | +| CLIPPING_Z | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorCombined.msg) + +:::details +Click here to see original file ```c # Sensor readings in SI-unit form. @@ -32,5 +65,6 @@ uint8 gyro_clipping # bitfield indicating if there was any gyro clip uint8 accel_calibration_count # Calibration changed counter. Monotonically increases whenever accelermeter calibration changes. uint8 gyro_calibration_count # Calibration changed counter. Monotonically increases whenever rate gyro calibration changes. - ``` + +::: diff --git a/docs/zh/msg_docs/SensorCorrection.md b/docs/zh/msg_docs/SensorCorrection.md index 8c9cfbb9d2..94cf4c4b5a 100644 --- a/docs/zh/msg_docs/SensorCorrection.md +++ b/docs/zh/msg_docs/SensorCorrection.md @@ -1,8 +1,49 @@ +--- +pageClass: is-wide-page +--- + # SensorCorrection (UORB message) -Sensor corrections in SI-unit form for the voted sensor +Sensor corrections in SI-unit form for the voted sensor. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorCorrection.msg) +**TOPICS:** sensor_correction + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| accel_device_ids | `uint32[4]` | | | | +| accel_temperature | `float32[4]` | | | | +| accel_offset_0 | `float32[3]` | | | accelerometer 0 offsets in the FRD board frame XYZ-axis in m/s^s | +| accel_offset_1 | `float32[3]` | | | accelerometer 1 offsets in the FRD board frame XYZ-axis in m/s^s | +| accel_offset_2 | `float32[3]` | | | accelerometer 2 offsets in the FRD board frame XYZ-axis in m/s^s | +| accel_offset_3 | `float32[3]` | | | accelerometer 3 offsets in the FRD board frame XYZ-axis in m/s^s | +| gyro_device_ids | `uint32[4]` | | | | +| gyro_temperature | `float32[4]` | | | | +| gyro_offset_0 | `float32[3]` | | | gyro 0 XYZ offsets in the sensor frame in rad/s | +| gyro_offset_1 | `float32[3]` | | | gyro 1 XYZ offsets in the sensor frame in rad/s | +| gyro_offset_2 | `float32[3]` | | | gyro 2 XYZ offsets in the sensor frame in rad/s | +| gyro_offset_3 | `float32[3]` | | | gyro 3 XYZ offsets in the sensor frame in rad/s | +| mag_device_ids | `uint32[4]` | | | | +| mag_temperature | `float32[4]` | | | | +| mag_offset_0 | `float32[3]` | | | magnetometer 0 offsets in the FRD board frame XYZ-axis in m/s^s | +| mag_offset_1 | `float32[3]` | | | magnetometer 1 offsets in the FRD board frame XYZ-axis in m/s^s | +| mag_offset_2 | `float32[3]` | | | magnetometer 2 offsets in the FRD board frame XYZ-axis in m/s^s | +| mag_offset_3 | `float32[3]` | | | magnetometer 3 offsets in the FRD board frame XYZ-axis in m/s^s | +| baro_device_ids | `uint32[4]` | | | | +| baro_temperature | `float32[4]` | | | | +| baro_offset_0 | `float32` | | | barometric pressure 0 offsets in the sensor frame in Pascals | +| baro_offset_1 | `float32` | | | barometric pressure 1 offsets in the sensor frame in Pascals | +| baro_offset_2 | `float32` | | | barometric pressure 2 offsets in the sensor frame in Pascals | +| baro_offset_3 | `float32` | | | barometric pressure 3 offsets in the sensor frame in Pascals | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorCorrection.msg) + +:::details +Click here to see original file ```c # @@ -46,5 +87,6 @@ float32 baro_offset_0 # barometric pressure 0 offsets in the sensor frame in Pa float32 baro_offset_1 # barometric pressure 1 offsets in the sensor frame in Pascals float32 baro_offset_2 # barometric pressure 2 offsets in the sensor frame in Pascals float32 baro_offset_3 # barometric pressure 3 offsets in the sensor frame in Pascals - ``` + +::: diff --git a/docs/zh/msg_docs/SensorGnssRelative.md b/docs/zh/msg_docs/SensorGnssRelative.md index 639e7897f5..8f4c2b59bc 100644 --- a/docs/zh/msg_docs/SensorGnssRelative.md +++ b/docs/zh/msg_docs/SensorGnssRelative.md @@ -1,8 +1,45 @@ +--- +pageClass: is-wide-page +--- + # SensorGnssRelative (UORB message) GNSS relative positioning information in NED frame. The NED frame is defined as the local topological system at the reference station. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGnssRelative.msg) +**TOPICS:** sensor_gnssrelative + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| time_utc_usec | `uint64` | | | Timestamp (microseconds, UTC), this is the timestamp which comes from the gps module. It might be unavailable right after cold start, indicated by a value of 0 | +| reference_station_id | `uint16` | | | Reference Station ID | +| 位置 | `float32[3]` | | | GPS NED relative position vector (m) | +| position_accuracy | `float32[3]` | | | Accuracy of relative position (m) | +| heading | `float32` | | | Heading of the relative position vector (radians) | +| heading_accuracy | `float32` | | | Accuracy of heading of the relative position vector (radians) | +| position_length | `float32` | | | Length of the position vector (m) | +| accuracy_length | `float32` | | | Accuracy of the position length (m) | +| gnss_fix_ok | `bool` | | | GNSS valid fix (i.e within DOP & accuracy masks) | +| differential_solution | `bool` | | | differential corrections were applied | +| relative_position_valid | `bool` | | | | +| carrier_solution_floating | `bool` | | | carrier phase range solution with floating ambiguities | +| carrier_solution_fixed | `bool` | | | carrier phase range solution with fixed ambiguities | +| moving_base_mode | `bool` | | | if the receiver is operating in moving base mode | +| reference_position_miss | `bool` | | | extrapolated reference position was used to compute moving base solution this epoch | +| reference_observations_miss | `bool` | | | extrapolated reference observations were used to compute moving base solution this epoch | +| heading_valid | `bool` | | | | +| relative_position_normalized | `bool` | | | the components of the relative position vector (including the high-precision parts) are normalized | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGnssRelative.msg) + +:::details +Click here to see original file ```c # GNSS relative positioning information in NED frame. The NED frame is defined as the local topological system at the reference station. @@ -35,5 +72,6 @@ bool reference_position_miss # extrapolated reference position was used to bool reference_observations_miss # extrapolated reference observations were used to compute moving base solution this epoch bool heading_valid bool relative_position_normalized # the components of the relative position vector (including the high-precision parts) are normalized - ``` + +::: diff --git a/docs/zh/msg_docs/SensorGnssStatus.md b/docs/zh/msg_docs/SensorGnssStatus.md index 70602b85fc..8124591cc6 100644 --- a/docs/zh/msg_docs/SensorGnssStatus.md +++ b/docs/zh/msg_docs/SensorGnssStatus.md @@ -1,8 +1,31 @@ +--- +pageClass: is-wide-page +--- + # SensorGnssStatus (UORB message) -Gnss quality indicators +Gnss quality indicators. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGnssStatus.msg) +**TOPICS:** sensor_gnssstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| `bool` | | | Set to true if quality indicators are available | | +| quality_corrections | `uint8` | | | Corrections quality from 0 to 10, or 255 if not available | +| quality_receiver | `uint8` | | | Overall receiver operating status from 0 to 10, or 255 if not available | +| quality_gnss_signals | `uint8` | | | Quality of GNSS signals from 0 to 10, or 255 if not available | +| quality_post_processing | `uint8` | | | Expected post processing quality from 0 to 10, or 255 if not available | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGnssStatus.msg) + +:::details +Click here to see original file ```c # Gnss quality indicators @@ -15,5 +38,6 @@ uint8 quality_corrections # Corrections quality from 0 to 10, or 255 if no uint8 quality_receiver # Overall receiver operating status from 0 to 10, or 255 if not available uint8 quality_gnss_signals # Quality of GNSS signals from 0 to 10, or 255 if not available uint8 quality_post_processing # Expected post processing quality from 0 to 10, or 255 if not available - ``` + +::: diff --git a/docs/zh/msg_docs/SensorGps.md b/docs/zh/msg_docs/SensorGps.md index 1b5fb3cf41..e5edf24fea 100644 --- a/docs/zh/msg_docs/SensorGps.md +++ b/docs/zh/msg_docs/SensorGps.md @@ -1,9 +1,97 @@ +--- +pageClass: is-wide-page +--- + # SensorGps (UORB message) -GPS position in WGS84 coordinates. -the field 'timestamp' is for the position & velocity (microseconds) +GPS position in WGS84 coordinates. the field 'timestamp' is for the position & velocity (microseconds). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGps.msg) +**TOPICS:** sensor_gps vehicle_gps_position + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| latitude_deg | `float64` | | | Latitude in degrees, allows centimeter level RTK precision | +| longitude_deg | `float64` | | | Longitude in degrees, allows centimeter level RTK precision | +| altitude_msl_m | `float64` | | | Altitude above MSL, meters | +| altitude_ellipsoid_m | `float64` | | | Altitude above Ellipsoid, meters | +| s_variance_m_s | `float32` | | | GPS speed accuracy estimate, (metres/sec) | +| c_variance_rad | `float32` | | | GPS course accuracy estimate, (radians) | +| fix_type | `uint8` | | | Some applications will not use the value of this field unless it is at least two, so always correctly fill in the fix. | +| eph | `float32` | | | GPS horizontal position accuracy (metres) | +| epv | `float32` | | | GPS vertical position accuracy (metres) | +| hdop | `float32` | | | Horizontal dilution of precision | +| vdop | `float32` | | | Vertical dilution of precision | +| noise_per_ms | `int32` | | | GPS noise per millisecond | +| automatic_gain_control | `uint16` | | | Automatic gain control monitor | +| jamming_state | `uint8` | | | indicates whether jamming has been detected or suspected by the receivers. O: Unknown, 1: OK, 2: Mitigated, 3: Detected | +| jamming_indicator | `int32` | | | indicates jamming is occurring | +| spoofing_state | `uint8` | | | indicates whether spoofing has been detected or suspected by the receivers. O: Unknown, 1: OK, 2: Mitigated, 3: Detected | +| authentication_state | `uint8` | | | GPS signal authentication state | +| vel_m_s | `float32` | | | GPS ground speed, (metres/sec) | +| vel_n_m_s | `float32` | | | GPS North velocity, (metres/sec) | +| vel_e_m_s | `float32` | | | GPS East velocity, (metres/sec) | +| vel_d_m_s | `float32` | | | GPS Down velocity, (metres/sec) | +| cog_rad | `float32` | | | Course over ground (NOT heading, but direction of movement), -PI..PI, (radians) | +| vel_ned_valid | `bool` | | | True if NED velocity is valid | +| timestamp_time_relative | `int32` | | | timestamp + timestamp_time_relative = Time of the UTC timestamp since system start, (microseconds) | +| time_utc_usec | `uint64` | | | Timestamp (microseconds, UTC), this is the timestamp which comes from the gps module. It might be unavailable right after cold start, indicated by a value of 0 | +| satellites_used | `uint8` | | | Number of satellites used | +| system_error | `uint32` | | | General errors with the connected GPS receiver | +| heading | `float32` | | | heading angle of XYZ body frame rel to NED. Set to NaN if not available and updated (used for dual antenna GPS), (rad, [-PI, PI]) | +| heading_offset | `float32` | | | heading offset of dual antenna array in body frame. Set to NaN if not applicable. (rad, [-PI, PI]) | +| heading_accuracy | `float32` | | | heading accuracy (rad, [0, 2PI]) | +| rtcm_injection_rate | `float32` | | | RTCM message injection rate Hz | +| selected_rtcm_instance | `uint8` | | | uorb instance that is being used for RTCM corrections | +| rtcm_crc_failed | `bool` | | | RTCM message CRC failure detected | +| rtcm_msg_used | `uint8` | | | Indicates if the RTCM message was used successfully by the receiver | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -- | ---------------------------------------------------------- | +| FIX_TYPE_NONE | `uint8` | 1 | Value 0 is also valid to represent no fix. | +| FIX_TYPE_2D | `uint8` | 2 | | +| FIX_TYPE_3D | `uint8` | 3 | | +| FIX_TYPE_RTCM_CODE_DIFFERENTIAL | `uint8` | 4 | | +| FIX_TYPE_RTK_FLOAT | `uint8` | 5 | | +| FIX_TYPE_RTK_FIXED | `uint8` | 6 | | +| FIX_TYPE_EXTRAPOLATED | `uint8` | 8 | | +| JAMMING_STATE_UNKNOWN | `uint8` | 0 | default | +| JAMMING_STATE_OK | `uint8` | 1 | | +| JAMMING_STATE_MITIGATED | `uint8` | 2 | | +| JAMMING_STATE_DETECTED | `uint8` | 3 | | +| SPOOFING_STATE_UNKNOWN | `uint8` | 0 | default | +| SPOOFING_STATE_OK | `uint8` | 1 | | +| SPOOFING_STATE_MITIGATED | `uint8` | 2 | | +| SPOOFING_STATE_DETECTED | `uint8` | 3 | | +| AUTHENTICATION_STATE_UNKNOWN | `uint8` | 0 | default | +| AUTHENTICATION_STATE_INITIALIZING | `uint8` | 1 | | +| AUTHENTICATION_STATE_ERROR | `uint8` | 2 | | +| AUTHENTICATION_STATE_OK | `uint8` | 3 | | +| AUTHENTICATION_STATE_DISABLED | `uint8` | 4 | | +| SYSTEM_ERROR_OK | `uint32` | 0 | default | +| SYSTEM_ERROR_INCOMING_CORRECTIONS | `uint32` | 1 | | +| SYSTEM_ERROR_CONFIGURATION | `uint32` | 2 | | +| SYSTEM_ERROR_SOFTWARE | `uint32` | 4 | | +| SYSTEM_ERROR_ANTENNA | `uint32` | 8 | | +| SYSTEM_ERROR_EVENT_CONGESTION | `uint32` | 16 | | +| SYSTEM_ERROR_CPU_OVERLOAD | `uint32` | 32 | | +| SYSTEM_ERROR_OUTPUT_CONGESTION | `uint32` | 64 | | +| RTCM_MSG_USED_UNKNOWN | `uint8` | 0 | | +| RTCM_MSG_USED_NOT_USED | `uint8` | 1 | | +| RTCM_MSG_USED_USED | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGps.msg) + +:::details +Click here to see original file ```c # GPS position in WGS84 coordinates. @@ -96,5 +184,6 @@ uint8 RTCM_MSG_USED_USED = 2 uint8 rtcm_msg_used # Indicates if the RTCM message was used successfully by the receiver # TOPICS sensor_gps vehicle_gps_position - ``` + +::: diff --git a/docs/zh/msg_docs/SensorGyro.md b/docs/zh/msg_docs/SensorGyro.md index ee2b4f084a..5f01541605 100644 --- a/docs/zh/msg_docs/SensorGyro.md +++ b/docs/zh/msg_docs/SensorGyro.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # SensorGyro (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyro.msg) +**TOPICS:** sensor_gyro + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| x | `float32` | | | angular velocity in the FRD board frame X-axis in rad/s | +| y | `float32` | | | angular velocity in the FRD board frame Y-axis in rad/s | +| z | `float32` | | | angular velocity in the FRD board frame Z-axis in rad/s | +| temperature | `float32` | | | temperature in degrees Celsius | +| error_count | `uint32` | | | | +| clip_counter | `uint8[3]` | | | clip count per axis in the sample period | +| samples | `uint8` | | | number of raw samples that went into this message | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | - | -- | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyro.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -21,5 +53,6 @@ uint8[3] clip_counter # clip count per axis in the sample period uint8 samples # number of raw samples that went into this message uint8 ORB_QUEUE_LENGTH = 8 - ``` + +::: diff --git a/docs/zh/msg_docs/SensorGyroFft.md b/docs/zh/msg_docs/SensorGyroFft.md index 645ce2b2dc..3f6841a73a 100644 --- a/docs/zh/msg_docs/SensorGyroFft.md +++ b/docs/zh/msg_docs/SensorGyroFft.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # SensorGyroFft (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyroFft.msg) +**TOPICS:** sensor_gyrofft + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| sensor_sample_rate_hz | `float32` | | | | +| resolution_hz | `float32` | | | | +| peak_frequencies_x | `float32[3]` | | | x axis peak frequencies | +| peak_frequencies_y | `float32[3]` | | | y axis peak frequencies | +| peak_frequencies_z | `float32[3]` | | | z axis peak frequencies | +| peak_snr_x | `float32[3]` | | | x axis peak SNR | +| peak_snr_y | `float32[3]` | | | y axis peak SNR | +| peak_snr_z | `float32[3]` | | | z axis peak SNR | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyroFft.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +45,6 @@ float32[3] peak_frequencies_z # z axis peak frequencies float32[3] peak_snr_x # x axis peak SNR float32[3] peak_snr_y # y axis peak SNR float32[3] peak_snr_z # z axis peak SNR - ``` + +::: diff --git a/docs/zh/msg_docs/SensorGyroFifo.md b/docs/zh/msg_docs/SensorGyroFifo.md index 4d440b1129..c2ace874c7 100644 --- a/docs/zh/msg_docs/SensorGyroFifo.md +++ b/docs/zh/msg_docs/SensorGyroFifo.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # SensorGyroFifo (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyroFifo.msg) +**TOPICS:** sensor_gyrofifo + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| dt | `float32` | | | delta time between samples (microseconds) | +| scale | `float32` | | | | +| samples | `uint8` | | | number of valid samples | +| x | `int16[32]` | | | angular velocity in the FRD board frame X-axis in rad/s | +| y | `int16[32]` | | | angular velocity in the FRD board frame Y-axis in rad/s | +| z | `int16[32]` | | | angular velocity in the FRD board frame Z-axis in rad/s | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | - | -- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyroFifo.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +49,6 @@ int16[32] y # angular velocity in the FRD board frame Y-axis in ra int16[32] z # angular velocity in the FRD board frame Z-axis in rad/s uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/zh/msg_docs/SensorHygrometer.md b/docs/zh/msg_docs/SensorHygrometer.md index e3da07593f..3fb5ebf2a1 100644 --- a/docs/zh/msg_docs/SensorHygrometer.md +++ b/docs/zh/msg_docs/SensorHygrometer.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # SensorHygrometer (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorHygrometer.msg) +**TOPICS:** sensor_hygrometer + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| `float32` | | | Temperature provided by sensor (Celsius) | | +| humidity | `float32` | | | Humidity provided by sensor | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorHygrometer.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +32,6 @@ uint32 device_id # unique device ID for the sensor that does not change float32 temperature # Temperature provided by sensor (Celsius) float32 humidity # Humidity provided by sensor - ``` + +::: diff --git a/docs/zh/msg_docs/SensorMag.md b/docs/zh/msg_docs/SensorMag.md index b3cb27bb11..2ec39720c7 100644 --- a/docs/zh/msg_docs/SensorMag.md +++ b/docs/zh/msg_docs/SensorMag.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # SensorMag (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorMag.msg) +**TOPICS:** sensor_mag + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| x | `float32` | | | magnetic field in the FRD board frame X-axis in Gauss | +| y | `float32` | | | magnetic field in the FRD board frame Y-axis in Gauss | +| z | `float32` | | | magnetic field in the FRD board frame Z-axis in Gauss | +| temperature | `float32` | | | temperature in degrees Celsius | +| error_count | `uint32` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | - | -- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorMag.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -17,5 +47,6 @@ float32 temperature # temperature in degrees Celsius uint32 error_count uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/zh/msg_docs/SensorOpticalFlow.md b/docs/zh/msg_docs/SensorOpticalFlow.md index b1b131b50d..e555cb7b76 100644 --- a/docs/zh/msg_docs/SensorOpticalFlow.md +++ b/docs/zh/msg_docs/SensorOpticalFlow.md @@ -1,6 +1,46 @@ +--- +pageClass: is-wide-page +--- + # SensorOpticalFlow (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorOpticalFlow.msg) +**TOPICS:** sensor_opticalflow + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| pixel_flow | `float32[2]` | | | (radians) optical flow in radians where a positive value is produced by a RH rotation of the sensor about the body axis | +| delta_angle | `float32[3]` | | | (radians) accumulated gyro radians where a positive value is produced by a RH rotation about the body axis. Set to NaN if flow sensor does not have 3-axis gyro data. | +| delta_angle_available | `bool` | | | | +| distance_m | `float32` | | | (meters) Distance to the center of the flow field | +| distance_available | `bool` | | | | +| integration_timespan_us | `uint32` | | | (microseconds) accumulation timespan in microseconds | +| quality | `uint8` | | | quality, 0: bad quality, 255: maximum quality | +| error_count | `uint32` | | | | +| max_flow_rate | `float32` | | | (radians/s) Magnitude of maximum angular which the optical flow sensor can measure reliably | +| min_ground_distance | `float32` | | | (meters) Minimum distance from ground at which the optical flow sensor operates reliably | +| max_ground_distance | `float32` | | | (meters) Maximum distance from ground at which the optical flow sensor operates reliably | +| mode | `uint8` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------- | ------- | - | -- | +| MODE_UNKNOWN | `uint8` | 0 | | +| MODE_BRIGHT | `uint8` | 1 | | +| MODE_LOWLIGHT | `uint8` | 2 | | +| MODE_SUPER_LOWLIGHT | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorOpticalFlow.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -33,5 +73,6 @@ uint8 MODE_LOWLIGHT = 2 uint8 MODE_SUPER_LOWLIGHT = 3 uint8 mode - ``` + +::: diff --git a/docs/zh/msg_docs/SensorPreflightMag.md b/docs/zh/msg_docs/SensorPreflightMag.md index 7d5a933bc7..8f7747119d 100644 --- a/docs/zh/msg_docs/SensorPreflightMag.md +++ b/docs/zh/msg_docs/SensorPreflightMag.md @@ -1,9 +1,26 @@ +--- +pageClass: is-wide-page +--- + # SensorPreflightMag (UORB message) -Pre-flight sensor check metrics. -The topic will not be updated when the vehicle is armed +Pre-flight sensor check metrics. The topic will not be updated when the vehicle is armed. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorPreflightMag.msg) +**TOPICS:** sensor_preflightmag + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mag_inconsistency_angle | `float32` | | | maximum angle between magnetometer instance field vectors in radians. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorPreflightMag.msg) + +:::details +Click here to see original file ```c # @@ -13,5 +30,6 @@ The topic will not be updated when the vehicle is armed uint64 timestamp # time since system start (microseconds) float32 mag_inconsistency_angle # maximum angle between magnetometer instance field vectors in radians. - ``` + +::: diff --git a/docs/zh/msg_docs/SensorSelection.md b/docs/zh/msg_docs/SensorSelection.md index 58fb6be289..caeff4382e 100644 --- a/docs/zh/msg_docs/SensorSelection.md +++ b/docs/zh/msg_docs/SensorSelection.md @@ -1,9 +1,27 @@ +--- +pageClass: is-wide-page +--- + # SensorSelection (UORB message) -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 +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. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorSelection.msg) +**TOPICS:** sensor_selection + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| accel_device_id | `uint32` | | | unique device ID for the selected accelerometers | +| gyro_device_id | `uint32` | | | unique device ID for the selected rate gyros | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorSelection.msg) + +:::details +Click here to see original file ```c # @@ -13,5 +31,6 @@ Will be updated on startup of the sensor module and when sensor selection change uint64 timestamp # time since system start (microseconds) uint32 accel_device_id # unique device ID for the selected accelerometers uint32 gyro_device_id # unique device ID for the selected rate gyros - ``` + +::: diff --git a/docs/zh/msg_docs/SensorTemp.md b/docs/zh/msg_docs/SensorTemp.md index 5ed50541fe..f91f63076d 100644 --- a/docs/zh/msg_docs/SensorTemp.md +++ b/docs/zh/msg_docs/SensorTemp.md @@ -1,11 +1,31 @@ +--- +pageClass: is-wide-page +--- + # SensorTemp (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorTemp.msg) +**TOPICS:** sensor_temp + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| `float32` | | | Temperature provided by sensor (Celsius) | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorTemp.msg) + +:::details +Click here to see original file ```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/zh/msg_docs/SensorUwb.md b/docs/zh/msg_docs/SensorUwb.md index 544bc60e7a..bf78568670 100644 --- a/docs/zh/msg_docs/SensorUwb.md +++ b/docs/zh/msg_docs/SensorUwb.md @@ -1,9 +1,45 @@ +--- +pageClass: is-wide-page +--- + # SensorUwb (UORB message) -UWB distance contains the distance information measured by an ultra-wideband positioning system, -such as Pozyx or NXP Rddrone. +UWB distance contains the distance information measured by an ultra-wideband positioning system,. such as Pozyx or NXP Rddrone. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorUwb.msg) +**TOPICS:** sensor_uwb + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| sessionid | `uint32` | | | UWB SessionID | +| time_offset | `uint32` | | | Time between Ranging Rounds in ms | +| counter | `uint32` | | | Number of Ranges since last Start of Ranging | +| mac | `uint16` | | | MAC adress of Initiator (controller) | +| mac_dest | `uint16` | | | MAC adress of Responder (Controlee) | +| status | `uint16` | | | status feedback # | +| nlos | `uint8` | | | None line of site condition y/n | +| distance | `float32` | | | distance in m to the UWB receiver | +| aoa_azimuth_dev | `float32` | | | Angle of arrival of first incomming RX msg | +| aoa_elevation_dev | `float32` | | | Angle of arrival of first incomming RX msg | +| aoa_azimuth_resp | `float32` | | | Angle of arrival of first incomming RX msg at the responder | +| aoa_elevation_resp | `float32` | | | Angle of arrival of first incomming RX msg at the responder | +| aoa_azimuth_fom | `uint8` | | | AOA Azimuth FOM | +| aoa_elevation_fom | `uint8` | | | AOA Elevation FOM | +| aoa_dest_azimuth_fom | `uint8` | | | AOA Azimuth FOM | +| aoa_dest_elevation_fom | `uint8` | | | AOA Elevation FOM | +| orientation | `uint8` | | | Direction the sensor faces from MAV_SENSOR_ORIENTATION enum | +| offset_x | `float32` | | | UWB initiator offset in X axis (NED drone frame) | +| offset_y | `float32` | | | UWB initiator offset in Y axis (NED drone frame) | +| offset_z | `float32` | | | UWB initiator offset in Z axis (NED drone frame) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorUwb.msg) + +:::details +Click here to see original file ```c # UWB distance contains the distance information measured by an ultra-wideband positioning system, @@ -40,5 +76,6 @@ uint8 orientation # Direction the sensor faces from MAV_SENSOR_ORIENTATION enum float32 offset_x # UWB initiator offset in X axis (NED drone frame) float32 offset_y # UWB initiator offset in Y axis (NED drone frame) float32 offset_z # UWB initiator offset in Z axis (NED drone frame) - ``` + +::: diff --git a/docs/zh/msg_docs/SensorsStatus.md b/docs/zh/msg_docs/SensorsStatus.md index 996d7107fb..6079c7ac73 100644 --- a/docs/zh/msg_docs/SensorsStatus.md +++ b/docs/zh/msg_docs/SensorsStatus.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # SensorsStatus (UORB message) Sensor check metrics. This will be zero for a sensor that's primary or unpopulated. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorsStatus.msg) +**TOPICS:** sensors_status_baro sensors_status_mag + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id_primary | `uint32` | | | current primary device id for reference | +| device_ids | `uint32[4]` | | | | +| inconsistency | `float32[4]` | | | magnitude of difference between sensor instance and mean | +| healthy | `bool[4]` | | | sensor healthy | +| priority | `uint8[4]` | | | | +| enabled | `bool[4]` | | | | +| external | `bool[4]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorsStatus.msg) + +:::details +Click here to see original file ```c # @@ -20,5 +44,6 @@ bool[4] enabled bool[4] external # TOPICS sensors_status_baro sensors_status_mag - ``` + +::: diff --git a/docs/zh/msg_docs/SensorsStatusImu.md b/docs/zh/msg_docs/SensorsStatusImu.md index a25b5d1c01..7abcb84e28 100644 --- a/docs/zh/msg_docs/SensorsStatusImu.md +++ b/docs/zh/msg_docs/SensorsStatusImu.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # SensorsStatusImu (UORB message) Sensor check metrics. This will be zero for a sensor that's primary or unpopulated. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorsStatusImu.msg) +**TOPICS:** sensors_statusimu + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| accel_device_id_primary | `uint32` | | | current primary accel device id for reference | +| accel_device_ids | `uint32[4]` | | | | +| accel_inconsistency_m_s_s | `float32[4]` | | | magnitude of acceleration difference between IMU instance and mean in m/s^2. | +| accel_healthy | `bool[4]` | | | | +| accel_priority | `uint8[4]` | | | | +| gyro_device_id_primary | `uint32` | | | current primary gyro device id for reference | +| gyro_device_ids | `uint32[4]` | | | | +| gyro_inconsistency_rad_s | `float32[4]` | | | magnitude of angular rate difference between IMU instance and mean in (rad/s). | +| gyro_healthy | `bool[4]` | | | | +| gyro_priority | `uint8[4]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorsStatusImu.msg) + +:::details +Click here to see original file ```c # @@ -23,5 +50,6 @@ uint32[4] gyro_device_ids float32[4] gyro_inconsistency_rad_s # magnitude of angular rate difference between IMU instance and mean in (rad/s). bool[4] gyro_healthy uint8[4] gyro_priority - ``` + +::: diff --git a/docs/zh/msg_docs/SystemPower.md b/docs/zh/msg_docs/SystemPower.md index eac7503f97..2386e4cd08 100644 --- a/docs/zh/msg_docs/SystemPower.md +++ b/docs/zh/msg_docs/SystemPower.md @@ -1,6 +1,49 @@ +--- +pageClass: is-wide-page +--- + # SystemPower (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SystemPower.msg) +**TOPICS:** system_power + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| voltage5v_v | `float32` | | | peripheral 5V rail voltage | +| voltage_payload_v | `float32` | | | payload rail voltage | +| sensors3v3 | `float32[4]` | | | Sensors 3V3 rail voltage | +| sensors3v3_valid | `uint8` | | | Sensors 3V3 rail voltage was read (bitfield). | +| usb_connected | `uint8` | | | USB is connected when 1 | +| brick_valid | `uint8` | | | brick bits power is good when bit 1 | +| usb_valid | `uint8` | | | USB is valid when 1 | +| servo_valid | `uint8` | | | servo power is good when 1 | +| periph_5v_oc | `uint8` | | | peripheral overcurrent when 1 | +| hipower_5v_oc | `uint8` | | | high power peripheral overcurrent when 1 | +| comp_5v_valid | `uint8` | | | 5V to companion valid | +| can1_gps1_5v_valid | `uint8` | | | 5V for CAN1/GPS1 valid | +| payload_v_valid | `uint8` | | | payload rail voltage is valid | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------- | ------- | - | -- | +| BRICK1_VALID_SHIFTS | `uint8` | 0 | | +| BRICK1_VALID_MASK | `uint8` | 1 | | +| BRICK2_VALID_SHIFTS | `uint8` | 1 | | +| BRICK2_VALID_MASK | `uint8` | 2 | | +| BRICK3_VALID_SHIFTS | `uint8` | 2 | | +| BRICK3_VALID_MASK | `uint8` | 4 | | +| BRICK4_VALID_SHIFTS | `uint8` | 3 | | +| BRICK4_VALID_MASK | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SystemPower.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -26,5 +69,6 @@ uint8 BRICK3_VALID_SHIFTS=2 uint8 BRICK3_VALID_MASK=4 uint8 BRICK4_VALID_SHIFTS=3 uint8 BRICK4_VALID_MASK=8 - ``` + +::: diff --git a/docs/zh/msg_docs/TakeoffStatus.md b/docs/zh/msg_docs/TakeoffStatus.md index 45540a74b4..075f3a8ae4 100644 --- a/docs/zh/msg_docs/TakeoffStatus.md +++ b/docs/zh/msg_docs/TakeoffStatus.md @@ -1,8 +1,38 @@ +--- +pageClass: is-wide-page +--- + # TakeoffStatus (UORB message) -Status of the takeoff state machine currently just available for multicopters +Status of the takeoff state machine currently just available for multicopters. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TakeoffStatus.msg) +**TOPICS:** takeoff_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| takeoff_state | `uint8` | | | | +| tilt_limit | `float32` | | | limited tilt feasibility during takeoff, contains maximum tilt otherwise | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | - | -- | +| TAKEOFF_STATE_UNINITIALIZED | `uint8` | 0 | | +| TAKEOFF_STATE_DISARMED | `uint8` | 1 | | +| TAKEOFF_STATE_SPOOLUP | `uint8` | 2 | | +| TAKEOFF_STATE_READY_FOR_TAKEOFF | `uint8` | 3 | | +| TAKEOFF_STATE_RAMPUP | `uint8` | 4 | | +| TAKEOFF_STATE_FLIGHT | `uint8` | 5 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TakeoffStatus.msg) + +:::details +Click here to see original file ```c # Status of the takeoff state machine currently just available for multicopters @@ -19,5 +49,6 @@ uint8 TAKEOFF_STATE_FLIGHT = 5 uint8 takeoff_state float32 tilt_limit # limited tilt feasibility during takeoff, contains maximum tilt otherwise - ``` + +::: diff --git a/docs/zh/msg_docs/TaskStackInfo.md b/docs/zh/msg_docs/TaskStackInfo.md index fde6ed7585..b640e52e9f 100644 --- a/docs/zh/msg_docs/TaskStackInfo.md +++ b/docs/zh/msg_docs/TaskStackInfo.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # TaskStackInfo (UORB message) -stack information for a single running process +stack information for a single running process. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TaskStackInfo.msg) +**TOPICS:** task_stackinfo + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| stack_free | `uint16` | | | | +| task_name | `char[24]` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | - | -- | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TaskStackInfo.msg) + +:::details +Click here to see original file ```c # stack information for a single running process @@ -13,5 +38,6 @@ uint16 stack_free char[24] task_name uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/zh/msg_docs/TecsStatus.md b/docs/zh/msg_docs/TecsStatus.md index ce79ad1b7b..7a27255a5d 100644 --- a/docs/zh/msg_docs/TecsStatus.md +++ b/docs/zh/msg_docs/TecsStatus.md @@ -1,6 +1,47 @@ +--- +pageClass: is-wide-page +--- + # TecsStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TecsStatus.msg) +**TOPICS:** tecs_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| altitude_sp | `float32` | | | Altitude setpoint AMSL [m] | +| altitude_reference | `float32` | | | Altitude setpoint reference AMSL [m] | +| altitude_time_constant | `float32` | | | Time constant of the altitude tracker [s] | +| height_rate_reference | `float32` | | | Height rate setpoint reference [m/s] | +| height_rate_direct | `float32` | | | Direct height rate setpoint from velocity reference generator [m/s] | +| height_rate_setpoint | `float32` | | | Height rate setpoint [m/s] | +| height_rate | `float32` | | | Height rate [m/s] | +| equivalent_airspeed_sp | `float32` | | | Equivalent airspeed setpoint [m/s] | +| true_airspeed_sp | `float32` | | | True airspeed setpoint [m/s] | +| true_airspeed_filtered | `float32` | | | True airspeed filtered [m/s] | +| true_airspeed_derivative_sp | `float32` | | | True airspeed derivative setpoint [m/s^2] | +| true_airspeed_derivative | `float32` | | | True airspeed derivative [m/s^2] | +| true_airspeed_derivative_raw | `float32` | | | True airspeed derivative raw [m/s^2] | +| total_energy_rate_sp | `float32` | | | Total energy rate setpoint [m^2/s^3] | +| total_energy_rate | `float32` | | | Total energy rate estimate [m^2/s^3] | +| total_energy_balance_rate_sp | `float32` | | | Energy balance rate setpoint [m^2/s^3] | +| total_energy_balance_rate | `float32` | | | Energy balance rate estimate [m^2/s^3] | +| throttle_integ | `float32` | | | Throttle integrator value [-] | +| pitch_integ | `float32` | | | Pitch integrator value [rad] | +| throttle_sp | `float32` | | | Current throttle setpoint [-] | +| pitch_sp_rad | `float32` | | | Current pitch setpoint [rad] | +| throttle_trim | `float32` | | | estimated throttle value [0,1] required to fly level at equivalent_airspeed_sp in the current atmospheric conditions | +| underspeed_ratio | `float32` | | | 0: no underspeed, 1: maximal underspeed. Controller takes measures to avoid stall proportional to ratio if >0. | +| fast_descend_ratio | `float32` | | | value indicating if fast descend mode is enabled with ramp up and ramp down [0-1] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TecsStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -34,5 +75,6 @@ float32 throttle_trim # estimated throttle value [0,1] required to fly level a float32 underspeed_ratio # 0: no underspeed, 1: maximal underspeed. Controller takes measures to avoid stall proportional to ratio if >0. float32 fast_descend_ratio # value indicating if fast descend mode is enabled with ramp up and ramp down [0-1] - ``` + +::: diff --git a/docs/zh/msg_docs/TelemetryStatus.md b/docs/zh/msg_docs/TelemetryStatus.md index 1d12591375..744dcb606a 100644 --- a/docs/zh/msg_docs/TelemetryStatus.md +++ b/docs/zh/msg_docs/TelemetryStatus.md @@ -1,6 +1,71 @@ +--- +pageClass: is-wide-page +--- + # TelemetryStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TelemetryStatus.msg) +**TOPICS:** telemetry_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| type | `uint8` | | | type of the radio hardware (LINK_TYPE_\*) | +| mode | `uint8` | | | | +| flow_control | `bool` | | | | +| forwarding | `bool` | | | | +| mavlink_v2 | `bool` | | | | +| ftp | `bool` | | | | +| streams | `uint8` | | | | +| data_rate | `float32` | | | configured maximum data rate (Bytes/s) | +| rate_multiplier | `float32` | | | | +| tx_rate_avg | `float32` | | | transmit rate average (Bytes/s) | +| tx_error_rate_avg | `float32` | | | transmit error rate average (Bytes/s) | +| tx_message_count | `uint32` | | | total message sent count | +| tx_buffer_overruns | `uint32` | | | number of TX buffer overruns | +| rx_rate_avg | `float32` | | | transmit rate average (Bytes/s) | +| rx_message_count | `uint32` | | | count of total messages received | +| rx_message_lost_count | `uint32` | | | | +| rx_buffer_overruns | `uint32` | | | number of RX buffer overruns | +| rx_parse_errors | `uint32` | | | number of parse errors | +| rx_packet_drop_count | `uint32` | | | number of packet drops | +| rx_message_lost_rate | `float32` | | | | +| heartbeat_type_antenna_tracker | `bool` | | | MAV_TYPE_ANTENNA_TRACKER | +| heartbeat_type_gcs | `bool` | | | MAV_TYPE_GCS | +| heartbeat_type_onboard_controller | `bool` | | | MAV_TYPE_ONBOARD_CONTROLLER | +| heartbeat_type_gimbal | `bool` | | | MAV_TYPE_GIMBAL | +| heartbeat_type_adsb | `bool` | | | MAV_TYPE_ADSB | +| heartbeat_type_camera | `bool` | | | MAV_TYPE_CAMERA | +| heartbeat_type_parachute | `bool` | | | MAV_TYPE_PARACHUTE | +| heartbeat_type_open_drone_id | `bool` | | | MAV_TYPE_ODID | +| heartbeat_component_telemetry_radio | `bool` | | | MAV_COMP_ID_TELEMETRY_RADIO | +| heartbeat_component_log | `bool` | | | MAV_COMP_ID_LOG | +| heartbeat_component_osd | `bool` | | | MAV_COMP_ID_OSD | +| heartbeat_component_vio | `bool` | | | MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY | +| heartbeat_component_pairing_manager | `bool` | | | MAV_COMP_ID_PAIRING_MANAGER | +| heartbeat_component_udp_bridge | `bool` | | | MAV_COMP_ID_UDP_BRIDGE | +| heartbeat_component_uart_bridge | `bool` | | | MAV_COMP_ID_UART_BRIDGE | +| open_drone_id_system_healthy | `bool` | | | | +| parachute_system_healthy | `bool` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ---------------------------------------------------------------------------------------------------------------------------------- | -------- | ------- | ------------------------------------------------------------------ | +| LINK_TYPE_GENERIC | `uint8` | 0 | | +| LINK_TYPE_UBIQUITY_BULLET | `uint8` | 1 | | +| LINK_TYPE_WIRE | `uint8` | 2 | | +| LINK_TYPE_USB | `uint8` | 3 | | +| LINK_TYPE_IRIDIUM | `uint8` | 4 | | +| HEARTBEAT_TIMEOUT_US | `uint64` | 2500000 | Heartbeat timeout (tolerate missing 1 + jitter) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TelemetryStatus.msg) + +:::details +Click here to see original file ```c uint8 LINK_TYPE_GENERIC = 0 @@ -64,5 +129,6 @@ bool heartbeat_component_uart_bridge # MAV_COMP_ID_UART_BRIDGE # Misc component health bool open_drone_id_system_healthy bool parachute_system_healthy - ``` + +::: diff --git a/docs/zh/msg_docs/TiltrotorExtraControls.md b/docs/zh/msg_docs/TiltrotorExtraControls.md index 461e16e1a0..25426445f9 100644 --- a/docs/zh/msg_docs/TiltrotorExtraControls.md +++ b/docs/zh/msg_docs/TiltrotorExtraControls.md @@ -1,11 +1,31 @@ +--- +pageClass: is-wide-page +--- + # TiltrotorExtraControls (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TiltrotorExtraControls.msg) +**TOPICS:** tiltrotor_extracontrols + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| collective_tilt_normalized_setpoint | `float32` | | | Collective tilt angle of motors of tiltrotor, 0: vertical, 1: horizontal [0, 1] | +| collective_thrust_normalized_setpoint | `float32` | | | Collective thrust setpoint [0, 1] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TiltrotorExtraControls.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) float32 collective_tilt_normalized_setpoint # Collective tilt angle of motors of tiltrotor, 0: vertical, 1: horizontal [0, 1] float32 collective_thrust_normalized_setpoint # Collective thrust setpoint [0, 1] - ``` + +::: diff --git a/docs/zh/msg_docs/TimesyncStatus.md b/docs/zh/msg_docs/TimesyncStatus.md index 96ff9258be..c472101720 100644 --- a/docs/zh/msg_docs/TimesyncStatus.md +++ b/docs/zh/msg_docs/TimesyncStatus.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # TimesyncStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TimesyncStatus.msg) +**TOPICS:** timesync_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| source_protocol | `uint8` | | | timesync source | +| remote_timestamp | `uint64` | | | remote system timestamp (microseconds) | +| observed_offset | `int64` | | | raw time offset directly observed from this timesync packet (microseconds) | +| estimated_offset | `int64` | | | smoothed time offset between companion system and PX4 (microseconds) | +| round_trip_time | `uint32` | | | round trip time of this timesync packet (microseconds) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| --------------------------------------------------------------------------------------------------------- | ------- | - | -- | +| SOURCE_PROTOCOL_UNKNOWN | `uint8` | 0 | | +| SOURCE_PROTOCOL_MAVLINK | `uint8` | 1 | | +| SOURCE_PROTOCOL_DDS | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TimesyncStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +44,6 @@ uint64 remote_timestamp # remote system timestamp (microseconds) int64 observed_offset # raw time offset directly observed from this timesync packet (microseconds) int64 estimated_offset # smoothed time offset between companion system and PX4 (microseconds) uint32 round_trip_time # round trip time of this timesync packet (microseconds) - ``` + +::: diff --git a/docs/zh/msg_docs/TrajectorySetpoint.md b/docs/zh/msg_docs/TrajectorySetpoint.md index 06e44bcf11..a5c2dc56b5 100644 --- a/docs/zh/msg_docs/TrajectorySetpoint.md +++ b/docs/zh/msg_docs/TrajectorySetpoint.md @@ -1,11 +1,37 @@ +--- +pageClass: is-wide-page +--- + # TrajectorySetpoint (UORB message) -Trajectory setpoint in NED frame -Input to PID position controller. -Needs to be kinematically consistent and feasible for smooth flight. -setting a value to NaN means the state should not be controlled +Trajectory setpoint in NED frame. Input to PID position controller. Needs to be kinematically consistent and feasible for smooth flight. setting a value to NaN means the state should not be controlled. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/TrajectorySetpoint.msg) +**TOPICS:** trajectory_setpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------ | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| 位置 | `float32[3]` | | | in meters | +| 速度 | `float32[3]` | | | in meters/second | +| acceleration | `float32[3]` | | | in meters/second^2 | +| jerk | `float32[3]` | | | in meters/second^3 (for logging only) | +| yaw | `float32` | | | euler angle of desired attitude in radians -PI..+PI | +| yawspeed | `float32` | | | angular velocity around NED frame z-axis in radians/second | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/TrajectorySetpoint.msg) + +:::details +Click here to see original file ```c # Trajectory setpoint in NED frame @@ -25,5 +51,6 @@ float32[3] jerk # in meters/second^3 (for logging only) float32 yaw # euler angle of desired attitude in radians -PI..+PI float32 yawspeed # angular velocity around NED frame z-axis in radians/second - ``` + +::: diff --git a/docs/zh/msg_docs/TrajectorySetpoint6dof.md b/docs/zh/msg_docs/TrajectorySetpoint6dof.md index f2629e19c4..50604b4016 100644 --- a/docs/zh/msg_docs/TrajectorySetpoint6dof.md +++ b/docs/zh/msg_docs/TrajectorySetpoint6dof.md @@ -1,9 +1,31 @@ +--- +pageClass: is-wide-page +--- + # TrajectorySetpoint6dof (UORB message) -Trajectory setpoint in NED frame -Input to position controller. +Trajectory setpoint in NED frame. Input to position controller. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TrajectorySetpoint6dof.msg) +**TOPICS:** trajectory_setpoint6dof + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| 位置 | `float32[3]` | | | in meters | +| 速度 | `float32[3]` | | | in meters/second | +| acceleration | `float32[3]` | | | in meters/second^2 | +| jerk | `float32[3]` | | | in meters/second^3 (for logging only) | +| quaternion | `float32[4]` | | | unit quaternion | +| angular_velocity | `float32[3]` | | | angular velocity in radians/second | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TrajectorySetpoint6dof.msg) + +:::details +Click here to see original file ```c # Trajectory setpoint in NED frame @@ -19,5 +41,6 @@ float32[3] jerk # in meters/second^3 (for logging only) float32[4] quaternion # unit quaternion float32[3] angular_velocity # angular velocity in radians/second - ``` + +::: diff --git a/docs/zh/msg_docs/TransponderReport.md b/docs/zh/msg_docs/TransponderReport.md index 9bab882b02..caabb760bd 100644 --- a/docs/zh/msg_docs/TransponderReport.md +++ b/docs/zh/msg_docs/TransponderReport.md @@ -1,6 +1,71 @@ +--- +pageClass: is-wide-page +--- + # TransponderReport (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TransponderReport.msg) +**TOPICS:** transponder_report + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| icao_address | `uint32` | | | ICAO address | +| lat | `float64` | | | Latitude, expressed as degrees | +| lon | `float64` | | | Longitude, expressed as degrees | +| altitude_type | `uint8` | | | Type from ADSB_ALTITUDE_TYPE enum | +| altitude | `float32` | | | Altitude(ASL) in meters | +| heading | `float32` | | | Course over ground in radians, 0 to 2pi, 0 is north | +| hor_velocity | `float32` | | | The horizontal velocity in m/s | +| ver_velocity | `float32` | | | The vertical velocity in m/s, positive is up | +| callsign | `char[9]` | | | The callsign, 8+null | +| emitter_type | `uint8` | | | Type from ADSB_EMITTER_TYPE enum | +| tslc | `uint8` | | | Time since last communication in seconds | +| flags | `uint16` | | | Flags to indicate various statuses including valid data fields | +| squawk | `uint16` | | | Squawk code | +| uas_id | `uint8[18]` | | | Unique UAS ID | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | --- | -- | +| PX4_ADSB_FLAGS_VALID_COORDS | `uint16` | 1 | | +| PX4_ADSB_FLAGS_VALID_ALTITUDE | `uint16` | 2 | | +| PX4_ADSB_FLAGS_VALID_HEADING | `uint16` | 4 | | +| PX4_ADSB_FLAGS_VALID_VELOCITY | `uint16` | 8 | | +| PX4_ADSB_FLAGS_VALID_CALLSIGN | `uint16` | 16 | | +| PX4_ADSB_FLAGS_VALID_SQUAWK | `uint16` | 32 | | +| PX4_ADSB_FLAGS_RETRANSLATE | `uint16` | 256 | | +| ADSB_EMITTER_TYPE_NO_INFO | `uint16` | 0 | | +| ADSB_EMITTER_TYPE_LIGHT | `uint16` | 1 | | +| ADSB_EMITTER_TYPE_SMALL | `uint16` | 2 | | +| ADSB_EMITTER_TYPE_LARGE | `uint16` | 3 | | +| ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE | `uint16` | 4 | | +| ADSB_EMITTER_TYPE_HEAVY | `uint16` | 5 | | +| ADSB_EMITTER_TYPE_HIGHLY_MANUV | `uint16` | 6 | | +| ADSB_EMITTER_TYPE_ROTOCRAFT | `uint16` | 7 | | +| ADSB_EMITTER_TYPE_UNASSIGNED | `uint16` | 8 | | +| ADSB_EMITTER_TYPE_GLIDER | `uint16` | 9 | | +| ADSB_EMITTER_TYPE_LIGHTER_AIR | `uint16` | 10 | | +| ADSB_EMITTER_TYPE_PARACHUTE | `uint16` | 11 | | +| ADSB_EMITTER_TYPE_ULTRA_LIGHT | `uint16` | 12 | | +| ADSB_EMITTER_TYPE_UNASSIGNED2 | `uint16` | 13 | | +| ADSB_EMITTER_TYPE_UAV | `uint16` | 14 | | +| ADSB_EMITTER_TYPE_SPACE | `uint16` | 15 | | +| ADSB_EMITTER_TYPE_UNASSGINED3 | `uint16` | 16 | | +| ADSB_EMITTER_TYPE_EMERGENCY_SURFACE | `uint16` | 17 | | +| ADSB_EMITTER_TYPE_SERVICE_SURFACE | `uint16` | 18 | | +| ADSB_EMITTER_TYPE_POINT_OBSTACLE | `uint16` | 19 | | +| ADSB_EMITTER_TYPE_ENUM_END | `uint16` | 20 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TransponderReport.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -53,5 +118,6 @@ uint16 ADSB_EMITTER_TYPE_POINT_OBSTACLE=19 uint16 ADSB_EMITTER_TYPE_ENUM_END=20 uint8 ORB_QUEUE_LENGTH = 16 - ``` + +::: diff --git a/docs/zh/msg_docs/TuneControl.md b/docs/zh/msg_docs/TuneControl.md index b6e96771ad..517da9a693 100644 --- a/docs/zh/msg_docs/TuneControl.md +++ b/docs/zh/msg_docs/TuneControl.md @@ -1,9 +1,61 @@ +--- +pageClass: is-wide-page +--- + # TuneControl (UORB message) -This message is used to control the tunes, when the tune_id is set to CUSTOM -then the frequency, duration are used otherwise those values are ignored. +This message is used to control the tunes, when the tune_id is set to CUSTOM. then the frequency, duration are used otherwise those values are ignored. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TuneControl.msg) +**TOPICS:** tune_control + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| tune_id | `uint8` | | | tune_id corresponding to TuneID::\* from the tune_defaults.h in the tunes library | +| tune_override | `bool` | | | if true the tune which is playing will be stopped and the new started | +| frequency | `uint16` | | | in Hz | +| duration | `uint32` | | | in us | +| silence | `uint32` | | | in us | +| volume | `uint8` | | | value between 0-100 if supported by backend | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | --- | -- | +| TUNE_ID_STOP | `uint8` | 0 | | +| TUNE_ID_STARTUP | `uint8` | 1 | | +| TUNE_ID_ERROR | `uint8` | 2 | | +| TUNE_ID_NOTIFY_POSITIVE | `uint8` | 3 | | +| TUNE_ID_NOTIFY_NEUTRAL | `uint8` | 4 | | +| TUNE_ID_NOTIFY_NEGATIVE | `uint8` | 5 | | +| TUNE_ID_ARMING_WARNING | `uint8` | 6 | | +| TUNE_ID_BATTERY_WARNING_SLOW | `uint8` | 7 | | +| TUNE_ID_BATTERY_WARNING_FAST | `uint8` | 8 | | +| TUNE_ID_GPS_WARNING | `uint8` | 9 | | +| TUNE_ID_ARMING_FAILURE | `uint8` | 10 | | +| TUNE_ID_PARACHUTE_RELEASE | `uint8` | 11 | | +| TUNE_ID_SINGLE_BEEP | `uint8` | 12 | | +| TUNE_ID_HOME_SET | `uint8` | 13 | | +| TUNE_ID_SD_INIT | `uint8` | 14 | | +| TUNE_ID_SD_ERROR | `uint8` | 15 | | +| TUNE_ID_PROG_PX4IO | `uint8` | 16 | | +| TUNE_ID_PROG_PX4IO_OK | `uint8` | 17 | | +| TUNE_ID_PROG_PX4IO_ERR | `uint8` | 18 | | +| TUNE_ID_POWER_OFF | `uint8` | 19 | | +| NUMBER_OF_TUNES | `uint8` | 20 | | +| VOLUME_LEVEL_MIN | `uint8` | 0 | | +| VOLUME_LEVEL_DEFAULT | `uint8` | 20 | | +| VOLUME_LEVEL_MAX | `uint8` | 100 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TuneControl.msg) + +:::details +Click here to see original file ```c # This message is used to control the tunes, when the tune_id is set to CUSTOM @@ -45,5 +97,6 @@ uint8 VOLUME_LEVEL_DEFAULT = 20 uint8 VOLUME_LEVEL_MAX = 100 uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/zh/msg_docs/UavcanParameterRequest.md b/docs/zh/msg_docs/UavcanParameterRequest.md index 681c8aa8c9..ec6c5e65e1 100644 --- a/docs/zh/msg_docs/UavcanParameterRequest.md +++ b/docs/zh/msg_docs/UavcanParameterRequest.md @@ -1,8 +1,45 @@ +--- +pageClass: is-wide-page +--- + # UavcanParameterRequest (UORB message) -UAVCAN-MAVLink parameter bridge request type +UAVCAN-MAVLink parameter bridge request type. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UavcanParameterRequest.msg) +**TOPICS:** uavcan_parameterrequest + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| message_type | `uint8` | | | MAVLink message type: PARAM_REQUEST_READ, PARAM_REQUEST_LIST, PARAM_SET | +| node_id | `uint8` | | | UAVCAN node ID mapped from MAVLink component ID | +| param_id | `char[17]` | | | MAVLink/UAVCAN parameter name | +| param_index | `int16` | | | -1 if the param_id field should be used as identifier | +| param_type | `uint8` | | | MAVLink parameter type | +| int_value | `int64` | | | current value if param_type is int-like | +| real_value | `float32` | | | current value if param_type is float-like | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| MESSAGE_TYPE_PARAM_REQUEST_READ | `uint8` | 20 | MAVLINK_MSG_ID_PARAM_REQUEST_READ | +| MESSAGE_TYPE_PARAM_REQUEST_LIST | `uint8` | 21 | MAVLINK_MSG_ID_PARAM_REQUEST_LIST | +| MESSAGE_TYPE_PARAM_SET | `uint8` | 23 | MAVLINK_MSG_ID_PARAM_SET | +| NODE_ID_ALL | `uint8` | 0 | MAV_COMP_ID_ALL | +| PARAM_TYPE_UINT8 | `uint8` | 1 | MAV_PARAM_TYPE_UINT8 | +| PARAM_TYPE_INT64 | `uint8` | 8 | MAV_PARAM_TYPE_INT64 | +| PARAM_TYPE_REAL32 | `uint8` | 9 | MAV_PARAM_TYPE_REAL32 | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UavcanParameterRequest.msg) + +:::details +Click here to see original file ```c # UAVCAN-MAVLink parameter bridge request type @@ -28,5 +65,6 @@ int64 int_value # current value if param_type is int-like float32 real_value # current value if param_type is float-like uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/zh/msg_docs/UavcanParameterValue.md b/docs/zh/msg_docs/UavcanParameterValue.md index f77444727a..bca3946c73 100644 --- a/docs/zh/msg_docs/UavcanParameterValue.md +++ b/docs/zh/msg_docs/UavcanParameterValue.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # UavcanParameterValue (UORB message) -UAVCAN-MAVLink parameter bridge response type +UAVCAN-MAVLink parameter bridge response type. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UavcanParameterValue.msg) +**TOPICS:** uavcan_parametervalue + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| node_id | `uint8` | | | UAVCAN node ID mapped from MAVLink component ID | +| param_id | `char[17]` | | | MAVLink/UAVCAN parameter name | +| param_index | `int16` | | | parameter index, if known | +| param_count | `uint16` | | | number of parameters exposed by the node | +| param_type | `uint8` | | | MAVLink parameter type | +| int_value | `int64` | | | current value if param_type is int-like | +| real_value | `float32` | | | current value if param_type is float-like | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UavcanParameterValue.msg) + +:::details +Click here to see original file ```c # UAVCAN-MAVLink parameter bridge response type @@ -14,5 +38,6 @@ uint16 param_count # number of parameters exposed by the node uint8 param_type # MAVLink parameter type int64 int_value # current value if param_type is int-like float32 real_value # current value if param_type is float-like - ``` + +::: diff --git a/docs/zh/msg_docs/UlogStream.md b/docs/zh/msg_docs/UlogStream.md index 8aba8063c8..b65cd15656 100644 --- a/docs/zh/msg_docs/UlogStream.md +++ b/docs/zh/msg_docs/UlogStream.md @@ -1,9 +1,37 @@ +--- +pageClass: is-wide-page +--- + # UlogStream (UORB message) -Message to stream ULog data from the logger. Corresponds to the LOGGING_DATA -mavlink message +Message to stream ULog data from the logger. Corresponds to the LOGGING_DATA. mavlink message. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UlogStream.msg) +**TOPICS:** ulog_stream + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| length | `uint8` | | | length of data | +| first_message_offset | `uint8` | | | offset into data where first message starts. This | +| msg_sequence | `uint16` | | | allows determine drops | +| flags | `uint8` | | | see FLAGS\_\* | +| data | `uint8[249]` | | | ulog data | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------- | ------- | -- | ------------------------------------------------------------------------------------ | +| FLAGS_NEED_ACK | `uint8` | 1 | if set, this message requires to be acked. | +| ORB_QUEUE_LENGTH | `uint8` | 16 | TODO: we might be able to reduce this if mavlink polled on the topic | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UlogStream.msg) + +:::details +Click here to see original file ```c # Message to stream ULog data from the logger. Corresponds to the LOGGING_DATA @@ -25,5 +53,6 @@ uint8 flags # see FLAGS_* uint8[249] data # ulog data uint8 ORB_QUEUE_LENGTH = 16 # TODO: we might be able to reduce this if mavlink polled on the topic - ``` + +::: diff --git a/docs/zh/msg_docs/UlogStreamAck.md b/docs/zh/msg_docs/UlogStreamAck.md index 4bef62c4f5..67aebcb665 100644 --- a/docs/zh/msg_docs/UlogStreamAck.md +++ b/docs/zh/msg_docs/UlogStreamAck.md @@ -1,9 +1,33 @@ +--- +pageClass: is-wide-page +--- + # UlogStreamAck (UORB message) -Ack a previously sent ulog_stream message that had -the NEED_ACK flag set +Ack a previously sent ulog_stream message that had. the NEED_ACK flag set. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UlogStreamAck.msg) +**TOPICS:** ulog_streamack + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| msg_sequence | `uint16` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------- | ------- | -- | ------------------------------------------------------------------------------------------------------------------------ | +| ACK_TIMEOUT | `int32` | 50 | timeout waiting for an ack until we retry to send the message [ms] | +| ACK_MAX_TRIES | `int32` | 50 | maximum amount of tries to (re-)send a message, each time waiting ACK_TIMEOUT ms | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UlogStreamAck.msg) + +:::details +Click here to see original file ```c # Ack a previously sent ulog_stream message that had @@ -14,5 +38,6 @@ int32 ACK_TIMEOUT = 50 # timeout waiting for an ack until we retry to send the int32 ACK_MAX_TRIES = 50 # maximum amount of tries to (re-)send a message, each time waiting ACK_TIMEOUT ms uint16 msg_sequence - ``` + +::: diff --git a/docs/zh/msg_docs/UnregisterExtComponent.md b/docs/zh/msg_docs/UnregisterExtComponent.md index b09ea24d43..b32876a9cb 100644 --- a/docs/zh/msg_docs/UnregisterExtComponent.md +++ b/docs/zh/msg_docs/UnregisterExtComponent.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # UnregisterExtComponent (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/UnregisterExtComponent.msg) +**TOPICS:** unregister_extcomponent + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| name | `char[25]` | | | either the mode name, or component name | +| arming_check_id | `int8` | | | arming check registration ID (-1 if not registered) | +| mode_id | `int8` | | | assigned mode ID (-1 if not registered) | +| mode_executor_id | `int8` | | | assigned mode executor ID (-1 if not registered) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/UnregisterExtComponent.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -12,5 +39,6 @@ char[25] name # either the mode name, or component name int8 arming_check_id # arming check registration ID (-1 if not registered) int8 mode_id # assigned mode ID (-1 if not registered) int8 mode_executor_id # assigned mode executor ID (-1 if not registered) - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleAcceleration.md b/docs/zh/msg_docs/VehicleAcceleration.md index ea20cad6a9..b57b3458ce 100644 --- a/docs/zh/msg_docs/VehicleAcceleration.md +++ b/docs/zh/msg_docs/VehicleAcceleration.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # VehicleAcceleration (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAcceleration.msg) +**TOPICS:** vehicle_acceleration + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| xyz | `float32[3]` | | | Bias corrected acceleration (including gravity) in the FRD body frame XYZ-axis in m/s^2 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAcceleration.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint64 timestamp_sample # the timestamp of the raw data (microseconds) float32[3] xyz # Bias corrected acceleration (including gravity) in the FRD body frame XYZ-axis in m/s^2 - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleAirData.md b/docs/zh/msg_docs/VehicleAirData.md index dccfefc095..50c31a329a 100644 --- a/docs/zh/msg_docs/VehicleAirData.md +++ b/docs/zh/msg_docs/VehicleAirData.md @@ -1,11 +1,36 @@ +--- +pageClass: is-wide-page +--- + # VehicleAirData (UORB message) -Vehicle air data +Vehicle air data. Data from the currently selected barometer (plus ambient temperature from the source specified in temperature_source). Includes calculated data such as barometric altitude and air density. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAirData.msg) +**TOPICS:** vehicle_airdata + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp of the raw data | +| baro_device_id | `uint32` | | | Unique device ID for the selected barometer | +| baro_alt_meter | `float32` | m [MSL] | | Altitude above MSL calculated from temperature compensated baro sensor data using an ISA corrected for sea level pressure SENS_BARO_QNH | +| baro_pressure_pa | `float32` | Pa | | Absolute pressure | +| ambient_temperature | `float32` | degC | | Ambient temperature | +| temperature_source | `uint8` | | | Source of temperature data: 0: Default Temperature (15°C), 1: External Baro, 2: Airspeed | +| rho | `float32` | kg/m^3 | | Air density | +| calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever calibration changes. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAirData.msg) + +:::details +Click here to see original file ```c # Vehicle air data @@ -22,5 +47,6 @@ float32 ambient_temperature # [degC] Ambient temperature uint8 temperature_source # Source of temperature data: 0: Default Temperature (15°C), 1: External Baro, 2: Airspeed float32 rho # [kg/m^3] Air density uint8 calibration_count # Calibration changed counter. Monotonically increases whenever calibration changes. - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleAngularAccelerationSetpoint.md b/docs/zh/msg_docs/VehicleAngularAccelerationSetpoint.md index 3caa12669e..42d8113ce3 100644 --- a/docs/zh/msg_docs/VehicleAngularAccelerationSetpoint.md +++ b/docs/zh/msg_docs/VehicleAngularAccelerationSetpoint.md @@ -1,12 +1,31 @@ +--- +pageClass: is-wide-page +--- + # VehicleAngularAccelerationSetpoint (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAngularAccelerationSetpoint.msg) +**TOPICS:** vehicle_angularacceleration_setpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | timestamp of the data sample on which this message is based (microseconds) | +| xyz | `float32[3]` | | | angular acceleration about X, Y, Z body axis in rad/s^2 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAngularAccelerationSetpoint.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint64 timestamp_sample # timestamp of the data sample on which this message is based (microseconds) float32[3] xyz # angular acceleration about X, Y, Z body axis in rad/s^2 - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleAngularVelocity.md b/docs/zh/msg_docs/VehicleAngularVelocity.md index fb05ad0f51..78ac217f48 100644 --- a/docs/zh/msg_docs/VehicleAngularVelocity.md +++ b/docs/zh/msg_docs/VehicleAngularVelocity.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # VehicleAngularVelocity (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAngularVelocity.msg) +**TOPICS:** vehicle_angular_velocity vehicle_angular_velocity_groundtruth + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | timestamp of the data sample on which this message is based (microseconds) | +| xyz | `float32[3]` | | | Bias corrected angular velocity about the FRD body frame XYZ-axis in rad/s | +| xyz_derivative | `float32[3]` | | | angular acceleration about the FRD body frame XYZ-axis in rad/s^2 | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAngularVelocity.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -13,5 +39,6 @@ float32[3] xyz # Bias corrected angular velocity about the FRD body frame XYZ float32[3] xyz_derivative # angular acceleration about the FRD body frame XYZ-axis in rad/s^2 # TOPICS vehicle_angular_velocity vehicle_angular_velocity_groundtruth - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleAttitude.md b/docs/zh/msg_docs/VehicleAttitude.md index 856fe6d5a6..6e02785b7c 100644 --- a/docs/zh/msg_docs/VehicleAttitude.md +++ b/docs/zh/msg_docs/VehicleAttitude.md @@ -1,9 +1,35 @@ +--- +pageClass: is-wide-page +--- + # VehicleAttitude (UORB message) -This is similar to the mavlink message ATTITUDE_QUATERNION, but for onboard use -The quaternion uses the Hamilton convention, and the order is q(w, x, y, z) +This is similar to the mavlink message ATTITUDE_QUATERNION, but for onboard use. The quaternion uses the Hamilton convention, and the order is q(w, x, y, z). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitude.msg) +**TOPICS:** vehicle_attitude vehicle_attitude_groundtruth external_ins_attitude estimator_attitude + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| q | `float32[4]` | | | Quaternion rotation from the FRD body frame to the NED earth frame | +| delta_q_reset | `float32[4]` | | | Amount by which quaternion has changed during last reset | +| quat_reset_counter | `uint8` | | | Quaternion reset counter | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitude.msg) + +:::details +Click here to see original file ```c # This is similar to the mavlink message ATTITUDE_QUATERNION, but for onboard use @@ -21,5 +47,6 @@ uint8 quat_reset_counter # Quaternion reset counter # TOPICS vehicle_attitude vehicle_attitude_groundtruth external_ins_attitude # TOPICS estimator_attitude - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleAttitudeSetpoint.md b/docs/zh/msg_docs/VehicleAttitudeSetpoint.md index 9cd9ba092b..3430b05149 100644 --- a/docs/zh/msg_docs/VehicleAttitudeSetpoint.md +++ b/docs/zh/msg_docs/VehicleAttitudeSetpoint.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # VehicleAttitudeSetpoint (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitudeSetpoint.msg) +**TOPICS:** vehicle_attitude_setpoint mc_virtual_attitude_setpoint fw_virtual_attitude_setpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| yaw_sp_move_rate | `float32` | | | rad/s (commanded by user) | +| q_d | `float32[4]` | | | Desired quaternion for quaternion control | +| thrust_body | `float32[3]` | | | Normalized thrust command in body FRD frame [-1,1] | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitudeSetpoint.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 1 @@ -17,5 +43,6 @@ float32[4] q_d # Desired quaternion for quaternion control float32[3] thrust_body # Normalized thrust command in body FRD frame [-1,1] # TOPICS vehicle_attitude_setpoint mc_virtual_attitude_setpoint fw_virtual_attitude_setpoint - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleAttitudeSetpointV0.md b/docs/zh/msg_docs/VehicleAttitudeSetpointV0.md index 6eb03e797c..26f12aefb0 100644 --- a/docs/zh/msg_docs/VehicleAttitudeSetpointV0.md +++ b/docs/zh/msg_docs/VehicleAttitudeSetpointV0.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # VehicleAttitudeSetpointV0 (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleAttitudeSetpointV0.msg) +**TOPICS:** vehicle_attitude_setpoint mc_virtual_attitude_setpoint fw_virtual_attitude_setpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| yaw_sp_move_rate | `float32` | | | rad/s (commanded by user) | +| q_d | `float32[4]` | | | Desired quaternion for quaternion control | +| thrust_body | `float32[3]` | | | Normalized thrust command in body FRD frame [-1,1] | +| reset_integral | `bool` | | | Reset roll/pitch/yaw integrals (navigation logic change) | +| fw_control_yaw_wheel | `bool` | | | control heading with steering wheel (used for auto takeoff on runway) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleAttitudeSetpointV0.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -21,5 +49,6 @@ bool reset_integral # Reset roll/pitch/yaw integrals (navigation logic change) bool fw_control_yaw_wheel # control heading with steering wheel (used for auto takeoff on runway) # TOPICS vehicle_attitude_setpoint mc_virtual_attitude_setpoint fw_virtual_attitude_setpoint - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleCommand.md b/docs/zh/msg_docs/VehicleCommand.md index 225f680857..26734bfe93 100644 --- a/docs/zh/msg_docs/VehicleCommand.md +++ b/docs/zh/msg_docs/VehicleCommand.md @@ -1,9 +1,1582 @@ +--- +pageClass: is-wide-page +--- + # VehicleCommand (UORB message) -Vehicle Command uORB message. Used for commanding a mission / action / etc. -Follows the MAVLink COMMAND_INT / COMMAND_LONG definition +Vehicle Command uORB message. Used for commanding a mission / action / etc. Follows the MAVLink COMMAND_INT / COMMAND_LONG definition. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleCommand.msg) +**TOPICS:** vehicle_command gimbal_v1_command vehicle_command_mode_executor + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start. | +| param1 | `float32` | | | Parameter 1, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param2 | `float32` | | | Parameter 2, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param3 | `float32` | | | Parameter 3, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param4 | `float32` | | | Parameter 4, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param5 | `float64` | | | Parameter 5, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param6 | `float64` | | | Parameter 6, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param7 | `float32` | | | Parameter 7, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| command | `uint32` | | | Command ID. | +| target_system | `uint8` | | | System which should execute the command. | +| target_component | `uint8` | | | Component which should execute the command, 0 for all components. | +| source_system | `uint8` | | | System sending the command. | +| source_component | `uint16` | | | Component / mode executor sending the command. | +| confirmation | `uint8` | | | 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command). | +| from_external | `bool` | | | | + +## Commands + +### VEHICLE_CMD_CUSTOM_0 (0) + +Test command. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_CUSTOM_1 (1) + +Test command. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_CUSTOM_2 (2) + +Test command. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_NAV_WAYPOINT (16) + +Navigate to MISSION. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | s | | (decimal) Hold time. (ignored by fixed wing, time to stay at MISSION for rotary wing) | +| 2 | 米 | | Acceptance radius (if the sphere with this radius is hit, the MISSION counts as reached) | +| 3 | | | 0 to pass through the WP, if > 0 radius [m] to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control. | +| 4 | | | Desired yaw angle at MISSION (rotary wing) | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_LOITER_UNLIM (17) + +Loiter around this MISSION an unlimited amount of time. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------------------------------------------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | 米 | | Radius around MISSION. If positive loiter clockwise, else counter-clockwise | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_LOITER_TURNS (18) + +Loiter around this MISSION for X turns. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | Turns | +| 2 | | | Unused | +| 3 | | | Radius around MISSION [m]. If positive loiter clockwise, else counter-clockwise | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_LOITER_TIME (19) + +Loiter around this MISSION for time. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | s | | Seconds (decimal) | +| 2 | | | Unused | +| 3 | | | Radius around MISSION [m]. If positive loiter clockwise, else counter-clockwise | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_RETURN_TO_LAUNCH (20) + +Return to launch location. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_NAV_LAND (21) + +Land at location. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ---------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_TAKEOFF (22) + +Takeoff from ground / hand. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | Unused (FW pitch from FW_TKO_PITCH_MIN) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | deg | [0 : 360] | Yaw angle in NED if yaw source available, ignored otherwise | +| 5 | | | Latitude (WGS-84) | +| 6 | | | Longitude (WGS-84) | +| 7 | 米 | | Altitude AMSL | + +### VEHICLE_CMD_NAV_PRECLAND (23) + +Attempt a precision landing. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_ORBIT (34) + +Start orbiting on the circumference of a circle defined by the parameters. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ------------------------------------------------------------------------------------- | ------------- | +| 1 | 米 | | Radius | +| 2 | 米/秒 | | Velocity | +| 3 | | [ORBIT_YAW_BEHAVIOUR](#ORBIT_YAW_BEHAVIOUR) | Yaw behaviour | +| 4 | | | Unused | +| 5 | | | Latitude/X | +| 6 | | | Longitude/Y | +| 7 | | | Altitude/Z | + +### VEHICLE_CMD_DO_FIGUREEIGHT (35) + +Start flying on the outline of a figure eight defined by the parameters. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------ | +| 1 | 米 | | Major radius | +| 2 | 米 | | Minor radius | +| 3 | 米/秒 | | Velocity | +| 4 | | | 安装方向 | +| 5 | | | Latitude/X | +| 6 | | | Longitude/Y | +| 7 | | | Altitude/Z | + +### 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. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------------- | +| 1 | | [VEHICLE_ROI](#VEHICLE_ROI) | Region of interest mode. | +| 2 | | | MISSION index/ target ID. | +| 3 | | | ROI index (allows a vehicle to manage multiple ROI's) | +| 4 | | | Unused | +| 5 | | | x the location of the fixed ROI (see MAV_FRAME) | +| 6 | | | y | +| 7 | | | z | + +### VEHICLE_CMD_NAV_PATHPLANNING (81) + +Control autonomous path planning on the MAV. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | | | 0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning | +| 2 | | | 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 | +| 3 | | | Unused | +| 4 | deg | [0 : 360] | Yaw angle at goal, in compass degrees | +| 5 | | | Latitude/X of goal | +| 6 | | | Longitude/Y of goal | +| 7 | | | Altitude/Z of goal | + +### VEHICLE_CMD_NAV_VTOL_TAKEOFF (84) + +Takeoff from ground / hand and transition to fixed wing. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | --------------------------------------------------------------------------------------------------- | +| 1 | | | Minimum pitch (if airspeed sensor present), desired pitch without sensor | +| 2 | | | Transition heading, 0: Default, 3: Use specified transition heading | +| 3 | | | Unused | +| 4 | | | Yaw angle (if magnetometer present), ignored without magnetometer | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_VTOL_LAND (85) + +Transition to MC and land at location. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ---------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_GUIDED_LIMITS (90) + +Set limits for external control. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | s | | Timeout - maximum time that external controller will be allowed to control vehicle. 0 means no timeout | +| 2 | 米 | | 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 | +| 3 | 米 | | 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 | +| 4 | 米 | | 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 | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_NAV_GUIDED_MASTER (91) + +Set id of master controller. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------ | +| 1 | | | System ID | +| 2 | | | Component ID | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_NAV_DELAY (93) + +Delay the next navigation command a number of seconds or until a specified time. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------------------------------------------- | +| 1 | s | | Delay (decimal, -1 to enable time-of-day fields) | +| 2 | h | | hour (24h format, UTC, -1 to ignore) | +| 3 | | | minute (24h format, UTC, -1 to ignore) | +| 4 | | | second (24h format, UTC) | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_NAV_LAST (95) + +NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_DELAY (112) + +Delay mission state machine. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------------------ | +| 1 | s | | Delay (decimal seconds) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_CHANGE_ALT (113) + +Ascend/descend at rate. Delay mission state machine until desired altitude reached. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ---------------------------------------------- | +| 1 | | | Descent / Ascend rate (m/s) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Finish Altitude | + +### VEHICLE_CMD_CONDITION_DISTANCE (114) + +Delay mission state machine until within desired distance of next NAV point. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ---------------------------------------------------------------- | +| 1 | | | Distance [m] | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_YAW (115) + +Reach a certain target angle. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| 1 | deg | [0 : 360] | Target angle. 0 is north | +| 2 | deg/s | | Speed during yaw change | +| 3 | | [-1 : 1] | Direction: negative: counter clockwise, positive: clockwise | +| 4 | 1,0 | | Relative offset or absolute angle | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_LAST (159) + +NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_GATE (4501) + +Wait until passing a threshold. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ----------------------------------------------------------------------------- | +| 1 | | | 2D coord mode: 0: Orthogonal to planned route | +| 2 | | | Altitude mode: 0: Ignore altitude | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Lat | +| 6 | | | Lon | +| 7 | | | Alt | + +### VEHICLE_CMD_DO_SET_MODE (176) + +Set system mode. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------------------------------ | +| 1 | | | Mode, as defined by ENUM MAV_MODE | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_JUMP (177) + +Jump to the desired command in the mission list. Repeat this action only the specified number of times. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | --------------- | +| 1 | | | Sequence number | +| 2 | | | Repeat count | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_CHANGE_SPEED (178) + +Change speed and/or throttle set points. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------------------------------------------- | -------------------------------------------------------------- | +| 1 | | [SPEED_TYPE](#SPEED_TYPE) | Speed type (0=Airspeed, 1=Ground Speed) | +| 2 | | | Speed (m/s, -1 indicates no change) | +| 3 | % | | Throttle ( Percent, -1 indicates no change) | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_HOME (179) + +Changes the home location either to the current location or a specified location. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | --------------------------------------------------------------------------------- | +| 1 | | | Use current (1=use current location, 0=use specified location) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_DO_SET_PARAMETER (180) + +Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ---------------- | +| 1 | | | Parameter number | +| 2 | | | Parameter value | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_RELAY (181) + +Set a relay to a condition. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -------------------------------------------------------------------------------------- | +| 1 | | | Relay number | +| 2 | | | Setting (1=on, 0=off, others possible depending on system hardware) | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_REPEAT_RELAY (182) + +Cycle a relay on and off for a desired number of cycles with a desired period. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ----------------------------------------------- | +| 1 | | | Relay number | +| 2 | | | Cycle count | +| 3 | s | | Cycle time (decimal seconds) | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_REPEAT_SERVO (184) + +Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -------------------------------------------------- | +| 1 | | | Servo number | +| 2 | us | | PWM rate (1000 to 2000 typical) | +| 3 | | | Cycle count | +| 4 | s | | Cycle time | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_FLIGHTTERMINATION (185) + +Terminate flight immediately. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ----------------------------------------------------- | +| 1 | | | Flight termination activated if > 0.5 | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_CHANGE_ALTITUDE (186) + +Set the vehicle to Loiter mode and change the altitude to specified value. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | --------------------- | +| 1 | | | Altitude | +| 2 | | | Frame of new altitude | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_ACTUATOR (187) + +Sets actuators (e.g. servos) to a desired value. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ---------- | +| 1 | | | Actuator 1 | +| 2 | | | Actuator 2 | +| 3 | | | Actuator 3 | +| 4 | | | Actuator 4 | +| 5 | | | Actuator 5 | +| 6 | | | Actuator 6 | +| 7 | | | Index | + +### VEHICLE_CMD_DO_LAND_START (189) + +Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | --------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_GO_AROUND (191) + +Mission command to safely abort an autonomous landing. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -------- | +| 1 | 米 | | Altitude | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_REPOSITION (192) + +Reposition to specific WGS84 GPS position. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------ | +| 1 | 米/秒 | | Ground speed | +| 2 | | | Bitmask | +| 3 | 米 | | Loiter radius for planes | +| 4 | deg | | Yaw | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_DO_PAUSE_CONTINUE (193) + +None + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_SET_ROI_LOCATION (195) + +Sets the region of interest (ROI) to a location. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | --------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_DO_SET_ROI_WPNEXT_OFFSET (196) + +Sets the region of interest (ROI) to be toward next waypoint, with optional pitch/roll/yaw offset. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Pitch offset from next waypoint | +| 6 | | | Roll offset from next waypoint | +| 7 | | | Yaw offset from next waypoint | + +### VEHICLE_CMD_DO_SET_ROI_NONE (197) + +Cancels any previous ROI command returning the vehicle/sensors to default flight characteristics. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_CONTROL_VIDEO (200) + +Control onboard camera system. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | Camera ID (-1 for all) | +| 2 | | | Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw | +| 3 | | | Transmission mode: 0: video stream, >0: single images every n seconds (decimal seconds) | +| 4 | | | Recording: 0: disabled, 1: enabled compressed, 2: enabled raw | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_ROI (201) + +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. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------------- | +| 1 | | [VEHICLE_ROI](#VEHICLE_ROI) | Region of interest mode. | +| 2 | | | MISSION index/ target ID. | +| 3 | | | ROI index (allows a vehicle to manage multiple ROI's) | +| 4 | | | Unused | +| 5 | | | x the location of the fixed ROI (see MAV_FRAME) | +| 6 | | | y | +| 7 | | | z | + +### VEHICLE_CMD_DO_DIGICAM_CONTROL (203) + +None + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_MOUNT_CONFIGURE (204) + +Mission command to configure a camera or antenna mount. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | --------------------------------------------------------------------------- | ----------------------------------------------------- | +| 1 | | [MAV_MOUNT_MODE](#MAV_MOUNT_MODE) | Mount operation mode | +| 2 | | | Stabilize roll? (1 = yes, 0 = no) | +| 3 | | | Stabilize pitch? (1 = yes, 0 = no) | +| 4 | | | stabilize yaw? (1 = yes, 0 = no) | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_MOUNT_CONTROL (205) + +Mission command to control a camera or antenna mount. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| 1 | deg | | Pitch or lat, depending on mount mode. | +| 2 | deg | | Roll or lon depending on mount mode | +| 3 | deg | | /[m] Yaw or alt depending on mount mode | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | [MAV_MOUNT_MODE](#MAV_MOUNT_MODE) | | + +### VEHICLE_CMD_DO_SET_CAM_TRIGG_DIST (206) + +Mission command to set TRIG_DIST for this flight. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------ | +| 1 | 米 | | Camera trigger distance | +| 2 | ms | | Shutter integration time | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_FENCE_ENABLE (207) + +Mission command to enable the geofence. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------------------------ | +| 1 | | | enable? (0=disable, 1=enable) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_PARACHUTE (208) + +Mission command to trigger a parachute. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | action [@enum PARACHUTE_ACTION] (0=disable, 1=enable, 2=release, for some systems see [@enum PARACHUTE_ACTION], not in general message set.) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_MOTOR_TEST (209) + +Motor test command. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | --------------------------------------------------------------- | +| 1 | | | Instance (@range 1, ) | +| 2 | | | throttle type | +| 3 | | | throttle | +| 4 | | | timeout [s] | +| 5 | | | Motor count | +| 6 | | | Test order | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_INVERTED_FLIGHT (210) + +Change to/from inverted flight. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -------------------------------------------------- | +| 1 | | | inverted (0=normal, 1=inverted) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_GRIPPER (211) + +Command to operate a gripper. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_AUTOTUNE_ENABLE (212) + +Enable autotune module. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ----------- | +| 1 | | | 1 to enable | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_CAM_TRIGG_INTERVAL (214) + +Mission command to set TRIG_INTERVAL for this flight. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------------------------ | +| 1 | 米 | | Camera trigger distance | +| 2 | | | Shutter integration time (ms) | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_MOUNT_CONTROL_QUAT (220) + +Mission command to control a camera or antenna mount, using a quaternion as reference. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------------------------------------------- | +| 1 | | | q1 - quaternion param #1, w (1 in null-rotation) | +| 2 | | | q2 - quaternion param #2, x (0 in null-rotation) | +| 3 | | | q3 - quaternion param #3, y (0 in null-rotation) | +| 4 | | | q4 - quaternion param #4, z (0 in null-rotation) | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_GUIDED_MASTER (221) + +Set id of master controller. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------ | +| 1 | | | System ID | +| 2 | | | Component ID | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_GUIDED_LIMITS (222) + +Set limits for external control. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | s | | Timeout - maximum time that external controller will be allowed to control vehicle. 0 means no timeout | +| 2 | 米 | | 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 | +| 3 | 米 | | 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 | +| 4 | 米 | | 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 | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_LAST (240) + +NOP - This command is only used to mark the upper limit of the DO commands in the enumeration. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_PREFLIGHT_CALIBRATION (241) + +Trigger calibration. This command will be only accepted if in pre-flight mode. See MAVLink spec MAV_CMD_PREFLIGHT_CALIBRATION. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PREFLIGHT_SET_SENSOR_OFFSETS (242) + +Set sensor offsets. This command will be only accepted if in pre-flight mode. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | | | Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow | +| 2 | | | X axis offset (or generic dimension 1), in the sensor's raw units | +| 3 | | | Y axis offset (or generic dimension 2), in the sensor's raw units | +| 4 | | | Z axis offset (or generic dimension 3), in the sensor's raw units | +| 5 | | | Generic dimension 4, in the sensor's raw units | +| 6 | | | Generic dimension 5, in the sensor's raw units | +| 7 | | | Generic dimension 6, in the sensor's raw units | + +### VEHICLE_CMD_PREFLIGHT_UAVCAN (243) + +UAVCAN configuration. If param 1 == 1 actuator mapping and direction assignment should be started. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PREFLIGHT_STORAGE (245) + +Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------ | +| 1 | | | Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM | +| 2 | | | Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_PREFLIGHT_REBOOT_SHUTDOWN (246) + +Request the reboot or shutdown of system components. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | 0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot. | +| 2 | | | 0: Do nothing for onboard computer, 1: Reboot onboard computer, 2: Shutdown onboard computer. | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_OBLIQUE_SURVEY (260) + +Mission command to set a Camera Auto Mount Pivoting Oblique Survey for this flight. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------- | +| 1 | 米 | | Camera trigger distance | +| 2 | ms | | Shutter integration time | +| 3 | | | Camera minimum trigger interval | +| 4 | | | Number of positions | +| 5 | | | Roll | +| 6 | | | Pitch | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_STANDARD_MODE (262) + +Enable the specified standard MAVLink mode. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ----------------------------------------------------------- | +| 1 | | | MAV_STANDARD_MODE | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_GIMBAL_DEVICE_INFORMATION (283) + +Command to ask information about a low level gimbal. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_MISSION_START (300) + +Start running a mission. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | | | first_item: the first mission item to run | +| 2 | | | last_item: the last mission item to run (after this item is run, the mission ends) | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_ACTUATOR_TEST (310) + +Actuator testing command. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------------------------------------------------------------------------- | --------------- | +| 1 | | [-1 : 1] | value | +| 2 | s | | timeout | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | output function | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_CONFIGURE_ACTUATOR (311) + +Actuator configuration command. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | --------------- | +| 1 | | | configuration | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | output function | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_COMPONENT_ARM_DISARM (400) + +Arms / Disarms a component. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -------------------------------------- | +| 1 | | | 1 to arm, 0 to disarm. | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_RUN_PREARM_CHECKS (401) + +Instructs a target system to run pre-arm checks. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_INJECT_FAILURE (420) + +Inject artificial failure for testing purposes. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_START_RX_PAIR (500) + +Starts receiver pairing. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ---------------------------------------------------------------- | +| 1 | | | 0:Spektrum | +| 2 | | | 0:Spektrum DSM2, 1:Spektrum DSMX | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_REQUEST_MESSAGE (512) + +Request to send a single instance of the specified message. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_REQUEST_CAMERA_INFORMATION (521) + +Request camera information (CAMERA_INFORMATION). + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | --------------------------------------------------------------------------- | +| 1 | | | 0: No action 1: Request camera capabilities | +| 2 | | | Reserved (all remaining params) | +| 3 | | | Reserved (default:0) | +| 4 | | | Reserved (default:0) | +| 5 | | | Reserved (default:0) | +| 6 | | | Reserved (default:0) | +| 7 | | | Reserved (default:0) | + +### VEHICLE_CMD_SET_CAMERA_MODE (530) + +Set camera capture mode (photo, video, etc.). + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_SET_CAMERA_ZOOM (531) + +Set camera zoom. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_SET_CAMERA_FOCUS (532) + +None + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_EXTERNAL_ATTITUDE_ESTIMATE (620) + +Set an external estimate of vehicle attitude in degrees. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_GIMBAL_MANAGER_PITCHYAW (1000) + +Setpoint to be sent to a gimbal manager to set a gimbal pitch and yaw. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_GIMBAL_MANAGER_CONFIGURE (1001) + +Gimbal configuration to set which sysid/compid is in primary and secondary control. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_IMAGE_START_CAPTURE (2000) + +Start image capture sequence. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_TRIGGER_CONTROL (2003) + +Enable or disable on-board camera triggering system. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_VIDEO_START_CAPTURE (2500) + +Start a video capture. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_VIDEO_STOP_CAPTURE (2501) + +Stop the current video capture. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_LOGGING_START (2510) + +Start streaming ULog data. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_LOGGING_STOP (2511) + +Stop streaming ULog data. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_CONTROL_HIGH_LATENCY (2600) + +Control starting/stopping transmitting data over the high latency link. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_VTOL_TRANSITION (3000) + +Command VTOL transition. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_SET_SAFETY_SWITCH_STATE (5300) + +Command safety on/off. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -------------------------------------------------------------------------------- | +| 1 | | | 1 to activate safety, 0 to deactivate safety and allow control surface movements | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_ARM_AUTHORIZATION_REQUEST (3001) + +Request arm authorization. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PAYLOAD_PREPARE_DEPLOY (30001) + +Prepare a payload deployment in the flight plan. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PAYLOAD_CONTROL_DEPLOY (30002) + +Control a pre-programmed payload deployment. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_FIXED_MAG_CAL_YAW (42006) + +Magnetometer calibration based on provided known yaw. This allows for fast calibration using WMM field tables in the vehicle, given only the known yaw of the vehicle. If Latitude and longitude are both zero then use the current vehicle location. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_WINCH (42600) + +Command to operate winch. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_EXTERNAL_POSITION_ESTIMATE (43003) + +External reset of estimator global position when dead reckoning. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_EXTERNAL_WIND_ESTIMATE (43004) + +None + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PX4_INTERNAL_START (65537) + +Start of PX4 internal only vehicle commands (> UINT16_MAX). + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_SET_GPS_GLOBAL_ORIGIN (100000) + +Sets the GPS coordinates of the vehicle local origin (0,0,0) position. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------------------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Latitude (WGS-84) | +| 6 | | | Longitude (WGS-84) | +| 7 | 米 | | Altitude (AMSL from GNSS, positive above ground) | + +### VEHICLE_CMD_SET_NAV_STATE (100001) + +Change mode by specifying nav_state directly. + +| Param | 单位 (Units) | Range/Enum | 描述 | +| ----- | ----------------------------- | ---------- | ------------------------------ | +| 1 | | | nav_state | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +## Enums + +### ORBIT_YAW_BEHAVIOUR {#ORBIT_YAW_BEHAVIOUR} + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | - | -- | +| ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER | `uint8` | 0 | | +| ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING | `uint8` | 1 | | +| ORBIT_YAW_BEHAVIOUR_UNCONTROLLED | `uint8` | 2 | | +| ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE | `uint8` | 3 | | +| ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED | `uint8` | 4 | | +| ORBIT_YAW_BEHAVIOUR_UNCHANGED | `uint8` | 5 | | + +### VEHICLE_ROI {#VEHICLE_ROI} + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------ | ------- | - | -------------------------------------------- | +| VEHICLE_ROI_NONE | `uint8` | 0 | No region of interest. | +| VEHICLE_ROI_WPNEXT | `uint8` | 1 | Point toward next MISSION. | +| VEHICLE_ROI_WPINDEX | `uint8` | 2 | Point toward given MISSION. | +| VEHICLE_ROI_LOCATION | `uint8` | 3 | Point toward fixed location. | +| VEHICLE_ROI_TARGET | `uint8` | 4 | Point toward target. | +| VEHICLE_ROI_ENUM_END | `uint8` | 5 | | + +### SPEED_TYPE {#SPEED_TYPE} + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------- | ------- | - | -- | +| SPEED_TYPE_AIRSPEED | `uint8` | 0 | | +| SPEED_TYPE_GROUNDSPEED | `uint8` | 1 | | +| SPEED_TYPE_CLIMB_SPEED | `uint8` | 2 | | +| SPEED_TYPE_DESCEND_SPEED | `uint8` | 3 | | + +### MAV_MOUNT_MODE {#MAV_MOUNT_MODE} + +| 参数名 | 类型 | 值 | 描述 | +| --- | -- | - | -- | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| MESSAGE_VERSION | `uint32` | 0 | | +| PREFLIGHT_CALIBRATION_TEMPERATURE_CALIBRATION | `uint16` | 3 | Param value for VEHICLE_CMD_PREFLIGHT_CALIBRATION to start temperature calibration. | +| VEHICLE_MOUNT_MODE_RETRACT | `uint8` | 0 | Load and keep safe position (Roll,Pitch,Yaw) from permanent memory and stop stabilization. | +| VEHICLE_MOUNT_MODE_NEUTRAL | `uint8` | 1 | Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory. | +| VEHICLE_MOUNT_MODE_MAVLINK_TARGETING | `uint8` | 2 | Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization. | +| VEHICLE_MOUNT_MODE_RC_TARGETING | `uint8` | 3 | Load neutral position and start RC Roll,Pitch,Yaw control with stabilization. | +| VEHICLE_MOUNT_MODE_GPS_POINT | `uint8` | 4 | Load neutral position and start to point to Lat,Lon,Alt. | +| VEHICLE_MOUNT_MODE_ENUM_END | `uint8` | 5 | | +| PARACHUTE_ACTION_DISABLE | `uint8` | 0 | | +| PARACHUTE_ACTION_ENABLE | `uint8` | 1 | | +| PARACHUTE_ACTION_RELEASE | `uint8` | 2 | | +| FAILURE_UNIT_SENSOR_GYRO | `uint8` | 0 | | +| FAILURE_UNIT_SENSOR_ACCEL | `uint8` | 1 | | +| FAILURE_UNIT_SENSOR_MAG | `uint8` | 2 | | +| FAILURE_UNIT_SENSOR_BARO | `uint8` | 3 | | +| FAILURE_UNIT_SENSOR_GPS | `uint8` | 4 | | +| FAILURE_UNIT_SENSOR_OPTICAL_FLOW | `uint8` | 5 | | +| FAILURE_UNIT_SENSOR_VIO | `uint8` | 6 | | +| FAILURE_UNIT_SENSOR_DISTANCE_SENSOR | `uint8` | 7 | | +| FAILURE_UNIT_SENSOR_AIRSPEED | `uint8` | 8 | | +| FAILURE_UNIT_SYSTEM_BATTERY | `uint8` | 100 | | +| FAILURE_UNIT_SYSTEM_MOTOR | `uint8` | 101 | | +| FAILURE_UNIT_SYSTEM_SERVO | `uint8` | 102 | | +| FAILURE_UNIT_SYSTEM_AVOIDANCE | `uint8` | 103 | | +| FAILURE_UNIT_SYSTEM_RC_SIGNAL | `uint8` | 104 | | +| FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL | `uint8` | 105 | | +| FAILURE_TYPE_OK | `uint8` | 0 | | +| FAILURE_TYPE_OFF | `uint8` | 1 | | +| FAILURE_TYPE_STUCK | `uint8` | 2 | | +| FAILURE_TYPE_GARBAGE | `uint8` | 3 | | +| FAILURE_TYPE_WRONG | `uint8` | 4 | | +| FAILURE_TYPE_SLOW | `uint8` | 5 | | +| FAILURE_TYPE_DELAYED | `uint8` | 6 | | +| FAILURE_TYPE_INTERMITTENT | `uint8` | 7 | | +| ARMING_ACTION_DISARM | `int8` | 0 | | +| ARMING_ACTION_ARM | `int8` | 1 | | +| GRIPPER_ACTION_RELEASE | `uint8` | 0 | | +| GRIPPER_ACTION_GRAB | `uint8` | 1 | | +| SAFETY_OFF | `uint8` | 0 | | +| SAFETY_ON | `uint8` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | +| COMPONENT_MODE_EXECUTOR_START | `uint16` | 1000 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleCommand.msg) + +:::details +Click here to see original file ```c # Vehicle Command uORB message. Used for commanding a mission / action / etc. @@ -212,5 +1785,6 @@ bool from_external uint16 COMPONENT_MODE_EXECUTOR_START = 1000 # TOPICS vehicle_command gimbal_v1_command vehicle_command_mode_executor - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleCommandAck.md b/docs/zh/msg_docs/VehicleCommandAck.md index e40b7bc87c..1eb26aa95a 100644 --- a/docs/zh/msg_docs/VehicleCommandAck.md +++ b/docs/zh/msg_docs/VehicleCommandAck.md @@ -1,10 +1,52 @@ +--- +pageClass: is-wide-page +--- + # VehicleCommandAck (UORB message) -Vehicle Command Ackonwledgement uORB message. -Used for acknowledging the vehicle command being received. -Follows the MAVLink COMMAND_ACK message definition +Vehicle Command Ackonwledgement uORB message. Used for acknowledging the vehicle command being received. Follows the MAVLink COMMAND_ACK message definition. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleCommandAck.msg) +**TOPICS:** vehicle_commandack + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| command | `uint32` | | | Command that is being acknowledged | +| result | `uint8` | | | Command result | +| result_param1 | `uint8` | | | Also used as progress[%], it can be set with the reason why the command was denied, or the progress percentage when result is MAV_RESULT_IN_PROGRESS | +| result_param2 | `int32` | | | Additional parameter of the result, example: which parameter of MAV_CMD_NAV_WAYPOINT caused it to be denied. | +| target_system | `uint8` | | | | +| target_component | `uint16` | | | Target component / mode executor | +| from_external | `bool` | | | Indicates if the command came from an external source | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | - | --------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| VEHICLE_CMD_RESULT_ACCEPTED | `uint8` | 0 | Command ACCEPTED and EXECUTED | +| VEHICLE_CMD_RESULT_TEMPORARILY_REJECTED | `uint8` | 1 | Command TEMPORARY REJECTED/DENIED | +| VEHICLE_CMD_RESULT_DENIED | `uint8` | 2 | Command PERMANENTLY DENIED | +| VEHICLE_CMD_RESULT_UNSUPPORTED | `uint8` | 3 | Command UNKNOWN/UNSUPPORTED | +| VEHICLE_CMD_RESULT_FAILED | `uint8` | 4 | Command executed, but failed | +| VEHICLE_CMD_RESULT_IN_PROGRESS | `uint8` | 5 | Command being executed | +| VEHICLE_CMD_RESULT_CANCELLED | `uint8` | 6 | Command Canceled | +| ARM_AUTH_DENIED_REASON_GENERIC | `uint16` | 0 | | +| ARM_AUTH_DENIED_REASON_NONE | `uint16` | 1 | | +| ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT | `uint16` | 2 | | +| ARM_AUTH_DENIED_REASON_TIMEOUT | `uint16` | 3 | | +| ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE | `uint16` | 4 | | +| ARM_AUTH_DENIED_REASON_BAD_WEATHER | `uint16` | 5 | | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleCommandAck.msg) + +:::details +Click here to see original file ```c # Vehicle Command Ackonwledgement uORB message. @@ -32,7 +74,7 @@ uint16 ARM_AUTH_DENIED_REASON_TIMEOUT = 3 uint16 ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE = 4 uint16 ARM_AUTH_DENIED_REASON_BAD_WEATHER = 5 -uint8 ORB_QUEUE_LENGTH = 4 +uint8 ORB_QUEUE_LENGTH = 8 uint32 command # Command that is being acknowledged uint8 result # Command result @@ -42,5 +84,6 @@ uint8 target_system uint16 target_component # Target component / mode executor bool from_external # Indicates if the command came from an external source - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleConstraints.md b/docs/zh/msg_docs/VehicleConstraints.md index 02d2a38748..60e88e4184 100644 --- a/docs/zh/msg_docs/VehicleConstraints.md +++ b/docs/zh/msg_docs/VehicleConstraints.md @@ -1,18 +1,39 @@ +--- +pageClass: is-wide-page +--- + # 载具限制 (UORB 消息) -Local setpoint constraints in NED frame -setting something to NaN means that no limit is provided +Local setpoint constraints in NED frame. setting something to NaN means that no limit is provided. -[源文件](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleConstraints.msg) +**TOPICS:** vehicle_constraints + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| speed_up | `float32` | | | in meters/sec | +| speed_down | `float32` | | | in meters/sec | +| want_takeoff | `bool` | | | tell the controller to initiate takeoff when idling (ignored during flight) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleConstraints.msg) + +:::details +Click here to see original file ```c -# 本地设定点在东北天(NED)坐标系中的约束条件 -# 将某个值设为 NaN 意味着未设置限制 +# Local setpoint constraints in NED frame +# setting something to NaN means that no limit is provided -uint64 timestamp # 自系统启动以来的时间(微秒) +uint64 timestamp # time since system start (microseconds) -float32 speed_up # 上升速度(米 / 秒) -float32 speed_down # 下降速度(米 / 秒) +float32 speed_up # in meters/sec +float32 speed_down # in meters/sec -bool want_takeoff # 告知控制器在怠速时启动起飞(飞行过程中此指令被忽略) +bool want_takeoff # tell the controller to initiate takeoff when idling (ignored during flight) ``` + +::: diff --git a/docs/zh/msg_docs/VehicleControlMode.md b/docs/zh/msg_docs/VehicleControlMode.md index b32f09c725..dcc5eca11b 100644 --- a/docs/zh/msg_docs/VehicleControlMode.md +++ b/docs/zh/msg_docs/VehicleControlMode.md @@ -1,6 +1,44 @@ +--- +pageClass: is-wide-page +--- + # VehicleControlMode (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleControlMode.msg) +**TOPICS:** vehicle_control_mode config_control_setpoints + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| flag_armed | `bool` | | | synonym for actuator_armed.armed | +| flag_multicopter_position_control_enabled | `bool` | | | | +| flag_control_manual_enabled | `bool` | | | true if manual input is mixed in | +| flag_control_auto_enabled | `bool` | | | true if onboard autopilot should act | +| flag_control_offboard_enabled | `bool` | | | true if offboard control should be used | +| flag_control_position_enabled | `bool` | | | true if position is controlled | +| flag_control_velocity_enabled | `bool` | | | true if horizontal velocity (implies direction) is controlled | +| flag_control_altitude_enabled | `bool` | | | true if altitude is controlled | +| flag_control_climb_rate_enabled | `bool` | | | true if climb rate is controlled | +| flag_control_acceleration_enabled | `bool` | | | true if acceleration is controlled | +| flag_control_attitude_enabled | `bool` | | | true if attitude stabilization is mixed in | +| flag_control_rates_enabled | `bool` | | | true if rates are stabilized | +| flag_control_allocation_enabled | `bool` | | | true if control allocation is enabled | +| flag_control_termination_enabled | `bool` | | | true if flighttermination is enabled | +| source_id | `uint8` | | | Mode ID (nav_state) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleControlMode.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -27,5 +65,6 @@ bool flag_control_termination_enabled # true if flighttermination is enabled uint8 source_id # Mode ID (nav_state) # TOPICS vehicle_control_mode config_control_setpoints - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleGlobalPosition.md b/docs/zh/msg_docs/VehicleGlobalPosition.md index c3e4147201..9bb2b4b2c0 100644 --- a/docs/zh/msg_docs/VehicleGlobalPosition.md +++ b/docs/zh/msg_docs/VehicleGlobalPosition.md @@ -1,12 +1,48 @@ +--- +pageClass: is-wide-page +--- + # VehicleGlobalPosition (UORB message) -Fused global position in WGS84. -This struct contains global position estimation. It is not the raw GPS -measurement (@see vehicle_gps_position). This topic is usually published by the position -estimator, which will take more sources of information into account than just GPS, -e.g. control inputs of the vehicle in a Kalman-filter implementation. +Fused global position in WGS84. This struct contains global position estimation. It is not the raw GPS. measurement (@see vehicle_gps_position). This topic is usually published by the position. estimator, which will take more sources of information into account than just GPS,. e.g. control inputs of the vehicle in a Kalman-filter implementation. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleGlobalPosition.msg) +**TOPICS:** vehicle_global_position vehicle_global_position_groundtruth external_ins_global_position estimator_global_position aux_global_position + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| lat | `float64` | | | Latitude, (degrees) | +| lon | `float64` | | | Longitude, (degrees) | +| alt | `float32` | | | Altitude AMSL, (meters) | +| alt_ellipsoid | `float32` | | | Altitude above ellipsoid, (meters) | +| lat_lon_valid | `bool` | | | | +| alt_valid | `bool` | | | | +| delta_alt | `float32` | | | Reset delta for altitude | +| delta_terrain | `float32` | | | Reset delta for terrain | +| lat_lon_reset_counter | `uint8` | | | Counter for reset events on horizontal position coordinates | +| alt_reset_counter | `uint8` | | | Counter for reset events on altitude | +| terrain_reset_counter | `uint8` | | | Counter for reset events on terrain | +| eph | `float32` | | | Standard deviation of horizontal position error, (metres) | +| epv | `float32` | | | Standard deviation of vertical position error, (metres) | +| terrain_alt | `float32` | | | Terrain altitude WGS84, (metres) | +| terrain_alt_valid | `bool` | | | Terrain altitude estimate is valid | +| dead_reckoning | `bool` | | | True if this position is estimated through dead-reckoning | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleGlobalPosition.msg) + +:::details +Click here to see original file ```c # Fused global position in WGS84. @@ -46,5 +82,6 @@ bool dead_reckoning # True if this position is estimated through dead-reckoning # TOPICS vehicle_global_position vehicle_global_position_groundtruth external_ins_global_position # TOPICS estimator_global_position # TOPICS aux_global_position - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleImu.md b/docs/zh/msg_docs/VehicleImu.md index 5c3856f190..06af1d6d58 100644 --- a/docs/zh/msg_docs/VehicleImu.md +++ b/docs/zh/msg_docs/VehicleImu.md @@ -1,8 +1,44 @@ +--- +pageClass: is-wide-page +--- + # VehicleImu (UORB message) IMU readings in SI-unit form. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleImu.msg) +**TOPICS:** vehicle_imu + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| accel_device_id | `uint32` | | | Accelerometer unique device ID for the sensor that does not change between power cycles | +| gyro_device_id | `uint32` | | | Gyroscope unique device ID for the sensor that does not change between power cycles | +| delta_angle | `float32[3]` | | | delta angle about the FRD body frame XYZ-axis in rad over the integration time frame (delta_angle_dt) | +| delta_velocity | `float32[3]` | | | delta velocity in the FRD body frame XYZ-axis in m/s over the integration time frame (delta_velocity_dt) | +| delta_angle_dt | `uint32` | | | integration period in microseconds | +| delta_velocity_dt | `uint32` | | | integration period in microseconds | +| delta_angle_clipping | `uint8` | | | bitfield indicating if there was any gyro clipping (per axis) during the integration time frame | +| delta_velocity_clipping | `uint8` | | | bitfield indicating if there was any accelerometer clipping (per axis) during the integration time frame | +| accel_calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever accelermeter calibration changes. | +| gyro_calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever rate gyro calibration changes. | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ---------------------------------------------------------- | ------- | - | -- | +| CLIPPING_X | `uint8` | 1 | | +| CLIPPING_Y | `uint8` | 2 | | +| CLIPPING_Z | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleImu.msg) + +:::details +Click here to see original file ```c # IMU readings in SI-unit form. @@ -28,5 +64,6 @@ uint8 delta_velocity_clipping # bitfield indicating if there was any accelerom uint8 accel_calibration_count # Calibration changed counter. Monotonically increases whenever accelermeter calibration changes. uint8 gyro_calibration_count # Calibration changed counter. Monotonically increases whenever rate gyro calibration changes. - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleImuStatus.md b/docs/zh/msg_docs/VehicleImuStatus.md index c6335b8f3b..28e0c067f0 100644 --- a/docs/zh/msg_docs/VehicleImuStatus.md +++ b/docs/zh/msg_docs/VehicleImuStatus.md @@ -1,6 +1,42 @@ +--- +pageClass: is-wide-page +--- + # VehicleImuStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleImuStatus.msg) +**TOPICS:** vehicle_imustatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| accel_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| gyro_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| accel_clipping | `uint32[3]` | | | total clipping per axis | +| gyro_clipping | `uint32[3]` | | | total clipping per axis | +| accel_error_count | `uint32` | | | | +| gyro_error_count | `uint32` | | | | +| accel_rate_hz | `float32` | | | | +| gyro_rate_hz | `float32` | | | | +| accel_raw_rate_hz | `float32` | | | full raw sensor sample rate (Hz) | +| gyro_raw_rate_hz | `float32` | | | full raw sensor sample rate (Hz) | +| accel_vibration_metric | `float32` | | | high frequency vibration level in the accelerometer data (m/s/s) | +| gyro_vibration_metric | `float32` | | | high frequency vibration level in the gyro data (rad/s) | +| delta_angle_coning_metric | `float32` | | | average IMU delta angle coning correction (rad^2) | +| mean_accel | `float32[3]` | | | average accelerometer readings since last publication | +| mean_gyro | `float32[3]` | | | average gyroscope readings since last publication | +| var_accel | `float32[3]` | | | accelerometer variance since last publication | +| var_gyro | `float32[3]` | | | gyroscope variance since last publication | +| temperature_accel | `float32` | | | | +| temperature_gyro | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleImuStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -31,5 +67,6 @@ float32[3] var_gyro # gyroscope variance since last publication float32 temperature_accel float32 temperature_gyro - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleLandDetected.md b/docs/zh/msg_docs/VehicleLandDetected.md index acd95de190..d213899155 100644 --- a/docs/zh/msg_docs/VehicleLandDetected.md +++ b/docs/zh/msg_docs/VehicleLandDetected.md @@ -1,6 +1,41 @@ +--- +pageClass: is-wide-page +--- + # VehicleLandDetected (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleLandDetected.msg) +**TOPICS:** vehicle_landdetected + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| freefall | `bool` | | | true if vehicle is currently in free-fall | +| ground_contact | `bool` | | | true if vehicle has ground contact but is not landed (1. stage) | +| maybe_landed | `bool` | | | true if the vehicle might have landed (2. stage) | +| landed | `bool` | | | true if vehicle is currently landed on the ground (3. stage) | +| in_ground_effect | `bool` | | | indicates if from the perspective of the landing detector the vehicle might be in ground effect (baro). This flag will become true if the vehicle is not moving horizontally and is descending (crude assumption that user is landing). | +| in_descend | `bool` | | | | +| has_low_throttle | `bool` | | | | +| vertical_movement | `bool` | | | | +| horizontal_movement | `bool` | | | | +| rotational_movement | `bool` | | | | +| close_to_ground_or_skipped_check | `bool` | | | | +| at_rest | `bool` | | | | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleLandDetected.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -24,5 +59,6 @@ bool rotational_movement bool close_to_ground_or_skipped_check bool at_rest - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleLocalPosition.md b/docs/zh/msg_docs/VehicleLocalPosition.md index af84dc1ddb..6fbe4a2104 100644 --- a/docs/zh/msg_docs/VehicleLocalPosition.md +++ b/docs/zh/msg_docs/VehicleLocalPosition.md @@ -1,9 +1,86 @@ +--- +pageClass: is-wide-page +--- + # VehicleLocalPosition (UORB message) -Fused local position in NED. -The coordinate system origin is the vehicle position at the time when the EKF2-module was started. +Fused local position in NED. The coordinate system origin is the vehicle position at the time when the EKF2-module was started. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleLocalPosition.msg) +**TOPICS:** vehicle_local_position vehicle_local_position_groundtruth external_ins_local_position estimator_local_position + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| xy_valid | `bool` | | | true if x and y are valid | +| z_valid | `bool` | | | true if z is valid | +| v_xy_valid | `bool` | | | true if vx and vy are valid | +| v_z_valid | `bool` | | | true if vz is valid | +| x | `float32` | | | North position in NED earth-fixed frame, (metres) | +| y | `float32` | | | East position in NED earth-fixed frame, (metres) | +| z | `float32` | | | Down position (negative altitude) in NED earth-fixed frame, (metres) | +| delta_xy | `float32[2]` | | | Amount of lateral shift of position estimate in latest reset (in x and y) [m] | +| xy_reset_counter | `uint8` | | | Index of latest lateral position estimate reset | +| delta_z | `float32` | | | Amount of vertical shift of position estimate in latest reset [m] | +| z_reset_counter | `uint8` | | | Index of latest vertical position estimate reset | +| vx | `float32` | | | North velocity in NED earth-fixed frame, (metres/sec) | +| vy | `float32` | | | East velocity in NED earth-fixed frame, (metres/sec) | +| vz | `float32` | | | Down velocity in NED earth-fixed frame, (metres/sec) | +| z_deriv | `float32` | | | Down position time derivative in NED earth-fixed frame, (metres/sec) | +| delta_vxy | `float32[2]` | | | Amount of lateral shift of velocity estimate in latest reset (in x and y) [m/s] | +| vxy_reset_counter | `uint8` | | | Index of latest vertical velocity estimate reset | +| delta_vz | `float32` | | | Amount of vertical shift of velocity estimate in latest reset [m/s] | +| vz_reset_counter | `uint8` | | | Index of latest vertical velocity estimate reset | +| ax | `float32` | | | North velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| ay | `float32` | | | East velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| az | `float32` | | | Down velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| heading | `float32` | | | Euler yaw angle transforming the tangent plane relative to NED earth-fixed frame, -PI..+PI, (radians) | +| heading_var | `float32` | | | | +| unaided_heading | `float32` | | | Same as heading but generated by integrating corrected gyro data only | +| delta_heading | `float32` | | | Heading delta caused by latest heading reset [rad] | +| heading_reset_counter | `uint8` | | | Index of latest heading reset | +| heading_good_for_control | `bool` | | | | +| tilt_var | `float32` | | | | +| xy_global | `bool` | | | true if position (x, y) has a valid global reference (ref_lat, ref_lon) | +| z_global | `bool` | | | true if z has a valid global reference (ref_alt) | +| ref_timestamp | `uint64` | | | Time when reference position was set since system start, (microseconds) | +| ref_lat | `float64` | | | Reference point latitude, (degrees) | +| ref_lon | `float64` | | | Reference point longitude, (degrees) | +| ref_alt | `float32` | | | Reference altitude AMSL, (metres) | +| dist_bottom_valid | `bool` | | | true if distance to bottom surface is valid | +| dist_bottom | `float32` | | | Distance from from bottom surface to ground, (metres) | +| dist_bottom_var | `float32` | | | terrain estimate variance (m^2) | +| delta_dist_bottom | `float32` | | | Amount of vertical shift of dist bottom estimate in latest reset [m] | +| dist_bottom_reset_counter | `uint8` | | | Index of latest dist bottom estimate reset | +| dist_bottom_sensor_bitfield | `uint8` | | | bitfield indicating what type of sensor is used to estimate dist_bottom | +| eph | `float32` | | | Standard deviation of horizontal position error, (metres) | +| epv | `float32` | | | Standard deviation of vertical position error, (metres) | +| evh | `float32` | | | Standard deviation of horizontal velocity error, (metres/sec) | +| evv | `float32` | | | Standard deviation of vertical velocity error, (metres/sec) | +| dead_reckoning | `bool` | | | True if this position is estimated through dead-reckoning | +| vxy_max | `float32` | | | maximum horizontal speed (meters/sec) | +| vz_max | `float32` | | | maximum vertical speed (meters/sec) | +| hagl_min | `float32` | | | minimum height above ground level (meters) | +| hagl_max_z | `float32` | | | maximum height above ground level for z-control (meters) | +| hagl_max_xy | `float32` | | | maximum height above ground level for xy-control (meters) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------- | -------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| MESSAGE_VERSION | `uint32` | 1 | | +| DIST_BOTTOM_SENSOR_NONE | `uint8` | 0 | | +| DIST_BOTTOM_SENSOR_RANGE | `uint8` | 1 | (1 << 0) a range sensor is used to estimate dist_bottom field | +| DIST_BOTTOM_SENSOR_FLOW | `uint8` | 2 | (1 << 1) a flow sensor is used to estimate dist_bottom field (mostly fixed-wing use case) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleLocalPosition.msg) + +:::details +Click here to see original file ```c # Fused local position in NED. @@ -94,5 +171,6 @@ float32 hagl_max_xy # maximum height above ground level for xy-control (meters # TOPICS vehicle_local_position vehicle_local_position_groundtruth external_ins_local_position # TOPICS estimator_local_position - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleLocalPositionSetpoint.md b/docs/zh/msg_docs/VehicleLocalPositionSetpoint.md index 15f66292b3..3f1b87450c 100644 --- a/docs/zh/msg_docs/VehicleLocalPositionSetpoint.md +++ b/docs/zh/msg_docs/VehicleLocalPositionSetpoint.md @@ -1,10 +1,35 @@ +--- +pageClass: is-wide-page +--- + # VehicleLocalPositionSetpoint (UORB message) -Local position setpoint in NED frame -Telemetry of PID position controller to monitor tracking. -NaN means the state was not controlled +Local position setpoint in NED frame. Telemetry of PID position controller to monitor tracking. NaN means the state was not controlled. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleLocalPositionSetpoint.msg) +**TOPICS:** vehicle_localposition_setpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------ | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| x | `float32` | | | in meters NED | +| y | `float32` | | | in meters NED | +| z | `float32` | | | in meters NED | +| vx | `float32` | | | in meters/sec | +| vy | `float32` | | | in meters/sec | +| vz | `float32` | | | in meters/sec | +| acceleration | `float32[3]` | | | in meters/sec^2 | +| thrust | `float32[3]` | | | normalized thrust vector in NED | +| yaw | `float32` | | | in radians NED -PI..+PI | +| yawspeed | `float32` | | | in radians/sec | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleLocalPositionSetpoint.msg) + +:::details +Click here to see original file ```c # Local position setpoint in NED frame @@ -26,5 +51,6 @@ float32[3] thrust # normalized thrust vector in NED float32 yaw # in radians NED -PI..+PI float32 yawspeed # in radians/sec - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleLocalPositionV0.md b/docs/zh/msg_docs/VehicleLocalPositionV0.md index 05d9361dc1..3c11cf615e 100644 --- a/docs/zh/msg_docs/VehicleLocalPositionV0.md +++ b/docs/zh/msg_docs/VehicleLocalPositionV0.md @@ -1,9 +1,85 @@ +--- +pageClass: is-wide-page +--- + # VehicleLocalPositionV0 (UORB message) -Fused local position in NED. -The coordinate system origin is the vehicle position at the time when the EKF2-module was started. +Fused local position in NED. The coordinate system origin is the vehicle position at the time when the EKF2-module was started. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleLocalPositionV0.msg) +**TOPICS:** vehicle_local_position vehicle_local_position_groundtruth external_ins_local_position estimator_local_position + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| xy_valid | `bool` | | | true if x and y are valid | +| z_valid | `bool` | | | true if z is valid | +| v_xy_valid | `bool` | | | true if vx and vy are valid | +| v_z_valid | `bool` | | | true if vz is valid | +| x | `float32` | | | North position in NED earth-fixed frame, (metres) | +| y | `float32` | | | East position in NED earth-fixed frame, (metres) | +| z | `float32` | | | Down position (negative altitude) in NED earth-fixed frame, (metres) | +| delta_xy | `float32[2]` | | | Amount of lateral shift of position estimate in latest reset (in x and y) [m] | +| xy_reset_counter | `uint8` | | | Index of latest lateral position estimate reset | +| delta_z | `float32` | | | Amount of vertical shift of position estimate in latest reset [m] | +| z_reset_counter | `uint8` | | | Index of latest vertical position estimate reset | +| vx | `float32` | | | North velocity in NED earth-fixed frame, (metres/sec) | +| vy | `float32` | | | East velocity in NED earth-fixed frame, (metres/sec) | +| vz | `float32` | | | Down velocity in NED earth-fixed frame, (metres/sec) | +| z_deriv | `float32` | | | Down position time derivative in NED earth-fixed frame, (metres/sec) | +| delta_vxy | `float32[2]` | | | Amount of lateral shift of velocity estimate in latest reset (in x and y) [m/s] | +| vxy_reset_counter | `uint8` | | | Index of latest vertical velocity estimate reset | +| delta_vz | `float32` | | | Amount of vertical shift of velocity estimate in latest reset [m/s] | +| vz_reset_counter | `uint8` | | | Index of latest vertical velocity estimate reset | +| ax | `float32` | | | North velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| ay | `float32` | | | East velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| az | `float32` | | | Down velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| heading | `float32` | | | Euler yaw angle transforming the tangent plane relative to NED earth-fixed frame, -PI..+PI, (radians) | +| heading_var | `float32` | | | | +| unaided_heading | `float32` | | | Same as heading but generated by integrating corrected gyro data only | +| delta_heading | `float32` | | | Heading delta caused by latest heading reset [rad] | +| heading_reset_counter | `uint8` | | | Index of latest heading reset | +| heading_good_for_control | `bool` | | | | +| tilt_var | `float32` | | | | +| xy_global | `bool` | | | true if position (x, y) has a valid global reference (ref_lat, ref_lon) | +| z_global | `bool` | | | true if z has a valid global reference (ref_alt) | +| ref_timestamp | `uint64` | | | Time when reference position was set since system start, (microseconds) | +| ref_lat | `float64` | | | Reference point latitude, (degrees) | +| ref_lon | `float64` | | | Reference point longitude, (degrees) | +| ref_alt | `float32` | | | Reference altitude AMSL, (metres) | +| dist_bottom_valid | `bool` | | | true if distance to bottom surface is valid | +| dist_bottom | `float32` | | | Distance from from bottom surface to ground, (metres) | +| dist_bottom_var | `float32` | | | terrain estimate variance (m^2) | +| delta_dist_bottom | `float32` | | | Amount of vertical shift of dist bottom estimate in latest reset [m] | +| dist_bottom_reset_counter | `uint8` | | | Index of latest dist bottom estimate reset | +| dist_bottom_sensor_bitfield | `uint8` | | | bitfield indicating what type of sensor is used to estimate dist_bottom | +| eph | `float32` | | | Standard deviation of horizontal position error, (metres) | +| epv | `float32` | | | Standard deviation of vertical position error, (metres) | +| evh | `float32` | | | Standard deviation of horizontal velocity error, (metres/sec) | +| evv | `float32` | | | Standard deviation of vertical velocity error, (metres/sec) | +| dead_reckoning | `bool` | | | True if this position is estimated through dead-reckoning | +| vxy_max | `float32` | | | maximum horizontal speed - set to 0 when limiting not required (meters/sec) | +| vz_max | `float32` | | | maximum vertical speed - set to 0 when limiting not required (meters/sec) | +| hagl_min | `float32` | | | minimum height above ground level - set to 0 when limiting not required (meters) | +| hagl_max | `float32` | | | maximum height above ground level - set to 0 when limiting not required (meters) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------- | -------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| MESSAGE_VERSION | `uint32` | 0 | | +| DIST_BOTTOM_SENSOR_NONE | `uint8` | 0 | | +| DIST_BOTTOM_SENSOR_RANGE | `uint8` | 1 | (1 << 0) a range sensor is used to estimate dist_bottom field | +| DIST_BOTTOM_SENSOR_FLOW | `uint8` | 2 | (1 << 1) a flow sensor is used to estimate dist_bottom field (mostly fixed-wing use case) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleLocalPositionV0.msg) + +:::details +Click here to see original file ```c # Fused local position in NED. @@ -92,5 +168,6 @@ float32 hagl_max # maximum height above ground level - set to 0 when limiting # TOPICS vehicle_local_position vehicle_local_position_groundtruth external_ins_local_position # TOPICS estimator_local_position - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleMagnetometer.md b/docs/zh/msg_docs/VehicleMagnetometer.md index 5291a0be9b..acc0d2e832 100644 --- a/docs/zh/msg_docs/VehicleMagnetometer.md +++ b/docs/zh/msg_docs/VehicleMagnetometer.md @@ -1,16 +1,38 @@ +--- +pageClass: is-wide-page +--- + # 载具磁力计器 (UORB 消息) -[源文件](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleMagnetometer.msg) +**TOPICS:** vehicle_magnetometer + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| device_id | `uint32` | | | unique device ID for the selected magnetometer | +| magnetometer_ga | `float32[3]` | | | Magnetic field in the FRD body frame XYZ-axis in Gauss | +| calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever calibration changes. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleMagnetometer.msg) + +:::details +Click here to see original file ```c +uint64 timestamp # time since system start (microseconds) -uint64 timestamp # 原始数据的时间戳(微秒) +uint64 timestamp_sample # the timestamp of the raw data (microseconds) -uint64 timestamp_sample # 所选磁力计的唯一设备 ID +uint32 device_id # unique device ID for the selected magnetometer -uint32 device_id # 所选磁力计的唯一设备 ID +float32[3] magnetometer_ga # Magnetic field in the FRD body frame XYZ-axis in Gauss -float32[3] magnetometer_ga # 机体框架 FRD 下,XYZ 轴方向的磁场强度(单位:高斯) - -uint8 calibration_count # 校准变化计数器。每当校准发生变化时,该计数器单调递增。 +uint8 calibration_count # Calibration changed counter. Monotonically increases whenever calibration changes. ``` + +::: diff --git a/docs/zh/msg_docs/VehicleOdometry.md b/docs/zh/msg_docs/VehicleOdometry.md index 4213c23337..92833c5111 100644 --- a/docs/zh/msg_docs/VehicleOdometry.md +++ b/docs/zh/msg_docs/VehicleOdometry.md @@ -1,10 +1,64 @@ +--- +pageClass: is-wide-page +--- + # VehicleOdometry (UORB message) -Vehicle odometry data +Vehicle odometry data. Fits ROS REP 147 for aerial vehicles -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleOdometry.msg) +**TOPICS:** vehicle_odometry vehicle_mocap_odometry vehicle_visual_odometry estimator_odometry + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp sample | +| pose_frame | `uint8` | | [POSE_FRAME](#POSE_FRAME) | Position and orientation frame of reference | +| 位置 | `float32[3]` | m [local frame] | | Position. Origin is position of GC at startup. (Invalid: NaN If invalid/unknown) | +| q | `float32[4]` | | | Attitude (expressed as a quaternion) relative to pose reference frame at current location. Follows the Hamiltonian convention (w, x, y, z, right-handed, passive rotations from body to world) (Invalid: NaN First value if invalid/unknown) | +| velocity_frame | `uint8` | | [VELOCITY_FRAME](#VELOCITY_FRAME) | Reference frame of the velocity data | +| 速度 | `float32[3]` | m/s [@velocity_frame] | | Velocity. (Invalid: NaN If invalid/unknown) | +| angular_velocity | `float32[3]` | rad/s [@VELOCITY_FRAME_BODY_FRD] | | Angular velocity in body-fixed frame (Invalid: NaN If invalid/unknown) | +| position_variance | `float32[3]` | m^2 | | Variance of position error | +| orientation_variance | `float32[3]` | rad^2 | | Variance of orientation/attitude error (expressed in body frame) | +| velocity_variance | `float32[3]` | m^2/s^2 | | Variance of velocity error | +| reset_counter | `uint8` | | | Reset counter. Counts reset events on attitude, velocity and position. | +| quality | `int8` | | | Quality. Unused. (Invalid: 0) | + +## Enums + +### POSE_FRAME {#POSE_FRAME} + +| 参数名 | 类型 | 值 | 描述 | +| ----------------------------------------------------------------------------------------------- | ------- | - | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| POSE_FRAME_UNKNOWN | `uint8` | 0 | Unknown frame | +| POSE_FRAME_NED | `uint8` | 1 | North-East-Down (NED) navigation frame. Aligned with True North. | +| POSE_FRAME_FRD | `uint8` | 2 | Forward-Right-Down (FRD) frame. Constant arbitrary heading offset from True North. Z is down. | + +### VELOCITY_FRAME {#VELOCITY_FRAME} + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------ | ------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| VELOCITY_FRAME_UNKNOWN | `uint8` | 0 | Unknown frame | +| VELOCITY_FRAME_NED | `uint8` | 1 | NED navigation frame at current position. | +| VELOCITY_FRAME_FRD | `uint8` | 2 | FRD navigation frame at current position. Constant arbitrary heading offset from True North. Z is down. | +| VELOCITY_FRAME_BODY_FRD | `uint8` | 3 | FRD body-fixed frame | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleOdometry.msg) + +:::details +Click here to see original file ```c # Vehicle odometry data @@ -42,5 +96,6 @@ int8 quality # [-] [@invalid 0] Quality. Unused. # TOPICS vehicle_odometry vehicle_mocap_odometry vehicle_visual_odometry # TOPICS estimator_odometry - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleOpticalFlow.md b/docs/zh/msg_docs/VehicleOpticalFlow.md index 21bd5ab438..f8b7c0e37a 100644 --- a/docs/zh/msg_docs/VehicleOpticalFlow.md +++ b/docs/zh/msg_docs/VehicleOpticalFlow.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # VehicleOpticalFlow (UORB message) Optical flow in XYZ body frame in SI units. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleOpticalFlow.msg) +**TOPICS:** vehicle_opticalflow + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| pixel_flow | `float32[2]` | | | (radians) accumulated optical flow in radians where a positive value is produced by a RH rotation about the body axis | +| delta_angle | `float32[3]` | | | (radians) accumulated gyro radians where a positive value is produced by a RH rotation of the sensor about the body axis. (NAN if unavailable) | +| distance_m | `float32` | | | (meters) Distance to the center of the flow field (NAN if unavailable) | +| integration_timespan_us | `uint32` | | | (microseconds) accumulation timespan in microseconds | +| quality | `uint8` | | | Average of quality of accumulated frames, 0: bad quality, 255: maximum quality | +| max_flow_rate | `float32` | | | (radians/s) Magnitude of maximum angular which the optical flow sensor can measure reliably | +| min_ground_distance | `float32` | | | (meters) Minimum distance from ground at which the optical flow sensor operates reliably | +| max_ground_distance | `float32` | | | (meters) Maximum distance from ground at which the optical flow sensor operates reliably | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleOpticalFlow.msg) + +:::details +Click here to see original file ```c # Optical flow in XYZ body frame in SI units. @@ -26,5 +53,6 @@ float32 max_flow_rate # (radians/s) Magnitude of maximum angular which float32 min_ground_distance # (meters) Minimum distance from ground at which the optical flow sensor operates reliably float32 max_ground_distance # (meters) Maximum distance from ground at which the optical flow sensor operates reliably - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleOpticalFlowVel.md b/docs/zh/msg_docs/VehicleOpticalFlowVel.md index c8dd307921..4c80655824 100644 --- a/docs/zh/msg_docs/VehicleOpticalFlowVel.md +++ b/docs/zh/msg_docs/VehicleOpticalFlowVel.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # VehicleOpticalFlowVel (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleOpticalFlowVel.msg) +**TOPICS:** estimator_optical_flow_vel vehicle_optical_flow_vel + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| vel_body | `float32[2]` | | | velocity obtained from gyro-compensated and distance-scaled optical flow raw measurements in body frame(m/s) | +| vel_ne | `float32[2]` | | | same as vel_body but in local frame (m/s) | +| vel_body_filtered | `float32[2]` | | | filtered velocity obtained from gyro-compensated and distance-scaled optical flow raw measurements in body frame(m/s) | +| vel_ne_filtered | `float32[2]` | | | filtered same as vel_body_filtered but in local frame (m/s) | +| flow_rate_uncompensated | `float32[2]` | | | integrated optical flow measurement (rad/s) | +| flow_rate_compensated | `float32[2]` | | | integrated optical flow measurement compensated for angular motion (rad/s) | +| gyro_rate | `float32[3]` | | | gyro measurement synchronized with flow measurements (rad/s) | +| gyro_bias | `float32[3]` | | | | +| ref_gyro | `float32[3]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleOpticalFlowVel.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -21,5 +48,6 @@ float32[3] gyro_bias float32[3] ref_gyro # TOPICS estimator_optical_flow_vel vehicle_optical_flow_vel - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleRatesSetpoint.md b/docs/zh/msg_docs/VehicleRatesSetpoint.md index 1281c74091..b27d532257 100644 --- a/docs/zh/msg_docs/VehicleRatesSetpoint.md +++ b/docs/zh/msg_docs/VehicleRatesSetpoint.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # VehicleRatesSetpoint (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleRatesSetpoint.msg) +**TOPICS:** vehicle_ratessetpoint + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ----------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| roll | `float32` | rad/s | | roll rate setpoint | +| pitch | `float32` | rad/s | | pitch rate setpoint | +| yaw | `float32` | rad/s | | yaw rate setpoint | +| thrust_body | `float32[3]` | | | Normalized thrust command in body NED frame [-1,1] | +| reset_integral | `bool` | | | Reset roll/pitch/yaw integrals (navigation logic change) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleRatesSetpoint.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -17,5 +45,6 @@ float32 yaw # [rad/s] yaw rate setpoint float32[3] thrust_body # Normalized thrust command in body NED frame [-1,1] bool reset_integral # Reset roll/pitch/yaw integrals (navigation logic change) - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleRoi.md b/docs/zh/msg_docs/VehicleRoi.md index 9f3533e29f..b94ec08e34 100644 --- a/docs/zh/msg_docs/VehicleRoi.md +++ b/docs/zh/msg_docs/VehicleRoi.md @@ -1,8 +1,43 @@ +--- +pageClass: is-wide-page +--- + # VehicleRoi (UORB message) -Vehicle Region Of Interest (ROI) +Vehicle Region Of Interest (ROI). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleRoi.msg) +**TOPICS:** vehicle_roi + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mode | `uint8` | | | ROI mode (see above) | +| lat | `float64` | | | Latitude to point to | +| lon | `float64` | | | Longitude to point to | +| alt | `float32` | | | Altitude to point to | +| roll_offset | `float32` | | | angle offset in rad | +| pitch_offset | `float32` | | | angle offset in rad | +| yaw_offset | `float32` | | | angle offset in rad | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ----------------------------------------------------------------------------------- | ------- | - | ---------------------------------------------- | +| ROI_NONE | `uint8` | 0 | No region of interest | +| ROI_WPNEXT | `uint8` | 1 | Point toward next MISSION with optional offset | +| ROI_WPINDEX | `uint8` | 2 | Point toward given MISSION | +| ROI_LOCATION | `uint8` | 3 | Point toward fixed location | +| ROI_TARGET | `uint8` | 4 | Point toward target | +| ROI_ENUM_END | `uint8` | 5 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleRoi.msg) + +:::details +Click here to see original file ```c # Vehicle Region Of Interest (ROI) @@ -26,5 +61,6 @@ float32 alt # Altitude to point to float32 roll_offset # angle offset in rad float32 pitch_offset # angle offset in rad float32 yaw_offset # angle offset in rad - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleStatus.md b/docs/zh/msg_docs/VehicleStatus.md index 05e3f98bbb..578226b0fc 100644 --- a/docs/zh/msg_docs/VehicleStatus.md +++ b/docs/zh/msg_docs/VehicleStatus.md @@ -1,8 +1,131 @@ +--- +pageClass: is-wide-page +--- + # VehicleStatus (UORB message) -Encodes the system state of the vehicle published by commander +Encodes the system state of the vehicle published by commander. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleStatus.msg) +**TOPICS:** vehicle_status + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| armed_time | `uint64` | | | Arming timestamp (microseconds) | +| takeoff_time | `uint64` | | | Takeoff timestamp (microseconds) | +| arming_state | `uint8` | | | | +| latest_arming_reason | `uint8` | | | | +| latest_disarming_reason | `uint8` | | | | +| nav_state_timestamp | `uint64` | | | time when current nav_state activated | +| nav_state_user_intention | `uint8` | | | Mode that the user selected (might be different from nav_state in a failsafe situation) | +| nav_state | `uint8` | | | Currently active mode | +| executor_in_charge | `uint8` | | | Current mode executor in charge (0=Autopilot) | +| valid_nav_states_mask | `uint32` | | | Bitmask for all valid nav_state values | +| can_set_nav_states_mask | `uint32` | | | Bitmask for all modes that a user can select | +| failure_detector_status | `uint16` | | | | +| hil_state | `uint8` | | | | +| vehicle_type | `uint8` | | | | +| failsafe | `bool` | | | true if system is in failsafe state (e.g.:RTL, Hover, Terminate, ...) | +| failsafe_and_user_took_over | `bool` | | | true if system is in failsafe state but the user took over control | +| failsafe_defer_state | `uint8` | | | one of FAILSAFE_DEFER_STATE_\* | +| gcs_connection_lost | `bool` | | | datalink to GCS lost | +| gcs_connection_lost_counter | `uint8` | | | counts unique GCS connection lost events | +| high_latency_data_link_lost | `bool` | | | Set to true if the high latency data link (eg. RockBlock Iridium 9603 telemetry module) is lost | +| is_vtol | `bool` | | | True if the system is VTOL capable | +| is_vtol_tailsitter | `bool` | | | True if the system performs a 90° pitch down rotation during transition from MC to FW | +| in_transition_mode | `bool` | | | True if VTOL is doing a transition | +| in_transition_to_fw | `bool` | | | True if VTOL is doing a transition from MC to FW | +| system_type | `uint8` | | | system type, contains mavlink MAV_TYPE | +| system_id | `uint8` | | | system id, contains MAVLink's system ID field | +| component_id | `uint8` | | | subsystem / component id, contains MAVLink's component ID field | +| safety_button_available | `bool` | | | Set to true if a safety button is connected | +| safety_off | `bool` | | | Set to true if safety is off | +| power_input_valid | `bool` | | | set if input power is valid | +| usb_connected | `bool` | | | set to true (never cleared) once telemetry received from usb link | +| open_drone_id_system_present | `bool` | | | | +| open_drone_id_system_healthy | `bool` | | | | +| parachute_system_present | `bool` | | | | +| parachute_system_healthy | `bool` | | | | +| rc_calibration_in_progress | `bool` | | | | +| calibration_enabled | `bool` | | | | +| pre_flight_checks_pass | `bool` | | | true if all checks necessary to arm pass | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | --- | ----------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 1 | | +| ARMING_STATE_DISARMED | `uint8` | 1 | | +| ARMING_STATE_ARMED | `uint8` | 2 | | +| ARM_DISARM_REASON_STICK_GESTURE | `uint8` | 1 | | +| ARM_DISARM_REASON_RC_SWITCH | `uint8` | 2 | | +| ARM_DISARM_REASON_COMMAND_INTERNAL | `uint8` | 3 | | +| ARM_DISARM_REASON_COMMAND_EXTERNAL | `uint8` | 4 | | +| ARM_DISARM_REASON_MISSION_START | `uint8` | 5 | | +| ARM_DISARM_REASON_LANDING | `uint8` | 6 | | +| ARM_DISARM_REASON_PREFLIGHT_INACTION | `uint8` | 7 | | +| ARM_DISARM_REASON_KILL_SWITCH | `uint8` | 8 | | +| ARM_DISARM_REASON_RC_BUTTON | `uint8` | 13 | | +| ARM_DISARM_REASON_FAILSAFE | `uint8` | 14 | | +| NAVIGATION_STATE_MANUAL | `uint8` | 0 | Manual mode | +| NAVIGATION_STATE_ALTCTL | `uint8` | 1 | Altitude control mode | +| NAVIGATION_STATE_POSCTL | `uint8` | 2 | Position control mode | +| NAVIGATION_STATE_AUTO_MISSION | `uint8` | 3 | Auto mission mode | +| NAVIGATION_STATE_AUTO_LOITER | `uint8` | 4 | Auto loiter mode | +| NAVIGATION_STATE_AUTO_RTL | `uint8` | 5 | Auto return to launch mode | +| NAVIGATION_STATE_POSITION_SLOW | `uint8` | 6 | | +| NAVIGATION_STATE_FREE5 | `uint8` | 7 | | +| NAVIGATION_STATE_ALTITUDE_CRUISE | `uint8` | 8 | Altitude with Cruise mode | +| NAVIGATION_STATE_FREE3 | `uint8` | 9 | | +| NAVIGATION_STATE_ACRO | `uint8` | 10 | Acro mode | +| NAVIGATION_STATE_FREE2 | `uint8` | 11 | | +| NAVIGATION_STATE_DESCEND | `uint8` | 12 | Descend mode (no position control) | +| NAVIGATION_STATE_TERMINATION | `uint8` | 13 | Termination mode | +| NAVIGATION_STATE_OFFBOARD | `uint8` | 14 | | +| NAVIGATION_STATE_STAB | `uint8` | 15 | Stabilized mode | +| NAVIGATION_STATE_FREE1 | `uint8` | 16 | | +| NAVIGATION_STATE_AUTO_TAKEOFF | `uint8` | 17 | Takeoff | +| NAVIGATION_STATE_AUTO_LAND | `uint8` | 18 | Land | +| NAVIGATION_STATE_AUTO_FOLLOW_TARGET | `uint8` | 19 | Auto Follow | +| NAVIGATION_STATE_AUTO_PRECLAND | `uint8` | 20 | Precision land with landing target | +| NAVIGATION_STATE_ORBIT | `uint8` | 21 | Orbit in a circle | +| NAVIGATION_STATE_AUTO_VTOL_TAKEOFF | `uint8` | 22 | Takeoff, transition, establish loiter | +| NAVIGATION_STATE_EXTERNAL1 | `uint8` | 23 | | +| NAVIGATION_STATE_EXTERNAL2 | `uint8` | 24 | | +| NAVIGATION_STATE_EXTERNAL3 | `uint8` | 25 | | +| NAVIGATION_STATE_EXTERNAL4 | `uint8` | 26 | | +| NAVIGATION_STATE_EXTERNAL5 | `uint8` | 27 | | +| NAVIGATION_STATE_EXTERNAL6 | `uint8` | 28 | | +| NAVIGATION_STATE_EXTERNAL7 | `uint8` | 29 | | +| NAVIGATION_STATE_EXTERNAL8 | `uint8` | 30 | | +| NAVIGATION_STATE_MAX | `uint8` | 31 | | +| FAILURE_NONE | `uint16` | 0 | | +| FAILURE_ROLL | `uint16` | 1 | (1 << 0) | +| FAILURE_PITCH | `uint16` | 2 | (1 << 1) | +| FAILURE_ALT | `uint16` | 4 | (1 << 2) | +| FAILURE_EXT | `uint16` | 8 | (1 << 3) | +| FAILURE_ARM_ESC | `uint16` | 16 | (1 << 4) | +| FAILURE_BATTERY | `uint16` | 32 | (1 << 5) | +| FAILURE_IMBALANCED_PROP | `uint16` | 64 | (1 << 6) | +| FAILURE_MOTOR | `uint16` | 128 | (1 << 7) | +| HIL_STATE_OFF | `uint8` | 0 | | +| HIL_STATE_ON | `uint8` | 1 | | +| VEHICLE_TYPE_UNSPECIFIED | `uint8` | 0 | | +| VEHICLE_TYPE_ROTARY_WING | `uint8` | 1 | | +| VEHICLE_TYPE_FIXED_WING | `uint8` | 2 | | +| VEHICLE_TYPE_ROVER | `uint8` | 3 | | +| FAILSAFE_DEFER_STATE_DISABLED | `uint8` | 0 | | +| FAILSAFE_DEFER_STATE_ENABLED | `uint8` | 1 | | +| FAILSAFE_DEFER_STATE_WOULD_FAILSAFE | `uint8` | 2 | Failsafes deferred, but would trigger a failsafe | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleStatus.msg) + +:::details +Click here to see original file ```c # Encodes the system state of the vehicle published by commander @@ -137,5 +260,6 @@ bool rc_calibration_in_progress bool calibration_enabled bool pre_flight_checks_pass # true if all checks necessary to arm pass - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleStatusV0.md b/docs/zh/msg_docs/VehicleStatusV0.md index 9a91186524..ea613f8ab1 100644 --- a/docs/zh/msg_docs/VehicleStatusV0.md +++ b/docs/zh/msg_docs/VehicleStatusV0.md @@ -1,8 +1,138 @@ +--- +pageClass: is-wide-page +--- + # VehicleStatusV0 (UORB message) -Encodes the system state of the vehicle published by commander +Encodes the system state of the vehicle published by commander. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleStatusV0.msg) +**TOPICS:** vehicle_statusv0 + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| armed_time | `uint64` | | | Arming timestamp (microseconds) | +| takeoff_time | `uint64` | | | Takeoff timestamp (microseconds) | +| arming_state | `uint8` | | | | +| latest_arming_reason | `uint8` | | | | +| latest_disarming_reason | `uint8` | | | | +| nav_state_timestamp | `uint64` | | | time when current nav_state activated | +| nav_state_user_intention | `uint8` | | | Mode that the user selected (might be different from nav_state in a failsafe situation) | +| nav_state | `uint8` | | | Currently active mode | +| executor_in_charge | `uint8` | | | Current mode executor in charge (0=Autopilot) | +| valid_nav_states_mask | `uint32` | | | Bitmask for all valid nav_state values | +| can_set_nav_states_mask | `uint32` | | | Bitmask for all modes that a user can select | +| failure_detector_status | `uint16` | | | | +| hil_state | `uint8` | | | | +| vehicle_type | `uint8` | | | | +| failsafe | `bool` | | | true if system is in failsafe state (e.g.:RTL, Hover, Terminate, ...) | +| failsafe_and_user_took_over | `bool` | | | true if system is in failsafe state but the user took over control | +| failsafe_defer_state | `uint8` | | | one of FAILSAFE_DEFER_STATE_\* | +| gcs_connection_lost | `bool` | | | datalink to GCS lost | +| gcs_connection_lost_counter | `uint8` | | | counts unique GCS connection lost events | +| high_latency_data_link_lost | `bool` | | | Set to true if the high latency data link (eg. RockBlock Iridium 9603 telemetry module) is lost | +| is_vtol | `bool` | | | True if the system is VTOL capable | +| is_vtol_tailsitter | `bool` | | | True if the system performs a 90° pitch down rotation during transition from MC to FW | +| in_transition_mode | `bool` | | | True if VTOL is doing a transition | +| in_transition_to_fw | `bool` | | | True if VTOL is doing a transition from MC to FW | +| system_type | `uint8` | | | system type, contains mavlink MAV_TYPE | +| system_id | `uint8` | | | system id, contains MAVLink's system ID field | +| component_id | `uint8` | | | subsystem / component id, contains MAVLink's component ID field | +| safety_button_available | `bool` | | | Set to true if a safety button is connected | +| safety_off | `bool` | | | Set to true if safety is off | +| power_input_valid | `bool` | | | set if input power is valid | +| usb_connected | `bool` | | | set to true (never cleared) once telemetry received from usb link | +| open_drone_id_system_present | `bool` | | | | +| open_drone_id_system_healthy | `bool` | | | | +| parachute_system_present | `bool` | | | | +| parachute_system_healthy | `bool` | | | | +| avoidance_system_required | `bool` | | | Set to true if avoidance system is enabled via COM_OBS_AVOID parameter | +| avoidance_system_valid | `bool` | | | Status of the obstacle avoidance system | +| rc_calibration_in_progress | `bool` | | | | +| calibration_enabled | `bool` | | | | +| pre_flight_checks_pass | `bool` | | | true if all checks necessary to arm pass | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | --- | ----------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ARMING_STATE_DISARMED | `uint8` | 1 | | +| ARMING_STATE_ARMED | `uint8` | 2 | | +| ARM_DISARM_REASON_TRANSITION_TO_STANDBY | `uint8` | 0 | | +| ARM_DISARM_REASON_STICK_GESTURE | `uint8` | 1 | | +| ARM_DISARM_REASON_RC_SWITCH | `uint8` | 2 | | +| ARM_DISARM_REASON_COMMAND_INTERNAL | `uint8` | 3 | | +| ARM_DISARM_REASON_COMMAND_EXTERNAL | `uint8` | 4 | | +| ARM_DISARM_REASON_MISSION_START | `uint8` | 5 | | +| ARM_DISARM_REASON_SAFETY_BUTTON | `uint8` | 6 | | +| ARM_DISARM_REASON_AUTO_DISARM_LAND | `uint8` | 7 | | +| ARM_DISARM_REASON_AUTO_DISARM_PREFLIGHT | `uint8` | 8 | | +| ARM_DISARM_REASON_KILL_SWITCH | `uint8` | 9 | | +| ARM_DISARM_REASON_LOCKDOWN | `uint8` | 10 | | +| ARM_DISARM_REASON_FAILURE_DETECTOR | `uint8` | 11 | | +| ARM_DISARM_REASON_SHUTDOWN | `uint8` | 12 | | +| ARM_DISARM_REASON_UNIT_TEST | `uint8` | 13 | | +| NAVIGATION_STATE_MANUAL | `uint8` | 0 | Manual mode | +| NAVIGATION_STATE_ALTCTL | `uint8` | 1 | Altitude control mode | +| NAVIGATION_STATE_POSCTL | `uint8` | 2 | Position control mode | +| NAVIGATION_STATE_AUTO_MISSION | `uint8` | 3 | Auto mission mode | +| NAVIGATION_STATE_AUTO_LOITER | `uint8` | 4 | Auto loiter mode | +| NAVIGATION_STATE_AUTO_RTL | `uint8` | 5 | Auto return to launch mode | +| NAVIGATION_STATE_POSITION_SLOW | `uint8` | 6 | | +| NAVIGATION_STATE_FREE5 | `uint8` | 7 | | +| NAVIGATION_STATE_FREE4 | `uint8` | 8 | | +| NAVIGATION_STATE_FREE3 | `uint8` | 9 | | +| NAVIGATION_STATE_ACRO | `uint8` | 10 | Acro mode | +| NAVIGATION_STATE_FREE2 | `uint8` | 11 | | +| NAVIGATION_STATE_DESCEND | `uint8` | 12 | Descend mode (no position control) | +| NAVIGATION_STATE_TERMINATION | `uint8` | 13 | Termination mode | +| NAVIGATION_STATE_OFFBOARD | `uint8` | 14 | | +| NAVIGATION_STATE_STAB | `uint8` | 15 | Stabilized mode | +| NAVIGATION_STATE_FREE1 | `uint8` | 16 | | +| NAVIGATION_STATE_AUTO_TAKEOFF | `uint8` | 17 | Takeoff | +| NAVIGATION_STATE_AUTO_LAND | `uint8` | 18 | Land | +| NAVIGATION_STATE_AUTO_FOLLOW_TARGET | `uint8` | 19 | Auto Follow | +| NAVIGATION_STATE_AUTO_PRECLAND | `uint8` | 20 | Precision land with landing target | +| NAVIGATION_STATE_ORBIT | `uint8` | 21 | Orbit in a circle | +| NAVIGATION_STATE_AUTO_VTOL_TAKEOFF | `uint8` | 22 | Takeoff, transition, establish loiter | +| NAVIGATION_STATE_EXTERNAL1 | `uint8` | 23 | | +| NAVIGATION_STATE_EXTERNAL2 | `uint8` | 24 | | +| NAVIGATION_STATE_EXTERNAL3 | `uint8` | 25 | | +| NAVIGATION_STATE_EXTERNAL4 | `uint8` | 26 | | +| NAVIGATION_STATE_EXTERNAL5 | `uint8` | 27 | | +| NAVIGATION_STATE_EXTERNAL6 | `uint8` | 28 | | +| NAVIGATION_STATE_EXTERNAL7 | `uint8` | 29 | | +| NAVIGATION_STATE_EXTERNAL8 | `uint8` | 30 | | +| NAVIGATION_STATE_MAX | `uint8` | 31 | | +| FAILURE_NONE | `uint16` | 0 | | +| FAILURE_ROLL | `uint16` | 1 | (1 << 0) | +| FAILURE_PITCH | `uint16` | 2 | (1 << 1) | +| FAILURE_ALT | `uint16` | 4 | (1 << 2) | +| FAILURE_EXT | `uint16` | 8 | (1 << 3) | +| FAILURE_ARM_ESC | `uint16` | 16 | (1 << 4) | +| FAILURE_BATTERY | `uint16` | 32 | (1 << 5) | +| FAILURE_IMBALANCED_PROP | `uint16` | 64 | (1 << 6) | +| FAILURE_MOTOR | `uint16` | 128 | (1 << 7) | +| HIL_STATE_OFF | `uint8` | 0 | | +| HIL_STATE_ON | `uint8` | 1 | | +| VEHICLE_TYPE_UNKNOWN | `uint8` | 0 | | +| VEHICLE_TYPE_ROTARY_WING | `uint8` | 1 | | +| VEHICLE_TYPE_FIXED_WING | `uint8` | 2 | | +| VEHICLE_TYPE_ROVER | `uint8` | 3 | | +| VEHICLE_TYPE_AIRSHIP | `uint8` | 4 | | +| FAILSAFE_DEFER_STATE_DISABLED | `uint8` | 0 | | +| FAILSAFE_DEFER_STATE_ENABLED | `uint8` | 1 | | +| FAILSAFE_DEFER_STATE_WOULD_FAILSAFE | `uint8` | 2 | Failsafes deferred, but would trigger a failsafe | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleStatusV0.msg) + +:::details +Click here to see original file ```c # Encodes the system state of the vehicle published by commander @@ -145,5 +275,6 @@ bool rc_calibration_in_progress bool calibration_enabled bool pre_flight_checks_pass # true if all checks necessary to arm pass - ``` + +::: diff --git a/docs/zh/msg_docs/VehicleThrustSetpoint.md b/docs/zh/msg_docs/VehicleThrustSetpoint.md index 8e6941cb25..2ed564e3d6 100644 --- a/docs/zh/msg_docs/VehicleThrustSetpoint.md +++ b/docs/zh/msg_docs/VehicleThrustSetpoint.md @@ -1,15 +1,34 @@ +--- +pageClass: is-wide-page +--- + # 载具推力设定点(UORB 消息) -[源文件](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleThrustSetpoint.msg) +**TOPICS:** vehicle_thrust_setpoint vehicle_thrust_setpoint_virtual_fw vehicle_thrust_setpoint_virtual_mc + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | timestamp of the data sample on which this message is based (microseconds) | +| xyz | `float32[3]` | | | thrust setpoint along X, Y, Z body axis [-1, 1] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleThrustSetpoint.msg) + +:::details +Click here to see original file ```c +uint64 timestamp # time since system start (microseconds) +uint64 timestamp_sample # timestamp of the data sample on which this message is based (microseconds) -uint64 timeestamp # 从系统启动起的时间(微秒) -uint64 timestamp_samp #此消息所基于的数据样本的时间戳(微秒) - -float32[3] xyz # 沿机体 X、Y、Z 轴的推力设定点 [ - 1, 1] - -# TOPICS vehicle_thent_setpoint -# TOPICS vehicle_thentust_setpoint_virtual_fw vehicle_thent_setpoint_virtual_mc +float32[3] xyz # thrust setpoint along X, Y, Z body axis [-1, 1] +# TOPICS vehicle_thrust_setpoint +# TOPICS vehicle_thrust_setpoint_virtual_fw vehicle_thrust_setpoint_virtual_mc ``` + +::: diff --git a/docs/zh/msg_docs/VehicleTorqueSetpoint.md b/docs/zh/msg_docs/VehicleTorqueSetpoint.md index 2fccc89f42..85e7822682 100644 --- a/docs/zh/msg_docs/VehicleTorqueSetpoint.md +++ b/docs/zh/msg_docs/VehicleTorqueSetpoint.md @@ -1,9 +1,27 @@ +--- +pageClass: is-wide-page +--- + # VehicleTorqueSetpoint (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleTorqueSetpoint.msg) +**TOPICS:** vehicle_torque_setpoint vehicle_torque_setpoint_virtual_fw vehicle_torque_setpoint_virtual_mc + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | timestamp of the data sample on which this message is based (microseconds) | +| xyz | `float32[3]` | | | torque setpoint about X, Y, Z body axis (normalized) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleTorqueSetpoint.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint64 timestamp_sample # timestamp of the data sample on which this message is based (microseconds) @@ -11,5 +29,6 @@ float32[3] xyz # torque setpoint about X, Y, Z body axis (normalized) # TOPICS vehicle_torque_setpoint # TOPICS vehicle_torque_setpoint_virtual_fw vehicle_torque_setpoint_virtual_mc - ``` + +::: diff --git a/docs/zh/msg_docs/VelocityLimits.md b/docs/zh/msg_docs/VelocityLimits.md index 8c5e8b70a0..4b21d9d754 100644 --- a/docs/zh/msg_docs/VelocityLimits.md +++ b/docs/zh/msg_docs/VelocityLimits.md @@ -1,16 +1,38 @@ +--- +pageClass: is-wide-page +--- + # 速度限制 (UORB 消息) -仅适用于多旋翼飞行器位置慢速模式的速度和偏航率限制 +Velocity and yaw rate limits for a multicopter position slow mode only. -[源文件](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VelocityLimits.msg) +**TOPICS:** velocity_limits + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| horizontal_velocity | `float32` | 米/秒 | | | +| vertical_velocity | `float32` | 米/秒 | | | +| yaw_rate | `float32` | rad/s | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VelocityLimits.msg) + +:::details +Click here to see original file ```c -# 多片段位置的速度和yaw 率限制仅限 +# Velocity and yaw rate limits for a multicopter position slow mode only -uint64 时间戳 # 系统启动后的时间 (微秒) +uint64 timestamp # time since system start (microseconds) -# 绝对速度, NAN 表示使用默认限制 -float32 水平速度 # [m/] -float32 vertical_速度 # [m/] -float32 yaw_rate # [rad/] +# absolute speeds, NAN means use default limit +float32 horizontal_velocity # [m/s] +float32 vertical_velocity # [m/s] +float32 yaw_rate # [rad/s] ``` + +::: diff --git a/docs/zh/msg_docs/VtolVehicleStatus.md b/docs/zh/msg_docs/VtolVehicleStatus.md index a271005673..99e88e333c 100644 --- a/docs/zh/msg_docs/VtolVehicleStatus.md +++ b/docs/zh/msg_docs/VtolVehicleStatus.md @@ -1,8 +1,38 @@ +--- +pageClass: is-wide-page +--- + # VtolVehicleStatus (UORB message) -VEHICLE_VTOL_STATE, should match 1:1 MAVLinks's MAV_VTOL_STATE +VEHICLE_VTOL_STATE, should match 1:1 MAVLinks's MAV_VTOL_STATE. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VtolVehicleStatus.msg) +**TOPICS:** vtol_vehiclestatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ---------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| vehicle_vtol_state | `uint8` | | | current state of the vtol, see VEHICLE_VTOL_STATE | +| fixed_wing_system_failure | `bool` | | | vehicle in fixed-wing system failure failsafe mode (after quad-chute) | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| VEHICLE_VTOL_STATE_UNDEFINED | `uint8` | 0 | | +| VEHICLE_VTOL_STATE_TRANSITION_TO_FW | `uint8` | 1 | | +| VEHICLE_VTOL_STATE_TRANSITION_TO_MC | `uint8` | 2 | | +| VEHICLE_VTOL_STATE_MC | `uint8` | 3 | | +| VEHICLE_VTOL_STATE_FW | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VtolVehicleStatus.msg) + +:::details +Click here to see original file ```c # VEHICLE_VTOL_STATE, should match 1:1 MAVLinks's MAV_VTOL_STATE @@ -20,5 +50,6 @@ uint64 timestamp # time since system start (microseconds) uint8 vehicle_vtol_state # current state of the vtol, see VEHICLE_VTOL_STATE bool fixed_wing_system_failure # vehicle in fixed-wing system failure failsafe mode (after quad-chute) - ``` + +::: diff --git a/docs/zh/msg_docs/Vtx.md b/docs/zh/msg_docs/Vtx.md new file mode 100644 index 0000000000..22ec9c8b2f --- /dev/null +++ b/docs/zh/msg_docs/Vtx.md @@ -0,0 +1,84 @@ +--- +pageClass: is-wide-page +--- + +# Vtx (UORB message) + +**TOPICS:** vtx + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| protocol | `uint8` | | | | +| device | `uint8` | | | | +| mode | `uint8` | | | | +| band | `int8` | | | Band number (0-23), negative values indicate frequency mode | +| channel | `int8` | | | Channel number (0-15), negative values indicate frequency mode | +| frequency | `uint16` | | | Frequency in MHz, zero indicates unknown | +| band_letter | `uint8` | | | Band letter as ASCII | +| band_name | `uint8[12]` | | | Band name in ASCII without null termination | +| power_level | `int8` | | | Current power level (0-15), negative values indicate unknown | +| power_label | `uint8[4]` | | | Current power label in ASCII without null termination | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | --- | ----------------------------------------- | +| BAND_NAME_LENGTH | `uint8` | 12 | | +| POWER_LABEL_LENGTH | `uint8` | 4 | | +| PROTOCOL_NONE | `uint8` | 0 | No protocol is detected, usually an error | +| PROTOCOL_SMART_AUDIO_V1 | `uint8` | 10 | | +| PROTOCOL_SMART_AUDIO_V2 | `uint8` | 20 | | +| PROTOCOL_SMART_AUDIO_V2_1 | `uint8` | 21 | | +| PROTOCOL_TRAMP | `uint8` | 100 | | +| DEVICE_UNKNOWN | `uint8` | 0 | | +| DEVICE_PEAK_THOR_T67 | `uint8` | 20 | | +| DEVICE_RUSH_MAX_SOLO | `uint8` | 40 | | +| MODE_NORMAL | `uint8` | 0 | | +| MODE_PIT | `uint8` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Vtx.msg) + +:::details +Click here to see original file + +```c +uint64 timestamp # time since system start (microseconds) + +uint8 BAND_NAME_LENGTH = 12 +uint8 POWER_LABEL_LENGTH = 4 + +uint8 PROTOCOL_NONE = 0 # No protocol is detected, usually an error +uint8 PROTOCOL_SMART_AUDIO_V1 = 10 +uint8 PROTOCOL_SMART_AUDIO_V2 = 20 +uint8 PROTOCOL_SMART_AUDIO_V2_1 = 21 +uint8 PROTOCOL_TRAMP = 100 +uint8 protocol + +uint8 DEVICE_UNKNOWN = 0 +uint8 DEVICE_PEAK_THOR_T67 = 20 +uint8 DEVICE_RUSH_MAX_SOLO = 40 +uint8 device + +uint8 MODE_NORMAL = 0 +uint8 MODE_PIT = 1 +uint8 mode + +# Band and Channel are 0-indexed! But the user expects a 1-indexed display! +int8 band # Band number (0-23), negative values indicate frequency mode +int8 channel # Channel number (0-15), negative values indicate frequency mode +uint16 frequency # Frequency in MHz, zero indicates unknown + +uint8 band_letter # Band letter as ASCII +uint8[12] band_name # Band name in ASCII without null termination + +# Also 0-indexed, but the user expects a 1-indexed display! +int8 power_level # Current power level (0-15), negative values indicate unknown +uint8[4] power_label # Current power label in ASCII without null termination +``` + +::: diff --git a/docs/zh/msg_docs/WheelEncoders.md b/docs/zh/msg_docs/WheelEncoders.md index 4c9950525e..ea64375433 100644 --- a/docs/zh/msg_docs/WheelEncoders.md +++ b/docs/zh/msg_docs/WheelEncoders.md @@ -1,11 +1,32 @@ +--- +pageClass: is-wide-page +--- + # 滚轮编码器 (UORB 消息) -[源文件](https://github.com/PX4/PX4-Autopilot/blob/main/msg/WheelEncoders.msg) +**TOPICS:** wheel_encoders + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| wheel_speed | `float32[2]` | rad/s | | | +| wheel_angle | `float32[2]` | rad | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/WheelEncoders.msg) + +:::details +Click here to see original file ```c -uint64 timestamp #系统启动后的时间(微秒) +uint64 timestamp # time since system start (microseconds) # Two wheels: 0 right, 1 left float32[2] wheel_speed # [rad/s] float32[2] wheel_angle # [rad] ``` + +::: diff --git a/docs/zh/msg_docs/Wind.md b/docs/zh/msg_docs/Wind.md index 7ddb2e62eb..ccc25c2d3a 100644 --- a/docs/zh/msg_docs/Wind.md +++ b/docs/zh/msg_docs/Wind.md @@ -1,11 +1,43 @@ +--- +pageClass: is-wide-page +--- + # Wind (UORB message) -Wind estimate (from EKF2) +Wind estimate (from EKF2). Contains the system-wide estimate of horizontal wind velocity and its variance. Published by the navigation filter (EKF2) for use by other flight modules and libraries. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/Wind.msg) +**TOPICS:** wind estimator_wind + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| -------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp of the raw data | +| windspeed_north | `float32` | 米/秒 | | Wind component in north / X direction | +| windspeed_east | `float32` | 米/秒 | | Wind component in east / Y direction | +| variance_north | `float32` | (m/s)^2 | | Wind estimate error variance in north / X direction (Invalid: 0 if not estimated) | +| variance_east | `float32` | (m/s)^2 | | Wind estimate error variance in east / Y direction (Invalid: 0 if not estimated) | +| tas_innov | `float32` | 米/秒 | | True airspeed innovation | +| tas_innov_var | `float32` | (m/s)^2 | | True airspeed innovation variance | +| beta_innov | `float32` | rad | | Sideslip measurement innovation | +| beta_innov_var | `float32` | rad^2 | | Sideslip measurement innovation variance | + +## Constants + +| 参数名 | 类型 | 值 | 描述 | +| -------------------------------------------------------------------- | -------- | - | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/Wind.msg) + +:::details +Click here to see original file ```c # Wind estimate (from EKF2) @@ -31,5 +63,6 @@ float32 beta_innov # [rad] Sideslip measurement innovation float32 beta_innov_var # [rad^2] Sideslip measurement innovation variance # TOPICS wind estimator_wind - ``` + +::: diff --git a/docs/zh/msg_docs/YawEstimatorStatus.md b/docs/zh/msg_docs/YawEstimatorStatus.md index 88bc5614ec..74521ece52 100644 --- a/docs/zh/msg_docs/YawEstimatorStatus.md +++ b/docs/zh/msg_docs/YawEstimatorStatus.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # YawEstimatorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/YawEstimatorStatus.msg) +**TOPICS:** yaw_estimatorstatus + +## Fields + +| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| yaw_composite | `float32` | | | composite yaw from GSF (rad) | +| yaw_variance | `float32` | | | composite yaw variance from GSF (rad^2) | +| yaw_composite_valid | `bool` | | | | +| yaw | `float32[5]` | | | yaw estimate for each model in the filter bank (rad) | +| innov_vn | `float32[5]` | | | North velocity innovation for each model in the filter bank (m/s) | +| innov_ve | `float32[5]` | | | East velocity innovation for each model in the filter bank (m/s) | +| weight | `float32[5]` | | | weighting for each model in the filter bank | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/YawEstimatorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +39,6 @@ float32[5] yaw # yaw estimate for each model in the filter bank (rad) float32[5] innov_vn # North velocity innovation for each model in the filter bank (m/s) float32[5] innov_ve # East velocity innovation for each model in the filter bank (m/s) float32[5] weight # weighting for each model in the filter bank - ``` + +::: diff --git a/docs/zh/msg_docs/index.md b/docs/zh/msg_docs/index.md index 10c21f35f0..b36a58c735 100644 --- a/docs/zh/msg_docs/index.md +++ b/docs/zh/msg_docs/index.md @@ -13,90 +13,63 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m ## Versioned Messages -- [ActuatorMotors](ActuatorMotors.md) — Motor control message -- [ActuatorServos](ActuatorServos.md) — Servo control message -- [AirspeedValidated](AirspeedValidated.md) — Validated airspeed -- [ArmingCheckReply](ArmingCheckReply.md) — Arming check reply -- [ArmingCheckRequest](ArmingCheckRequest.md) — Arming check request -- [BatteryStatus](BatteryStatus.md) — Battery status -- [ConfigOverrides](ConfigOverrides.md) — Configurable overrides by (external) modes or mode executors -- [Event](Event.md) — Events interface -- [FixedWingLateralSetpoint](FixedWingLateralSetpoint.md) — Fixed Wing Lateral Setpoint message - Used by the fw_lateral_longitudinal_control module - At least one of course, airspeed_direction, or lateral_acceleration must be finite. -- [FixedWingLongitudinalSetpoint](FixedWingLongitudinalSetpoint.md) — Fixed Wing Longitudinal Setpoint message - Used by the fw_lateral_longitudinal_control module - If pitch_direct and throttle_direct are not both finite, then the controller relies on altitude/height_rate and equivalent_airspeed to control vertical motion. - If both altitude and height_rate are NAN, the controller maintains the current altitude. -- [GotoSetpoint](GotoSetpoint.md) — Position and (optional) heading setpoints with corresponding speed constraints - Setpoints are intended as inputs to position and heading smoothers, respectively - Setpoints do not need to be kinematically consistent - Optional heading setpoints may be specified as controlled by the respective flag - Unset optional setpoints are not controlled - Unset optional constraints default to vehicle specifications +- [ActuatorMotors](ActuatorMotors.md) — Motor control message. +- [ActuatorServos](ActuatorServos.md) — Servo control message. +- [AirspeedValidated](AirspeedValidated.md) — Validated airspeed. +- [ArmingCheckReply](ArmingCheckReply.md) — Arming check reply. +- [ArmingCheckRequest](ArmingCheckRequest.md) — Arming check request. +- [BatteryStatus](BatteryStatus.md) — Battery status. +- [ConfigOverrides](ConfigOverrides.md) — Configurable overrides by (external) modes or mode executors. +- [Event](Event.md) — Events interface. +- [FixedWingLateralSetpoint](FixedWingLateralSetpoint.md) — Fixed Wing Lateral Setpoint message. Used by the fw_lateral_longitudinal_control module. At least one of course, airspeed_direction, or lateral_acceleration must be finite. +- [FixedWingLongitudinalSetpoint](FixedWingLongitudinalSetpoint.md) — Fixed Wing Longitudinal Setpoint message. Used by the fw_lateral_longitudinal_control module. If pitch_direct and throttle_direct are not both finite, then the controller relies on altitude/height_rate and equivalent_airspeed to control vertical motion. If both altitude and height_rate are NAN, the controller maintains the current altitude. +- [GotoSetpoint](GotoSetpoint.md) — Position and (optional) heading setpoints with corresponding speed constraints. Setpoints are intended as inputs to position and heading smoothers, respectively. Setpoints do not need to be kinematically consistent. Optional heading setpoints may be specified as controlled by the respective flag. Unset optional setpoints are not controlled. Unset optional constraints default to vehicle specifications. - [HomePosition](HomePosition.md) — GPS home position in WGS84 coordinates. -- [LateralControlConfiguration](LateralControlConfiguration.md) — Fixed Wing Lateral Control Configuration message - Used by the fw_lateral_longitudinal_control module to constrain FixedWingLateralSetpoint messages. -- [LongitudinalControlConfiguration](LongitudinalControlConfiguration.md) — Fixed Wing Longitudinal Control Configuration message - Used by the fw_lateral_longitudinal_control module and TECS to constrain FixedWingLongitudinalSetpoint messages - and configure the resultant setpoints. +- [LateralControlConfiguration](LateralControlConfiguration.md) — Fixed Wing Lateral Control Configuration message. Used by the fw_lateral_longitudinal_control module to constrain FixedWingLateralSetpoint messages. +- [LongitudinalControlConfiguration](LongitudinalControlConfiguration.md) — Fixed Wing Longitudinal Control Configuration message. Used by the fw_lateral_longitudinal_control module and TECS to constrain FixedWingLongitudinalSetpoint messages. and configure the resultant setpoints. - [ManualControlSetpoint](ManualControlSetpoint.md) -- [ModeCompleted](ModeCompleted.md) — Mode completion result, published by an active mode. - The possible values of nav_state are defined in the VehicleStatus msg. - Note that this is not always published (e.g. when a user switches modes or on - failsafe activation) +- [ModeCompleted](ModeCompleted.md) — Mode completion result, published by an active mode. The possible values of nav_state are defined in the VehicleStatus msg. Note that this is not always published (e.g. when a user switches modes or on. failsafe activation). +- [RaptorInput](RaptorInput.md) — Raptor Input. +- [RaptorStatus](RaptorStatus.md) — Raptor Status. - [RegisterExtComponentReply](RegisterExtComponentReply.md) -- [RegisterExtComponentRequest](RegisterExtComponentRequest.md) — Request to register an external component -- [TrajectorySetpoint](TrajectorySetpoint.md) — Trajectory setpoint in NED frame - Input to PID position controller. - Needs to be kinematically consistent and feasible for smooth flight. - setting a value to NaN means the state should not be controlled +- [RegisterExtComponentRequest](RegisterExtComponentRequest.md) — Request to register an external component. +- [TrajectorySetpoint](TrajectorySetpoint.md) — Trajectory setpoint in NED frame. Input to PID position controller. Needs to be kinematically consistent and feasible for smooth flight. setting a value to NaN means the state should not be controlled. - [UnregisterExtComponent](UnregisterExtComponent.md) - [VehicleAngularVelocity](VehicleAngularVelocity.md) -- [VehicleAttitude](VehicleAttitude.md) — This is similar to the mavlink message ATTITUDE_QUATERNION, but for onboard use - The quaternion uses the Hamilton convention, and the order is q(w, x, y, z) +- [VehicleAttitude](VehicleAttitude.md) — This is similar to the mavlink message ATTITUDE_QUATERNION, but for onboard use. The quaternion uses the Hamilton convention, and the order is q(w, x, y, z). - [VehicleAttitudeSetpoint](VehicleAttitudeSetpoint.md) -- [VehicleCommand](VehicleCommand.md) — Vehicle Command uORB message. Used for commanding a mission / action / etc. - Follows the MAVLink COMMAND_INT / COMMAND_LONG definition -- [VehicleCommandAck](VehicleCommandAck.md) — Vehicle Command Ackonwledgement uORB message. - Used for acknowledging the vehicle command being received. - Follows the MAVLink COMMAND_ACK message definition +- [VehicleCommand](VehicleCommand.md) — Vehicle Command uORB message. Used for commanding a mission / action / etc. Follows the MAVLink COMMAND_INT / COMMAND_LONG definition. +- [VehicleCommandAck](VehicleCommandAck.md) — Vehicle Command Ackonwledgement uORB message. Used for acknowledging the vehicle command being received. Follows the MAVLink COMMAND_ACK message definition. - [VehicleControlMode](VehicleControlMode.md) -- [VehicleGlobalPosition](VehicleGlobalPosition.md) — Fused global position in WGS84. - This struct contains global position estimation. It is not the raw GPS - measurement (@see vehicle_gps_position). This topic is usually published by the position - estimator, which will take more sources of information into account than just GPS, - e.g. control inputs of the vehicle in a Kalman-filter implementation. +- [VehicleGlobalPosition](VehicleGlobalPosition.md) — Fused global position in WGS84. This struct contains global position estimation. It is not the raw GPS. measurement (@see vehicle_gps_position). This topic is usually published by the position. estimator, which will take more sources of information into account than just GPS,. e.g. control inputs of the vehicle in a Kalman-filter implementation. - [VehicleLandDetected](VehicleLandDetected.md) -- [VehicleLocalPosition](VehicleLocalPosition.md) — Fused local position in NED. - The coordinate system origin is the vehicle position at the time when the EKF2-module was started. -- [VehicleOdometry](VehicleOdometry.md) — Vehicle odometry data +- [VehicleLocalPosition](VehicleLocalPosition.md) — Fused local position in NED. The coordinate system origin is the vehicle position at the time when the EKF2-module was started. +- [VehicleOdometry](VehicleOdometry.md) — Vehicle odometry data. - [VehicleRatesSetpoint](VehicleRatesSetpoint.md) -- [VehicleStatus](VehicleStatus.md) — Encodes the system state of the vehicle published by commander -- [VtolVehicleStatus](VtolVehicleStatus.md) — VEHICLE_VTOL_STATE, should match 1:1 MAVLinks's MAV_VTOL_STATE -- [Wind](Wind.md) — Wind estimate (from EKF2) +- [VehicleStatus](VehicleStatus.md) — Encodes the system state of the vehicle published by commander. +- [VtolVehicleStatus](VtolVehicleStatus.md) — VEHICLE_VTOL_STATE, should match 1:1 MAVLinks's MAV_VTOL_STATE. +- [Wind](Wind.md) — Wind estimate (from EKF2). ## Unversioned Messages -- [ActionRequest](ActionRequest.md) — Action request for the vehicle's main state +- [ActionRequest](ActionRequest.md) — Action request for the vehicle's main state. - [ActuatorArmed](ActuatorArmed.md) - [ActuatorControlsStatus](ActuatorControlsStatus.md) - [ActuatorOutputs](ActuatorOutputs.md) -- [ActuatorServosTrim](ActuatorServosTrim.md) — Servo trims, added as offset to servo outputs +- [ActuatorServosTrim](ActuatorServosTrim.md) — Servo trims, added as offset to servo outputs. - [ActuatorTest](ActuatorTest.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 -- [BatteryInfo](BatteryInfo.md) — Battery information +- [Airspeed](Airspeed.md) — Airspeed data from sensors. +- [AirspeedWind](AirspeedWind.md) — Wind estimate (from airspeed_selector). +- [AutotuneAttitudeControlStatus](AutotuneAttitudeControlStatus.md) — Autotune attitude control status. +- [BatteryInfo](BatteryInfo.md) — Battery information. - [ButtonEvent](ButtonEvent.md) - [CameraCapture](CameraCapture.md) - [CameraStatus](CameraStatus.md) - [CameraTrigger](CameraTrigger.md) - [CanInterfaceStatus](CanInterfaceStatus.md) -- [CellularStatus](CellularStatus.md) — Cellular status -- [CollisionConstraints](CollisionConstraints.md) — Local setpoint constraints in NED frame - setting something to NaN means that no limit is provided +- [CellularStatus](CellularStatus.md) — Cellular status. +- [CollisionConstraints](CollisionConstraints.md) — Local setpoint constraints in NED frame. setting something to NaN means that no limit is provided. - [ControlAllocatorStatus](ControlAllocatorStatus.md) - [Cpuload](Cpuload.md) - [DatamanRequest](DatamanRequest.md) @@ -105,13 +78,12 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [DebugKeyValue](DebugKeyValue.md) - [DebugValue](DebugValue.md) - [DebugVect](DebugVect.md) -- [DeviceInformation](DeviceInformation.md) — Device information -- [DifferentialPressure](DifferentialPressure.md) — Differential-pressure (airspeed) sensor -- [DistanceSensor](DistanceSensor.md) — DISTANCE_SENSOR message data +- [DeviceInformation](DeviceInformation.md) — Device information. +- [DifferentialPressure](DifferentialPressure.md) — Differential-pressure (airspeed) sensor. +- [DistanceSensor](DistanceSensor.md) — DISTANCE_SENSOR message data. - [DistanceSensorModeChangeRequest](DistanceSensorModeChangeRequest.md) - [DronecanNodeStatus](DronecanNodeStatus.md) -- [Ekf2Timestamps](Ekf2Timestamps.md) — this message contains the (relative) timestamps of the sensor inputs used by EKF2. - It can be used for reproducible replay. +- [Ekf2Timestamps](Ekf2Timestamps.md) — this message contains the (relative) timestamps of the sensor inputs used by EKF2. It can be used for reproducible replay. - [EscReport](EscReport.md) - [EscStatus](EscStatus.md) - [EstimatorAidSource1d](EstimatorAidSource1d.md) @@ -123,19 +95,16 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [EstimatorGpsStatus](EstimatorGpsStatus.md) - [EstimatorInnovations](EstimatorInnovations.md) - [EstimatorSelectorStatus](EstimatorSelectorStatus.md) -- [EstimatorSensorBias](EstimatorSensorBias.md) — Sensor readings and in-run biases in SI-unit form. Sensor readings are compensated for static offsets, - scale errors, in-run bias and thermal drift (if thermal compensation is enabled and available). +- [EstimatorSensorBias](EstimatorSensorBias.md) — Sensor readings and in-run biases in SI-unit form. Sensor readings are compensated for static offsets,. scale errors, in-run bias and thermal drift (if thermal compensation is enabled and available). - [EstimatorStates](EstimatorStates.md) - [EstimatorStatus](EstimatorStatus.md) - [EstimatorStatusFlags](EstimatorStatusFlags.md) - [FailsafeFlags](FailsafeFlags.md) — Input flags for the failsafe state machine set by the arming & health checks. - [FailureDetectorStatus](FailureDetectorStatus.md) - [FigureEightStatus](FigureEightStatus.md) -- [FixedWingLateralGuidanceStatus](FixedWingLateralGuidanceStatus.md) — Fixed Wing Lateral Guidance Status message - Published by fw_pos_control module to report the resultant lateral setpoints and NPFG debug outputs -- [FixedWingLateralStatus](FixedWingLateralStatus.md) — Fixed Wing Lateral Status message - Published by the fw_lateral_longitudinal_control module to report the resultant lateral setpoint -- [FixedWingRunwayControl](FixedWingRunwayControl.md) — Auxiliary control fields for fixed-wing runway takeoff/landing +- [FixedWingLateralGuidanceStatus](FixedWingLateralGuidanceStatus.md) — Fixed Wing Lateral Guidance Status message. Published by fw_pos_control module to report the resultant lateral setpoints and NPFG debug outputs. +- [FixedWingLateralStatus](FixedWingLateralStatus.md) — Fixed Wing Lateral Status message. Published by the fw_lateral_longitudinal_control module to report the resultant lateral setpoint. +- [FixedWingRunwayControl](FixedWingRunwayControl.md) — Auxiliary control fields for fixed-wing runway takeoff/landing. - [FlightPhaseEstimation](FlightPhaseEstimation.md) - [FollowTarget](FollowTarget.md) - [FollowTargetEstimator](FollowTargetEstimator.md) @@ -153,13 +122,13 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [GimbalManagerSetAttitude](GimbalManagerSetAttitude.md) - [GimbalManagerSetManualControl](GimbalManagerSetManualControl.md) - [GimbalManagerStatus](GimbalManagerStatus.md) -- [GpioConfig](GpioConfig.md) — GPIO configuration -- [GpioIn](GpioIn.md) — GPIO mask and state -- [GpioOut](GpioOut.md) — GPIO mask and state -- [GpioRequest](GpioRequest.md) — Request GPIO mask to be read +- [GpioConfig](GpioConfig.md) — GPIO configuration. +- [GpioIn](GpioIn.md) — GPIO mask and state. +- [GpioOut](GpioOut.md) — GPIO mask and state. +- [GpioRequest](GpioRequest.md) — Request GPIO mask to be read. - [GpsDump](GpsDump.md) — This message is used to dump the raw gps communication to the log. - [GpsInjectData](GpsInjectData.md) -- [Gripper](Gripper.md) — # Used to command an actuation in the gripper, which is mapped to a specific output in the control allocation module +- [Gripper](Gripper.md) — # Used to command an actuation in the gripper, which is mapped to a specific output in the control allocation module. - [HealthReport](HealthReport.md) - [HeaterStatus](HeaterStatus.md) - [HoverThrustEstimate](HoverThrustEstimate.md) @@ -167,34 +136,32 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [InternalCombustionEngineControl](InternalCombustionEngineControl.md) - [InternalCombustionEngineStatus](InternalCombustionEngineStatus.md) - [IridiumsbdStatus](IridiumsbdStatus.md) -- [IrlockReport](IrlockReport.md) — IRLOCK_REPORT message data +- [IrlockReport](IrlockReport.md) — IRLOCK_REPORT message data. - [LandingGear](LandingGear.md) - [LandingGearWheel](LandingGearWheel.md) - [LandingTargetInnovations](LandingTargetInnovations.md) -- [LandingTargetPose](LandingTargetPose.md) — Relative position of precision land target in navigation (body fixed, north aligned, NED) and inertial (world fixed, north aligned, NED) frames -- [LaunchDetectionStatus](LaunchDetectionStatus.md) — Status of the launch detection state machine (fixed-wing only) -- [LedControl](LedControl.md) — LED control: control a single or multiple LED's. - These are the externally visible LED's, not the board LED's -- [LogMessage](LogMessage.md) — A logging message, output with PX4_WARN, PX4_ERR, PX4_INFO +- [LandingTargetPose](LandingTargetPose.md) — Relative position of precision land target in navigation (body fixed, north aligned, NED) and inertial (world fixed, north aligned, NED) frames. +- [LaunchDetectionStatus](LaunchDetectionStatus.md) — Status of the launch detection state machine (fixed-wing only). +- [LedControl](LedControl.md) — LED control: control a single or multiple LED's. These are the externally visible LED's, not the board LED's. +- [LogMessage](LogMessage.md) — A logging message, output with PX4_WARN, PX4_ERR, PX4_INFO. - [LoggerStatus](LoggerStatus.md) - [MagWorkerData](MagWorkerData.md) - [MagnetometerBiasEstimate](MagnetometerBiasEstimate.md) - [ManualControlSwitches](ManualControlSwitches.md) - [MavlinkLog](MavlinkLog.md) -- [MavlinkTunnel](MavlinkTunnel.md) — MAV_TUNNEL_PAYLOAD_TYPE enum +- [MavlinkTunnel](MavlinkTunnel.md) — MAV_TUNNEL_PAYLOAD_TYPE enum. - [MessageFormatRequest](MessageFormatRequest.md) - [MessageFormatResponse](MessageFormatResponse.md) - [Mission](Mission.md) - [MissionResult](MissionResult.md) - [MountOrientation](MountOrientation.md) - [NavigatorMissionItem](NavigatorMissionItem.md) -- [NavigatorStatus](NavigatorStatus.md) — Current status of a Navigator mode - The possible values of nav_state are defined in the VehicleStatus msg. -- [NeuralControl](NeuralControl.md) — Neural control +- [NavigatorStatus](NavigatorStatus.md) — Current status of a Navigator mode. The possible values of nav_state are defined in the VehicleStatus msg. +- [NeuralControl](NeuralControl.md) — Neural control. - [NormalizedUnsignedSetpoint](NormalizedUnsignedSetpoint.md) - [ObstacleDistance](ObstacleDistance.md) — Obstacle distances in front of the sensor. -- [OffboardControlMode](OffboardControlMode.md) — Off-board control mode -- [OnboardComputerStatus](OnboardComputerStatus.md) — ONBOARD_COMPUTER_STATUS message data +- [OffboardControlMode](OffboardControlMode.md) — Off-board control mode. +- [OnboardComputerStatus](OnboardComputerStatus.md) — ONBOARD_COMPUTER_STATUS message data. - [OpenDroneIdArmStatus](OpenDroneIdArmStatus.md) - [OpenDroneIdOperatorId](OpenDroneIdOperatorId.md) - [OpenDroneIdSelfId](OpenDroneIdSelfId.md) @@ -202,22 +169,21 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [OrbTest](OrbTest.md) - [OrbTestLarge](OrbTestLarge.md) - [OrbTestMedium](OrbTestMedium.md) -- [OrbitStatus](OrbitStatus.md) — ORBIT_YAW_BEHAVIOUR -- [ParameterResetRequest](ParameterResetRequest.md) — ParameterResetRequest : Used by the primary to reset one or all parameter value(s) on the remote -- [ParameterSetUsedRequest](ParameterSetUsedRequest.md) — ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary -- [ParameterSetValueRequest](ParameterSetValueRequest.md) — ParameterSetValueRequest : Used by a remote or primary to update the value for a parameter at the other end -- [ParameterSetValueResponse](ParameterSetValueResponse.md) — ParameterSetValueResponse : Response to a set value request by either primary or secondary -- [ParameterUpdate](ParameterUpdate.md) — This message is used to notify the system about one or more parameter changes +- [OrbitStatus](OrbitStatus.md) — ORBIT_YAW_BEHAVIOUR. +- [ParameterResetRequest](ParameterResetRequest.md) — ParameterResetRequest : Used by the primary to reset one or all parameter value(s) on the remote. +- [ParameterSetUsedRequest](ParameterSetUsedRequest.md) — ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary. +- [ParameterSetValueRequest](ParameterSetValueRequest.md) — ParameterSetValueRequest : Used by a remote or primary to update the value for a parameter at the other end. +- [ParameterSetValueResponse](ParameterSetValueResponse.md) — ParameterSetValueResponse : Response to a set value request by either primary or secondary. +- [ParameterUpdate](ParameterUpdate.md) — This message is used to notify the system about one or more parameter changes. - [Ping](Ping.md) - [PositionControllerLandingStatus](PositionControllerLandingStatus.md) - [PositionControllerStatus](PositionControllerStatus.md) -- [PositionSetpoint](PositionSetpoint.md) — this file is only used in the position_setpoint triple as a dependency -- [PositionSetpointTriplet](PositionSetpointTriplet.md) — Global position setpoint triplet in WGS84 coordinates. - This are the three next waypoints (or just the next two or one). -- [PowerButtonState](PowerButtonState.md) — power button state notification message -- [PowerMonitor](PowerMonitor.md) — power monitor message +- [PositionSetpoint](PositionSetpoint.md) — this file is only used in the position_setpoint triple as a dependency. +- [PositionSetpointTriplet](PositionSetpointTriplet.md) — Global position setpoint triplet in WGS84 coordinates. This are the three next waypoints (or just the next two or one). +- [PowerButtonState](PowerButtonState.md) — power button state notification message. +- [PowerMonitor](PowerMonitor.md) — power monitor message. - [PpsCapture](PpsCapture.md) -- [PurePursuitStatus](PurePursuitStatus.md) — Pure pursuit status +- [PurePursuitStatus](PurePursuitStatus.md) — Pure pursuit status. - [PwmInput](PwmInput.md) - [Px4ioStatus](Px4ioStatus.md) - [QshellReq](QshellReq.md) @@ -226,15 +192,15 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [RateCtrlStatus](RateCtrlStatus.md) - [RcChannels](RcChannels.md) - [RcParameterMap](RcParameterMap.md) -- [RoverAttitudeSetpoint](RoverAttitudeSetpoint.md) — Rover Attitude Setpoint -- [RoverAttitudeStatus](RoverAttitudeStatus.md) — Rover Attitude Status -- [RoverPositionSetpoint](RoverPositionSetpoint.md) — Rover Position Setpoint -- [RoverRateSetpoint](RoverRateSetpoint.md) — Rover Rate setpoint -- [RoverRateStatus](RoverRateStatus.md) — Rover Rate Status -- [RoverSpeedSetpoint](RoverSpeedSetpoint.md) — Rover Speed Setpoint -- [RoverSpeedStatus](RoverSpeedStatus.md) — Rover Velocity Status -- [RoverSteeringSetpoint](RoverSteeringSetpoint.md) — Rover Steering setpoint -- [RoverThrottleSetpoint](RoverThrottleSetpoint.md) — Rover Throttle setpoint +- [RoverAttitudeSetpoint](RoverAttitudeSetpoint.md) — Rover Attitude Setpoint. +- [RoverAttitudeStatus](RoverAttitudeStatus.md) — Rover Attitude Status. +- [RoverPositionSetpoint](RoverPositionSetpoint.md) — Rover Position Setpoint. +- [RoverRateSetpoint](RoverRateSetpoint.md) — Rover Rate setpoint. +- [RoverRateStatus](RoverRateStatus.md) — Rover Rate Status. +- [RoverSpeedSetpoint](RoverSpeedSetpoint.md) — Rover Speed Setpoint. +- [RoverSpeedStatus](RoverSpeedStatus.md) — Rover Velocity Status. +- [RoverSteeringSetpoint](RoverSteeringSetpoint.md) — Rover Steering setpoint. +- [RoverThrottleSetpoint](RoverThrottleSetpoint.md) — Rover Throttle setpoint. - [Rpm](Rpm.md) - [RtlStatus](RtlStatus.md) - [RtlTimeEstimate](RtlTimeEstimate.md) @@ -242,78 +208,64 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [SensorAccel](SensorAccel.md) - [SensorAccelFifo](SensorAccelFifo.md) - [SensorAirflow](SensorAirflow.md) -- [SensorBaro](SensorBaro.md) — Barometer sensor -- [SensorCombined](SensorCombined.md) — Sensor readings in SI-unit form. - These fields are scaled and offset-compensated where possible and do not - change with board revisions and sensor updates. -- [SensorCorrection](SensorCorrection.md) — Sensor corrections in SI-unit form for the voted sensor +- [SensorBaro](SensorBaro.md) — Barometer sensor. +- [SensorCombined](SensorCombined.md) — Sensor readings in SI-unit form. These fields are scaled and offset-compensated where possible and do not. change with board revisions and sensor updates. +- [SensorCorrection](SensorCorrection.md) — Sensor corrections in SI-unit form for the voted sensor. - [SensorGnssRelative](SensorGnssRelative.md) — GNSS relative positioning information in NED frame. The NED frame is defined as the local topological system at the reference station. -- [SensorGnssStatus](SensorGnssStatus.md) — Gnss quality indicators -- [SensorGps](SensorGps.md) — GPS position in WGS84 coordinates. - the field 'timestamp' is for the position & velocity (microseconds) +- [SensorGnssStatus](SensorGnssStatus.md) — Gnss quality indicators. +- [SensorGps](SensorGps.md) — GPS position in WGS84 coordinates. the field 'timestamp' is for the position & velocity (microseconds). - [SensorGyro](SensorGyro.md) - [SensorGyroFft](SensorGyroFft.md) - [SensorGyroFifo](SensorGyroFifo.md) - [SensorHygrometer](SensorHygrometer.md) - [SensorMag](SensorMag.md) - [SensorOpticalFlow](SensorOpticalFlow.md) -- [SensorPreflightMag](SensorPreflightMag.md) — Pre-flight sensor check metrics. - 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 +- [SensorPreflightMag](SensorPreflightMag.md) — Pre-flight sensor check metrics. 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. +- [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. This will be zero for a sensor that's primary or unpopulated. - [SensorsStatusImu](SensorsStatusImu.md) — Sensor check metrics. This will be zero for a sensor that's primary or unpopulated. - [SystemPower](SystemPower.md) -- [TakeoffStatus](TakeoffStatus.md) — Status of the takeoff state machine currently just available for multicopters -- [TaskStackInfo](TaskStackInfo.md) — stack information for a single running process +- [TakeoffStatus](TakeoffStatus.md) — Status of the takeoff state machine currently just available for multicopters. +- [TaskStackInfo](TaskStackInfo.md) — stack information for a single running process. - [TecsStatus](TecsStatus.md) - [TelemetryStatus](TelemetryStatus.md) - [TiltrotorExtraControls](TiltrotorExtraControls.md) - [TimesyncStatus](TimesyncStatus.md) -- [TrajectorySetpoint6dof](TrajectorySetpoint6dof.md) — Trajectory setpoint in NED frame - Input to position controller. +- [TrajectorySetpoint6dof](TrajectorySetpoint6dof.md) — Trajectory setpoint in NED frame. Input to position controller. - [TransponderReport](TransponderReport.md) -- [TuneControl](TuneControl.md) — This message is used to control the tunes, when the tune_id is set to CUSTOM - then the frequency, duration are used otherwise those values are ignored. -- [UavcanParameterRequest](UavcanParameterRequest.md) — UAVCAN-MAVLink parameter bridge request type -- [UavcanParameterValue](UavcanParameterValue.md) — UAVCAN-MAVLink parameter bridge response type -- [UlogStream](UlogStream.md) — Message to stream ULog data from the logger. Corresponds to the LOGGING_DATA - mavlink message -- [UlogStreamAck](UlogStreamAck.md) — Ack a previously sent ulog_stream message that had - the NEED_ACK flag set +- [TuneControl](TuneControl.md) — This message is used to control the tunes, when the tune_id is set to CUSTOM. then the frequency, duration are used otherwise those values are ignored. +- [UavcanParameterRequest](UavcanParameterRequest.md) — UAVCAN-MAVLink parameter bridge request type. +- [UavcanParameterValue](UavcanParameterValue.md) — UAVCAN-MAVLink parameter bridge response type. +- [UlogStream](UlogStream.md) — Message to stream ULog data from the logger. Corresponds to the LOGGING_DATA. mavlink message. +- [UlogStreamAck](UlogStreamAck.md) — Ack a previously sent ulog_stream message that had. the NEED_ACK flag set. - [VehicleAcceleration](VehicleAcceleration.md) -- [VehicleAirData](VehicleAirData.md) — Vehicle air data +- [VehicleAirData](VehicleAirData.md) — Vehicle air data. - [VehicleAngularAccelerationSetpoint](VehicleAngularAccelerationSetpoint.md) -- [VehicleConstraints](VehicleConstraints.md) — Local setpoint constraints in NED frame - setting something to NaN means that no limit is provided +- [VehicleConstraints](VehicleConstraints.md) — Local setpoint constraints in NED frame. setting something to NaN means that no limit is provided. - [VehicleImu](VehicleImu.md) — IMU readings in SI-unit form. - [VehicleImuStatus](VehicleImuStatus.md) -- [VehicleLocalPositionSetpoint](VehicleLocalPositionSetpoint.md) — Local position setpoint in NED frame - Telemetry of PID position controller to monitor tracking. - NaN means the state was not controlled +- [VehicleLocalPositionSetpoint](VehicleLocalPositionSetpoint.md) — Local position setpoint in NED frame. Telemetry of PID position controller to monitor tracking. NaN means the state was not controlled. - [VehicleMagnetometer](VehicleMagnetometer.md) - [VehicleOpticalFlow](VehicleOpticalFlow.md) — Optical flow in XYZ body frame in SI units. - [VehicleOpticalFlowVel](VehicleOpticalFlowVel.md) -- [VehicleRoi](VehicleRoi.md) — Vehicle Region Of Interest (ROI) +- [VehicleRoi](VehicleRoi.md) — Vehicle Region Of Interest (ROI). - [VehicleThrustSetpoint](VehicleThrustSetpoint.md) - [VehicleTorqueSetpoint](VehicleTorqueSetpoint.md) -- [VelocityLimits](VelocityLimits.md) — Velocity and yaw rate limits for a multicopter position slow mode only +- [VelocityLimits](VelocityLimits.md) — Velocity and yaw rate limits for a multicopter position slow mode only. +- [Vtx](Vtx.md) - [WheelEncoders](WheelEncoders.md) - [YawEstimatorStatus](YawEstimatorStatus.md) - [AirspeedValidatedV0](AirspeedValidatedV0.md) - [ArmingCheckReplyV0](ArmingCheckReplyV0.md) - [ArmingCheckRequestV0](ArmingCheckRequestV0.md) — Arming check request. -- [BatteryStatusV0](BatteryStatusV0.md) — Battery status -- [ConfigOverridesV0](ConfigOverridesV0.md) — Configurable overrides by (external) modes or mode executors -- [EventV0](EventV0.md) — this message is required here in the msg_old folder because other msg are depending on it - Events interface +- [BatteryStatusV0](BatteryStatusV0.md) — Battery status. +- [ConfigOverridesV0](ConfigOverridesV0.md) — Configurable overrides by (external) modes or mode executors. +- [EventV0](EventV0.md) — this message is required here in the msg_old folder because other msg are depending on it. Events interface. - [HomePositionV0](HomePositionV0.md) — GPS home position in WGS84 coordinates. - [RegisterExtComponentReplyV0](RegisterExtComponentReplyV0.md) -- [RegisterExtComponentRequestV0](RegisterExtComponentRequestV0.md) — Request to register an external component +- [RegisterExtComponentRequestV0](RegisterExtComponentRequestV0.md) — Request to register an external component. - [VehicleAttitudeSetpointV0](VehicleAttitudeSetpointV0.md) -- [VehicleLocalPositionV0](VehicleLocalPositionV0.md) — Fused local position in NED. - The coordinate system origin is the vehicle position at the time when the EKF2-module was started. -- [VehicleStatusV0](VehicleStatusV0.md) — Encodes the system state of the vehicle published by commander +- [VehicleLocalPositionV0](VehicleLocalPositionV0.md) — Fused local position in NED. The coordinate system origin is the vehicle position at the time when the EKF2-module was started. +- [VehicleStatusV0](VehicleStatusV0.md) — Encodes the system state of the vehicle published by commander. diff --git a/docs/zh/peripherals/remote_id.md b/docs/zh/peripherals/remote_id.md index 3cfc7bcde4..3200d64c42 100644 --- a/docs/zh/peripherals/remote_id.md +++ b/docs/zh/peripherals/remote_id.md @@ -166,7 +166,6 @@ PX4 v1.14 streams these messages by default (in streaming modes: normal, onboard - [OPEN_DRONE_ID_LOCATION](https://mavlink.io/en/messages/common.html#OPEN_DRONE_ID_LOCATION) (1 Hz) - UAV location, altitude, direction, and speed. - [OPEN_DRONE_ID_SYSTEM](https://mavlink.io/en/messages/common.html#OPEN_DRONE_ID_SYSTEM) (1 Hz) Operator location/altitude, multiple aircraft information (group/swarm, if applicable), full timestamp and possible category/class information. - - Implementation assumes operator is located at vehicle home position (does not yet support getting operator position from GCS). This is believed to be compliant for broadcast-only Remote IDs. diff --git a/docs/zh/power_module/ark_12s_pab_power_module.md b/docs/zh/power_module/ark_12s_pab_power_module.md index 4f262920bd..ce90c950df 100644 --- a/docs/zh/power_module/ark_12s_pab_power_module.md +++ b/docs/zh/power_module/ark_12s_pab_power_module.md @@ -13,25 +13,21 @@ Order this module from: ## Hardware Specifications - **TI INA238 Digital Power Monitor** - - 0.0001 Ohm Shunt - I2C Interface - **5.2V 6A Step-Down Regulator** - - 66V Maximum Input Voltage - 10V Minimum Input Voltage at 6A Out - Output Over-Current Protection - **Connections** - - Solder Pads Battery Input - Solder Pads Battery Output - 6 Pin Molex CLIK-Mate Output - [Matches ARK PAB Carrier Power Pinout](https://arkelectron.gitbook.io/ark-documentation/flight-controllers/ark-pixhawk-autopilot-bus-carrier/pinout) - **Other** - - USA Built - Includes 6 Pin Molex CLIK-Mate Cable diff --git a/docs/zh/releases/1.13.md b/docs/zh/releases/1.13.md index 3f9eda8ab1..403a824122 100644 --- a/docs/zh/releases/1.13.md +++ b/docs/zh/releases/1.13.md @@ -24,7 +24,6 @@ ### Common - **Explicit Joystick source selection ([PR#17404](https://github.com/PX4/PX4-Autopilot/pull/17404))** - - Possibility to: - Explicitly allow just one source - Fall back to other source in air diff --git a/docs/zh/releases/index.md b/docs/zh/releases/index.md index 1e07e34cde..a3a486fa6c 100644 --- a/docs/zh/releases/index.md +++ b/docs/zh/releases/index.md @@ -10,4 +10,8 @@ - [v1.13](../releases/1.13.md) - [v1.12](../releases/1.12.md) -PX4自动驾驶仪项目的完整发布存档可在[GitHub](https://github.com/PX4/PX4-Autopilot/releases)上找到。 +The full archive of releases for the PX4 autopilot project can be found on [GitHub](https://github.com/PX4/PX4-Autopilot/releases). + +:::info +For maintainers, see [Release Process](../releases/release_process.md) for the tagging and publishing workflow. +::: diff --git a/docs/zh/releases/release_process.md b/docs/zh/releases/release_process.md new file mode 100644 index 0000000000..105b7c4113 --- /dev/null +++ b/docs/zh/releases/release_process.md @@ -0,0 +1,301 @@ +# Release Process + +This page documents the PX4 release process for maintainers. It covers the steps from preparing a release candidate through to the final announcement. + +## 综述 + +PX4 uses a branch-based release workflow: + +- **`release/X.Y`** (e.g., `release/1.17`, `release/2.0`) - The active development branch for a specific release where changes are merged and tested +- **`stable`** - Points to the latest stable release tag; reset after each release +- **`beta`** - For flight testers to validate release candidates + +The target release cycle is approximately 6 months, best effort. The actual cadence depends on testing results and maintainer availability, with an ongoing goal to shorten the cycle. + +Releases are tracked on the [PX4 Release Project Board](https://github.com/orgs/PX4/projects/45), which is reused and renamed for each release cycle. + +### Release Tag Progression + +Release branches go through the following tag stages: + +| Stage | Example | Branch Status | What Gets Merged | +| ---------- | ---------------- | -------------- | ---------------------------------------------------------------------- | +| **Alpha** | `v1.18.0-alpha1` | Open for fixes | Bug fixes and regression fixes only | +| **Beta** | `v1.18.0-beta1` | Open for fixes | Bug fixes and regression fixes only | +| **RC** | `v1.18.0-rc1` | Frozen | Nothing (unless veto vote passes) | +| **Stable** | `v1.18.0` | Open for fixes | Bug fixes and regression fixes (for point releases) | + +:::info +New features are never merged to release branches. Once a release branch is created from `main`, only bug fixes and regression fixes are accepted. New features must target `main` and will be included in the next release cycle. +::: + +## Starting a New Release Cycle + +A new release cycle begins immediately after a stable release is published. This involves two votes during the [Weekly Community Q&A Call](../contribute/dev_call.md) when approving a stable release: + +1. **Vote to publish the current release** - Approve the stable release for publication +2. **Vote on the next release name/number** - Decide the version number for the next release (e.g., v1.18 or v2.0) + +### Prepare Release Notes Before Branching + +Release notes are built incrementally in [`main.md`](../releases/main.md), which accumulates changes as they land on `main`. Before creating the release branch: + +1. Rename `main.md` to the version-specific file (e.g., `docs/en/releases/1.18.md`) +2. Add the new file to `SUMMARY.md` and `releases/index.md` +3. Reset `main.md` to a clean template for the next release cycle +4. Verify that documentation for all included contributions is complete +5. Search for instances of `main (planned for:` and replace with the release version now that it is known. + So, for example `` is replaced with `` + +:::tip +Community members are encouraged to document changes as they are merged into `main`. This distributes the documentation workload and ensures changes are captured while they're fresh. +::: + +### Create the Release Branch + +Once the next release version is decided, create the new release branch from `main` in PX4-Autopilot and the companion repositories: + +```sh +# PX4-Autopilot +git checkout main && git pull +git checkout -b release/1.18 +git push origin release/1.18 +``` + +Matching release branches must also be created in: + +- [PX4/px4_msgs](https://github.com/PX4/px4_msgs) +- [Auterion/px4-ros2-interface-lib](https://github.com/Auterion/px4-ros2-interface-lib) + +After creating the companion branches, update the [ROS integration test workflow](https://github.com/PX4/PX4-Autopilot/blob/main/.github/workflows/ros_integration_tests.yml) on the release branch to clone `px4-ros2-interface-lib` from the matching release branch: + +```diff +- git clone --recursive https://github.com/Auterion/px4-ros2-interface-lib.git ++ git clone --recursive --branch release/1.18 https://github.com/Auterion/px4-ros2-interface-lib.git +``` + +:::warning +Once the release branches are created, they only accept bug fixes and regression fixes. All new feature development continues on `main`. +::: + +### Create the Alpha Tag + +Immediately after creating the release branch, create the first alpha tag to mark the beginning of the release cycle: + +```sh +# On the new release branch +git checkout release/1.18 + +# Create the signed alpha tag +git tag -s v1.18.0-alpha1 -m "v1.18.0-alpha1" +git push origin v1.18.0-alpha1 +``` + +Subsequent alpha tags can be created as fixes are merged (e.g., `v1.18.0-alpha2`, `v1.18.0-alpha3`). + +## Release Steps + +### 1. Review and Merge PRs (Alpha Phase) + +During the alpha phase, review pull requests targeting the release branch: + +- Review PRs according to the project's [contribution guidelines](../contribute/code.md) +- Merge **bug fixes and regression fixes only** +- New features must target `main`, not the release branch +- Create additional alpha tags as fixes are merged (e.g., `v1.18.0-alpha2`) + +### 2. Alpha Testing + +The _Dronecode Test Team_ (provided by [Ascend Engineering](https://www.ascendengineer.com) — Dronecode Silver member) conducts initial flight testing of alpha builds using: + +- The [test cards](../test_and_ci/test_flights.md) documented in the PX4 guide +- A hardware matrix covering supported flight controllers and airframes + +Alpha testing focuses on identifying regressions and blockers early. The alpha phase is complete when: + +- All test cards pass across the core hardware matrix (no critical or high-severity failures) +- All identified regressions have fixes merged or have been triaged as non-blocking +- Release notes and documentation for included changes are complete + +### 3. Create Beta Tag + +Once the alpha exit criteria above are met, create the first beta tag: + +```sh +# On the release branch +git checkout release/1.18 +git pull + +# Create the signed beta tag +git tag -s v1.18.0-beta1 -m "v1.18.0-beta1" +git push origin v1.18.0-beta1 +``` + +### 4. Beta Testing + +Beta builds are published for wider community validation. Unlike alpha testing (which is conducted by the Dronecode Test Team on the core hardware matrix), beta testing focuses on: + +- **Community testing** — beta builds are made available for community members to test on their own hardware and airframe configurations +- **Extended hardware coverage** — testing on hardware and configurations beyond the core test matrix +- **Real-world flight scenarios** — longer flights, mission testing, and edge cases not covered by standard test cards + +During beta, continue to: + +- Review and merge **bug fixes and regression fixes only** +- Create additional beta tags as fixes are merged (e.g., `v1.18.0-beta2`, `v1.18.0-beta3`) + +### 5. Create Release Candidate Tag + +The beta phase is complete when: + +- No new critical or high-severity issues are reported for at least one beta tag cycle +- All beta-reported regressions have fixes merged or have been triaged as non-blocking + +Once the beta exit criteria are met, create the first release candidate: + +```sh +# On the release branch +git checkout release/1.18 +git pull + +# Create the signed RC tag +git tag -s v1.18.0-rc1 -m "v1.18.0-rc1" +git push origin v1.18.0-rc1 +``` + +:::warning +The branch is now frozen. No PRs will be merged unless a veto vote passes (see below). +::: + +:::tip +Tags must be GPG-signed. Ensure your GitHub account is [configured for GPG signing](https://docs.github.com/en/authentication/managing-commit-signature-verification). Only maintainers with registered GPG keys can create release tags. +::: + +### 6. RC Testing and Branch Freeze + +During RC testing, the release branch is frozen: + +- No PRs are merged by default +- Testing focuses on final validation before stable release +- Any issues found are documented and evaluated + +#### Veto Vote for Critical Fixes + +If a critical issue is discovered during RC testing that must be fixed before release: + +1. Raise the issue during the [Weekly Community Q&A Call](../contribute/dev_call.md) +2. Present the case for why the fix is critical +3. Maintainers vote on whether to merge the fix +4. If approved, merge the fix and create a new RC tag (e.g., `v1.18.0-rc2`) + +### 7) Release Vote + +The release vote takes place during the [Weekly Community Q&A Call](../contribute/dev_call.md): + +- Present the release status and test results +- **Vote 1:** Core maintainers vote on whether to publish the release +- **Vote 2:** Decide the name/number of the next release version +- The call happens Wednesdays at 17:00 CET on [Discord](https://discord.gg/BDYmr6FA6Q) + +### 8. Create and Push Release Tag + +After a successful vote, create the final release tag: + +```sh +# On the release branch +git checkout release/1.18 +git pull + +# Create the signed release tag +git tag -s v1.18.0 -m "v1.18.0" +git push origin v1.18.0 +``` + +### 9. Update the Stable Branch + +Reset the `stable` branch to point to the new release tag: + +```sh +git checkout stable +git reset --hard v1.18.0 +git push --force origin stable +``` + +:::warning +This is a force push that rewrites the stable branch history. Ensure you have the correct tag before executing. +::: + +### 10. GitHub Release (Automated) + +When a version tag is pushed, the [build_all_targets.yml](https://github.com/PX4/PX4-Autopilot/blob/main/.github/workflows/build_all_targets.yml) GitHub Actions workflow automatically: + +1. Builds firmware for all supported targets +2. Uploads firmware artifacts to AWS S3 (`Firmware/vX.Y.Z/` and updates `Firmware/stable/`) +3. Creates a **draft release** on GitHub with all `.px4` firmware files attached + +### 11) Publish GitHub Release + +Edit the draft release on GitHub: + +- Add a brief description of major changes +- Link to the full release notes in the documentation (e.g., `releases/1.18.md`) +- Publish the release + +### 12. Finalize Documentation + +Review and finalize the release notes that have been developed throughout the release cycle: + +- Ensure all noteworthy changes, new features, and upgrade guides are documented +- Review for completeness and accuracy +- See existing [release notes](../releases/index.md) for the expected format + +### 13. Announce the Release + +Announce the release through official channels: + +- [PX4 Discuss Forum](https://discuss.px4.io/) +- [PX4 Discord](https://discord.gg/dronecode) +- Social media (Twitter/X, LinkedIn) +- Dronecode newsletter + +### 14. Start Next Release Cycle + +Immediately after publishing, start the next release cycle: + +- Create the new release branch from `main` (see [Create the Release Branch](#create-the-release-branch)) +- Create the alpha tag for the new release +- Create the initial documentation for the next release +- Rename and prepare the project board (see [Project Board Management](#project-board-management)) + +## Point Releases + +After a stable release is published, the release branch reopens for bug fixes and regression fixes to support point releases (e.g., `v1.18.1`). + +For patch releases: + +1. Merge bug fixes and regression fixes to the release branch +2. Create beta tags for testing if needed (e.g., `v1.18.1-beta1`) +3. Create RC tags for final validation (e.g., `v1.18.1-rc1`) +4. After testing and vote, tag the point release +5. Update stable branch and publish + +## Project Board Management + +The [PX4 Release Project Board](https://github.com/orgs/PX4/projects/45) is reused across release cycles to track issues and PRs for the current release. + +### After a Release + +Once a release is published: + +1. **Rename the project board** to reflect the next release version (e.g., "v1.17 Release" → "v1.18 Release") +2. **Review remaining items**: + - Close items that are no longer relevant + - Move incomplete items that should carry over to the next release + - Remove items that were descoped or deferred indefinitely +3. **Update the board description** if needed to reflect the new release target + +## 另见 + +- [Source Code Management](../contribute/code.md) - Branching model and contribution guidelines +- [Test Flights](../test_and_ci/test_flights.md) - Flight test procedures and test cards +- [Weekly Community Q&A Call](../contribute/dev_call.md) - Where release votes happen diff --git a/docs/zh/ros/mavros_custom_messages.md b/docs/zh/ros/mavros_custom_messages.md index 946ab08715..4baf020628 100644 --- a/docs/zh/ros/mavros_custom_messages.md +++ b/docs/zh/ros/mavros_custom_messages.md @@ -68,6 +68,7 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c ``` 2. Edit **mavros_plugins.xml** (in **workspace/src/mavros/mavros_extras**) and add the following lines: + ```xml Accepts keyboard command. @@ -75,10 +76,11 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c ``` 3. Edit **CMakeLists.txt** (in **workspace/src/mavros/mavros_extras**) and add the following line in `add_library`. + ```cmake - add_library( + add_library( ... - src/plugins/keyboard_command.cpp + src/plugins/keyboard_command.cpp ) ``` @@ -148,6 +150,7 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c 4. Edit **mavlink_receiver.cpp** (in **PX4-Autopilot/src/modules/mavlink**). 这是 PX4 接收 ROS 发送过来的 MAVLink 消息的地方,并且将消息作为 uORB 主题发布。 + ```cpp ... void MavlinkReceiver::handle_message(mavlink_message_t *msg) @@ -227,7 +230,7 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c int error_counter = 0; - for (int i = 0; i < 10; i++) + for (int i = 0; i < 10; i++) { int poll_ret = px4_poll(fds, 1, 1000); @@ -264,10 +267,10 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c ``` menuconfig MODULES_KEY_RECEIVER - bool "key_receiver" - default n - ---help--- - Enable support for key_receiver + bool "key_receiver" + default n + ---help--- + Enable support for key_receiver ``` @@ -309,6 +312,7 @@ MODULES ### Build for PX4 1. Clean the previously built PX4-Autopilot directory. In the root of **PX4-Autopilot** directory: + ```sh make clean ``` @@ -349,6 +353,7 @@ MODULES 1. Enter the Pixhawk nutshell through UDP. Replace xxx.xx.xxx.xxx with your IP. + ```sh cd PX4-Autopilot/Tools ./mavlink_shell.py xxx.xx.xxx.xxx:14557 --baudrate 57600 diff --git a/docs/zh/ros/mavros_installation.md b/docs/zh/ros/mavros_installation.md index 6568e755d3..ccf9380459 100644 --- a/docs/zh/ros/mavros_installation.md +++ b/docs/zh/ros/mavros_installation.md @@ -26,7 +26,7 @@ They cover the _ROS Melodic and Noetic_ releases. :::tab ROS Noetic (Ubuntu 20.04) -If you're working with [ROS Noetic](https://wiki.ros.org/noetic) on Ubuntu 20.04: +If you're working with [ROS "Noetic"](https://wiki.ros.org/noetic) on Ubuntu 20.04: 1. Install PX4 without the simulator toolchain: 1. [Download PX4 Source Code](../dev_setup/building_px4.md): @@ -57,7 +57,7 @@ If you're working with [ROS Noetic](https://wiki.ros.org/noetic) on Ubuntu 20.04 :::tab ROS Melodic (Ubuntu 18.04) -If you're working with ROS "Melodic on Ubuntu 18.04: +If you're working with ROS "Melodic" on Ubuntu 18.04: 1. Download the [ubuntu_sim_ros_melodic.sh](https://raw.githubusercontent.com/PX4/Devguide/master/build_scripts/ubuntu_sim_ros_melodic.sh) script in a bash shell: diff --git a/docs/zh/ros2/px4_ros2_control_interface.md b/docs/zh/ros2/px4_ros2_control_interface.md index 182b18b45a..39401c63e7 100644 --- a/docs/zh/ros2/px4_ros2_control_interface.md +++ b/docs/zh/ros2/px4_ros2_control_interface.md @@ -28,7 +28,7 @@ PX4 ROS 2 模式相较于 PX4 内部模式,更易于实现和维护,并且 :::tip If you want to use Python, check out the [examples in the repository](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/examples/python). -Not all classes have Python bindings yet — the [supported bindings are here](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/px4_ros2_py/src/px4_ros2). +Not all classes have Python bindings yet — the [supported bindings are here](https://auterion.github.io/px4-ros2-interface-lib/python/index.html). You are welcome to add and contribute missing classes. ::: diff --git a/docs/zh/sensor/microstrain.md b/docs/zh/sensor/microstrain.md index c3191ed484..9d1e630ae5 100644 --- a/docs/zh/sensor/microstrain.md +++ b/docs/zh/sensor/microstrain.md @@ -41,9 +41,7 @@ To use the MicroStrain driver: 1. Include the module in firmware in the [kconfig board configuration](../hardware/porting_guide_config.md#px4-board-configuration-kconfig) by setting the kconfig variables: `CONFIG_DRIVERS_INS_MICROSTRAIN` or `CONFIG_COMMON_INS`. 2. Configure the driver mode by setting [MS_MODE](../advanced_config/parameter_reference.md#MS_MODE) - - To use the MicroStrain sensor to provide raw IMU data to EKF2 - 1. Set [MS_MODE](../advanced_config/parameter_reference.md#MS_MODE) to 0 2. Update the [EKF2_MULTI_IMU](../advanced_config/parameter_reference.md#EKF2_MULTI_IMU) parameter to account for the added MicroStrain sensor. 3. Enable EKF2 by setting [EKF2_EN](../advanced_config/parameter_reference.md#EKF2_EN) to 1 @@ -78,22 +76,18 @@ To use the MicroStrain driver: ## MicroStrain Configuration 1. Rates: - - By default, accel and gyro data are published at 500 Hz, magnetometer at 50 Hz, and barometric pressure at 50 Hz. This can be changed by adjusting the following parameters: - - [MS_IMU_RATE_HZ](../advanced_config/parameter_reference.md#MS_IMU_RATE_HZ) - [MS_MAG_RATE_HZ](../advanced_config/parameter_reference.md#MS_MAG_RATE_HZ) - [MS_BARO_RATE_HZ](../advanced_config/parameter_reference.md#MS_BARO_RATE_HZ) - Global position, local position, attitude and odometry will be published at 250 Hz by default. This can be configured via: - - [MS_FILT_RATE_HZ](../advanced_config/parameter_reference.md#MS_FILT_RATE_HZ) - For the CV7-GNSS/INS, the GNSS receiver 1 and 2 will publish data at 5Hz by default. This can be changed using: - - [MS_GNSS_RATE_HZ](../advanced_config/parameter_reference.md#MS_GNSS_RATE_HZ) - The driver will automatically configure data outputs based on the specific sensor model and available data streams. @@ -105,7 +99,6 @@ To use the MicroStrain driver: - If supported, GNSS position and velocity aiding are always enabled. - Internal/external magnetometer and heading aiding, as well as optical flow aiding, are disabled by default. They can be enabled using the following parameters: - - [MS_INT_MAG_EN](../advanced_config/parameter_reference.md#MS_INT_MAG_EN) - [MS_INT_HEAD_EN](../advanced_config/parameter_reference.md#MS_INT_HEAD_EN) - [MS_EXT_HEAD_EN](../advanced_config/parameter_reference.md#MS_EXT_HEAD_EN) @@ -113,7 +106,6 @@ To use the MicroStrain driver: - [MS_OPT_FLOW_EN](../advanced_config/parameter_reference.md#MS_OPT_FLOW_EN) - The aiding frames for external sources can be configured using the following parameters: - - [MS_EHEAD_YAW](../advanced_config/parameter_reference.md#MS_EHEAD_YAW) - [MS_EMAG_ROLL](../advanced_config/parameter_reference.md#MS_EMAG_ROLL) - [MS_EMAG_PTCH](../advanced_config/parameter_reference.md#MS_EMAG_PTCH) @@ -124,7 +116,6 @@ To use the MicroStrain driver: - [SENS_FLOW_ROT](../advanced_config/parameter_reference.md#SENS_FLOW_ROT) - The uncertainty for optical flow and external magnetometer aiding must be specified using the following parameters: - - [MS_EMAG_UNCERT](../advanced_config/parameter_reference.md#MS_EMAG_UNCERT) - [MS_OFLW_UNCERT](../advanced_config/parameter_reference.md#MS_OFLW_UNCERT) @@ -137,25 +128,18 @@ To use the MicroStrain driver: ::: 3. Initial heading alignment: - - Initial heading alignment is set to kinematic by default. This can be changed by adjusting - - [MS_ALIGNMENT](../advanced_config/parameter_reference.md#MS_ALIGNMENT) 4. GNSS Aiding Source Control (GNSS/INS only) - - The Source of the GNSS aiding data can be configured using: - - [MS_GNSS_AID_SRC](../advanced_config/parameter_reference.md#MS_GNSS_AID_SRC) 5. Sensor to vehicle transform: - - If the sensor is mounted in an orientation different from the vehicle frame. A sensor to vehicle transform can be enabled using - - [MS_SVT_EN](../advanced_config/parameter_reference.md#MS_SVT_EN) - The transform is defined using the following parameters - - [MS_SENSOR_ROLL](../advanced_config/parameter_reference.md#MS_SENSOR_ROLL) - [MS_SENSOR_PTCH](../advanced_config/parameter_reference.md#MS_SENSOR_PTCH) - [MS_SENSOR_YAW](../advanced_config/parameter_reference.md#MS_SENSOR_YAW) @@ -163,7 +147,6 @@ To use the MicroStrain driver: 6. IMU ranges: - The accelerometer and gyroscope ranges on the device are configurable using: - - [MS_ACCEL_RANGE](../advanced_config/parameter_reference.md#MS_ACCEL_RANGE) - [MS_GYRO_RANGE](../advanced_config/parameter_reference.md#MS_GYRO_RANGE) @@ -175,15 +158,12 @@ To use the MicroStrain driver: ::: 7. GNSS Lever arm offsets: - - The lever arm offset for the external GNSS receiver can be configured using: - - [MS_GNSS_OFF1_X](../advanced_config/parameter_reference.md#MS_GNSS_OFF1_X) - [MS_GNSS_OFF1_Y](../advanced_config/parameter_reference.md#MS_GNSS_OFF1_Y) - [MS_GNSS_OFF1_Z](../advanced_config/parameter_reference.md#MS_GNSS_OFF1_Z) - For dual-antenna configurations, the second GNSS receiver’s offset is configured using: - - [MS_GNSS_OFF2_X](../advanced_config/parameter_reference.md#MS_GNSS_OFF2_X) - [MS_GNSS_OFF2_Y](../advanced_config/parameter_reference.md#MS_GNSS_OFF2_Y) - [MS_GNSS_OFF2_Z](../advanced_config/parameter_reference.md#MS_GNSS_OFF2_Z) diff --git a/docs/zh/sensor/optical_flow.md b/docs/zh/sensor/optical_flow.md index 50763c265b..682685a1f7 100644 --- a/docs/zh/sensor/optical_flow.md +++ b/docs/zh/sensor/optical_flow.md @@ -55,7 +55,7 @@ Reducing the optical flow scale factor can improve the situation. It has a PAW3902 optical flow sensor, Broadcom AFBR-S50LV85D 30 meter distance sensor, and Invensense ICM-42688-P 6-Axis IMU. [ARK Flow MR](../dronecan/ark_flow_mr.md) is a [DroneCAN](../dronecan/index.md) optical flow sensor, [distance sensor](../sensor/rangefinders.md), and IMU, for mid-range applications. -It has a PixArt PAA3905 optical flow sensor, Broadcom AFBR-S50LX85D 50 meter distance sensor, and Invensense IIM-42653 6-Axis IMU. +It has a PixArt PAA3905 optical flow sensor, Broadcom AFBR-S50LX85D 50 meter distance sensor, and Invensense IIM-42653 6-Axis IMU. ### Holybro H-Flow diff --git a/docs/zh/sensor/sbgecom.md b/docs/zh/sensor/sbgecom.md index b8dd1f5141..40c0068cb0 100644 --- a/docs/zh/sensor/sbgecom.md +++ b/docs/zh/sensor/sbgecom.md @@ -82,9 +82,7 @@ To use the sbgECom driver: In this case, MAVLink messages will be updated with the newly selected sensor. If you don't want to have this fallback mechanism, you must disable unwanted sensors. - -::: - 4. If using the sbgECom as an INS, disable EKF2 using [EKF2_EN](../advanced_config/parameter_reference.md#EKF2_EN). + ::: 4. If using the sbgECom as an INS, disable EKF2 using [EKF2_EN](../advanced_config/parameter_reference.md#EKF2_EN). 6. Restart PX4. diff --git a/docs/zh/sensor/sfxx_lidar.md b/docs/zh/sensor/sfxx_lidar.md index 561d08a26b..a2534add6e 100644 --- a/docs/zh/sensor/sfxx_lidar.md +++ b/docs/zh/sensor/sfxx_lidar.md @@ -1,4 +1,4 @@ -# LightWare Lidar (SF1X/SF02/LW20/SF45) +# LightWare Lidar (SF1X/SF02/LW20/SF45/GRF250/GRF500) LightWare develops a range of light-weight, general purpose, laser altimeters ("Lidar") suitable for mounting on UAVs. These are useful for applications including terrain following, precision hovering (e.g. for photography), warning of regulatory height limits, anti-collision sensing etc. diff --git a/docs/zh/sensor/vectornav.md b/docs/zh/sensor/vectornav.md index 84003cf023..ba09632367 100644 --- a/docs/zh/sensor/vectornav.md +++ b/docs/zh/sensor/vectornav.md @@ -59,7 +59,6 @@ To use the VectorNav driver: 4. Allow the VectorNav driver to initialize by restarting PX4. 5. Configure driver as either an external INS or to provide raw data: - - If using the VectorNav as an external INS, set [VN_MODE](../advanced_config/parameter_reference.md#VN_MODE) to `INS`. This disables EKF2. - If using the VectorNav as external inertial sensors: diff --git a/docs/zh/sensor_bus/i2c_development.md b/docs/zh/sensor_bus/i2c_development.md index f320414f80..8e7cbef1b4 100644 --- a/docs/zh/sensor_bus/i2c_development.md +++ b/docs/zh/sensor_bus/i2c_development.md @@ -23,7 +23,7 @@ The bus is not fast enough even with a single device attached to allow vibration Drivers should `#include ` and then provide an implementation of the abstract base class `I2C` defined in **I2C.hpp** for the target hardware (i.e. for NuttX [here](https://github.com/PX4/PX4-Autopilot/blob/main/src/lib/drivers/device/nuttx/I2C.hpp)). -A small number of drivers will also need to include headers for their type of device (**drv_\*.h**) in [/src/drivers/](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers) - e.g. [drv_led.h](https://github.com/PX4/PX4-Autopilot/blob/main/src/drivers/drv_led.h). +A small number of drivers will also need to include headers for their type of device (**drv\_\*.h**) in [/src/drivers/](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers) - e.g. [drv_led.h](https://github.com/PX4/PX4-Autopilot/blob/main/src/drivers/drv_led.h). To include a driver in firmware you must add the driver to the board-specific cmake file that corresponds to the target you want to build for. You can do this for a single driver: diff --git a/docs/zh/sim_gazebo_gz/index.md b/docs/zh/sim_gazebo_gz/index.md index f9dfc91f12..c029851d3e 100644 --- a/docs/zh/sim_gazebo_gz/index.md +++ b/docs/zh/sim_gazebo_gz/index.md @@ -254,7 +254,6 @@ where `ARGS` is a list of environment variables including: - `PX4_GZ_MODEL_NAME`: Sets the name of an _existing_ model in the gazebo simulation. If provided, the startup script tries to bind a new PX4 instance to the Gazebo resource matching exactly that name. - - The setting is mutually exclusive with `PX4_SIM_MODEL`. - `PX4_SIM_MODEL`: @@ -271,7 +270,6 @@ where `ARGS` is a list of environment variables including: - `PX4_GZ_MODEL_POSE`: Sets the spawning position and orientation of the model when `PX4_SIM_MODEL` is adopted. If provided, the startup script spawns the model at a pose following the syntax `"x,y,z,roll,pitch,yaw"`, where the positions are given in metres and the angles are in radians. - - If omitted, the zero pose `[0,0,0,0,0,0]` is used. - If less then 6 values are provided, the missing ones are fixed to zero. - This can only be used with `PX4_SIM_MODEL` (not `PX4_GZ_MODEL_NAME`). @@ -279,7 +277,6 @@ where `ARGS` is a list of environment variables including: - `PX4_GZ_WORLD`: Sets the Gazebo world file for a new simulation. If it is not given, then [default](https://github.com/PX4/PX4-gazebo-models/blob/main/worlds/default.sdf) is used. - - This variable is ignored if an existing simulation is already running. - This value should be [specified for the selected airframe](#adding-new-worlds-and-models) but may be overridden using this argument. - If the [moving platform world](../sim_gazebo_gz/worlds.md#moving-platform) is selected using `PX4_GZ_WORLD=moving_platform` (or any world using the moving platform plugin), the platform can be configured using environment variables: @@ -288,7 +285,6 @@ where `ARGS` is a list of environment variables including: - `PX4_SIMULATOR=GZ`: Sets the simulator, which for Gazebo must be `gz`. - - This value should be [set for the selected airframe](#adding-new-worlds-and-models), in which case it does not need to be set as an argument. - `PX4_GZ_STANDALONE`: @@ -390,7 +386,6 @@ To add a new world: 1. Add your world to the list of worlds found in the [`CMakeLists.txt` here](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/simulation/gz_bridge/CMakeLists.txt). This is required in order to allow `CMake` to generate correct targets. - - If you plan to use "normal" mode, add your world sdf to `Tools/simulation/gz/worlds/`. - If you plan to use _standalone_ mode, add your world SDF to `~/.simulation-gazebo/worlds/` diff --git a/docs/zh/simulation/community_supported_simulators.md b/docs/zh/simulation/community_supported_simulators.md index 34a9a56f51..d569d2d29d 100644 --- a/docs/zh/simulation/community_supported_simulators.md +++ b/docs/zh/simulation/community_supported_simulators.md @@ -12,10 +12,10 @@ See [Toolchain Installation](../dev_setup/dev_env.md) for information about the 这些工具有来自其社区的不同程度的支持 (有些得到很好的支持,有些则没有) 。 Questions about these tools should be raised on the [discussion forums](../contribute/support.md#forums-and-chat) -| 仿真器 | 描述 | -| ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Simulation-In-Hardware](../sim_sih/index.md) (SIH) |

A simulator implemented in C++ as a PX4 module directly in the Firmware [code](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/simulation/simulator_sih). It can be ran in SITL directly on the computer or as an alternative to HITL offering a hard real-time simulation directly on the hardware autopilot.

Supported Vehicles: Quad, Hexa, Plane, Tailsitter, Standard VTOL, Ackermann Rover

| -| [FlightGear](../sim_flightgear/index.md) |

A simulator that provides physically and visually realistic simulations. In particular it can simulate many weather conditions, including thunderstorms, snow, rain and hail, and can also simulate thermals and different types of atmospheric flows. [Multi-vehicle simulation](../sim_flightgear/multi_vehicle.md) is also supported.

Supported Vehicles: Plane, Autogyro, Rover

| -| [JMAVSim](../sim_jmavsim/index.md) |

A simple multirotor/quad simulator. This was previously part of the PX4 development toolchain but was removed in favour of [Gazebo](../sim_gazebo_gz/index.md).

Supported Vehicles: Quad

| -| [JSBSim](../sim_jsbsim/index.md) |

A simulator that provides advanced flight dynamics models. This can be used to model realistic flight dynamics based on wind tunnel data.

Supported Vehicles: Plane, Quad, Hex

| -| [AirSim](../sim_airsim/index.md) |

A cross platform simulator that provides physically and visually realistic simulations. This simulator is resource intensive, and requires a significantly more powerful computer than the other simulators described here.

Supported Vehicles: Iris (MultiRotor model and a configuration for PX4 QuadRotor in the X configuration).

| +| 仿真器 | 描述 | +| ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [Simulation-In-Hardware](../sim_sih/index.md) (SIH) |

A simulator implemented in C++ as a PX4 module directly in the Firmware [code](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/simulation/simulator_sih). It can be ran in SITL directly on the computer or as an alternative to HITL offering a hard real-time simulation directly on the hardware autopilot.

Supported Vehicles: Quad, Hexa, Plane, Tailsitter, Standard VTOL, Ackermann Rover

| +| [FlightGear](../sim_flightgear/index.md) |

A simulator that provides physically and visually realistic simulations. In particular it can simulate many weather conditions, including thunderstorms, snow, rain and hail, and can also simulate thermals and different types of atmospheric flows. [Multi-vehicle simulation](../sim_flightgear/multi_vehicle.md) is also supported.

Supported Vehicles: Plane, Autogyro, Rover

| +| [JMAVSim](../sim_jmavsim/index.md) |

A simple multirotor/quad simulator. This was previously part of the PX4 development toolchain but was removed in favour of [Gazebo](../sim_gazebo_gz/index.md).

Supported Vehicles: Quad

| +| [JSBSim](../sim_jsbsim/index.md) |

A simulator that provides advanced flight dynamics models. This can be used to model realistic flight dynamics based on wind tunnel data.

Supported Vehicles: Plane, Quad, Hex

| +| [AirSim](../sim_airsim/index.md) |

A cross platform simulator that provides physically and visually realistic simulations. This simulator is resource intensive, and requires a significantly more powerful computer than the other simulators described here.

Supported Vehicles: Iris (MultiRotor model and a configuration for PX4 QuadRotor in the X configuration).

| diff --git a/docs/zh/smart_batteries/rotoye_batmon.md b/docs/zh/smart_batteries/rotoye_batmon.md index e12979457b..20e9e615cf 100644 --- a/docs/zh/smart_batteries/rotoye_batmon.md +++ b/docs/zh/smart_batteries/rotoye_batmon.md @@ -47,7 +47,7 @@ In _QGroundControl_: 3. Start the [batt_smbus driver](../modules/modules_driver.md) in the console. For example, to run two BatMons on the same bus: ```sh - batt_smbus start -X -b 1 -a 11 # External bus 1, address 0x0b + batt_smbus start -X -b 1 -a 11 # External bus 1, address 0x0b batt_smbus start -X -b 1 -a 12 # External bus 1, address 0x0c ``` diff --git a/docs/zh/test_and_ci/continous_integration.md b/docs/zh/test_and_ci/continous_integration.md index e02b039d2f..0418804b38 100644 --- a/docs/zh/test_and_ci/continous_integration.md +++ b/docs/zh/test_and_ci/continous_integration.md @@ -1,3 +1,194 @@ # PX4 持续集成 -PX4 构建和测试分布在多个持续集成服务上。 +PX4 uses GitHub Actions for continuous integration, with different workflows handling code builds, testing, and documentation. + +## Documentation CI + +The documentation pipeline handles building, deploying, and translating the PX4 User Guide. +All documentation CI is consolidated into a single orchestrator workflow organized in tiers. + +### Docs Orchestrator + +**Workflow file:** [`docs-orchestrator.yml`](https://github.com/PX4/PX4-Autopilot/blob/main/.github/workflows/docs-orchestrator.yml) + +This is the main documentation workflow. It runs on pull requests, pushes to `main` and `release/**` branches, and manual `workflow_dispatch` triggers, performing different jobs depending on the trigger event. +Jobs are organized in tiers, where each tier depends on the previous one completing successfully. + +#### Tier Structure + +| Tier | Job | PR | Push / Dispatch | 描述 | +| ---- | -------------- | ----------------------------------------------- | --------------------------------- | -------------------------------------------------------------------------------- | +| T1 | Detect Changes | Yes | — | Checks if source code files changed (triggers metadata regen) | +| T2 | PR Metadata | Yes (conditional) | — | Builds PX4 SITL and regenerates all auto-generated docs | +| T2 | Metadata Sync | — | Yes | Builds PX4 SITL, regenerates metadata, auto-commits | +| T2 | Link Check | Yes | — | Checks for broken links in changed files, posts PR comment | +| T3 | Build Site | Yes (if docs/source changed) | Yes (after T2) | Builds the VitePress documentation site | +| T4 | Deploy | — | Yes | Deploys to AWS S3 | + +#### Pull Request Flow + +When a PR modifies files in `docs/**` or the orchestrator workflow file itself, the workflow validates the changes: + +```txt +PR Event + │ + ▼ +┌─────────────────────────────────────┐ +│ T1: Detect Changes │ +│ • Checks if src/msg/ROMFS changed │ +└─────────────────┬───────────────────┘ + │ + ┌───────┴───────┐ + ▼ ▼ +┌──────────────────┐ ┌─────────────────────────┐ +│ T2: PR Metadata │ │ T2: Link Check (~30s) │ +│ (conditional) │ │ • Detects changed .md │ +│ • Builds SITL │ │ • Runs filtered check │ +│ • Generates │ │ • Posts PR comment │ +│ metadata │ │ • Runs full check │ +│ • Builds │ └────────────┬────────────┘ +│ failsafe web │ │ +└────────┬─────────┘ │ + └───────────┬────────────┘ + ▼ +┌─────────────────────────────────────┐ +│ T3: Build Site (~7-10 min) │ +│ (skipped if only workflow YAML │ +│ changed — no docs/source changes) │ +│ • Builds VitePress site │ +│ • Verifies no build errors │ +└─────────────────┬───────────────────┘ + │ + ▼ + DONE +``` + +| Job | Duration | 描述 | +| -------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **T1: Detect Changes** | ~10s | Determines if metadata regeneration is needed | +| **T2: PR Metadata** | ~10-15m | Rebuilds PX4 SITL and regenerates all metadata (only if source files changed) | +| **T2: Link Check** | ~30s | Checks for broken links in changed markdown files and posts a sticky comment to the PR (skipped on fork PRs) | +| **T3: Build Site** | ~7-10m | Builds the VitePress site to verify there are no build errors. Skipped when only the workflow YAML changed (no docs or source changes). | + +#### Push / Dispatch Flow (main/release branches) + +When changes are pushed to `main` or `release/**` branches (or a `workflow_dispatch` is triggered), the workflow regenerates metadata, builds, and deploys. +Only `main` and `release/*` branches are accepted for deploy — other branches will fail with a clear error. + +```txt +Push / Dispatch Event + │ + ▼ +┌─────────────────────────────────────┐ +│ T2: Metadata Sync (~10-15 min) │ +│ • Builds px4_sitl_default │ +│ • Generates parameter/airframe/ │ +│ module documentation │ +│ • Builds failsafe web simulator │ +│ • Formats with Prettier │ +│ • Auto-commits if changes detected │ +│ (with [skip ci]) │ +└─────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────┐ +│ T3: Build Site (~7-10 min) │ +│ • Builds VitePress site │ +│ • Uploads build artifact │ +└─────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────┐ +│ T4: Deploy (~3 min) │ +│ • Syncs to AWS S3 │ +│ • HTML: 60s cache │ +│ • Assets: 24h immutable cache │ +└─────────────────────────────────────┘ +``` + +| Job | Duration | 描述 | +| ------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------ | +| **T2: Metadata Sync** | ~10-15m | Rebuilds PX4 SITL, regenerates all metadata, formats with Prettier, auto-commits with `[skip ci]` | +| **T3: Build Site** | ~7-10m | Builds the VitePress documentation site | +| **T4: Deploy** | ~3m | Syncs built site to AWS S3 (HTML: 60s cache, assets: 24h cache) | + +Crowdin upload is handled by a separate workflow (see below). + +#### Generated Metadata + +The metadata regeneration job creates the following auto-generated documentation: + +| 类型 | 输出 | 描述 | +| ------------------ | ------------------------------------------------ | --------------------------------------------------------------- | +| 参数 | `docs/en/advanced_config/parameter_reference.md` | Complete parameter reference | +| 机型 | `docs/en/airframes/airframe_reference.md` | Airframe configurations | +| Modules | `docs/en/modules/*.md` | Module documentation | +| Messages | `docs/en/msg_docs/*.md` | uORB message documentation | +| uORB Graphs | `docs/public/middleware/*.json` | Topic dependency graphs | +| Failsafe Simulator | `docs/public/config/failsafe/*` | Interactive failsafe simulator (WebAssembly) | + +:::warning +Do not manually edit the auto-generated files listed above. They are overwritten on every push to main. +::: + +#### Path Triggers + +The workflow triggers on different paths depending on the event: + +**Push** (main/release branches): + +| Path | Reason | +| ------------------------ | ------------------------------------- | +| `docs/**` | Documentation source files | +| `src/**` | Source code changes affect metadata | +| `msg/**` | Message definitions affect metadata | +| `ROMFS/**` | ROMFS files affect metadata | +| `Tools/module_config/**` | Module configuration affects metadata | + +**Pull Request:** + +| Path | Reason | +| ----------------------------------------- | ------------------------------ | +| `docs/**` | Documentation source files | +| `.github/workflows/docs-orchestrator.yml` | Changes to the workflow itself | + +Source-only changes on PRs are detected at runtime by the T1: Detect Changes job using [dorny/paths-filter](https://github.com/dorny/paths-filter), which conditionally triggers the T2: PR Metadata job. + +### Crowdin Download Workflow + +**Workflow file:** [`docs_crowdin_download.yml`](https://github.com/PX4/PX4-Autopilot/blob/main/.github/workflows/docs_crowdin_download.yml) + +This scheduled workflow downloads completed translations from Crowdin and creates pull requests. + +| 设置 | 值 | +| -------------------- | ---------------------------------------------------------------------------------------------------------------- | +| **Schedule** | Every Sunday at 00:00 UTC | +| **Target Languages** | Korean (ko), Ukrainian (uk), Chinese Simplified (zh-CN) | + +**Process:** + +1. Downloads translations for each target language from Crowdin +2. Creates a separate PR for each language with new translations +3. PRs are labeled "Documentation" and assigned for review + +### Caching Strategy + +The workflows use caching to speed up builds: + +| Cache | Size | Purpose | +| --------------------------------- | --------------------- | -------------------------------------------------- | +| ccache | 1GB | C++ compilation cache for SITL builds | +| node_modules | ~26MB | Node.js dependencies for VitePress | + +### Infrastructure + +Jobs run on [runs-on](https://runs-on.com/) self-hosted runners with S3 cache: + +| Job | Runner | +| ---------------------------------- | ------------------------------------------------- | +| T1: Detect Changes | ubuntu-latest | +| T2: PR Metadata | 4 CPU (with px4-dev container) | +| T2: Metadata Sync | 4 CPU (with px4-dev container) | +| T2: Link Check | ubuntu-latest | +| T3: Build Site | 4 CPU | +| T4: Deploy | ubuntu-latest | diff --git a/docs/zh/test_and_ci/docker.md b/docs/zh/test_and_ci/docker.md index 176cdba49e..d9998ca5bc 100644 --- a/docs/zh/test_and_ci/docker.md +++ b/docs/zh/test_and_ci/docker.md @@ -1,12 +1,11 @@ # PX4 Docker 容器 -Docker containers are provided for the complete [PX4 development toolchain](../dev_setup/dev_env.md#supported-targets) including NuttX and Linux based hardware, [Gazebo Classic](../sim_gazebo_classic/index.md) simulation, and [ROS](../simulation/ros_interface.md). +Docker containers are provided for the complete [PX4 development toolchain](../dev_setup/dev_env.md#supported-targets) including NuttX and Linux based hardware, [Gazebo](../sim_gazebo_gz/index.md) simulation, and [ROS 2](../ros2/user_guide.md). This topic shows how to use the [available docker containers](#px4_containers) to access the build environment in a local Linux computer. :::info -Dockerfiles and README can be found on [Github here](https://github.com/PX4/PX4-containers/tree/master?tab=readme-ov-file#container-hierarchy). -They are built automatically on [Docker Hub](https://hub.docker.com/u/px4io/). +The recommended `px4-dev` container is built from the [Dockerfile in the PX4-Autopilot source tree](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/setup/Dockerfile) by the [Container build workflow](https://github.com/PX4/PX4-Autopilot/actions/workflows/dev_container.yml). ::: ## 系统必备组件 @@ -35,33 +34,36 @@ sudo usermod -aG docker $USER # Log in/out again before using docker! ``` -## Container Hierarchy {#px4_containers} +## px4-dev Container (Recommended) {#px4_containers} -The available containers are on [GitHub here](https://github.com/PX4/PX4-containers/tree/master?tab=readme-ov-file#container-hierarchy). +The **`px4-dev`** container is the recommended container for building PX4 firmware. +It is a single, multi-architecture container (linux/amd64 and linux/arm64) based on Ubuntu 24.04 that includes everything needed to build PX4 for NuttX hardware targets. -使用容器的最简单方法是通过 docker_run.sh 帮助程序脚本。 -The containers are hierarchical, such that containers have the functionality of their parents. -For example, the partial hierarchy below shows that the docker container with NuttX build tools (`px4-dev-nuttx-focal`) does not include ROS 2, while the simulation containers do: +It is published to both registries simultaneously: -```plain -- px4io/px4-dev-base-focal - - px4io/px4-dev-nuttx-focal - - px4io/px4-dev-simulation-focal - - px4io/px4-dev-ros-noetic - - px4io/px4-dev-ros2-foxy - - px4io/px4-dev-ros2-rolling -- px4io/px4-dev-base-jammy - - px4io/px4-dev-nuttx-jammy -``` +- **GitHub Container Registry:** [ghcr.io/px4/px4-dev](https://github.com/PX4/PX4-Autopilot/pkgs/container/px4-dev) +- **Docker Hub:** [px4io/px4-dev](https://hub.docker.com/r/px4io/px4-dev) -The most recent version can be accessed using the `latest` tag: `px4io/px4-dev-nuttx-focal:latest` -(available tags are listed for each container on _hub.docker.com_. -For example, the `px4io/px4-dev-nuttx-focal` tags can be found on [hub.docker.com here](https://hub.docker.com/r/px4io/px4-dev-nuttx-focal/tags?page=1&ordering=last_updated)). +The container includes: + +- Ubuntu 24.04 base +- ARM cross-compiler (`gcc-arm-none-eabi`) and Xtensa compiler (for ESP32 targets) +- Build tools: `cmake`, `ninja`, `ccache`, `make` +- Python 3 with PX4 build dependencies +- NuttX toolchain libraries (`libnewlib-arm-none-eabi`, etc.) + +The container is built from the [Dockerfile](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/setup/Dockerfile) in the PX4 source tree using the [Container build workflow](https://github.com/PX4/PX4-Autopilot/actions/workflows/dev_container.yml). +Images are tagged with the PX4 version (e.g. `px4io/px4-dev:v1.16.0`). :::tip -Typically you should use a recent container, but not necessarily the `latest` (as this changes too often). +A `px4-sim` container with simulation tools (Gazebo Harmonic) is planned to complement `px4-dev` for simulation workflows. ::: +### Legacy Containers + +The older per-distro containers from [PX4/PX4-containers](https://github.com/PX4/PX4-containers) (e.g. `px4-dev-nuttx-jammy`, `px4-dev-ros2-humble`, etc.) are no longer recommended. +They will be replaced by `px4-dev` (for builds) and the upcoming `px4-sim` (for simulation). + ## 使用 Docker 容器 典型命令的语法如下所示。 @@ -121,7 +123,7 @@ Where, - ``: The host computer directory to be mapped to `` in the container. This should normally be the **PX4-Autopilot** directory. - ``: The location of the shared (source) directory when inside the container. - ``: A name for the docker container being created. This can later be used if we need to reference the container again. -- `:`: The container with version tag to start - e.g.: `px4io/px4-dev-ros:2017-10-23`. +- `:`: The container with version tag to start - e.g.: `px4io/px4-dev:v1.16.0`. - ``: The command to invoke on the new container. E.g. `bash` is used to open a bash shell in the container. The concrete example below shows how to open a bash shell and share the directory **~/src/PX4-Autopilot** on the host computer. @@ -137,7 +139,7 @@ docker run -it --privileged \ -v /tmp/.X11-unix:/tmp/.X11-unix:ro \ -e DISPLAY=:0 \ --network host \ ---name=px4-ros px4io/px4-dev-ros2-foxy:2022-07-31 bash +--name=px4-dev px4io/px4-dev:v1.16.0 bash ``` :::info @@ -154,7 +156,7 @@ On other hosts you might iterate the value of `0` in `-e DISPLAY=:0` until the " ```sh cd src/PX4-Autopilot #This is -make px4_sitl_default gazebo-classic +make px4_sitl gz_x500 ``` ### 重新进入容器 @@ -218,7 +220,7 @@ This ensures that all files created within the container will be accessible on t #### 图形驱动问题 -It's possible that running Gazebo Classic will result in a similar error message like the following: +It's possible that running Gazebo will result in a similar error message like the following: ```sh libGL error: failed to load driver: swrast @@ -238,7 +240,7 @@ For Nvidia drivers the following command should be used (otherwise the installer The following configuration is tested: -- OS X with VMWare Fusion and Ubuntu 14.04 (Docker container with GUI support on Parallels make the X-Server crash). +- OS X with VMWare Fusion and Ubuntu 22.04 (Docker container with GUI support on Parallels make the X-Server crash). **Memory** diff --git a/docs/zh/uart/user_configurable_serial_driver.md b/docs/zh/uart/user_configurable_serial_driver.md index 948fee14c5..61845e000e 100644 --- a/docs/zh/uart/user_configurable_serial_driver.md +++ b/docs/zh/uart/user_configurable_serial_driver.md @@ -25,7 +25,6 @@ 使驱动程序可配置: 1. Create a YAML module configuration file: - - Add a new file in the driver's source directory named **module.yaml** - Insert the following text and adjust as needed: From 602add3ec13c6448ae97d69e83c938b7cdf56dfb Mon Sep 17 00:00:00 2001 From: PX4 Build Bot Date: Wed, 18 Feb 2026 16:44:45 +1100 Subject: [PATCH 81/83] New Crowdin translations - uk (#26432) Co-authored-by: Crowdin Bot --- docs/uk/SUMMARY.md | 4 +- .../ark_jetson_pab_carrier.md | 3 - .../holybro_pixhawk_rpi_cm4_baseboard.md | 2 - docs/uk/companion_computer/pixhawk_rpi.md | 2 - .../computer_vision/collision_prevention.md | 1 - docs/uk/concept/flight_tasks.md | 1 - docs/uk/config/_autotune.md | 9 +- docs/uk/config/level_horizon_calibration.md | 1 - docs/uk/config/safety.md | 2 +- docs/uk/config_heli/index.md | 1 - .../pid_tuning_guide_multicopter_basic.md | 1 - docs/uk/config_rover/index.md | 43 +- docs/uk/dev_airframes/adding_a_new_frame.md | 1 - docs/uk/dev_setup/building_px4.md | 60 +- docs/uk/dev_setup/config_initial.md | 2 +- docs/uk/dev_setup/dev_env.md | 6 +- docs/uk/dev_setup/dev_env_linux_centos.md | 5 +- docs/uk/dev_setup/dev_env_linux_ubuntu.md | 26 +- docs/uk/dev_setup/dev_env_windows_wsl.md | 16 +- docs/uk/dev_setup/vscode.md | 5 +- docs/uk/dronecan/holybro_h_rtk_zed_f9p_gps.md | 1 - docs/uk/esc/ark_4in1_esc.md | 2 - docs/uk/flight_controller/airlink.md | 22 +- .../autopilot_manufacturer_supported.md | 1 + .../flight_controller/gearup_airbrainh743.md | 96 + docs/uk/flight_modes/offboard.md | 28 +- docs/uk/flight_modes_fw/mission.md | 1 - docs/uk/flight_modes_mc/follow_me.md | 1 - docs/uk/flight_modes_mc/mission.md | 1 - docs/uk/flight_modes_vtol/return.md | 1 - docs/uk/flight_stack/controller_diagrams.md | 6 +- docs/uk/flying/package_delivery_mission.md | 1 - docs/uk/frames_rover/index.md | 6 + docs/uk/getting_started/led_meanings.md | 21 +- docs/uk/getting_started/tunes.md | 2 +- docs/uk/gps_compass/rtk_gps.md | 1 - docs/uk/index.md | 90 +- docs/uk/middleware/dds_topics.md | 374 ++-- docs/uk/middleware/uxrce_dds.md | 2 +- docs/uk/modules/module_template.md | 4 +- docs/uk/modules/modules_driver.md | 140 +- docs/uk/modules/modules_template.md | 31 + docs/uk/msg_docs/ActionRequest.md | 52 +- docs/uk/msg_docs/ActuatorArmed.md | 29 +- docs/uk/msg_docs/ActuatorControlsStatus.md | 23 +- docs/uk/msg_docs/ActuatorMotors.md | 35 +- docs/uk/msg_docs/ActuatorOutputs.md | 31 +- docs/uk/msg_docs/ActuatorServos.md | 33 +- docs/uk/msg_docs/ActuatorServosTrim.md | 31 +- docs/uk/msg_docs/ActuatorTest.md | 38 +- docs/uk/msg_docs/AdcReport.md | 27 +- docs/uk/msg_docs/Airspeed.md | 28 +- docs/uk/msg_docs/AirspeedValidated.md | 52 +- docs/uk/msg_docs/AirspeedValidatedV0.md | 38 +- docs/uk/msg_docs/AirspeedWind.md | 46 +- docs/uk/msg_docs/ArmingCheckReply.md | 59 +- docs/uk/msg_docs/ArmingCheckReplyV0.md | 49 +- docs/uk/msg_docs/ArmingCheckRequest.md | 32 +- docs/uk/msg_docs/ArmingCheckRequestV0.md | 29 +- .../msg_docs/AutotuneAttitudeControlStatus.md | 62 +- docs/uk/msg_docs/BatteryInfo.md | 26 +- docs/uk/msg_docs/BatteryStatus.md | 112 +- docs/uk/msg_docs/BatteryStatusV0.md | 113 +- docs/uk/msg_docs/ButtonEvent.md | 29 +- docs/uk/msg_docs/CameraCapture.md | 30 +- docs/uk/msg_docs/CameraStatus.md | 24 +- docs/uk/msg_docs/CameraTrigger.md | 31 +- docs/uk/msg_docs/CanInterfaceStatus.md | 26 +- docs/uk/msg_docs/CellularStatus.md | 70 +- docs/uk/msg_docs/CollisionConstraints.md | 27 +- docs/uk/msg_docs/ConfigOverrides.md | 39 +- docs/uk/msg_docs/ConfigOverridesV0.md | 38 +- docs/uk/msg_docs/ControlAllocatorStatus.md | 39 +- docs/uk/msg_docs/Cpuload.md | 24 +- docs/uk/msg_docs/DatamanRequest.md | 28 +- docs/uk/msg_docs/DatamanResponse.md | 39 +- docs/uk/msg_docs/DebugArray.md | 31 +- docs/uk/msg_docs/DebugKeyValue.md | 24 +- docs/uk/msg_docs/DebugValue.md | 24 +- docs/uk/msg_docs/DebugVect.md | 26 +- docs/uk/msg_docs/DeviceInformation.md | 54 +- docs/uk/msg_docs/DifferentialPressure.md | 29 +- docs/uk/msg_docs/DistanceSensor.md | 63 +- .../DistanceSensorModeChangeRequest.md | 30 +- docs/uk/msg_docs/DronecanNodeStatus.md | 42 +- docs/uk/msg_docs/Ekf2Timestamps.md | 38 +- docs/uk/msg_docs/EscReport.md | 61 +- docs/uk/msg_docs/EscStatus.md | 40 +- docs/uk/msg_docs/EstimatorAidSource1d.md | 35 +- docs/uk/msg_docs/EstimatorAidSource2d.md | 35 +- docs/uk/msg_docs/EstimatorAidSource3d.md | 35 +- docs/uk/msg_docs/EstimatorBias.md | 29 +- docs/uk/msg_docs/EstimatorBias3d.md | 29 +- docs/uk/msg_docs/EstimatorEventFlags.md | 41 +- docs/uk/msg_docs/EstimatorGpsStatus.md | 38 +- docs/uk/msg_docs/EstimatorInnovations.md | 43 +- docs/uk/msg_docs/EstimatorSelectorStatus.md | 37 +- docs/uk/msg_docs/EstimatorSensorBias.md | 44 +- docs/uk/msg_docs/EstimatorStates.md | 26 +- docs/uk/msg_docs/EstimatorStatus.md | 108 +- docs/uk/msg_docs/EstimatorStatusFlags.md | 98 +- docs/uk/msg_docs/Event.md | 35 +- docs/uk/msg_docs/EventV0.md | 36 +- docs/uk/msg_docs/FailsafeFlags.md | 63 +- docs/uk/msg_docs/FailureDetectorStatus.md | 33 +- docs/uk/msg_docs/FigureEightStatus.md | 29 +- .../FixedWingLateralGuidanceStatus.md | 33 +- docs/uk/msg_docs/FixedWingLateralSetpoint.md | 35 +- docs/uk/msg_docs/FixedWingLateralStatus.md | 27 +- .../msg_docs/FixedWingLongitudinalSetpoint.md | 38 +- docs/uk/msg_docs/FixedWingRunwayControl.md | 45 +- docs/uk/msg_docs/FlightPhaseEstimation.md | 32 +- docs/uk/msg_docs/FollowTarget.md | 29 +- docs/uk/msg_docs/FollowTargetEstimator.md | 33 +- docs/uk/msg_docs/FollowTargetStatus.md | 29 +- docs/uk/msg_docs/FuelTankStatus.md | 38 +- docs/uk/msg_docs/GainCompression.md | 25 +- docs/uk/msg_docs/GeneratorStatus.md | 61 +- docs/uk/msg_docs/GeofenceResult.md | 37 +- docs/uk/msg_docs/GeofenceStatus.md | 31 +- docs/uk/msg_docs/GimbalControls.md | 34 +- .../uk/msg_docs/GimbalDeviceAttitudeStatus.md | 46 +- docs/uk/msg_docs/GimbalDeviceInformation.md | 54 +- docs/uk/msg_docs/GimbalDeviceSetAttitude.md | 39 +- docs/uk/msg_docs/GimbalManagerInformation.md | 49 +- docs/uk/msg_docs/GimbalManagerSetAttitude.md | 43 +- .../msg_docs/GimbalManagerSetManualControl.md | 42 +- docs/uk/msg_docs/GimbalManagerStatus.md | 28 +- docs/uk/msg_docs/GotoSetpoint.md | 44 +- docs/uk/msg_docs/GpioConfig.md | 44 +- docs/uk/msg_docs/GpioIn.md | 32 +- docs/uk/msg_docs/GpioOut.md | 27 +- docs/uk/msg_docs/GpioRequest.md | 25 +- docs/uk/msg_docs/GpsDump.md | 34 +- docs/uk/msg_docs/GpsInjectData.md | 33 +- docs/uk/msg_docs/Gripper.md | 32 +- docs/uk/msg_docs/HealthReport.md | 29 +- docs/uk/msg_docs/HeaterStatus.md | 40 +- docs/uk/msg_docs/HomePosition.md | 42 +- docs/uk/msg_docs/HomePositionV0.md | 40 +- docs/uk/msg_docs/HoverThrustEstimate.md | 30 +- docs/uk/msg_docs/InputRc.md | 59 +- .../InternalCombustionEngineControl.md | 27 +- .../InternalCombustionEngineStatus.md | 77 +- docs/uk/msg_docs/IridiumsbdStatus.md | 36 +- docs/uk/msg_docs/IrlockReport.md | 29 +- docs/uk/msg_docs/LandingGear.md | 31 +- docs/uk/msg_docs/LandingGearWheel.md | 23 +- docs/uk/msg_docs/LandingTargetInnovations.md | 26 +- docs/uk/msg_docs/LandingTargetPose.md | 40 +- .../msg_docs/LateralControlConfiguration.md | 32 +- docs/uk/msg_docs/LaunchDetectionStatus.md | 33 +- docs/uk/msg_docs/LedControl.md | 54 +- docs/uk/msg_docs/LogMessage.md | 32 +- docs/uk/msg_docs/LoggerStatus.md | 42 +- .../LongitudinalControlConfiguration.md | 41 +- docs/uk/msg_docs/MagWorkerData.md | 37 +- docs/uk/msg_docs/MagnetometerBiasEstimate.md | 27 +- docs/uk/msg_docs/ManualControlSetpoint.md | 52 +- docs/uk/msg_docs/ManualControlSwitches.md | 54 +- docs/uk/msg_docs/MavlinkLog.md | 30 +- docs/uk/msg_docs/MavlinkTunnel.md | 47 +- docs/uk/msg_docs/MessageFormatRequest.md | 30 +- docs/uk/msg_docs/MessageFormatResponse.md | 26 +- docs/uk/msg_docs/Mission.md | 32 +- docs/uk/msg_docs/MissionResult.md | 36 +- docs/uk/msg_docs/ModeCompleted.md | 36 +- docs/uk/msg_docs/MountOrientation.md | 23 +- docs/uk/msg_docs/NavigatorMissionItem.md | 38 +- docs/uk/msg_docs/NavigatorStatus.md | 34 +- docs/uk/msg_docs/NeuralControl.md | 28 +- .../uk/msg_docs/NormalizedUnsignedSetpoint.md | 23 +- docs/uk/msg_docs/ObstacleDistance.md | 41 +- docs/uk/msg_docs/OffboardControlMode.md | 31 +- docs/uk/msg_docs/OnboardComputerStatus.md | 43 +- docs/uk/msg_docs/OpenDroneIdArmStatus.md | 24 +- docs/uk/msg_docs/OpenDroneIdOperatorId.md | 25 +- docs/uk/msg_docs/OpenDroneIdSelfId.md | 25 +- docs/uk/msg_docs/OpenDroneIdSystem.md | 34 +- docs/uk/msg_docs/OrbTest.md | 23 +- docs/uk/msg_docs/OrbTestLarge.md | 24 +- docs/uk/msg_docs/OrbTestMedium.md | 30 +- docs/uk/msg_docs/OrbitStatus.md | 41 +- docs/uk/msg_docs/ParameterResetRequest.md | 32 +- docs/uk/msg_docs/ParameterSetUsedRequest.md | 31 +- docs/uk/msg_docs/ParameterSetValueRequest.md | 33 +- docs/uk/msg_docs/ParameterSetValueResponse.md | 32 +- docs/uk/msg_docs/ParameterUpdate.md | 32 +- docs/uk/msg_docs/Ping.md | 28 +- .../PositionControllerLandingStatus.md | 35 +- docs/uk/msg_docs/PositionControllerStatus.md | 30 +- docs/uk/msg_docs/PositionSetpoint.md | 56 +- docs/uk/msg_docs/PositionSetpointTriplet.md | 28 +- docs/uk/msg_docs/PowerButtonState.md | 34 +- docs/uk/msg_docs/PowerMonitor.md | 35 +- docs/uk/msg_docs/PpsCapture.md | 24 +- docs/uk/msg_docs/PurePursuitStatus.md | 29 +- docs/uk/msg_docs/PwmInput.md | 25 +- docs/uk/msg_docs/Px4ioStatus.md | 53 +- docs/uk/msg_docs/QshellReq.md | 31 +- docs/uk/msg_docs/QshellRetval.md | 24 +- docs/uk/msg_docs/RadioStatus.md | 30 +- docs/uk/msg_docs/RaptorInput.md | 59 + docs/uk/msg_docs/RaptorStatus.md | 109 ++ docs/uk/msg_docs/RateCtrlStatus.md | 25 +- docs/uk/msg_docs/RcChannels.md | 65 +- docs/uk/msg_docs/RcParameterMap.md | 36 +- docs/uk/msg_docs/RegisterExtComponentReply.md | 37 +- .../msg_docs/RegisterExtComponentReplyV0.md | 36 +- .../msg_docs/RegisterExtComponentRequest.md | 42 +- .../msg_docs/RegisterExtComponentRequestV0.md | 41 +- docs/uk/msg_docs/RoverAttitudeSetpoint.md | 25 +- docs/uk/msg_docs/RoverAttitudeStatus.md | 26 +- docs/uk/msg_docs/RoverPositionSetpoint.md | 29 +- docs/uk/msg_docs/RoverRateSetpoint.md | 25 +- docs/uk/msg_docs/RoverRateStatus.md | 27 +- docs/uk/msg_docs/RoverSpeedSetpoint.md | 26 +- docs/uk/msg_docs/RoverSpeedStatus.md | 30 +- docs/uk/msg_docs/RoverSteeringSetpoint.md | 25 +- docs/uk/msg_docs/RoverThrottleSetpoint.md | 26 +- docs/uk/msg_docs/Rpm.md | 24 +- docs/uk/msg_docs/RtlStatus.md | 37 +- docs/uk/msg_docs/RtlTimeEstimate.md | 25 +- docs/uk/msg_docs/SatelliteInfo.md | 35 +- docs/uk/msg_docs/SensorAccel.md | 37 +- docs/uk/msg_docs/SensorAccelFifo.md | 30 +- docs/uk/msg_docs/SensorAirflow.md | 26 +- docs/uk/msg_docs/SensorBaro.md | 35 +- docs/uk/msg_docs/SensorCombined.md | 43 +- docs/uk/msg_docs/SensorCorrection.md | 48 +- docs/uk/msg_docs/SensorGnssRelative.md | 42 +- docs/uk/msg_docs/SensorGnssStatus.md | 30 +- docs/uk/msg_docs/SensorGps.md | 97 +- docs/uk/msg_docs/SensorGyro.md | 37 +- docs/uk/msg_docs/SensorGyroFft.md | 32 +- docs/uk/msg_docs/SensorGyroFifo.md | 36 +- docs/uk/msg_docs/SensorHygrometer.md | 26 +- docs/uk/msg_docs/SensorMag.md | 35 +- docs/uk/msg_docs/SensorOpticalFlow.md | 45 +- docs/uk/msg_docs/SensorPreflightMag.md | 26 +- docs/uk/msg_docs/SensorSelection.md | 27 +- docs/uk/msg_docs/SensorTemp.md | 24 +- docs/uk/msg_docs/SensorUwb.md | 45 +- docs/uk/msg_docs/SensorsStatus.md | 29 +- docs/uk/msg_docs/SensorsStatusImu.md | 32 +- docs/uk/msg_docs/SystemPower.md | 48 +- docs/uk/msg_docs/TakeoffStatus.md | 37 +- docs/uk/msg_docs/TaskStackInfo.md | 32 +- docs/uk/msg_docs/TecsStatus.md | 46 +- docs/uk/msg_docs/TelemetryStatus.md | 70 +- docs/uk/msg_docs/TiltrotorExtraControls.md | 24 +- docs/uk/msg_docs/TimesyncStatus.md | 35 +- docs/uk/msg_docs/TrajectorySetpoint.md | 39 +- docs/uk/msg_docs/TrajectorySetpoint6dof.md | 31 +- docs/uk/msg_docs/TransponderReport.md | 70 +- docs/uk/msg_docs/TuneControl.md | 61 +- docs/uk/msg_docs/UavcanParameterRequest.md | 44 +- docs/uk/msg_docs/UavcanParameterValue.md | 31 +- docs/uk/msg_docs/UlogStream.md | 37 +- docs/uk/msg_docs/UlogStreamAck.md | 32 +- docs/uk/msg_docs/UnregisterExtComponent.md | 32 +- docs/uk/msg_docs/VehicleAcceleration.md | 25 +- docs/uk/msg_docs/VehicleAirData.md | 32 +- .../VehicleAngularAccelerationSetpoint.md | 25 +- docs/uk/msg_docs/VehicleAngularVelocity.md | 31 +- docs/uk/msg_docs/VehicleAttitude.md | 35 +- docs/uk/msg_docs/VehicleAttitudeSetpoint.md | 31 +- docs/uk/msg_docs/VehicleAttitudeSetpointV0.md | 33 +- docs/uk/msg_docs/VehicleCommand.md | 1582 ++++++++++++++++- docs/uk/msg_docs/VehicleCommandAck.md | 55 +- docs/uk/msg_docs/VehicleConstraints.md | 28 +- docs/uk/msg_docs/VehicleControlMode.md | 43 +- docs/uk/msg_docs/VehicleGlobalPosition.md | 49 +- docs/uk/msg_docs/VehicleImu.md | 41 +- docs/uk/msg_docs/VehicleImuStatus.md | 41 +- docs/uk/msg_docs/VehicleLandDetected.md | 40 +- docs/uk/msg_docs/VehicleLocalPosition.md | 86 +- .../msg_docs/VehicleLocalPositionSetpoint.md | 36 +- docs/uk/msg_docs/VehicleLocalPositionV0.md | 85 +- docs/uk/msg_docs/VehicleMagnetometer.md | 27 +- docs/uk/msg_docs/VehicleOdometry.md | 61 +- docs/uk/msg_docs/VehicleOpticalFlow.md | 32 +- docs/uk/msg_docs/VehicleOpticalFlowVel.md | 32 +- docs/uk/msg_docs/VehicleRatesSetpoint.md | 33 +- docs/uk/msg_docs/VehicleRoi.md | 42 +- docs/uk/msg_docs/VehicleStatus.md | 130 +- docs/uk/msg_docs/VehicleStatusV0.md | 137 +- docs/uk/msg_docs/VehicleThrustSetpoint.md | 25 +- docs/uk/msg_docs/VehicleTorqueSetpoint.md | 25 +- docs/uk/msg_docs/VelocityLimits.md | 27 +- docs/uk/msg_docs/VtolVehicleStatus.md | 37 +- docs/uk/msg_docs/Vtx.md | 84 + docs/uk/msg_docs/WheelEncoders.md | 24 +- docs/uk/msg_docs/Wind.md | 39 +- docs/uk/msg_docs/YawEstimatorStatus.md | 30 +- docs/uk/msg_docs/index.md | 260 ++- docs/uk/peripherals/remote_id.md | 1 - .../power_module/ark_12s_pab_power_module.md | 4 - docs/uk/power_module/holybro_pm03d.md | 4 +- docs/uk/releases/1.13.md | 1 - docs/uk/releases/index.md | 6 +- docs/uk/releases/release_process.md | 301 ++++ docs/uk/ros/mavros_custom_messages.md | 19 +- docs/uk/ros/mavros_installation.md | 4 +- docs/uk/ros2/px4_ros2_control_interface.md | 2 +- docs/uk/sensor/microstrain.md | 20 - docs/uk/sensor/optical_flow.md | 2 +- docs/uk/sensor/sbgecom.md | 4 +- docs/uk/sensor/sfxx_lidar.md | 4 +- docs/uk/sensor/vectornav.md | 1 - docs/uk/sensor_bus/i2c_development.md | 2 +- docs/uk/sensor_bus/translator_tfi2cadt.md | 2 +- docs/uk/sim_gazebo_gz/index.md | 5 - .../community_supported_simulators.md | 14 +- docs/uk/smart_batteries/rotoye_batmon.md | 2 +- docs/uk/test_and_ci/continous_integration.md | 193 +- docs/uk/test_and_ci/docker.md | 60 +- .../uart/user_configurable_serial_driver.md | 1 - 318 files changed, 11946 insertions(+), 1356 deletions(-) create mode 100644 docs/uk/flight_controller/gearup_airbrainh743.md create mode 100644 docs/uk/msg_docs/RaptorInput.md create mode 100644 docs/uk/msg_docs/RaptorStatus.md create mode 100644 docs/uk/msg_docs/Vtx.md create mode 100644 docs/uk/releases/release_process.md diff --git a/docs/uk/SUMMARY.md b/docs/uk/SUMMARY.md index dc24c04642..f5b17caa3d 100644 --- a/docs/uk/SUMMARY.md +++ b/docs/uk/SUMMARY.md @@ -179,6 +179,7 @@ - [CubePilot Cube Orange (CubePilot)](flight_controller/cubepilot_cube_orange.md) - [CubePilot Cube Yellow (CubePilot)](flight_controller/cubepilot_cube_yellow.md) - [Швидке підключення Cube](assembly/quick_start_cube.md) + - [Gear Up AirBrainH743](flight_controller/gearup_airbrainh743.md) - [Holybro Kakute H7v2](flight_controller/kakuteh7v2.md) - [Holybro Kakute H7mini](flight_controller/kakuteh7mini.md) - [Holybro Kakute H7](flight_controller/kakuteh7.md) @@ -255,7 +256,7 @@ - [Benewake TFmini Lidar](sensor/tfmini.md) - [LeddarOne Lidar](sensor/leddar_one.md) - [Lidar-Lite](sensor/lidar_lite.md) - - [Lightware Lidars (SF/LW)](sensor/sfxx_lidar.md) + - [Lightware Lidars (SF/LW/GRF)](sensor/sfxx_lidar.md) - [Lightware SF45 Rotary Lidar](sensor/sf45_rotating_lidar.md) - [TeraRanger](sensor/teraranger.md) - [✘ Lanbao PSK-CM8JL65-CC5](sensor/cm8jl65_ir_distance_sensor.md) @@ -932,6 +933,7 @@ - [Ліцензії](contribute/licenses.md) - [Релізи](releases/index.md) + - [Release Process](releases/release_process.md) - [main (alpha)](releases/main.md) - [1.17 (alpha)](releases/1.17.md) - [1.16 (stable)](releases/1.16.md) diff --git a/docs/uk/companion_computer/ark_jetson_pab_carrier.md b/docs/uk/companion_computer/ark_jetson_pab_carrier.md index b594192d65..8a3425dfb2 100644 --- a/docs/uk/companion_computer/ark_jetson_pab_carrier.md +++ b/docs/uk/companion_computer/ark_jetson_pab_carrier.md @@ -12,19 +12,16 @@ The [ARK Jetson Pixhawk Autopilot Bus (PAB) Carrier](https://arkelectron.gitbook ## Характеристики - **Power Requirements** - - 5V - 4A minimum (dependent on usage and peripherals) - **Additional Features** - - Pixhawk Autopilot Bus (PAB) Form Factor ([PAB Standard](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-010%20Pixhawk%20Autopilot%20Bus%20Standard.pdf)) - Слот MicroSD - USA-built, NDAA compliant - Integrated 1W heater for sensor stability in extreme conditions - **Physical Details** - - Weight: - Without Jetson and Flight Controller – 80g - With Jetson, no heatsink or Flight Controller – 108g diff --git a/docs/uk/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md b/docs/uk/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md index 7342bd079a..f62faa1333 100644 --- a/docs/uk/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md +++ b/docs/uk/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md @@ -170,7 +170,6 @@ FC повинен бути налаштований для підключенн ![Image of baseboard showing FC USB-C connector](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/baseboard_fc_usb_c.jpg) 2. [Встановіть параметри](../advanced_config/parameters.md): - - `MAV_1_CONFIG` = `102` - `MAV_1_MODE = 2` - `SER_TEL2_BAUD` = `921600` @@ -184,7 +183,6 @@ FC повинен бути налаштований для підключенн 1. Connect to the RPi (using WiFi, a router, or a WiFi Dongle). 2. Увімкніть послідовний порт RPi, запустивши `RPi-config` - - Перейдіть до `3 Варіанти інтерфейсу`, потім `I6 Серійний порт`. Потім введіть: - `login shell accessible over serial → No` diff --git a/docs/uk/companion_computer/pixhawk_rpi.md b/docs/uk/companion_computer/pixhawk_rpi.md index fc42ebb5ec..2d33d41b8f 100644 --- a/docs/uk/companion_computer/pixhawk_rpi.md +++ b/docs/uk/companion_computer/pixhawk_rpi.md @@ -145,7 +145,6 @@ make px4_fmu-v6c_default upload ``` 3. Перейдіть до **Варіанти інтерфейсу**, а потім клацніть **Серійний порт**. - - Виберіть **No**, щоб вимкнути послідовний вхід у оболонку. - Виберіть **Так**, щоб увімкнути послідовний інтерфейс. - Клацніть **Завершити** та перезапустіть RPi. @@ -164,7 +163,6 @@ make px4_fmu-v6c_default upload ``` 6. Далі збережіть файл і перезапустіть RPi. - - У `nano` ви можете зберегти файл за допомогою такої послідовності комбінацій клавіш: **ctrl+x**, **ctrl+y**, **Enter**. 7. Перевірте, чи доступний послідовний порт. diff --git a/docs/uk/computer_vision/collision_prevention.md b/docs/uk/computer_vision/collision_prevention.md index ba066177f5..74201e0f07 100644 --- a/docs/uk/computer_vision/collision_prevention.md +++ b/docs/uk/computer_vision/collision_prevention.md @@ -214,7 +214,6 @@ The Lua script works by extracting the `obstacle_distance_fused` data at each ti 3. Open PlotJuggler and navigate to the **Tools > Reactive Script Editor** section. In the **Script Editor** tab, add following scripts in the appropriate sections: - - **Global code, executed once:** ```lua diff --git a/docs/uk/concept/flight_tasks.md b/docs/uk/concept/flight_tasks.md index 4753edcdd0..88586a9388 100644 --- a/docs/uk/concept/flight_tasks.md +++ b/docs/uk/concept/flight_tasks.md @@ -33,7 +33,6 @@ _Польотні завдання_ використовуються у [Реж - FlightTaskMyTask.cpp 3. Оновіть **CMakeLists.txt** для нового завдання - - Скопіюйте вміст **CMakeLists.txt** з іншого завдання, наприклад, [Orbit/CMakeLists.txt](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/flight_mode_manager/tasks/Orbit/CMakeLists.txt) - Оновіть відмітку про авторське право до поточного року diff --git a/docs/uk/config/_autotune.md b/docs/uk/config/_autotune.md index a76a63832b..dca0cf93c2 100644 --- a/docs/uk/config/_autotune.md +++ b/docs/uk/config/_autotune.md @@ -84,16 +84,9 @@ The RC sticks cannot be used during autotuning (moving the sticks will stop the If an [Enable/Disable Autotune Switch](#enable-disable-autotune-switch) is configured you can just toggle the switch to the "enabled" position.
- 1. In QGroundControl, open the menu **Vehicle setup > PID Tuning**: - ![Tuning Setup > Autotune Enabled](../../assets/qgc/setup/autotune/autotune.png) - - 2. Select either the _Rate Controller_ or _Attitude Controller_ tabs. - - 3. Ensure that the **Autotune enabled** button is enabled (this will display the **Autotune** button and remove the manual tuning selectors). - - 4. Read the warning popup and click on **OK** to start tuning. + ![Tuning Setup > Autotune Enabled](../../assets/qgc/setup/autotune/autotune.png) 2. Select either the _Rate Controller_ or _Attitude Controller_ tabs. 3. Ensure that the **Autotune enabled** button is enabled (this will display the **Autotune** button and remove the manual tuning selectors). 4. Read the warning popup and click on **OK** to start tuning.
diff --git a/docs/uk/config/level_horizon_calibration.md b/docs/uk/config/level_horizon_calibration.md index a3defccee3..41d42a5922 100644 --- a/docs/uk/config/level_horizon_calibration.md +++ b/docs/uk/config/level_horizon_calibration.md @@ -22,7 +22,6 @@ Performing this calibration step is only recommended if the autopilot's orientat ::: 4. Помістіть транспортний засіб на рівну відстань на рівній поверхні: - - Для літаків це положення під час рівнопланового польоту (літаки мають тенденцію трохи підняти свої крила!) - Для коптерів це позиція утримання. diff --git a/docs/uk/config/safety.md b/docs/uk/config/safety.md index 271142256e..a3535d8675 100644 --- a/docs/uk/config/safety.md +++ b/docs/uk/config/safety.md @@ -281,7 +281,7 @@ Acting on a detected failure during flight is deactivated by default (enable by During **takeoff** the failure detector [attitude trigger](#attitude-trigger) invokes the [disarm action](#act_disarm) if the vehicle flips (disarm kills the motors but, unlike flight termination, will not launch a parachute or perform other failure actions). Note that this check is _always enabled on takeoff_, irrespective of the `CBRK_FLIGHTTERM` parameter. -The failure detector is active in all vehicle types and modes, except for those where the vehicle is _expected_ to do flips (i.e. [Acro mode (MC)](../flight_modes_mc/altitude.md), [Acro mode (FW)](../flight_modes_fw/altitude.md), and [Manual (FW)](../flight_modes_fw/manual.md)). +The failure detector is active in all vehicle types and modes, except for those where the vehicle is _expected_ to do flips (i.e. [Acro mode (MC)](../flight_modes_mc/acro.md), [Acro mode (FW)](../flight_modes_fw/acro.md), and [Manual (FW)](../flight_modes_fw/manual.md)). ### Тригер висоти diff --git a/docs/uk/config_heli/index.md b/docs/uk/config_heli/index.md index f98522d729..da65a329e3 100644 --- a/docs/uk/config_heli/index.md +++ b/docs/uk/config_heli/index.md @@ -77,7 +77,6 @@ This section contains topics related to [helicopter](../frames_helicopter/index. 3. Видаліть лопаті ротора та пропелери 4. Assign motors and servos to outputs and test (also in [Actuator configuration](../config/actuators.md)): - 1. Assign the [motors and servos to the outputs](../config/actuators.md#actuator-outputs). 2. Power the vehicle with a battery and use the [actuator testing sliders](../config/actuators.md#actuator-testing) to validate correct servo and motor assignment and direction. diff --git a/docs/uk/config_mc/pid_tuning_guide_multicopter_basic.md b/docs/uk/config_mc/pid_tuning_guide_multicopter_basic.md index 4ccd6f0e3e..7cb155a70a 100644 --- a/docs/uk/config_mc/pid_tuning_guide_multicopter_basic.md +++ b/docs/uk/config_mc/pid_tuning_guide_multicopter_basic.md @@ -140,7 +140,6 @@ Make sure to have assigned a [Kill switch](../config/safety.md#emergency-switche 13. Повторіть процес налаштування контролера нахилу для всіх осей. 14. Повторіть процес налаштування контролерів швидкості та позицій (на всіх осях). - - Використовуйте режим позиції при налаштуванні цих контролерів - Select the **Simple position control** option in the _Position control mode ..._ selector (this allows direct control for the generation of step inputs) diff --git a/docs/uk/config_rover/index.md b/docs/uk/config_rover/index.md index 82c7a91bf4..c49dc517e8 100644 --- a/docs/uk/config_rover/index.md +++ b/docs/uk/config_rover/index.md @@ -18,28 +18,37 @@ A drive mode will only work properly if all the configuration for the preceding ## Flashing the Rover Build -Rovers use a custom build that must be flashed onto your flight controller instead of the default PX4 build: +Rover is built as a [firmware variant](../dev_setup/building_px4.md#px4-make-build-targets), and must be installed as "Custom Firmware" in QGC (other vehicles are present in the default variant). -1. First build the rover firmware for your flight controller from the `main` branch (there is no release build, so you can't just select this build from QGroundControl). +The release versions of Rover firmware for different boards are attached to the associated GitHub release tag. +For example, you can find `px4_fmu-v5x_rover.px4` on [PX4-Autopilot/releases/tag/v1.16.1](https://github.com/PX4/PX4-Autopilot/releases/tag/v1.16.1). +For the `main` branch version of Rover you will need to [build the firmware](#building-rover). - To build for rover with the `make` command, replace the `_default` suffix with `_rover`. - For example, to build rover for px4_fmu-v6x boards, you would use the command: +Load the firmware onto your flight controller as "Custom Firmware" (see [Loading Firmware > Installing PX4 Main, Beta or Custom Firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware)). - ```sh - make px4_fmu-v6x_rover - ``` +## Building Rover - ::: info - You can also enable the modules in default builds by adding these lines to your [board configuration](../hardware/porting_guide_config.md) (e.g. for fmu-v6x you might add them to [`main/boards/px4/fmu-v6x/default.px4board`](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board)): +Rover is built as the `rover` [firmware variant](../dev_setup/building_px4.md#px4-make-build-targets). +What this means is that when building the firmware with the `make` command, you replace the `_default` suffix in the configuration target with `_rover`. - ```sh - CONFIG_MODULES_ROVER_ACKERMANN=y - CONFIG_MODULES_ROVER_DIFFERENTIAL=y - CONFIG_MODULES_ROVER_MECANUM=y - ``` +For example, to build rover for `px4_fmu-v6x` boards, you would use the following command: - Note that adding the rover modules may lead to flash overflow, in which case you will need to disable modules that you do not plan to use (such as those related to multicopter or fixed wing). +```sh +make px4_fmu-v6x_rover +``` +Note that configuration targets are constructed with the format "VENDOR_MODEL_VARIANT". + +The built firmware can be installed as custom firmware, as shown above in in [Flashing the Rover Build](#flashing-the-rover-build). + +:::info +You can also enable the modules in default builds by adding these lines to your [board configuration](../hardware/porting_guide_config.md) (e.g. for fmu-v6x you might add them to [`main/boards/px4/fmu-v6x/default.px4board`](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board)): + +```sh +CONFIG_MODULES_ROVER_ACKERMANN=y +CONFIG_MODULES_ROVER_DIFFERENTIAL=y +CONFIG_MODULES_ROVER_MECANUM=y +``` + +Adding the rover modules may lead to flash overflow, in which case you will need to disable modules that you do not plan to use (such as those related to multicopter or fixed wing). ::: - -2. Load the **custom firmware** that you just built onto your flight controller (see [Loading Firmware > Installing PX4 Main, Beta or Custom Firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware)). diff --git a/docs/uk/dev_airframes/adding_a_new_frame.md b/docs/uk/dev_airframes/adding_a_new_frame.md index 534f06bdc9..2fe074a490 100644 --- a/docs/uk/dev_airframes/adding_a_new_frame.md +++ b/docs/uk/dev_airframes/adding_a_new_frame.md @@ -307,7 +307,6 @@ If the airframe is for a **new group** you additionally need to: ``` 3. Update _QGroundControl_: - - Add the svg image for the group into: [src/AutopilotPlugins/Common/images](https://github.com/mavlink/qgroundcontrol/tree/master/src/AutoPilotPlugins/Common/Images) - Add reference to the svg image into [qgcimages.qrc](https://github.com/mavlink/qgroundcontrol/blob/master/qgcimages.qrc), following the pattern below: diff --git a/docs/uk/dev_setup/building_px4.md b/docs/uk/dev_setup/building_px4.md index 04f9cdf09d..d52cd81c07 100644 --- a/docs/uk/dev_setup/building_px4.md +++ b/docs/uk/dev_setup/building_px4.md @@ -39,16 +39,6 @@ Navigate into the **PX4-Autopilot** directory and start [Gazebo SITL](../sim_gaz make px4_sitl gz_x500 ``` -:::details -If you installed Gazebo Classic -Start [Gazebo Classic SITL](../sim_gazebo_classic/index.md) using the following command: - -```sh -make px4_sitl gazebo-classic -``` - -::: - This will bring up the PX4 console: ![PX4 Console](../../assets/toolchain/console_gazebo.png) @@ -89,6 +79,16 @@ cd PX4-Autopilot make px4_fmu-v5_default ``` +:::tip +You can also build using the [px4-dev Docker container](../test_and_ci/docker.md) without installing the toolchain locally. +From the PX4-Autopilot directory: + +```sh +./Tools/docker_run.sh 'make px4_fmu-v5_default' +``` + +::: + Успішне виконання виведе в консолі приблизно наступне в кінці: ```sh @@ -145,7 +145,8 @@ The following list shows the build commands for the [Pixhawk standard](../flight - [Pixhawk 1 (FMUv2)](../flight_controller/pixhawk.md): `make px4_fmu-v2_default` :::warning - You **must** use a supported version of GCC to build this board (e.g. the same as used by [CI/docker](../test_and_ci/docker.md)) or remove modules from the build. Збірка прошивки за допомогою компілятора GCC, який не підтримується може зазнати невдачі, оскільки обсяг памʼяті, який займає PX4, близький до ліміту пам'яті плати в 1 МБ. + You **must** use a supported version of GCC to build this board (e.g. the `gcc-arm-none-eabi` package from the current Ubuntu LTS, which is the same toolchain used by CI) or remove modules from the build. + Збірка прошивки за допомогою компілятора GCC, який не підтримується може зазнати невдачі, оскільки обсяг памʼяті, який займає PX4, близький до ліміту пам'яті плати в 1 МБ. ::: @@ -211,7 +212,7 @@ The `region 'flash' overflowed by XXXX bytes` error indicates that the firmware This is common for `make px4_fmu-v2_default` builds, where the flash size is limited to 1MB. If you're building the _vanilla_ master branch, the most likely cause is using an unsupported version of GCC. -In this case, install the version specified in the [Developer Toolchain](../dev_setup/dev_env.md) instructions. +In this case, install the `gcc-arm-none-eabi` package from the current Ubuntu LTS as described in the [Developer Toolchain](../dev_setup/dev_env.md) instructions. If building your own branch, it is possible that you have increased the firmware size over the 1MB limit. В цьому випадку вам доведеться видалити всі не потрібні при цій збірці модулі та драйвера. @@ -224,7 +225,7 @@ MacOS дозволяє тримати за замовчуванням відкр The build toolchain will then report `Too many open files` for many files, as shown below: ```sh -/usr/local/Cellar/gcc-arm-none-eabi/20171218/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/ld: cannot find NuttX/nuttx/fs/libfs.a: Too many open files +arm-none-eabi-ld: cannot find NuttX/nuttx/fs/libfs.a: Too many open files ``` Рішення полягає в збільшенні максимально дозволеної кількості відкритих файлів (наприклад, до 300). @@ -247,34 +248,9 @@ xcode-select --install sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/ ``` -### Ubuntu 18.04: Помилки компіляції пов'язані з arm_none_eabi_gcc - -Build issues related to `arm_none_eabi_gcc`may be due to a broken g++ toolchain installation. -Ви можете перевірити чи це так, перевіряючи чи є відсутні залежності: - -```sh -arm-none-eabi-gcc --version -arm-none-eabi-g++ --version -arm-none-eabi-gdb --version -arm-none-eabi-size --version -``` - -Приклад виводу bash з відсутніми залежностями: - -```sh -arm-none-eabi-gdb --version -arm-none-eabi-gdb: command not found -``` - -This can be resolved by removing and [reinstalling the compiler](https://askubuntu.com/questions/1243252/how-to-install-arm-none-eabi-gdb-on-ubuntu-20-04-lts-focal-fossa). - -### Ubuntu 18.04: "Visual Studio Code не може спостерігати за змінами в коді у великому робочому середовищі - -See [Visual Studio Code IDE (VSCode) > Troubleshooting](../dev_setup/vscode.md#troubleshooting). - ### Не вдалося імпортувати пакети Python -"Failed to import" errors when running the `make px4_sitl jmavsim` command indicates that some Python packages are not installed (where expected). +"Failed to import" errors when running the `make px4_sitl gz_x500` command indicates that some Python packages are not installed (where expected). ```sh Failed to import jinja2: No module named 'jinja2' @@ -282,12 +258,12 @@ You may need to install it using: pip3 install --user jinja2 ``` -Якщо ці залежності вже встановлені, це може бути тому, що на комп'ютері є декілька версій Python (наприклад Python 2.7.16, Python 3.8.3) і модуль не існує в версії, яка використовується в інструментарії збірки. +If you have already installed these dependencies this may be because there is more than one Python version on the computer (e.g. Python 2.7.16 and Python 3.8.3), and the module is not present in the version used by the build toolchain. -Ви зможете виправити це явним чином встановивши залежності як показано: +You should be able to fix this by installing the dependencies from the repository's requirements file: ```sh -pip3 install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging +pip3 install --user -r Tools/setup/requirements.txt ``` ## Цілі збірки PX4 diff --git a/docs/uk/dev_setup/config_initial.md b/docs/uk/dev_setup/config_initial.md index 357d7db451..ecbe4e74ab 100644 --- a/docs/uk/dev_setup/config_initial.md +++ b/docs/uk/dev_setup/config_initial.md @@ -23,7 +23,7 @@ A Taranis RC and a mid-range Android tablet make a very inexpensive field kit. - Lenovo Thinkpad with i5-core running Windows 11 - MacBook Pro (early 2015 and later) with macOS 10.15 or later - - Lenovo Thinkpad i5 with Ubuntu Linux 20.04 or later + - Lenovo Thinkpad i5 with Ubuntu Linux 22.04 or later - **Ground control station** (computer or tablet): - iPad (may require Wifi telemetry adapter) diff --git a/docs/uk/dev_setup/dev_env.md b/docs/uk/dev_setup/dev_env.md index 6a23af23fa..d351b169d8 100644 --- a/docs/uk/dev_setup/dev_env.md +++ b/docs/uk/dev_setup/dev_env.md @@ -2,7 +2,7 @@ The _supported platforms_ for PX4 development are: -- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended +- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) - [Windows (10/11)](../dev_setup/dev_env_windows_wsl.md) — via WSL2 - [macOS](../dev_setup/dev_env_mac.md) @@ -15,9 +15,9 @@ The _supported platforms_ for PX4 development are: | **NuttX based hardware:** [Pixhawk Series](../flight_controller/pixhawk_series.md), [Crazyflie](../complete_vehicles_mc/crazyflie2.md) | ✓ | ✓ | ✓ | | **Linux-based hardware:** [Raspberry Pi 2/3](../flight_controller/raspberry_pi_navio2.md) | ✓ | | | | **Simulation:** [Gazebo SITL](../sim_gazebo_gz/index.md) | ✓ | ✓ | ✓ | -| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | ✓ | ✓ | ✓ | -| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | ✓ | | ✓ | | **Simulation:** ROS 2 with Gazebo | ✓ | | ✓ | +| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | | ✓ | ✓ | +| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | | | ✓ | Experienced Docker users can also build with the containers used by our continuous integration system: [Docker Containers](../test_and_ci/docker.md) diff --git a/docs/uk/dev_setup/dev_env_linux_centos.md b/docs/uk/dev_setup/dev_env_linux_centos.md index 862a23991f..9d33cad68f 100644 --- a/docs/uk/dev_setup/dev_env_linux_centos.md +++ b/docs/uk/dev_setup/dev_env_linux_centos.md @@ -39,8 +39,9 @@ You may want to also install `python-pip` and `screen`. Виконайте скрипт нижче для встановлення GCC 7-2017-q4: :::warning -This version of GCC is out of date. -At time of writing the current version on Ubuntu is `9-2020-q2-update` (see [focal nuttx docker file](https://github.com/PX4/PX4-containers/blob/master/docker/Dockerfile_nuttx-focal#L28)) +This version of GCC is very outdated. +PX4 now uses the `gcc-arm-none-eabi` package from the current Ubuntu LTS (GCC 13.2.1 on Ubuntu 24.04). +This CentOS guide is community-maintained and may not produce working builds. ::: ```sh diff --git a/docs/uk/dev_setup/dev_env_linux_ubuntu.md b/docs/uk/dev_setup/dev_env_linux_ubuntu.md index efe9dcce63..534a3c0c1c 100644 --- a/docs/uk/dev_setup/dev_env_linux_ubuntu.md +++ b/docs/uk/dev_setup/dev_env_linux_ubuntu.md @@ -4,21 +4,14 @@ The following instructions use a bash script to set up the PX4 development envir The environment includes: -- [Gazebo Simulator](../sim_gazebo_gz/index.md) ("Harmonic") -- [Build toolchain for Pixhawk (and other NuttX-based hardware)](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards). - -On Ubuntu 22.04: - -- [Gazebo Classic Simulator](../sim_gazebo_classic/index.md) can be used instead of Gazebo. - Gazebo is nearing feature-parity with Gazebo-Classic on PX4, and will soon replace it for all use cases. +- [Gazebo Simulator](../sim_gazebo_gz/index.md) (Gazebo Harmonic) +- [Build toolchain for Pixhawk (and other NuttX-based hardware)](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards) using the `gcc-arm-none-eabi` compiler from the Ubuntu package manager. The build toolchain for other flight controllers, simulators, and working with ROS are discussed in the [Other Targets](#other-targets) section below. -:::details -Can I use an older version of Ubuntu? -PX4 supports the current and last Ubuntu LTS release where possible. -Older releases are not supported (so you can't raise defects against them), but may still work. -For example, Gazebo Classic setup is included in our standard build instructions for macOS, Ubuntu 18.04 and 20.04, and Windows on WSL2 for the same hosts. +:::info +PX4 targets the **current Ubuntu LTS** (24.04) for CI and release builds, with the **previous LTS** (22.04) also supported. +Older Ubuntu versions are not supported and may not work. ::: ## Симуляція та NuttX (Pixhawk) @@ -52,9 +45,7 @@ The script is intended to be run on _clean_ Ubuntu LTS installations, and may no - При появі підказки по ходу виконання скрипту підтвердить вибір. - You can use the `--no-nuttx` and `--no-sim-tools` options to omit the NuttX and/or simulation tools. -3. If you need Gazebo Classic (Ubuntu 22.04 only) then you can manually remove Gazebo and install it by following the instructions in [Gazebo Classic > Installation](../sim_gazebo_classic/index.md#installation). - -4. Перезавантажте комп'ютер при завершенні. +3. Перезавантажте комп'ютер при завершенні. :::details Additional notes @@ -63,10 +54,11 @@ These notes are provided "for information only": - This setup is supported by the PX4 Dev Team. Інструкції також можуть працювати на інших системах заснованих на Debian Linux. -- You can verify the NuttX installation by confirming the `gcc` version as shown: +- You can verify the NuttX installation by confirming `gcc` is available. + The version depends on your Ubuntu release (e.g. GCC 13.2.1 on Ubuntu 24.04): ```sh - $arm-none-eabi-gcc --version + $ arm-none-eabi-gcc --version arm-none-eabi-gcc (15:13.2.rel1-2) 13.2.1 20231009 Copyright (C) 2023 Free Software Foundation, Inc. diff --git a/docs/uk/dev_setup/dev_env_windows_wsl.md b/docs/uk/dev_setup/dev_env_windows_wsl.md index 7d475f32f0..f5f6d8e2e0 100644 --- a/docs/uk/dev_setup/dev_env_windows_wsl.md +++ b/docs/uk/dev_setup/dev_env_windows_wsl.md @@ -61,20 +61,20 @@ The approach is similar to installing PX4 in your _own_ virtual machine, as desc wsl --install ``` - - Ubuntu 20.04 ([Gazebo-Classic Simulation](../sim_gazebo_classic/index.md)) - - ```sh - wsl --install -d Ubuntu-20.04 - ``` - - Ubuntu 22.04 ([Gazebo Simulation](../sim_gazebo_gz/index.md)) ```sh wsl --install -d Ubuntu-22.04 ``` + - Ubuntu 24.04 ([Gazebo Simulation](../sim_gazebo_gz/index.md)) + + ```sh + wsl --install -d Ubuntu-24.04 + ``` + ::: info - You can also install[Ubuntu 20.04](https://www.microsoft.com/store/productId/9MTTCL66CPXJ) and [Ubuntu 22.04](https://www.microsoft.com/store/productId/9PN20MSR04DW) from the store, which allows you to delete the application using the normal Windows Add/Remove settings: + You can also [Ubuntu 24.04](https://www.microsoft.com/store/productId/9nz3klhxdjp5) or [Ubuntu 22.04](https://www.microsoft.com/store/productId/9PN20MSR04DW) from Microsoft Store, which allows you to delete the application using the normal Windows Add/Remove settings. ::: @@ -110,7 +110,7 @@ If you're using [Windows Terminal](https://learn.microsoft.com/en-us/windows/ter ``` ```sh - wsl -d Ubuntu-20.04 + wsl -d Ubuntu-24.04 ``` If you only have one version of Ubuntu, you can just use `wsl`. diff --git a/docs/uk/dev_setup/vscode.md b/docs/uk/dev_setup/vscode.md index 99b6ba7618..21327a5912 100644 --- a/docs/uk/dev_setup/vscode.md +++ b/docs/uk/dev_setup/vscode.md @@ -61,7 +61,6 @@ You must already have installed the command line [PX4 developer environment](../ Для збірки: 1. Оберіть свою ціль збірки ("cmake build config"): - - The current _cmake build target_ is shown on the blue _config_ bar at the bottom (if this is already your desired target, skip to next step). ![Select Cmake build target](../../assets/toolchain/vscode/cmake_build_config.jpg) @@ -133,10 +132,10 @@ In order for the code completion to work (and other IntelliSense magic) you need Цей розділ включає вказівки для помилок з налаштування та збірки. -### Ubuntu 18.04: "Visual Studio Code не може спостерігати за змінами в коді у великому робочому середовищі" +### "Visual Studio Code is unable to watch for file changes in this large workspace" Ця помилка з'являється при старті. -On some systems, there is an upper-limit of 8192 file handles imposed on applications, which means that VSCode might not be able to detect file modifications in `/PX4-Autopilot`. +On some systems, there is an upper-limit on file handles imposed on applications, which means that VSCode might not be able to detect file modifications in `/PX4-Autopilot`. Ви можете збільшити цей ліміт, щоб уникнути помилки, коштом споживання пам'яті. Follow the [instructions here](https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc). diff --git a/docs/uk/dronecan/holybro_h_rtk_zed_f9p_gps.md b/docs/uk/dronecan/holybro_h_rtk_zed_f9p_gps.md index c164a5607a..168238617a 100644 --- a/docs/uk/dronecan/holybro_h_rtk_zed_f9p_gps.md +++ b/docs/uk/dronecan/holybro_h_rtk_zed_f9p_gps.md @@ -100,7 +100,6 @@ In order to use dual ZED-F9P GPS heading in PX4, follow these steps: 3. Components should be visible on the left panel. Click on the first `_Component_` that maps to the ZED-F9P DroneCAN node (below shown as _Component 124_). 4. Click on the _GPS_ subsection and configure the parameters listed below: - - `GPS_TYPE`: Either set to `17` for moving baseline _base_, or set to `18` to be the moving baseline _rover_. One F9P MUST be _rover_, and the other MUST be _base_. - `GPS_AUTO_CONFIG`: set to 1 for both the rover and base diff --git a/docs/uk/esc/ark_4in1_esc.md b/docs/uk/esc/ark_4in1_esc.md index bde32573bf..859c121dd5 100644 --- a/docs/uk/esc/ark_4in1_esc.md +++ b/docs/uk/esc/ark_4in1_esc.md @@ -39,12 +39,10 @@ The ESC comes in variants without connectors that you can solder in place, and a - 10 Pin JST-SH Debug - Motor & Battery Connectors (with-connector version) - - MR30 Connector Limit Per Motor: 30A Continuous, 40A Burst - Four MR30 Motor Connectors - Dimensions (with connectors) - - Size: 77.00mm x 42.00mm x 9.43mm - Mounting Pattern: 30.5mm - Weight: 24g diff --git a/docs/uk/flight_controller/airlink.md b/docs/uk/flight_controller/airlink.md index 11f87901bf..a971101ed2 100644 --- a/docs/uk/flight_controller/airlink.md +++ b/docs/uk/flight_controller/airlink.md @@ -26,7 +26,6 @@ AIRLink має два комп'ютери та інтегрований LTE-мо ## Характеристики - **Sensors** - - 3x акселерометри, 3x гіроскопи, 3x магнітометри, 3x датчики тиску - ГНСС, далекоміри, лідари, оптичний потік, камери - 3x-кратне резервування IMU @@ -34,7 +33,6 @@ AIRLink має два комп'ютери та інтегрований LTE-мо - Стабілізація температури - **Flight Controller** - - STM32F7, ARM Cortex M7 з FPU, 216 МГц, 2 МБ Flash, 512 кБ оперативної пам'яті - STM32F1, співпроцесор вводу/виводу (IO) - Ethernet, 10/100 Мбіт/с @@ -51,7 +49,6 @@ AIRLink має два комп'ютери та інтегрований LTE-мо - Запобіжний вимикач / LED опція - **AI Mission Computer** - - 6-ядерний процесор: двоядерний Cortex-A72 + чотирьохядерний Cortex-A53 - Графічний процесор Mali-T864, OpenGL ES1.1/2.0/3.0/3.1 - VPU з декодуванням 4K VP8/9, 4K 10bits H265/H264 60fps @@ -65,7 +62,6 @@ AIRLink має два комп'ютери та інтегрований LTE-мо - 2х Video: 4-смугова MIPI CSI (FPV-камера) та 4-смугова MIPI CSI з входом HMDI (камера корисного навантаження) - **LTE/5G Connectivity Module** - - Пропускна здатність до 600 Мбіт/с - 5G sub-6 і mmWave, SA і NSA операції - 4G Cat 20, до 7xCA, 256-QAM DL/UL, 2xCA UL @@ -143,7 +139,6 @@ AIRLink Enterprise ідеально підходить для швидкого ![Left side](../../assets/flight_controller/airlink/airlink-interfaces-left.jpg) - **Left side interfaces:** - - Power input with voltage & current monitoring - Місійний комп'ютер зі ШІ з картою пам'яті micro SD - Карта micro SD для польотного контролера @@ -171,13 +166,13 @@ AIRLink Enterprise ідеально підходить для швидкого - **RC Connector - JST GH SM06B-GHS-TB** - | Номер виводу | Назва виводу | Напрямок | Напруга | Функція | | | | - | ------------ | ----------------------------- | -------- | --------------------- | ----------------- | - | --- | ------ | - | 1 | 5V | OUT | +5V | Вихід 5В | | | | - | 2 | PPM_IN | IN | +3.3V | PPM вхід | | | | - | 3 | RSSI_IN | IN | +3.3V | RSSI вхід | | | | - | 4 | FAN_OUT | OUT | +5V | Вихід вентилятора | | | | - | 5 | SBUS_OUT | OUT | +3.3V | SBUS output | 6 | GND | Ground | + \| Pin number | Pin name | Direction | Voltage | Function | + \| ---------- | -------- | --------- | ------- | ----------- | --- | --- | ------ | + \| 1 | 5V | OUT | +5V | 5V output | + \| 2 | PPM_IN | IN | +3.3V | PPM input | + \| 3 | RSSI_IN | IN | +3.3V | RSSI input | + \| 4 | FAN_OUT | OUT | +5V | Fan output | + \| 5 | SBUS_OUT | OUT | +3.3V | SBUS output | 6 | GND | Ground | * **FMU SD card - microSD** @@ -186,7 +181,6 @@ AIRLink Enterprise ідеально підходить для швидкого ![Right side](../../assets/flight_controller/airlink/airlink-interfaces-right.jpg) - **Right side interfaces:** - - Ethernet-порт з виходом живлення - Телеметричний порт - Другий GPS-порт @@ -252,7 +246,6 @@ AIRLink Enterprise ідеально підходить для швидкого ![Front side](../../assets/flight_controller/airlink/airlink-interfaces-front.jpg) - **Front side interfaces:** - - Основний порт GNSS і компаса - Основний телеметричний порт - Вхід для камери CSI @@ -310,7 +303,6 @@ AIRLink Enterprise ідеально підходить для швидкого ![Back side](../../assets/flight_controller/airlink/airlink-interfaces-back.jpg) - **Rear side interfaces:** - - Вхід SBUS - 16 вихідних каналів ШІМ - 2 гнізда для антен LTE (MIMO) diff --git a/docs/uk/flight_controller/autopilot_manufacturer_supported.md b/docs/uk/flight_controller/autopilot_manufacturer_supported.md index 9401665369..39713343d9 100644 --- a/docs/uk/flight_controller/autopilot_manufacturer_supported.md +++ b/docs/uk/flight_controller/autopilot_manufacturer_supported.md @@ -25,6 +25,7 @@ This category includes boards that are not fully compliant with the pixhawk stan - [CubePilot Cube Orange+](../flight_controller/cubepilot_cube_orangeplus.md) - [CubePilot Cube Orange](../flight_controller/cubepilot_cube_orange.md) - [CubePilot Cube Yellow](../flight_controller/cubepilot_cube_yellow.md) +- [Gear Up AirBrainH743](../flight_controller/gearup_airbrainh743.md) - [Holybro Kakute H7v2](../flight_controller/kakuteh7v2.md) - [Holybro Kakute H7mini](../flight_controller/kakuteh7mini.md) - [Holybro Kakute H7](../flight_controller/kakuteh7.md) diff --git a/docs/uk/flight_controller/gearup_airbrainh743.md b/docs/uk/flight_controller/gearup_airbrainh743.md new file mode 100644 index 0000000000..deb6f6feb6 --- /dev/null +++ b/docs/uk/flight_controller/gearup_airbrainh743.md @@ -0,0 +1,96 @@ +# Gear Up AirBrainH743 + +:::warning +PX4 не розробляє цей (або будь-який інший) автопілот. +Contact the [manufacturer](https://takeyourgear.com/) for hardware support. +::: + +:::info +This flight controller is [manufacturer supported](../flight_controller/autopilot_manufacturer_supported.md). +::: + +Purchase from [takeyourgear.com](https://takeyourgear.com/pages/products/airbrain). + +For more information and pinout, check the [GitHub documentation](https://github.com/GearUp-Company/AirBrainH743). + +## Основні характеристики + +- MCU: Процесор STM32H743 32-біт, який працює на частоті 480 МГц +- IMU: ICM42688P +- Barometer: DPS310 +- Magnetometer: LIS2MDL (internal) +- 128MB NAND Flash for logging (W25N) +- 7x UARTs +- I2C, SPI +- 9x PWM Outputs (8 Motor outputs, 1 LED strip) +- Battery input voltage: 3S-10S +- Battery voltage/current monitoring +- 5V@2A and 10V@2.5A BEC outputs +- USB Type-C (IP68) +- EMC and ESD protection + +## Конектори та контакти + +:::warning +The pin order is different from the Pixhawk standard (compatible to the Betaflight standard). +::: + +### UARTs + +Current UART configuration: + +| UART | Пристрій | Функція | +| ------ | ---------- | --------------------------------------- | +| USART1 | /dev/ttyS0 | Console/Debug | +| USART2 | /dev/ttyS1 | RC-вхід | +| USART3 | /dev/ttyS2 | TEL4 (DJI/MSP) | +| UART4 | /dev/ttyS3 | TEL1 | +| UART5 | /dev/ttyS4 | TEL2 | +| UART7 | /dev/ttyS5 | TEL3 (ESC Telemetry) | +| UART8 | /dev/ttyS6 | GPS1 | + +### Motor/Servo Outputs + +| З’єднання | Pin | Функція | +| --------- | --- | ---------------------------- | +| ESC | M1 | Двигун 1 | +| ESC | M2 | Motor 2 | +| ESC | M3 | Motor 3 | +| ESC | M4 | Motor 4 | +| PWM | M5 | Motor 5 | +| PWM | M6 | Motor 6 | +| PWM | M7 | Motor 7 | +| PWM | M8 | Motor 8 | +| AUX | M9 | LED/PWM/etc. | + + + +## Оновлення завантажувача PX4 + +Before PX4 firmware can be installed, the _PX4 bootloader_ must be flashed. +Download the [gearup_airbrainh743_bootloader.bin](https://github.com/PX4/PX4-Autopilot/blob/main/boards/gearup/airbrainh743/extras/gearup_airbrainh743_bootloader.bin) bootloader binary and read [this page](../advanced_config/bootloader_update_from_betaflight.md) for flashing instructions. + +## Збірка прошивки + +To [build PX4](../dev_setup/building_px4.md) for this target: + +``` +make gearup_airbrainh743_default +``` + +## Встановлення прошивки PX4 + +Firmware can be installed in any of the normal ways: + +- Збудуйте та завантажте джерело: + + ``` + make gearup_airbrainh743_default upload + ``` + +- [Load the firmware](../config/firmware.md) using _QGroundControl_. + Ви можете використовувати або готове вбудоване програмне забезпечення, або власне користувацьке програмне забезпечення. + +### Системна консоль + +UART1 (ttyS0) is configured for use as the [System Console](../debug/system_console.md). diff --git a/docs/uk/flight_modes/offboard.md b/docs/uk/flight_modes/offboard.md index e2c100783d..066a1a846f 100644 --- a/docs/uk/flight_modes/offboard.md +++ b/docs/uk/flight_modes/offboard.md @@ -231,7 +231,7 @@ Ackermann rovers do not support the yaw setpoint. - Position setpoint **and** velocity setpoint (the velocity setpoint is used as feedforward; it is added to the output of the position controller and the result is used as the input to the velocity controller). - - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL). + - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT). - [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) - Підтримуються наступні вхідні комбінації: @@ -277,7 +277,7 @@ Ackermann rovers do not support the yaw setpoint. - 12288: Задання Loiter (політ по колу, центрованому на заданій точці). - 16384: Задання бездіяльності (нульовий газ, нульовий крен/тангаж). - - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL). + - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT). - [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) - Підтримуються наступні вхідні комбінації: @@ -286,7 +286,29 @@ Ackermann rovers do not support the yaw setpoint. ### Ровер -Rover does not support a MAVLink offboard API (ROS2 is supported). +Rover supports offboard control using the generic MAVLink position/velocity setpoint messages listed below. +These are converted into a [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) internally, and then into rover setpoints by the rover offboard modes. +For rover-specific control setpoints and better behaviour we recommend using the [Rover Setpoints](#rover-setpoints) via ROS 2. + +:::info +Rover MAVLink setpoints are gated by the MAVLink parameter [MAV_FWDEXTSP](../advanced_config/parameter_reference.md#MAV_FWDEXTSP) (Forward external setpoint messages). +::: + +- [SET_POSITION_TARGET_LOCAL_NED](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_LOCAL_NED) + - Position setpoint: `x`, `y` in [MAV_FRAME_LOCAL_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_LOCAL_NED) (`z` is ignored by rover modules). + - Velocity setpoint: `vx`, `vy` in [MAV_FRAME_LOCAL_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_LOCAL_NED) or [MAV_FRAME_BODY_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_BODY_NED). + - `yaw`/`yaw_rate`: + - Ackermann/Differential: ignored (in velocity control the yaw setpoint is derived from the velocity direction). + - Mecanum: can be controlled independently (decoupled) using `yaw`/`yaw_rate`. + - Acceleration setpoints (`afx`, `afy`, `afz`) are ignored by rover modules. + +- [SET_POSITION_TARGET_GLOBAL_INT](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_GLOBAL_INT) + - Position setpoint: `lat_int`, `lon_int`, `alt` (converted into local NED internally; rover modules only use the horizontal components). + - Velocity setpoint: `vx`, `vy`, `vz` (rover modules use only the horizontal components). + - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT). + +- [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) + - Not supported for rover offboard control. ## Параметри для відключення diff --git a/docs/uk/flight_modes_fw/mission.md b/docs/uk/flight_modes_fw/mission.md index 57ce4be8f6..a45e78c840 100644 --- a/docs/uk/flight_modes_fw/mission.md +++ b/docs/uk/flight_modes_fw/mission.md @@ -28,7 +28,6 @@ _Режим місії_ змушує транспортний засіб вик На високому рівні всі типи транспортних засобів ведуть себе однаково, коли ввімкнено режим МІСІЯ: 1. Якщо місія не збережена, або якщо PX4 завершив виконання всіх команд місії, або якщо [місія не є можливою](#mission-feasibility-checks): - - Якщо літає транспортний засіб, він буде марнувати час. - Якщо посадять транспортний засіб, він буде "чекати". diff --git a/docs/uk/flight_modes_mc/follow_me.md b/docs/uk/flight_modes_mc/follow_me.md index fae197203d..3eef36e4f3 100644 --- a/docs/uk/flight_modes_mc/follow_me.md +++ b/docs/uk/flight_modes_mc/follow_me.md @@ -115,7 +115,6 @@ The altitude control mode determine whether the vehicle altitude is relative to Відносна відстань до дрона до цілі зміниться, коли ви підніметесь та опуститесь (використовуйте обережно в гірській місцевості). - `2D + Terrain` makes the drone follow at a fixed height relative to the terrain underneath it, using information from a distance sensor. - - If the vehicle does not have a distance sensor following will be identical to `2D tracking`. - Датчики відстані не завжди точні, і транспортні засоби можуть бути "скачущими" під час польоту в цьому режимі. - Зверніть увагу, що висота вимірюється відносно землі під транспортним засобом, а не цільового об'єкта. diff --git a/docs/uk/flight_modes_mc/mission.md b/docs/uk/flight_modes_mc/mission.md index 1743800936..d603c354df 100644 --- a/docs/uk/flight_modes_mc/mission.md +++ b/docs/uk/flight_modes_mc/mission.md @@ -30,7 +30,6 @@ They may also be created by a MAVLink API such as [MAVSDK](../robotics/mavsdk.md На високому рівні всі типи транспортних засобів ведуть себе однаково, коли ввімкнено режим МІСІЯ: 1. Якщо місія не збережена, або якщо PX4 завершив виконання всіх команд місії, або якщо [місія не є можливою](#mission-feasibility-checks): - - Якщо літає транспортний засіб, він буде утримувати. - Якщо посадять транспортний засіб, він буде "чекати". diff --git a/docs/uk/flight_modes_vtol/return.md b/docs/uk/flight_modes_vtol/return.md index 956e5eff47..96ee9c4d43 100644 --- a/docs/uk/flight_modes_vtol/return.md +++ b/docs/uk/flight_modes_vtol/return.md @@ -49,7 +49,6 @@ VTOL підтримує [інші типи повернення PX4](../flight_m Місійний маршрут посадки для літального апарату типу VTOL складається з [MAV_CMD_DO_LAND_START](https://mavlink.io/en/messages/common.html#MAV_CMD_DO_LAND_START), однієї або кількох маршрутних точок розташування та [MAV_CMD_NAV_VTOL_LAND](https://mavlink.io/en/messages/common.html#MAV_CMD_NAV_VTOL_LAND). - Якщо призначенням є точка збору або домашня локація, апарат: - - Переводиться в режим ожидання/спірального спуску на висоту [RTL_DESCEND_ALT](#RTL_DESCEND_ALT). - Кружляє протягом короткого часу, визначеного [RTL_LAND_DELAY](#RTL_LAND_DELAY). - Повертається по напрямку до призначення (центр кругового руху). diff --git a/docs/uk/flight_stack/controller_diagrams.md b/docs/uk/flight_stack/controller_diagrams.md index 1ba9439e2a..c124360410 100644 --- a/docs/uk/flight_stack/controller_diagrams.md +++ b/docs/uk/flight_stack/controller_diagrams.md @@ -30,7 +30,7 @@ The diagrams use the standard [PX4 notation](../contribute/notation.md) (and eac ::: info The IMU pipeline is: - gyro data > apply calibration parameters > remove estimated bias > notch filter (`IMU_GYRO_NF0_BW` and `IMU_GYRO_NF0_FRQ`) > low-pass filter (`IMU_GYRO_CUTOFF`) > vehicle_angular_velocity (_filtered angular rate used by the P and I controllers_) > derivative -> low-pass filter (`IMU_DGYRO_CUTOFF`) > vehicle_angular_acceleration (_filtered angular acceleration used by the D controller_) + gyro data > apply calibration parameters > remove estimated bias > notch filter (`IMU_GYRO_NF0_BW` and `IMU_GYRO_NF0_FRQ`) > low-pass filter (`IMU_GYRO_CUTOFF`) > vehicle_angular_velocity (\_filtered angular rate used by the P and I controllers_) > derivative -> low-pass filter (`IMU_DGYRO_CUTOFF`) > vehicle_angular_acceleration (\_filtered angular acceleration used by the D controller_) ![IMU pipeline](../../assets/diagrams/px4_imu_pipeline.png) @@ -177,7 +177,7 @@ The angular position of the control effectors (ailerons, elevators, rudders, ... Крім того, оскільки керуючі поверхні ефективніші при високій швидкості і менш ефективні при низькій швидкості, контролер, налаштований на крейсерську швидкість, масштабується за допомогою вимірів швидкості повітря (якщо використовується такий датчик). :::info -If no airspeed sensor is used then gain scheduling for the FW attitude controller is disabled (it's open loop); no correction is/can be made in TECS using airspeed feedback. +If no airspeed sensor is used then gain scheduling for the FW attitude controller is disabled (it's open loop); no correction is/can be made in TECS using airspeed feedback. ::: The feedforward gain is used to compensate for aerodynamic damping. @@ -187,7 +187,7 @@ The feedforward gain is used to compensate for aerodynamic damping. ### Поворотна координація Контролери крену та тангажу мають однакову структуру, і довжинна та поперечна динаміка вважаються достатньо роз'єднаними, щоб працювати незалежно один від одного. -Контролер курсу, однак, генерує встановлення швидкості курсу, використовуючи обмеження координації повороту для мінімізації бокового прискорення, що виникає, коли літак слідкує. Алгоритм узгодження повороту базується виключно на узгодженому розрахунку геометрії повороту. +Контролер курсу, однак, генерує встановлення швидкості курсу, використовуючи обмеження координації повороту для мінімізації бокового прискорення, що виникає, коли літак слідкує. Алгоритм узгодження повороту базується виключно на узгодженому розрахунку геометрії повороту. $$\dot{\Psi}_{sp} = \frac{g}{V_T} \tan{\phi_{sp}} \cos{\theta_{sp}}$$ diff --git a/docs/uk/flying/package_delivery_mission.md b/docs/uk/flying/package_delivery_mission.md index a5d2e0020f..66b1a04238 100644 --- a/docs/uk/flying/package_delivery_mission.md +++ b/docs/uk/flying/package_delivery_mission.md @@ -33,7 +33,6 @@ Note that if landed, the next mission item after deployment should be another `W 1. Create a normal mission with a `Takeoff` mission item, and additional waypoints for your required flight path. 2. Додайте маршрутну точку на карті, де ви хочете випустити посилку. - - Щоб скинути посилку під час польоту, установіть відповідну висоту для маршрутної точки (і переконайтеся, що маршрутна точка знаходиться в безпечному місці для скидання посилки). - If you'd like to land the vehicle to make the delivery you will need to change the `Waypoint` to a `Land` mission item. diff --git a/docs/uk/frames_rover/index.md b/docs/uk/frames_rover/index.md index f2d7e9e4b7..3b41101abc 100644 --- a/docs/uk/frames_rover/index.md +++ b/docs/uk/frames_rover/index.md @@ -7,6 +7,12 @@ Support for rover is [experimental](../airframes/index.md#experimental-vehicles) Maintainer volunteers, [contribution](../contribute/index.md) of new features, new frame configurations, or other improvements would all be very welcome! ::: +:::tip +Rover is not in the default PX4 firmware downloaded from QGC. +Unlike for other vehicle types you will need to install it as custom firmware. +For more information see [Flashing the Rover Build](../config_rover/index.md#flashing-the-rover-build). +::: + ![Rovers](../../assets/airframes/rover/rovers.png) PX4 provides support for the three most common types of rovers: diff --git a/docs/uk/getting_started/led_meanings.md b/docs/uk/getting_started/led_meanings.md index 8efd036093..372219fe86 100644 --- a/docs/uk/getting_started/led_meanings.md +++ b/docs/uk/getting_started/led_meanings.md @@ -20,7 +20,7 @@ It is possible to have a GPS lock (Green LED) and still not be able to arm the v ::: :::tip -In the event of an error (blinking red), or if the vehicle can't achieve GPS lock (change from blue to green), check for more detailed status information in _QGroundControl_ including calibration status, and errors messages reported by the [Preflight Checks (Internal)](../flying/pre_flight_checks.md). +In the event of an error (blinking red), or if the vehicle can't achieve GPS lock (change from blue to green), check for more detailed status information in _QGroundControl_ including calibration status, and errors messages reported by the [Preflight Checks (Internal)](../flying/pre_flight_checks.md). Також перевірте, чи правильно підключений GPS-модуль, чи правильно Pixhawk зчитує ваш GPS, і чи правильно GPS передає дані про місцеперебування. ::: @@ -47,7 +47,8 @@ In the event of an error (blinking red), or if the vehicle can't achieve GPS loc Під час аварійного режиму апарат намагатиметься повернутися до місця зльоту або може просто знизитися там, де він зараз перебуває. - **[Solid Amber] Low Battery Warning:** Indicates your vehicle's battery is running dangerously low. - Після певного моменту пристрій перейде у failsafe режим. Однак цей режим повинен сигналізувати про те, що настав час завершити політ. + Після певного моменту пристрій перейде у failsafe режим. However, this mode should signal caution that it's time to end + this flight. - **[Blinking Red] Error / Setup Required:** Indicates that your autopilot needs to be configured or calibrated before flying. Під'єднайте автопілот до наземної станції керування, щоб перевірити, в чому проблема. @@ -77,11 +78,11 @@ The LED labels shown above are commonly used, but might differ on some boards. Більш детальна інформація про те, як інтерпретувати світлодіодні індикатори, наведені нижче (де "х" означає "будь-який стан") -| Червоний/помаранчевий | Синій | Зелений | Значення | -| --------------------- | ----- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| 10 Гц | x | x | Overload CPU load > 80%, or RAM usage > 98% | -| ВИМК | x | x | Overload CPU load <= 80%, or RAM usage <= 98% | -| NA | ВИМК | 4 Гц | actuator_armed->armed && failsafe | -| NA | УВІМК | 4 Гц | actuator_armed->armed && !failsafe | -| NA | ВИМК | 1 Гц | !actuator_armed-> armed && actuator_armed->ready_to_arm | -| NA | ВИМК | 10 Гц | !actuator_armed->armed && !actuator_armed->ready_to_arm | +| Червоний/помаранчевий | Синій | Зелений | Значення | +| --------------------- | ----- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 10 Гц | x | x | Overload CPU load > 80%, or RAM usage > 98% | +| ВИМК | x | x | Overload CPU load <= 80%, or RAM usage <= 98% | +| NA | ВИМК | 4 Гц | actuator_armed->armed && failsafe | +| NA | УВІМК | 4 Гц | actuator_armed->armed && !failsafe | +| NA | ВИМК | 1 Гц | !actuator_armed-> armed && actuator_armed->ready_to_arm | +| NA | ВИМК | 10 Гц | !actuator_armed->armed && !actuator_armed->ready_to_arm | diff --git a/docs/uk/getting_started/tunes.md b/docs/uk/getting_started/tunes.md index 87318465d1..febad4e7b7 100644 --- a/docs/uk/getting_started/tunes.md +++ b/docs/uk/getting_started/tunes.md @@ -13,7 +13,7 @@ You can search for tune use using the string `TUNE_ID_name`(e.g. \`TUNE_ID_PARAC Ці мелодії відтворюються під час завантаження. - + #### Сигнал запуску diff --git a/docs/uk/gps_compass/rtk_gps.md b/docs/uk/gps_compass/rtk_gps.md index 4366911cb5..3cd95c567b 100644 --- a/docs/uk/gps_compass/rtk_gps.md +++ b/docs/uk/gps_compass/rtk_gps.md @@ -152,7 +152,6 @@ This should be set by default, but if not, follow the [MAVLink2 configuration in ![survey-in](../../assets/qgc/setup/rtk/qgc_rtk_survey-in.png) 4. Після завершення опитування: - - The RTK GPS icon changes to white and _QGroundControl_ starts to stream position data to the vehicle: ![RTK streaming](../../assets/qgc/setup/rtk/qgc_rtk_streaming.png) diff --git a/docs/uk/index.md b/docs/uk/index.md index b0ec59c754..729767f521 100644 --- a/docs/uk/index.md +++ b/docs/uk/index.md @@ -3,19 +3,11 @@ import { useData } from 'vitepress' const { site } = useData(); -
- # Посібник користувача автопілота PX4 [![Releases](https://img.shields.io/badge/release-main-blue.svg)](https://github.com/PX4/PX4-Autopilot/releases) [![Discuss](https://img.shields.io/badge/discuss-px4-ff69b4.svg)](https://discuss.px4.io//) [![Discord](https://discordapp.com/api/guilds/1022170275984457759/widget.png?style=shield)](https://discord.gg/dronecode) -PX4 is the _Professional Autopilot_. -Розроблений розробниками світового класу з дрон індустрії та наукових закладів і активно підтримується спільнотою у світі. Він дозволяє працювати з різними типами безпілотних транспортних засобів від гоночних, вантажних дронів до сухопутних автомобілів та надводних човнів. - -:::tip -This guide contains everything you need to assemble, configure, and safely fly a PX4-based vehicle. -Хочете зробити внесок? Check out the [Development](development/development.md) section. -::: +PX4 is an open-source autopilot for drones and autonomous vehicles. It runs on multirotors, fixed-wing, VTOL, helicopters, rovers, and more. This guide covers everything from assembly and configuration to flight operations and development.
@@ -29,83 +21,43 @@ Documented changes since the stable release are captured in the evolving [releas
-## Як почати? +## For Developers -[Basic Concepts](getting_started/px4_basic_concepts.md) should be read by all users! -It provides an overview of PX4, including features provided by the flight stack (flight modes and safety features) and the supported hardware (flight controller, vehicle types, telemetry systems, RC control systems). +:::tip +Building on PX4 or extending the platform? Start here: [Development Guide](development/development.md). Set up your [dev environment](dev_setup/config_initial.md), [build from source](dev_setup/building_px4.md), run [SITL simulation](simulation/index.md), or integrate via [ROS 2](ros2/index.md) and [MAVSDK](https://mavsdk.mavlink.io/). +::: -Залежно від того, чого ви хочете досягти, наступні поради допоможуть вам мандрувати по цьому посібнику: +## Початок роботи -### I want a vehicle that works with PX4 +Start with [Basic Concepts](getting_started/px4_basic_concepts.md) for an overview of the flight stack, flight modes, safety features, and supported hardware. -In the [Multicopter](frames_multicopter/index.md), [VTOL](frames_vtol/index.md), and [Plane (Fixed-Wing)](frames_plane/index.md) sections you'll find topics like the following (these links are for multicopter): +## Build a Vehicle -- [Complete Vehicles](complete_vehicles_mc/index.md) list "Ready to Fly" (RTF) pre-built vehicles -- [Kits](frames_multicopter/kits.md) lists drones that you have to build yourself from a set of preselected parts -- [DIY Builds](frames_multicopter/diy_builds.md) shows some examples of drones that have been built using parts that were sourced individually +Pick your frame type: [Multicopter](frames_multicopter/index.md), [Fixed-Wing](frames_plane/index.md), [VTOL](frames_vtol/index.md), [Helicopter](frames_helicopter/index.md), or [Rover](frames_rover/index.md). Each section covers complete vehicles, kits, and DIY builds. For assembly instructions see [Assembling a Multicopter](assembly/assembly_mc.md) or the equivalent for your frame. -Both kits and complete vehicles usually include everything you need except for a battery and RC System. -Kits are usually not hard to build, provide a good introduction to how drones fit together, and are relatively inexpensive. -We provide generic instructions for assembly, such as [Assembling a Multicopter](assembly/assembly_mc.md), and most kits come with specific instructions too. +## Configure and Tune -If the kits and complete drones aren't quite right for you then you can build a vehicle from scratch, but this requires more knowledge. -[Airframe Builds](airframes/index.md) lists the supported frame starting points to give you some idea of what is possible. +Once assembled, follow the configuration guide for your vehicle type (e.g. [Multicopter Configuration](config_mc/index.md)). This covers sensor calibration, flight mode setup, and tuning. -Once you have a vehicle that supports PX4 you will need to configure it and calibrate the sensors. -Each vehicle type has its own configuration section that explains the main steps, such as [Multicopter Configuration/Tuning](config_mc/index.md). +## Апаратне забезпечення(Hardware) -### I want to add a payload/camera +The [Hardware Selection & Setup](hardware/drone_parts.md) section covers flight controllers, sensors, telemetry, RC systems, and payloads. See [Payloads](payloads/index.md) for camera and delivery integrations. -The [Payloads](payloads/index.md) section describes how to add a camera and how to configure PX4 to enable you to deliver packages. +## Fly -### I am modifying a supported vehicle +Read [Operations](config/operations.md) to understand safety features and failsafe behavior before your first flight. Then see [Basic Flying (Multicopter)](flying/basic_flying_mc.md) or the equivalent for your frame type. -The [Hardware Selection & Setup](hardware/drone_parts.md) section provides both high level and product-specific information about hardware that you might use with PX4 and its configuration. -This is the first place you should look if you want to modify a drone and add new components. +## Підтримка -### I want to fly - -Before you fly you should read [Operations](config/operations.md) to understand how to set up the safety features of your vehicle and the common behaviours of all frame types. -Once you've done that you're ready to fly. - -Basic instructions for flying each vehicle type are provided in the respective sections, such as [Basic Flying (Multicopter)](flying/basic_flying_mc.md). - -### I want to run PX4 on a new Flight Controller and extend the platform - -The [Development](development/development.md) section explains how to support new airframes and types of vehicles, modify flight algorithms, add new modes, integrate new hardware, communicate with PX4 from outside the flight controller, and contribute to PX4. - -## Отримання допомоги - -The [Support](contribute/support.md) page explains how to get help from the core dev team and the wider community. - -Серед інших речей, які вона покриває: - -- [Forums where you can get help](contribute/support.md#forums-and-chat) -- [Diagnosing issues](contribute/support.md#diagnosing-problems) -- [How to report bugs](contribute/support.md#issue-bug-reporting) -- [Weekly dev call](contribute/support.md#weekly-dev-call) - -## Reporting Bugs & Issues - -If you have any problems using PX4 first post them on the [support forums](contribute/support.md#forums-and-chat) (as they may be caused by vehicle configuration). - -If directed by the development team, code issues may be raised on [Github here](https://github.com/PX4/PX4-Autopilot/issues). -Where possible provide [flight logs](getting_started/flight_reporting.md) and other information requested in the issue template. +Get help on the [discussion forums](https://discuss.px4.io/) or [Discord](https://discord.gg/dronecode). See the [Support](contribute/support.md) page for diagnosing problems, reporting bugs, and joining the [weekly dev call](contribute/dev_call.md). ## Долучитись до проєкту -Information on how to contribute to code and documentation can be found in the [Contributing](contribute/index.md) section: - -- [Code](contribute/index.md) -- [Documentation](contribute/docs.md) -- [Translation](contribute/translation.md) +See the [Contributing](contribute/index.md) section for code, [documentation](contribute/docs.md), and [translation](contribute/translation.md) guidelines. ## Переклади -There are several [translations](contribute/translation.md) of this guide. -Ви можете отримати доступ до вибору конкретного доступного переклада з меню Мови (вгорі праворуч): - -![Language Selector](../assets/vuepress/language_selector.png) +There are several [translations](contribute/translation.md) of this guide. Use the language selector in the top navigation. @@ -141,9 +93,9 @@ The calendar default timezone is Central European Time (CET). ## Управління -The PX4 flight stack is hosted under the governance of the [Dronecode Project](https://dronecode.org/). +The PX4 Autopilot project is hosted by the [Dronecode Foundation](https://www.dronecode.org/), a [Linux Foundation](https://www.linuxfoundation.org/) Collaborative Project. Dronecode holds all PX4 trademarks and serves as the project's legal guardian, ensuring vendor-neutral stewardship. No single company owns the name or controls the roadmap. The source code is licensed under the [BSD 3-Clause](https://opensource.org/license/BSD-3-Clause) license, so you are free to use, modify, and distribute it in your own projects. -Dronecode Logo Linux Foundation Logo +Dronecode Logo Linux Foundation Logo
 
diff --git a/docs/uk/middleware/dds_topics.md b/docs/uk/middleware/dds_topics.md index 02481cb7d5..174dc6c859 100644 --- a/docs/uk/middleware/dds_topics.md +++ b/docs/uk/middleware/dds_topics.md @@ -95,192 +95,200 @@ They are not build into the module, and hence are neither published or subscribe :::details See messages -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.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) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [GpioOut](../msg_docs/GpioOut.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) -- [Cpuload](../msg_docs/Cpuload.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.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) -- [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) +- [SystemPower](../msg_docs/SystemPower.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.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) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) - [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [Mission](../msg_docs/Mission.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [LedControl](../msg_docs/LedControl.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [InputRc](../msg_docs/InputRc.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [EventV0](../msg_docs/EventV0.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [Rpm](../msg_docs/Rpm.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) - [IrlockReport](../msg_docs/IrlockReport.md) +- [Ping](../msg_docs/Ping.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [Vtx](../msg_docs/Vtx.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [EscReport](../msg_docs/EscReport.md) +- [Gripper](../msg_docs/Gripper.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [Event](../msg_docs/Event.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) ::: diff --git a/docs/uk/middleware/uxrce_dds.md b/docs/uk/middleware/uxrce_dds.md index 9fe31af33d..bc384fb82d 100644 --- a/docs/uk/middleware/uxrce_dds.md +++ b/docs/uk/middleware/uxrce_dds.md @@ -335,7 +335,7 @@ The configuration can be done using the [UXRCE-DDS parameters](../advanced_confi - [UXRCE_DDS_NS_IDX](../advanced_config/parameter_reference.md#UXRCE_DDS_NS_IDX) : Index-based namespace definition. Setting this parameter to any value other than `-1` creates a namespace with the prefix `uav_` and the specified value, e.g. `uav_0`, `uav_1`, etc. See [namespace](#customizing-the-namespace) for methods to define richer or arbitrary namespaces. - - [`UXRCE_DDS_FLCTRL`](../advanced_config/parameter_reference.md#UXRCE_DDS_FLCTRL) : Serial port hardware flow control enable. + - [`UXRCE_DDS_FLCTRL`](../advanced_config/parameter_reference.md#UXRCE_DDS_FLCTRL) : Serial port hardware flow control enable. To use hardware flow control, a custom MicroXRCE Agent needs to be adopted. Please refer to [this PR](https://github.com/eProsima/Micro-XRCE-DDS-Agent/pull/407) for the required changes, cherry-pick them on top of the [agent version](#build-run-within-ros-2-workspace) you need to use and then run the agent with the additional `--flow-control` option. :::info diff --git a/docs/uk/modules/module_template.md b/docs/uk/modules/module_template.md index 93ed9e86de..4ac3e4031e 100644 --- a/docs/uk/modules/module_template.md +++ b/docs/uk/modules/module_template.md @@ -35,8 +35,8 @@ PX4-Autopilot contains a template for writing a new application (module) that ru ```cpp WorkItemExample::WorkItemExample() : - ModuleParams(nullptr), - ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::test1) + ModuleParams(nullptr), + ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::test1) { } ``` diff --git a/docs/uk/modules/modules_driver.md b/docs/uk/modules/modules_driver.md index b87be5aec8..7ac0fd1012 100644 --- a/docs/uk/modules/modules_driver.md +++ b/docs/uk/modules/modules_driver.md @@ -45,6 +45,26 @@ atxxxx [arguments...] status print status info ``` +## auterion_autostarter + +Source: [drivers/auterion_autostarter](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/auterion_autostarter) + +### Опис + +Driver for starting and auto-detecting different power monitors. + +### Usage {#auterion_autostarter_usage} + +``` +auterion_autostarter [arguments...] + Commands: + start + + stop + + status print status info +``` + ## batmon Source: [drivers/smart_battery/batmon](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/smart_battery/batmon) @@ -925,26 +945,6 @@ pca9685_pwm_out [arguments...] status print status info ``` -## pm_selector_auterion - -Source: [drivers/power_monitor/pm_selector_auterion](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/power_monitor/pm_selector_auterion) - -### Опис - -Driver for starting and auto-detecting different power monitors. - -### Usage {#pm_selector_auterion_usage} - -``` -pm_selector_auterion [arguments...] - Commands: - start - - stop - - status print status info -``` - ## pmw3901 Source: [drivers/optical_flow/pmw3901](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/optical_flow/pmw3901) @@ -1109,7 +1109,7 @@ px4io [arguments...] ## rgbled -Source: [drivers/lights/rgbled_ncp5623c](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/lights/rgbled_ncp5623c) +Source: [drivers/lights/rgbled](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/lights/rgbled) ### Usage {#rgbled_usage} @@ -1124,9 +1124,7 @@ rgbled [arguments...] [-f ] bus frequency in kHz [-q] quiet startup (no message if no device found) [-a ] I2C address - default: 57 - [-o ] RGB PWM Assignment - default: 123 + default: 85 stop @@ -1438,6 +1436,30 @@ tap_esc [arguments...] default: 4 ``` +## tmp102 + +Source: [drivers/temperature_sensor/tmp102](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/temperature_sensor/tmp102) + +### Usage {#tmp102_usage} + +``` +tmp102 [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 +``` + ## tone_alarm Source: [drivers/tone_alarm](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/tone_alarm) @@ -1627,6 +1649,76 @@ voxlpm [arguments...] status print status info ``` +## vtx + +Source: [drivers/vtx](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/vtx) + +### Опис + +This module communicates with a VTX camera via serial port. It can be used to +configure the camera settings and to control the camera's video transmission. +Supported protocols are: + +- SmartAudio v1, v2.0, v2.1 +- Tramp + +### Usage {#vtx_usage} + +``` +vtx [arguments...] + Commands: + start + -d VTX device + values: + + Sets an entry in the mapping table: + + + stop + + status print status info +``` + +## vtxtable + +Source: [drivers/vtxtable](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/vtxtable) + +### Опис + +Manages the VTX frequency, power level and RC mapping table for VTX configuration. + +### Usage {#vtxtable_usage} + +``` +vtxtable [arguments...] + Commands: + status Shows the current VTX table configuration. + + name Sets the VTX table name: + + bands Sets the number of bands: + + band Sets the band frequencies: <1-index> + + + channels Sets the number of channels: + + powerlevels Sets number of power levels: + + powervalues Sets the power level values: + + powerlabels Sets the power level labels: <3 chars...> + + Sets an entry in the mapping table: <0-index> + + + clear Clears the VTX table configuration. + + save Saves the VTX config to a file: + + load Loads the VTX config from a file: +``` + ## zenoh Source: [modules/zenoh](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/zenoh) diff --git a/docs/uk/modules/modules_template.md b/docs/uk/modules/modules_template.md index a02a7276ee..b9ae801ac2 100644 --- a/docs/uk/modules/modules_template.md +++ b/docs/uk/modules/modules_template.md @@ -1,5 +1,36 @@ # Modules Reference: Template +## mc_raptor + +Source: [modules/mc_raptor](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/mc_raptor) + +### Опис + +RAPTOR Policy Flight Mode + +### Usage {#mc_raptor_usage} + +``` +mc_raptor [arguments...] + Commands: + start + + intref Modify internal reference + lissajous Set Lissajous trajectory parameters + Amplitude X [m] + Amplitude Y [m] + Amplitude Z [m] + Frequency a + Frequency b + Frequency c + Total duration [s] + Ramp duration [s] + + stop + + status print status info +``` + ## module Source: [templates/template_module](https://github.com/PX4/PX4-Autopilot/tree/main/src/templates/template_module) diff --git a/docs/uk/msg_docs/ActionRequest.md b/docs/uk/msg_docs/ActionRequest.md index 584b06d718..71b4bfde29 100644 --- a/docs/uk/msg_docs/ActionRequest.md +++ b/docs/uk/msg_docs/ActionRequest.md @@ -1,12 +1,57 @@ +--- +pageClass: is-wide-page +--- + # ActionRequest (повідомлення UORB) -Action request for the vehicle's main state +Action request for the vehicle's main state. Message represents actions requested by a PX4 internal component towards the main state machine such as a request to arm or switch mode. It allows mapping triggers from various external interfaces like RC channels or MAVLink to cause an action. Request are published by `manual_control` and subscribed by the `commander` and `vtol_att_control` modules. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActionRequest.msg) +**TOPICS:** action_request + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | -------- | ---------------------------------------------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| action | `uint8` | | [ACTION](#ACTION) | Requested action | +| source | `uint8` | | [SOURCE](#SOURCE) | Request trigger type, such as a switch, button or gesture | +| mode | `uint8` | | | Requested mode. Only applies when `action` is `ACTION_SWITCH_MODE`. Values for this field are defined by the `vehicle_status_s::NAVIGATION_STATE_*` enumeration. | + +## Enums + +### ACTION {#ACTION} + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------- | +| ACTION_DISARM | `uint8` | 0 | Disarm vehicle | +| ACTION_ARM | `uint8` | 1 | Arm vehicle | +| ACTION_TOGGLE_ARMING | `uint8` | 2 | Toggle arming | +| ACTION_UNKILL | `uint8` | 3 | Revert a kill action | +| ACTION_KILL | `uint8` | 4 | Kill vehicle (instantly stop the motors) | +| ACTION_SWITCH_MODE | `uint8` | 5 | Switch mode. The target mode is set in the `mode` field. | +| ACTION_VTOL_TRANSITION_TO_MULTICOPTER | `uint8` | 6 | Transition to hover flight | +| ACTION_VTOL_TRANSITION_TO_FIXEDWING | `uint8` | 7 | Transition to fast forward flight | +| ACTION_TERMINATION | `uint8` | 8 | Irreversibly output failsafe values on all outputs, trigger parachute | + +### SOURCE {#SOURCE} + +| Назва | Тип | Значення | Опис | +| ---------------------------------------------------------------------------------------------------------------------- | ------- | -------- | --------------------------------------------------------------- | +| SOURCE_STICK_GESTURE | `uint8` | 0 | Triggered by holding the sticks in a certain position | +| SOURCE_RC_SWITCH | `uint8` | 1 | Triggered by an RC switch moving into a certain position | +| SOURCE_RC_BUTTON | `uint8` | 2 | Triggered by a momentary button on the RC being pressed or held | +| SOURCE_RC_MODE_SLOT | `uint8` | 3 | Mode change through the RC mode selection mechanism | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActionRequest.msg) + +:::details +Click here to see original file ```c # Action request for the vehicle's main state @@ -35,5 +80,6 @@ uint8 SOURCE_RC_BUTTON = 2 # Triggered by a momentary button on the RC bein uint8 SOURCE_RC_MODE_SLOT = 3 # Mode change through the RC mode selection mechanism uint8 mode # Requested mode. Only applies when `action` is `ACTION_SWITCH_MODE`. Values for this field are defined by the `vehicle_status_s::NAVIGATION_STATE_*` enumeration. - ``` + +::: diff --git a/docs/uk/msg_docs/ActuatorArmed.md b/docs/uk/msg_docs/ActuatorArmed.md index d8d2a8d0ce..9571672f6a 100644 --- a/docs/uk/msg_docs/ActuatorArmed.md +++ b/docs/uk/msg_docs/ActuatorArmed.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # ActuatorArmed (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorArmed.msg) +**TOPICS:** actuator_armed + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| armed | `bool` | | | Set to true if system is armed | +| prearmed | `bool` | | | Set to true if the actuator safety is disabled but motors are not armed | +| ready_to_arm | `bool` | | | Set to true if system is ready to be armed | +| lockdown | `bool` | | | Set to true if actuators are forced to being disabled (due to emergency or HIL) | +| kill | `bool` | | | Set to true if manual throttle kill switch is engaged | +| termination | `bool` | | | Send out failsafe (by default same as disarmed) output | +| in_esc_calibration_mode | `bool` | | | IO/FMU should ignore messages from the actuator controls topics | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorArmed.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -12,5 +36,6 @@ bool lockdown # Set to true if actuators are forced to being disabled (due to e bool kill # Set to true if manual throttle kill switch is engaged bool termination # Send out failsafe (by default same as disarmed) output bool in_esc_calibration_mode # IO/FMU should ignore messages from the actuator controls topics - ``` + +::: diff --git a/docs/uk/msg_docs/ActuatorControlsStatus.md b/docs/uk/msg_docs/ActuatorControlsStatus.md index 46ab0382b1..d7ecf6f6b5 100644 --- a/docs/uk/msg_docs/ActuatorControlsStatus.md +++ b/docs/uk/msg_docs/ActuatorControlsStatus.md @@ -1,6 +1,24 @@ +--- +pageClass: is-wide-page +--- + # ActuatorControlsStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorControlsStatus.msg) +**TOPICS:** actuator_controls_status_0 actuator_controls_status_1 + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| control_power | `float32[3]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorControlsStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +26,6 @@ uint64 timestamp # time since system start (microseconds) float32[3] control_power # TOPICS actuator_controls_status_0 actuator_controls_status_1 - ``` + +::: diff --git a/docs/uk/msg_docs/ActuatorMotors.md b/docs/uk/msg_docs/ActuatorMotors.md index f9b6a826f2..bb061ef8ae 100644 --- a/docs/uk/msg_docs/ActuatorMotors.md +++ b/docs/uk/msg_docs/ActuatorMotors.md @@ -1,11 +1,39 @@ +--- +pageClass: is-wide-page +--- + # ActuatorMotors (повідомлення UORB) -Повідомлення про керування двигуном +Motor control message. Normalised thrust setpoint for up to 12 motors. Published by the vehicle's allocation and consumed by the ESC protocol drivers e.g. PWM, DSHOT, UAVCAN. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorMotors.msg) +**TOPICS:** actuator_motors + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Sampling timestamp of the data this control response is based on | +| reversible_flags | `uint16` | | | Bitset indicating which motors are configured to be reversible | +| control | `float32[12]` | | [-1 : 1] | Normalized thrust. where 1 means maximum positive thrust, -1 maximum negative (if not supported by the output, <0 maps to NaN). NaN maps to disarmed (stop the motors) | + +## Constants + +| Назва | Тип | Значення | Опис | +| ----------------------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ACTUATOR_FUNCTION_MOTOR1 | `uint8` | 101 | | +| NUM_CONTROLS | `uint8` | 12 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorMotors.msg) + +:::details +Click here to see original file ```c # Motor control message @@ -24,5 +52,6 @@ uint8 ACTUATOR_FUNCTION_MOTOR1 = 101 # uint8 NUM_CONTROLS = 12 # float32[12] control # [@range -1, 1] Normalized thrust. where 1 means maximum positive thrust, -1 maximum negative (if not supported by the output, <0 maps to NaN). NaN maps to disarmed (stop the motors) - ``` + +::: diff --git a/docs/uk/msg_docs/ActuatorOutputs.md b/docs/uk/msg_docs/ActuatorOutputs.md index cdc9e214e5..68446e67ba 100644 --- a/docs/uk/msg_docs/ActuatorOutputs.md +++ b/docs/uk/msg_docs/ActuatorOutputs.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # ActuatorOutputs (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorOutputs.msg) +**TOPICS:** actuator_outputs actuator_outputs_sim actuator_outputs_debug + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | ------------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| noutputs | `uint32` | | | valid outputs | +| output | `float32[16]` | | | output data, in natural output units | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ------------------- | +| NUM_ACTUATOR_OUTPUTS | `uint8` | 16 | | +| NUM_ACTUATOR_OUTPUT_GROUPS | `uint8` | 4 | for sanity checking | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorOutputs.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +37,6 @@ float32[16] output # output data, in natural output units # actuator_outputs_sim is used for SITL, HITL & SIH (with an output range of [-1, 1]) # TOPICS actuator_outputs actuator_outputs_sim actuator_outputs_debug - ``` + +::: diff --git a/docs/uk/msg_docs/ActuatorServos.md b/docs/uk/msg_docs/ActuatorServos.md index 6dfe1ddd7a..dcd37b31bb 100644 --- a/docs/uk/msg_docs/ActuatorServos.md +++ b/docs/uk/msg_docs/ActuatorServos.md @@ -1,11 +1,37 @@ +--- +pageClass: is-wide-page +--- + # ActuatorServos (повідомлення UORB) -Повідомлення про керування сервоприводом +Servo control message. Normalised output setpoint for up to 8 servos. Published by the vehicle's allocation and consumed by the actuator output drivers. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorServos.msg) +**TOPICS:** actuator_servos + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Sampling timestamp of the data this control response is based on | +| control | `float32[8]` | | [-1 : 1] | Normalized output. 1 means maximum positive position. -1 maximum negative position (if not supported by the output, <0 maps to NaN). NaN maps to disarmed. | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | +| NUM_CONTROLS | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorServos.msg) + +:::details +Click here to see original file ```c # Servo control message @@ -20,5 +46,6 @@ uint64 timestamp_sample # [us] Sampling timestamp of the data this control resp uint8 NUM_CONTROLS = 8 # float32[8] control # [-] [@range -1, 1] Normalized output. 1 means maximum positive position. -1 maximum negative position (if not supported by the output, <0 maps to NaN). NaN maps to disarmed. - ``` + +::: diff --git a/docs/uk/msg_docs/ActuatorServosTrim.md b/docs/uk/msg_docs/ActuatorServosTrim.md index e6fc148fe0..eaa760e4a7 100644 --- a/docs/uk/msg_docs/ActuatorServosTrim.md +++ b/docs/uk/msg_docs/ActuatorServosTrim.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # ActuatorServosTrim (повідомлення UORB) -Підлаштування сервоприводів, що додаються як зміщення до виходів сервоприводів +Servo trims, added as offset to servo outputs. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorServosTrim.msg) +**TOPICS:** actuator_servostrim + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| trim | `float32[8]` | | | range: [-1, 1] | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------- | ------- | -------- | ---- | +| NUM_CONTROLS | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorServosTrim.msg) + +:::details +Click here to see original file ```c # Servo trims, added as offset to servo outputs @@ -10,5 +34,6 @@ uint64 timestamp # time since system start (microseconds) uint8 NUM_CONTROLS = 8 float32[8] trim # range: [-1, 1] - ``` + +::: diff --git a/docs/uk/msg_docs/ActuatorTest.md b/docs/uk/msg_docs/ActuatorTest.md index 6bc89a09fd..c07d77a528 100644 --- a/docs/uk/msg_docs/ActuatorTest.md +++ b/docs/uk/msg_docs/ActuatorTest.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # ActuatorTest (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorTest.msg) +**TOPICS:** actuator_test + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| action | `uint8` | | | one of ACTION\_\* | +| function | `uint16` | | | actuator output function | +| value | `float32` | | | range: [-1, 1], where 1 means maximum positive output, | +| timeout_ms | `uint32` | | | timeout in ms after which to exit test mode (if 0, do not time out) | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------- | +| ACTION_RELEASE_CONTROL | `uint8` | 0 | exit test mode for the given function | +| ACTION_DO_CONTROL | `uint8` | 1 | enable actuator test mode | +| FUNCTION_MOTOR1 | `uint8` | 101 | | +| MAX_NUM_MOTORS | `uint8` | 12 | | +| FUNCTION_SERVO1 | `uint8` | 201 | | +| MAX_NUM_SERVOS | `uint8` | 8 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | > = MAX_NUM_MOTORS to support code in esc_calibration | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorTest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -24,5 +57,6 @@ float32 value # range: [-1, 1], where 1 means maximum positive output, uint32 timeout_ms # timeout in ms after which to exit test mode (if 0, do not time out) uint8 ORB_QUEUE_LENGTH = 16 # >= MAX_NUM_MOTORS to support code in esc_calibration - ``` + +::: diff --git a/docs/uk/msg_docs/AdcReport.md b/docs/uk/msg_docs/AdcReport.md index 0865953206..96718298b9 100644 --- a/docs/uk/msg_docs/AdcReport.md +++ b/docs/uk/msg_docs/AdcReport.md @@ -1,10 +1,32 @@ +--- +pageClass: is-wide-page +--- + # 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) +**TOPICS:** adc_report + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| channel_id | `int16[16]` | | | ADC channel IDs, negative for non-existent, TODO: should be kept same as array index | +| raw_data | `int32[16]` | | | ADC channel raw value, accept negative value, valid if channel ID is positive | +| resolution | `uint32` | | | ADC channel resolution | +| v_ref | `float32` | V | | ADC channel voltage reference, use to calculate LSB voltage(lsb=scale/resolution) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AdcReport.msg) + +:::details +Click here to see original file ```c # ADC raw data. @@ -17,5 +39,6 @@ int16[16] channel_id # [-] ADC channel IDs, negative for non-existent, TODO: sh 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/Airspeed.md b/docs/uk/msg_docs/Airspeed.md index 8717f30d78..a9a866769b 100644 --- a/docs/uk/msg_docs/Airspeed.md +++ b/docs/uk/msg_docs/Airspeed.md @@ -1,11 +1,32 @@ +--- +pageClass: is-wide-page +--- + # Airspeed (повідомлення UORB) -Airspeed data from sensors +Airspeed data from sensors. This is published by airspeed sensor drivers, CAN airspeed sensors, simulators. It is subscribed by the airspeed selector module, which validates the data from multiple sensors and passes on a single estimation to the EKF, controllers and telemetry providers. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Airspeed.msg) +**TOPICS:** airspeed + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------- | -------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp of the raw data | +| indicated_airspeed_m_s | `float32` | m/s | | Indicated airspeed | +| true_airspeed_m_s | `float32` | m/s | | True airspeed | +| confidence | `float32` | | [0 : 1] | Confidence value for this sensor | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Airspeed.msg) + +:::details +Click here to see original file ```c # Airspeed data from sensors @@ -18,5 +39,6 @@ uint64 timestamp_sample # [us] Timestamp of the raw data float32 indicated_airspeed_m_s # [m/s] Indicated airspeed float32 true_airspeed_m_s # [m/s] True airspeed float32 confidence # [@range 0,1] Confidence value for this sensor - ``` + +::: diff --git a/docs/uk/msg_docs/AirspeedValidated.md b/docs/uk/msg_docs/AirspeedValidated.md index 1aa9bdbd02..306128407a 100644 --- a/docs/uk/msg_docs/AirspeedValidated.md +++ b/docs/uk/msg_docs/AirspeedValidated.md @@ -1,11 +1,56 @@ +--- +pageClass: is-wide-page +--- + # AirspeedValidated (повідомлення UORB) -Validated airspeed +Validated airspeed. Provides information about airspeed (indicated, true, calibrated) and the source of the data. Used by controllers, estimators and for airspeed reporting to operator. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/AirspeedValidated.msg) +**TOPICS:** airspeed_validated + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| indicated_airspeed_m_s | `float32` | m/s | | Indicated airspeed (IAS) (Invalid: NaN) | +| calibrated_airspeed_m_s | `float32` | m/s | | Calibrated airspeed (CAS) (Invalid: NaN) | +| true_airspeed_m_s | `float32` | m/s | | True airspeed (TAS) (Invalid: NaN) | +| airspeed_source | `int8` | | [SOURCE](#SOURCE) | Source of currently published airspeed values | +| calibrated_ground_minus_wind_m_s | `float32` | m/s | | CAS calculated from groundspeed - windspeed, where windspeed is estimated based on a zero-sideslip assumption (Invalid: NaN) | +| calibraded_airspeed_synth_m_s | `float32` | m/s | | Synthetic airspeed (Invalid: NaN) | +| airspeed_derivative_filtered | `float32` | m/s^2 | | Filtered indicated airspeed derivative | +| throttle_filtered | `float32` | | | Filtered fixed-wing throttle | +| pitch_filtered | `float32` | rad | | Filtered pitch | + +## Enums + +### SOURCE {#SOURCE} + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------- | ------ | -------- | ----------------------- | +| SOURCE_DISABLED | `int8` | -1 | Disabled | +| SOURCE_GROUND_MINUS_WIND | `int8` | 0 | Ground speed minus wind | +| SOURCE_SENSOR_1 | `int8` | 1 | Sensor 1 | +| SOURCE_SENSOR_2 | `int8` | 2 | Sensor 2 | +| SOURCE_SENSOR_3 | `int8` | 3 | Sensor 3 | +| SOURCE_SYNTHETIC | `int8` | 4 | Synthetic airspeed | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/AirspeedValidated.msg) + +:::details +Click here to see original file ```c # Validated airspeed @@ -35,5 +80,6 @@ float32 calibraded_airspeed_synth_m_s # [m/s] [@invalid NaN] Synthetic airsp float32 airspeed_derivative_filtered # [m/s^2] Filtered indicated airspeed derivative float32 throttle_filtered # [-] Filtered fixed-wing throttle float32 pitch_filtered # [rad] Filtered pitch - ``` + +::: diff --git a/docs/uk/msg_docs/AirspeedValidatedV0.md b/docs/uk/msg_docs/AirspeedValidatedV0.md index 8bca98a224..6fdd9f47d1 100644 --- a/docs/uk/msg_docs/AirspeedValidatedV0.md +++ b/docs/uk/msg_docs/AirspeedValidatedV0.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # AirspeedValidatedV0 (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/AirspeedValidatedV0.msg) +**TOPICS:** airspeed_validatedv0 + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| indicated_airspeed_m_s | `float32` | | | indicated airspeed in m/s (IAS), set to NAN if invalid | +| calibrated_airspeed_m_s | `float32` | | | calibrated airspeed in m/s (CAS, accounts for instrumentation errors), set to NAN if invalid | +| true_airspeed_m_s | `float32` | | | true filtered airspeed in m/s (TAS), set to NAN if invalid | +| calibrated_ground_minus_wind_m_s | `float32` | | | CAS calculated from groundspeed - windspeed, where windspeed is estimated based on a zero-sideslip assumption, set to NAN if invalid | +| true_ground_minus_wind_m_s | `float32` | | | TAS calculated from groundspeed - windspeed, where windspeed is estimated based on a zero-sideslip assumption, set to NAN if invalid | +| airspeed_sensor_measurement_valid | `bool` | | | True if data from at least one airspeed sensor is declared valid. | +| selected_airspeed_index | `int8` | | | 1-3: airspeed sensor index, 0: groundspeed-windspeed, -1: airspeed invalid | +| airspeed_derivative_filtered | `float32` | | | filtered indicated airspeed derivative [m/s/s] | +| throttle_filtered | `float32` | | | filtered fixed-wing throttle [-] | +| pitch_filtered | `float32` | | | filtered pitch [rad] | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/AirspeedValidatedV0.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -21,5 +54,6 @@ int8 selected_airspeed_index # 1-3: airspeed sensor index, 0: groundspeed-win float32 airspeed_derivative_filtered # filtered indicated airspeed derivative [m/s/s] float32 throttle_filtered # filtered fixed-wing throttle [-] float32 pitch_filtered # filtered pitch [rad] - ``` + +::: diff --git a/docs/uk/msg_docs/AirspeedWind.md b/docs/uk/msg_docs/AirspeedWind.md index ba3b6bbe1e..e3a90ba5ee 100644 --- a/docs/uk/msg_docs/AirspeedWind.md +++ b/docs/uk/msg_docs/AirspeedWind.md @@ -1,6 +1,10 @@ +--- +pageClass: is-wide-page +--- + # AirspeedWind (повідомлення UORB) -Wind estimate (from airspeed_selector) +Wind estimate (from airspeed_selector). Contains wind estimation and airspeed innovation information estimated by the WindEstimator in the airspeed selector module. @@ -8,7 +12,42 @@ in the airspeed selector module. This message is published by the airspeed selector for debugging purposes, and is not subscribed to by any other modules. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AirspeedWind.msg) +**TOPICS:** airspeed_wind + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp of the raw data | +| windspeed_north | `float32` | m/s | | Wind component in north / X direction | +| windspeed_east | `float32` | m/s | | Wind component in east / Y direction | +| variance_north | `float32` | (m/s)^2 | | Wind estimate error variance in north / X direction (Invalid: 0 if not estimated) | +| variance_east | `float32` | (m/s)^2 | | Wind estimate error variance in east / Y direction (Invalid: 0 if not estimated) | +| tas_innov | `float32` | m/s | | True airspeed innovation | +| tas_innov_var | `float32` | m/s | | True airspeed innovation variance | +| tas_scale_raw | `float32` | | | Estimated true airspeed scale factor (not validated) | +| tas_scale_raw_var | `float32` | | | True airspeed scale factor variance | +| tas_scale_validated | `float32` | | | Estimated true airspeed scale factor after validation | +| beta_innov | `float32` | rad | | Sideslip measurement innovation | +| beta_innov_var | `float32` | rad^2 | | Sideslip measurement innovation variance | +| source | `uint8` | | | source of wind estimate | + +## Constants + +| Назва | Тип | Значення | Опис | +| ---------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------- | +| SOURCE_AS_BETA_ONLY | `uint8` | 0 | Wind estimate only based on synthetic sideslip fusion | +| SOURCE_AS_SENSOR_1 | `uint8` | 1 | Combined synthetic sideslip and airspeed fusion (data from first airspeed sensor) | +| SOURCE_AS_SENSOR_2 | `uint8` | 2 | Combined synthetic sideslip and airspeed fusion (data from second airspeed sensor) | +| SOURCE_AS_SENSOR_3 | `uint8` | 3 | Combined synthetic sideslip and airspeed fusion (data from third airspeed sensor) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AirspeedWind.msg) + +:::details +Click here to see original file ```c # Wind estimate (from airspeed_selector) @@ -45,5 +84,6 @@ uint8 SOURCE_AS_BETA_ONLY = 0 # Wind estimate only based on synthetic sideslip f uint8 SOURCE_AS_SENSOR_1 = 1 # Combined synthetic sideslip and airspeed fusion (data from first airspeed sensor) uint8 SOURCE_AS_SENSOR_2 = 2 # Combined synthetic sideslip and airspeed fusion (data from second airspeed sensor) uint8 SOURCE_AS_SENSOR_3 = 3 # Combined synthetic sideslip and airspeed fusion (data from third airspeed sensor) - ``` + +::: diff --git a/docs/uk/msg_docs/ArmingCheckReply.md b/docs/uk/msg_docs/ArmingCheckReply.md index d1e79e5a49..732d88cb1c 100644 --- a/docs/uk/msg_docs/ArmingCheckReply.md +++ b/docs/uk/msg_docs/ArmingCheckReply.md @@ -1,6 +1,10 @@ +--- +pageClass: is-wide-page +--- + # ArmingCheckReply (повідомлення UORB) -Arming check reply +Arming check reply. This is a response to an ArmingCheckRequest message sent by the FMU to an external component, such as a ROS 2 navigation mode. The response contains the current set of external mode requirements, and a queue of events indicating recent failures to set the mode (which the FMU may then forward to a ground station). @@ -9,7 +13,55 @@ The request is sent regularly to all registered ROS modes, even while armed, so Note that the external component is identified by its registration_id, which is allocated to the component during registration (arming_check_id in RegisterExtComponentReply). The message is not used by internal/FMU components, as their mode requirements are known at compile time. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ArmingCheckReply.msg) +**TOPICS:** arming_checkreply + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start. | +| request_id | `uint8` | | | Id of ArmingCheckRequest for which this is a response | +| registration_id | `uint8` | | | Id of external component emitting this response | +| health_component_index | `uint8` | | [HEALTH_COMPONENT_INDEX](#HEALTH_COMPONENT_INDEX) | | +| health_component_is_present | `bool` | | | Unused. Intended for use with health events interface (health_component_t in events.json) | +| health_component_warning | `bool` | | | Unused. Intended for use with health events interface (health_component_t in events.json) | +| health_component_error | `bool` | | | Unused. Intended for use with health events interface (health_component_t in events.json) | +| can_arm_and_run | `bool` | | | True if the component can arm. For navigation mode components, true if the component can arm in the mode or switch to the mode when already armed | +| num_events | `uint8` | | | Number of queued failure messages (Event) in the events field | +| events | `Event[5]` | | | Arming failure reasons (Queue of events to report to GCS) | +| mode_req_angular_velocity | `bool` | | | Requires angular velocity estimate (e.g. from gyroscope) | +| mode_req_attitude | `bool` | | | Requires an attitude estimate | +| mode_req_local_alt | `bool` | | | Requires a local altitude estimate | +| mode_req_local_position | `bool` | | | Requires a local position estimate | +| mode_req_local_position_relaxed | `bool` | | | Requires a more relaxed global position estimate | +| mode_req_global_position | `bool` | | | Requires a global position estimate | +| mode_req_global_position_relaxed | `bool` | | | Requires a relaxed global position estimate | +| mode_req_mission | `bool` | | | Requires an uploaded mission | +| mode_req_home_position | `bool` | | | Requires a home position (such as RTL/Return mode) | +| mode_req_prevent_arming | `bool` | | | Prevent arming (such as in Land mode) | +| mode_req_manual_control | `bool` | | | Requires a manual controller | + +## Enums + +### HEALTH_COMPONENT_INDEX {#HEALTH_COMPONENT_INDEX} + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | --------------------------------------------------------- | +| HEALTH_COMPONENT_INDEX_NONE | `uint8` | 0 | Index of health component for which this response applies | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ArmingCheckReply.msg) + +:::details +Click here to see original file ```c # Arming check reply @@ -55,5 +107,6 @@ bool mode_req_prevent_arming # Prevent arming (such as in Land mode) bool mode_req_manual_control # Requires a manual controller uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/uk/msg_docs/ArmingCheckReplyV0.md b/docs/uk/msg_docs/ArmingCheckReplyV0.md index 48917da802..80ddfcd015 100644 --- a/docs/uk/msg_docs/ArmingCheckReplyV0.md +++ b/docs/uk/msg_docs/ArmingCheckReplyV0.md @@ -1,6 +1,50 @@ +--- +pageClass: is-wide-page +--- + # ArmingCheckReplyV0 (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ArmingCheckReplyV0.msg) +**TOPICS:** arming_checkreplyv0 + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint8` | | | | +| registration_id | `uint8` | | | | +| health_component_index | `uint8` | | | HEALTH_COMPONENT_INDEX_\* | +| health_component_is_present | `bool` | | | | +| health_component_warning | `bool` | | | | +| health_component_error | `bool` | | | | +| can_arm_and_run | `bool` | | | whether arming is possible, and if it's a navigation mode, if it can run | +| num_events | `uint8` | | | | +| events | `EventV0[5]` | | | | +| mode_req_angular_velocity | `bool` | | | | +| mode_req_attitude | `bool` | | | | +| mode_req_local_alt | `bool` | | | | +| mode_req_local_position | `bool` | | | | +| mode_req_local_position_relaxed | `bool` | | | | +| mode_req_global_position | `bool` | | | | +| mode_req_mission | `bool` | | | | +| mode_req_home_position | `bool` | | | | +| mode_req_prevent_arming | `bool` | | | | +| mode_req_manual_control | `bool` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | +| HEALTH_COMPONENT_INDEX_NONE | `uint8` | 0 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ArmingCheckReplyV0.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -37,5 +81,6 @@ bool mode_req_manual_control uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/uk/msg_docs/ArmingCheckRequest.md b/docs/uk/msg_docs/ArmingCheckRequest.md index 45fd9a48f4..bf878f600f 100644 --- a/docs/uk/msg_docs/ArmingCheckRequest.md +++ b/docs/uk/msg_docs/ArmingCheckRequest.md @@ -1,6 +1,10 @@ +--- +pageClass: is-wide-page +--- + # ArmingCheckRequest (повідомлення UORB) -Arming check request +Arming check request. Broadcast message to request arming checks be reported by all registered components, such as external ROS 2 navigation modes. All registered components should respond with an ArmingCheckReply message that indicates their current mode requirements, and any arming failure information. @@ -9,7 +13,28 @@ The request is sent regularly, even while armed, so that the FMU always knows th The reply will include the published request_id, allowing correlation of all arming check information for a particular request. The reply will also include the registration_id for each external component, provided to it during the registration process (RegisterExtComponentReply). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ArmingCheckRequest.msg) +**TOPICS:** arming_checkrequest + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| request_id | `uint8` | | | Id of this request. Allows correlation with associated ArmingCheckReply messages. | +| valid_registrations_mask | `uint32` | | | Bitmask of valid registration ID's (the bit is also cleared if flagged as unresponsive) | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ArmingCheckRequest.msg) + +:::details +Click here to see original file ```c # Arming check request @@ -28,5 +53,6 @@ uint64 timestamp # [us] Time since system start uint8 request_id # [-] Id of this request. Allows correlation with associated ArmingCheckReply messages. uint32 valid_registrations_mask # [-] Bitmask of valid registration ID's (the bit is also cleared if flagged as unresponsive) - ``` + +::: diff --git a/docs/uk/msg_docs/ArmingCheckRequestV0.md b/docs/uk/msg_docs/ArmingCheckRequestV0.md index f5680c11f2..6e5b4e3aaa 100644 --- a/docs/uk/msg_docs/ArmingCheckRequestV0.md +++ b/docs/uk/msg_docs/ArmingCheckRequestV0.md @@ -1,3 +1,7 @@ +--- +pageClass: is-wide-page +--- + # ArmingCheckRequestV0 (UORB message) Arming check request. @@ -9,7 +13,27 @@ The request is sent regularly, even while armed, so that the FMU always knows th The reply will include the published request_id, allowing correlation of all arming check information for a particular request. The reply will also include the registration_id for each external component, provided to it during the registration process (RegisterExtComponentReply). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ArmingCheckRequestV0.msg) +**TOPICS:** arming_checkrequestv0 + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start. | +| request_id | `uint8` | | | Id of this request. Allows correlation with associated ArmingCheckReply messages. | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ArmingCheckRequestV0.msg) + +:::details +Click here to see original file ```c # Arming check request. @@ -26,5 +50,6 @@ uint32 MESSAGE_VERSION = 0 uint64 timestamp # [us] Time since system start. uint8 request_id # Id of this request. Allows correlation with associated ArmingCheckReply messages. - ``` + +::: diff --git a/docs/uk/msg_docs/AutotuneAttitudeControlStatus.md b/docs/uk/msg_docs/AutotuneAttitudeControlStatus.md index afda316aa2..0d2bfa03a8 100644 --- a/docs/uk/msg_docs/AutotuneAttitudeControlStatus.md +++ b/docs/uk/msg_docs/AutotuneAttitudeControlStatus.md @@ -1,13 +1,68 @@ +--- +pageClass: is-wide-page +--- + # AutotuneAttitudeControlStatus (повідомлення UORB) -Autotune attitude control status +Autotune attitude control status. This message is published by the fw_autotune_attitude_control and mc_autotune_attitude_control modules when the user engages autotune, and is subscribed to by the respective attitude controllers to command rate setpoints. The rate_sp field is consumed by the controllers, while the remaining fields (model coefficients, gains, filters, and autotune state) are used for logging and debugging. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AutotuneAttitudeControlStatus.msg) +**TOPICS:** autotune_attitudecontrol_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------ | ------------ | ---------------------------------------------------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| coeff | `float32[5]` | | | Coefficients of the identified discrete-time model | +| coeff_var | `float32[5]` | | | Coefficients' variance of the identified discrete-time model | +| fitness | `float32` | | | Fitness of the parameter estimate | +| innov | `float32` | rad/s | | Innovation (residual error between model and measured output) | +| dt_model | `float32` | s | | Model sample time used for identification | +| kc | `float32` | | | Proportional rate-loop gain (ideal form) | +| ki | `float32` | | | Integral rate-loop gain (ideal form) | +| kd | `float32` | | | Derivative rate-loop gain (ideal form) | +| kff | `float32` | | | Feedforward rate-loop gain | +| att_p | `float32` | | | Proportional attitude gain | +| rate_sp | `float32[3]` | rad/s | | Rate setpoint commanded to the attitude controller. | +| u_filt | `float32` | | | Filtered input signal (normalized torque setpoint) used in system identification. | +| y_filt | `float32` | rad/s | | Filtered output signal (angular velocity) used in system identification. | +| state | `uint8` | | [STATE](#STATE) | Current state of the autotune procedure. | + +## Enums + +### STATE {#STATE} + +| Назва | Тип | Значення | Опис | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------- | +| STATE_IDLE | `uint8` | 0 | Idle (not running) | +| STATE_INIT | `uint8` | 1 | Initialize filters and setup | +| STATE_ROLL_AMPLITUDE_DETECTION | `uint8` | 2 | FW only: determine required excitation amplitude (roll) | +| STATE_ROLL | `uint8` | 3 | Roll-axis excitation and model identification | +| STATE_ROLL_PAUSE | `uint8` | 4 | Pause to return to level flight | +| STATE_PITCH_AMPLITUDE_DETECTION | `uint8` | 5 | FW only: determine required excitation amplitude (pitch) | +| STATE_PITCH | `uint8` | 6 | Pitch-axis excitation and model identification | +| STATE_PITCH_PAUSE | `uint8` | 7 | Pause to return to level flight | +| STATE_YAW_AMPLITUDE_DETECTION | `uint8` | 8 | FW only: determine required excitation amplitude (yaw) | +| STATE_YAW | `uint8` | 9 | Yaw-axis excitation and model identification | +| STATE_YAW_PAUSE | `uint8` | 10 | Pause to return to level flight | +| STATE_VERIFICATION | `uint8` | 11 | Verify model and candidate gains | +| STATE_APPLY | `uint8` | 12 | Apply gains | +| STATE_TEST | `uint8` | 13 | Test gains in closed-loop | +| STATE_COMPLETE | `uint8` | 14 | Tuning completed successfully | +| STATE_FAIL | `uint8` | 15 | Tuning failed (model invalid or controller unstable) | +| STATE_WAIT_FOR_DISARM | `uint8` | 16 | Waiting for disarm before finalizing | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AutotuneAttitudeControlStatus.msg) + +:::details +Click here to see original file ```c # Autotune attitude control status @@ -55,5 +110,6 @@ uint8 STATE_TEST = 13 # Test gains in closed-loop uint8 STATE_COMPLETE = 14 # Tuning completed successfully uint8 STATE_FAIL = 15 # Tuning failed (model invalid or controller unstable) uint8 STATE_WAIT_FOR_DISARM = 16 # Waiting for disarm before finalizing - ``` + +::: diff --git a/docs/uk/msg_docs/BatteryInfo.md b/docs/uk/msg_docs/BatteryInfo.md index 4b0c2823ce..af6f4d4f1d 100644 --- a/docs/uk/msg_docs/BatteryInfo.md +++ b/docs/uk/msg_docs/BatteryInfo.md @@ -1,11 +1,30 @@ +--- +pageClass: is-wide-page +--- + # BatteryInfo (UORB message) -Battery information +Battery information. Static or near-invariant battery information. Should be streamed at low rate. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/BatteryInfo.msg) +**TOPICS:** battery_info + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| id | `uint8` | | | Must match the id in the battery_status message for the same battery | +| serial_number | `char[32]` | | | Serial number of the battery pack in ASCII characters, 0 terminated (Invalid: 0 All bytes) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/BatteryInfo.msg) + +:::details +Click here to see original file ```c # Battery information @@ -17,5 +36,6 @@ uint64 timestamp # [us] Time since system start uint8 id # Must match the id in the battery_status message for the same battery char[32] serial_number # [@invalid 0 All bytes] Serial number of the battery pack in ASCII characters, 0 terminated - ``` + +::: diff --git a/docs/uk/msg_docs/BatteryStatus.md b/docs/uk/msg_docs/BatteryStatus.md index df35417e0f..348bccb768 100644 --- a/docs/uk/msg_docs/BatteryStatus.md +++ b/docs/uk/msg_docs/BatteryStatus.md @@ -1,12 +1,117 @@ +--- +pageClass: is-wide-page +--- + # BatteryStatus (повідомлення UORB) -Battery status +Battery status. Battery status information for up to 3 battery instances. These are populated from power module and smart battery device drivers, and one battery updated from MAVLink. Battery instance information is also logged and streamed in MAVLink telemetry. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/BatteryStatus.msg) +**TOPICS:** battery_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------------------------------------- | ------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| connected | `bool` | | | Whether or not a battery is connected. For power modules this is based on a voltage threshold. | +| voltage_v | `float32` | V | | Battery voltage (Invalid: 0) | +| current_a | `float32` | A | | Battery current (Invalid: -1) | +| current_average_a | `float32` | A | | Battery current average (for FW average in level flight) (Invalid: -1) | +| discharged_mah | `float32` | mAh | | Discharged amount (Invalid: -1) | +| remaining | `float32` | | [0 : 1] | Remaining capacity (Invalid: -1) | +| scale | `float32` | | [1 : -] | Scaling factor to compensate for lower actuation power caused by voltage sag (Invalid: -1) | +| time_remaining_s | `float32` | s | | Predicted time remaining until battery is empty under previous averaged load (Invalid: NaN) | +| temperature | `float32` | °C | | Temperature of the battery (Invalid: NaN) | +| cell_count | `uint8` | | | Number of cells (Invalid: 0) | +| source | `uint8` | | [SOURCE](#SOURCE) | Battery source | +| priority | `uint8` | | | Zero based priority is the connection on the Power Controller V1..Vn AKA BrickN-1 | +| capacity | `uint16` | mAh | | Capacity of the battery when fully charged | +| cycle_count | `uint16` | | | Number of discharge cycles the battery has experienced | +| average_time_to_empty | `uint16` | minutes | | Predicted remaining battery capacity based on the average rate of discharge | +| manufacture_date | `uint16` | | | Manufacture date, part of serial number of the battery pack. Formatted as: Day + Month×32 + (Year–1980)×512 | +| state_of_health | `uint16` | % | [0 : 100] | State of health. FullChargeCapacity/DesignCapacity | +| max_error | `uint16` | % | [1 : 100] | Max error, expected margin of error in the state-of-charge calculation | +| id | `uint8` | | | ID number of a battery. Should be unique and consistent for the lifetime of a vehicle. 1-indexed | +| interface_error | `uint16` | | | Interface error counter | +| voltage_cell_v | `float32[14]` | V | | Battery individual cell voltages (Invalid: 0) | +| max_cell_voltage_delta | `float32` | V | | Max difference between individual cell voltages | +| is_powering_off | `bool` | | | Power off event imminent indication, false if unknown | +| is_required | `bool` | | | Set if the battery is explicitly required before arming | +| warning | `uint8` | | [WARNING](#WARNING)[STATE](#STATE) | Current battery warning | +| faults | `uint16` | | [FAULT](#FAULT) | Smart battery supply status/fault flags (bitmask) for health indication | +| full_charge_capacity_wh | `float32` | Wh | | Compensated battery capacity | +| remaining_capacity_wh | `float32` | Wh | | Compensated battery capacity remaining | +| over_discharge_count | `uint16` | | | Number of battery overdischarge | +| nominal_voltage | `float32` | V | | Nominal voltage of the battery pack | +| internal_resistance_estimate | `float32` | Ohm | | Internal resistance per cell estimate | +| ocv_estimate | `float32` | V | | Open circuit voltage estimate | +| ocv_estimate_filtered | `float32` | V | | Filtered open circuit voltage estimate | +| volt_based_soc_estimate | `float32` | | [0 : 1] | Normalized volt based state of charge estimate | +| voltage_prediction | `float32` | V | | Predicted voltage | +| prediction_error | `float32` | V | | Prediction error | +| estimation_covariance_norm | `float32` | | | Norm of the covariance matrix | + +## Enums + +### SOURCE {#SOURCE} + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------- | ------- | -------- | ----------------------------------------------------------------- | +| SOURCE_POWER_MODULE | `uint8` | 0 | Power module (analog ADC or I2C power monitor) | +| SOURCE_EXTERNAL | `uint8` | 1 | External (MAVLink, CAN, or external driver) | +| SOURCE_ESCS | `uint8` | 2 | ESCs (via ESC telemetry) | + +### WARNING {#WARNING} + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------ | ------- | -------- | -------------------------------------------- | +| WARNING_NONE | `uint8` | 0 | No battery low voltage warning active | +| WARNING_LOW | `uint8` | 1 | Low voltage warning | +| WARNING_CRITICAL | `uint8` | 2 | Critical voltage, return / abort immediately | +| WARNING_EMERGENCY | `uint8` | 3 | Immediate landing required | +| WARNING_FAILED | `uint8` | 4 | Battery has failed completely | + +### STATE {#STATE} + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| STATE_UNHEALTHY | `uint8` | 6 | Battery is diagnosed to be defective or an error occurred, usage is discouraged / prohibited. Possible causes (faults) are listed in faults field | +| STATE_CHARGING | `uint8` | 7 | Battery is charging | + +### FAULT {#FAULT} + +| Назва | Тип | Значення | Опис | +| ---------------------------------------------------------------------------------------------------------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------- | +| FAULT_DEEP_DISCHARGE | `uint8` | 0 | Battery has deep discharged | +| FAULT_SPIKES | `uint8` | 1 | Voltage spikes | +| FAULT_CELL_FAIL | `uint8` | 2 | One or more cells have failed | +| FAULT_OVER_CURRENT | `uint8` | 3 | Over-current | +| FAULT_OVER_TEMPERATURE | `uint8` | 4 | Over-temperature | +| FAULT_UNDER_TEMPERATURE | `uint8` | 5 | Under-temperature fault | +| FAULT_INCOMPATIBLE_VOLTAGE | `uint8` | 6 | Vehicle voltage is not compatible with this battery (batteries on same power rail should have similar voltage) | +| FAULT_INCOMPATIBLE_FIRMWARE | `uint8` | 7 | Battery firmware is not compatible with current autopilot firmware | +| FAULT_INCOMPATIBLE_MODEL | `uint8` | 8 | Battery model is not supported by the system | +| FAULT_HARDWARE_FAILURE | `uint8` | 9 | Hardware problem | +| FAULT_FAILED_TO_ARM | `uint8` | 10 | Battery had a problem while arming | +| FAULT_COUNT | `uint8` | 11 | Counter. Keep this as last element | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 1 | | +| MAX_INSTANCES | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/BatteryStatus.msg) + +:::details +Click here to see original file ```c # Battery status @@ -88,5 +193,6 @@ float32 volt_based_soc_estimate # [-] [@range 0, 1] Normalized volt based float32 voltage_prediction # [V] Predicted voltage float32 prediction_error # [V] Prediction error float32 estimation_covariance_norm # [-] Norm of the covariance matrix - ``` + +::: diff --git a/docs/uk/msg_docs/BatteryStatusV0.md b/docs/uk/msg_docs/BatteryStatusV0.md index cd900a1f17..699eedd680 100644 --- a/docs/uk/msg_docs/BatteryStatusV0.md +++ b/docs/uk/msg_docs/BatteryStatusV0.md @@ -1,12 +1,118 @@ +--- +pageClass: is-wide-page +--- + # BatteryStatusV0 (UORB message) -Battery status +Battery status. Battery status information for up to 4 battery instances. These are populated from power module and smart battery device drivers, and one battery updated from MAVLink. Battery instance information is also logged and streamed in MAVLink telemetry. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/BatteryStatusV0.msg) +**TOPICS:** battery_statusv0 + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------------------------------------- | ------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| connected | `bool` | | | Whether or not a battery is connected. For power modules this is based on a voltage threshold. | +| voltage_v | `float32` | V | | Battery voltage (Invalid: 0) | +| current_a | `float32` | A | | Battery current (Invalid: -1) | +| current_average_a | `float32` | A | | Battery current average (for FW average in level flight) (Invalid: -1) | +| discharged_mah | `float32` | mAh | | Discharged amount (Invalid: -1) | +| remaining | `float32` | | [0 : 1] | Remaining capacity (Invalid: -1) | +| scale | `float32` | | [1 : -] | Scaling factor to compensate for lower actuation power caused by voltage sag (Invalid: -1) | +| time_remaining_s | `float32` | s | | Predicted time remaining until battery is empty under previous averaged load (Invalid: NaN) | +| temperature | `float32` | °C | | Temperature of the battery (Invalid: NaN) | +| cell_count | `uint8` | | | Number of cells (Invalid: 0) | +| source | `uint8` | | [SOURCE](#SOURCE) | Battery source | +| priority | `uint8` | | | Zero based priority is the connection on the Power Controller V1..Vn AKA BrickN-1 | +| capacity | `uint16` | mAh | | Capacity of the battery when fully charged | +| cycle_count | `uint16` | | | Number of discharge cycles the battery has experienced | +| average_time_to_empty | `uint16` | minutes | | Predicted remaining battery capacity based on the average rate of discharge | +| serial_number | `uint16` | | | Serial number of the battery pack | +| manufacture_date | `uint16` | | | Manufacture date, part of serial number of the battery pack. Formatted as: Day + Month×32 + (Year–1980)×512 | +| state_of_health | `uint16` | % | [0 : 100] | State of health. FullChargeCapacity/DesignCapacity | +| max_error | `uint16` | % | [1 : 100] | Max error, expected margin of error in the state-of-charge calculation | +| id | `uint8` | | | ID number of a battery. Should be unique and consistent for the lifetime of a vehicle. 1-indexed | +| interface_error | `uint16` | | | Interface error counter | +| voltage_cell_v | `float32[14]` | V | | Battery individual cell voltages (Invalid: 0) | +| max_cell_voltage_delta | `float32` | | | Max difference between individual cell voltages | +| is_powering_off | `bool` | | | Power off event imminent indication, false if unknown | +| is_required | `bool` | | | Set if the battery is explicitly required before arming | +| warning | `uint8` | | [WARNING](#WARNING)[STATE](#STATE) | Current battery warning | +| faults | `uint16` | | [FAULT](#FAULT) | Smart battery supply status/fault flags (bitmask) for health indication | +| full_charge_capacity_wh | `float32` | Wh | | Compensated battery capacity | +| remaining_capacity_wh | `float32` | Wh | | Compensated battery capacity remaining | +| over_discharge_count | `uint16` | | | Number of battery overdischarge | +| nominal_voltage | `float32` | V | | Nominal voltage of the battery pack | +| internal_resistance_estimate | `float32` | Ohm | | Internal resistance per cell estimate | +| ocv_estimate | `float32` | V | | Open circuit voltage estimate | +| ocv_estimate_filtered | `float32` | V | | Filtered open circuit voltage estimate | +| volt_based_soc_estimate | `float32` | | [0 : 1] | Normalized volt based state of charge estimate | +| voltage_prediction | `float32` | V | | Predicted voltage | +| prediction_error | `float32` | V | | Prediction error | +| estimation_covariance_norm | `float32` | | | Norm of the covariance matrix | + +## Enums + +### SOURCE {#SOURCE} + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------- | ------- | -------- | ----------------------------------------------------------------- | +| SOURCE_POWER_MODULE | `uint8` | 0 | Power module (analog ADC or I2C power monitor) | +| SOURCE_EXTERNAL | `uint8` | 1 | External (MAVLink, CAN, or external driver) | +| SOURCE_ESCS | `uint8` | 2 | ESCs (via ESC telemetry) | + +### WARNING {#WARNING} + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------ | ------- | -------- | -------------------------------------------- | +| WARNING_NONE | `uint8` | 0 | No battery low voltage warning active | +| WARNING_LOW | `uint8` | 1 | Low voltage warning | +| WARNING_CRITICAL | `uint8` | 2 | Critical voltage, return / abort immediately | +| WARNING_EMERGENCY | `uint8` | 3 | Immediate landing required | +| WARNING_FAILED | `uint8` | 4 | Battery has failed completely | + +### STATE {#STATE} + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| STATE_UNHEALTHY | `uint8` | 6 | Battery is diagnosed to be defective or an error occurred, usage is discouraged / prohibited. Possible causes (faults) are listed in faults field | +| STATE_CHARGING | `uint8` | 7 | Battery is charging | + +### FAULT {#FAULT} + +| Назва | Тип | Значення | Опис | +| ---------------------------------------------------------------------------------------------------------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------- | +| FAULT_DEEP_DISCHARGE | `uint8` | 0 | Battery has deep discharged | +| FAULT_SPIKES | `uint8` | 1 | Voltage spikes | +| FAULT_CELL_FAIL | `uint8` | 2 | One or more cells have failed | +| FAULT_OVER_CURRENT | `uint8` | 3 | Over-current | +| FAULT_OVER_TEMPERATURE | `uint8` | 4 | Over-temperature | +| FAULT_UNDER_TEMPERATURE | `uint8` | 5 | Under-temperature fault | +| FAULT_INCOMPATIBLE_VOLTAGE | `uint8` | 6 | Vehicle voltage is not compatible with this battery (batteries on same power rail should have similar voltage) | +| FAULT_INCOMPATIBLE_FIRMWARE | `uint8` | 7 | Battery firmware is not compatible with current autopilot firmware | +| FAULT_INCOMPATIBLE_MODEL | `uint8` | 8 | Battery model is not supported by the system | +| FAULT_HARDWARE_FAILURE | `uint8` | 9 | Hardware problem | +| FAULT_FAILED_TO_ARM | `uint8` | 10 | Battery had a problem while arming | +| FAULT_COUNT | `uint8` | 11 | Counter. Keep this as last element | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | +| MAX_INSTANCES | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/BatteryStatusV0.msg) + +:::details +Click here to see original file ```c # Battery status @@ -88,5 +194,6 @@ float32 volt_based_soc_estimate # [@range 0, 1] Normalized volt based state of c float32 voltage_prediction # [V] Predicted voltage float32 prediction_error # [V] Prediction error float32 estimation_covariance_norm # Norm of the covariance matrix - ``` + +::: diff --git a/docs/uk/msg_docs/ButtonEvent.md b/docs/uk/msg_docs/ButtonEvent.md index 51d6c08572..782bf6b33a 100644 --- a/docs/uk/msg_docs/ButtonEvent.md +++ b/docs/uk/msg_docs/ButtonEvent.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # ButtonEvent (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ButtonEvent.msg) +**TOPICS:** button_event safety_button + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| triggered | `bool` | | | Set to true if the event is triggered | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ButtonEvent.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,5 +33,6 @@ bool triggered # Set to true if the event is triggered # TOPICS button_event safety_button uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/uk/msg_docs/CameraCapture.md b/docs/uk/msg_docs/CameraCapture.md index ef13c1d9d9..6d9ea6b5e5 100644 --- a/docs/uk/msg_docs/CameraCapture.md +++ b/docs/uk/msg_docs/CameraCapture.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # CameraCapture (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraCapture.msg) +**TOPICS:** camera_capture + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_utc | `uint64` | | | Capture time in UTC / GPS time | +| seq | `uint32` | | | Image sequence number | +| lat | `float64` | | | Latitude in degrees (WGS84) | +| lon | `float64` | | | Longitude in degrees (WGS84) | +| alt | `float32` | | | Altitude (AMSL) | +| ground_distance | `float32` | | | Altitude above ground (meters) | +| q | `float32[4]` | | | Attitude of the camera relative to NED earth-fixed frame when using a gimbal, otherwise vehicle attitude | +| result | `int8` | | | 1 for success, 0 for failure, -1 if camera does not provide feedback | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraCapture.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -12,5 +37,6 @@ float32 alt # Altitude (AMSL) float32 ground_distance # Altitude above ground (meters) float32[4] q # Attitude of the camera relative to NED earth-fixed frame when using a gimbal, otherwise vehicle attitude int8 result # 1 for success, 0 for failure, -1 if camera does not provide feedback - ``` + +::: diff --git a/docs/uk/msg_docs/CameraStatus.md b/docs/uk/msg_docs/CameraStatus.md index e991994c13..9bed7b71f2 100644 --- a/docs/uk/msg_docs/CameraStatus.md +++ b/docs/uk/msg_docs/CameraStatus.md @@ -1,11 +1,31 @@ +--- +pageClass: is-wide-page +--- + # CameraStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraStatus.msg) +**TOPICS:** camera_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| active_sys_id | `uint8` | | | mavlink system id of the currently active camera | +| active_comp_id | `uint8` | | | mavlink component id of currently active camera | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) uint8 active_sys_id # mavlink system id of the currently active camera uint8 active_comp_id # mavlink component id of currently active camera - ``` + +::: diff --git a/docs/uk/msg_docs/CameraTrigger.md b/docs/uk/msg_docs/CameraTrigger.md index ccef5baa80..19d9bd4342 100644 --- a/docs/uk/msg_docs/CameraTrigger.md +++ b/docs/uk/msg_docs/CameraTrigger.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # CameraTrigger (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraTrigger.msg) +**TOPICS:** camera_trigger + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_utc | `uint64` | | | UTC timestamp | +| seq | `uint32` | | | Image sequence number | +| feedback | `bool` | | | Trigger feedback from camera | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint32` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraTrigger.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +36,6 @@ uint32 seq # Image sequence number bool feedback # Trigger feedback from camera uint32 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/uk/msg_docs/CanInterfaceStatus.md b/docs/uk/msg_docs/CanInterfaceStatus.md index 2200bf182c..907269e25b 100644 --- a/docs/uk/msg_docs/CanInterfaceStatus.md +++ b/docs/uk/msg_docs/CanInterfaceStatus.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # CanInterfaceStatus (повідомлення UORB) -[вихідний файл](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CanInterfaceStatus.msg) +**TOPICS:** can_interfacestatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| інтерфейс | `uint8` | | | | +| io_errors | `uint64` | | | | +| frames_tx | `uint64` | | | | +| frames_rx | `uint64` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CanInterfaceStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,5 +30,6 @@ uint8 interface uint64 io_errors uint64 frames_tx uint64 frames_rx - ``` + +::: diff --git a/docs/uk/msg_docs/CellularStatus.md b/docs/uk/msg_docs/CellularStatus.md index 9ba5a00378..ecaac52960 100644 --- a/docs/uk/msg_docs/CellularStatus.md +++ b/docs/uk/msg_docs/CellularStatus.md @@ -1,10 +1,73 @@ +--- +pageClass: is-wide-page +--- + # CellularStatus (повідомлення UORB) -Cellular status +Cellular status. This is currently used only for logging cell status from MAVLink. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CellularStatus.msg) +**TOPICS:** cellular_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------- | -------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| status | `uint16` | | [STATUS_FLAG](#STATUS_FLAG) | Status bitmap | +| failure_reason | `uint8` | | [FAILURE_REASON](#FAILURE_REASON) | Failure reason | +| type | `uint8` | | [CELLULAR_NETWORK_RADIO_TYPE](#CELLULAR_NETWORK_RADIO_TYPE) | Cellular network radio type | +| quality | `uint8` | dBm | | Cellular network RSSI/RSRP, absolute value | +| mcc | `uint16` | | | Mobile country code (Invalid: UINT16_MAX) | +| mnc | `uint16` | | | Mobile network code (Invalid: UINT16_MAX) | +| lac | `uint16` | | | Location area code (Invalid: 0) | + +## Enums + +### STATUS_FLAG {#STATUS_FLAG} + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------- | -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| STATUS_FLAG_UNKNOWN | `uint16` | 1 | State unknown or not reportable | +| STATUS_FLAG_FAILED | `uint16` | 2 | Modem is unusable | +| STATUS_FLAG_INITIALIZING | `uint16` | 4 | Modem is being initialized | +| STATUS_FLAG_LOCKED | `uint16` | 8 | Modem is locked | +| STATUS_FLAG_DISABLED | `uint16` | 16 | Modem is not enabled and is powered down | +| STATUS_FLAG_DISABLING | `uint16` | 32 | Modem is currently transitioning to the STATUS_FLAG_DISABLED state | +| STATUS_FLAG_ENABLING | `uint16` | 64 | Modem is currently transitioning to the STATUS_FLAG_ENABLED state | +| STATUS_FLAG_ENABLED | `uint16` | 128 | Modem is enabled and powered on but not registered with a network provider and not available for data connections | +| STATUS_FLAG_SEARCHING | `uint16` | 256 | Modem is searching for a network provider to register | +| STATUS_FLAG_REGISTERED | `uint16` | 512 | Modem is registered with a network provider, and data connections and messaging may be available for use | +| STATUS_FLAG_DISCONNECTING | `uint16` | 1024 | Modem is disconnecting and deactivating the last active packet data bearer. This state will not be entered if more than one packet data bearer is active and one of the active bearers is deactivated | +| STATUS_FLAG_CONNECTING | `uint16` | 2048 | Modem is activating and connecting the first packet data bearer. Subsequent bearer activations when another bearer is already active do not cause this state to be entered | +| STATUS_FLAG_CONNECTED | `uint16` | 4096 | One or more packet data bearers is active and connected | + +### FAILURE_REASON {#FAILURE_REASON} + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------- | -------- | ----------------------------------------------- | +| FAILURE_REASON_NONE | `uint8` | 0 | No error | +| FAILURE_REASON_UNKNOWN | `uint8` | 1 | Error state is unknown | +| FAILURE_REASON_SIM_MISSING | `uint8` | 2 | SIM is required for the modem but missing | +| FAILURE_REASON_SIM_ERROR | `uint8` | 3 | SIM is available, but not usable for connection | + +### CELLULAR_NETWORK_RADIO_TYPE {#CELLULAR_NETWORK_RADIO_TYPE} + +| Назва | Тип | Значення | Опис | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ----- | +| CELLULAR_NETWORK_RADIO_TYPE_NONE | `uint8` | 0 | None | +| CELLULAR_NETWORK_RADIO_TYPE_GSM | `uint8` | 1 | GSM | +| CELLULAR_NETWORK_RADIO_TYPE_CDMA | `uint8` | 2 | CDMA | +| CELLULAR_NETWORK_RADIO_TYPE_WCDMA | `uint8` | 3 | WCDMA | +| CELLULAR_NETWORK_RADIO_TYPE_LTE | `uint8` | 4 | LTE | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CellularStatus.msg) + +:::details +Click here to see original file ```c # Cellular status @@ -45,5 +108,6 @@ uint8 quality # [dBm] Cellular network RSSI/RSRP, absolute value uint16 mcc # [@invalid UINT16_MAX] Mobile country code uint16 mnc # [@invalid UINT16_MAX] Mobile network code uint16 lac # [@invalid 0] Location area code - ``` + +::: diff --git a/docs/uk/msg_docs/CollisionConstraints.md b/docs/uk/msg_docs/CollisionConstraints.md index 1d66dac8ba..62f92fda19 100644 --- a/docs/uk/msg_docs/CollisionConstraints.md +++ b/docs/uk/msg_docs/CollisionConstraints.md @@ -1,9 +1,27 @@ +--- +pageClass: is-wide-page +--- + # CollisionConstraints (повідомлення UORB) -Обмеження локальної заданої точки в рамці NED -встановлення чого-небудь на NaN означає, що обмеження не надано +Local setpoint constraints in NED frame. setting something to NaN means that no limit is provided. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CollisionConstraints.msg) +**TOPICS:** collision_constraints + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| original_setpoint | `float32[2]` | | | velocities demanded | +| adapted_setpoint | `float32[2]` | | | velocities allowed | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CollisionConstraints.msg) + +:::details +Click here to see original file ```c # Local setpoint constraints in NED frame @@ -13,5 +31,6 @@ uint64 timestamp # time since system start (microseconds) float32[2] original_setpoint # velocities demanded float32[2] adapted_setpoint # velocities allowed - ``` + +::: diff --git a/docs/uk/msg_docs/ConfigOverrides.md b/docs/uk/msg_docs/ConfigOverrides.md index ac8abc1b26..6af879b8d1 100644 --- a/docs/uk/msg_docs/ConfigOverrides.md +++ b/docs/uk/msg_docs/ConfigOverrides.md @@ -1,8 +1,40 @@ +--- +pageClass: is-wide-page +--- + # ConfigOverrides (повідомлення UORB) -Конфігуровані перевизначення (зовнішніми) режимами або виконавцями режимів +Configurable overrides by (external) modes or mode executors. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ConfigOverrides.msg) +**TOPICS:** config_overrides config_overrides_request + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| disable_auto_disarm | `bool` | | | Prevent the drone from automatically disarming after landing (if configured) | +| defer_failsafes | `bool` | | | Defer all failsafes that can be deferred (until the flag is cleared) | +| defer_failsafes_timeout_s | `int16` | | | Maximum time a failsafe can be deferred. 0 = system default, -1 = no timeout | +| disable_auto_set_home | `bool` | | | Prevent the drone from automatically setting the home position on arm or takeoff | +| source_type | `int8` | | | | +| source_id | `uint8` | | | ID depending on source_type | + +## Constants + +| Назва | Тип | Значення | Опис | +| ---------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 1 | | +| SOURCE_TYPE_MODE | `int8` | 0 | | +| SOURCE_TYPE_MODE_EXECUTOR | `int8` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ConfigOverrides.msg) + +:::details +Click here to see original file ```c # Configurable overrides by (external) modes or mode executors @@ -26,5 +58,6 @@ uint8 source_id # ID depending on source_type uint8 ORB_QUEUE_LENGTH = 4 # TOPICS config_overrides config_overrides_request - ``` + +::: diff --git a/docs/uk/msg_docs/ConfigOverridesV0.md b/docs/uk/msg_docs/ConfigOverridesV0.md index b9bda0d3a9..20358bc0eb 100644 --- a/docs/uk/msg_docs/ConfigOverridesV0.md +++ b/docs/uk/msg_docs/ConfigOverridesV0.md @@ -1,8 +1,39 @@ +--- +pageClass: is-wide-page +--- + # ConfigOverridesV0 (UORB message) -Конфігуровані перевизначення (зовнішніми) режимами або виконавцями режимів +Configurable overrides by (external) modes or mode executors. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ConfigOverridesV0.msg) +**TOPICS:** config_overrides config_overrides_request + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| disable_auto_disarm | `bool` | | | Prevent the drone from automatically disarming after landing (if configured) | +| defer_failsafes | `bool` | | | Defer all failsafes that can be deferred (until the flag is cleared) | +| defer_failsafes_timeout_s | `int16` | | | Maximum time a failsafe can be deferred. 0 = system default, -1 = no timeout | +| source_type | `int8` | | | | +| source_id | `uint8` | | | ID depending on source_type | + +## Constants + +| Назва | Тип | Значення | Опис | +| ---------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | +| SOURCE_TYPE_MODE | `int8` | 0 | | +| SOURCE_TYPE_MODE_EXECUTOR | `int8` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ConfigOverridesV0.msg) + +:::details +Click here to see original file ```c # Configurable overrides by (external) modes or mode executors @@ -26,5 +57,6 @@ uint8 source_id # ID depending on source_type uint8 ORB_QUEUE_LENGTH = 4 # TOPICS config_overrides config_overrides_request - ``` + +::: diff --git a/docs/uk/msg_docs/ControlAllocatorStatus.md b/docs/uk/msg_docs/ControlAllocatorStatus.md index eb6cb73385..c8fa45e6a0 100644 --- a/docs/uk/msg_docs/ControlAllocatorStatus.md +++ b/docs/uk/msg_docs/ControlAllocatorStatus.md @@ -1,6 +1,40 @@ +--- +pageClass: is-wide-page +--- + # ControlAllocatorStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ControlAllocatorStatus.msg) +**TOPICS:** control_allocatorstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| torque_setpoint_achieved | `bool` | | | Boolean indicating whether the 3D torque setpoint was correctly allocated to actuators. 0 if not achieved, 1 if achieved. | +| unallocated_torque | `float32[3]` | | | Unallocated torque. Equal to 0 if the setpoint was achieved. | +| thrust_setpoint_achieved | `bool` | | | Boolean indicating whether the 3D thrust setpoint was correctly allocated to actuators. 0 if not achieved, 1 if achieved. | +| unallocated_thrust | `float32[3]` | | | Unallocated thrust. Equal to 0 if the setpoint was achieved. | +| actuator_saturation | `int8[16]` | | | Indicates actuator saturation status. | +| handled_motor_failure_mask | `uint16` | | | Bitmask of failed motors that were removed from the allocation / effectiveness matrix. Not necessarily identical to the report from FailureDetector | +| motor_stop_mask | `uint16` | | | Bitmaks of motors stopped by failure injection | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| ACTUATOR_SATURATION_OK | `int8` | 0 | The actuator is not saturated | +| ACTUATOR_SATURATION_UPPER_DYN | `int8` | 1 | The actuator is saturated (with a value <= the desired value) because it cannot increase its value faster | +| ACTUATOR_SATURATION_UPPER | `int8` | 2 | The actuator is saturated (with a value <= the desired value) because it has reached its maximum value | +| ACTUATOR_SATURATION_LOWER_DYN | `int8` | -1 | The actuator is saturated (with a value >= the desired value) because it cannot decrease its value faster | +| ACTUATOR_SATURATION_LOWER | `int8` | -2 | The actuator is saturated (with a value >= the desired value) because it has reached its minimum value | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ControlAllocatorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -25,5 +59,6 @@ int8[16] actuator_saturation # Indicates actuator saturation status. uint16 handled_motor_failure_mask # Bitmask of failed motors that were removed from the allocation / effectiveness matrix. Not necessarily identical to the report from FailureDetector uint16 motor_stop_mask # Bitmaks of motors stopped by failure injection - ``` + +::: diff --git a/docs/uk/msg_docs/Cpuload.md b/docs/uk/msg_docs/Cpuload.md index 25c6df0828..74f34510eb 100644 --- a/docs/uk/msg_docs/Cpuload.md +++ b/docs/uk/msg_docs/Cpuload.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # Cpuload (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Cpuload.msg) +**TOPICS:** cpuload + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| load | `float32` | | | processor load from 0 to 1 | +| ram_usage | `float32` | | | RAM usage from 0 to 1 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Cpuload.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) float32 load # processor load from 0 to 1 float32 ram_usage # RAM usage from 0 to 1 - ``` + +::: diff --git a/docs/uk/msg_docs/DatamanRequest.md b/docs/uk/msg_docs/DatamanRequest.md index 72d0f3981f..fe83821570 100644 --- a/docs/uk/msg_docs/DatamanRequest.md +++ b/docs/uk/msg_docs/DatamanRequest.md @@ -1,6 +1,29 @@ +--- +pageClass: is-wide-page +--- + # DatamanRequest (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DatamanRequest.msg) +**TOPICS:** dataman_request + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| client_id | `uint8` | | | | +| request_type | `uint8` | | | id/read/write/clear | +| item | `uint8` | | | dm_item_t | +| index | `uint32` | | | | +| data | `uint8[56]` | | | | +| data_length | `uint32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DatamanRequest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +34,6 @@ uint8 item # dm_item_t uint32 index uint8[56] data uint32 data_length - ``` + +::: diff --git a/docs/uk/msg_docs/DatamanResponse.md b/docs/uk/msg_docs/DatamanResponse.md index 0d884388b5..f4d49f334c 100644 --- a/docs/uk/msg_docs/DatamanResponse.md +++ b/docs/uk/msg_docs/DatamanResponse.md @@ -1,6 +1,40 @@ +--- +pageClass: is-wide-page +--- + # DatamanResponse (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DatamanResponse.msg) +**TOPICS:** dataman_response + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| client_id | `uint8` | | | | +| request_type | `uint8` | | | id/read/write/clear | +| item | `uint8` | | | dm_item_t | +| index | `uint32` | | | | +| data | `uint8[56]` | | | | +| status | `uint8` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| STATUS_SUCCESS | `uint8` | 0 | | +| STATUS_FAILURE_ID_ERR | `uint8` | 1 | | +| STATUS_FAILURE_NO_DATA | `uint8` | 2 | | +| STATUS_FAILURE_READ_FAILED | `uint8` | 3 | | +| STATUS_FAILURE_WRITE_FAILED | `uint8` | 4 | | +| STATUS_FAILURE_CLEAR_FAILED | `uint8` | 5 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DatamanResponse.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +52,6 @@ uint8 STATUS_FAILURE_READ_FAILED = 3 uint8 STATUS_FAILURE_WRITE_FAILED = 4 uint8 STATUS_FAILURE_CLEAR_FAILED = 5 uint8 status - ``` + +::: diff --git a/docs/uk/msg_docs/DebugArray.md b/docs/uk/msg_docs/DebugArray.md index a104c73441..a2cd924b89 100644 --- a/docs/uk/msg_docs/DebugArray.md +++ b/docs/uk/msg_docs/DebugArray.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # DebugArray (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugArray.msg) +**TOPICS:** debug_array + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | ------------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| id | `uint16` | | | unique ID of debug array, used to discriminate between arrays | +| name | `char[10]` | | | name of the debug array (max. 10 characters) | +| data | `float32[58]` | | | data | + +## Constants + +| Назва | Тип | Значення | Опис | +| ---------------------------------------------------------- | ------- | -------- | ---- | +| ARRAY_SIZE | `uint8` | 58 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugArray.msg) + +:::details +Click here to see original file ```c uint8 ARRAY_SIZE = 58 @@ -8,5 +34,6 @@ uint64 timestamp # time since system start (microseconds) uint16 id # unique ID of debug array, used to discriminate between arrays char[10] name # name of the debug array (max. 10 characters) float32[58] data # data - ``` + +::: diff --git a/docs/uk/msg_docs/DebugKeyValue.md b/docs/uk/msg_docs/DebugKeyValue.md index a6711f14eb..d99cfd3494 100644 --- a/docs/uk/msg_docs/DebugKeyValue.md +++ b/docs/uk/msg_docs/DebugKeyValue.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # DebugKeyValue (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugKeyValue.msg) +**TOPICS:** debug_keyvalue + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| key | `char[10]` | | | max. 10 characters as key / name | +| value | `float32` | | | the value to send as debug output | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugKeyValue.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) char[10] key # max. 10 characters as key / name float32 value # the value to send as debug output - ``` + +::: diff --git a/docs/uk/msg_docs/DebugValue.md b/docs/uk/msg_docs/DebugValue.md index 3cd0af41bc..229522b22c 100644 --- a/docs/uk/msg_docs/DebugValue.md +++ b/docs/uk/msg_docs/DebugValue.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # DebugValue (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugValue.msg) +**TOPICS:** debug_value + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| ind | `int8` | | | index of debug variable | +| value | `float32` | | | the value to send as debug output | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugValue.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) int8 ind # index of debug variable float32 value # the value to send as debug output - ``` + +::: diff --git a/docs/uk/msg_docs/DebugVect.md b/docs/uk/msg_docs/DebugVect.md index 4813408fb1..398a1f5c9b 100644 --- a/docs/uk/msg_docs/DebugVect.md +++ b/docs/uk/msg_docs/DebugVect.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # DebugVect (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugVect.msg) +**TOPICS:** debug_vect + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| name | `char[10]` | | | max. 10 characters as key / name | +| x | `float32` | | | x value | +| y | `float32` | | | y value | +| z | `float32` | | | z value | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugVect.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +29,6 @@ char[10] name # max. 10 characters as key / name float32 x # x value float32 y # y value float32 z # z value - ``` + +::: diff --git a/docs/uk/msg_docs/DeviceInformation.md b/docs/uk/msg_docs/DeviceInformation.md index d415461f94..c3638f9196 100644 --- a/docs/uk/msg_docs/DeviceInformation.md +++ b/docs/uk/msg_docs/DeviceInformation.md @@ -1,11 +1,58 @@ +--- +pageClass: is-wide-page +--- + # DeviceInformation (UORB message) -Device information +Device information. Can be used to uniquely associate a device_id from a sensor topic with a physical device using serial number. as well as tracking of the used firmware versions on the devices. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DeviceInformation.msg) +**TOPICS:** device_information + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_type | `uint8` | | [DEVICE_TYPE](#DEVICE_TYPE) | Type of the device. Matches MAVLink DEVICE_TYPE enum | +| vendor_name | `char[32]` | | | Name of the device vendor | +| model_name | `char[32]` | | | Name of the device model | +| `uint32` | | | Unique device ID for the sensor. Does not change between power cycles. (Invalid: 0 if not available) | | +| firmware_version | `char[24]` | | | Firmware version. (Invalid: empty if not available) | +| hardware_version | `char[24]` | | | Hardware version. (Invalid: empty if not available) | +| serial_number | `char[33]` | | | Device serial number or unique identifier. (Invalid: empty if not available) | + +## Enums + +### DEVICE_TYPE {#DEVICE_TYPE} + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ---------------------- | +| DEVICE_TYPE_GENERIC | `uint8` | 0 | Generic/unknown sensor | +| DEVICE_TYPE_AIRSPEED | `uint8` | 1 | Датчик швидкості | +| DEVICE_TYPE_ESC | `uint8` | 2 | ESC | +| DEVICE_TYPE_SERVO | `uint8` | 3 | Servo | +| DEVICE_TYPE_GPS | `uint8` | 4 | GPS | +| DEVICE_TYPE_MAGNETOMETER | `uint8` | 5 | Магнітометр | +| DEVICE_TYPE_PARACHUTE | `uint8` | 6 | Парашут | +| DEVICE_TYPE_RANGEFINDER | `uint8` | 7 | Rangefinder | +| DEVICE_TYPE_WINCH | `uint8` | 8 | Winch | +| DEVICE_TYPE_BAROMETER | `uint8` | 9 | Барометр | +| DEVICE_TYPE_OPTICAL_FLOW | `uint8` | 10 | Optical flow | +| DEVICE_TYPE_ACCELEROMETER | `uint8` | 11 | Accelerometer | +| DEVICE_TYPE_GYROSCOPE | `uint8` | 12 | Gyroscope | +| DEVICE_TYPE_DIFFERENTIAL_PRESSURE | `uint8` | 13 | Differential pressure | +| DEVICE_TYPE_BATTERY | `uint8` | 14 | Battery | +| DEVICE_TYPE_HYGROMETER | `uint8` | 15 | Hygrometer | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DeviceInformation.msg) + +:::details +Click here to see original file ```c # Device information @@ -41,5 +88,6 @@ uint32 device_id # [-] [@invalid 0 if not available] Unique device ID char[24] firmware_version # [-] [@invalid empty if not available] Firmware version. char[24] hardware_version # [-] [@invalid empty if not available] Hardware version. char[33] serial_number # [-] [@invalid empty if not available] Device serial number or unique identifier. - ``` + +::: diff --git a/docs/uk/msg_docs/DifferentialPressure.md b/docs/uk/msg_docs/DifferentialPressure.md index 66963b01f5..0f5c2c41d5 100644 --- a/docs/uk/msg_docs/DifferentialPressure.md +++ b/docs/uk/msg_docs/DifferentialPressure.md @@ -1,11 +1,33 @@ +--- +pageClass: is-wide-page +--- + # DifferentialPressure (повідомлення UORB) -Differential-pressure (airspeed) sensor +Differential-pressure (airspeed) sensor. This is populated by airspeed sensor drivers and used by the sensor module to calculate airspeed. The information is published in the `SCALED_PRESSURE_n` MAVLink messages (along with information from a corresponding `SensorBaro` instance). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DifferentialPressure.msg) +**TOPICS:** differential_pressure + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time of publication (since system start) | +| timestamp_sample | `uint64` | us | | Time of raw data capture | +| device_id | `uint32` | | | Unique device ID for the sensor that does not change between power cycles | +| differential_pressure_pa | `float32` | Pa | | Differential pressure reading (may be negative) | +| temperature | `float32` | degC | | Temperature (Invalid: NaN if unknown) | +| error_count | `uint32` | | | Number of errors detected by driver | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DifferentialPressure.msg) + +:::details +Click here to see original file ```c # Differential-pressure (airspeed) sensor @@ -20,5 +42,6 @@ uint32 device_id # [-] Unique device ID for the sensor that doe float32 differential_pressure_pa # [Pa] Differential pressure reading (may be negative) float32 temperature # [degC] [@invalid NaN if unknown] Temperature uint32 error_count # [-] Number of errors detected by driver - ``` + +::: diff --git a/docs/uk/msg_docs/DistanceSensor.md b/docs/uk/msg_docs/DistanceSensor.md index c66f69b4eb..d0e173a9bc 100644 --- a/docs/uk/msg_docs/DistanceSensor.md +++ b/docs/uk/msg_docs/DistanceSensor.md @@ -1,8 +1,64 @@ +--- +pageClass: is-wide-page +--- + # DistanceSensor (повідомлення UORB) -Дані повідомлення DISTANCE_SENSOR +DISTANCE_SENSOR message data. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DistanceSensor.msg) +**TOPICS:** distance_sensor + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| min_distance | `float32` | | | Minimum distance the sensor can measure (in m) | +| max_distance | `float32` | | | Maximum distance the sensor can measure (in m) | +| current_distance | `float32` | | | Current distance reading (in m) | +| variance | `float32` | | | Measurement variance (in m^2), 0 for unknown / invalid readings | +| signal_quality | `int8` | | | Signal quality in percent (0...100%), where 0 = invalid signal, 100 = perfect signal, and -1 = unknown signal quality. | +| type | `uint8` | | | Type from MAV_DISTANCE_SENSOR enum | +| h_fov | `float32` | | | Sensor horizontal field of view (rad) | +| v_fov | `float32` | | | Sensor vertical field of view (rad) | +| q | `float32[4]` | | | Quaterion sensor orientation with respect to the vehicle body frame to specify the orientation ROTATION_CUSTOM | +| orientation | `uint8` | | | Direction the sensor faces from MAV_SENSOR_ORIENTATION enum | +| mode | `uint8` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------- | +| MAV_DISTANCE_SENSOR_LASER | `uint8` | 0 | | +| MAV_DISTANCE_SENSOR_ULTRASOUND | `uint8` | 1 | | +| MAV_DISTANCE_SENSOR_INFRARED | `uint8` | 2 | | +| MAV_DISTANCE_SENSOR_RADAR | `uint8` | 3 | | +| ROTATION_YAW_0 | `uint8` | 0 | MAV_SENSOR_ROTATION_NONE | +| ROTATION_YAW_45 | `uint8` | 1 | MAV_SENSOR_ROTATION_YAW_45 | +| ROTATION_YAW_90 | `uint8` | 2 | MAV_SENSOR_ROTATION_YAW_90 | +| ROTATION_YAW_135 | `uint8` | 3 | MAV_SENSOR_ROTATION_YAW_135 | +| ROTATION_YAW_180 | `uint8` | 4 | MAV_SENSOR_ROTATION_YAW_180 | +| ROTATION_YAW_225 | `uint8` | 5 | MAV_SENSOR_ROTATION_YAW_225 | +| ROTATION_YAW_270 | `uint8` | 6 | MAV_SENSOR_ROTATION_YAW_270 | +| ROTATION_YAW_315 | `uint8` | 7 | MAV_SENSOR_ROTATION_YAW_315 | +| ROTATION_FORWARD_FACING | `uint8` | 0 | MAV_SENSOR_ROTATION_NONE | +| ROTATION_RIGHT_FACING | `uint8` | 2 | MAV_SENSOR_ROTATION_YAW_90 | +| ROTATION_BACKWARD_FACING | `uint8` | 4 | MAV_SENSOR_ROTATION_YAW_180 | +| ROTATION_LEFT_FACING | `uint8` | 6 | MAV_SENSOR_ROTATION_YAW_270 | +| ROTATION_UPWARD_FACING | `uint8` | 24 | MAV_SENSOR_ROTATION_PITCH_90 | +| ROTATION_DOWNWARD_FACING | `uint8` | 25 | MAV_SENSOR_ROTATION_PITCH_270 | +| ROTATION_CUSTOM | `uint8` | 100 | MAV_SENSOR_ROTATION_CUSTOM | +| MODE_UNKNOWN | `uint8` | 0 | | +| MODE_ENABLED | `uint8` | 1 | | +| MODE_DISABLED | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DistanceSensor.msg) + +:::details +Click here to see original file ```c # DISTANCE_SENSOR message data @@ -52,5 +108,6 @@ uint8 mode uint8 MODE_UNKNOWN = 0 uint8 MODE_ENABLED = 1 uint8 MODE_DISABLED = 2 - ``` + +::: diff --git a/docs/uk/msg_docs/DistanceSensorModeChangeRequest.md b/docs/uk/msg_docs/DistanceSensorModeChangeRequest.md index ab957de133..a54d1d5f68 100644 --- a/docs/uk/msg_docs/DistanceSensorModeChangeRequest.md +++ b/docs/uk/msg_docs/DistanceSensorModeChangeRequest.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # DistanceSensorModeChangeRequest (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DistanceSensorModeChangeRequest.msg) +**TOPICS:** distance_sensormode_changerequest + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_on_off | `uint8` | | | request to disable/enable the distance sensor | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------ | ------- | -------- | ---- | +| REQUEST_OFF | `uint8` | 0 | | +| REQUEST_ON | `uint8` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DistanceSensorModeChangeRequest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +33,6 @@ uint64 timestamp # time since system start (microseconds) uint8 request_on_off # request to disable/enable the distance sensor uint8 REQUEST_OFF = 0 uint8 REQUEST_ON = 1 - ``` + +::: diff --git a/docs/uk/msg_docs/DronecanNodeStatus.md b/docs/uk/msg_docs/DronecanNodeStatus.md index 5c8a8d7862..042c340f70 100644 --- a/docs/uk/msg_docs/DronecanNodeStatus.md +++ b/docs/uk/msg_docs/DronecanNodeStatus.md @@ -1,6 +1,43 @@ +--- +pageClass: is-wide-page +--- + # DronecanNodeStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DronecanNodeStatus.msg) +**TOPICS:** dronecan_nodestatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| node_id | `uint16` | | | The node ID which this data comes from | +| uptime_sec | `uint32` | | | Node uptime | +| health | `uint8` | | | | +| mode | `uint8` | | | | +| sub_mode | `uint8` | | | | +| vendor_specific_status_code | `uint16` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| --------------------------------------------------------------------------------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------- | +| HEALTH_OK | `uint8` | 0 | The node is functioning properly. | +| HEALTH_WARNING | `uint8` | 1 | A critical parameter went out of range or the node encountered a minor failure. | +| HEALTH_ERROR | `uint8` | 2 | The node encountered a major failure. | +| HEALTH_CRITICAL | `uint8` | 3 | The node suffered a fatal malfunction. | +| MODE_OPERATIONAL | `uint8` | 0 | Normal operating mode. | +| MODE_INITIALIZATION | `uint8` | 1 | Initialization is in progress; this mode is entered immediately after startup. | +| MODE_MAINTENANCE | `uint8` | 2 | Наприклад, calibration, the bootloader is running, etc. | +| MODE_SOFTWARE_UPDATE | `uint8` | 3 | New software/firmware is being loaded. | +| MODE_OFFLINE | `uint8` | 7 | The node is no longer available. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DronecanNodeStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -44,5 +81,6 @@ uint8 sub_mode # Optional, vendor-specific node status code, e.g. a fault code or a status bitmask. # uint16 vendor_specific_status_code - ``` + +::: diff --git a/docs/uk/msg_docs/Ekf2Timestamps.md b/docs/uk/msg_docs/Ekf2Timestamps.md index eb0cdab8fe..bc85f54628 100644 --- a/docs/uk/msg_docs/Ekf2Timestamps.md +++ b/docs/uk/msg_docs/Ekf2Timestamps.md @@ -1,11 +1,38 @@ +--- +pageClass: is-wide-page +--- + # Ekf2Timestamps (повідомлення UORB) -це повідомлення містить (відносні) відмітки часу введення датчиків, які використовує EKF2. -Це може бути використано для відтворення. +це повідомлення містить (відносні) відмітки часу введення датчиків, які використовує EKF2. Це може бути використано для відтворення. -поле мітки часу - це посилання на час ekf2 і відповідає мітці часу теми sensor_combined. +**TOPICS:** ekf2_timestamps -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Ekf2Timestamps.msg) +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| airspeed_timestamp_rel | `int16` | | | | +| airspeed_validated_timestamp_rel | `int16` | | | | +| distance_sensor_timestamp_rel | `int16` | | | | +| optical_flow_timestamp_rel | `int16` | | | | +| vehicle_air_data_timestamp_rel | `int16` | | | | +| vehicle_magnetometer_timestamp_rel | `int16` | | | | +| visual_odometry_timestamp_rel | `int16` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| --------------------------------------------------------------------------------------------------------------- | ------- | -------- | ------------------------------------------------------------- | +| RELATIVE_TIMESTAMP_INVALID | `int16` | 32767 | (0x7fff) If one of the relative timestamps | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Ekf2Timestamps.msg) + +:::details +Click here to see original file ```c # this message contains the (relative) timestamps of the sensor inputs used by EKF2. @@ -32,5 +59,6 @@ int16 vehicle_magnetometer_timestamp_rel int16 visual_odometry_timestamp_rel # Note: this is a high-rate logged topic, so it needs to be as small as possible - ``` + +::: diff --git a/docs/uk/msg_docs/EscReport.md b/docs/uk/msg_docs/EscReport.md index 29ba577826..89f7de7fdf 100644 --- a/docs/uk/msg_docs/EscReport.md +++ b/docs/uk/msg_docs/EscReport.md @@ -1,6 +1,62 @@ +--- +pageClass: is-wide-page +--- + # EscReport (UORB повідомлення) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscReport.msg) +**TOPICS:** esc_report + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| esc_errorcount | `uint32` | | | Number of reported errors by ESC - if supported | +| esc_rpm | `int32` | | | Motor RPM, negative for reverse rotation [RPM] - if supported | +| esc_voltage | `float32` | | | Voltage measured from current ESC [V] - if supported | +| esc_current | `float32` | | | Current measured from current ESC [A] - if supported | +| esc_temperature | `float32` | | | Temperature measured from current ESC [degC] - if supported | +| esc_address | `uint8` | | | Address of current ESC (in most cases 1-8 / must be set by driver) | +| esc_cmdcount | `uint8` | | | Counter of number of commands | +| esc_state | `uint8` | | | State of ESC - depend on Vendor | +| actuator_function | `uint8` | | | actuator output function (one of Motor1...MotorN) | +| failures | `uint16` | | | Bitmask to indicate the internal ESC faults | +| esc_power | `int8` | | | Applied power 0-100 in % (negative values reserved) | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| ACTUATOR_FUNCTION_MOTOR1 | `uint8` | 101 | | +| ACTUATOR_FUNCTION_MOTOR2 | `uint8` | 102 | | +| ACTUATOR_FUNCTION_MOTOR3 | `uint8` | 103 | | +| ACTUATOR_FUNCTION_MOTOR4 | `uint8` | 104 | | +| ACTUATOR_FUNCTION_MOTOR5 | `uint8` | 105 | | +| ACTUATOR_FUNCTION_MOTOR6 | `uint8` | 106 | | +| ACTUATOR_FUNCTION_MOTOR7 | `uint8` | 107 | | +| ACTUATOR_FUNCTION_MOTOR8 | `uint8` | 108 | | +| ACTUATOR_FUNCTION_MOTOR9 | `uint8` | 109 | | +| ACTUATOR_FUNCTION_MOTOR10 | `uint8` | 110 | | +| ACTUATOR_FUNCTION_MOTOR11 | `uint8` | 111 | | +| ACTUATOR_FUNCTION_MOTOR12 | `uint8` | 112 | | +| FAILURE_OVER_CURRENT | `uint8` | 0 | (1 << 0) | +| FAILURE_OVER_VOLTAGE | `uint8` | 1 | (1 << 1) | +| FAILURE_MOTOR_OVER_TEMPERATURE | `uint8` | 2 | (1 << 2) | +| FAILURE_OVER_RPM | `uint8` | 3 | (1 << 3) | +| FAILURE_INCONSISTENT_CMD | `uint8` | 4 | (1 << 4) Set if ESC received an inconsistent command (i.e out of boundaries) | +| FAILURE_MOTOR_STUCK | `uint8` | 5 | (1 << 5) | +| FAILURE_GENERIC | `uint8` | 6 | (1 << 6) | +| FAILURE_MOTOR_WARN_TEMPERATURE | `uint8` | 7 | (1 << 7) | +| FAILURE_WARN_ESC_TEMPERATURE | `uint8` | 8 | (1 << 8) | +| FAILURE_OVER_ESC_TEMPERATURE | `uint8` | 9 | (1 << 9) | +| ESC_FAILURE_COUNT | `uint8` | 10 | Counter - keep it as last element! | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscReport.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -43,5 +99,6 @@ uint8 FAILURE_MOTOR_WARN_TEMPERATURE = 7 # (1 << 7) uint8 FAILURE_WARN_ESC_TEMPERATURE = 8 # (1 << 8) uint8 FAILURE_OVER_ESC_TEMPERATURE = 9 # (1 << 9) uint8 ESC_FAILURE_COUNT = 10 # Counter - keep it as last element! - ``` + +::: diff --git a/docs/uk/msg_docs/EscStatus.md b/docs/uk/msg_docs/EscStatus.md index 9166ecd5f2..96f426faef 100644 --- a/docs/uk/msg_docs/EscStatus.md +++ b/docs/uk/msg_docs/EscStatus.md @@ -1,6 +1,41 @@ +--- +pageClass: is-wide-page +--- + # EscStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscStatus.msg) +**TOPICS:** esc_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------- | -------------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| counter | `uint16` | | | incremented by the writing thread everytime new data is stored | +| esc_count | `uint8` | | | number of connected ESCs | +| esc_connectiontype | `uint8` | | | how ESCs connected to the system | +| esc_online_flags | `uint8` | | | Bitmask indicating which ESC is online/offline | +| esc_armed_flags | `uint8` | | | Bitmask indicating which ESC is armed. For ESC's where the arming state is not known (returned by the ESC), the arming bits should always be set. | +| esc | `EscReport[8]` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------- | +| CONNECTED_ESC_MAX | `uint8` | 8 | The number of ESCs supported. Current (Q2/2013) we support 8 ESCs | +| ESC_CONNECTION_TYPE_PPM | `uint8` | 0 | Traditional PPM ESC | +| ESC_CONNECTION_TYPE_SERIAL | `uint8` | 1 | Serial Bus connected ESC | +| ESC_CONNECTION_TYPE_ONESHOT | `uint8` | 2 | One Shot PPM | +| ESC_CONNECTION_TYPE_I2C | `uint8` | 3 | I2C | +| ESC_CONNECTION_TYPE_CAN | `uint8` | 4 | CAN-Bus | +| ESC_CONNECTION_TYPE_DSHOT | `uint8` | 5 | DShot | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -31,5 +66,6 @@ uint8 esc_online_flags # Bitmask indicating which ESC is online/offline uint8 esc_armed_flags # Bitmask indicating which ESC is armed. For ESC's where the arming state is not known (returned by the ESC), the arming bits should always be set. EscReport[8] esc - ``` + +::: diff --git a/docs/uk/msg_docs/EstimatorAidSource1d.md b/docs/uk/msg_docs/EstimatorAidSource1d.md index 3d78f0f4a1..809de10fec 100644 --- a/docs/uk/msg_docs/EstimatorAidSource1d.md +++ b/docs/uk/msg_docs/EstimatorAidSource1d.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # EstimatorAidSource1d (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource1d.msg) +**TOPICS:** estimator_aid_src_baro_hgt estimator_aid_src_ev_hgt estimator_aid_src_gnss_hgt estimator_aid_src_rng_hgt estimator_aid_src_airspeed estimator_aid_src_sideslip estimator_aid_src_fake_hgt estimator_aid_src_gnss_yaw estimator_aid_src_ev_yaw + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| estimator_instance | `uint8` | | | | +| device_id | `uint32` | | | | +| time_last_fuse | `uint64` | | | | +| observation | `float32` | | | | +| observation_variance | `float32` | | | | +| innovation | `float32` | | | | +| innovation_filtered | `float32` | | | | +| innovation_variance | `float32` | | | | +| test_ratio | `float32` | | | normalized innovation squared | +| test_ratio_filtered | `float32` | | | signed filtered test ratio | +| innovation_rejected | `bool` | | | true if the observation has been rejected | +| fused | `bool` | | | true if the sample was successfully fused | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource1d.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -30,5 +60,6 @@ bool fused # true if the sample was successfully fused # TOPICS estimator_aid_src_airspeed estimator_aid_src_sideslip # TOPICS estimator_aid_src_fake_hgt # TOPICS estimator_aid_src_gnss_yaw estimator_aid_src_ev_yaw - ``` + +::: diff --git a/docs/uk/msg_docs/EstimatorAidSource2d.md b/docs/uk/msg_docs/EstimatorAidSource2d.md index 51ad6a860c..8fd13db4b3 100644 --- a/docs/uk/msg_docs/EstimatorAidSource2d.md +++ b/docs/uk/msg_docs/EstimatorAidSource2d.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # EstimatorAidSource2d (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource2d.msg) +**TOPICS:** estimator_aid_src_ev_pos estimator_aid_src_fake_pos estimator_aid_src_gnss_pos estimator_aid_src_aux_global_position estimator_aid_src_aux_vel estimator_aid_src_optical_flow estimator_aid_src_drag + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| estimator_instance | `uint8` | | | | +| device_id | `uint32` | | | | +| time_last_fuse | `uint64` | | | | +| observation | `float64[2]` | | | | +| observation_variance | `float32[2]` | | | | +| innovation | `float32[2]` | | | | +| innovation_filtered | `float32[2]` | | | | +| innovation_variance | `float32[2]` | | | | +| test_ratio | `float32[2]` | | | normalized innovation squared | +| test_ratio_filtered | `float32[2]` | | | signed filtered test ratio | +| innovation_rejected | `bool` | | | true if the observation has been rejected | +| fused | `bool` | | | true if the sample was successfully fused | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource2d.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -29,5 +59,6 @@ bool fused # true if the sample was successfully fused # TOPICS estimator_aid_src_ev_pos estimator_aid_src_fake_pos estimator_aid_src_gnss_pos estimator_aid_src_aux_global_position # TOPICS estimator_aid_src_aux_vel estimator_aid_src_optical_flow # TOPICS estimator_aid_src_drag - ``` + +::: diff --git a/docs/uk/msg_docs/EstimatorAidSource3d.md b/docs/uk/msg_docs/EstimatorAidSource3d.md index f4faabd00b..5e90c2aa9f 100644 --- a/docs/uk/msg_docs/EstimatorAidSource3d.md +++ b/docs/uk/msg_docs/EstimatorAidSource3d.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # EstimatorAidSource3d (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource3d.msg) +**TOPICS:** estimator_aid_src_ev_vel estimator_aid_src_gnss_vel estimator_aid_src_gravity estimator_aid_src_mag + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| estimator_instance | `uint8` | | | | +| device_id | `uint32` | | | | +| time_last_fuse | `uint64` | | | | +| observation | `float32[3]` | | | | +| observation_variance | `float32[3]` | | | | +| innovation | `float32[3]` | | | | +| innovation_filtered | `float32[3]` | | | | +| innovation_variance | `float32[3]` | | | | +| test_ratio | `float32[3]` | | | normalized innovation squared | +| test_ratio_filtered | `float32[3]` | | | signed filtered test ratio | +| innovation_rejected | `bool` | | | true if the observation has been rejected | +| fused | `bool` | | | true if the sample was successfully fused | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource3d.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -27,5 +57,6 @@ bool innovation_rejected # true if the observation has been rejected bool fused # true if the sample was successfully fused # TOPICS estimator_aid_src_ev_vel estimator_aid_src_gnss_vel estimator_aid_src_gravity estimator_aid_src_mag - ``` + +::: diff --git a/docs/uk/msg_docs/EstimatorBias.md b/docs/uk/msg_docs/EstimatorBias.md index 59e8965948..8239338d7c 100644 --- a/docs/uk/msg_docs/EstimatorBias.md +++ b/docs/uk/msg_docs/EstimatorBias.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # EstimatorBias (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorBias.msg) +**TOPICS:** estimator_baro_bias estimator_gnss_hgt_bias + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| bias | `float32` | | | estimated barometric altitude bias (m) | +| bias_var | `float32` | | | estimated barometric altitude bias variance (m^2) | +| innov | `float32` | | | innovation of the last measurement fusion (m) | +| innov_var | `float32` | | | innovation variance of the last measurement fusion (m^2) | +| innov_test_ratio | `float32` | | | normalized innovation squared test ratio | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorBias.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -15,5 +39,6 @@ float32 innov_var # innovation variance of the last measurement fusion (m^2) float32 innov_test_ratio # normalized innovation squared test ratio # TOPICS estimator_baro_bias estimator_gnss_hgt_bias - ``` + +::: diff --git a/docs/uk/msg_docs/EstimatorBias3d.md b/docs/uk/msg_docs/EstimatorBias3d.md index 9f74e6acd5..35548f2562 100644 --- a/docs/uk/msg_docs/EstimatorBias3d.md +++ b/docs/uk/msg_docs/EstimatorBias3d.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # EstimatorBias3d (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorBias3d.msg) +**TOPICS:** estimator_bias3d estimator_ev_pos_bias + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| bias | `float32[3]` | | | estimated barometric altitude bias (m) | +| bias_var | `float32[3]` | | | estimated barometric altitude bias variance (m^2) | +| innov | `float32[3]` | | | innovation of the last measurement fusion (m) | +| innov_var | `float32[3]` | | | innovation variance of the last measurement fusion (m^2) | +| innov_test_ratio | `float32[3]` | | | normalized innovation squared test ratio | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorBias3d.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -17,5 +41,6 @@ float32[3] innov_test_ratio # normalized innovation squared test ratio # TOPICS estimator_bias3d # TOPICS estimator_ev_pos_bias - ``` + +::: diff --git a/docs/uk/msg_docs/EstimatorEventFlags.md b/docs/uk/msg_docs/EstimatorEventFlags.md index 2e498da7b4..1f2669d4ff 100644 --- a/docs/uk/msg_docs/EstimatorEventFlags.md +++ b/docs/uk/msg_docs/EstimatorEventFlags.md @@ -1,6 +1,42 @@ +--- +pageClass: is-wide-page +--- + # EstimatorEventFlags (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorEventFlags.msg) +**TOPICS:** estimator_eventflags + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| information_event_changes | `uint32` | | | number of information event changes | +| gps_checks_passed | `bool` | | | 0 - true when gps quality checks are passing passed | +| reset_vel_to_gps | `bool` | | | 1 - true when the velocity states are reset to the gps measurement | +| reset_vel_to_flow | `bool` | | | 2 - true when the velocity states are reset using the optical flow measurement | +| reset_vel_to_vision | `bool` | | | 3 - true when the velocity states are reset to the vision system measurement | +| reset_vel_to_zero | `bool` | | | 4 - true when the velocity states are reset to zero | +| reset_pos_to_last_known | `bool` | | | 5 - true when the position states are reset to the last known position | +| reset_pos_to_gps | `bool` | | | 6 - true when the position states are reset to the gps measurement | +| reset_pos_to_vision | `bool` | | | 7 - true when the position states are reset to the vision system measurement | +| starting_gps_fusion | `bool` | | | 8 - true when the filter starts using gps measurements to correct the state estimates | +| starting_vision_pos_fusion | `bool` | | | 9 - true when the filter starts using vision system position measurements to correct the state estimates | +| starting_vision_vel_fusion | `bool` | | | 10 - true when the filter starts using vision system velocity measurements to correct the state estimates | +| starting_vision_yaw_fusion | `bool` | | | 11 - true when the filter starts using vision system yaw measurements to correct the state estimates | +| yaw_aligned_to_imu_gps | `bool` | | | 12 - true when the filter resets the yaw to an estimate derived from IMU and GPS data | +| reset_hgt_to_baro | `bool` | | | 13 - true when the vertical position state is reset to the baro measurement | +| reset_hgt_to_gps | `bool` | | | 14 - true when the vertical position state is reset to the gps measurement | +| reset_hgt_to_rng | `bool` | | | 15 - true when the vertical position state is reset to the rng measurement | +| reset_hgt_to_ev | `bool` | | | 16 - true when the vertical position state is reset to the ev measurement | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorEventFlags.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -25,5 +61,6 @@ bool reset_hgt_to_baro # 13 - true when the vertical position s bool reset_hgt_to_gps # 14 - true when the vertical position state is reset to the gps measurement bool reset_hgt_to_rng # 15 - true when the vertical position state is reset to the rng measurement bool reset_hgt_to_ev # 16 - true when the vertical position state is reset to the ev measurement - ``` + +::: diff --git a/docs/uk/msg_docs/EstimatorGpsStatus.md b/docs/uk/msg_docs/EstimatorGpsStatus.md index 7f85e94423..8a9ae0e57f 100644 --- a/docs/uk/msg_docs/EstimatorGpsStatus.md +++ b/docs/uk/msg_docs/EstimatorGpsStatus.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # EstimatorGpsStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorGpsStatus.msg) +**TOPICS:** estimator_gpsstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| checks_passed | `bool` | | | | +| check_fail_gps_fix | `bool` | | | 0 : insufficient fix type (no 3D solution) | +| check_fail_min_sat_count | `bool` | | | 1 : minimum required sat count fail | +| check_fail_max_pdop | `bool` | | | 2 : maximum allowed PDOP fail | +| check_fail_max_horz_err | `bool` | | | 3 : maximum allowed horizontal position error fail | +| check_fail_max_vert_err | `bool` | | | 4 : maximum allowed vertical position error fail | +| check_fail_max_spd_err | `bool` | | | 5 : maximum allowed speed error fail | +| check_fail_max_horz_drift | `bool` | | | 6 : maximum allowed horizontal position drift fail - requires stationary vehicle | +| check_fail_max_vert_drift | `bool` | | | 7 : maximum allowed vertical position drift fail - requires stationary vehicle | +| check_fail_max_horz_spd_err | `bool` | | | 8 : maximum allowed horizontal speed fail - requires stationary vehicle | +| check_fail_max_vert_spd_err | `bool` | | | 9 : maximum allowed vertical velocity discrepancy fail | +| check_fail_spoofed_gps | `bool` | | | 10 : GPS signal is spoofed | +| position_drift_rate_horizontal_m_s | `float32` | | | Horizontal position rate magnitude (m/s) | +| position_drift_rate_vertical_m_s | `float32` | | | Vertical position rate magnitude (m/s) | +| filtered_horizontal_speed_m_s | `float32` | | | Filtered horizontal velocity magnitude (m/s) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorGpsStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -23,5 +56,6 @@ bool check_fail_spoofed_gps # 10 : GPS signal is spoofed float32 position_drift_rate_horizontal_m_s # Horizontal position rate magnitude (m/s) float32 position_drift_rate_vertical_m_s # Vertical position rate magnitude (m/s) float32 filtered_horizontal_speed_m_s # Filtered horizontal velocity magnitude (m/s) - ``` + +::: diff --git a/docs/uk/msg_docs/EstimatorInnovations.md b/docs/uk/msg_docs/EstimatorInnovations.md index c08d5f92e1..2d477368a2 100644 --- a/docs/uk/msg_docs/EstimatorInnovations.md +++ b/docs/uk/msg_docs/EstimatorInnovations.md @@ -1,6 +1,44 @@ +--- +pageClass: is-wide-page +--- + # EstimatorInnovations (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorInnovations.msg) +**TOPICS:** estimator_innovations estimator_innovation_variances estimator_innovation_test_ratios + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| gps_hvel | `float32[2]` | | | horizontal GPS velocity innovation (m/sec) and innovation variance ((m/sec)\*\*2) | +| `float32` | | | vertical GPS velocity innovation (m/sec) and innovation variance ((m/sec)\*\*2) | | +| gps_hpos | `float32[2]` | | | horizontal GPS position innovation (m) and innovation variance (m\*\*2) | +| `float32` | | | vertical GPS position innovation (m) and innovation variance (m\*\*2) | | +| ev_hvel | `float32[2]` | | | horizontal external vision velocity innovation (m/sec) and innovation variance ((m/sec)\*\*2) | +| `float32` | | | vertical external vision velocity innovation (m/sec) and innovation variance ((m/sec)\*\*2) | | +| ev_hpos | `float32[2]` | | | horizontal external vision position innovation (m) and innovation variance (m\*\*2) | +| `float32` | | | vertical external vision position innovation (m) and innovation variance (m\*\*2) | | +| rng_vpos | `float32` | | | range sensor height innovation (m) and innovation variance (m\*\*2) | +| baro_vpos | `float32` | | | barometer height innovation (m) and innovation variance (m\*\*2) | +| aux_hvel | `float32[2]` | | | horizontal auxiliary velocity innovation from landing target measurement (m/sec) and innovation variance ((m/sec)\*\*2) | +| flow | `float32[2]` | | | flow innvoation (rad/sec) and innovation variance ((rad/sec)\*\*2) | +| heading | `float32` | | | heading innovation (rad) and innovation variance (rad\*\*2) | +| mag_field | `float32[3]` | | | earth magnetic field innovation (Gauss) and innovation variance (Gauss\*\*2) | +| gravity | `float32[3]` | | | gravity innovation from accelerometerr vector (m/s\*\*2) | +| drag | `float32[2]` | | | drag specific force innovation (m/sec\*\*2) and innovation variance ((m/sec)\*\*2) | +| airspeed | `float32` | | | airspeed innovation (m/sec) and innovation variance ((m/sec)\*\*2) | +| beta | `float32` | | | synthetic sideslip innovation (rad) and innovation variance (rad\*\*2) | +| hagl | `float32` | | | height of ground innovation (m) and innovation variance (m\*\*2) | +| hagl_rate | `float32` | | | height of ground rate innovation (m/s) and innovation variance ((m/s)\*\*2) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorInnovations.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -42,5 +80,6 @@ float32 hagl_rate # height of ground rate innovation (m/s) and innovation varian # the test ratio will be put in the first component of the vector. # TOPICS estimator_innovations estimator_innovation_variances estimator_innovation_test_ratios - ``` + +::: diff --git a/docs/uk/msg_docs/EstimatorSelectorStatus.md b/docs/uk/msg_docs/EstimatorSelectorStatus.md index 0bab0a4f48..0fb11005fd 100644 --- a/docs/uk/msg_docs/EstimatorSelectorStatus.md +++ b/docs/uk/msg_docs/EstimatorSelectorStatus.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # EstimatorSelectorStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorSelectorStatus.msg) +**TOPICS:** estimator_selectorstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| primary_instance | `uint8` | | | | +| instances_available | `uint8` | | | | +| instance_changed_count | `uint32` | | | | +| last_instance_change | `uint64` | | | | +| accel_device_id | `uint32` | | | | +| baro_device_id | `uint32` | | | | +| gyro_device_id | `uint32` | | | | +| mag_device_id | `uint32` | | | | +| combined_test_ratio | `float32[9]` | | | | +| relative_test_ratio | `float32[9]` | | | | +| healthy | `bool[9]` | | | | +| accumulated_gyro_error | `float32[4]` | | | | +| accumulated_accel_error | `float32[4]` | | | | +| gyro_fault_detected | `bool` | | | | +| accel_fault_detected | `bool` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorSelectorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -25,5 +57,6 @@ float32[4] accumulated_gyro_error float32[4] accumulated_accel_error bool gyro_fault_detected bool accel_fault_detected - ``` + +::: diff --git a/docs/uk/msg_docs/EstimatorSensorBias.md b/docs/uk/msg_docs/EstimatorSensorBias.md index 1c3be3cba0..d881564e12 100644 --- a/docs/uk/msg_docs/EstimatorSensorBias.md +++ b/docs/uk/msg_docs/EstimatorSensorBias.md @@ -1,9 +1,44 @@ +--- +pageClass: is-wide-page +--- + # EstimatorSensorBias (повідомлення UORB) -Показання датчиків та похибки в процесі роботи в одиницях СІ. Показання датчиків компенсуються для статичних зсувів, -похибки шкали, зсув під час роботи та тепловий зсув (якщо термокомпенсація увімкнена та доступна). +Показання датчиків та похибки в процесі роботи в одиницях СІ. Sensor readings are compensated for static offsets,. scale errors, in-run bias and thermal drift (if thermal compensation is enabled and available). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorSensorBias.msg) +**TOPICS:** estimator_sensorbias + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| gyro_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| gyro_bias | `float32[3]` | | | gyroscope in-run bias in body frame (rad/s) | +| gyro_bias_limit | `float32` | | | magnitude of maximum gyroscope in-run bias in body frame (rad/s) | +| gyro_bias_variance | `float32[3]` | | | | +| gyro_bias_valid | `bool` | | | | +| gyro_bias_stable | `bool` | | | true when the gyro bias estimate is stable enough to use for calibration | +| accel_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| accel_bias | `float32[3]` | | | accelerometer in-run bias in body frame (m/s^2) | +| accel_bias_limit | `float32` | | | magnitude of maximum accelerometer in-run bias in body frame (m/s^2) | +| accel_bias_variance | `float32[3]` | | | | +| accel_bias_valid | `bool` | | | | +| accel_bias_stable | `bool` | | | true when the accel bias estimate is stable enough to use for calibration | +| mag_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| mag_bias | `float32[3]` | | | magnetometer in-run bias in body frame (Gauss) | +| mag_bias_limit | `float32` | | | magnitude of maximum magnetometer in-run bias in body frame (Gauss) | +| mag_bias_variance | `float32[3]` | | | | +| mag_bias_valid | `bool` | | | | +| mag_bias_stable | `bool` | | | true when the mag bias estimate is stable enough to use for calibration | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorSensorBias.msg) + +:::details +Click here to see original file ```c # @@ -36,5 +71,6 @@ float32 mag_bias_limit # magnitude of maximum magnetometer in-run bias float32[3] mag_bias_variance bool mag_bias_valid bool mag_bias_stable # true when the mag bias estimate is stable enough to use for calibration - ``` + +::: diff --git a/docs/uk/msg_docs/EstimatorStates.md b/docs/uk/msg_docs/EstimatorStates.md index cea102c17b..aade307f41 100644 --- a/docs/uk/msg_docs/EstimatorStates.md +++ b/docs/uk/msg_docs/EstimatorStates.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # EstimatorStates (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStates.msg) +**TOPICS:** estimator_states + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ------------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| states | `float32[25]` | | | Internal filter states | +| n_states | `uint8` | | | Number of states effectively used | +| covariances | `float32[24]` | | | Diagonal Elements of Covariance Matrix | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStates.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +31,6 @@ float32[25] states # Internal filter states uint8 n_states # Number of states effectively used float32[24] covariances # Diagonal Elements of Covariance Matrix - ``` + +::: diff --git a/docs/uk/msg_docs/EstimatorStatus.md b/docs/uk/msg_docs/EstimatorStatus.md index 95b8227483..64c57e7f53 100644 --- a/docs/uk/msg_docs/EstimatorStatus.md +++ b/docs/uk/msg_docs/EstimatorStatus.md @@ -1,6 +1,109 @@ +--- +pageClass: is-wide-page +--- + # EstimatorStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatus.msg) +**TOPICS:** estimator_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| output_tracking_error | `float32[3]` | | | return a vector containing the output predictor angular, velocity and position tracking error magnitudes (rad), (m/s), (m) | +| gps_check_fail_flags | `uint16` | | | Bitmask to indicate status of GPS checks - see definition below | +| control_mode_flags | `uint64` | | | Bitmask to indicate EKF logic state | +| filter_fault_flags | `uint32` | | | Bitmask to indicate EKF internal faults | +| pos_horiz_accuracy | `float32` | | | 1-Sigma estimated horizontal position accuracy relative to the estimators origin (m) | +| pos_vert_accuracy | `float32` | | | 1-Sigma estimated vertical position accuracy relative to the estimators origin (m) | +| hdg_test_ratio | `float32` | | | low-pass filtered ratio of the largest heading innovation component to the innovation test limit | +| vel_test_ratio | `float32` | | | low-pass filtered ratio of the largest velocity innovation component to the innovation test limit | +| pos_test_ratio | `float32` | | | low-pass filtered ratio of the largest horizontal position innovation component to the innovation test limit | +| hgt_test_ratio | `float32` | | | low-pass filtered ratio of the vertical position innovation to the innovation test limit | +| tas_test_ratio | `float32` | | | low-pass filtered ratio of the true airspeed innovation to the innovation test limit | +| hagl_test_ratio | `float32` | | | low-pass filtered ratio of the height above ground innovation to the innovation test limit | +| beta_test_ratio | `float32` | | | low-pass filtered ratio of the synthetic sideslip innovation to the innovation test limit | +| solution_status_flags | `uint16` | | | Bitmask indicating which filter kinematic state outputs are valid for flight control use. | +| reset_count_vel_ne | `uint8` | | | number of horizontal position reset events (allow to wrap if count exceeds 255) | +| reset_count_vel_d | `uint8` | | | number of vertical velocity reset events (allow to wrap if count exceeds 255) | +| reset_count_pos_ne | `uint8` | | | number of horizontal position reset events (allow to wrap if count exceeds 255) | +| reset_count_pod_d | `uint8` | | | number of vertical position reset events (allow to wrap if count exceeds 255) | +| reset_count_quat | `uint8` | | | number of quaternion reset events (allow to wrap if count exceeds 255) | +| time_slip | `float32` | | | cumulative amount of time in seconds that the EKF inertial calculation has slipped relative to system time | +| pre_flt_fail_innov_heading | `bool` | | | | +| pre_flt_fail_innov_height | `bool` | | | | +| pre_flt_fail_innov_pos_horiz | `bool` | | | | +| pre_flt_fail_innov_vel_horiz | `bool` | | | | +| pre_flt_fail_innov_vel_vert | `bool` | | | | +| pre_flt_fail_mag_field_disturbed | `bool` | | | | +| accel_device_id | `uint32` | | | | +| gyro_device_id | `uint32` | | | | +| baro_device_id | `uint32` | | | | +| mag_device_id | `uint32` | | | | +| health_flags | `uint8` | | | Bitmask to indicate sensor health states (vel, pos, hgt) | +| timeout_flags | `uint8` | | | Bitmask to indicate timeout flags (vel, pos, hgt) | +| mag_inclination_deg | `float32` | | | | +| mag_inclination_ref_deg | `float32` | | | | +| mag_strength_gs | `float32` | | | | +| mag_strength_ref_gs | `float32` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------- | +| GPS_CHECK_FAIL_GPS_FIX | `uint8` | 0 | 0 : insufficient fix type (no 3D solution) | +| GPS_CHECK_FAIL_MIN_SAT_COUNT | `uint8` | 1 | 1 : minimum required sat count fail | +| GPS_CHECK_FAIL_MAX_PDOP | `uint8` | 2 | 2 : maximum allowed PDOP fail | +| GPS_CHECK_FAIL_MAX_HORZ_ERR | `uint8` | 3 | 3 : maximum allowed horizontal position error fail | +| GPS_CHECK_FAIL_MAX_VERT_ERR | `uint8` | 4 | 4 : maximum allowed vertical position error fail | +| GPS_CHECK_FAIL_MAX_SPD_ERR | `uint8` | 5 | 5 : maximum allowed speed error fail | +| GPS_CHECK_FAIL_MAX_HORZ_DRIFT | `uint8` | 6 | 6 : maximum allowed horizontal position drift fail - requires stationary vehicle | +| GPS_CHECK_FAIL_MAX_VERT_DRIFT | `uint8` | 7 | 7 : maximum allowed vertical position drift fail - requires stationary vehicle | +| GPS_CHECK_FAIL_MAX_HORZ_SPD_ERR | `uint8` | 8 | 8 : maximum allowed horizontal speed fail - requires stationary vehicle | +| GPS_CHECK_FAIL_MAX_VERT_SPD_ERR | `uint8` | 9 | 9 : maximum allowed vertical velocity discrepancy fail | +| GPS_CHECK_FAIL_SPOOFED | `uint8` | 10 | 10 : GPS signal is spoofed | +| GPS_CHECK_FAIL_JAMMED | `uint8` | 11 | 11 : GPS signal is jammed | +| CS_TILT_ALIGN | `uint8` | 0 | 0 - true if the filter tilt alignment is complete | +| CS_YAW_ALIGN | `uint8` | 1 | 1 - true if the filter yaw alignment is complete | +| CS_GNSS_POS | `uint8` | 2 | 2 - true if GNSS position measurements are being fused | +| CS_OPT_FLOW | `uint8` | 3 | 3 - true if optical flow measurements are being fused | +| CS_MAG_HDG | `uint8` | 4 | 4 - true if a simple magnetic yaw heading is being fused | +| CS_MAG_3D | `uint8` | 5 | 5 - true if 3-axis magnetometer measurement are being fused | +| CS_MAG_DEC | `uint8` | 6 | 6 - true if synthetic magnetic declination measurements are being fused | +| CS_IN_AIR | `uint8` | 7 | 7 - true when thought to be airborne | +| CS_WIND | `uint8` | 8 | 8 - true when wind velocity is being estimated | +| CS_BARO_HGT | `uint8` | 9 | 9 - true when baro data is being fused | +| CS_RNG_HGT | `uint8` | 10 | 10 - true when range finder data is being fused for height aiding | +| CS_GPS_HGT | `uint8` | 11 | 11 - true when GPS altitude is being fused | +| CS_EV_POS | `uint8` | 12 | 12 - true when local position data from external vision is being fused | +| CS_EV_YAW | `uint8` | 13 | 13 - true when yaw data from external vision measurements is being fused | +| CS_EV_HGT | `uint8` | 14 | 14 - true when height data from external vision measurements is being fused | +| CS_BETA | `uint8` | 15 | 15 - true when synthetic sideslip measurements are being fused | +| CS_MAG_FIELD | `uint8` | 16 | 16 - true when only the magnetic field states are updated by the magnetometer | +| CS_FIXED_WING | `uint8` | 17 | 17 - true when thought to be operating as a fixed wing vehicle with constrained sideslip | +| CS_MAG_FAULT | `uint8` | 18 | 18 - true when the magnetometer has been declared faulty and is no longer being used | +| CS_ASPD | `uint8` | 19 | 19 - true when airspeed measurements are being fused | +| CS_GND_EFFECT | `uint8` | 20 | 20 - true when when protection from ground effect induced static pressure rise is active | +| CS_RNG_STUCK | `uint8` | 21 | 21 - true when a stuck range finder sensor has been detected | +| CS_GPS_YAW | `uint8` | 22 | 22 - true when yaw (not ground course) data from a GPS receiver is being fused | +| CS_MAG_ALIGNED | `uint8` | 23 | 23 - true when the in-flight mag field alignment has been completed | +| CS_EV_VEL | `uint8` | 24 | 24 - true when local frame velocity data fusion from external vision measurements is intended | +| CS_SYNTHETIC_MAG_Z | `uint8` | 25 | 25 - true when we are using a synthesized measurement for the magnetometer Z component | +| CS_VEHICLE_AT_REST | `uint8` | 26 | 26 - true when the vehicle is at rest | +| CS_GPS_YAW_FAULT | `uint8` | 27 | 27 - true when the GNSS heading has been declared faulty and is no longer being used | +| CS_RNG_FAULT | `uint8` | 28 | 28 - true when the range finder has been declared faulty and is no longer being used | +| CS_GNSS_VEL | `uint8` | 44 | 44 - true if GNSS velocity measurement fusion is intended | +| CS_GNSS_FAULT | `uint8` | 45 | 45 - true if GNSS measurements have been declared faulty and are no longer used | +| CS_YAW_MANUAL | `uint8` | 46 | 46 - true if yaw has been set manually | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -130,5 +233,6 @@ float32 mag_inclination_deg float32 mag_inclination_ref_deg float32 mag_strength_gs float32 mag_strength_ref_gs - ``` + +::: diff --git a/docs/uk/msg_docs/EstimatorStatusFlags.md b/docs/uk/msg_docs/EstimatorStatusFlags.md index af4ee8c081..29d6a2cd0e 100644 --- a/docs/uk/msg_docs/EstimatorStatusFlags.md +++ b/docs/uk/msg_docs/EstimatorStatusFlags.md @@ -1,6 +1,85 @@ +--- +pageClass: is-wide-page +--- + # EstimatorStatusFlags (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatusFlags.msg) +**TOPICS:** estimator_statusflags + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| control_status_changes | `uint32` | | | number of filter control status (cs) changes | +| cs_tilt_align | `bool` | | | 0 - true if the filter tilt alignment is complete | +| cs_yaw_align | `bool` | | | 1 - true if the filter yaw alignment is complete | +| cs_gnss_pos | `bool` | | | 2 - true if GNSS position measurement fusion is intended | +| cs_opt_flow | `bool` | | | 3 - true if optical flow measurements fusion is intended | +| cs_mag_hdg | `bool` | | | 4 - true if a simple magnetic yaw heading fusion is intended | +| cs_mag_3d | `bool` | | | 5 - true if 3-axis magnetometer measurement fusion is intended | +| cs_mag_dec | `bool` | | | 6 - true if synthetic magnetic declination measurements fusion is intended | +| cs_in_air | `bool` | | | 7 - true when the vehicle is airborne | +| cs_wind | `bool` | | | 8 - true when wind velocity is being estimated | +| cs_baro_hgt | `bool` | | | 9 - true when baro data is being fused | +| cs_rng_hgt | `bool` | | | 10 - true when range finder data is being fused for height aiding | +| cs_gps_hgt | `bool` | | | 11 - true when GPS altitude is being fused | +| cs_ev_pos | `bool` | | | 12 - true when local position data fusion from external vision is intended | +| cs_ev_yaw | `bool` | | | 13 - true when yaw data from external vision measurements fusion is intended | +| cs_ev_hgt | `bool` | | | 14 - true when height data from external vision measurements is being fused | +| cs_fuse_beta | `bool` | | | 15 - true when synthetic sideslip measurements are being fused | +| cs_mag_field_disturbed | `bool` | | | 16 - true when the mag field does not match the expected strength | +| cs_fixed_wing | `bool` | | | 17 - true when the vehicle is operating as a fixed wing vehicle | +| cs_mag_fault | `bool` | | | 18 - true when the magnetometer has been declared faulty and is no longer being used | +| cs_fuse_aspd | `bool` | | | 19 - true when airspeed measurements are being fused | +| cs_gnd_effect | `bool` | | | 20 - true when protection from ground effect induced static pressure rise is active | +| cs_rng_stuck | `bool` | | | 21 - true when rng data wasn't ready for more than 10s and new rng values haven't changed enough | +| cs_gnss_yaw | `bool` | | | 22 - true when yaw (not ground course) data fusion from a GPS receiver is intended | +| cs_mag_aligned_in_flight | `bool` | | | 23 - true when the in-flight mag field alignment has been completed | +| cs_ev_vel | `bool` | | | 24 - true when local frame velocity data fusion from external vision measurements is intended | +| cs_synthetic_mag_z | `bool` | | | 25 - true when we are using a synthesized measurement for the magnetometer Z component | +| cs_vehicle_at_rest | `bool` | | | 26 - true when the vehicle is at rest | +| cs_gnss_yaw_fault | `bool` | | | 27 - true when the GNSS heading has been declared faulty and is no longer being used | +| cs_rng_fault | `bool` | | | 28 - true when the range finder has been declared faulty and is no longer being used | +| cs_inertial_dead_reckoning | `bool` | | | 29 - true if we are no longer fusing measurements that constrain horizontal velocity drift | +| cs_wind_dead_reckoning | `bool` | | | 30 - true if we are navigationg reliant on wind relative measurements | +| cs_rng_kin_consistent | `bool` | | | 31 - true when the range finder kinematic consistency check is passing | +| cs_fake_pos | `bool` | | | 32 - true when fake position measurements are being fused | +| cs_fake_hgt | `bool` | | | 33 - true when fake height measurements are being fused | +| cs_gravity_vector | `bool` | | | 34 - true when gravity vector measurements are being fused | +| cs_mag | `bool` | | | 35 - true if 3-axis magnetometer measurement fusion (mag states only) is intended | +| cs_ev_yaw_fault | `bool` | | | 36 - true when the EV heading has been declared faulty and is no longer being used | +| cs_mag_heading_consistent | `bool` | | | 37 - true when the heading obtained from mag data is declared consistent with the filter | +| cs_aux_gpos | `bool` | | | 38 - true if auxiliary global position measurement fusion is intended | +| cs_rng_terrain | `bool` | | | 39 - true if we are fusing range finder data for terrain | +| cs_opt_flow_terrain | `bool` | | | 40 - true if we are fusing flow data for terrain | +| cs_valid_fake_pos | `bool` | | | 41 - true if a valid constant position is being fused | +| cs_constant_pos | `bool` | | | 42 - true if the vehicle is at a constant position | +| cs_baro_fault | `bool` | | | 43 - true when the current baro has been declared faulty and is no longer being used | +| cs_gnss_vel | `bool` | | | 44 - true if GNSS velocity measurement fusion is intended | +| cs_gnss_fault | `bool` | | | 45 - true if GNSS true if GNSS measurements (lat, lon, vel) have been declared faulty | +| cs_yaw_manual | `bool` | | | 46 - true if yaw has been set manually | +| cs_gnss_hgt_fault | `bool` | | | 47 - true if GNSS true if GNSS measurements (alt) have been declared faulty | +| fault_status_changes | `uint32` | | | number of filter fault status (fs) changes | +| fs_bad_mag_x | `bool` | | | 0 - true if the fusion of the magnetometer X-axis has encountered a numerical error | +| fs_bad_mag_y | `bool` | | | 1 - true if the fusion of the magnetometer Y-axis has encountered a numerical error | +| fs_bad_mag_z | `bool` | | | 2 - true if the fusion of the magnetometer Z-axis has encountered a numerical error | +| fs_bad_hdg | `bool` | | | 3 - true if the fusion of the heading angle has encountered a numerical error | +| fs_bad_mag_decl | `bool` | | | 4 - true if the fusion of the magnetic declination has encountered a numerical error | +| fs_bad_airspeed | `bool` | | | 5 - true if fusion of the airspeed has encountered a numerical error | +| fs_bad_sideslip | `bool` | | | 6 - true if fusion of the synthetic sideslip constraint has encountered a numerical error | +| fs_bad_optflow_x | `bool` | | | 7 - true if fusion of the optical flow X axis has encountered a numerical error | +| fs_bad_optflow_y | `bool` | | | 8 - true if fusion of the optical flow Y axis has encountered a numerical error | +| fs_bad_acc_vertical | `bool` | | | 10 - true if bad vertical accelerometer data has been detected | +| fs_bad_acc_clipping | `bool` | | | 11 - true if delta velocity data contains clipping (asymmetric railing) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatusFlags.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -71,19 +150,6 @@ bool fs_bad_optflow_x # 7 - true if fusion of the optical flow X axis h bool fs_bad_optflow_y # 8 - true if fusion of the optical flow Y axis has encountered a numerical error bool fs_bad_acc_vertical # 10 - true if bad vertical accelerometer data has been detected bool fs_bad_acc_clipping # 11 - true if delta velocity data contains clipping (asymmetric railing) - - -# innovation test failures -uint32 innovation_fault_status_changes # number of innovation fault status (reject) changes -bool reject_hor_vel # 0 - true if horizontal velocity observations have been rejected -bool reject_ver_vel # 1 - true if vertical velocity observations have been rejected -bool reject_hor_pos # 2 - true if horizontal position observations have been rejected -bool reject_ver_pos # 3 - true if vertical position observations have been rejected -bool reject_yaw # 7 - true if the yaw observation has been rejected -bool reject_airspeed # 8 - true if the airspeed observation has been rejected -bool reject_sideslip # 9 - true if the synthetic sideslip observation has been rejected -bool reject_hagl # 10 - true if the height above ground observation has been rejected -bool reject_optflow_x # 11 - true if the X optical flow observation has been rejected -bool reject_optflow_y # 12 - true if the Y optical flow observation has been rejected - ``` + +::: diff --git a/docs/uk/msg_docs/Event.md b/docs/uk/msg_docs/Event.md index a8fe496cde..5be6cbba4a 100644 --- a/docs/uk/msg_docs/Event.md +++ b/docs/uk/msg_docs/Event.md @@ -1,8 +1,36 @@ +--- +pageClass: is-wide-page +--- + # Event (повідомлення UORB) -Інтерфейс подій +Events interface. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/Event.msg) +**TOPICS:** event + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| id | `uint32` | | | Event ID | +| event_sequence | `uint16` | | | Event sequence number | +| arguments | `uint8[25]` | | | (optional) arguments, depend on event id | +| log_levels | `uint8` | | | Log levels: 4 bits MSB: internal, 4 bits LSB: external | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/Event.msg) + +:::details +Click here to see original file ```c # Events interface @@ -17,5 +45,6 @@ uint8[25] arguments # (optional) arguments, depend on event id uint8 log_levels # Log levels: 4 bits MSB: internal, 4 bits LSB: external uint8 ORB_QUEUE_LENGTH = 16 - ``` + +::: diff --git a/docs/uk/msg_docs/EventV0.md b/docs/uk/msg_docs/EventV0.md index 19cfa7b70c..4bf5f84e9c 100644 --- a/docs/uk/msg_docs/EventV0.md +++ b/docs/uk/msg_docs/EventV0.md @@ -1,9 +1,36 @@ +--- +pageClass: is-wide-page +--- + # EventV0 (UORB message) -this message is required here in the msg_old folder because other msg are depending on it -Events interface +this message is required here in the msg_old folder because other msg are depending on it. Events interface. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/EventV0.msg) +**TOPICS:** eventv0 + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| id | `uint32` | | | Event ID | +| event_sequence | `uint16` | | | Event sequence number | +| arguments | `uint8[25]` | | | (optional) arguments, depend on event id | +| log_levels | `uint8` | | | Log levels: 4 bits MSB: internal, 4 bits LSB: external | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/EventV0.msg) + +:::details +Click here to see original file ```c # this message is required here in the msg_old folder because other msg are depending on it @@ -20,5 +47,6 @@ uint8[25] arguments # (optional) arguments, depend on event id uint8 log_levels # Log levels: 4 bits MSB: internal, 4 bits LSB: external uint8 ORB_QUEUE_LENGTH = 16 - ``` + +::: diff --git a/docs/uk/msg_docs/FailsafeFlags.md b/docs/uk/msg_docs/FailsafeFlags.md index 800450a3a2..de1c3eb243 100644 --- a/docs/uk/msg_docs/FailsafeFlags.md +++ b/docs/uk/msg_docs/FailsafeFlags.md @@ -1,3 +1,7 @@ +--- +pageClass: is-wide-page +--- + # FailsafeFlags (повідомлення UORB) Input flags for the failsafe state machine set by the arming & health checks. @@ -5,7 +9,61 @@ Input flags for the failsafe state machine set by the arming & health checks. Flags must be named such that false == no failure (e.g. \_invalid, \_unhealthy, \_lost) The flag comments are used as label for the failsafe state machine simulation -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FailsafeFlags.msg) +**TOPICS:** failsafe_flags + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mode_req_angular_velocity | `uint32` | | | | +| mode_req_attitude | `uint32` | | | | +| mode_req_local_alt | `uint32` | | | | +| mode_req_local_position | `uint32` | | | | +| mode_req_local_position_relaxed | `uint32` | | | | +| mode_req_global_position | `uint32` | | | | +| mode_req_global_position_relaxed | `uint32` | | | | +| mode_req_mission | `uint32` | | | | +| mode_req_offboard_signal | `uint32` | | | | +| mode_req_home_position | `uint32` | | | | +| mode_req_wind_and_flight_time_compliance | `uint32` | | | if set, mode cannot be entered if wind or flight time limit exceeded | +| mode_req_prevent_arming | `uint32` | | | if set, cannot arm while in this mode | +| mode_req_manual_control | `uint32` | | | | +| mode_req_other | `uint32` | | | other requirements, not covered above (for external modes) | +| angular_velocity_invalid | `bool` | | | Angular velocity invalid | +| attitude_invalid | `bool` | | | Attitude invalid | +| local_altitude_invalid | `bool` | | | Local altitude invalid | +| local_position_invalid | `bool` | | | Local position estimate invalid | +| local_position_invalid_relaxed | `bool` | | | Local position with reduced accuracy requirements invalid (e.g. flying with optical flow) | +| local_velocity_invalid | `bool` | | | Local velocity estimate invalid | +| global_position_invalid | `bool` | | | Global position estimate invalid | +| global_position_invalid_relaxed | `bool` | | | Global position estimate invalid with relaxed accuracy requirements | +| auto_mission_missing | `bool` | | | No mission available | +| offboard_control_signal_lost | `bool` | | | Offboard signal lost | +| home_position_invalid | `bool` | | | No home position available | +| manual_control_signal_lost | `bool` | | | Manual control (RC) signal lost | +| gcs_connection_lost | `bool` | | | GCS connection lost | +| battery_warning | `uint8` | | | Battery warning level (see BatteryStatus.msg) | +| battery_low_remaining_time | `bool` | | | Low battery based on remaining flight time | +| battery_unhealthy | `bool` | | | Battery unhealthy | +| geofence_breached | `bool` | | | Geofence breached (one or multiple) | +| mission_failure | `bool` | | | Mission failure | +| vtol_fixed_wing_system_failure | `bool` | | | vehicle in fixed-wing system failure failsafe mode (after quad-chute) | +| wind_limit_exceeded | `bool` | | | Wind limit exceeded | +| flight_time_limit_exceeded | `bool` | | | Maximum flight time exceeded | +| position_accuracy_low | `bool` | | | Position estimate has dropped below threshold, but is currently still declared valid | +| navigator_failure | `bool` | | | Navigator failed to execute a mode | +| fd_critical_failure | `bool` | | | Critical failure (attitude/altitude limit exceeded, or external ATS) | +| fd_esc_arming_failure | `bool` | | | ESC failed to arm | +| fd_imbalanced_prop | `bool` | | | Imbalanced propeller detected | +| fd_motor_failure | `bool` | | | Motor failure | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FailsafeFlags.msg) + +:::details +Click here to see original file ```c # Input flags for the failsafe state machine set by the arming & health checks. @@ -68,5 +126,6 @@ bool fd_critical_failure # Critical failure (attitude/altitude limi bool fd_esc_arming_failure # ESC failed to arm bool fd_imbalanced_prop # Imbalanced propeller detected bool fd_motor_failure # Motor failure - ``` + +::: diff --git a/docs/uk/msg_docs/FailureDetectorStatus.md b/docs/uk/msg_docs/FailureDetectorStatus.md index 111bd96b78..176312bd59 100644 --- a/docs/uk/msg_docs/FailureDetectorStatus.md +++ b/docs/uk/msg_docs/FailureDetectorStatus.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # FailureDetectorStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FailureDetectorStatus.msg) +**TOPICS:** failure_detectorstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| fd_roll | `bool` | | | | +| fd_pitch | `bool` | | | | +| fd_alt | `bool` | | | | +| fd_ext | `bool` | | | | +| fd_arm_escs | `bool` | | | | +| fd_battery | `bool` | | | | +| fd_imbalanced_prop | `bool` | | | | +| fd_motor | `bool` | | | | +| imbalanced_prop_metric | `float32` | | | Metric of the imbalanced propeller check (low-passed) | +| motor_failure_mask | `uint16` | | | Bit-mask with motor indices, indicating critical motor failures | +| motor_stop_mask | `uint16` | | | Bitmaks of motors stopped by failure injection | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FailureDetectorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +46,6 @@ bool fd_motor float32 imbalanced_prop_metric # Metric of the imbalanced propeller check (low-passed) uint16 motor_failure_mask # Bit-mask with motor indices, indicating critical motor failures uint16 motor_stop_mask # Bitmaks of motors stopped by failure injection - ``` + +::: diff --git a/docs/uk/msg_docs/FigureEightStatus.md b/docs/uk/msg_docs/FigureEightStatus.md index f8fdd32ff2..9ac9b200f7 100644 --- a/docs/uk/msg_docs/FigureEightStatus.md +++ b/docs/uk/msg_docs/FigureEightStatus.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # FigureEightStatus (повідомлення UORB) -[вихідний файл](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FigureEightStatus.msg) +**TOPICS:** figure_eightstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| major_radius | `float32` | | | Major axis radius of the figure eight [m]. Positive values orbit clockwise, negative values orbit counter-clockwise. | +| minor_radius | `float32` | | | Minor axis radius of the figure eight [m]. | +| orientation | `float32` | | | Orientation of the major axis of the figure eight [rad]. | +| frame | `uint8` | | | The coordinate system of the fields: x, y, z. | +| x | `int32` | | | X coordinate of center point. Coordinate system depends on frame field: local = x position in meters _ 1e4, global = latitude in degrees _ 1e7. | +| y | `int32` | | | Y coordinate of center point. Coordinate system depends on frame field: local = y position in meters _ 1e4, global = latitude in degrees _ 1e7. | +| z | `float32` | | | Altitude of center point. Coordinate system depends on frame field. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FigureEightStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +35,6 @@ uint8 frame # The coordinate system of the fields: x, y, z. int32 x # X coordinate of center point. Coordinate system depends on frame field: local = x position in meters * 1e4, global = latitude in degrees * 1e7. int32 y # Y coordinate of center point. Coordinate system depends on frame field: local = y position in meters * 1e4, global = latitude in degrees * 1e7. float32 z # Altitude of center point. Coordinate system depends on frame field. - ``` + +::: diff --git a/docs/uk/msg_docs/FixedWingLateralGuidanceStatus.md b/docs/uk/msg_docs/FixedWingLateralGuidanceStatus.md index 02dc50b410..1cef22460f 100644 --- a/docs/uk/msg_docs/FixedWingLateralGuidanceStatus.md +++ b/docs/uk/msg_docs/FixedWingLateralGuidanceStatus.md @@ -1,9 +1,33 @@ +--- +pageClass: is-wide-page +--- + # FixedWingLateralGuidanceStatus (UORB message) -Fixed Wing Lateral Guidance Status message -Published by fw_pos_control module to report the resultant lateral setpoints and NPFG debug outputs +Fixed Wing Lateral Guidance Status message. Published by fw_pos_control module to report the resultant lateral setpoints and NPFG debug outputs. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingLateralGuidanceStatus.msg) +**TOPICS:** fixed_winglateral_guidancestatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| course_setpoint | `float32` | rad | [-pi : pi] | Desired direction of travel over ground w.r.t (true) North. Set by guidance law | +| lateral_acceleration_ff | `float32` | FRD | | lateral acceleration demand only for maintaining curvature | +| bearing_feas | `float32` | | [0 : 1] | bearing feasibility | +| bearing_feas_on_track | `float32` | | [0 : 1] | on-track bearing feasibility | +| signed_track_error | `float32` | m | | signed track error | +| track_error_bound | `float32` | m | | track error bound | +| adapted_period | `float32` | s | | adapted period (if auto-tuning enabled) | +| wind_est_valid | `uint8` | boolean | | true = wind estimate is valid and/or being used by controller (also indicates if wind estimate usage is disabled despite being valid) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingLateralGuidanceStatus.msg) + +:::details +Click here to see original file ```c # Fixed Wing Lateral Guidance Status message @@ -19,5 +43,6 @@ float32 signed_track_error # [m] signed track error float32 track_error_bound # [m] track error bound float32 adapted_period # [s] adapted period (if auto-tuning enabled) uint8 wind_est_valid # [boolean] true = wind estimate is valid and/or being used by controller (also indicates if wind estimate usage is disabled despite being valid) - ``` + +::: diff --git a/docs/uk/msg_docs/FixedWingLateralSetpoint.md b/docs/uk/msg_docs/FixedWingLateralSetpoint.md index 153167bb62..b4c3f069dd 100644 --- a/docs/uk/msg_docs/FixedWingLateralSetpoint.md +++ b/docs/uk/msg_docs/FixedWingLateralSetpoint.md @@ -1,10 +1,34 @@ +--- +pageClass: is-wide-page +--- + # FixedWingLateralSetpoint (UORB message) -Fixed Wing Lateral Setpoint message -Used by the fw_lateral_longitudinal_control module -At least one of course, airspeed_direction, or lateral_acceleration must be finite. +Fixed Wing Lateral Setpoint message. Used by the fw_lateral_longitudinal_control module. At least one of course, airspeed_direction, or lateral_acceleration must be finite. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/FixedWingLateralSetpoint.msg) +**TOPICS:** fixed_winglateral_setpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| course | `float32` | rad | [-pi : pi] | Desired direction of travel over ground w.r.t (true) North. NAN if not controlled directly. | +| airspeed_direction | `float32` | rad | [-pi : pi] | Desired horizontal angle of airspeed vector w.r.t. (true) North. Same as vehicle heading if in the absence of sideslip. NAN if not controlled directly, takes precedence over course if finite. | +| lateral_acceleration | `float32` | FRD | | Lateral acceleration setpoint. NAN if not controlled directly, used as feedforward if either course setpoint or airspeed_direction is finite. | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/FixedWingLateralSetpoint.msg) + +:::details +Click here to see original file ```c # Fixed Wing Lateral Setpoint message @@ -18,5 +42,6 @@ uint64 timestamp # time since system start (microseconds) float32 course # [rad] [@range -pi, pi] Desired direction of travel over ground w.r.t (true) North. NAN if not controlled directly. float32 airspeed_direction # [rad] [@range -pi, pi] Desired horizontal angle of airspeed vector w.r.t. (true) North. Same as vehicle heading if in the absence of sideslip. NAN if not controlled directly, takes precedence over course if finite. float32 lateral_acceleration # [m/s^2] [FRD] Lateral acceleration setpoint. NAN if not controlled directly, used as feedforward if either course setpoint or airspeed_direction is finite. - ``` + +::: diff --git a/docs/uk/msg_docs/FixedWingLateralStatus.md b/docs/uk/msg_docs/FixedWingLateralStatus.md index 9214d1e9e0..694d0b58f3 100644 --- a/docs/uk/msg_docs/FixedWingLateralStatus.md +++ b/docs/uk/msg_docs/FixedWingLateralStatus.md @@ -1,9 +1,27 @@ +--- +pageClass: is-wide-page +--- + # FixedWingLateralStatus (UORB message) -Fixed Wing Lateral Status message -Published by the fw_lateral_longitudinal_control module to report the resultant lateral setpoint +Fixed Wing Lateral Status message. Published by the fw_lateral_longitudinal_control module to report the resultant lateral setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingLateralStatus.msg) +**TOPICS:** fixed_winglateral_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lateral_acceleration_setpoint | `float32` | FRD | | resultant lateral acceleration setpoint | +| can_run_factor | `float32` | norm | [0 : 1] | estimate of certainty of the correct functionality of the npfg roll setpoint | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingLateralStatus.msg) + +:::details +Click here to see original file ```c # Fixed Wing Lateral Status message @@ -13,5 +31,6 @@ uint64 timestamp # time since system start (microseconds float32 lateral_acceleration_setpoint # [m/s^2] [FRD] resultant lateral acceleration setpoint float32 can_run_factor # [norm] [@range 0, 1] estimate of certainty of the correct functionality of the npfg roll setpoint - ``` + +::: diff --git a/docs/uk/msg_docs/FixedWingLongitudinalSetpoint.md b/docs/uk/msg_docs/FixedWingLongitudinalSetpoint.md index 6b8fb29e5b..6f9514b496 100644 --- a/docs/uk/msg_docs/FixedWingLongitudinalSetpoint.md +++ b/docs/uk/msg_docs/FixedWingLongitudinalSetpoint.md @@ -1,11 +1,36 @@ +--- +pageClass: is-wide-page +--- + # FixedWingLongitudinalSetpoint (UORB message) -Fixed Wing Longitudinal Setpoint message -Used by the fw_lateral_longitudinal_control module -If pitch_direct and throttle_direct are not both finite, then the controller relies on altitude/height_rate and equivalent_airspeed to control vertical motion. -If both altitude and height_rate are NAN, the controller maintains the current altitude. +Fixed Wing Longitudinal Setpoint message. Used by the fw_lateral_longitudinal_control module. If pitch_direct and throttle_direct are not both finite, then the controller relies on altitude/height_rate and equivalent_airspeed to control vertical motion. If both altitude and height_rate are NAN, the controller maintains the current altitude. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/FixedWingLongitudinalSetpoint.msg) +**TOPICS:** fixed_winglongitudinal_setpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| altitude | `float32` | m | | Altitude setpoint AMSL, not controlled directly if NAN or if height_rate is finite | +| height_rate | `float32` | ENU | | Scalar height rate setpoint. NAN if not controlled directly | +| equivalent_airspeed | `float32` | m/s | [0 : inf] | Scalar equivalent airspeed setpoint. NAN if system default should be used | +| pitch_direct | `float32` | FRD | [-pi : pi] | NAN if not controlled, overrides total energy controller | +| throttle_direct | `float32` | norm | [0 : 1] | NAN if not controlled, overrides total energy controller | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/FixedWingLongitudinalSetpoint.msg) + +:::details +Click here to see original file ```c # Fixed Wing Longitudinal Setpoint message @@ -22,5 +47,6 @@ float32 height_rate # [m/s] [ENU] Scalar height rate setpoint. NAN if not con float32 equivalent_airspeed # [m/s] [@range 0, inf] Scalar equivalent airspeed setpoint. NAN if system default should be used float32 pitch_direct # [rad] [@range -pi, pi] [FRD] NAN if not controlled, overrides total energy controller float32 throttle_direct # [norm] [@range 0,1] NAN if not controlled, overrides total energy controller - ``` + +::: diff --git a/docs/uk/msg_docs/FixedWingRunwayControl.md b/docs/uk/msg_docs/FixedWingRunwayControl.md index 9e9f5ff428..3843f72858 100644 --- a/docs/uk/msg_docs/FixedWingRunwayControl.md +++ b/docs/uk/msg_docs/FixedWingRunwayControl.md @@ -1,19 +1,54 @@ +--- +pageClass: is-wide-page +--- + # FixedWingRunwayControl (UORB message) -Auxiliary control fields for fixed-wing runway takeoff/landing +Auxiliary control fields for fixed-wing runway takeoff/landing. -Passes information from the FixedWingModeManager to the FixedWingAttitudeController +**TOPICS:** fixed_wingrunway_control -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingRunwayControl.msg) +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | time since system start | +| runway_takeoff_state | `uint8` | | | Current state of runway takeoff state machine | +| wheel_steering_enabled | `bool` | | | Flag that enables the wheel steering. | +| wheel_steering_nudging_rate | `float32` | FRD | [-1 : 1] | Manual wheel nudging, added to controller output. NAN is interpreted as 0. | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------ | ------- | -------- | -------------------------------------------------------------------------------- | +| STATE_THROTTLE_RAMP | `uint8` | 0 | ramping up throttle | +| STATE_CLAMPED_TO_RUNWAY | `uint8` | 1 | clamped to runway, controlling yaw directly (wheel or rudder) | +| STATE_CLIMBOUT | `uint8` | 2 | climbout to safe height before navigation | +| STATE_FLYING | `uint8` | 3 | navigate freely | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingRunwayControl.msg) + +:::details +Click here to see original file ```c # Auxiliary control fields for fixed-wing runway takeoff/landing -# Passes information from the FixedWingModeManager to the FixedWingAttitudeController +# Passes information from the FixedWingModeManager to the FixedWingAttitudeController (wheel control) and FixedWingLandDetector (takeoff state) uint64 timestamp # [us] time since system start +uint8 STATE_THROTTLE_RAMP = 0 # ramping up throttle +uint8 STATE_CLAMPED_TO_RUNWAY = 1 # clamped to runway, controlling yaw directly (wheel or rudder) +uint8 STATE_CLIMBOUT = 2 # climbout to safe height before navigation +uint8 STATE_FLYING = 3 # navigate freely + +uint8 runway_takeoff_state # Current state of runway takeoff state machine + bool wheel_steering_enabled # Flag that enables the wheel steering. float32 wheel_steering_nudging_rate # [norm] [@range -1, 1] [FRD] Manual wheel nudging, added to controller output. NAN is interpreted as 0. - ``` + +::: diff --git a/docs/uk/msg_docs/FlightPhaseEstimation.md b/docs/uk/msg_docs/FlightPhaseEstimation.md index 4bba29c6e4..2a898f54b9 100644 --- a/docs/uk/msg_docs/FlightPhaseEstimation.md +++ b/docs/uk/msg_docs/FlightPhaseEstimation.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # FlightPhaseEstimation (повідомлення UORB) -[вихідний файл](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FlightPhaseEstimation.msg) +**TOPICS:** flight_phaseestimation + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| flight_phase | `uint8` | | | Estimate of current flight phase | + +## Constants + +| Назва | Тип | Значення | Опис | +| --------------------------------------------------------------------------------------------------- | ------- | -------- | ------------------------------- | +| FLIGHT_PHASE_UNKNOWN | `uint8` | 0 | vehicle flight phase is unknown | +| FLIGHT_PHASE_LEVEL | `uint8` | 1 | Vehicle is in level flight | +| FLIGHT_PHASE_DESCEND | `uint8` | 2 | vehicle is in descend | +| FLIGHT_PHASE_CLIMB | `uint8` | 3 | vehicle is climbing | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FlightPhaseEstimation.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +38,6 @@ uint8 FLIGHT_PHASE_UNKNOWN = 0 # vehicle flight phase is unknown uint8 FLIGHT_PHASE_LEVEL = 1 # Vehicle is in level flight uint8 FLIGHT_PHASE_DESCEND = 2 # vehicle is in descend uint8 FLIGHT_PHASE_CLIMB = 3 # vehicle is climbing - ``` + +::: diff --git a/docs/uk/msg_docs/FollowTarget.md b/docs/uk/msg_docs/FollowTarget.md index ac833b250c..55c848731d 100644 --- a/docs/uk/msg_docs/FollowTarget.md +++ b/docs/uk/msg_docs/FollowTarget.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # FollowTarget (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTarget.msg) +**TOPICS:** follow_target + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lat | `float64` | | | target position (deg \* 1e7) | +| lon | `float64` | | | target position (deg \* 1e7) | +| alt | `float32` | | | target position | +| vy | `float32` | | | target vel in y | +| vx | `float32` | | | target vel in x | +| vz | `float32` | | | target vel in z | +| est_cap | `uint8` | | | target reporting capabilities | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTarget.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +38,6 @@ float32 vx # target vel in x float32 vz # target vel in z uint8 est_cap # target reporting capabilities - ``` + +::: diff --git a/docs/uk/msg_docs/FollowTargetEstimator.md b/docs/uk/msg_docs/FollowTargetEstimator.md index 00d5760b36..df4a781847 100644 --- a/docs/uk/msg_docs/FollowTargetEstimator.md +++ b/docs/uk/msg_docs/FollowTargetEstimator.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # FollowTargetEstimator (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTargetEstimator.msg) +**TOPICS:** follow_targetestimator + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| last_filter_reset_timestamp | `uint64` | | | time of last filter reset (microseconds) | +| valid | `bool` | | | True if estimator states are okay to be used | +| stale | `bool` | | | True if estimator stopped receiving follow_target messages for some time. The estimate can still be valid, though it might be inaccurate. | +| lat_est | `float64` | | | Estimated target latitude | +| lon_est | `float64` | | | Estimated target longitude | +| alt_est | `float32` | | | Estimated target altitude | +| pos_est | `float32[3]` | | | Estimated target NED position (m) | +| vel_est | `float32[3]` | | | Estimated target NED velocity (m/s) | +| acc_est | `float32[3]` | | | Estimated target NED acceleration (m^2/s) | +| prediction_count | `uint64` | | | | +| fusion_count | `uint64` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTargetEstimator.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -19,5 +47,6 @@ float32[3] acc_est # Estimated target NED acceleration (m^2/s) uint64 prediction_count uint64 fusion_count - ``` + +::: diff --git a/docs/uk/msg_docs/FollowTargetStatus.md b/docs/uk/msg_docs/FollowTargetStatus.md index ea7f92f7b7..d2820f5c90 100644 --- a/docs/uk/msg_docs/FollowTargetStatus.md +++ b/docs/uk/msg_docs/FollowTargetStatus.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # FollowTargetStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTargetStatus.msg) +**TOPICS:** follow_targetstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | microseconds | | time since system start | +| tracked_target_course | `float32` | rad | | Tracked target course in NED local frame (North is course zero) | +| follow_angle | `float32` | rad | | Current follow angle setting | +| orbit_angle_setpoint | `float32` | rad | | Current orbit angle setpoint from the smooth trajectory generator | +| angular_rate_setpoint | `float32` | rad/s | | Angular rate commanded from Jerk-limited Orbit Angle trajectory for Orbit Angle | +| desired_position_raw | `float32[3]` | m | | Raw 'idealistic' desired drone position if a drone could teleport from place to places | +| in_emergency_ascent | `bool` | bool | | True when doing emergency ascent (when distance to ground is below safety altitude) | +| gimbal_pitch | `float32` | rad | | Gimbal pitch commanded to track target in the center of the frame | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTargetStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # [microseconds] time since system start @@ -15,5 +39,6 @@ float32[3] desired_position_raw # [m] Raw 'idealistic' desired drone position bool in_emergency_ascent # [bool] True when doing emergency ascent (when distance to ground is below safety altitude) float32 gimbal_pitch # [rad] Gimbal pitch commanded to track target in the center of the frame - ``` + +::: diff --git a/docs/uk/msg_docs/FuelTankStatus.md b/docs/uk/msg_docs/FuelTankStatus.md index f36eaff6dc..3908246f79 100644 --- a/docs/uk/msg_docs/FuelTankStatus.md +++ b/docs/uk/msg_docs/FuelTankStatus.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # FuelTankStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FuelTankStatus.msg) +**TOPICS:** fuel_tankstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| maximum_fuel_capacity | `float32` | | | maximum fuel capacity. Must always be provided, either from the driver or a parameter | +| consumed_fuel | `float32` | | | consumed fuel, NaN if not measured. Should not be inferred from the max fuel capacity | +| fuel_consumption_rate | `float32` | | | fuel consumption rate, NaN if not measured | +| percent_remaining | `uint8` | | | percentage of remaining fuel, UINT8_MAX if not provided | +| remaining_fuel | `float32` | | | remaining fuel, NaN if not measured. Should not be inferred from the max fuel capacity | +| fuel_tank_id | `uint8` | | | identifier for the fuel tank. Must match ID of other messages for same fuel system. 0 by default when only a single tank exists | +| fuel_type | `uint32` | | | type of fuel based on MAV_FUEL_TYPE enum. Set to MAV_FUEL_TYPE_UNKNOWN if unknown or it does not fit the provided types | +| temperature | `float32` | | | fuel temperature in Kelvin, NaN if not measured | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| MAV_FUEL_TYPE_UNKNOWN | `uint8` | 0 | fuel type not specified. Fuel levels are normalized (i.e., maximum is 1, and other levels are relative to 1). | +| MAV_FUEL_TYPE_LIQUID | `uint8` | 1 | represents generic liquid fuels, such as gasoline or diesel. Fuel levels are measured in millilitres (ml), and flow rates in millilitres per second (ml/s). | +| MAV_FUEL_TYPE_GAS | `uint8` | 2 | represents a gas fuel, such as hydrogen, methane, or propane. Fuel levels are in kilo-Pascal (kPa), and flow rates are in milliliters per second (ml/s). | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FuelTankStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -20,5 +53,6 @@ uint8 MAV_FUEL_TYPE_LIQUID = 1 # represents generic liquid fuels, such as gasol uint8 MAV_FUEL_TYPE_GAS = 2 # represents a gas fuel, such as hydrogen, methane, or propane. Fuel levels are in kilo-Pascal (kPa), and flow rates are in milliliters per second (ml/s). float32 temperature # fuel temperature in Kelvin, NaN if not measured - ``` + +::: diff --git a/docs/uk/msg_docs/GainCompression.md b/docs/uk/msg_docs/GainCompression.md index e26c1e8fcc..c128d6f3cc 100644 --- a/docs/uk/msg_docs/GainCompression.md +++ b/docs/uk/msg_docs/GainCompression.md @@ -1,6 +1,26 @@ +--- +pageClass: is-wide-page +--- + # GainCompression (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GainCompression.msg) +**TOPICS:** gain_compression + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------- | +| timestamp | `uint64` | | | Time since system start (microseconds) | +| compression_gains | `float32[3]` | [FRD] | [0 : 1] | Multiplicative gain to modify the output of the controller per axis | +| spectral_damper_hpf | `float32[3]` | [FRD] | | Squared output of spectral damper high-pass filter | +| spectral_damper_out | `float32[3]` | [FRD] | | Spectral damper output squared | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GainCompression.msg) + +:::details +Click here to see original file ```c uint64 timestamp # Time since system start (microseconds) @@ -8,5 +28,6 @@ uint64 timestamp # Time since system start (microseconds) 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 # [-] [@frame FRD] Squared output of spectral damper high-pass filter float32[3] spectral_damper_out # [-] [@frame FRD] Spectral damper output squared - ``` + +::: diff --git a/docs/uk/msg_docs/GeneratorStatus.md b/docs/uk/msg_docs/GeneratorStatus.md index d767d91b20..3a0562b865 100644 --- a/docs/uk/msg_docs/GeneratorStatus.md +++ b/docs/uk/msg_docs/GeneratorStatus.md @@ -1,6 +1,62 @@ +--- +pageClass: is-wide-page +--- + # GeneratorStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeneratorStatus.msg) +**TOPICS:** generator_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| status | `uint64` | | | Status flags | +| battery_current | `float32` | A | | Current into/out of battery. Positive for out. Negative for in. NaN: field not provided. | +| load_current | `float32` | A | | Current going to the UAV. If battery current not available this is the DC current from the generator. Positive for out. Negative for in. NaN: field not provided | +| power_generated | `float32` | W | | The power being generated. NaN: field not provided | +| bus_voltage | `float32` | V | | Voltage of the bus seen at the generator, or battery bus if battery bus is controlled by generator and at a different voltage to main bus. | +| bat_current_setpoint | `float32` | A | | The target battery current. Positive for out. Negative for in. NaN: field not provided | +| runtime | `uint32` | s | | Seconds this generator has run since it was rebooted. UINT32_MAX: field not provided. | +| time_until_maintenance | `int32` | s | | Seconds until this generator requires maintenance. A negative value indicates maintenance is past-due. INT32_MAX: field not provided. | +| generator_speed | `uint16` | rpm | | Speed of electrical generator or alternator. UINT16_MAX: field not provided. | +| rectifier_temperature | `int16` | degC | | The temperature of the rectifier or power converter. INT16_MAX: field not provided. | +| generator_temperature | `int16` | degC | | The temperature of the mechanical motor, fuel cell core or generator. INT16_MAX: field not provided. | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| STATUS_FLAG_OFF | `uint64` | 1 | Generator is off. | +| STATUS_FLAG_READY | `uint64` | 2 | Generator is ready to start generating power. | +| STATUS_FLAG_GENERATING | `uint64` | 4 | Generator is generating power. | +| STATUS_FLAG_CHARGING | `uint64` | 8 | Generator is charging the batteries (generating enough power to charge and provide the load). | +| STATUS_FLAG_REDUCED_POWER | `uint64` | 16 | Generator is operating at a reduced maximum power. | +| STATUS_FLAG_MAXPOWER | `uint64` | 32 | Generator is providing the maximum output. | +| STATUS_FLAG_OVERTEMP_WARNING | `uint64` | 64 | Generator is near the maximum operating temperature, cooling is insufficient. | +| STATUS_FLAG_OVERTEMP_FAULT | `uint64` | 128 | Generator hit the maximum operating temperature and shutdown. | +| STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING | `uint64` | 256 | Power electronics are near the maximum operating temperature, cooling is insufficient. | +| STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT | `uint64` | 512 | Power electronics hit the maximum operating temperature and shutdown. | +| STATUS_FLAG_ELECTRONICS_FAULT | `uint64` | 1024 | Power electronics experienced a fault and shutdown. | +| STATUS_FLAG_POWERSOURCE_FAULT | `uint64` | 2048 | The power source supplying the generator failed e.g. mechanical generator stopped, tether is no longer providing power, solar cell is in shade, hydrogen reaction no longer happening. | +| STATUS_FLAG_COMMUNICATION_WARNING | `uint64` | 4096 | Generator controller having communication problems. | +| STATUS_FLAG_COOLING_WARNING | `uint64` | 8192 | Power electronic or generator cooling system error. | +| STATUS_FLAG_POWER_RAIL_FAULT | `uint64` | 16384 | Generator controller power rail experienced a fault. | +| STATUS_FLAG_OVERCURRENT_FAULT | `uint64` | 32768 | Generator controller exceeded the overcurrent threshold and shutdown to prevent damage. | +| STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT | `uint64` | 65536 | Generator controller detected a high current going into the batteries and shutdown to prevent battery damage. | +| STATUS_FLAG_OVERVOLTAGE_FAULT | `uint64` | 131072 | Generator controller exceeded it's overvoltage threshold and shutdown to prevent it exceeding the voltage rating. | +| STATUS_FLAG_BATTERY_UNDERVOLT_FAULT | `uint64` | 262144 | Batteries are under voltage (generator will not start). | +| STATUS_FLAG_START_INHIBITED | `uint64` | 524288 | Generator start is inhibited by e.g. a safety switch. | +| STATUS_FLAG_MAINTENANCE_REQUIRED | `uint64` | 1048576 | Generator requires maintenance. | +| STATUS_FLAG_WARMING_UP | `uint64` | 2097152 | Generator is not ready to generate yet. | +| STATUS_FLAG_IDLE | `uint64` | 4194304 | Generator is idle. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeneratorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -47,5 +103,6 @@ uint16 generator_speed # [rpm] Speed of electrical generator or alte int16 rectifier_temperature # [degC] The temperature of the rectifier or power converter. INT16_MAX: field not provided. int16 generator_temperature # [degC] The temperature of the mechanical motor, fuel cell core or generator. INT16_MAX: field not provided. - ``` + +::: diff --git a/docs/uk/msg_docs/GeofenceResult.md b/docs/uk/msg_docs/GeofenceResult.md index e5993e5c55..8c27e83dee 100644 --- a/docs/uk/msg_docs/GeofenceResult.md +++ b/docs/uk/msg_docs/GeofenceResult.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # GeofenceResult (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeofenceResult.msg) +**TOPICS:** geofence_result + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| geofence_max_dist_triggered | `bool` | | | true the check for max distance from Home is triggered | +| geofence_max_alt_triggered | `bool` | | | true the check for max altitude above Home is triggered | +| geofence_custom_fence_triggered | `bool` | | | true the check for custom inclusion/exclusion geofence(s) is triggered | +| geofence_action | `uint8` | | | action to take when the geofence is breached | + +## Constants + +\| Name | Type | Value | Description | +\| ------------------------------------------------------- | ------- | ----- | ------------------------------- | ------ | +\| GF_ACTION_NONE | `uint8` | 0 | no action on geofence violation | +\| GF_ACTION_WARN | `uint8` | 1 | critical mavlink message | +\| GF_ACTION_LOITER | `uint8` | 2 | switch to AUTO | LOITER | +\| GF_ACTION_RTL | `uint8` | 3 | switch to AUTO | RTL | +\| GF_ACTION_TERMINATE | `uint8` | 4 | flight termination | +\| GF_ACTION_LAND | `uint8` | 5 | switch to AUTO | LAND | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeofenceResult.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -16,5 +48,6 @@ bool geofence_max_alt_triggered # true the check for max altitude above Home is bool geofence_custom_fence_triggered # true the check for custom inclusion/exclusion geofence(s) is triggered uint8 geofence_action # action to take when the geofence is breached - ``` + +::: diff --git a/docs/uk/msg_docs/GeofenceStatus.md b/docs/uk/msg_docs/GeofenceStatus.md index 1189efcccd..8d28fc8ee5 100644 --- a/docs/uk/msg_docs/GeofenceStatus.md +++ b/docs/uk/msg_docs/GeofenceStatus.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # GeofenceStatus (повідомлення UORB) -[вихідний файл](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeofenceStatus.msg) +**TOPICS:** geofence_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| geofence_id | `uint32` | | | loaded geofence id | +| status | `uint8` | | | Current geofence status | + +## Constants + +| Назва | Тип | Значення | Опис | +| --------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| GF_STATUS_LOADING | `uint8` | 0 | | +| GF_STATUS_READY | `uint8` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeofenceStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +36,6 @@ uint8 status # Current geofence status uint8 GF_STATUS_LOADING = 0 uint8 GF_STATUS_READY = 1 - ``` + +::: diff --git a/docs/uk/msg_docs/GimbalControls.md b/docs/uk/msg_docs/GimbalControls.md index 5c2d18dbec..693d3a3c83 100644 --- a/docs/uk/msg_docs/GimbalControls.md +++ b/docs/uk/msg_docs/GimbalControls.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # GimbalControls (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalControls.msg) +**TOPICS:** gimbal_controls + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp the data this control response is based on was sampled | +| control | `float32[3]` | | | Normalized output. 1 means maximum positive position. -1 maximum negative position. 0 means no deflection. NaN maps to disarmed. | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------ | ------- | -------- | ---- | +| INDEX_ROLL | `uint8` | 0 | | +| INDEX_PITCH | `uint8` | 1 | | +| INDEX_YAW | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalControls.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,6 +36,7 @@ uint8 INDEX_PITCH = 1 uint8 INDEX_YAW = 2 uint64 timestamp_sample # the timestamp the data this control response is based on was sampled -float32[3] control - +float32[3] control # Normalized output. 1 means maximum positive position. -1 maximum negative position. 0 means no deflection. NaN maps to disarmed. ``` + +::: diff --git a/docs/uk/msg_docs/GimbalDeviceAttitudeStatus.md b/docs/uk/msg_docs/GimbalDeviceAttitudeStatus.md index 032a3876ee..796fbf9b25 100644 --- a/docs/uk/msg_docs/GimbalDeviceAttitudeStatus.md +++ b/docs/uk/msg_docs/GimbalDeviceAttitudeStatus.md @@ -1,6 +1,47 @@ +--- +pageClass: is-wide-page +--- + # GimbalDeviceAttitudeStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceAttitudeStatus.msg) +**TOPICS:** gimbal_deviceattitude_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| target_system | `uint8` | | | | +| target_component | `uint8` | | | | +| device_flags | `uint16` | | | | +| q | `float32[4]` | | | | +| angular_velocity_x | `float32` | | | | +| angular_velocity_y | `float32` | | | | +| angular_velocity_z | `float32` | | | | +| failure_flags | `uint32` | | | | +| delta_yaw | `float32` | | | | +| delta_yaw_velocity | `float32` | | | | +| gimbal_device_id | `uint8` | | | | +| received_from_mavlink | `bool` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| DEVICE_FLAGS_RETRACT | `uint16` | 1 | | +| DEVICE_FLAGS_NEUTRAL | `uint16` | 2 | | +| DEVICE_FLAGS_ROLL_LOCK | `uint16` | 4 | | +| DEVICE_FLAGS_PITCH_LOCK | `uint16` | 8 | | +| DEVICE_FLAGS_YAW_LOCK | `uint16` | 16 | | +| DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME | `uint16` | 32 | | +| DEVICE_FLAGS_YAW_IN_EARTH_FRAME | `uint16` | 64 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceAttitudeStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -29,5 +70,6 @@ float32 delta_yaw_velocity uint8 gimbal_device_id bool received_from_mavlink - ``` + +::: diff --git a/docs/uk/msg_docs/GimbalDeviceInformation.md b/docs/uk/msg_docs/GimbalDeviceInformation.md index 32198d9828..4617e7a707 100644 --- a/docs/uk/msg_docs/GimbalDeviceInformation.md +++ b/docs/uk/msg_docs/GimbalDeviceInformation.md @@ -1,6 +1,55 @@ +--- +pageClass: is-wide-page +--- + # GimbalDeviceInformation (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceInformation.msg) +**TOPICS:** gimbal_deviceinformation + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| vendor_name | `uint8[32]` | | | | +| model_name | `uint8[32]` | | | | +| custom_name | `uint8[32]` | | | | +| firmware_version | `uint32` | | | | +| hardware_version | `uint32` | | | | +| uid | `uint64` | | | | +| cap_flags | `uint16` | | | | +| custom_cap_flags | `uint16` | | | | +| roll_min | `float32` | rad | | | +| roll_max | `float32` | rad | | | +| pitch_min | `float32` | rad | | | +| pitch_max | `float32` | rad | | | +| yaw_min | `float32` | rad | | | +| yaw_max | `float32` | rad | | | +| gimbal_device_id | `uint8` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT | `uint32` | 1 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS | `uint32` | 4 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW | `uint32` | 8 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK | `uint32` | 16 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS | `uint32` | 32 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW | `uint32` | 64 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK | `uint32` | 128 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS | `uint32` | 256 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW | `uint32` | 512 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK | `uint32` | 1024 | | +| GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW | `uint32` | 2048 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceInformation.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -39,5 +88,6 @@ float32 yaw_min # [rad] float32 yaw_max # [rad] uint8 gimbal_device_id - ``` + +::: diff --git a/docs/uk/msg_docs/GimbalDeviceSetAttitude.md b/docs/uk/msg_docs/GimbalDeviceSetAttitude.md index 3bdee26d4b..fc8535333c 100644 --- a/docs/uk/msg_docs/GimbalDeviceSetAttitude.md +++ b/docs/uk/msg_docs/GimbalDeviceSetAttitude.md @@ -1,6 +1,40 @@ +--- +pageClass: is-wide-page +--- + # GimbalDeviceSetAttitude (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceSetAttitude.msg) +**TOPICS:** gimbal_deviceset_attitude + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| target_system | `uint8` | | | | +| target_component | `uint8` | | | | +| flags | `uint16` | | | | +| q | `float32[4]` | | | | +| angular_velocity_x | `float32` | | | | +| angular_velocity_y | `float32` | | | | +| angular_velocity_z | `float32` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| GIMBAL_DEVICE_FLAGS_RETRACT | `uint32` | 1 | | +| GIMBAL_DEVICE_FLAGS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_DEVICE_FLAGS_ROLL_LOCK | `uint32` | 4 | | +| GIMBAL_DEVICE_FLAGS_PITCH_LOCK | `uint32` | 8 | | +| GIMBAL_DEVICE_FLAGS_YAW_LOCK | `uint32` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceSetAttitude.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -20,5 +54,6 @@ float32[4] q float32 angular_velocity_x float32 angular_velocity_y float32 angular_velocity_z - ``` + +::: diff --git a/docs/uk/msg_docs/GimbalManagerInformation.md b/docs/uk/msg_docs/GimbalManagerInformation.md index 7d112fd330..1c6a0686f5 100644 --- a/docs/uk/msg_docs/GimbalManagerInformation.md +++ b/docs/uk/msg_docs/GimbalManagerInformation.md @@ -1,6 +1,50 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerInformation (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerInformation.msg) +**TOPICS:** gimbal_managerinformation + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| cap_flags | `uint32` | | | | +| gimbal_device_id | `uint8` | | | | +| roll_min | `float32` | rad | | | +| roll_max | `float32` | rad | | | +| pitch_min | `float32` | rad | | | +| pitch_max | `float32` | rad | | | +| yaw_min | `float32` | rad | | | +| yaw_max | `float32` | rad | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | -------- | ---- | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT | `uint32` | 1 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS | `uint32` | 4 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW | `uint32` | 8 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK | `uint32` | 16 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS | `uint32` | 32 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW | `uint32` | 64 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK | `uint32` | 128 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS | `uint32` | 256 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW | `uint32` | 512 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK | `uint32` | 1024 | | +| GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW | `uint32` | 2048 | | +| GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL | `uint32` | 65536 | | +| GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL | `uint32` | 131072 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerInformation.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -32,5 +76,6 @@ float32 pitch_max # [rad] float32 yaw_min # [rad] float32 yaw_max # [rad] - ``` + +::: diff --git a/docs/uk/msg_docs/GimbalManagerSetAttitude.md b/docs/uk/msg_docs/GimbalManagerSetAttitude.md index 68a328ace7..1c36cefefd 100644 --- a/docs/uk/msg_docs/GimbalManagerSetAttitude.md +++ b/docs/uk/msg_docs/GimbalManagerSetAttitude.md @@ -1,6 +1,44 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerSetAttitude (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerSetAttitude.msg) +**TOPICS:** gimbal_managerset_attitude + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| origin_sysid | `uint8` | | | | +| origin_compid | `uint8` | | | | +| target_system | `uint8` | | | | +| target_component | `uint8` | | | | +| flags | `uint32` | | | | +| gimbal_device_id | `uint8` | | | | +| q | `float32[4]` | | | | +| angular_velocity_x | `float32` | | | | +| angular_velocity_y | `float32` | | | | +| angular_velocity_z | `float32` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| GIMBAL_MANAGER_FLAGS_RETRACT | `uint32` | 1 | | +| GIMBAL_MANAGER_FLAGS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_MANAGER_FLAGS_ROLL_LOCK | `uint32` | 4 | | +| GIMBAL_MANAGER_FLAGS_PITCH_LOCK | `uint32` | 8 | | +| GIMBAL_MANAGER_FLAGS_YAW_LOCK | `uint32` | 16 | | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerSetAttitude.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -27,5 +65,6 @@ float32 angular_velocity_y float32 angular_velocity_z uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/uk/msg_docs/GimbalManagerSetManualControl.md b/docs/uk/msg_docs/GimbalManagerSetManualControl.md index 0d35490f0c..837c6f4e80 100644 --- a/docs/uk/msg_docs/GimbalManagerSetManualControl.md +++ b/docs/uk/msg_docs/GimbalManagerSetManualControl.md @@ -1,6 +1,43 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerSetManualControl (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerSetManualControl.msg) +**TOPICS:** gimbal_managerset_manualcontrol + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| origin_sysid | `uint8` | | | | +| origin_compid | `uint8` | | | | +| target_system | `uint8` | | | | +| target_component | `uint8` | | | | +| flags | `uint32` | | | | +| gimbal_device_id | `uint8` | | | | +| pitch | `float32` | | | unitless -1..1, can be NAN | +| yaw | `float32` | | | unitless -1..1, can be NAN | +| pitch_rate | `float32` | | | unitless -1..1, can be NAN | +| yaw_rate | `float32` | | | unitless -1..1, can be NAN | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| GIMBAL_MANAGER_FLAGS_RETRACT | `uint32` | 1 | | +| GIMBAL_MANAGER_FLAGS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_MANAGER_FLAGS_ROLL_LOCK | `uint32` | 4 | | +| GIMBAL_MANAGER_FLAGS_PITCH_LOCK | `uint32` | 8 | | +| GIMBAL_MANAGER_FLAGS_YAW_LOCK | `uint32` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerSetManualControl.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -24,5 +61,6 @@ float32 pitch # unitless -1..1, can be NAN float32 yaw # unitless -1..1, can be NAN float32 pitch_rate # unitless -1..1, can be NAN float32 yaw_rate # unitless -1..1, can be NAN - ``` + +::: diff --git a/docs/uk/msg_docs/GimbalManagerStatus.md b/docs/uk/msg_docs/GimbalManagerStatus.md index 317e1d3538..f7f47c8bfe 100644 --- a/docs/uk/msg_docs/GimbalManagerStatus.md +++ b/docs/uk/msg_docs/GimbalManagerStatus.md @@ -1,6 +1,29 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerStatus.msg) +**TOPICS:** gimbal_managerstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| flags | `uint32` | | | | +| gimbal_device_id | `uint8` | | | | +| primary_control_sysid | `uint8` | | | | +| primary_control_compid | `uint8` | | | | +| secondary_control_sysid | `uint8` | | | | +| secondary_control_compid | `uint8` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +34,6 @@ uint8 primary_control_sysid uint8 primary_control_compid uint8 secondary_control_sysid uint8 secondary_control_compid - ``` + +::: diff --git a/docs/uk/msg_docs/GotoSetpoint.md b/docs/uk/msg_docs/GotoSetpoint.md index 47d337abb1..1478a1a028 100644 --- a/docs/uk/msg_docs/GotoSetpoint.md +++ b/docs/uk/msg_docs/GotoSetpoint.md @@ -1,13 +1,40 @@ +--- +pageClass: is-wide-page +--- + # GotoSetpoint (повідомлення UORB) -Задання положення та (опціонально) курсу з відповідними обмеженнями швидкості -Заданi значення призначені для використання як вхідні дані для згладжувачів положення та курсу відповідно -Задані значення не обов'язково повинні бути кінематично узгодженими -Опціональні значення курсу можуть бути визначені як такі, що контролюються відповідним прапорцем -Невстановлені опціональні значення не контролюються -Невстановлені опціональні обмеження за замовчуванням відповідають специфікаціям транспортного засобу +Position and (optional) heading setpoints with corresponding speed constraints. Setpoints are intended as inputs to position and heading smoothers, respectively. Setpoints do not need to be kinematically consistent. Optional heading setpoints may be specified as controlled by the respective flag. Unset optional setpoints are not controlled. Unset optional constraints default to vehicle specifications. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/GotoSetpoint.msg) +**TOPICS:** goto_setpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| положення | `float32[3]` | m | | NED local world frame | +| flag_control_heading | `bool` | | | true if heading is to be controlled | +| heading | `float32` | | | (optional) [rad] [-pi,pi] from North | +| flag_set_max_horizontal_speed | `bool` | | | true if setting a non-default horizontal speed limit | +| max_horizontal_speed | `float32` | | | (optional) [m/s] maximum speed (absolute) in the NE-plane | +| flag_set_max_vertical_speed | `bool` | | | true if setting a non-default vertical speed limit | +| max_vertical_speed | `float32` | | | (optional) [m/s] maximum speed (absolute) in the D-axis | +| flag_set_max_heading_rate | `bool` | | | true if setting a non-default heading rate limit | +| max_heading_rate | `float32` | | | (optional) [rad/s] maximum heading rate (absolute) | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/GotoSetpoint.msg) + +:::details +Click here to see original file ```c # Position and (optional) heading setpoints with corresponding speed constraints @@ -36,5 +63,6 @@ float32 max_vertical_speed # (optional) [m/s] maximum speed (absolute) in the D- bool flag_set_max_heading_rate # true if setting a non-default heading rate limit float32 max_heading_rate # (optional) [rad/s] maximum heading rate (absolute) - ``` + +::: diff --git a/docs/uk/msg_docs/GpioConfig.md b/docs/uk/msg_docs/GpioConfig.md index dbb7d9c309..5b72d81018 100644 --- a/docs/uk/msg_docs/GpioConfig.md +++ b/docs/uk/msg_docs/GpioConfig.md @@ -1,8 +1,45 @@ +--- +pageClass: is-wide-page +--- + # GpioConfig (повідомлення UORB) -Конфігурація GPIO +GPIO configuration. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioConfig.msg) +**TOPICS:** gpio_config + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | Device id | +| mask | `uint32` | | | Pin mask | +| state | `uint32` | | | Initial pin output state | +| config | `uint32` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ---------------------------------------------------------------------------------------------------------- | -------- | -------- | ------ | +| INPUT | `uint32` | 0 | 0x0000 | +| OUTPUT | `uint32` | 1 | 0x0001 | +| PULLUP | `uint32` | 16 | 0x0010 | +| PULLDOWN | `uint32` | 32 | 0x0020 | +| OPENDRAIN | `uint32` | 256 | 0x0100 | +| INPUT_FLOATING | `uint32` | 0 | 0x0000 | +| INPUT_PULLUP | `uint32` | 16 | 0x0010 | +| INPUT_PULLDOWN | `uint32` | 32 | 0x0020 | +| OUTPUT_PUSHPULL | `uint32` | 0 | 0x0000 | +| OUTPUT_OPENDRAIN | `uint32` | 256 | 0x0100 | +| OUTPUT_OPENDRAIN_PULLUP | `uint32` | 272 | 0x0110 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioConfig.msg) + +:::details +Click here to see original file ```c # GPIO configuration @@ -33,5 +70,6 @@ uint32 OUTPUT_OPENDRAIN = 256 # 0x0100 uint32 OUTPUT_OPENDRAIN_PULLUP = 272 # 0x0110 uint32 config - ``` + +::: diff --git a/docs/uk/msg_docs/GpioIn.md b/docs/uk/msg_docs/GpioIn.md index 668b6ba865..5668bf5547 100644 --- a/docs/uk/msg_docs/GpioIn.md +++ b/docs/uk/msg_docs/GpioIn.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # GpioIn (повідомлення UORB) -Маска та стан GPIO +GPIO mask and state. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioIn.msg) +**TOPICS:** gpio_in + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | Device id | +| state | `uint32` | | | pin state mask | + +## Constants + +| Назва | Тип | Значення | Опис | +| ---------------------------------------------------------------- | ------- | -------- | ---- | +| MAX_INSTANCES | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioIn.msg) + +:::details +Click here to see original file ```c # GPIO mask and state @@ -12,5 +37,6 @@ uint64 timestamp # time since system start (microseconds) uint32 device_id # Device id uint32 state # pin state mask - ``` + +::: diff --git a/docs/uk/msg_docs/GpioOut.md b/docs/uk/msg_docs/GpioOut.md index 6a60f0e0a0..0f574b20c2 100644 --- a/docs/uk/msg_docs/GpioOut.md +++ b/docs/uk/msg_docs/GpioOut.md @@ -1,8 +1,28 @@ +--- +pageClass: is-wide-page +--- + # GpioOut (повідомлення UORB) -Маска та стан GPIO +GPIO mask and state. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioOut.msg) +**TOPICS:** gpio_out + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | Device id | +| mask | `uint32` | | | pin mask | +| state | `uint32` | | | pin state mask | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioOut.msg) + +:::details +Click here to see original file ```c # GPIO mask and state @@ -12,5 +32,6 @@ uint32 device_id # Device id uint32 mask # pin mask uint32 state # pin state mask - ``` + +::: diff --git a/docs/uk/msg_docs/GpioRequest.md b/docs/uk/msg_docs/GpioRequest.md index 5dc9946bae..5d2e11bf68 100644 --- a/docs/uk/msg_docs/GpioRequest.md +++ b/docs/uk/msg_docs/GpioRequest.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # GpioRequest (повідомлення UORB) -Запит на зчитування маски GPIO +Request GPIO mask to be read. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioRequest.msg) +**TOPICS:** gpio_request + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | Device id | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioRequest.msg) + +:::details +Click here to see original file ```c # Request GPIO mask to be read uint64 timestamp # time since system start (microseconds) uint32 device_id # Device id - ``` + +::: diff --git a/docs/uk/msg_docs/GpsDump.md b/docs/uk/msg_docs/GpsDump.md index f42a2d9638..b06ba27ad0 100644 --- a/docs/uk/msg_docs/GpsDump.md +++ b/docs/uk/msg_docs/GpsDump.md @@ -1,8 +1,37 @@ +--- +pageClass: is-wide-page +--- + # GpsDump (повідомлення UORB) This message is used to dump the raw gps communication to the log. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpsDump.msg) +**TOPICS:** gps_dump + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------ | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| instance | `uint8` | | | Instance of GNSS receiver | +| device_id | `uint32` | | | | +| len | `uint8` | | | length of data, MSB bit set = message to the gps device, | +| data | `uint8[79]` | | | data to write to the log | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| INSTANCE_MAIN | `uint8` | 0 | | +| INSTANCE_SECONDARY | `uint8` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpsDump.msg) + +:::details +Click here to see original file ```c # This message is used to dump the raw gps communication to the log. @@ -19,5 +48,6 @@ uint8 len # length of data, MSB bit set = message to the gps device, uint8[79] data # data to write to the log uint8 ORB_QUEUE_LENGTH = 16 - ``` + +::: diff --git a/docs/uk/msg_docs/GpsInjectData.md b/docs/uk/msg_docs/GpsInjectData.md index 2bfd80c37e..74ae8e5d73 100644 --- a/docs/uk/msg_docs/GpsInjectData.md +++ b/docs/uk/msg_docs/GpsInjectData.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # GpsInjectData (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpsInjectData.msg) +**TOPICS:** gps_injectdata + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| len | `uint16` | | | length of data | +| flags | `uint8` | | | LSB: 1=fragmented | +| data | `uint8[300]` | | | data to write to GPS device (RTCM message) | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | +| MAX_INSTANCES | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpsInjectData.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +42,6 @@ uint8[300] data # data to write to GPS device (RTCM message) uint8 ORB_QUEUE_LENGTH = 8 uint8 MAX_INSTANCES = 2 - ``` + +::: diff --git a/docs/uk/msg_docs/Gripper.md b/docs/uk/msg_docs/Gripper.md index 58c5149ba5..7b9ff1d2cd 100644 --- a/docs/uk/msg_docs/Gripper.md +++ b/docs/uk/msg_docs/Gripper.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # Gripper (повідомлення UORB) -# Використовується для виклику активації в захоплювачі, яка відображена на конкретний вихід в модулі розподілу керування +# Used to command an actuation in the gripper, which is mapped to a specific output in the control allocation module. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Gripper.msg) +**TOPICS:** gripper + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------- | +| timestamp | `uint64` | | | | +| command | `int8` | | | Commanded state for the gripper | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | ------ | -------- | ---- | +| COMMAND_GRAB | `int8` | 0 | | +| COMMAND_RELEASE | `int8` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Gripper.msg) + +:::details +Click here to see original file ```c ## Used to command an actuation in the gripper, which is mapped to a specific output in the control allocation module @@ -12,5 +37,6 @@ uint64 timestamp int8 command # Commanded state for the gripper int8 COMMAND_GRAB = 0 int8 COMMAND_RELEASE = 1 - ``` + +::: diff --git a/docs/uk/msg_docs/HealthReport.md b/docs/uk/msg_docs/HealthReport.md index 1a4503c830..59735618e3 100644 --- a/docs/uk/msg_docs/HealthReport.md +++ b/docs/uk/msg_docs/HealthReport.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # HealthReport (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HealthReport.msg) +**TOPICS:** health_report + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| can_arm_mode_flags | `uint64` | | | bitfield for each flight mode (NAVIGATION_STATE_\*) if arming is possible | +| can_run_mode_flags | `uint64` | | | bitfield for each flight mode if it can run | +| health_is_present_flags | `uint64` | | | flags for each health_component_t | +| health_warning_flags | `uint64` | | | | +| health_error_flags | `uint64` | | | | +| arming_check_warning_flags | `uint64` | | | | +| arming_check_error_flags | `uint64` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HealthReport.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -15,5 +39,6 @@ uint64 health_error_flags uint64 arming_check_warning_flags uint64 arming_check_error_flags - ``` + +::: diff --git a/docs/uk/msg_docs/HeaterStatus.md b/docs/uk/msg_docs/HeaterStatus.md index 762a55bd81..6fa6d20326 100644 --- a/docs/uk/msg_docs/HeaterStatus.md +++ b/docs/uk/msg_docs/HeaterStatus.md @@ -1,6 +1,41 @@ +--- +pageClass: is-wide-page +--- + # HeaterStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HeaterStatus.msg) +**TOPICS:** heater_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | | +| heater_on | `bool` | | | | +| temperature_target_met | `bool` | | | | +| temperature_sensor | `float32` | | | | +| temperature_target | `float32` | | | | +| controller_period_usec | `uint32` | | | | +| controller_time_on_usec | `uint32` | | | | +| proportional_value | `float32` | | | | +| integrator_value | `float32` | | | | +| feed_forward_value | `float32` | | | | +| mode | `uint8` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ---------------------------------------------------------- | ------- | -------- | ---- | +| MODE_GPIO | `uint8` | 1 | | +| MODE_PX4IO | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HeaterStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -23,5 +58,6 @@ float32 feed_forward_value uint8 MODE_GPIO = 1 uint8 MODE_PX4IO = 2 uint8 mode - ``` + +::: diff --git a/docs/uk/msg_docs/HomePosition.md b/docs/uk/msg_docs/HomePosition.md index 00bf58847c..855140c375 100644 --- a/docs/uk/msg_docs/HomePosition.md +++ b/docs/uk/msg_docs/HomePosition.md @@ -1,8 +1,45 @@ +--- +pageClass: is-wide-page +--- + # HomePosition (повідомлення UORB) Домашнє GPS положення в координатах WGS84. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/HomePosition.msg) +**TOPICS:** home_position + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lat | `float64` | | | Latitude in degrees | +| lon | `float64` | | | Longitude in degrees | +| alt | `float32` | | | Altitude in meters (AMSL) | +| x | `float32` | | | X coordinate in meters | +| y | `float32` | | | Y coordinate in meters | +| z | `float32` | | | Z coordinate in meters | +| roll | `float32` | | | Pitch angle in radians | +| pitch | `float32` | | | Roll angle in radians | +| yaw | `float32` | | | Yaw angle in radians | +| valid_alt | `bool` | | | true when the altitude has been set | +| valid_hpos | `bool` | | | true when the latitude and longitude have been set | +| valid_lpos | `bool` | | | true when the local position (xyz) has been set | +| manual_home | `bool` | | | true when home position was set manually | +| update_count | `uint32` | | | update counter of the home position | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/HomePosition.msg) + +:::details +Click here to see original file ```c # GPS home position in WGS84 coordinates. @@ -30,5 +67,6 @@ bool valid_lpos # true when the local position (xyz) has been set bool manual_home # true when home position was set manually uint32 update_count # update counter of the home position - ``` + +::: diff --git a/docs/uk/msg_docs/HomePositionV0.md b/docs/uk/msg_docs/HomePositionV0.md index 2de8abdeb0..296e57679b 100644 --- a/docs/uk/msg_docs/HomePositionV0.md +++ b/docs/uk/msg_docs/HomePositionV0.md @@ -1,8 +1,43 @@ +--- +pageClass: is-wide-page +--- + # HomePositionV0 (UORB message) Домашнє GPS положення в координатах WGS84. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/HomePositionV0.msg) +**TOPICS:** home_positionv0 + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lat | `float64` | | | Latitude in degrees | +| lon | `float64` | | | Longitude in degrees | +| alt | `float32` | | | Altitude in meters (AMSL) | +| x | `float32` | | | X coordinate in meters | +| y | `float32` | | | Y coordinate in meters | +| z | `float32` | | | Z coordinate in meters | +| yaw | `float32` | | | Yaw angle in radians | +| valid_alt | `bool` | | | true when the altitude has been set | +| valid_hpos | `bool` | | | true when the latitude and longitude have been set | +| valid_lpos | `bool` | | | true when the local position (xyz) has been set | +| manual_home | `bool` | | | true when home position was set manually | +| update_count | `uint32` | | | update counter of the home position | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/HomePositionV0.msg) + +:::details +Click here to see original file ```c # GPS home position in WGS84 coordinates. @@ -28,5 +63,6 @@ bool valid_lpos # true when the local position (xyz) has been set bool manual_home # true when home position was set manually uint32 update_count # update counter of the home position - ``` + +::: diff --git a/docs/uk/msg_docs/HoverThrustEstimate.md b/docs/uk/msg_docs/HoverThrustEstimate.md index 802fdf931b..0659284f2a 100644 --- a/docs/uk/msg_docs/HoverThrustEstimate.md +++ b/docs/uk/msg_docs/HoverThrustEstimate.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # HoverThrustEstimate (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HoverThrustEstimate.msg) +**TOPICS:** hover_thrustestimate + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | time of corresponding sensor data last used for this estimate | +| hover_thrust | `float32` | | | estimated hover thrust [0.1, 0.9] | +| hover_thrust_var | `float32` | | | estimated hover thrust variance | +| accel_innov | `float32` | | | innovation of the last acceleration fusion | +| accel_innov_var | `float32` | | | innovation variance of the last acceleration fusion | +| accel_innov_test_ratio | `float32` | | | normalized innovation squared test ratio | +| accel_noise_var | `float32` | | | vertical acceleration noise variance estimated form innovation residual | +| valid | `bool` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HoverThrustEstimate.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -16,5 +41,6 @@ float32 accel_innov_test_ratio # normalized innovation squared test ratio float32 accel_noise_var # vertical acceleration noise variance estimated form innovation residual bool valid - ``` + +::: diff --git a/docs/uk/msg_docs/InputRc.md b/docs/uk/msg_docs/InputRc.md index f874bbd1ee..2a17aae0ca 100644 --- a/docs/uk/msg_docs/InputRc.md +++ b/docs/uk/msg_docs/InputRc.md @@ -1,6 +1,60 @@ +--- +pageClass: is-wide-page +--- + # InputRc (Повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InputRc.msg) +**TOPICS:** input_rc + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_last_signal | `uint64` | | | last valid reception time | +| channel_count | `uint8` | | | number of channels actually being seen | +| rssi | `int32` | | | receive signal strength indicator (RSSI): < 0: Undefined, 0: no signal, 100: full reception | +| rc_failsafe | `bool` | | | explicit failsafe flag: true on TX failure or TX out of range , false otherwise. Only the true state is reliable, as there are some (PPM) receivers on the market going into failsafe without telling us explicitly. | +| rc_lost | `bool` | | | RC receiver connection status: True,if no frame has arrived in the expected time, false otherwise. True usually means that the receiver has been disconnected, but can also indicate a radio link loss on "stupid" systems. Will remain false, if a RX with failsafe option continues to transmit frames after a link loss. | +| rc_lost_frame_count | `uint16` | | | 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. | +| rc_total_frame_count | `uint16` | | | 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. | +| rc_ppm_frame_length | `uint16` | | | Length of a single PPM frame. Zero for non-PPM systems | +| rc_frame_rate | `uint16` | | | RC frame rate in msg/second. 0 = invalid | +| input_source | `uint8` | | | Input source | +| values | `uint16[18]` | | | measured pulse widths for each of the supported channels | +| link_quality | `int8` | | | link quality. Percentage 0-100%. -1 = invalid | +| rssi_dbm | `float32` | | | Actual rssi in units of dBm. NaN = invalid | +| link_snr | `int8` | | | link signal to noise ratio in units of dB. -1 = invalid | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- | +| RC_INPUT_SOURCE_UNKNOWN | `uint8` | 0 | | +| RC_INPUT_SOURCE_PX4FMU_PPM | `uint8` | 1 | | +| RC_INPUT_SOURCE_PX4IO_PPM | `uint8` | 2 | | +| RC_INPUT_SOURCE_PX4IO_SPEKTRUM | `uint8` | 3 | | +| RC_INPUT_SOURCE_PX4IO_SBUS | `uint8` | 4 | | +| RC_INPUT_SOURCE_PX4IO_ST24 | `uint8` | 5 | | +| RC_INPUT_SOURCE_MAVLINK | `uint8` | 6 | | +| RC_INPUT_SOURCE_QURT | `uint8` | 7 | | +| RC_INPUT_SOURCE_PX4FMU_SPEKTRUM | `uint8` | 8 | | +| RC_INPUT_SOURCE_PX4FMU_SBUS | `uint8` | 9 | | +| RC_INPUT_SOURCE_PX4FMU_ST24 | `uint8` | 10 | | +| RC_INPUT_SOURCE_PX4FMU_SUMD | `uint8` | 11 | | +| RC_INPUT_SOURCE_PX4FMU_DSM | `uint8` | 12 | | +| RC_INPUT_SOURCE_PX4IO_SUMD | `uint8` | 13 | | +| RC_INPUT_SOURCE_PX4FMU_CRSF | `uint8` | 14 | | +| RC_INPUT_SOURCE_PX4FMU_GHST | `uint8` | 15 | | +| RC_INPUT_MAX_CHANNELS | `uint8` | 18 | Maximum number of R/C input channels in the system. S.Bus has up to 18 channels. | +| RSSI_MAX | `int8` | 100 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InputRc.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -45,5 +99,6 @@ 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/InternalCombustionEngineControl.md b/docs/uk/msg_docs/InternalCombustionEngineControl.md index aacacd8973..baa5b42ef9 100644 --- a/docs/uk/msg_docs/InternalCombustionEngineControl.md +++ b/docs/uk/msg_docs/InternalCombustionEngineControl.md @@ -1,6 +1,28 @@ +--- +pageClass: is-wide-page +--- + # InternalCombustionEngineControl (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InternalCombustionEngineControl.msg) +**TOPICS:** internal_combustionengine_control + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| ignition_on | `bool` | | | activate/deactivate ignition (spark plug) | +| throttle_control | `float32` | | | setpoint for throttle actuator, with slew rate if enabled, idles with 0 [norm] [@range 0,1] [@uncontrolled NAN to stop motor] | +| choke_control | `float32` | | | setpoint for choke actuator, 1: fully closed [norm] [@range 0,1] | +| starter_engine_control | `float32` | | | setpoint for (electric) starter motor [norm] [@range 0,1] | +| user_request | `uint8` | | | user intent for the ICE being on/off | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InternalCombustionEngineControl.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +33,6 @@ float32 choke_control # setpoint for choke actuator, 1: fully closed [norm] [@ float32 starter_engine_control # setpoint for (electric) starter motor [norm] [@range 0,1] uint8 user_request # user intent for the ICE being on/off - ``` + +::: diff --git a/docs/uk/msg_docs/InternalCombustionEngineStatus.md b/docs/uk/msg_docs/InternalCombustionEngineStatus.md index 07783f54dd..7301386016 100644 --- a/docs/uk/msg_docs/InternalCombustionEngineStatus.md +++ b/docs/uk/msg_docs/InternalCombustionEngineStatus.md @@ -1,6 +1,78 @@ +--- +pageClass: is-wide-page +--- + # InternalCombustionEngineStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InternalCombustionEngineStatus.msg) +**TOPICS:** internal_combustionengine_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| state | `uint8` | | | | +| flags | `uint32` | | | | +| engine_load_percent | `uint8` | | | Engine load estimate, percent, [0, 127] | +| engine_speed_rpm | `uint32` | | | Engine speed, revolutions per minute | +| spark_dwell_time_ms | `float32` | | | Spark dwell time, millisecond | +| atmospheric_pressure_kpa | `float32` | | | Atmospheric (barometric) pressure, kilopascal | +| intake_manifold_pressure_kpa | `float32` | | | Engine intake manifold pressure, kilopascal | +| intake_manifold_temperature | `float32` | | | Engine intake manifold temperature, kelvin | +| coolant_temperature | `float32` | | | Engine coolant temperature, kelvin | +| oil_pressure | `float32` | | | Oil pressure, kilopascal | +| oil_temperature | `float32` | | | Oil temperature, kelvin | +| fuel_pressure | `float32` | | | Fuel pressure, kilopascal | +| fuel_consumption_rate_cm3pm | `float32` | | | Instant fuel consumption estimate, (centimeter^3)/minute | +| estimated_consumed_fuel_volume_cm3 | `float32` | | | Estimate of the consumed fuel since the start of the engine, centimeter^3 | +| throttle_position_percent | `uint8` | | | Throttle position, percent | +| ecu_index | `uint8` | | | The index of the publishing ECU | +| spark_plug_usage | `uint8` | | | Spark plug activity report. | +| ignition_timing_deg | `float32` | | | Cylinder ignition timing, angular degrees of the crankshaft | +| injection_time_ms | `float32` | | | Fuel injection time, millisecond | +| cylinder_head_temperature | `float32` | | | Cylinder head temperature (CHT), kelvin | +| exhaust_gas_temperature | `float32` | | | Exhaust gas temperature (EGT), kelvin | +| lambda_coefficient | `float32` | | | Estimated lambda coefficient, dimensionless ratio | + +## Constants + +| Назва | Тип | Значення | Опис | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | -------------------------------------------------------------------------------------- | +| STATE_STOPPED | `uint8` | 0 | The engine is not running. This is the default state. | +| STATE_STARTING | `uint8` | 1 | The engine is starting. This is a transient state. | +| STATE_RUNNING | `uint8` | 2 | The engine is running normally. | +| STATE_FAULT | `uint8` | 3 | The engine can no longer function. | +| FLAG_GENERAL_ERROR | `uint32` | 1 | General error. | +| FLAG_CRANKSHAFT_SENSOR_ERROR_SUPPORTED | `uint32` | 2 | Error of the crankshaft sensor. This flag is optional. | +| FLAG_CRANKSHAFT_SENSOR_ERROR | `uint32` | 4 | | +| FLAG_TEMPERATURE_SUPPORTED | `uint32` | 8 | Temperature levels. These flags are optional | +| FLAG_TEMPERATURE_BELOW_NOMINAL | `uint32` | 16 | Under-temperature warning | +| FLAG_TEMPERATURE_ABOVE_NOMINAL | `uint32` | 32 | Over-temperature warning | +| FLAG_TEMPERATURE_OVERHEATING | `uint32` | 64 | Critical overheating | +| FLAG_TEMPERATURE_EGT_ABOVE_NOMINAL | `uint32` | 128 | Exhaust gas over-temperature warning | +| FLAG_FUEL_PRESSURE_SUPPORTED | `uint32` | 256 | Fuel pressure. These flags are optional | +| FLAG_FUEL_PRESSURE_BELOW_NOMINAL | `uint32` | 512 | Under-pressure warning | +| FLAG_FUEL_PRESSURE_ABOVE_NOMINAL | `uint32` | 1024 | Over-pressure warning | +| FLAG_DETONATION_SUPPORTED | `uint32` | 2048 | Detonation warning. This flag is optional. | +| FLAG_DETONATION_OBSERVED | `uint32` | 4096 | Detonation condition observed warning | +| FLAG_MISFIRE_SUPPORTED | `uint32` | 8192 | Misfire warning. This flag is optional. | +| FLAG_MISFIRE_OBSERVED | `uint32` | 16384 | Misfire condition observed warning | +| FLAG_OIL_PRESSURE_SUPPORTED | `uint32` | 32768 | Oil pressure. These flags are optional | +| FLAG_OIL_PRESSURE_BELOW_NOMINAL | `uint32` | 65536 | Under-pressure warning | +| FLAG_OIL_PRESSURE_ABOVE_NOMINAL | `uint32` | 131072 | Over-pressure warning | +| FLAG_DEBRIS_SUPPORTED | `uint32` | 262144 | Debris warning. This flag is optional | +| FLAG_DEBRIS_DETECTED | `uint32` | 524288 | Detection of debris warning | +| SPARK_PLUG_SINGLE | `uint8` | 0 | | +| SPARK_PLUG_FIRST_ACTIVE | `uint8` | 1 | | +| SPARK_PLUG_SECOND_ACTIVE | `uint8` | 2 | | +| SPARK_PLUG_BOTH_ACTIVE | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InternalCombustionEngineStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -67,5 +139,6 @@ float32 injection_time_ms # Fuel injection time, millisecond float32 cylinder_head_temperature # Cylinder head temperature (CHT), kelvin float32 exhaust_gas_temperature # Exhaust gas temperature (EGT), kelvin float32 lambda_coefficient # Estimated lambda coefficient, dimensionless ratio - ``` + +::: diff --git a/docs/uk/msg_docs/IridiumsbdStatus.md b/docs/uk/msg_docs/IridiumsbdStatus.md index 4e630cbe74..a9504a64c3 100644 --- a/docs/uk/msg_docs/IridiumsbdStatus.md +++ b/docs/uk/msg_docs/IridiumsbdStatus.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # IridiumsbdStatus (UORB повідомлення) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/IridiumsbdStatus.msg) +**TOPICS:** iridiumsbd_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| last_at_ok_timestamp | `uint64` | | | timestamp of the last "OK" received after the "AT" command | +| tx_buf_write_index | `uint16` | | | current size of the tx buffer | +| rx_buf_read_index | `uint16` | | | the rx buffer is parsed up to that index | +| rx_buf_end_index | `uint16` | | | current size of the rx buffer | +| failed_sbd_sessions | `uint16` | | | number of failed sbd sessions | +| successful_sbd_sessions | `uint16` | | | number of successful sbd sessions | +| num_tx_buf_reset | `uint16` | | | number of times the tx buffer was reset | +| signal_quality | `uint8` | | | current signal quality, 0 is no signal, 5 the best | +| state | `uint8` | | | current state of the driver, see the satcom_state of IridiumSBD.h for the definition | +| ring_pending | `bool` | | | indicates if a ring call is pending | +| tx_buf_write_pending | `bool` | | | indicates if a tx buffer write is pending | +| tx_session_pending | `bool` | | | indicates if a tx session is pending | +| rx_read_pending | `bool` | | | indicates if a rx read is pending | +| rx_session_pending | `bool` | | | indicates if a rx session is pending | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/IridiumsbdStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +49,6 @@ bool tx_buf_write_pending # indicates if a tx buffer write is pending bool tx_session_pending # indicates if a tx session is pending bool rx_read_pending # indicates if a rx read is pending bool rx_session_pending # indicates if a rx session is pending - ``` + +::: diff --git a/docs/uk/msg_docs/IrlockReport.md b/docs/uk/msg_docs/IrlockReport.md index b59d4e9df4..e38ee0f851 100644 --- a/docs/uk/msg_docs/IrlockReport.md +++ b/docs/uk/msg_docs/IrlockReport.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # IrlockReport (повідомлення UORB) -Дані повідомлення IRLOCK_REPORT +IRLOCK_REPORT message data. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/IrlockReport.msg) +**TOPICS:** irlock_report + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| signature | `uint16` | | | | +| pos_x | `float32` | | | tan(theta), where theta is the angle between the target and the camera center of projection in camera x-axis | +| pos_y | `float32` | | | tan(theta), where theta is the angle between the target and the camera center of projection in camera y-axis | +| size_x | `float32` | | | /\*\* size of target along camera x-axis in units of tan(theta) \*\*/ | +| size_y | `float32` | | | /\*\* size of target along camera y-axis in units of tan(theta) \*\*/ | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/IrlockReport.msg) + +:::details +Click here to see original file ```c # IRLOCK_REPORT message data @@ -16,5 +38,6 @@ float32 pos_x # tan(theta), where theta is the angle between the target and the float32 pos_y # tan(theta), where theta is the angle between the target and the camera center of projection in camera y-axis float32 size_x #/** size of target along camera x-axis in units of tan(theta) **/ float32 size_y #/** size of target along camera y-axis in units of tan(theta) **/ - ``` + +::: diff --git a/docs/uk/msg_docs/LandingGear.md b/docs/uk/msg_docs/LandingGear.md index faa4df09cd..f0c15eed06 100644 --- a/docs/uk/msg_docs/LandingGear.md +++ b/docs/uk/msg_docs/LandingGear.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # LandingGear (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingGear.msg) +**TOPICS:** landing_gear + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| landing_gear | `int8` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------- | ------ | -------- | ---------------------- | +| GEAR_UP | `int8` | 1 | landing gear up | +| GEAR_DOWN | `int8` | -1 | landing gear down | +| GEAR_KEEP | `int8` | 0 | keep the current state | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingGear.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +36,6 @@ int8 GEAR_DOWN = -1 # landing gear down int8 GEAR_KEEP = 0 # keep the current state int8 landing_gear - ``` + +::: diff --git a/docs/uk/msg_docs/LandingGearWheel.md b/docs/uk/msg_docs/LandingGearWheel.md index 99d9fcafa1..26e1624ab1 100644 --- a/docs/uk/msg_docs/LandingGearWheel.md +++ b/docs/uk/msg_docs/LandingGearWheel.md @@ -1,10 +1,29 @@ +--- +pageClass: is-wide-page +--- + # LandingGearWheel (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingGearWheel.msg) +**TOPICS:** landing_gearwheel + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| normalized_wheel_setpoint | `float32` | | | negative is turning left, positive turning right [-1, 1] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingGearWheel.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) float32 normalized_wheel_setpoint # negative is turning left, positive turning right [-1, 1] - ``` + +::: diff --git a/docs/uk/msg_docs/LandingTargetInnovations.md b/docs/uk/msg_docs/LandingTargetInnovations.md index 61337a24c3..ce64d93f7f 100644 --- a/docs/uk/msg_docs/LandingTargetInnovations.md +++ b/docs/uk/msg_docs/LandingTargetInnovations.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # LandingTargetInnovations (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingTargetInnovations.msg) +**TOPICS:** landing_targetinnovations + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| innov_x | `float32` | | | | +| innov_y | `float32` | | | | +| innov_cov_x | `float32` | | | | +| innov_cov_y | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingTargetInnovations.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +32,6 @@ float32 innov_y # Innovation covariance of landing target position estimator float32 innov_cov_x float32 innov_cov_y - ``` + +::: diff --git a/docs/uk/msg_docs/LandingTargetPose.md b/docs/uk/msg_docs/LandingTargetPose.md index 5d0688cb7d..a139207aee 100644 --- a/docs/uk/msg_docs/LandingTargetPose.md +++ b/docs/uk/msg_docs/LandingTargetPose.md @@ -1,8 +1,41 @@ +--- +pageClass: is-wide-page +--- + # LandingTargetPose (повідомлення UORB) -Відносне положення цільової точки з високою точністю в навігаційних кадрах (тіло фіксоване, орієнтоване на північ, NED) та інерційних (фіксовані на світі, орієнтовані на північ, NED) кадрах +Relative position of precision land target in navigation (body fixed, north aligned, NED) and inertial (world fixed, north aligned, NED) frames. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingTargetPose.msg) +**TOPICS:** landing_targetpose + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| is_static | `bool` | | | Flag indicating whether the landing target is static or moving with respect to the ground | +| rel_pos_valid | `bool` | | | Flag showing whether relative position is valid | +| rel_vel_valid | `bool` | | | Flag showing whether relative velocity is valid | +| x_rel | `float32` | | | X/north position of target, relative to vehicle (navigation frame) [meters] | +| y_rel | `float32` | | | Y/east position of target, relative to vehicle (navigation frame) [meters] | +| z_rel | `float32` | | | Z/down position of target, relative to vehicle (navigation frame) [meters] | +| vx_rel | `float32` | | | X/north velocity of target, relative to vehicle (navigation frame) [meters/second] | +| vy_rel | `float32` | | | Y/east velocity of target, relative to vehicle (navigation frame) [meters/second] | +| cov_x_rel | `float32` | | | X/north position variance [meters^2] | +| cov_y_rel | `float32` | | | Y/east position variance [meters^2] | +| cov_vx_rel | `float32` | | | X/north velocity variance [(meters/second)^2] | +| cov_vy_rel | `float32` | | | Y/east velocity variance [(meters/second)^2] | +| abs_pos_valid | `bool` | | | Flag showing whether absolute position is valid | +| x_abs | `float32` | | | X/north position of target, relative to origin (navigation frame) [meters] | +| y_abs | `float32` | | | Y/east position of target, relative to origin (navigation frame) [meters] | +| z_abs | `float32` | | | Z/down position of target, relative to origin (navigation frame) [meters] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingTargetPose.msg) + +:::details +Click here to see original file ```c # Relative position of precision land target in navigation (body fixed, north aligned, NED) and inertial (world fixed, north aligned, NED) frames @@ -31,5 +64,6 @@ bool abs_pos_valid # Flag showing whether absolute position is valid float32 x_abs # X/north position of target, relative to origin (navigation frame) [meters] float32 y_abs # Y/east position of target, relative to origin (navigation frame) [meters] float32 z_abs # Z/down position of target, relative to origin (navigation frame) [meters] - ``` + +::: diff --git a/docs/uk/msg_docs/LateralControlConfiguration.md b/docs/uk/msg_docs/LateralControlConfiguration.md index b0a03a6378..34f132856e 100644 --- a/docs/uk/msg_docs/LateralControlConfiguration.md +++ b/docs/uk/msg_docs/LateralControlConfiguration.md @@ -1,9 +1,32 @@ +--- +pageClass: is-wide-page +--- + # LateralControlConfiguration (UORB message) -Fixed Wing Lateral Control Configuration message -Used by the fw_lateral_longitudinal_control module to constrain FixedWingLateralSetpoint messages. +Fixed Wing Lateral Control Configuration message. Used by the fw_lateral_longitudinal_control module to constrain FixedWingLateralSetpoint messages. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/LateralControlConfiguration.msg) +**TOPICS:** lateral_controlconfiguration + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lateral_accel_max | `float32` | m/s^2 | | currently maps to a maximum roll angle, accel_max = tan(roll_max) \* GRAVITY | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/LateralControlConfiguration.msg) + +:::details +Click here to see original file ```c # Fixed Wing Lateral Control Configuration message @@ -14,5 +37,6 @@ uint32 MESSAGE_VERSION = 0 uint64 timestamp # time since system start (microseconds) float32 lateral_accel_max # [m/s^2] currently maps to a maximum roll angle, accel_max = tan(roll_max) * GRAVITY - ``` + +::: diff --git a/docs/uk/msg_docs/LaunchDetectionStatus.md b/docs/uk/msg_docs/LaunchDetectionStatus.md index 0356689770..b19d12d773 100644 --- a/docs/uk/msg_docs/LaunchDetectionStatus.md +++ b/docs/uk/msg_docs/LaunchDetectionStatus.md @@ -1,8 +1,34 @@ +--- +pageClass: is-wide-page +--- + # LaunchDetectionStatus (повідомлення UORB) -Стан машини виявлення запуску (тільки фіксованокрил) +Status of the launch detection state machine (fixed-wing only). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LaunchDetectionStatus.msg) +**TOPICS:** launch_detectionstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| launch_detection_state | `uint8` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| STATE_WAITING_FOR_LAUNCH | `uint8` | 0 | waiting for launch | +| STATE_LAUNCH_DETECTED_DISABLED_MOTOR | `uint8` | 1 | launch detected, but keep motor(s) disabled (e.g. because it can't spin freely while on catapult) | +| STATE_FLYING | `uint8` | 2 | launch detected, use normal takeoff/flying configuration | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LaunchDetectionStatus.msg) + +:::details +Click here to see original file ```c # Status of the launch detection state machine (fixed-wing only) @@ -14,5 +40,6 @@ uint8 STATE_LAUNCH_DETECTED_DISABLED_MOTOR = 1 # launch detected, but keep moto uint8 STATE_FLYING = 2 # launch detected, use normal takeoff/flying configuration uint8 launch_detection_state - ``` + +::: diff --git a/docs/uk/msg_docs/LedControl.md b/docs/uk/msg_docs/LedControl.md index fa0ca0b8ab..de36da51ab 100644 --- a/docs/uk/msg_docs/LedControl.md +++ b/docs/uk/msg_docs/LedControl.md @@ -1,9 +1,54 @@ +--- +pageClass: is-wide-page +--- + # LedControl (повідомлення UORB) -Керування світлодіодами: керування одним чи кількома світлодіодами. -Це зовнішні світлодіоди, а не світлодіоди плати +Керування світлодіодами: керування одним чи кількома світлодіодами. These are the externally visible LED's, not the board LED's. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LedControl.msg) +**TOPICS:** led_control + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| led_mask | `uint8` | | | bitmask which LED(s) to control, set to 0xff for all | +| color | `uint8` | | | see COLOR\_\* | +| mode | `uint8` | | | see MODE\_\* | +| num_blinks | `uint8` | | | how many times to blink (number of on-off cycles if mode is one of MODE_BLINK_\*) . Set to 0 for infinite | +| priority | `uint8` | | | priority: higher priority events will override current lower priority events (see MAX_PRIORITY) | + +## Constants + +| Назва | Тип | Значення | Опис | +| --------------------------------------------------------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| COLOR_OFF | `uint8` | 0 | this is only used in the drivers | +| COLOR_RED | `uint8` | 1 | | +| COLOR_GREEN | `uint8` | 2 | | +| COLOR_BLUE | `uint8` | 3 | | +| COLOR_YELLOW | `uint8` | 4 | | +| COLOR_PURPLE | `uint8` | 5 | | +| COLOR_AMBER | `uint8` | 6 | | +| COLOR_CYAN | `uint8` | 7 | | +| COLOR_WHITE | `uint8` | 8 | | +| MODE_OFF | `uint8` | 0 | turn LED off | +| MODE_ON | `uint8` | 1 | turn LED on | +| MODE_DISABLED | `uint8` | 2 | disable this priority (switch to lower priority setting) | +| MODE_BLINK_SLOW | `uint8` | 3 | | +| MODE_BLINK_NORMAL | `uint8` | 4 | | +| MODE_BLINK_FAST | `uint8` | 5 | | +| MODE_BREATHE | `uint8` | 6 | continuously increase & decrease brightness (solid color if driver does not support it) | +| MODE_FLASH | `uint8` | 7 | two fast blinks (on/off) with timing as in MODE_BLINK_FAST and then off for a while | +| MAX_PRIORITY | `uint8` | 2 | maximum priority (minimum is 0) | +| ORB_QUEUE_LENGTH | `uint8` | 8 | needs to match BOARD_MAX_LEDS | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LedControl.msg) + +:::details +Click here to see original file ```c # LED control: control a single or multiple LED's. @@ -43,5 +88,6 @@ uint8 num_blinks # how many times to blink (number of on-off cycles if mode is o uint8 priority # priority: higher priority events will override current lower priority events (see MAX_PRIORITY) uint8 ORB_QUEUE_LENGTH = 8 # needs to match BOARD_MAX_LEDS - ``` + +::: diff --git a/docs/uk/msg_docs/LogMessage.md b/docs/uk/msg_docs/LogMessage.md index 2350f93efe..4b24ffa4be 100644 --- a/docs/uk/msg_docs/LogMessage.md +++ b/docs/uk/msg_docs/LogMessage.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # LogMessage (повідомлення UORB) -Повідомлення логування, що виводиться з PX4_WARN, PX4_ERR, PX4_INFO +A logging message, output with PX4_WARN, PX4_ERR, PX4_INFO. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LogMessage.msg) +**TOPICS:** log_message + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| severity | `uint8` | | | log level (same as in the linux kernel, starting with 0) | +| text | `char[127]` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LogMessage.msg) + +:::details +Click here to see original file ```c # A logging message, output with PX4_WARN, PX4_ERR, PX4_INFO @@ -13,5 +38,6 @@ uint8 severity # log level (same as in the linux kernel, starting with 0) char[127] text uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/uk/msg_docs/LoggerStatus.md b/docs/uk/msg_docs/LoggerStatus.md index 81dd11e035..7267934916 100644 --- a/docs/uk/msg_docs/LoggerStatus.md +++ b/docs/uk/msg_docs/LoggerStatus.md @@ -1,6 +1,43 @@ +--- +pageClass: is-wide-page +--- + # LoggerStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LoggerStatus.msg) +**TOPICS:** logger_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| type | `uint8` | | | | +| backend | `uint8` | | | | +| is_logging | `bool` | | | | +| total_written_kb | `float32` | | | total written to log in kiloBytes | +| write_rate_kb_s | `float32` | | | write rate in kiloBytes/s | +| dropouts | `uint32` | | | number of failed buffer writes due to buffer overflow | +| message_gaps | `uint32` | | | messages misssed | +| buffer_used_bytes | `uint32` | | | current buffer fill in Bytes | +| buffer_size_bytes | `uint32` | | | total buffer size in Bytes | +| num_messages | `uint8` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------- | +| LOGGER_TYPE_FULL | `uint8` | 0 | Normal, full size log | +| LOGGER_TYPE_MISSION | `uint8` | 1 | reduced mission log (e.g. for geotagging) | +| BACKEND_FILE | `uint8` | 1 | | +| BACKEND_MAVLINK | `uint8` | 2 | | +| BACKEND_ALL | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LoggerStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -26,5 +63,6 @@ uint32 buffer_used_bytes # current buffer fill in Bytes uint32 buffer_size_bytes # total buffer size in Bytes uint8 num_messages - ``` + +::: diff --git a/docs/uk/msg_docs/LongitudinalControlConfiguration.md b/docs/uk/msg_docs/LongitudinalControlConfiguration.md index 901d5c23bc..56a4a1f3a4 100644 --- a/docs/uk/msg_docs/LongitudinalControlConfiguration.md +++ b/docs/uk/msg_docs/LongitudinalControlConfiguration.md @@ -1,10 +1,40 @@ +--- +pageClass: is-wide-page +--- + # LongitudinalControlConfiguration (UORB message) -Fixed Wing Longitudinal Control Configuration message -Used by the fw_lateral_longitudinal_control module and TECS to constrain FixedWingLongitudinalSetpoint messages -and configure the resultant setpoints. +Fixed Wing Longitudinal Control Configuration message. Used by the fw_lateral_longitudinal_control module and TECS to constrain FixedWingLongitudinalSetpoint messages. and configure the resultant setpoints. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/LongitudinalControlConfiguration.msg) +**TOPICS:** longitudinal_controlconfiguration + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| pitch_min | `float32` | rad | [-pi : pi] | defaults to FW_P_LIM_MIN if NAN. | +| pitch_max | `float32` | rad | [-pi : pi] | defaults to FW_P_LIM_MAX if NAN. | +| throttle_min | `float32` | norm | [0 : 1] | deaults to FW_THR_MIN if NAN. | +| throttle_max | `float32` | norm | [0 : 1] | defaults to FW_THR_MAX if NAN. | +| climb_rate_target | `float32` | m/s | | target climbrate to change altitude. Defaults to FW_T_CLIMB_MAX if NAN. Not used if height_rate is directly set in FixedWingLongitudinalSetpoint. | +| sink_rate_target | `float32` | m/s | | target sinkrate to change altitude. Defaults to FW_T_SINK_MAX if NAN. Not used if height_rate is directly set in FixedWingLongitudinalSetpoint. | +| speed_weight | `float32` | | [0 : 2] | , 0=pitch controls altitude only, 2=pitch controls airspeed only | +| enforce_low_height_condition | `bool` | boolean | | if true, the altitude controller is configured with an alternative timeconstant for tighter altitude tracking | +| disable_underspeed_protection | `bool` | boolean | | if true, underspeed handling is disabled in the altitude controller | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/LongitudinalControlConfiguration.msg) + +:::details +Click here to see original file ```c # Fixed Wing Longitudinal Control Configuration message @@ -24,5 +54,6 @@ float32 sink_rate_target # [m/s] target sinkrate to change altitude. Defaults float32 speed_weight # [@range 0,2], 0=pitch controls altitude only, 2=pitch controls airspeed only bool enforce_low_height_condition # [boolean] if true, the altitude controller is configured with an alternative timeconstant for tighter altitude tracking bool disable_underspeed_protection # [boolean] if true, underspeed handling is disabled in the altitude controller - ``` + +::: diff --git a/docs/uk/msg_docs/MagWorkerData.md b/docs/uk/msg_docs/MagWorkerData.md index d761c92843..acd9753f80 100644 --- a/docs/uk/msg_docs/MagWorkerData.md +++ b/docs/uk/msg_docs/MagWorkerData.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # MagWorkerData (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MagWorkerData.msg) +**TOPICS:** mag_workerdata + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| done_count | `uint32` | | | | +| calibration_points_perside | `uint32` | | | | +| calibration_interval_perside_us | `uint64` | | | | +| calibration_counter_total | `uint32[4]` | | | | +| side_data_collected | `bool[4]` | | | | +| x | `float32[4]` | | | | +| y | `float32[4]` | | | | +| z | `float32[4]` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------ | ------- | -------- | ---- | +| MAX_MAGS | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MagWorkerData.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -16,5 +48,6 @@ bool[4] side_data_collected float32[4] x float32[4] y float32[4] z - ``` + +::: diff --git a/docs/uk/msg_docs/MagnetometerBiasEstimate.md b/docs/uk/msg_docs/MagnetometerBiasEstimate.md index 0c8c28af9b..c31b62b822 100644 --- a/docs/uk/msg_docs/MagnetometerBiasEstimate.md +++ b/docs/uk/msg_docs/MagnetometerBiasEstimate.md @@ -1,6 +1,28 @@ +--- +pageClass: is-wide-page +--- + # MagnetometerBiasEstimate (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MagnetometerBiasEstimate.msg) +**TOPICS:** magnetometer_biasestimate + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| bias_x | `float32[4]` | | | estimated X-bias of all the sensors | +| bias_y | `float32[4]` | | | estimated Y-bias of all the sensors | +| bias_z | `float32[4]` | | | estimated Z-bias of all the sensors | +| valid | `bool[4]` | | | true if the estimator has converged | +| stable | `bool[4]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MagnetometerBiasEstimate.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +33,6 @@ float32[4] bias_z # estimated Z-bias of all the sensors bool[4] valid # true if the estimator has converged bool[4] stable - ``` + +::: diff --git a/docs/uk/msg_docs/ManualControlSetpoint.md b/docs/uk/msg_docs/ManualControlSetpoint.md index e15a85420a..4097d7f05a 100644 --- a/docs/uk/msg_docs/ManualControlSetpoint.md +++ b/docs/uk/msg_docs/ManualControlSetpoint.md @@ -1,6 +1,53 @@ +--- +pageClass: is-wide-page +--- + # ManualControlSetpoint (Повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ManualControlSetpoint.msg) +**TOPICS:** manual_control_setpoint manual_control_input + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| valid | `bool` | | | | +| data_source | `uint8` | | | | +| roll | `float32` | | | move right, positive roll rotation, right side down | +| pitch | `float32` | | | move forward, negative pitch rotation, nose down | +| yaw | `float32` | | | positive yaw rotation, clockwise when seen top down | +| throttle | `float32` | | | move up, positive thrust, -1 is minimum available 0% or -100% +1 is 100% thrust | +| flaps | `float32` | | | position of flaps switch/knob/lever [-1, 1] | +| aux1 | `float32` | | | | +| aux2 | `float32` | | | | +| aux3 | `float32` | | | | +| aux4 | `float32` | | | | +| aux5 | `float32` | | | | +| aux6 | `float32` | | | | +| sticks_moving | `bool` | | | | +| buttons | `uint16` | | | From uint16 buttons field of Mavlink manual_control message | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | -------- | -------- | ---------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| SOURCE_UNKNOWN | `uint8` | 0 | | +| SOURCE_RC | `uint8` | 1 | radio control (input_rc) | +| SOURCE_MAVLINK_0 | `uint8` | 2 | mavlink instance 0 | +| SOURCE_MAVLINK_1 | `uint8` | 3 | mavlink instance 1 | +| SOURCE_MAVLINK_2 | `uint8` | 4 | mavlink instance 2 | +| SOURCE_MAVLINK_3 | `uint8` | 5 | mavlink instance 3 | +| SOURCE_MAVLINK_4 | `uint8` | 6 | mavlink instance 4 | +| SOURCE_MAVLINK_5 | `uint8` | 7 | mavlink instance 5 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ManualControlSetpoint.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -51,5 +98,6 @@ uint16 buttons # From uint16 buttons field of Mavlink manual_control message # DEPRECATED: float32 y # DEPRECATED: float32 z # DEPRECATED: float32 r - ``` + +::: diff --git a/docs/uk/msg_docs/ManualControlSwitches.md b/docs/uk/msg_docs/ManualControlSwitches.md index 189682730f..67b16ae32b 100644 --- a/docs/uk/msg_docs/ManualControlSwitches.md +++ b/docs/uk/msg_docs/ManualControlSwitches.md @@ -1,6 +1,55 @@ +--- +pageClass: is-wide-page +--- + # ManualControlSwitches (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ManualControlSwitches.msg) +**TOPICS:** manual_controlswitches + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| mode_slot | `uint8` | | | the slot a specific model selector is in | +| arm_switch | `uint8` | | | arm/disarm switch: _DISARMED_, ARMED | +| return_switch | `uint8` | | | return to launch 2 position switch (mandatory): _NORMAL_, RTL | +| loiter_switch | `uint8` | | | loiter 2 position switch (optional): _MISSION_, LOITER | +| offboard_switch | `uint8` | | | offboard 2 position switch (optional): _NORMAL_, OFFBOARD | +| kill_switch | `uint8` | | | throttle kill: _NORMAL_, KILL | +| termination_switch | `uint8` | | | trigger termination which cannot be undone | +| gear_switch | `uint8` | | | landing gear switch: _DOWN_, UP | +| transition_switch | `uint8` | | | VTOL transition switch: \_HOVER, FORWARD_FLIGHT | +| photo_switch | `uint8` | | | Photo trigger switch | +| video_switch | `uint8` | | | Photo trigger switch | +| engage_main_motor_switch | `uint8` | | | Engage the main motor (for helicopters) | +| payload_power_switch | `uint8` | | | Payload power switch | +| switch_changes | `uint32` | | | number of switch changes | + +## Constants + +| Назва | Тип | Значення | Опис | +| --------------------------------------------------------------------------------------------- | ------- | -------- | ---------------------------------------------------- | +| SWITCH_POS_NONE | `uint8` | 0 | switch is not mapped | +| SWITCH_POS_ON | `uint8` | 1 | switch activated (value = 1) | +| SWITCH_POS_MIDDLE | `uint8` | 2 | middle position (value = 0) | +| SWITCH_POS_OFF | `uint8` | 3 | switch not activated (value = -1) | +| MODE_SLOT_NONE | `uint8` | 0 | no mode slot assigned | +| MODE_SLOT_1 | `uint8` | 1 | mode slot 1 selected | +| MODE_SLOT_2 | `uint8` | 2 | mode slot 2 selected | +| MODE_SLOT_3 | `uint8` | 3 | mode slot 3 selected | +| MODE_SLOT_4 | `uint8` | 4 | mode slot 4 selected | +| MODE_SLOT_5 | `uint8` | 5 | mode slot 5 selected | +| MODE_SLOT_6 | `uint8` | 6 | mode slot 6 selected | +| MODE_SLOT_NUM | `uint8` | 6 | number of slots | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ManualControlSwitches.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -40,5 +89,6 @@ uint8 engage_main_motor_switch # Engage the main motor (for helicopters) uint8 payload_power_switch # Payload power switch uint32 switch_changes # number of switch changes - ``` + +::: diff --git a/docs/uk/msg_docs/MavlinkLog.md b/docs/uk/msg_docs/MavlinkLog.md index 5d074bb2b9..fcd74d3766 100644 --- a/docs/uk/msg_docs/MavlinkLog.md +++ b/docs/uk/msg_docs/MavlinkLog.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # MavlinkLog (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MavlinkLog.msg) +**TOPICS:** mavlink_log + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| text | `char[127]` | | | | +| severity | `uint8` | | | log level (same as in the linux kernel, starting with 0) | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MavlinkLog.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,5 +34,6 @@ char[127] text uint8 severity # log level (same as in the linux kernel, starting with 0) uint8 ORB_QUEUE_LENGTH = 8 - ``` + +::: diff --git a/docs/uk/msg_docs/MavlinkTunnel.md b/docs/uk/msg_docs/MavlinkTunnel.md index 33031d3a2b..46bd317a62 100644 --- a/docs/uk/msg_docs/MavlinkTunnel.md +++ b/docs/uk/msg_docs/MavlinkTunnel.md @@ -1,8 +1,46 @@ +--- +pageClass: is-wide-page +--- + # MavlinkTunnel (повідомлення UORB) -MAV_TUNNEL_PAYLOAD_TYPE enum +MAV_TUNNEL_PAYLOAD_TYPE enum. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MavlinkTunnel.msg) +**TOPICS:** mavlink_tunnel esc_serial_passthru io_serial_passthru + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | Time since system start (microseconds) | +| payload_type | `uint16` | | | A code that identifies the content of the payload (0 for unknown, which is the default). If this code is less than 32768, it is a 'registered' payload type and the corresponding code should be added to the MAV_TUNNEL_PAYLOAD_TYPE enum. Software creators can register blocks of types as needed. Codes greater than 32767 are considered local experiments and should not be checked in to any widely distributed codebase. | +| target_system | `uint8` | | | System ID (can be 0 for broadcast, but this is discouraged) | +| target_component | `uint8` | | | Component ID (can be 0 for broadcast, but this is discouraged) | +| payload_length | `uint8` | | | Length of the data transported in payload | +| payload | `uint8[128]` | | | Data itself | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | -------- | ---------------------------------------- | +| MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN | `uint8` | 0 | Encoding of payload unknown | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0 | `uint8` | 200 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1 | `uint8` | 201 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2 | `uint8` | 202 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3 | `uint8` | 203 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4 | `uint8` | 204 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5 | `uint8` | 205 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6 | `uint8` | 206 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7 | `uint8` | 207 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8 | `uint8` | 208 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9 | `uint8` | 209 | Registered for STorM32 gimbal controller | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MavlinkTunnel.msg) + +:::details +Click here to see original file ```c # MAV_TUNNEL_PAYLOAD_TYPE enum @@ -27,6 +65,7 @@ uint8 payload_length # Length of the data transported in payload uint8[128] payload # Data itself # Topic aliases for known payload types -# TOPICS mavlink_tunnel esc_serial_passthru - +# TOPICS mavlink_tunnel esc_serial_passthru io_serial_passthru ``` + +::: diff --git a/docs/uk/msg_docs/MessageFormatRequest.md b/docs/uk/msg_docs/MessageFormatRequest.md index a141574434..3441e06d5f 100644 --- a/docs/uk/msg_docs/MessageFormatRequest.md +++ b/docs/uk/msg_docs/MessageFormatRequest.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # MessageFormatRequest (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MessageFormatRequest.msg) +**TOPICS:** message_formatrequest + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| protocol_version | `uint16` | | | Must be set to LATEST_PROTOCOL_VERSION. Do not change this field, it must be the first field after the timestamp | +| topic_name | `char[50]` | | | Наприклад, /fmu/in/vehicle_command | + +## Constants + +| Назва | Тип | Значення | Опис | +| --------------------------------------------------------------------------------------------------------- | -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| LATEST_PROTOCOL_VERSION | `uint16` | 1 | Current version of this protocol. Increase this whenever the MessageFormatRequest or MessageFormatResponse changes. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MessageFormatRequest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -12,5 +37,6 @@ uint16 LATEST_PROTOCOL_VERSION = 1 # Current version of this protocol. Increase uint16 protocol_version # Must be set to LATEST_PROTOCOL_VERSION. Do not change this field, it must be the first field after the timestamp char[50] topic_name # E.g. /fmu/in/vehicle_command - ``` + +::: diff --git a/docs/uk/msg_docs/MessageFormatResponse.md b/docs/uk/msg_docs/MessageFormatResponse.md index 5b9bd86917..4a92cbb530 100644 --- a/docs/uk/msg_docs/MessageFormatResponse.md +++ b/docs/uk/msg_docs/MessageFormatResponse.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # MessageFormatResponse (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MessageFormatResponse.msg) +**TOPICS:** message_formatresponse + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| protocol_version | `uint16` | | | Must be set to LATEST_PROTOCOL_VERSION. Do not change this field, it must be the first field after the timestamp | +| topic_name | `char[50]` | | | Наприклад, /fmu/in/vehicle_command | +| success | `bool` | | | | +| message_hash | `uint32` | | | hash over all message fields | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MessageFormatResponse.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -13,5 +34,6 @@ char[50] topic_name # E.g. /fmu/in/vehicle_command bool success uint32 message_hash # hash over all message fields - ``` + +::: diff --git a/docs/uk/msg_docs/Mission.md b/docs/uk/msg_docs/Mission.md index 7abe5c2aca..6d138c850e 100644 --- a/docs/uk/msg_docs/Mission.md +++ b/docs/uk/msg_docs/Mission.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # Місія (Повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Mission.msg) +**TOPICS:** mission + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mission_dataman_id | `uint8` | | | default 0, there are two offboard storage places in the dataman: 0 or 1 | +| fence_dataman_id | `uint8` | | | default 0, there are two offboard storage places in the dataman: 0 or 1 | +| safepoint_dataman_id | `uint8` | | | default 0, there are two offboard storage places in the dataman: 0 or 1 | +| count | `uint16` | | | count of the missions stored in the dataman | +| current_seq | `int32` | | | default -1, start at the one changed latest | +| land_start_index | `int32` | | | Index of the land start marker, if unavailable index of the land item, -1 otherwise | +| land_index | `int32` | | | Index of the land item, -1 otherwise | +| mission_id | `uint32` | | | indicates updates to the mission, reload from dataman if changed | +| geofence_id | `uint32` | | | indicates updates to the geofence, reload from dataman if changed | +| safe_points_id | `uint32` | | | indicates updates to the safe points, reload from dataman if changed | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Mission.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -17,5 +44,6 @@ int32 land_index # Index of the land item, -1 otherwise uint32 mission_id # indicates updates to the mission, reload from dataman if changed uint32 geofence_id # indicates updates to the geofence, reload from dataman if changed uint32 safe_points_id # indicates updates to the safe points, reload from dataman if changed - ``` + +::: diff --git a/docs/uk/msg_docs/MissionResult.md b/docs/uk/msg_docs/MissionResult.md index 60ee84c923..8f8a00f2f5 100644 --- a/docs/uk/msg_docs/MissionResult.md +++ b/docs/uk/msg_docs/MissionResult.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # MissionResult (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MissionResult.msg) +**TOPICS:** mission_result + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mission_id | `uint32` | | | Id for the mission for which the result was generated | +| geofence_id | `uint32` | | | Id for the corresponding geofence for which the result was generated (used for mission feasibility) | +| home_position_counter | `uint32` | | | Counter of the home position for which the result was generated (used for mission feasibility) | +| seq_reached | `int32` | | | Sequence of the mission item which has been reached, default -1 | +| seq_current | `uint16` | | | Sequence of the current mission item | +| seq_total | `uint16` | | | Total number of mission items | +| valid | `bool` | | | true if mission is valid | +| warning | `bool` | | | true if mission is valid, but has potentially problematic items leading to safety warnings | +| finished | `bool` | | | true if mission has been completed | +| failure | `bool` | | | true if the mission cannot continue or be completed for some reason | +| item_do_jump_changed | `bool` | | | true if the number of do jumps remaining has changed | +| item_changed_index | `uint16` | | | indicate which item has changed | +| item_do_jump_remaining | `uint16` | | | set to the number of do jumps remaining for that item | +| execution_mode | `uint8` | | | indicates the mode in which the mission is executed | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MissionResult.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -23,5 +54,6 @@ uint16 item_changed_index # indicate which item has changed uint16 item_do_jump_remaining # set to the number of do jumps remaining for that item uint8 execution_mode # indicates the mode in which the mission is executed - ``` + +::: diff --git a/docs/uk/msg_docs/ModeCompleted.md b/docs/uk/msg_docs/ModeCompleted.md index ec56e5c2d9..a0fbade04a 100644 --- a/docs/uk/msg_docs/ModeCompleted.md +++ b/docs/uk/msg_docs/ModeCompleted.md @@ -1,10 +1,35 @@ +--- +pageClass: is-wide-page +--- + # ModeCompleted (повідомлення UORB) -Результат завершення режиму, опублікований активним режимом. -Можливі значення nav_state визначені в повідомленні VehicleStatus. -Зверніть увагу, що це не завжди публікується (наприклад, коли користувач переходить у режими або при активації failsafe) +Результат завершення режиму, опублікований активним режимом. Можливі значення nav_state визначені в повідомленні VehicleStatus. Note that this is not always published (e.g. when a user switches modes or on. failsafe activation). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ModeCompleted.msg) +**TOPICS:** mode_completed + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| result | `uint8` | | | One of RESULT\_\* | +| nav_state | `uint8` | | | Source mode (values in VehicleStatus) | + +## Constants + +| Назва | Тип | Значення | Опис | +| --------------------------------------------------------------------------------------------------- | -------- | -------- | ---------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| RESULT_SUCCESS | `uint8` | 0 | | +| RESULT_FAILURE_OTHER | `uint8` | 100 | Mode failed (generic error) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ModeCompleted.msg) + +:::details +Click here to see original file ```c # Mode completion result, published by an active mode. @@ -24,5 +49,6 @@ uint8 RESULT_FAILURE_OTHER = 100 # Mode failed (generic error) uint8 result # One of RESULT_* uint8 nav_state # Source mode (values in VehicleStatus) - ``` + +::: diff --git a/docs/uk/msg_docs/MountOrientation.md b/docs/uk/msg_docs/MountOrientation.md index 31d4a888b5..d8ca03793b 100644 --- a/docs/uk/msg_docs/MountOrientation.md +++ b/docs/uk/msg_docs/MountOrientation.md @@ -1,9 +1,28 @@ +--- +pageClass: is-wide-page +--- + # MountOrientation (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MountOrientation.msg) +**TOPICS:** mount_orientation + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| attitude_euler_angle | `float32[3]` | | | Attitude/direction of the mount as euler angles in rad | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MountOrientation.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) float32[3] attitude_euler_angle # Attitude/direction of the mount as euler angles in rad - ``` + +::: diff --git a/docs/uk/msg_docs/NavigatorMissionItem.md b/docs/uk/msg_docs/NavigatorMissionItem.md index 0899681c54..f4514dd297 100644 --- a/docs/uk/msg_docs/NavigatorMissionItem.md +++ b/docs/uk/msg_docs/NavigatorMissionItem.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # NavigatorMissionItem (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NavigatorMissionItem.msg) +**TOPICS:** navigator_missionitem + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| sequence_current | `uint16` | | | Sequence of the current mission item | +| nav_cmd | `uint16` | | | | +| latitude | `float32` | | | | +| longitude | `float32` | | | | +| time_inside | `float32` | | | time that the MAV should stay inside the radius before advancing in seconds | +| acceptance_radius | `float32` | | | default radius in which the mission is accepted as reached in meters | +| loiter_radius | `float32` | | | loiter radius in meters, 0 for a VTOL to hover, negative for counter-clockwise | +| yaw | `float32` | | | in radians NED -PI..+PI, NAN means don't change yaw | +| altitude | `float32` | | | altitude in meters (AMSL) | +| frame | `uint8` | | | mission frame | +| origin | `uint8` | | | mission item origin (onboard or mavlink) | +| loiter_exit_xtrack | `bool` | | | exit xtrack location: 0 for center of loiter wp, 1 for exit location | +| force_heading | `bool` | | | heading needs to be reached | +| altitude_is_relative | `bool` | | | true if altitude is relative from start point | +| autocontinue | `bool` | | | true if next waypoint should follow after this one | +| vtol_back_transition | `bool` | | | part of the vtol back transition sequence | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NavigatorMissionItem.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -26,5 +59,6 @@ bool force_heading # heading needs to be reached bool altitude_is_relative # true if altitude is relative from start point bool autocontinue # true if next waypoint should follow after this one bool vtol_back_transition # part of the vtol back transition sequence - ``` + +::: diff --git a/docs/uk/msg_docs/NavigatorStatus.md b/docs/uk/msg_docs/NavigatorStatus.md index 4eb53a56c8..3e0086ba8f 100644 --- a/docs/uk/msg_docs/NavigatorStatus.md +++ b/docs/uk/msg_docs/NavigatorStatus.md @@ -1,9 +1,34 @@ +--- +pageClass: is-wide-page +--- + # NavigatorStatus (UORB message) -Current status of a Navigator mode -The possible values of nav_state are defined in the VehicleStatus msg. +Current status of a Navigator mode. Можливі значення nav_state визначені в повідомленні VehicleStatus. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NavigatorStatus.msg) +**TOPICS:** navigator_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| nav_state | `uint8` | | | Source mode (values in VehicleStatus) | +| failure | `uint8` | | | Navigator failure enum | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------- | ------- | -------- | --------------------------------------------------- | +| FAILURE_NONE | `uint8` | 0 | | +| FAILURE_HAGL | `uint8` | 1 | Target altitude exceeds maximum height above ground | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NavigatorStatus.msg) + +:::details +Click here to see original file ```c # Current status of a Navigator mode @@ -15,5 +40,6 @@ uint8 failure # Navigator failure enum uint8 FAILURE_NONE = 0 uint8 FAILURE_HAGL = 1 # Target altitude exceeds maximum height above ground - ``` + +::: diff --git a/docs/uk/msg_docs/NeuralControl.md b/docs/uk/msg_docs/NeuralControl.md index 3e99004fbc..0c9ad59799 100644 --- a/docs/uk/msg_docs/NeuralControl.md +++ b/docs/uk/msg_docs/NeuralControl.md @@ -1,12 +1,33 @@ +--- +pageClass: is-wide-page +--- + # NeuralControl (UORB message) -Neural control +Neural control. Debugging topic for the Neural controller, logs the inputs and output vectors of the neural network, and the time it takes to run Publisher: mc_nn_control Subscriber: logger -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NeuralControl.msg) +**TOPICS:** neural_control + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------ | ------------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| observation | `float32[15]` | | | Observation vector (pos error (3), att (6d), lin vel (3), ang vel (3)) | +| network_output | `float32[4]` | | | Output from neural network | +| controller_time | `int32` | us | | Time spent from input to output | +| inference_time | `int32` | us | | Time spent for NN inference | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NeuralControl.msg) + +:::details +Click here to see original file ```c # Neural control @@ -22,5 +43,6 @@ float32[4] network_output # Output from neural network int32 controller_time # [us] Time spent from input to output int32 inference_time # [us] Time spent for NN inference - ``` + +::: diff --git a/docs/uk/msg_docs/NormalizedUnsignedSetpoint.md b/docs/uk/msg_docs/NormalizedUnsignedSetpoint.md index 8533b090ae..ef6afb1e6a 100644 --- a/docs/uk/msg_docs/NormalizedUnsignedSetpoint.md +++ b/docs/uk/msg_docs/NormalizedUnsignedSetpoint.md @@ -1,6 +1,24 @@ +--- +pageClass: is-wide-page +--- + # NormalizedUnsignedSetpoint (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NormalizedUnsignedSetpoint.msg) +**TOPICS:** flaps_setpoint spoilers_setpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| normalized_setpoint | `float32` | 0, 1 | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NormalizedUnsignedSetpoint.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +26,6 @@ uint64 timestamp # time since system start (microseconds) float32 normalized_setpoint # [0, 1] # TOPICS flaps_setpoint spoilers_setpoint - ``` + +::: diff --git a/docs/uk/msg_docs/ObstacleDistance.md b/docs/uk/msg_docs/ObstacleDistance.md index 1f295c1b4c..de752880f8 100644 --- a/docs/uk/msg_docs/ObstacleDistance.md +++ b/docs/uk/msg_docs/ObstacleDistance.md @@ -1,8 +1,44 @@ +--- +pageClass: is-wide-page +--- + # ObstacleDistance (повідомлення UORB) Відстані перешкод перед сенсором. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ObstacleDistance.msg) +**TOPICS:** obstacle_distance obstacle_distance_fused + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| frame | `uint8` | | | Coordinate frame of reference for the yaw rotation and offset of the sensor data. Defaults to MAV_FRAME_GLOBAL, which is North aligned. For body-mounted sensors use MAV_FRAME_BODY_FRD, which is vehicle front aligned. | +| sensor_type | `uint8` | | | Type from MAV_DISTANCE_SENSOR enum. | +| distances | `uint16[72]` | | | Distance of obstacles around the UAV with index 0 corresponding to local North. A value of 0 means that the obstacle is right in front of the sensor. A value of max_distance +1 means no obstacle is present. A value of UINT16_MAX for unknown/not used. In a array element, one unit corresponds to 1cm. | +| increment | `float32` | | | Angular width in degrees of each array element. | +| min_distance | `uint16` | | | Minimum distance the sensor can measure in centimeters. | +| max_distance | `uint16` | | | Maximum distance the sensor can measure in centimeters. | +| angle_offset | `float32` | | | Relative angle offset of the 0-index element in the distances array. Value of 0 corresponds to forward. Positive is clockwise direction, negative is counter-clockwise. | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| MAV_FRAME_GLOBAL | `uint8` | 0 | | +| MAV_FRAME_LOCAL_NED | `uint8` | 1 | | +| MAV_FRAME_BODY_FRD | `uint8` | 12 | | +| MAV_DISTANCE_SENSOR_LASER | `uint8` | 0 | | +| MAV_DISTANCE_SENSOR_ULTRASOUND | `uint8` | 1 | | +| MAV_DISTANCE_SENSOR_INFRARED | `uint8` | 2 | | +| MAV_DISTANCE_SENSOR_RADAR | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ObstacleDistance.msg) + +:::details +Click here to see original file ```c # Obstacle distances in front of the sensor. @@ -29,5 +65,6 @@ uint16 max_distance # Maximum distance the sensor can measure in centimeters. float32 angle_offset # Relative angle offset of the 0-index element in the distances array. Value of 0 corresponds to forward. Positive is clockwise direction, negative is counter-clockwise. # TOPICS obstacle_distance obstacle_distance_fused - ``` + +::: diff --git a/docs/uk/msg_docs/OffboardControlMode.md b/docs/uk/msg_docs/OffboardControlMode.md index 4499912d95..577e60c071 100644 --- a/docs/uk/msg_docs/OffboardControlMode.md +++ b/docs/uk/msg_docs/OffboardControlMode.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # OffboardControlMode (UORB message) -Off-board control mode +Off-board control mode. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OffboardControlMode.msg) +**TOPICS:** offboard_controlmode + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| положення | `bool` | | | | +| швидкість | `bool` | | | | +| acceleration | `bool` | | | | +| attitude | `bool` | | | | +| body_rate | `bool` | | | | +| thrust_and_torque | `bool` | | | | +| direct_actuator | `bool` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OffboardControlMode.msg) + +:::details +Click here to see original file ```c # Off-board control mode @@ -16,5 +40,6 @@ bool attitude bool body_rate bool thrust_and_torque bool direct_actuator - ``` + +::: diff --git a/docs/uk/msg_docs/OnboardComputerStatus.md b/docs/uk/msg_docs/OnboardComputerStatus.md index 9cc80e7402..a432555f4e 100644 --- a/docs/uk/msg_docs/OnboardComputerStatus.md +++ b/docs/uk/msg_docs/OnboardComputerStatus.md @@ -1,8 +1,44 @@ +--- +pageClass: is-wide-page +--- + # OnboardComputerStatus (повідомлення UORB) -ONBOARD_COMPUTER_STATUS ДАНІ ПОВІДОМЛЕННЯ ПРО СТАН БОРТОВОГО КОМП'ЮТЕРА +ONBOARD_COMPUTER_STATUS message data. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OnboardComputerStatus.msg) +**TOPICS:** onboard_computerstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------ | ----------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | time since system start (microseconds) | +| uptime | `uint32` | ms | | time since system boot of the companion (milliseconds) | +| type | `uint8` | | | type of onboard computer 0: Mission computer primary, 1: Mission computer backup 1, 2: Mission computer backup 2, 3: Compute node, 4-5: Compute spares, 6-9: Payload computers. | +| cpu_cores | `uint8[8]` | | | CPU usage on the component in percent | +| cpu_combined | `uint8[10]` | | | Combined CPU usage as the last 10 slices of 100 MS | +| gpu_cores | `uint8[4]` | | | GPU usage on the component in percent | +| gpu_combined | `uint8[10]` | | | Combined GPU usage as the last 10 slices of 100 MS | +| temperature_board | `int8` | degC | | Temperature of the board | +| temperature_core | `int8[8]` | degC | | Temperature of the CPU core | +| fan_speed | `int16[4]` | rpm | | Fan speeds | +| ram_usage | `uint32` | MB | | Amount of used RAM on the component system | +| ram_total | `uint32` | MB | | Total amount of RAM on the component system | +| storage_type | `uint32[4]` | | | Storage type: 0: HDD, 1: SSD, 2: EMMC, 3: SD card (non-removable), 4: SD card (removable) | +| storage_usage | `uint32[4]` | MB | | Amount of used storage space on the component system | +| storage_total | `uint32[4]` | MB | | Total amount of storage space on the component system | +| link_type | `uint32[6]` | Kb/s | | Link type: 0-9: UART, 10-19: Wired network, 20-29: Wifi, 30-39: Point-to-point proprietary, 40-49: Mesh proprietary | +| link_tx_rate | `uint32[6]` | Kb/s | | Network traffic from the component system | +| link_rx_rate | `uint32[6]` | Kb/s | | Network traffic to the component system | +| link_tx_max | `uint32[6]` | Kb/s | | Network capacity from the component system | +| link_rx_max | `uint32[6]` | Kb/s | | Network capacity to the component system | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OnboardComputerStatus.msg) + +:::details +Click here to see original file ```c # ONBOARD_COMPUTER_STATUS message data @@ -28,5 +64,6 @@ uint32[6] link_tx_rate # [Kb/s] Network traffic from the component system uint32[6] link_rx_rate # [Kb/s] Network traffic to the component system uint32[6] link_tx_max # [Kb/s] Network capacity from the component system uint32[6] link_rx_max # [Kb/s] Network capacity to the component system - ``` + +::: diff --git a/docs/uk/msg_docs/OpenDroneIdArmStatus.md b/docs/uk/msg_docs/OpenDroneIdArmStatus.md index 152d34a166..1d85568e59 100644 --- a/docs/uk/msg_docs/OpenDroneIdArmStatus.md +++ b/docs/uk/msg_docs/OpenDroneIdArmStatus.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdArmStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdArmStatus.msg) +**TOPICS:** open_droneid_armstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | ---------- | ---------------------------------------------------------------- | ---------- | ---- | +| timestamp | `uint64` | | | | +| status | `uint8` | | | | +| error | `char[50]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdArmStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp uint8 status char[50] error - ``` + +::: diff --git a/docs/uk/msg_docs/OpenDroneIdOperatorId.md b/docs/uk/msg_docs/OpenDroneIdOperatorId.md index cafca0aa09..1b5b11ac79 100644 --- a/docs/uk/msg_docs/OpenDroneIdOperatorId.md +++ b/docs/uk/msg_docs/OpenDroneIdOperatorId.md @@ -1,11 +1,32 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdOperatorId (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdOperatorId.msg) +**TOPICS:** open_droneid_operatorid + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ---- | +| timestamp | `uint64` | | | | +| id_or_mac | `uint8[20]` | | | | +| operator_id_type | `uint8` | | | | +| operator_id | `char[20]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdOperatorId.msg) + +:::details +Click here to see original file ```c uint64 timestamp uint8[20] id_or_mac uint8 operator_id_type char[20] operator_id - ``` + +::: diff --git a/docs/uk/msg_docs/OpenDroneIdSelfId.md b/docs/uk/msg_docs/OpenDroneIdSelfId.md index 493be28d9f..cb2f0cae80 100644 --- a/docs/uk/msg_docs/OpenDroneIdSelfId.md +++ b/docs/uk/msg_docs/OpenDroneIdSelfId.md @@ -1,11 +1,32 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdSelfId (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdSelfId.msg) +**TOPICS:** open_droneid_selfid + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ---- | +| timestamp | `uint64` | | | | +| id_or_mac | `uint8[20]` | | | | +| description_type | `uint8` | | | | +| description | `char[23]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdSelfId.msg) + +:::details +Click here to see original file ```c uint64 timestamp uint8[20] id_or_mac uint8 description_type char[23] description - ``` + +::: diff --git a/docs/uk/msg_docs/OpenDroneIdSystem.md b/docs/uk/msg_docs/OpenDroneIdSystem.md index 402b7d0baf..c899b8b4e5 100644 --- a/docs/uk/msg_docs/OpenDroneIdSystem.md +++ b/docs/uk/msg_docs/OpenDroneIdSystem.md @@ -1,6 +1,35 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdSystem (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdSystem.msg) +**TOPICS:** open_droneid_system + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ---- | +| timestamp | `uint64` | | | | +| id_or_mac | `uint8[20]` | | | | +| operator_location_type | `uint8` | | | | +| classification_type | `uint8` | | | | +| operator_latitude | `int32` | | | | +| operator_longitude | `int32` | | | | +| area_count | `uint16` | | | | +| area_radius | `uint16` | | | | +| area_ceiling | `float32` | | | | +| area_floor | `float32` | | | | +| category_eu | `uint8` | | | | +| class_eu | `uint8` | | | | +| operator_altitude_geo | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdSystem.msg) + +:::details +Click here to see original file ```c uint64 timestamp @@ -16,5 +45,6 @@ float32 area_floor uint8 category_eu uint8 class_eu float32 operator_altitude_geo - ``` + +::: diff --git a/docs/uk/msg_docs/OrbTest.md b/docs/uk/msg_docs/OrbTest.md index b5ca87c539..88e62c96f1 100644 --- a/docs/uk/msg_docs/OrbTest.md +++ b/docs/uk/msg_docs/OrbTest.md @@ -1,6 +1,24 @@ +--- +pageClass: is-wide-page +--- + # OrbTest (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTest.msg) +**TOPICS:** orb_test orb_multitest + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| val | `int32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +26,6 @@ uint64 timestamp # time since system start (microseconds) int32 val # TOPICS orb_test orb_multitest - ``` + +::: diff --git a/docs/uk/msg_docs/OrbTestLarge.md b/docs/uk/msg_docs/OrbTestLarge.md index 2b6fd869f2..fc87d53530 100644 --- a/docs/uk/msg_docs/OrbTestLarge.md +++ b/docs/uk/msg_docs/OrbTestLarge.md @@ -1,6 +1,25 @@ +--- +pageClass: is-wide-page +--- + # OrbTestLarge (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTestLarge.msg) +**TOPICS:** orb_testlarge + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| val | `int32` | | | | +| junk | `uint8[512]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTestLarge.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +27,6 @@ uint64 timestamp # time since system start (microseconds) int32 val uint8[512] junk - ``` + +::: diff --git a/docs/uk/msg_docs/OrbTestMedium.md b/docs/uk/msg_docs/OrbTestMedium.md index 01a6a8c014..abc66d468e 100644 --- a/docs/uk/msg_docs/OrbTestMedium.md +++ b/docs/uk/msg_docs/OrbTestMedium.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # OrbTestMedium (Повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTestMedium.msg) +**TOPICS:** orb_test_medium orb_test_medium_multi orb_test_medium_wrap_around orb_test_medium_queue orb_test_medium_queue_poll + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| val | `int32` | | | | +| junk | `uint8[64]` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTestMedium.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -12,5 +37,6 @@ uint8[64] junk uint8 ORB_QUEUE_LENGTH = 16 # TOPICS orb_test_medium orb_test_medium_multi orb_test_medium_wrap_around orb_test_medium_queue orb_test_medium_queue_poll - ``` + +::: diff --git a/docs/uk/msg_docs/OrbitStatus.md b/docs/uk/msg_docs/OrbitStatus.md index e1a9c32baa..1965efea4e 100644 --- a/docs/uk/msg_docs/OrbitStatus.md +++ b/docs/uk/msg_docs/OrbitStatus.md @@ -1,8 +1,42 @@ +--- +pageClass: is-wide-page +--- + # OrbitStatus (UORB повідомлення) -ORBIT_YAW_BEHAVIOUR +ORBIT_YAW_BEHAVIOUR. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbitStatus.msg) +**TOPICS:** orbit_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| radius | `float32` | | | Radius of the orbit circle. Positive values orbit clockwise, negative values orbit counter-clockwise. [m] | +| frame | `uint8` | | | The coordinate system of the fields: x, y, z. | +| x | `float64` | | | X coordinate of center point. Coordinate system depends on frame field: local = x position in meters _ 1e4, global = latitude in degrees _ 1e7. | +| y | `float64` | | | Y coordinate of center point. Coordinate system depends on frame field: local = y position in meters _ 1e4, global = latitude in degrees _ 1e7. | +| z | `float32` | | | Altitude of center point. Coordinate system depends on frame field. | +| yaw_behaviour | `uint8` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER | `uint8` | 0 | | +| ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING | `uint8` | 1 | | +| ORBIT_YAW_BEHAVIOUR_UNCONTROLLED | `uint8` | 2 | | +| ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE | `uint8` | 3 | | +| ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED | `uint8` | 4 | | +| ORBIT_YAW_BEHAVIOUR_UNCHANGED | `uint8` | 5 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbitStatus.msg) + +:::details +Click here to see original file ```c # ORBIT_YAW_BEHAVIOUR @@ -20,5 +54,6 @@ float64 x # X coordinate of center point. Coordinate system depends on fr float64 y # Y coordinate of center point. Coordinate system depends on frame field: local = y position in meters * 1e4, global = latitude in degrees * 1e7. float32 z # Altitude of center point. Coordinate system depends on frame field. uint8 yaw_behaviour - ``` + +::: diff --git a/docs/uk/msg_docs/ParameterResetRequest.md b/docs/uk/msg_docs/ParameterResetRequest.md index 58734646be..a8561069aa 100644 --- a/docs/uk/msg_docs/ParameterResetRequest.md +++ b/docs/uk/msg_docs/ParameterResetRequest.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # ParameterResetRequest (повідомлення UORB) -ParameterResetRequest : Параметр скинути запит. Використовується в основному для скидання одного або всіх параметрів значення на віддаленому +ParameterResetRequest : Used by the primary to reset one or all parameter value(s) on the remote. -[вихідний файл](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterResetRequest.msg) +**TOPICS:** parameter_resetrequest + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | +| timestamp | `uint64` | | | | +| parameter_index | `uint16` | | | | +| reset_all | `bool` | | | If this is true then ignore parameter_index | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterResetRequest.msg) + +:::details +Click here to see original file ```c # ParameterResetRequest : Used by the primary to reset one or all parameter value(s) on the remote @@ -13,5 +38,6 @@ uint16 parameter_index bool reset_all # If this is true then ignore parameter_index uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/uk/msg_docs/ParameterSetUsedRequest.md b/docs/uk/msg_docs/ParameterSetUsedRequest.md index 283abb0d19..cab7fd68c2 100644 --- a/docs/uk/msg_docs/ParameterSetUsedRequest.md +++ b/docs/uk/msg_docs/ParameterSetUsedRequest.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # ParameterSetUsedRequest (повідомлення UORB) -ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary +ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary. -[вихідний файл](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetUsedRequest.msg) +**TOPICS:** parameter_setused_request + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | ---- | +| timestamp | `uint64` | | | | +| parameter_index | `uint16` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 64 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetUsedRequest.msg) + +:::details +Click here to see original file ```c # ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary @@ -11,5 +35,6 @@ uint64 timestamp uint16 parameter_index uint8 ORB_QUEUE_LENGTH = 64 - ``` + +::: diff --git a/docs/uk/msg_docs/ParameterSetValueRequest.md b/docs/uk/msg_docs/ParameterSetValueRequest.md index e17896a38c..71365d6507 100644 --- a/docs/uk/msg_docs/ParameterSetValueRequest.md +++ b/docs/uk/msg_docs/ParameterSetValueRequest.md @@ -1,8 +1,34 @@ +--- +pageClass: is-wide-page +--- + # ParameterSetValueRequest (UORB повідомлення) -ЗапитParameterSetValueRequest : Використовується віддалено або основним для оновлення значення параметра на іншому кінці +ParameterSetValueRequest : Used by a remote or primary to update the value for a parameter at the other end. -[вихідний файл](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetValueRequest.msg) +**TOPICS:** parameter_set_value_request parameter_remote_set_value_request parameter_primary_set_value_request + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------- | +| timestamp | `uint64` | | | | +| parameter_index | `uint16` | | | | +| int_value | `int32` | | | Optional value for an integer parameter | +| float_value | `float32` | | | Optional value for a float parameter | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 32 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetValueRequest.msg) + +:::details +Click here to see original file ```c # ParameterSetValueRequest : Used by a remote or primary to update the value for a parameter at the other end @@ -16,5 +42,6 @@ float32 float_value # Optional value for a float parameter uint8 ORB_QUEUE_LENGTH = 32 # TOPICS parameter_set_value_request parameter_remote_set_value_request parameter_primary_set_value_request - ``` + +::: diff --git a/docs/uk/msg_docs/ParameterSetValueResponse.md b/docs/uk/msg_docs/ParameterSetValueResponse.md index 4c0344c05b..3f09e4ea8c 100644 --- a/docs/uk/msg_docs/ParameterSetValueResponse.md +++ b/docs/uk/msg_docs/ParameterSetValueResponse.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # ParameterSetValueResponse (повідомлення UORB) -ВідповідьParameterSetValueResponse : Результат відповіді на запит на встановлення значення від будь-якого первинного або вторинного +ParameterSetValueResponse : Response to a set value request by either primary or secondary. -[вихідний файл](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetValueResponse.msg) +**TOPICS:** parameter_set_value_response parameter_remote_set_value_response parameter_primary_set_value_response + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ---- | +| timestamp | `uint64` | | | | +| request_timestamp | `uint64` | | | | +| parameter_index | `uint16` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetValueResponse.msg) + +:::details +Click here to see original file ```c # ParameterSetValueResponse : Response to a set value request by either primary or secondary @@ -14,5 +39,6 @@ uint16 parameter_index uint8 ORB_QUEUE_LENGTH = 4 # TOPICS parameter_set_value_response parameter_remote_set_value_response parameter_primary_set_value_response - ``` + +::: diff --git a/docs/uk/msg_docs/ParameterUpdate.md b/docs/uk/msg_docs/ParameterUpdate.md index f35da62edd..5f18f4615c 100644 --- a/docs/uk/msg_docs/ParameterUpdate.md +++ b/docs/uk/msg_docs/ParameterUpdate.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # Оновлення параметрів (Повідомлення UORB) -Це повідомлення використовується для повідомлення системі про одну або кілька змін параметрів +This message is used to notify the system about one or more parameter changes. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterUpdate.msg) +**TOPICS:** parameter_update + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| instance | `uint32` | | | Instance count - constantly incrementing | +| get_count | `uint32` | | | | +| set_count | `uint32` | | | | +| find_count | `uint32` | | | | +| export_count | `uint32` | | | | +| active | `uint16` | | | | +| changed | `uint16` | | | | +| custom_default | `uint16` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterUpdate.msg) + +:::details +Click here to see original file ```c # This message is used to notify the system about one or more parameter changes @@ -19,5 +44,6 @@ uint32 export_count uint16 active uint16 changed uint16 custom_default - ``` + +::: diff --git a/docs/uk/msg_docs/Ping.md b/docs/uk/msg_docs/Ping.md index 1cb8ac5413..ce97584f23 100644 --- a/docs/uk/msg_docs/Ping.md +++ b/docs/uk/msg_docs/Ping.md @@ -1,6 +1,29 @@ +--- +pageClass: is-wide-page +--- + # Ping (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Ping.msg) +**TOPICS:** ping + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| ping_time | `uint64` | | | Timestamp of the ping packet | +| ping_sequence | `uint32` | | | Sequence number of the ping packet | +| dropped_packets | `uint32` | | | Number of dropped ping packets | +| rtt_ms | `float32` | | | Round trip time (in ms) | +| system_id | `uint8` | | | System ID of the remote system | +| component_id | `uint8` | | | Component ID of the remote system | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Ping.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +33,6 @@ uint32 dropped_packets # Number of dropped ping packets float32 rtt_ms # Round trip time (in ms) uint8 system_id # System ID of the remote system uint8 component_id # Component ID of the remote system - ``` + +::: diff --git a/docs/uk/msg_docs/PositionControllerLandingStatus.md b/docs/uk/msg_docs/PositionControllerLandingStatus.md index 3e58676dc3..0be7fbf0eb 100644 --- a/docs/uk/msg_docs/PositionControllerLandingStatus.md +++ b/docs/uk/msg_docs/PositionControllerLandingStatus.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # PositionControllerLandingStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionControllerLandingStatus.msg) +**TOPICS:** position_controllerlanding_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------- | +| timestamp | `uint64` | us | | time since system start | +| lateral_touchdown_offset | `float32` | m | | lateral touchdown position offset manually commanded during landing | +| flaring | `bool` | | | true if the aircraft is flaring | +| abort_status | `uint8` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| --------------------------------------------------------------------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| NOT_ABORTED | `uint8` | 0 | | +| ABORTED_BY_OPERATOR | `uint8` | 1 | | +| TERRAIN_NOT_FOUND | `uint8` | 2 | FW_LND_ABORT (1 << 0) | +| TERRAIN_TIMEOUT | `uint8` | 3 | FW_LND_ABORT (1 << 1) | +| UNKNOWN_ABORT_CRITERION | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionControllerLandingStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # [us] time since system start @@ -19,5 +49,6 @@ uint8 ABORTED_BY_OPERATOR = 1 uint8 TERRAIN_NOT_FOUND = 2 # FW_LND_ABORT (1 << 0) uint8 TERRAIN_TIMEOUT = 3 # FW_LND_ABORT (1 << 1) uint8 UNKNOWN_ABORT_CRITERION = 4 - ``` + +::: diff --git a/docs/uk/msg_docs/PositionControllerStatus.md b/docs/uk/msg_docs/PositionControllerStatus.md index 2fadf80a9e..78bab1a3c6 100644 --- a/docs/uk/msg_docs/PositionControllerStatus.md +++ b/docs/uk/msg_docs/PositionControllerStatus.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # PositionControllerStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionControllerStatus.msg) +**TOPICS:** position_controllerstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| nav_roll | `float32` | | | Roll setpoint [rad] | +| nav_pitch | `float32` | | | Pitch setpoint [rad] | +| nav_bearing | `float32` | | | Bearing angle[rad] | +| target_bearing | `float32` | | | Bearing angle from aircraft to current target [rad] | +| xtrack_error | `float32` | | | Signed track error [m] | +| wp_dist | `float32` | | | Distance to active (next) waypoint [m] | +| acceptance_radius | `float32` | | | Current horizontal acceptance radius [m] | +| type | `uint8` | | | Current (applied) position setpoint type (see PositionSetpoint.msg) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionControllerStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -13,5 +38,6 @@ float32 xtrack_error # Signed track error [m] float32 wp_dist # Distance to active (next) waypoint [m] float32 acceptance_radius # Current horizontal acceptance radius [m] uint8 type # Current (applied) position setpoint type (see PositionSetpoint.msg) - ``` + +::: diff --git a/docs/uk/msg_docs/PositionSetpoint.md b/docs/uk/msg_docs/PositionSetpoint.md index bf390ac46b..c6b3cb23bb 100644 --- a/docs/uk/msg_docs/PositionSetpoint.md +++ b/docs/uk/msg_docs/PositionSetpoint.md @@ -1,8 +1,57 @@ +--- +pageClass: is-wide-page +--- + # PositionSetpoint (повідомлення UORB) -цей файл використовується лише у потрійному підпорядкуванні позиції як залежність +this file is only used in the position_setpoint triple as a dependency. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionSetpoint.msg) +**TOPICS:** position_setpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| valid | `bool` | | | true if setpoint is valid | +| type | `uint8` | | | setpoint type to adjust behavior of position controller | +| vx | `float32` | | | local velocity setpoint in m/s in NED | +| vy | `float32` | | | local velocity setpoint in m/s in NED | +| vz | `float32` | | | local velocity setpoint in m/s in NED | +| lat | `float64` | | | latitude, in deg | +| lon | `float64` | | | longitude, in deg | +| alt | `float32` | | | altitude AMSL, in m | +| yaw | `float32` | | | yaw (only in hover), in rad [-PI..PI), NaN = leave to flight task | +| loiter_radius | `float32` | m | [0 : INF] | loiter major axis radius | +| loiter_minor_radius | `float32` | m | [0 : INF] | loiter minor axis radius (used for non-circular loiter shapes) | +| loiter_direction_counter_clockwise | `bool` | | | loiter direction is clockwise by default and can be changed using this field | +| loiter_orientation | `float32` | rad | [-pi : pi] | orientation of the major axis with respect to true north | +| loiter_pattern | `uint8` | | | loitern pattern to follow | +| acceptance_radius | `float32` | | | horizontal acceptance_radius (meters) | +| alt_acceptance_radius | `float32` | | | vertical acceptance radius, only used for fixed wing guidance, NAN = let guidance choose (meters) | +| cruising_speed | `float32` | | | the generally desired cruising speed (not a hard constraint) | +| gliding_enabled | `bool` | | | commands the vehicle to glide if the capability is available (fixed wing only) | +| cruising_throttle | `float32` | | | the generally desired cruising throttle (not a hard constraint), only has an effect for rover | + +## Constants + +| Назва | Тип | Значення | Опис | +| --------------------------------------------------------------------------------------------------------- | ------- | -------- | --------------------------------------------------------------------------- | +| SETPOINT_TYPE_POSITION | `uint8` | 0 | position setpoint | +| SETPOINT_TYPE_VELOCITY | `uint8` | 1 | velocity setpoint | +| SETPOINT_TYPE_LOITER | `uint8` | 2 | loiter setpoint | +| SETPOINT_TYPE_TAKEOFF | `uint8` | 3 | takeoff setpoint | +| SETPOINT_TYPE_LAND | `uint8` | 4 | land setpoint, altitude must be ignored, descend until landing | +| SETPOINT_TYPE_IDLE | `uint8` | 5 | do nothing, switch off motors or keep at idle speed (MC) | +| LOITER_TYPE_ORBIT | `uint8` | 0 | Circular pattern | +| LOITER_TYPE_FIGUREEIGHT | `uint8` | 1 | Pattern resembling an 8 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionSetpoint.msg) + +:::details +Click here to see original file ```c # this file is only used in the position_setpoint triple as a dependency @@ -43,5 +92,6 @@ float32 alt_acceptance_radius # vertical acceptance radius, only used for fixed float32 cruising_speed # the generally desired cruising speed (not a hard constraint) bool gliding_enabled # commands the vehicle to glide if the capability is available (fixed wing only) float32 cruising_throttle # the generally desired cruising throttle (not a hard constraint), only has an effect for rover - ``` + +::: diff --git a/docs/uk/msg_docs/PositionSetpointTriplet.md b/docs/uk/msg_docs/PositionSetpointTriplet.md index e4a2bb9baa..c8fcead679 100644 --- a/docs/uk/msg_docs/PositionSetpointTriplet.md +++ b/docs/uk/msg_docs/PositionSetpointTriplet.md @@ -1,9 +1,28 @@ +--- +pageClass: is-wide-page +--- + # PositionSetpointTriplet (Повідомлення UORB) -Глобальний набір точки встановлення у форматі координат WGS84. -Ось наступні три способи вказівань (або просто наступні два або один). +Глобальний набір точки встановлення у форматі координат WGS84. Ось наступні три способи вказівань (або просто наступні два або один). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionSetpointTriplet.msg) +**TOPICS:** position_setpointtriplet + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | ------------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| previous | `PositionSetpoint` | | | | +| current | `PositionSetpoint` | | | | +| next | `PositionSetpoint` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionSetpointTriplet.msg) + +:::details +Click here to see original file ```c # Global position setpoint triplet in WGS84 coordinates. @@ -14,5 +33,6 @@ uint64 timestamp # time since system start (microseconds) PositionSetpoint previous PositionSetpoint current PositionSetpoint next - ``` + +::: diff --git a/docs/uk/msg_docs/PowerButtonState.md b/docs/uk/msg_docs/PowerButtonState.md index ca4ca87402..42f9ee30dc 100644 --- a/docs/uk/msg_docs/PowerButtonState.md +++ b/docs/uk/msg_docs/PowerButtonState.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # PowerButtonState (UORB повідомлення) -повідомлення стану кнопки вимкнення живлення +power button state notification message. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PowerButtonState.msg) +**TOPICS:** power_buttonstate + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| event | `uint8` | | | one of PWR_BUTTON_STATE_\* | + +## Constants + +| Назва | Тип | Значення | Опис | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------ | +| PWR_BUTTON_STATE_IDEL | `uint8` | 0 | Button went up without meeting shutdown button down time (delete event) | +| PWR_BUTTON_STATE_DOWN | `uint8` | 1 | Button went Down | +| PWR_BUTTON_STATE_UP | `uint8` | 2 | Button went Up | +| PWR_BUTTON_STATE_REQUEST_SHUTDOWN | `uint8` | 3 | Button went Up after meeting shutdown button down time | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PowerButtonState.msg) + +:::details +Click here to see original file ```c # power button state notification message @@ -15,5 +42,6 @@ uint8 PWR_BUTTON_STATE_UP = 2 # Button went Up uint8 PWR_BUTTON_STATE_REQUEST_SHUTDOWN = 3 # Button went Up after meeting shutdown button down time uint8 event # one of PWR_BUTTON_STATE_* - ``` + +::: diff --git a/docs/uk/msg_docs/PowerMonitor.md b/docs/uk/msg_docs/PowerMonitor.md index 2efe8ce319..5d132aacf5 100644 --- a/docs/uk/msg_docs/PowerMonitor.md +++ b/docs/uk/msg_docs/PowerMonitor.md @@ -1,8 +1,36 @@ +--- +pageClass: is-wide-page +--- + # PowerMonitor (повідомлення UORB) -power monitor message +power monitor message. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PowerMonitor.msg) +**TOPICS:** power_monitor + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | Time since system start (microseconds) | +| voltage_v | `float32` | | | Voltage in volts, 0 if unknown | +| current_a | `float32` | | | Current in amperes, -1 if unknown | +| power_w | `float32` | | | power in watts, -1 if unknown | +| rconf | `int16` | | | | +| rsv | `int16` | | | | +| rbv | `int16` | | | | +| rp | `int16` | | | | +| rc | `int16` | | | | +| rcal | `int16` | | | | +| me | `int16` | | | | +| al | `int16` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PowerMonitor.msg) + +:::details +Click here to see original file ```c # power monitor message @@ -20,5 +48,6 @@ int16 rc int16 rcal int16 me int16 al - ``` + +::: diff --git a/docs/uk/msg_docs/PpsCapture.md b/docs/uk/msg_docs/PpsCapture.md index e566147389..1be4052553 100644 --- a/docs/uk/msg_docs/PpsCapture.md +++ b/docs/uk/msg_docs/PpsCapture.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # PpsCapture (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PpsCapture.msg) +**TOPICS:** pps_capture + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------- | -------- | ---------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) at PPS capture event | +| rtc_timestamp | `uint64` | | | Corrected GPS UTC timestamp at PPS capture event | +| `uint8` | | | Increments when PPS dt < 50ms | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PpsCapture.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) at PPS capture event uint64 rtc_timestamp # Corrected GPS UTC timestamp at PPS capture event uint8 pps_rate_exceeded_counter # Increments when PPS dt < 50ms - ``` + +::: diff --git a/docs/uk/msg_docs/PurePursuitStatus.md b/docs/uk/msg_docs/PurePursuitStatus.md index 8d54ba473e..9d4a1fb10f 100644 --- a/docs/uk/msg_docs/PurePursuitStatus.md +++ b/docs/uk/msg_docs/PurePursuitStatus.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # PurePursuitStatus (UORB message) -Pure pursuit status +Pure pursuit status. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PurePursuitStatus.msg) +**TOPICS:** pure_pursuitstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| lookahead_distance | `float32` | m | [0 : inf] | Lookahead distance of pure the pursuit controller | +| target_bearing | `float32` | rad [NED] | [-pi : pi] | Target bearing calculated by the pure pursuit controller | +| crosstrack_error | `float32` | m | [-inf (Left of the path) : inf (Right of the path)] | Shortest distance from the vehicle to the path | +| distance_to_waypoint | `float32` | m | [-inf : inf] | Distance from the vehicle to the current waypoint | +| bearing_to_waypoint | `float32` | rad [NED] | [-pi : pi] | Bearing towards current waypoint | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PurePursuitStatus.msg) + +:::details +Click here to see original file ```c # Pure pursuit status @@ -13,5 +35,6 @@ float32 target_bearing # [rad] [@range -pi, pi] [@frame NED] Target beari float32 crosstrack_error # [m] [@range -inf (Left of the path), inf (Right of the path)] Shortest distance from the vehicle to the path float32 distance_to_waypoint # [m] [@range -inf, inf]Distance from the vehicle to the current waypoint float32 bearing_to_waypoint # [rad] [@range -pi, pi] [@frame NED]Bearing towards current waypoint - ``` + +::: diff --git a/docs/uk/msg_docs/PwmInput.md b/docs/uk/msg_docs/PwmInput.md index 9389ca3fb1..01c84d115f 100644 --- a/docs/uk/msg_docs/PwmInput.md +++ b/docs/uk/msg_docs/PwmInput.md @@ -1,11 +1,32 @@ +--- +pageClass: is-wide-page +--- + # PwmInput (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PwmInput.msg) +**TOPICS:** pwm_input + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | Time since system start (microseconds) | +| error_count | `uint64` | | | Timer overcapture error flag (AUX5 or MAIN5) | +| pulse_width | `uint32` | | | Pulse width, timer counts (microseconds) | +| period | `uint32` | | | Period, timer counts (microseconds) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PwmInput.msg) + +:::details +Click here to see original file ```c uint64 timestamp # Time since system start (microseconds) uint64 error_count # Timer overcapture error flag (AUX5 or MAIN5) uint32 pulse_width # Pulse width, timer counts (microseconds) uint32 period # Period, timer counts (microseconds) - ``` + +::: diff --git a/docs/uk/msg_docs/Px4ioStatus.md b/docs/uk/msg_docs/Px4ioStatus.md index 4b1fbb1314..d86cb89b4e 100644 --- a/docs/uk/msg_docs/Px4ioStatus.md +++ b/docs/uk/msg_docs/Px4ioStatus.md @@ -1,6 +1,54 @@ +--- +pageClass: is-wide-page +--- + # Px4ioStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Px4ioStatus.msg) +**TOPICS:** px4io_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| free_memory_bytes | `uint16` | | | | +| voltage_v | `float32` | | | Servo rail voltage in volts | +| rssi_v | `float32` | | | RSSI pin voltage in volts | +| status_arm_sync | `bool` | | | | +| status_failsafe | `bool` | | | | +| status_fmu_initialized | `bool` | | | | +| status_fmu_ok | `bool` | | | | +| status_init_ok | `bool` | | | | +| status_outputs_armed | `bool` | | | | +| status_raw_pwm | `bool` | | | | +| status_rc_ok | `bool` | | | | +| status_rc_dsm | `bool` | | | | +| status_rc_ppm | `bool` | | | | +| status_rc_sbus | `bool` | | | | +| status_rc_st24 | `bool` | | | | +| status_rc_sumd | `bool` | | | | +| status_safety_button_event | `bool` | | | px4io safety button was pressed for longer than 1 second | +| alarm_pwm_error | `bool` | | | | +| alarm_rc_lost | `bool` | | | | +| arming_failsafe_custom | `bool` | | | | +| arming_fmu_armed | `bool` | | | | +| arming_fmu_prearmed | `bool` | | | | +| arming_termination | `bool` | | | | +| arming_io_arm_ok | `bool` | | | | +| arming_lockdown | `bool` | | | | +| arming_termination_failsafe | `bool` | | | | +| pwm | `uint16[8]` | | | | +| pwm_disarmed | `uint16[8]` | | | | +| pwm_failsafe | `uint16[8]` | | | | +| pwm_rate_hz | `uint16[8]` | | | | +| raw_inputs | `uint16[18]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Px4ioStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -46,5 +94,6 @@ uint16[8] pwm_failsafe uint16[8] pwm_rate_hz uint16[18] raw_inputs - ``` + +::: diff --git a/docs/uk/msg_docs/QshellReq.md b/docs/uk/msg_docs/QshellReq.md index 7f8e38c701..b755c7e26c 100644 --- a/docs/uk/msg_docs/QshellReq.md +++ b/docs/uk/msg_docs/QshellReq.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # QshellReq (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/QshellReq.msg) +**TOPICS:** qshell_req + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| cmd | `char[100]` | | | | +| strlen | `uint32` | | | | +| request_sequence | `uint32` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ---------------------------------------------------------- | -------- | -------- | ---- | +| MAX_STRLEN | `uint32` | 100 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/QshellReq.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +34,6 @@ char[100] cmd uint32 MAX_STRLEN = 100 uint32 strlen uint32 request_sequence - ``` + +::: diff --git a/docs/uk/msg_docs/QshellRetval.md b/docs/uk/msg_docs/QshellRetval.md index 3a27b00e93..06105dd16b 100644 --- a/docs/uk/msg_docs/QshellRetval.md +++ b/docs/uk/msg_docs/QshellRetval.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # QshellRetval (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/QshellRetval.msg) +**TOPICS:** qshell_retval + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| return_value | `int32` | | | | +| return_sequence | `uint32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/QshellRetval.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) int32 return_value uint32 return_sequence - ``` + +::: diff --git a/docs/uk/msg_docs/RadioStatus.md b/docs/uk/msg_docs/RadioStatus.md index 58c320308e..acb3e990af 100644 --- a/docs/uk/msg_docs/RadioStatus.md +++ b/docs/uk/msg_docs/RadioStatus.md @@ -1,9 +1,32 @@ +--- +pageClass: is-wide-page +--- + # RadioStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RadioStatus.msg) +**TOPICS:** radio_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| rssi | `uint8` | | | local signal strength | +| remote_rssi | `uint8` | | | remote signal strength | +| txbuf | `uint8` | | | how full the tx buffer is as a percentage | +| noise | `uint8` | | | background noise level | +| remote_noise | `uint8` | | | remote background noise level | +| rxerrors | `uint16` | | | receive errors | +| fix | `uint16` | | | count of error corrected packets | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RadioStatus.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint8 rssi # local signal strength @@ -16,5 +39,6 @@ uint8 remote_noise # remote background noise level uint16 rxerrors # receive errors uint16 fix # count of error corrected packets - ``` + +::: diff --git a/docs/uk/msg_docs/RaptorInput.md b/docs/uk/msg_docs/RaptorInput.md new file mode 100644 index 0000000000..61b245273c --- /dev/null +++ b/docs/uk/msg_docs/RaptorInput.md @@ -0,0 +1,59 @@ +--- +pageClass: is-wide-page +--- + +# RaptorInput (UORB message) + +Raptor Input. + +**TOPICS:** raptor_input + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Sampling timestamp of the data this control response is based on | +| active | `bool` | | | Signals if the policy is active (aka publishing actuator_motors) | +| положення | `float32[3]` | m [FLU] | | Position of the vehicle_local_position frame | +| orientation | `float32[4]` | | | Orientation in the vehicle_attitude frame but using the FLU convention as a unit quaternion (w, x, y, z) | +| linear_velocity | `float32[3]` | m/s [FLU] | | Linear velocity in the vehicle_local_position frame | +| angular_velocity | `float32[3]` | rad/s [FLU] | | Angular velocity in the body frame | +| previous_action | `float32[4]` | | [-1 : 1] | Previous action. Motor commands normalized to [-1, 1] | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ACTION_DIM | `uint8` | 4 | Policy output dimensionality (for quadrotors) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RaptorInput.msg) + +:::details +Click here to see original file + +```c +# Raptor Input + +# The exact inputs to the Raptor foundation policy. +# Having access to the exact inputs helps with debugging and post-hoc analysis. + +uint32 MESSAGE_VERSION = 0 + +uint64 timestamp # [us] Time since system start +uint64 timestamp_sample # [us] Sampling timestamp of the data this control response is based on +bool active # Signals if the policy is active (aka publishing actuator_motors) +float32[3] position # [m] [@frame FLU] Position of the vehicle_local_position frame +float32[4] orientation # [-] Orientation in the vehicle_attitude frame but using the FLU convention as a unit quaternion (w, x, y, z) +float32[3] linear_velocity # [m/s] [@frame FLU] Linear velocity in the vehicle_local_position frame +float32[3] angular_velocity # [rad/s] [@frame FLU] Angular velocity in the body frame +uint8 ACTION_DIM = 4 # Policy output dimensionality (for quadrotors) +float32[4] previous_action # [@range -1, 1] Previous action. Motor commands normalized to [-1, 1] + +# TOPICS raptor_input +``` + +::: diff --git a/docs/uk/msg_docs/RaptorStatus.md b/docs/uk/msg_docs/RaptorStatus.md new file mode 100644 index 0000000000..1571ee94b6 --- /dev/null +++ b/docs/uk/msg_docs/RaptorStatus.md @@ -0,0 +1,109 @@ +--- +pageClass: is-wide-page +--- + +# RaptorStatus (UORB message) + +Raptor Status. + +**TOPICS:** raptor_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Sampling timestamp of the data this control response is based on | +| subscription_update_angular_velocity | `bool` | bool | | Flag signalling if the vehicle_angular_velocity was updated | +| subscription_update_local_position | `bool` | bool | | Flag signalling if the vehicle_local_position was updated | +| subscription_update_attitude | `bool` | bool | | Flag signalling if the vehicle_attitude was updated | +| subscription_update_trajectory_setpoint | `bool` | bool | | Flag signalling if the trajectory_setpoint was updated | +| subscription_update_vehicle_status | `bool` | bool | | Flag signalling if the vehicle_status was updated | +| exit_reason | `uint8` | enum | | Exit reason identifier. Representing conditions that lead to the Raptor policy not being executed | +| timestamp_last_vehicle_angular_velocity | `uint32` | us | | Timestamp of the last received vehicle_angular_velocity message | +| timestamp_last_vehicle_local_position | `uint32` | us | | Timestamp of the last received vehicle_local_position message | +| timestamp_last_vehicle_attitude | `uint32` | us | | Timestamp of the last received vehicle_attitude message | +| timestamp_last_trajectory_setpoint | `uint32` | us | | Timestamp of the last received trajectory_setpoint message | +| vehicle_angular_velocity_stale | `bool` | bool | | True if vehicle_angular_velocity data is considered stale (exceeded timeout) | +| vehicle_local_position_stale | `bool` | bool | | True if vehicle_local_position data is considered stale (exceeded timeout) | +| vehicle_attitude_stale | `bool` | bool | | True if vehicle_attitude data is considered stale (exceeded timeout) | +| trajectory_setpoint_stale | `bool` | bool | | True if trajectory_setpoint data is considered stale (exceeded timeout) | +| active | `bool` | bool | | True if the Raptor policy is currently active (publishing actuator_motors) | +| substep | `uint8` | | | The policy is trained at a fixed frequency (e.g. 100 Hz) but we might want to use it for control at higher frequencies (e.g. 400 Hz), which leads to a number of intermediate steps before the actual policy state is advanced (in this case 4 = 400 Hz / 100 Hz). This field provides the current substep (e.g. 0-3). | +| control_interval | `float32` | s | | Time interval between control updates | +| trajectory_setpoint_dt_mean | `float32` | us | | The average trajectory setpoint arrival time interval (since Raptor mode activation within NUM_TRAJECTORY_SETPOINT_DTS received trajectory_setpoint messages) | +| trajectory_setpoint_dt_max | `float32` | us | | The max trajectory setpoint arrival time interval (since Raptor mode activation and within NUM_TRAJECTORY_SETPOINT_DTS received trajectory_setpoint messages) | +| trajectory_setpoint_dt_max_since_activation | `float32` | us | | The max trajectory setpoint arrival time interval (since Raptor mode activation) | +| internal_reference_position | `float32[3]` | m [FLU] | | Internal reference position | +| internal_reference_linear_velocity | `float32[3]` | m/s [FLU] | | Internal reference linear velocity | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| EXIT_REASON_NONE | `uint8` | 0 | No exit reason => Raptor control step was executed (actuator_motors should have been published) | +| EXIT_REASON_NO_ANGULAR_VELOCITY_UPDATE | `uint8` | 1 | We synchronize the control onto the input observation with the highest update frequency, which is vehicle_angular_velocity. If there was no update, we do not need to execute the policy again | +| EXIT_REASON_NOT_ALL_OBSERVATIONS_SET | `uint8` | 2 | We can not execute the policy if not all observations are available | +| EXIT_REASON_ANGULAR_VELOCITY_STALE | `uint8` | 3 | If OBSERVATION_TIMEOUT_ANGULAR_VELOCITY is exceeded, we treat the vehicle_angular_velocity as stale and can not run the policy | +| EXIT_REASON_LOCAL_POSITION_STALE | `uint8` | 4 | If OBSERVATION_TIMEOUT_LOCAL_POSITION is exceeded, we treat the vehicle_local_position as stale and can not run the policy | +| EXIT_REASON_ATTITUDE_STALE | `uint8` | 5 | If OBSERVATION_TIMEOUT_ATTITUDE is exceeded, we treat the vehicle_attitude as stale and can not run the policy | +| EXIT_REASON_EXECUTOR_STATUS_SOURCE_NOT_CONTROL | `uint8` | 6 | The executor that runs the policy can run in oversampling mode, where it decides if the policy should be ran based on the timestamp and not based on fixed synchronization onto the vehicle_angular_velocity. In this case the executor can decide to skip running the policy if the interval is too small, in which case this flag is set. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RaptorStatus.msg) + +:::details +Click here to see original file + +```c +# Raptor Status + +# Diagnostic messages for the Raptor foundation policy. +# This diagnostic data is useful for debugging (e.g. identifying missing input information). + +uint32 MESSAGE_VERSION = 0 + +uint64 timestamp # [us] Time since system start +uint64 timestamp_sample # [us] Sampling timestamp of the data this control response is based on +bool subscription_update_angular_velocity # [bool] Flag signalling if the vehicle_angular_velocity was updated +bool subscription_update_local_position # [bool] Flag signalling if the vehicle_local_position was updated +bool subscription_update_attitude # [bool] Flag signalling if the vehicle_attitude was updated +bool subscription_update_trajectory_setpoint # [bool] Flag signalling if the trajectory_setpoint was updated +bool subscription_update_vehicle_status # [bool] Flag signalling if the vehicle_status was updated + +uint8 exit_reason # [enum] Exit reason identifier. Representing conditions that lead to the Raptor policy not being executed +uint8 EXIT_REASON_NONE = 0 # No exit reason => Raptor control step was executed (actuator_motors should have been published) +uint8 EXIT_REASON_NO_ANGULAR_VELOCITY_UPDATE = 1 # We synchronize the control onto the input observation with the highest update frequency, which is vehicle_angular_velocity. If there was no update, we do not need to execute the policy again +uint8 EXIT_REASON_NOT_ALL_OBSERVATIONS_SET = 2 # We can not execute the policy if not all observations are available +uint8 EXIT_REASON_ANGULAR_VELOCITY_STALE = 3 # If OBSERVATION_TIMEOUT_ANGULAR_VELOCITY is exceeded, we treat the vehicle_angular_velocity as stale and can not run the policy +uint8 EXIT_REASON_LOCAL_POSITION_STALE = 4 # If OBSERVATION_TIMEOUT_LOCAL_POSITION is exceeded, we treat the vehicle_local_position as stale and can not run the policy +uint8 EXIT_REASON_ATTITUDE_STALE = 5 # If OBSERVATION_TIMEOUT_ATTITUDE is exceeded, we treat the vehicle_attitude as stale and can not run the policy +uint8 EXIT_REASON_EXECUTOR_STATUS_SOURCE_NOT_CONTROL = 6 # The executor that runs the policy can run in oversampling mode, where it decides if the policy should be ran based on the timestamp and not based on fixed synchronization onto the vehicle_angular_velocity. In this case the executor can decide to skip running the policy if the interval is too small, in which case this flag is set. + +uint32 timestamp_last_vehicle_angular_velocity # [us] Timestamp of the last received vehicle_angular_velocity message +uint32 timestamp_last_vehicle_local_position # [us] Timestamp of the last received vehicle_local_position message +uint32 timestamp_last_vehicle_attitude # [us] Timestamp of the last received vehicle_attitude message +uint32 timestamp_last_trajectory_setpoint # [us] Timestamp of the last received trajectory_setpoint message + +bool vehicle_angular_velocity_stale # [bool] True if vehicle_angular_velocity data is considered stale (exceeded timeout) +bool vehicle_local_position_stale # [bool] True if vehicle_local_position data is considered stale (exceeded timeout) +bool vehicle_attitude_stale # [bool] True if vehicle_attitude data is considered stale (exceeded timeout) +bool trajectory_setpoint_stale # [bool] True if trajectory_setpoint data is considered stale (exceeded timeout) + +bool active # [bool] True if the Raptor policy is currently active (publishing actuator_motors) +uint8 substep # [-] The policy is trained at a fixed frequency (e.g. 100 Hz) but we might want to use it for control at higher frequencies (e.g. 400 Hz), which leads to a number of intermediate steps before the actual policy state is advanced (in this case 4 = 400 Hz / 100 Hz). This field provides the current substep (e.g. 0-3). +float32 control_interval # [s] Time interval between control updates + +float32 trajectory_setpoint_dt_mean # [us] The average trajectory setpoint arrival time interval (since Raptor mode activation within NUM_TRAJECTORY_SETPOINT_DTS received trajectory_setpoint messages) +float32 trajectory_setpoint_dt_max # [us] The max trajectory setpoint arrival time interval (since Raptor mode activation and within NUM_TRAJECTORY_SETPOINT_DTS received trajectory_setpoint messages) +float32 trajectory_setpoint_dt_max_since_activation # [us] The max trajectory setpoint arrival time interval (since Raptor mode activation) + +float32[3] internal_reference_position # [m] [@frame FLU] Internal reference position +float32[3] internal_reference_linear_velocity # [m/s] [@frame FLU] Internal reference linear velocity + +# TOPICS raptor_status +``` + +::: diff --git a/docs/uk/msg_docs/RateCtrlStatus.md b/docs/uk/msg_docs/RateCtrlStatus.md index 90eaa1208f..7a18bafbe2 100644 --- a/docs/uk/msg_docs/RateCtrlStatus.md +++ b/docs/uk/msg_docs/RateCtrlStatus.md @@ -1,6 +1,26 @@ +--- +pageClass: is-wide-page +--- + # RateCtrlStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RateCtrlStatus.msg) +**TOPICS:** rate_ctrlstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| rollspeed_integ | `float32` | | | | +| pitchspeed_integ | `float32` | | | | +| yawspeed_integ | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RateCtrlStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,5 +29,6 @@ uint64 timestamp # time since system start (microseconds) float32 rollspeed_integ float32 pitchspeed_integ float32 yawspeed_integ - ``` + +::: diff --git a/docs/uk/msg_docs/RcChannels.md b/docs/uk/msg_docs/RcChannels.md index 7abb87c0bc..c67d76b026 100644 --- a/docs/uk/msg_docs/RcChannels.md +++ b/docs/uk/msg_docs/RcChannels.md @@ -1,6 +1,66 @@ +--- +pageClass: is-wide-page +--- + # RcChannels (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RcChannels.msg) +**TOPICS:** rc_channels + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------------- | ------------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_last_valid | `uint64` | | | Timestamp of last valid RC signal | +| channels | `float32[18]` | | | Scaled to -1..1 (throttle: 0..1) | +| channel_count | `uint8` | | | Number of valid channels | +| function | `int8[30]` | | | Functions mapping | +| rssi | `uint8` | | | Receive signal strength index | +| signal_lost | `bool` | | | Control signal lost, should be checked together with topic timeout | +| frame_drop_count | `uint32` | | | Number of dropped frames | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------- | -------- | ---- | +| FUNCTION_THROTTLE | `uint8` | 0 | | +| FUNCTION_ROLL | `uint8` | 1 | | +| FUNCTION_PITCH | `uint8` | 2 | | +| FUNCTION_YAW | `uint8` | 3 | | +| FUNCTION_RETURN | `uint8` | 4 | | +| FUNCTION_LOITER | `uint8` | 5 | | +| FUNCTION_OFFBOARD | `uint8` | 6 | | +| FUNCTION_FLAPS | `uint8` | 7 | | +| FUNCTION_AUX_1 | `uint8` | 8 | | +| FUNCTION_AUX_2 | `uint8` | 9 | | +| FUNCTION_AUX_3 | `uint8` | 10 | | +| FUNCTION_AUX_4 | `uint8` | 11 | | +| FUNCTION_AUX_5 | `uint8` | 12 | | +| FUNCTION_AUX_6 | `uint8` | 13 | | +| FUNCTION_PARAM_1 | `uint8` | 14 | | +| FUNCTION_PARAM_2 | `uint8` | 15 | | +| FUNCTION_PARAM_3_5 | `uint8` | 16 | | +| FUNCTION_KILLSWITCH | `uint8` | 17 | | +| FUNCTION_TRANSITION | `uint8` | 18 | | +| FUNCTION_GEAR | `uint8` | 19 | | +| FUNCTION_ARMSWITCH | `uint8` | 20 | | +| FUNCTION_FLTBTN_SLOT_1 | `uint8` | 21 | | +| FUNCTION_FLTBTN_SLOT_2 | `uint8` | 22 | | +| FUNCTION_FLTBTN_SLOT_3 | `uint8` | 23 | | +| FUNCTION_FLTBTN_SLOT_4 | `uint8` | 24 | | +| FUNCTION_FLTBTN_SLOT_5 | `uint8` | 25 | | +| FUNCTION_FLTBTN_SLOT_6 | `uint8` | 26 | | +| FUNCTION_ENGAGE_MAIN_MOTOR | `uint8` | 27 | | +| FUNCTION_PAYLOAD_POWER | `uint8` | 28 | | +| FUNCTION_TERMINATION | `uint8` | 29 | | +| FUNCTION_FLTBTN_SLOT_COUNT | `uint8` | 6 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RcChannels.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -45,5 +105,6 @@ int8[30] function # Functions mapping uint8 rssi # Receive signal strength index bool signal_lost # Control signal lost, should be checked together with topic timeout uint32 frame_drop_count # Number of dropped frames - ``` + +::: diff --git a/docs/uk/msg_docs/RcParameterMap.md b/docs/uk/msg_docs/RcParameterMap.md index e1ced1f8d1..f8221f20c4 100644 --- a/docs/uk/msg_docs/RcParameterMap.md +++ b/docs/uk/msg_docs/RcParameterMap.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # RcParameterMap (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RcParameterMap.msg) +**TOPICS:** rc_parametermap + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| valid | `bool[3]` | | | true for RC-Param channels which are mapped to a param | +| param_index | `int32[3]` | | | corresponding param index, this field is ignored if set to -1, in this case param_id will be used | +| param_id | `char[51]` | | | MAP_NCHAN \* (ID_LEN + 1) chars, corresponding param id, null terminated | +| scale | `float32[3]` | | | scale to map the RC input [-1, 1] to a parameter value | +| value0 | `float32[3]` | | | initial value around which the parameter value is changed | +| value_min | `float32[3]` | | | minimal parameter value | +| value_max | `float32[3]` | | | minimal parameter value | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| RC_PARAM_MAP_NCHAN | `uint8` | 3 | This limit is also hardcoded in the enum RC_CHANNELS_FUNCTION in rc_channels.h | +| PARAM_ID_LEN | `uint8` | 16 | corresponds to MAVLINK_MSG_PARAM_VALUE_FIELD_PARAM_ID_LEN | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RcParameterMap.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +45,6 @@ float32[3] scale # scale to map the RC input [-1, 1] to a parameter value float32[3] value0 # initial value around which the parameter value is changed float32[3] value_min # minimal parameter value float32[3] value_max # minimal parameter value - ``` + +::: diff --git a/docs/uk/msg_docs/RegisterExtComponentReply.md b/docs/uk/msg_docs/RegisterExtComponentReply.md index 119703472a..8637164989 100644 --- a/docs/uk/msg_docs/RegisterExtComponentReply.md +++ b/docs/uk/msg_docs/RegisterExtComponentReply.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # RegisterExtComponentReply (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RegisterExtComponentReply.msg) +**TOPICS:** register_extcomponent_reply + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint64` | | | ID from the request | +| name | `char[25]` | | | name from the request | +| px4_ros2_api_version | `uint16` | | | | +| success | `bool` | | | | +| arming_check_id | `int8` | | | arming check registration ID (-1 if invalid) | +| mode_id | `int8` | | | assigned mode ID (-1 if invalid) | +| mode_executor_id | `int8` | | | assigned mode executor ID (-1 if invalid) | +| not_user_selectable | `bool` | | | mode cannot be selected by the user | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RegisterExtComponentReply.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 1 @@ -20,5 +52,6 @@ int8 mode_executor_id # assigned mode executor ID (-1 if invalid) bool not_user_selectable # mode cannot be selected by the user uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/uk/msg_docs/RegisterExtComponentReplyV0.md b/docs/uk/msg_docs/RegisterExtComponentReplyV0.md index cceec88d5c..702ea517d2 100644 --- a/docs/uk/msg_docs/RegisterExtComponentReplyV0.md +++ b/docs/uk/msg_docs/RegisterExtComponentReplyV0.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # RegisterExtComponentReplyV0 (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/RegisterExtComponentReplyV0.msg) +**TOPICS:** register_extcomponent_replyv0 + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint64` | | | ID from the request | +| name | `char[25]` | | | name from the request | +| px4_ros2_api_version | `uint16` | | | | +| success | `bool` | | | | +| arming_check_id | `int8` | | | arming check registration ID (-1 if invalid) | +| mode_id | `int8` | | | assigned mode ID (-1 if invalid) | +| mode_executor_id | `int8` | | | assigned mode executor ID (-1 if invalid) | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/RegisterExtComponentReplyV0.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -18,5 +49,6 @@ int8 mode_id # assigned mode ID (-1 if invalid) int8 mode_executor_id # assigned mode executor ID (-1 if invalid) uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/uk/msg_docs/RegisterExtComponentRequest.md b/docs/uk/msg_docs/RegisterExtComponentRequest.md index 7897117efd..95e2c41846 100644 --- a/docs/uk/msg_docs/RegisterExtComponentRequest.md +++ b/docs/uk/msg_docs/RegisterExtComponentRequest.md @@ -1,8 +1,43 @@ +--- +pageClass: is-wide-page +--- + # RegisterExtComponentRequest (Повідомлення UORB) -Запит на реєстрацію зовнішнього компонента +Request to register an external component. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RegisterExtComponentRequest.msg) +**TOPICS:** register_extcomponent_request + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint64` | | | ID, set this to a random value | +| name | `char[25]` | | | either the requested mode name, or component name | +| px4_ros2_api_version | `uint16` | | | Set to LATEST_PX4_ROS2_API_VERSION | +| register_arming_check | `bool` | | | | +| register_mode | `bool` | | | registering a mode also requires arming_check to be set | +| register_mode_executor | `bool` | | | registering an executor also requires a mode to be registered (which is the owned mode by the executor) | +| enable_replace_internal_mode | `bool` | | | set to true if an internal mode should be replaced | +| replace_internal_mode | `uint8` | | | vehicle_status::NAVIGATION_STATE_\* | +| activate_mode_immediately | `bool` | | | switch to the registered mode (can only be set in combination with an executor) | +| not_user_selectable | `bool` | | | mode cannot be selected by the user | + +## Constants + +| Назва | Тип | Значення | Опис | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 1 | | +| LATEST_PX4_ROS2_API_VERSION | `uint16` | 1 | API version compatibility. Increase this on a breaking semantic change. Changes to any message field are detected separately and do not require an API version change. | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RegisterExtComponentRequest.msg) + +:::details +Click here to see original file ```c # Request to register an external component @@ -29,5 +64,6 @@ bool activate_mode_immediately # switch to the registered mode (can only be bool not_user_selectable # mode cannot be selected by the user uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/uk/msg_docs/RegisterExtComponentRequestV0.md b/docs/uk/msg_docs/RegisterExtComponentRequestV0.md index 1c49343ff6..a7968cc80d 100644 --- a/docs/uk/msg_docs/RegisterExtComponentRequestV0.md +++ b/docs/uk/msg_docs/RegisterExtComponentRequestV0.md @@ -1,8 +1,42 @@ +--- +pageClass: is-wide-page +--- + # RegisterExtComponentRequestV0 (UORB message) -Запит на реєстрацію зовнішнього компонента +Request to register an external component. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/RegisterExtComponentRequestV0.msg) +**TOPICS:** register_extcomponent_requestv0 + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint64` | | | ID, set this to a random value | +| name | `char[25]` | | | either the requested mode name, or component name | +| px4_ros2_api_version | `uint16` | | | Set to LATEST_PX4_ROS2_API_VERSION | +| register_arming_check | `bool` | | | | +| register_mode | `bool` | | | registering a mode also requires arming_check to be set | +| register_mode_executor | `bool` | | | registering an executor also requires a mode to be registered (which is the owned mode by the executor) | +| enable_replace_internal_mode | `bool` | | | set to true if an internal mode should be replaced | +| replace_internal_mode | `uint8` | | | vehicle_status::NAVIGATION_STATE_\* | +| activate_mode_immediately | `bool` | | | switch to the registered mode (can only be set in combination with an executor) | + +## Constants + +| Назва | Тип | Значення | Опис | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| LATEST_PX4_ROS2_API_VERSION | `uint16` | 1 | API version compatibility. Increase this on a breaking semantic change. Changes to any message field are detected separately and do not require an API version change. | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/RegisterExtComponentRequestV0.msg) + +:::details +Click here to see original file ```c # Request to register an external component @@ -29,5 +63,6 @@ bool activate_mode_immediately # switch to the registered mode (can only be uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/uk/msg_docs/RoverAttitudeSetpoint.md b/docs/uk/msg_docs/RoverAttitudeSetpoint.md index ca75a6e3e2..ed0dd961e4 100644 --- a/docs/uk/msg_docs/RoverAttitudeSetpoint.md +++ b/docs/uk/msg_docs/RoverAttitudeSetpoint.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # RoverAttitudeSetpoint (UORB message) -Rover Attitude Setpoint +Rover Attitude Setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverAttitudeSetpoint.msg) +**TOPICS:** rover_attitudesetpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | --------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------- | +| timestamp | `uint64` | us | | Time since system start | +| yaw_setpoint | `float32` | rad [NED] | [-inf : inf] | Yaw setpoint | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverAttitudeSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Attitude Setpoint uint64 timestamp # [us] Time since system start float32 yaw_setpoint # [rad] [@range -inf, inf] [@frame NED] Yaw setpoint - ``` + +::: diff --git a/docs/uk/msg_docs/RoverAttitudeStatus.md b/docs/uk/msg_docs/RoverAttitudeStatus.md index f5a9ce1f02..189f32e279 100644 --- a/docs/uk/msg_docs/RoverAttitudeStatus.md +++ b/docs/uk/msg_docs/RoverAttitudeStatus.md @@ -1,8 +1,27 @@ +--- +pageClass: is-wide-page +--- + # RoverAttitudeStatus (UORB message) -Rover Attitude Status +Rover Attitude Status. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverAttitudeStatus.msg) +**TOPICS:** rover_attitudestatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| measured_yaw | `float32` | rad [NED] | [-pi : pi] | Measured yaw | +| adjusted_yaw_setpoint | `float32` | rad [NED] | [-pi : pi] | Yaw setpoint that is being tracked (Applied slew rates) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverAttitudeStatus.msg) + +:::details +Click here to see original file ```c # Rover Attitude Status @@ -10,5 +29,6 @@ Rover Attitude Status uint64 timestamp # [us] Time since system start float32 measured_yaw # [rad] [@range -pi, pi] [@frame NED]Measured yaw float32 adjusted_yaw_setpoint # [rad] [@range -pi, pi] [@frame NED] Yaw setpoint that is being tracked (Applied slew rates) - ``` + +::: diff --git a/docs/uk/msg_docs/RoverPositionSetpoint.md b/docs/uk/msg_docs/RoverPositionSetpoint.md index 751536e7f9..82f726026d 100644 --- a/docs/uk/msg_docs/RoverPositionSetpoint.md +++ b/docs/uk/msg_docs/RoverPositionSetpoint.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # RoverPositionSetpoint (UORB message) -Rover Position Setpoint +Rover Position Setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverPositionSetpoint.msg) +**TOPICS:** rover_positionsetpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------- | ------------ | ---------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| position_ned | `float32[2]` | m [NED] | [-inf : inf] | Target position | +| start_ned | `float32[2]` | m [NED] | [-inf : inf] | Start position which specifies a line for the rover to track (Invalid: NaN Defaults to vehicle position) | +| cruising_speed | `float32` | m/s | [0 : inf] | Cruising speed (Invalid: NaN Defaults to maximum speed) | +| arrival_speed | `float32` | m/s | [0 : inf] | Speed the rover should arrive at the target with (Invalid: NaN Defaults to 0) | +| yaw | `float32` | rad [NED] | [-pi : pi] | Mecanum only: Specify vehicle yaw during travel (Invalid: NaN Defaults to vehicle yaw) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverPositionSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Position Setpoint @@ -13,5 +35,6 @@ float32[2] start_ned # [m] [@range -inf, inf] [@frame NED] [@invalid NaN Def float32 cruising_speed # [m/s] [@range 0, inf] [@invalid NaN Defaults to maximum speed] Cruising speed float32 arrival_speed # [m/s] [@range 0, inf] [@invalid NaN Defaults to 0] Speed the rover should arrive at the target with float32 yaw # [rad] [@range -pi,pi] [@frame NED] [@invalid NaN Defaults to vehicle yaw] Mecanum only: Specify vehicle yaw during travel - ``` + +::: diff --git a/docs/uk/msg_docs/RoverRateSetpoint.md b/docs/uk/msg_docs/RoverRateSetpoint.md index 9bb844e802..2db7c145fb 100644 --- a/docs/uk/msg_docs/RoverRateSetpoint.md +++ b/docs/uk/msg_docs/RoverRateSetpoint.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # RoverRateSetpoint (UORB message) -Rover Rate setpoint +Rover Rate setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverRateSetpoint.msg) +**TOPICS:** rover_ratesetpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------- | --------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------- | +| timestamp | `uint64` | us | | Time since system start | +| yaw_rate_setpoint | `float32` | rad/s [NED] | [-inf : inf] | Yaw rate setpoint | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverRateSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Rate setpoint uint64 timestamp # [us] Time since system start float32 yaw_rate_setpoint # [rad/s] [@range -inf, inf] [@frame NED] Yaw rate setpoint - ``` + +::: diff --git a/docs/uk/msg_docs/RoverRateStatus.md b/docs/uk/msg_docs/RoverRateStatus.md index 70345fe315..b5f35b0d9e 100644 --- a/docs/uk/msg_docs/RoverRateStatus.md +++ b/docs/uk/msg_docs/RoverRateStatus.md @@ -1,8 +1,28 @@ +--- +pageClass: is-wide-page +--- + # RoverRateStatus (UORB message) -Rover Rate Status +Rover Rate Status. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverRateStatus.msg) +**TOPICS:** rover_ratestatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| measured_yaw_rate | `float32` | rad/s [NED] | [-inf : inf] | Measured yaw rate | +| adjusted_yaw_rate_setpoint | `float32` | rad/s [NED] | [-inf : inf] | Yaw rate setpoint that is being tracked (Applied slew rates) | +| pid_yaw_rate_integral | `float32` | | [-1 : 1] | Integral of the PID for the closed loop yaw rate controller | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverRateStatus.msg) + +:::details +Click here to see original file ```c # Rover Rate Status @@ -11,5 +31,6 @@ uint64 timestamp # [us] Time since system start float32 measured_yaw_rate # [rad/s] [@range -inf, inf] [@frame NED] Measured yaw rate float32 adjusted_yaw_rate_setpoint # [rad/s] [@range -inf, inf] [@frame NED] Yaw rate setpoint that is being tracked (Applied slew rates) float32 pid_yaw_rate_integral # [-] [@range -1, 1] Integral of the PID for the closed loop yaw rate controller - ``` + +::: diff --git a/docs/uk/msg_docs/RoverSpeedSetpoint.md b/docs/uk/msg_docs/RoverSpeedSetpoint.md index 84176cd1c3..82f033e7bf 100644 --- a/docs/uk/msg_docs/RoverSpeedSetpoint.md +++ b/docs/uk/msg_docs/RoverSpeedSetpoint.md @@ -1,8 +1,27 @@ +--- +pageClass: is-wide-page +--- + # RoverSpeedSetpoint (UORB message) -Rover Speed Setpoint +Rover Speed Setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSpeedSetpoint.msg) +**TOPICS:** rover_speedsetpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------ | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| speed_body_x | `float32` | m/s [Body] | [-inf (Backwards) : inf (Forwards)] | Speed setpoint in body x direction | +| speed_body_y | `float32` | m/s [Body] | [-inf (Left) : inf (Right)] | Mecanum only: Speed setpoint in body y direction (Invalid: NaN If not mecanum) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSpeedSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Speed Setpoint @@ -10,5 +29,6 @@ Rover Speed Setpoint uint64 timestamp # [us] Time since system start float32 speed_body_x # [m/s] [@range -inf (Backwards), inf (Forwards)] [@frame Body] Speed setpoint in body x direction float32 speed_body_y # [m/s] [@range -inf (Left), inf (Right)] [@frame Body] [@invalid NaN If not mecanum] Mecanum only: Speed setpoint in body y direction - ``` + +::: diff --git a/docs/uk/msg_docs/RoverSpeedStatus.md b/docs/uk/msg_docs/RoverSpeedStatus.md index 4213e1e5df..6184ecd469 100644 --- a/docs/uk/msg_docs/RoverSpeedStatus.md +++ b/docs/uk/msg_docs/RoverSpeedStatus.md @@ -1,8 +1,31 @@ +--- +pageClass: is-wide-page +--- + # RoverSpeedStatus (UORB message) -Rover Velocity Status +Rover Velocity Status. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSpeedStatus.msg) +**TOPICS:** rover_speedstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| measured_speed_body_x | `float32` | m/s [Body] | [-inf (Backwards) : inf (Forwards)] | Measured speed in body x direction | +| adjusted_speed_body_x_setpoint | `float32` | m/s [Body] | [-inf (Backwards) : inf (Forwards)] | Speed setpoint in body x direction that is being tracked (Applied slew rates) | +| pid_throttle_body_x_integral | `float32` | | [-1 : 1] | Integral of the PID for the closed loop controller of the speed in body x direction | +| measured_speed_body_y | `float32` | m/s [Body] | [-inf (Left) : inf (Right)] | Mecanum only: Measured speed in body y direction (Invalid: NaN If not mecanum) | +| adjusted_speed_body_y_setpoint | `float32` | m/s [Body] | [-inf (Left) : inf (Right)] | Mecanum only: Speed setpoint in body y direction that is being tracked (Applied slew rates) (Invalid: NaN If not mecanum) | +| pid_throttle_body_y_integral | `float32` | | [-1 : 1] | Mecanum only: Integral of the PID for the closed loop controller of the speed in body y direction (Invalid: NaN If not mecanum) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSpeedStatus.msg) + +:::details +Click here to see original file ```c # Rover Velocity Status @@ -14,5 +37,6 @@ float32 pid_throttle_body_x_integral # [-] [@range -1, 1] Integral of the PID float32 measured_speed_body_y # [m/s] [@range -inf (Left), inf (Right)] [@frame Body] [@invalid NaN If not mecanum] Mecanum only: Measured speed in body y direction float32 adjusted_speed_body_y_setpoint # [m/s] [@range -inf (Left), inf (Right)] [@frame Body] [@invalid NaN If not mecanum] Mecanum only: Speed setpoint in body y direction that is being tracked (Applied slew rates) float32 pid_throttle_body_y_integral # [-] [@range -1, 1] [@invalid NaN If not mecanum] Mecanum only: Integral of the PID for the closed loop controller of the speed in body y direction - ``` + +::: diff --git a/docs/uk/msg_docs/RoverSteeringSetpoint.md b/docs/uk/msg_docs/RoverSteeringSetpoint.md index 974f3fc4c9..bd9207cb3d 100644 --- a/docs/uk/msg_docs/RoverSteeringSetpoint.md +++ b/docs/uk/msg_docs/RoverSteeringSetpoint.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # RoverSteeringSetpoint (UORB message) -Rover Steering setpoint +Rover Steering setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSteeringSetpoint.msg) +**TOPICS:** rover_steeringsetpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| normalized_steering_setpoint | `float32` | [Body] | [-1 (Left) : 1 (Right)] | Ackermann: Normalized steering angle, Differential/Mecanum: Normalized speed difference between the left and right wheels | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSteeringSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Steering setpoint uint64 timestamp # [us] Time since system start float32 normalized_steering_setpoint # [-] [@range -1 (Left), 1 (Right)] [@frame Body] Ackermann: Normalized steering angle, Differential/Mecanum: Normalized speed difference between the left and right wheels - ``` + +::: diff --git a/docs/uk/msg_docs/RoverThrottleSetpoint.md b/docs/uk/msg_docs/RoverThrottleSetpoint.md index bd5ee93d55..66ac614829 100644 --- a/docs/uk/msg_docs/RoverThrottleSetpoint.md +++ b/docs/uk/msg_docs/RoverThrottleSetpoint.md @@ -1,8 +1,27 @@ +--- +pageClass: is-wide-page +--- + # RoverThrottleSetpoint (UORB message) -Rover Throttle setpoint +Rover Throttle setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverThrottleSetpoint.msg) +**TOPICS:** rover_throttlesetpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| throttle_body_x | `float32` | [Body] | [-1 (Backwards) : 1 (Forwards)] | Throttle setpoint along body X axis | +| throttle_body_y | `float32` | [Body] | [-1 (Left) : 1 (Right)] | Mecanum only: Throttle setpoint along body Y axis (Invalid: NaN If not mecanum) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverThrottleSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Throttle setpoint @@ -10,5 +29,6 @@ Rover Throttle setpoint uint64 timestamp # [us] Time since system start float32 throttle_body_x # [-] [@range -1 (Backwards), 1 (Forwards)] [@frame Body] Throttle setpoint along body X axis float32 throttle_body_y # [-] [@range -1 (Left), 1 (Right)] [@frame Body] [@invalid NaN If not mecanum] Mecanum only: Throttle setpoint along body Y axis - ``` + +::: diff --git a/docs/uk/msg_docs/Rpm.md b/docs/uk/msg_docs/Rpm.md index ff2bf9c827..83fc3da337 100644 --- a/docs/uk/msg_docs/Rpm.md +++ b/docs/uk/msg_docs/Rpm.md @@ -1,6 +1,25 @@ +--- +pageClass: is-wide-page +--- + # Rpm (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Rpm.msg) +**TOPICS:** rpm + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| rpm_estimate | `float32` | | | filtered revolutions per minute | +| rpm_raw | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Rpm.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +27,6 @@ uint64 timestamp # time since system start (microseconds) # rpm values of 0.0 mean within a timeout there is no movement measured float32 rpm_estimate # filtered revolutions per minute float32 rpm_raw - ``` + +::: diff --git a/docs/uk/msg_docs/RtlStatus.md b/docs/uk/msg_docs/RtlStatus.md index 0b161f649f..ac671fb244 100644 --- a/docs/uk/msg_docs/RtlStatus.md +++ b/docs/uk/msg_docs/RtlStatus.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # RtlStatus (UORB повідомлення) -[вихідний файл](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RtlStatus.msg) +**TOPICS:** rtl_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| safe_points_id | `uint32` | | | unique ID of active set of safe_point_items | +| is_evaluation_pending | `bool` | | | flag if the RTL point needs reevaluation (e.g. new safe points available, but need loading). | +| has_vtol_approach | `bool` | | | flag if approaches are defined for current RTL_TYPE parameter setting | +| rtl_type | `uint8` | | | Type of RTL chosen | +| safe_point_index | `uint8` | | | index of the chosen safe point, if in RTL_STATUS_TYPE_DIRECT_SAFE_POINT mode | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| RTL_STATUS_TYPE_NONE | `uint8` | 0 | pending if evaluation can't pe performed currently e.g. when it is still loading the safe points | +| RTL_STATUS_TYPE_DIRECT_SAFE_POINT | `uint8` | 1 | chosen to directly go to a safe point or home position | +| RTL_STATUS_TYPE_DIRECT_MISSION_LAND | `uint8` | 2 | going straight to the beginning of the mission landing | +| RTL_STATUS_TYPE_FOLLOW_MISSION | `uint8` | 3 | Following the mission from start index to mission landing. Start index is current WP if in Mission mode, and closest WP otherwise. | +| RTL_STATUS_TYPE_FOLLOW_MISSION_REVERSE | `uint8` | 4 | Following the mission in reverse from start index to the beginning of the mission. Start index is previous WP if in Mission mode, and closest WP otherwise. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RtlStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +50,6 @@ uint8 RTL_STATUS_TYPE_DIRECT_SAFE_POINT=1 # chosen to directly go to a safe poi uint8 RTL_STATUS_TYPE_DIRECT_MISSION_LAND=2 # going straight to the beginning of the mission landing uint8 RTL_STATUS_TYPE_FOLLOW_MISSION=3 # Following the mission from start index to mission landing. Start index is current WP if in Mission mode, and closest WP otherwise. uint8 RTL_STATUS_TYPE_FOLLOW_MISSION_REVERSE=4 # Following the mission in reverse from start index to the beginning of the mission. Start index is previous WP if in Mission mode, and closest WP otherwise. - ``` + +::: diff --git a/docs/uk/msg_docs/RtlTimeEstimate.md b/docs/uk/msg_docs/RtlTimeEstimate.md index a12f553d71..e70839b593 100644 --- a/docs/uk/msg_docs/RtlTimeEstimate.md +++ b/docs/uk/msg_docs/RtlTimeEstimate.md @@ -1,6 +1,26 @@ +--- +pageClass: is-wide-page +--- + # RtlTimeEstimate (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RtlTimeEstimate.msg) +**TOPICS:** rtl_timeestimate + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| valid | `bool` | | | Flag indicating whether the time estiamtes are valid | +| time_estimate | `float32` | s | | Estimated time for RTL | +| safe_time_estimate | `float32` | s | | Same as time_estimate, but with safety factor and safety margin included (factor\*t + margin) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RtlTimeEstimate.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +28,6 @@ uint64 timestamp # time since system start (microseconds) bool valid # Flag indicating whether the time estiamtes are valid float32 time_estimate # [s] Estimated time for RTL float32 safe_time_estimate # [s] Same as time_estimate, but with safety factor and safety margin included (factor*t + margin) - ``` + +::: diff --git a/docs/uk/msg_docs/SatelliteInfo.md b/docs/uk/msg_docs/SatelliteInfo.md index 6458eeece5..01262913a4 100644 --- a/docs/uk/msg_docs/SatelliteInfo.md +++ b/docs/uk/msg_docs/SatelliteInfo.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # SatelliteInfo (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SatelliteInfo.msg) +**TOPICS:** satellite_info + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------- | ----------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| count | `uint8` | | | Number of satellites visible to the receiver | +| svid | `uint8[40]` | | | Space vehicle ID [1..255], see scheme below | +| used | `uint8[40]` | | | 0: Satellite not used, 1: used for navigation | +| elevation | `uint8[40]` | | | Elevation (0: right on top of receiver, 90: on the horizon) of satellite | +| azimuth | `uint8[40]` | | | Direction of satellite, 0: 0 deg, 255: 360 deg. | +| snr | `uint8[40]` | | | dBHz, Signal to noise ratio of satellite C/N0, range 0..99, zero when not tracking this satellite. | +| prn | `uint8[40]` | | | Satellite PRN code assignment, (psuedorandom number SBAS, valid codes are 120-144) | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------ | ------- | -------- | ---- | +| SAT_INFO_MAX_SATELLITES | `uint8` | 40 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SatelliteInfo.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -13,5 +43,6 @@ uint8[40] elevation # Elevation (0: right on top of receiver, 90: on the horizo uint8[40] azimuth # Direction of satellite, 0: 0 deg, 255: 360 deg. uint8[40] snr # dBHz, Signal to noise ratio of satellite C/N0, range 0..99, zero when not tracking this satellite. uint8[40] prn # Satellite PRN code assignment, (psuedorandom number SBAS, valid codes are 120-144) - ``` + +::: diff --git a/docs/uk/msg_docs/SensorAccel.md b/docs/uk/msg_docs/SensorAccel.md index 7f7ad93e57..895fee5d7d 100644 --- a/docs/uk/msg_docs/SensorAccel.md +++ b/docs/uk/msg_docs/SensorAccel.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # SensorAccel (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAccel.msg) +**TOPICS:** sensor_accel + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| x | `float32` | | | acceleration in the FRD board frame X-axis in m/s^2 | +| y | `float32` | | | acceleration in the FRD board frame Y-axis in m/s^2 | +| z | `float32` | | | acceleration in the FRD board frame Z-axis in m/s^2 | +| temperature | `float32` | | | temperature in degrees Celsius | +| error_count | `uint32` | | | | +| clip_counter | `uint8[3]` | | | clip count per axis in the sample period | +| samples | `uint8` | | | number of raw samples that went into this message | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAccel.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -21,5 +53,6 @@ uint8[3] clip_counter # clip count per axis in the sample period uint8 samples # number of raw samples that went into this message uint8 ORB_QUEUE_LENGTH = 8 - ``` + +::: diff --git a/docs/uk/msg_docs/SensorAccelFifo.md b/docs/uk/msg_docs/SensorAccelFifo.md index 86f5a02a06..f9ed2f4296 100644 --- a/docs/uk/msg_docs/SensorAccelFifo.md +++ b/docs/uk/msg_docs/SensorAccelFifo.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # SensorAccelFifo (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAccelFifo.msg) +**TOPICS:** sensor_accelfifo + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| dt | `float32` | | | delta time between samples (microseconds) | +| scale | `float32` | | | | +| samples | `uint8` | | | number of valid samples | +| x | `int16[32]` | | | acceleration in the FRD board frame X-axis in m/s^2 | +| y | `int16[32]` | | | acceleration in the FRD board frame Y-axis in m/s^2 | +| z | `int16[32]` | | | acceleration in the FRD board frame Z-axis in m/s^2 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAccelFifo.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -16,5 +41,6 @@ uint8 samples # number of valid samples int16[32] x # acceleration in the FRD board frame X-axis in m/s^2 int16[32] y # acceleration in the FRD board frame Y-axis in m/s^2 int16[32] z # acceleration in the FRD board frame Z-axis in m/s^2 - ``` + +::: diff --git a/docs/uk/msg_docs/SensorAirflow.md b/docs/uk/msg_docs/SensorAirflow.md index 82b8706060..0b3fbd0ac3 100644 --- a/docs/uk/msg_docs/SensorAirflow.md +++ b/docs/uk/msg_docs/SensorAirflow.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # SensorAirflow (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAirflow.msg) +**TOPICS:** sensor_airflow + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| speed | `float32` | | | the speed being reported by the wind / airflow sensor | +| direction | `float32` | | | the direction being reported by the wind / airflow sensor | +| status | `uint8` | | | Status code from the sensor | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAirflow.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +29,6 @@ uint32 device_id # unique device ID for the sensor that does not float32 speed # the speed being reported by the wind / airflow sensor float32 direction # the direction being reported by the wind / airflow sensor uint8 status # Status code from the sensor - ``` + +::: diff --git a/docs/uk/msg_docs/SensorBaro.md b/docs/uk/msg_docs/SensorBaro.md index ef4d7a8f28..f666fd9eee 100644 --- a/docs/uk/msg_docs/SensorBaro.md +++ b/docs/uk/msg_docs/SensorBaro.md @@ -1,11 +1,39 @@ +--- +pageClass: is-wide-page +--- + # SensorBaro (UORB message) -Barometer sensor +Barometer sensor. This is populated by barometer drivers and used by the EKF2 estimator. The information is published in the `SCALED_PRESSURE_n` MAVLink messages (along with information from a corresponding `DifferentialPressure` instance). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorBaro.msg) +**TOPICS:** sensor_baro + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time of publication (since system start) | +| timestamp_sample | `uint64` | us | | Time of raw data capture | +| device_id | `uint32` | | | Unique device ID for the sensor that does not change between power cycles | +| pressure | `float32` | Pa | | Static pressure measurement | +| temperature | `float32` | degC | | Temperature. | +| error_count | `uint32` | | | Number of errors detected by driver. | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorBaro.msg) + +:::details +Click here to see original file ```c # Barometer sensor @@ -22,5 +50,6 @@ float32 temperature # [degC] Temperature. uint32 error_count # [-] Number of errors detected by driver. uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/uk/msg_docs/SensorCombined.md b/docs/uk/msg_docs/SensorCombined.md index 6d3068f432..90145da660 100644 --- a/docs/uk/msg_docs/SensorCombined.md +++ b/docs/uk/msg_docs/SensorCombined.md @@ -1,9 +1,43 @@ +--- +pageClass: is-wide-page +--- + # SensorCombined (Повідомлення UORB) -Вимірювання сенсорів у вигляді одиниць SI. -Ці поля масштабуються та компенсуються зміщенням, де це можливо, і не змінюються з ревізіями плати та оновленнями сенсора. +Вимірювання сенсорів у вигляді одиниць SI. These fields are scaled and offset-compensated where possible and do not. change with board revisions and sensor updates. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorCombined.msg) +**TOPICS:** sensor_combined + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| gyro_rad | `float32[3]` | | | average angular rate measured in the FRD body frame XYZ-axis in rad/s over the last gyro sampling period | +| gyro_integral_dt | `uint32` | | | gyro measurement sampling period in microseconds | +| accelerometer_timestamp_relative | `int32` | | | timestamp + accelerometer_timestamp_relative = Accelerometer timestamp | +| accelerometer_m_s2 | `float32[3]` | | | average value acceleration measured in the FRD body frame XYZ-axis in m/s^2 over the last accelerometer sampling period | +| accelerometer_integral_dt | `uint32` | | | accelerometer measurement sampling period in microseconds | +| accelerometer_clipping | `uint8` | | | bitfield indicating if there was any accelerometer clipping (per axis) during the integration time frame | +| gyro_clipping | `uint8` | | | bitfield indicating if there was any gyro clipping (per axis) during the integration time frame | +| accel_calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever accelermeter calibration changes. | +| gyro_calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever rate gyro calibration changes. | + +## Constants + +| Назва | Тип | Значення | Опис | +| --------------------------------------------------------------------------------------------------------------- | ------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| RELATIVE_TIMESTAMP_INVALID | `int32` | 2147483647 | (0x7fffffff) If one of the relative timestamps is set to this value, it means the associated sensor values are invalid | +| CLIPPING_X | `uint8` | 1 | | +| CLIPPING_Y | `uint8` | 2 | | +| CLIPPING_Z | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorCombined.msg) + +:::details +Click here to see original file ```c # Sensor readings in SI-unit form. @@ -31,5 +65,6 @@ uint8 gyro_clipping # bitfield indicating if there was any gyro clip uint8 accel_calibration_count # Calibration changed counter. Monotonically increases whenever accelermeter calibration changes. uint8 gyro_calibration_count # Calibration changed counter. Monotonically increases whenever rate gyro calibration changes. - ``` + +::: diff --git a/docs/uk/msg_docs/SensorCorrection.md b/docs/uk/msg_docs/SensorCorrection.md index 9a25e388f1..b85fce0cd7 100644 --- a/docs/uk/msg_docs/SensorCorrection.md +++ b/docs/uk/msg_docs/SensorCorrection.md @@ -1,8 +1,49 @@ +--- +pageClass: is-wide-page +--- + # SensorCorrection (Повідомлення UORB) -Датчики корекції по SI-одиницях для датчика голосувань +Sensor corrections in SI-unit form for the voted sensor. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorCorrection.msg) +**TOPICS:** sensor_correction + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| accel_device_ids | `uint32[4]` | | | | +| accel_temperature | `float32[4]` | | | | +| accel_offset_0 | `float32[3]` | | | accelerometer 0 offsets in the FRD board frame XYZ-axis in m/s^s | +| accel_offset_1 | `float32[3]` | | | accelerometer 1 offsets in the FRD board frame XYZ-axis in m/s^s | +| accel_offset_2 | `float32[3]` | | | accelerometer 2 offsets in the FRD board frame XYZ-axis in m/s^s | +| accel_offset_3 | `float32[3]` | | | accelerometer 3 offsets in the FRD board frame XYZ-axis in m/s^s | +| gyro_device_ids | `uint32[4]` | | | | +| gyro_temperature | `float32[4]` | | | | +| gyro_offset_0 | `float32[3]` | | | gyro 0 XYZ offsets in the sensor frame in rad/s | +| gyro_offset_1 | `float32[3]` | | | gyro 1 XYZ offsets in the sensor frame in rad/s | +| gyro_offset_2 | `float32[3]` | | | gyro 2 XYZ offsets in the sensor frame in rad/s | +| gyro_offset_3 | `float32[3]` | | | gyro 3 XYZ offsets in the sensor frame in rad/s | +| mag_device_ids | `uint32[4]` | | | | +| mag_temperature | `float32[4]` | | | | +| mag_offset_0 | `float32[3]` | | | magnetometer 0 offsets in the FRD board frame XYZ-axis in m/s^s | +| mag_offset_1 | `float32[3]` | | | magnetometer 1 offsets in the FRD board frame XYZ-axis in m/s^s | +| mag_offset_2 | `float32[3]` | | | magnetometer 2 offsets in the FRD board frame XYZ-axis in m/s^s | +| mag_offset_3 | `float32[3]` | | | magnetometer 3 offsets in the FRD board frame XYZ-axis in m/s^s | +| baro_device_ids | `uint32[4]` | | | | +| baro_temperature | `float32[4]` | | | | +| baro_offset_0 | `float32` | | | barometric pressure 0 offsets in the sensor frame in Pascals | +| baro_offset_1 | `float32` | | | barometric pressure 1 offsets in the sensor frame in Pascals | +| baro_offset_2 | `float32` | | | barometric pressure 2 offsets in the sensor frame in Pascals | +| baro_offset_3 | `float32` | | | barometric pressure 3 offsets in the sensor frame in Pascals | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorCorrection.msg) + +:::details +Click here to see original file ```c # @@ -46,5 +87,6 @@ float32 baro_offset_0 # barometric pressure 0 offsets in the sensor frame in Pa float32 baro_offset_1 # barometric pressure 1 offsets in the sensor frame in Pascals float32 baro_offset_2 # barometric pressure 2 offsets in the sensor frame in Pascals float32 baro_offset_3 # barometric pressure 3 offsets in the sensor frame in Pascals - ``` + +::: diff --git a/docs/uk/msg_docs/SensorGnssRelative.md b/docs/uk/msg_docs/SensorGnssRelative.md index 5472fe5a7c..4e5ed52e70 100644 --- a/docs/uk/msg_docs/SensorGnssRelative.md +++ b/docs/uk/msg_docs/SensorGnssRelative.md @@ -1,8 +1,45 @@ +--- +pageClass: is-wide-page +--- + # SensorGnssRelative (Повідомлення UORB) Інформація про відносне позиціонування GNSS в рамці NED. NED кадр визначається як локальна топологічна система на задній станції. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGnssRelative.msg) +**TOPICS:** sensor_gnssrelative + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| time_utc_usec | `uint64` | | | Timestamp (microseconds, UTC), this is the timestamp which comes from the gps module. It might be unavailable right after cold start, indicated by a value of 0 | +| reference_station_id | `uint16` | | | Reference Station ID | +| положення | `float32[3]` | | | GPS NED relative position vector (m) | +| position_accuracy | `float32[3]` | | | Accuracy of relative position (m) | +| heading | `float32` | | | Heading of the relative position vector (radians) | +| heading_accuracy | `float32` | | | Accuracy of heading of the relative position vector (radians) | +| position_length | `float32` | | | Length of the position vector (m) | +| accuracy_length | `float32` | | | Accuracy of the position length (m) | +| gnss_fix_ok | `bool` | | | GNSS valid fix (i.e within DOP & accuracy masks) | +| differential_solution | `bool` | | | differential corrections were applied | +| relative_position_valid | `bool` | | | | +| carrier_solution_floating | `bool` | | | carrier phase range solution with floating ambiguities | +| carrier_solution_fixed | `bool` | | | carrier phase range solution with fixed ambiguities | +| moving_base_mode | `bool` | | | if the receiver is operating in moving base mode | +| reference_position_miss | `bool` | | | extrapolated reference position was used to compute moving base solution this epoch | +| reference_observations_miss | `bool` | | | extrapolated reference observations were used to compute moving base solution this epoch | +| heading_valid | `bool` | | | | +| relative_position_normalized | `bool` | | | the components of the relative position vector (including the high-precision parts) are normalized | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGnssRelative.msg) + +:::details +Click here to see original file ```c # GNSS relative positioning information in NED frame. The NED frame is defined as the local topological system at the reference station. @@ -35,5 +72,6 @@ bool reference_position_miss # extrapolated reference position was used to bool reference_observations_miss # extrapolated reference observations were used to compute moving base solution this epoch bool heading_valid bool relative_position_normalized # the components of the relative position vector (including the high-precision parts) are normalized - ``` + +::: diff --git a/docs/uk/msg_docs/SensorGnssStatus.md b/docs/uk/msg_docs/SensorGnssStatus.md index 70602b85fc..d2acc1278e 100644 --- a/docs/uk/msg_docs/SensorGnssStatus.md +++ b/docs/uk/msg_docs/SensorGnssStatus.md @@ -1,8 +1,31 @@ +--- +pageClass: is-wide-page +--- + # SensorGnssStatus (UORB message) -Gnss quality indicators +Gnss quality indicators. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGnssStatus.msg) +**TOPICS:** sensor_gnssstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| `bool` | | | Set to true if quality indicators are available | | +| quality_corrections | `uint8` | | | Corrections quality from 0 to 10, or 255 if not available | +| quality_receiver | `uint8` | | | Overall receiver operating status from 0 to 10, or 255 if not available | +| quality_gnss_signals | `uint8` | | | Quality of GNSS signals from 0 to 10, or 255 if not available | +| quality_post_processing | `uint8` | | | Expected post processing quality from 0 to 10, or 255 if not available | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGnssStatus.msg) + +:::details +Click here to see original file ```c # Gnss quality indicators @@ -15,5 +38,6 @@ uint8 quality_corrections # Corrections quality from 0 to 10, or 255 if no uint8 quality_receiver # Overall receiver operating status from 0 to 10, or 255 if not available uint8 quality_gnss_signals # Quality of GNSS signals from 0 to 10, or 255 if not available uint8 quality_post_processing # Expected post processing quality from 0 to 10, or 255 if not available - ``` + +::: diff --git a/docs/uk/msg_docs/SensorGps.md b/docs/uk/msg_docs/SensorGps.md index e451e98aaa..c01d04fba7 100644 --- a/docs/uk/msg_docs/SensorGps.md +++ b/docs/uk/msg_docs/SensorGps.md @@ -1,9 +1,97 @@ +--- +pageClass: is-wide-page +--- + # SensorGps (повідомлення UORB) -Домашнє GPS положення в координатах WGS84. -the field 'timestamp' is for the position & velocity (microseconds) +Домашнє GPS положення в координатах WGS84. the field 'timestamp' is for the position & velocity (microseconds). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGps.msg) +**TOPICS:** sensor_gps vehicle_gps_position + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| latitude_deg | `float64` | | | Latitude in degrees, allows centimeter level RTK precision | +| longitude_deg | `float64` | | | Longitude in degrees, allows centimeter level RTK precision | +| altitude_msl_m | `float64` | | | Altitude above MSL, meters | +| altitude_ellipsoid_m | `float64` | | | Altitude above Ellipsoid, meters | +| s_variance_m_s | `float32` | | | GPS speed accuracy estimate, (metres/sec) | +| c_variance_rad | `float32` | | | GPS course accuracy estimate, (radians) | +| fix_type | `uint8` | | | Some applications will not use the value of this field unless it is at least two, so always correctly fill in the fix. | +| eph | `float32` | | | GPS horizontal position accuracy (metres) | +| epv | `float32` | | | GPS vertical position accuracy (metres) | +| hdop | `float32` | | | Horizontal dilution of precision | +| vdop | `float32` | | | Vertical dilution of precision | +| noise_per_ms | `int32` | | | GPS noise per millisecond | +| automatic_gain_control | `uint16` | | | Automatic gain control monitor | +| jamming_state | `uint8` | | | indicates whether jamming has been detected or suspected by the receivers. O: Unknown, 1: OK, 2: Mitigated, 3: Detected | +| jamming_indicator | `int32` | | | indicates jamming is occurring | +| spoofing_state | `uint8` | | | indicates whether spoofing has been detected or suspected by the receivers. O: Unknown, 1: OK, 2: Mitigated, 3: Detected | +| authentication_state | `uint8` | | | GPS signal authentication state | +| vel_m_s | `float32` | | | GPS ground speed, (metres/sec) | +| vel_n_m_s | `float32` | | | GPS North velocity, (metres/sec) | +| vel_e_m_s | `float32` | | | GPS East velocity, (metres/sec) | +| vel_d_m_s | `float32` | | | GPS Down velocity, (metres/sec) | +| cog_rad | `float32` | | | Course over ground (NOT heading, but direction of movement), -PI..PI, (radians) | +| vel_ned_valid | `bool` | | | True if NED velocity is valid | +| timestamp_time_relative | `int32` | | | timestamp + timestamp_time_relative = Time of the UTC timestamp since system start, (microseconds) | +| time_utc_usec | `uint64` | | | Timestamp (microseconds, UTC), this is the timestamp which comes from the gps module. It might be unavailable right after cold start, indicated by a value of 0 | +| satellites_used | `uint8` | | | Number of satellites used | +| system_error | `uint32` | | | General errors with the connected GPS receiver | +| heading | `float32` | | | heading angle of XYZ body frame rel to NED. Set to NaN if not available and updated (used for dual antenna GPS), (rad, [-PI, PI]) | +| heading_offset | `float32` | | | heading offset of dual antenna array in body frame. Set to NaN if not applicable. (rad, [-PI, PI]) | +| heading_accuracy | `float32` | | | heading accuracy (rad, [0, 2PI]) | +| rtcm_injection_rate | `float32` | | | RTCM message injection rate Hz | +| selected_rtcm_instance | `uint8` | | | uorb instance that is being used for RTCM corrections | +| rtcm_crc_failed | `bool` | | | RTCM message CRC failure detected | +| rtcm_msg_used | `uint8` | | | Indicates if the RTCM message was used successfully by the receiver | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ---------------------------------------------------------- | +| FIX_TYPE_NONE | `uint8` | 1 | Value 0 is also valid to represent no fix. | +| FIX_TYPE_2D | `uint8` | 2 | | +| FIX_TYPE_3D | `uint8` | 3 | | +| FIX_TYPE_RTCM_CODE_DIFFERENTIAL | `uint8` | 4 | | +| FIX_TYPE_RTK_FLOAT | `uint8` | 5 | | +| FIX_TYPE_RTK_FIXED | `uint8` | 6 | | +| FIX_TYPE_EXTRAPOLATED | `uint8` | 8 | | +| JAMMING_STATE_UNKNOWN | `uint8` | 0 | default | +| JAMMING_STATE_OK | `uint8` | 1 | | +| JAMMING_STATE_MITIGATED | `uint8` | 2 | | +| JAMMING_STATE_DETECTED | `uint8` | 3 | | +| SPOOFING_STATE_UNKNOWN | `uint8` | 0 | default | +| SPOOFING_STATE_OK | `uint8` | 1 | | +| SPOOFING_STATE_MITIGATED | `uint8` | 2 | | +| SPOOFING_STATE_DETECTED | `uint8` | 3 | | +| AUTHENTICATION_STATE_UNKNOWN | `uint8` | 0 | default | +| AUTHENTICATION_STATE_INITIALIZING | `uint8` | 1 | | +| AUTHENTICATION_STATE_ERROR | `uint8` | 2 | | +| AUTHENTICATION_STATE_OK | `uint8` | 3 | | +| AUTHENTICATION_STATE_DISABLED | `uint8` | 4 | | +| SYSTEM_ERROR_OK | `uint32` | 0 | default | +| SYSTEM_ERROR_INCOMING_CORRECTIONS | `uint32` | 1 | | +| SYSTEM_ERROR_CONFIGURATION | `uint32` | 2 | | +| SYSTEM_ERROR_SOFTWARE | `uint32` | 4 | | +| SYSTEM_ERROR_ANTENNA | `uint32` | 8 | | +| SYSTEM_ERROR_EVENT_CONGESTION | `uint32` | 16 | | +| SYSTEM_ERROR_CPU_OVERLOAD | `uint32` | 32 | | +| SYSTEM_ERROR_OUTPUT_CONGESTION | `uint32` | 64 | | +| RTCM_MSG_USED_UNKNOWN | `uint8` | 0 | | +| RTCM_MSG_USED_NOT_USED | `uint8` | 1 | | +| RTCM_MSG_USED_USED | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGps.msg) + +:::details +Click here to see original file ```c # GPS position in WGS84 coordinates. @@ -96,5 +184,6 @@ uint8 RTCM_MSG_USED_USED = 2 uint8 rtcm_msg_used # Indicates if the RTCM message was used successfully by the receiver # TOPICS sensor_gps vehicle_gps_position - ``` + +::: diff --git a/docs/uk/msg_docs/SensorGyro.md b/docs/uk/msg_docs/SensorGyro.md index ee2b4f084a..673216cd7c 100644 --- a/docs/uk/msg_docs/SensorGyro.md +++ b/docs/uk/msg_docs/SensorGyro.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # SensorGyro (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyro.msg) +**TOPICS:** sensor_gyro + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| x | `float32` | | | angular velocity in the FRD board frame X-axis in rad/s | +| y | `float32` | | | angular velocity in the FRD board frame Y-axis in rad/s | +| z | `float32` | | | angular velocity in the FRD board frame Z-axis in rad/s | +| temperature | `float32` | | | temperature in degrees Celsius | +| error_count | `uint32` | | | | +| clip_counter | `uint8[3]` | | | clip count per axis in the sample period | +| samples | `uint8` | | | number of raw samples that went into this message | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyro.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -21,5 +53,6 @@ uint8[3] clip_counter # clip count per axis in the sample period uint8 samples # number of raw samples that went into this message uint8 ORB_QUEUE_LENGTH = 8 - ``` + +::: diff --git a/docs/uk/msg_docs/SensorGyroFft.md b/docs/uk/msg_docs/SensorGyroFft.md index 645ce2b2dc..58a1c0d701 100644 --- a/docs/uk/msg_docs/SensorGyroFft.md +++ b/docs/uk/msg_docs/SensorGyroFft.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # SensorGyroFft (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyroFft.msg) +**TOPICS:** sensor_gyrofft + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| sensor_sample_rate_hz | `float32` | | | | +| resolution_hz | `float32` | | | | +| peak_frequencies_x | `float32[3]` | | | x axis peak frequencies | +| peak_frequencies_y | `float32[3]` | | | y axis peak frequencies | +| peak_frequencies_z | `float32[3]` | | | z axis peak frequencies | +| peak_snr_x | `float32[3]` | | | x axis peak SNR | +| peak_snr_y | `float32[3]` | | | y axis peak SNR | +| peak_snr_z | `float32[3]` | | | z axis peak SNR | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyroFft.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +45,6 @@ float32[3] peak_frequencies_z # z axis peak frequencies float32[3] peak_snr_x # x axis peak SNR float32[3] peak_snr_y # y axis peak SNR float32[3] peak_snr_z # z axis peak SNR - ``` + +::: diff --git a/docs/uk/msg_docs/SensorGyroFifo.md b/docs/uk/msg_docs/SensorGyroFifo.md index 4d440b1129..a0cde80bb2 100644 --- a/docs/uk/msg_docs/SensorGyroFifo.md +++ b/docs/uk/msg_docs/SensorGyroFifo.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # SensorGyroFifo (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyroFifo.msg) +**TOPICS:** sensor_gyrofifo + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| dt | `float32` | | | delta time between samples (microseconds) | +| scale | `float32` | | | | +| samples | `uint8` | | | number of valid samples | +| x | `int16[32]` | | | angular velocity in the FRD board frame X-axis in rad/s | +| y | `int16[32]` | | | angular velocity in the FRD board frame Y-axis in rad/s | +| z | `int16[32]` | | | angular velocity in the FRD board frame Z-axis in rad/s | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyroFifo.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +49,6 @@ int16[32] y # angular velocity in the FRD board frame Y-axis in ra int16[32] z # angular velocity in the FRD board frame Z-axis in rad/s uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/uk/msg_docs/SensorHygrometer.md b/docs/uk/msg_docs/SensorHygrometer.md index 765c031776..0589b43b24 100644 --- a/docs/uk/msg_docs/SensorHygrometer.md +++ b/docs/uk/msg_docs/SensorHygrometer.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # SensorHygrometer (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorHygrometer.msg) +**TOPICS:** sensor_hygrometer + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| `float32` | | | Temperature provided by sensor (Celsius) | | +| humidity | `float32` | | | Humidity provided by sensor | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorHygrometer.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +32,6 @@ uint32 device_id # unique device ID for the sensor that does not change float32 temperature # Temperature provided by sensor (Celsius) float32 humidity # Humidity provided by sensor - ``` + +::: diff --git a/docs/uk/msg_docs/SensorMag.md b/docs/uk/msg_docs/SensorMag.md index 9bbc9f8742..171c0d9990 100644 --- a/docs/uk/msg_docs/SensorMag.md +++ b/docs/uk/msg_docs/SensorMag.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # SensorMag (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorMag.msg) +**TOPICS:** sensor_mag + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| x | `float32` | | | magnetic field in the FRD board frame X-axis in Gauss | +| y | `float32` | | | magnetic field in the FRD board frame Y-axis in Gauss | +| z | `float32` | | | magnetic field in the FRD board frame Z-axis in Gauss | +| temperature | `float32` | | | temperature in degrees Celsius | +| error_count | `uint32` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorMag.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -17,5 +47,6 @@ float32 temperature # temperature in degrees Celsius uint32 error_count uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/uk/msg_docs/SensorOpticalFlow.md b/docs/uk/msg_docs/SensorOpticalFlow.md index 750b5e65bb..0a8968bb7b 100644 --- a/docs/uk/msg_docs/SensorOpticalFlow.md +++ b/docs/uk/msg_docs/SensorOpticalFlow.md @@ -1,6 +1,46 @@ +--- +pageClass: is-wide-page +--- + # SensorOpticalFlow (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorOpticalFlow.msg) +**TOPICS:** sensor_opticalflow + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| pixel_flow | `float32[2]` | | | (radians) optical flow in radians where a positive value is produced by a RH rotation of the sensor about the body axis | +| delta_angle | `float32[3]` | | | (radians) accumulated gyro radians where a positive value is produced by a RH rotation about the body axis. Set to NaN if flow sensor does not have 3-axis gyro data. | +| delta_angle_available | `bool` | | | | +| distance_m | `float32` | | | (meters) Distance to the center of the flow field | +| distance_available | `bool` | | | | +| integration_timespan_us | `uint32` | | | (microseconds) accumulation timespan in microseconds | +| quality | `uint8` | | | quality, 0: bad quality, 255: maximum quality | +| error_count | `uint32` | | | | +| max_flow_rate | `float32` | | | (radians/s) Magnitude of maximum angular which the optical flow sensor can measure reliably | +| min_ground_distance | `float32` | | | (meters) Minimum distance from ground at which the optical flow sensor operates reliably | +| max_ground_distance | `float32` | | | (meters) Maximum distance from ground at which the optical flow sensor operates reliably | +| mode | `uint8` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| MODE_UNKNOWN | `uint8` | 0 | | +| MODE_BRIGHT | `uint8` | 1 | | +| MODE_LOWLIGHT | `uint8` | 2 | | +| MODE_SUPER_LOWLIGHT | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorOpticalFlow.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -33,5 +73,6 @@ uint8 MODE_LOWLIGHT = 2 uint8 MODE_SUPER_LOWLIGHT = 3 uint8 mode - ``` + +::: diff --git a/docs/uk/msg_docs/SensorPreflightMag.md b/docs/uk/msg_docs/SensorPreflightMag.md index 767acf66ce..931d5f18af 100644 --- a/docs/uk/msg_docs/SensorPreflightMag.md +++ b/docs/uk/msg_docs/SensorPreflightMag.md @@ -1,9 +1,26 @@ +--- +pageClass: is-wide-page +--- + # SensorPreflightMag (UORB message) -Метрики перевірки сенсорів перед польотом. -The topic will not be updated when the vehicle is armed +Метрики перевірки сенсорів перед польотом. The topic will not be updated when the vehicle is armed. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorPreflightMag.msg) +**TOPICS:** sensor_preflightmag + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mag_inconsistency_angle | `float32` | | | maximum angle between magnetometer instance field vectors in radians. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorPreflightMag.msg) + +:::details +Click here to see original file ```c # @@ -13,5 +30,6 @@ The topic will not be updated when the vehicle is armed uint64 timestamp # time since system start (microseconds) float32 mag_inconsistency_angle # maximum angle between magnetometer instance field vectors in radians. - ``` + +::: diff --git a/docs/uk/msg_docs/SensorSelection.md b/docs/uk/msg_docs/SensorSelection.md index 562b44d504..805128dc21 100644 --- a/docs/uk/msg_docs/SensorSelection.md +++ b/docs/uk/msg_docs/SensorSelection.md @@ -1,9 +1,27 @@ +--- +pageClass: is-wide-page +--- + # SensorSelection (UORB повідомлення) -Ідентифікатори датчиків для вибраних датчиків, виведених на темі sensor_combined. -Will be updated on startup of the sensor module and when sensor selection changes +Ідентифікатори датчиків для вибраних датчиків, виведених на темі sensor_combined. Will be updated on startup of the sensor module and when sensor selection changes. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorSelection.msg) +**TOPICS:** sensor_selection + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| accel_device_id | `uint32` | | | unique device ID for the selected accelerometers | +| gyro_device_id | `uint32` | | | unique device ID for the selected rate gyros | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorSelection.msg) + +:::details +Click here to see original file ```c # @@ -13,5 +31,6 @@ Will be updated on startup of the sensor module and when sensor selection change uint64 timestamp # time since system start (microseconds) uint32 accel_device_id # unique device ID for the selected accelerometers uint32 gyro_device_id # unique device ID for the selected rate gyros - ``` + +::: diff --git a/docs/uk/msg_docs/SensorTemp.md b/docs/uk/msg_docs/SensorTemp.md index 5ed50541fe..5aafcaf494 100644 --- a/docs/uk/msg_docs/SensorTemp.md +++ b/docs/uk/msg_docs/SensorTemp.md @@ -1,11 +1,31 @@ +--- +pageClass: is-wide-page +--- + # SensorTemp (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorTemp.msg) +**TOPICS:** sensor_temp + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| `float32` | | | Temperature provided by sensor (Celsius) | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorTemp.msg) + +:::details +Click here to see original file ```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/SensorUwb.md b/docs/uk/msg_docs/SensorUwb.md index 26a6120339..b3a3053c00 100644 --- a/docs/uk/msg_docs/SensorUwb.md +++ b/docs/uk/msg_docs/SensorUwb.md @@ -1,9 +1,45 @@ +--- +pageClass: is-wide-page +--- + # SensorUwb (Повідомлення UORB) -UWB відстань містить інформацію про відстань, виміряну системою позиціонування з використанням ультраширокосмугової технології, -такою як Pozyx або NXP Rddrone. +UWB distance contains the distance information measured by an ultra-wideband positioning system,. such as Pozyx or NXP Rddrone. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorUwb.msg) +**TOPICS:** sensor_uwb + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| sessionid | `uint32` | | | UWB SessionID | +| time_offset | `uint32` | | | Time between Ranging Rounds in ms | +| counter | `uint32` | | | Number of Ranges since last Start of Ranging | +| mac | `uint16` | | | MAC adress of Initiator (controller) | +| mac_dest | `uint16` | | | MAC adress of Responder (Controlee) | +| status | `uint16` | | | status feedback # | +| nlos | `uint8` | | | None line of site condition y/n | +| distance | `float32` | | | distance in m to the UWB receiver | +| aoa_azimuth_dev | `float32` | | | Angle of arrival of first incomming RX msg | +| aoa_elevation_dev | `float32` | | | Angle of arrival of first incomming RX msg | +| aoa_azimuth_resp | `float32` | | | Angle of arrival of first incomming RX msg at the responder | +| aoa_elevation_resp | `float32` | | | Angle of arrival of first incomming RX msg at the responder | +| aoa_azimuth_fom | `uint8` | | | AOA Azimuth FOM | +| aoa_elevation_fom | `uint8` | | | AOA Elevation FOM | +| aoa_dest_azimuth_fom | `uint8` | | | AOA Azimuth FOM | +| aoa_dest_elevation_fom | `uint8` | | | AOA Elevation FOM | +| orientation | `uint8` | | | Direction the sensor faces from MAV_SENSOR_ORIENTATION enum | +| offset_x | `float32` | | | UWB initiator offset in X axis (NED drone frame) | +| offset_y | `float32` | | | UWB initiator offset in Y axis (NED drone frame) | +| offset_z | `float32` | | | UWB initiator offset in Z axis (NED drone frame) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorUwb.msg) + +:::details +Click here to see original file ```c # UWB distance contains the distance information measured by an ultra-wideband positioning system, @@ -40,5 +76,6 @@ uint8 orientation # Direction the sensor faces from MAV_SENSOR_ORIENTATION enum float32 offset_x # UWB initiator offset in X axis (NED drone frame) float32 offset_y # UWB initiator offset in Y axis (NED drone frame) float32 offset_z # UWB initiator offset in Z axis (NED drone frame) - ``` + +::: diff --git a/docs/uk/msg_docs/SensorsStatus.md b/docs/uk/msg_docs/SensorsStatus.md index b00ad6eb08..853a81decd 100644 --- a/docs/uk/msg_docs/SensorsStatus.md +++ b/docs/uk/msg_docs/SensorsStatus.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # SensorsStatus (повідомлення UORB) Метрики перевірки датчика. Це значення буде нульовим для датчика, який є первинним або незаповненим. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorsStatus.msg) +**TOPICS:** sensors_status_baro sensors_status_mag + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id_primary | `uint32` | | | current primary device id for reference | +| device_ids | `uint32[4]` | | | | +| inconsistency | `float32[4]` | | | magnitude of difference between sensor instance and mean | +| healthy | `bool[4]` | | | sensor healthy | +| priority | `uint8[4]` | | | | +| enabled | `bool[4]` | | | | +| external | `bool[4]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorsStatus.msg) + +:::details +Click here to see original file ```c # @@ -20,5 +44,6 @@ bool[4] enabled bool[4] external # TOPICS sensors_status_baro sensors_status_mag - ``` + +::: diff --git a/docs/uk/msg_docs/SensorsStatusImu.md b/docs/uk/msg_docs/SensorsStatusImu.md index 864da8f23c..d9fd0b090c 100644 --- a/docs/uk/msg_docs/SensorsStatusImu.md +++ b/docs/uk/msg_docs/SensorsStatusImu.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # SensorsStatusImu (повідомлення UORB) Метрики перевірки датчика. Це значення буде нульовим для датчика, який є первинним або незаповненим. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorsStatusImu.msg) +**TOPICS:** sensors_statusimu + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| accel_device_id_primary | `uint32` | | | current primary accel device id for reference | +| accel_device_ids | `uint32[4]` | | | | +| accel_inconsistency_m_s_s | `float32[4]` | | | magnitude of acceleration difference between IMU instance and mean in m/s^2. | +| accel_healthy | `bool[4]` | | | | +| accel_priority | `uint8[4]` | | | | +| gyro_device_id_primary | `uint32` | | | current primary gyro device id for reference | +| gyro_device_ids | `uint32[4]` | | | | +| gyro_inconsistency_rad_s | `float32[4]` | | | magnitude of angular rate difference between IMU instance and mean in (rad/s). | +| gyro_healthy | `bool[4]` | | | | +| gyro_priority | `uint8[4]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorsStatusImu.msg) + +:::details +Click here to see original file ```c # @@ -23,5 +50,6 @@ uint32[4] gyro_device_ids float32[4] gyro_inconsistency_rad_s # magnitude of angular rate difference between IMU instance and mean in (rad/s). bool[4] gyro_healthy uint8[4] gyro_priority - ``` + +::: diff --git a/docs/uk/msg_docs/SystemPower.md b/docs/uk/msg_docs/SystemPower.md index eac7503f97..665b2546c8 100644 --- a/docs/uk/msg_docs/SystemPower.md +++ b/docs/uk/msg_docs/SystemPower.md @@ -1,6 +1,49 @@ +--- +pageClass: is-wide-page +--- + # SystemPower (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SystemPower.msg) +**TOPICS:** system_power + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| voltage5v_v | `float32` | | | peripheral 5V rail voltage | +| voltage_payload_v | `float32` | | | payload rail voltage | +| sensors3v3 | `float32[4]` | | | Sensors 3V3 rail voltage | +| sensors3v3_valid | `uint8` | | | Sensors 3V3 rail voltage was read (bitfield). | +| usb_connected | `uint8` | | | USB is connected when 1 | +| brick_valid | `uint8` | | | brick bits power is good when bit 1 | +| usb_valid | `uint8` | | | USB is valid when 1 | +| servo_valid | `uint8` | | | servo power is good when 1 | +| periph_5v_oc | `uint8` | | | peripheral overcurrent when 1 | +| hipower_5v_oc | `uint8` | | | high power peripheral overcurrent when 1 | +| comp_5v_valid | `uint8` | | | 5V to companion valid | +| can1_gps1_5v_valid | `uint8` | | | 5V for CAN1/GPS1 valid | +| payload_v_valid | `uint8` | | | payload rail voltage is valid | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| BRICK1_VALID_SHIFTS | `uint8` | 0 | | +| BRICK1_VALID_MASK | `uint8` | 1 | | +| BRICK2_VALID_SHIFTS | `uint8` | 1 | | +| BRICK2_VALID_MASK | `uint8` | 2 | | +| BRICK3_VALID_SHIFTS | `uint8` | 2 | | +| BRICK3_VALID_MASK | `uint8` | 4 | | +| BRICK4_VALID_SHIFTS | `uint8` | 3 | | +| BRICK4_VALID_MASK | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SystemPower.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -26,5 +69,6 @@ uint8 BRICK3_VALID_SHIFTS=2 uint8 BRICK3_VALID_MASK=4 uint8 BRICK4_VALID_SHIFTS=3 uint8 BRICK4_VALID_MASK=8 - ``` + +::: diff --git a/docs/uk/msg_docs/TakeoffStatus.md b/docs/uk/msg_docs/TakeoffStatus.md index e8221378e2..ecdc3d1b91 100644 --- a/docs/uk/msg_docs/TakeoffStatus.md +++ b/docs/uk/msg_docs/TakeoffStatus.md @@ -1,8 +1,38 @@ +--- +pageClass: is-wide-page +--- + # TakeoffStatus (UORB повідомлення) -Статус злітної машини наразі доступний лише для мультикоптерів +Status of the takeoff state machine currently just available for multicopters. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TakeoffStatus.msg) +**TOPICS:** takeoff_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| takeoff_state | `uint8` | | | | +| tilt_limit | `float32` | | | limited tilt feasibility during takeoff, contains maximum tilt otherwise | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| TAKEOFF_STATE_UNINITIALIZED | `uint8` | 0 | | +| TAKEOFF_STATE_DISARMED | `uint8` | 1 | | +| TAKEOFF_STATE_SPOOLUP | `uint8` | 2 | | +| TAKEOFF_STATE_READY_FOR_TAKEOFF | `uint8` | 3 | | +| TAKEOFF_STATE_RAMPUP | `uint8` | 4 | | +| TAKEOFF_STATE_FLIGHT | `uint8` | 5 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TakeoffStatus.msg) + +:::details +Click here to see original file ```c # Status of the takeoff state machine currently just available for multicopters @@ -19,5 +49,6 @@ uint8 TAKEOFF_STATE_FLIGHT = 5 uint8 takeoff_state float32 tilt_limit # limited tilt feasibility during takeoff, contains maximum tilt otherwise - ``` + +::: diff --git a/docs/uk/msg_docs/TaskStackInfo.md b/docs/uk/msg_docs/TaskStackInfo.md index 5dce461ca8..d42a5796a4 100644 --- a/docs/uk/msg_docs/TaskStackInfo.md +++ b/docs/uk/msg_docs/TaskStackInfo.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # TaskStackInfo (повідомлення UORB) -інформація про стек для одного запущеного процесу +stack information for a single running process. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TaskStackInfo.msg) +**TOPICS:** task_stackinfo + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| stack_free | `uint16` | | | | +| task_name | `char[24]` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TaskStackInfo.msg) + +:::details +Click here to see original file ```c # stack information for a single running process @@ -13,5 +38,6 @@ uint16 stack_free char[24] task_name uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/uk/msg_docs/TecsStatus.md b/docs/uk/msg_docs/TecsStatus.md index 4c360ea6dd..e74953099a 100644 --- a/docs/uk/msg_docs/TecsStatus.md +++ b/docs/uk/msg_docs/TecsStatus.md @@ -1,6 +1,47 @@ +--- +pageClass: is-wide-page +--- + # TecsStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TecsStatus.msg) +**TOPICS:** tecs_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| altitude_sp | `float32` | | | Altitude setpoint AMSL [m] | +| altitude_reference | `float32` | | | Altitude setpoint reference AMSL [m] | +| altitude_time_constant | `float32` | | | Time constant of the altitude tracker [s] | +| height_rate_reference | `float32` | | | Height rate setpoint reference [m/s] | +| height_rate_direct | `float32` | | | Direct height rate setpoint from velocity reference generator [m/s] | +| height_rate_setpoint | `float32` | | | Height rate setpoint [m/s] | +| height_rate | `float32` | | | Height rate [m/s] | +| equivalent_airspeed_sp | `float32` | | | Equivalent airspeed setpoint [m/s] | +| true_airspeed_sp | `float32` | | | True airspeed setpoint [m/s] | +| true_airspeed_filtered | `float32` | | | True airspeed filtered [m/s] | +| true_airspeed_derivative_sp | `float32` | | | True airspeed derivative setpoint [m/s^2] | +| true_airspeed_derivative | `float32` | | | True airspeed derivative [m/s^2] | +| true_airspeed_derivative_raw | `float32` | | | True airspeed derivative raw [m/s^2] | +| total_energy_rate_sp | `float32` | | | Total energy rate setpoint [m^2/s^3] | +| total_energy_rate | `float32` | | | Total energy rate estimate [m^2/s^3] | +| total_energy_balance_rate_sp | `float32` | | | Energy balance rate setpoint [m^2/s^3] | +| total_energy_balance_rate | `float32` | | | Energy balance rate estimate [m^2/s^3] | +| throttle_integ | `float32` | | | Throttle integrator value [-] | +| pitch_integ | `float32` | | | Pitch integrator value [rad] | +| throttle_sp | `float32` | | | Current throttle setpoint [-] | +| pitch_sp_rad | `float32` | | | Current pitch setpoint [rad] | +| throttle_trim | `float32` | | | estimated throttle value [0,1] required to fly level at equivalent_airspeed_sp in the current atmospheric conditions | +| underspeed_ratio | `float32` | | | 0: no underspeed, 1: maximal underspeed. Controller takes measures to avoid stall proportional to ratio if >0. | +| fast_descend_ratio | `float32` | | | value indicating if fast descend mode is enabled with ramp up and ramp down [0-1] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TecsStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -34,5 +75,6 @@ float32 throttle_trim # estimated throttle value [0,1] required to fly level a float32 underspeed_ratio # 0: no underspeed, 1: maximal underspeed. Controller takes measures to avoid stall proportional to ratio if >0. float32 fast_descend_ratio # value indicating if fast descend mode is enabled with ramp up and ramp down [0-1] - ``` + +::: diff --git a/docs/uk/msg_docs/TelemetryStatus.md b/docs/uk/msg_docs/TelemetryStatus.md index 1d12591375..5d1aa59ca3 100644 --- a/docs/uk/msg_docs/TelemetryStatus.md +++ b/docs/uk/msg_docs/TelemetryStatus.md @@ -1,6 +1,71 @@ +--- +pageClass: is-wide-page +--- + # TelemetryStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TelemetryStatus.msg) +**TOPICS:** telemetry_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| type | `uint8` | | | type of the radio hardware (LINK_TYPE_\*) | +| mode | `uint8` | | | | +| flow_control | `bool` | | | | +| forwarding | `bool` | | | | +| mavlink_v2 | `bool` | | | | +| ftp | `bool` | | | | +| streams | `uint8` | | | | +| data_rate | `float32` | | | configured maximum data rate (Bytes/s) | +| rate_multiplier | `float32` | | | | +| tx_rate_avg | `float32` | | | transmit rate average (Bytes/s) | +| tx_error_rate_avg | `float32` | | | transmit error rate average (Bytes/s) | +| tx_message_count | `uint32` | | | total message sent count | +| tx_buffer_overruns | `uint32` | | | number of TX buffer overruns | +| rx_rate_avg | `float32` | | | transmit rate average (Bytes/s) | +| rx_message_count | `uint32` | | | count of total messages received | +| rx_message_lost_count | `uint32` | | | | +| rx_buffer_overruns | `uint32` | | | number of RX buffer overruns | +| rx_parse_errors | `uint32` | | | number of parse errors | +| rx_packet_drop_count | `uint32` | | | number of packet drops | +| rx_message_lost_rate | `float32` | | | | +| heartbeat_type_antenna_tracker | `bool` | | | MAV_TYPE_ANTENNA_TRACKER | +| heartbeat_type_gcs | `bool` | | | MAV_TYPE_GCS | +| heartbeat_type_onboard_controller | `bool` | | | MAV_TYPE_ONBOARD_CONTROLLER | +| heartbeat_type_gimbal | `bool` | | | MAV_TYPE_GIMBAL | +| heartbeat_type_adsb | `bool` | | | MAV_TYPE_ADSB | +| heartbeat_type_camera | `bool` | | | MAV_TYPE_CAMERA | +| heartbeat_type_parachute | `bool` | | | MAV_TYPE_PARACHUTE | +| heartbeat_type_open_drone_id | `bool` | | | MAV_TYPE_ODID | +| heartbeat_component_telemetry_radio | `bool` | | | MAV_COMP_ID_TELEMETRY_RADIO | +| heartbeat_component_log | `bool` | | | MAV_COMP_ID_LOG | +| heartbeat_component_osd | `bool` | | | MAV_COMP_ID_OSD | +| heartbeat_component_vio | `bool` | | | MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY | +| heartbeat_component_pairing_manager | `bool` | | | MAV_COMP_ID_PAIRING_MANAGER | +| heartbeat_component_udp_bridge | `bool` | | | MAV_COMP_ID_UDP_BRIDGE | +| heartbeat_component_uart_bridge | `bool` | | | MAV_COMP_ID_UART_BRIDGE | +| open_drone_id_system_healthy | `bool` | | | | +| parachute_system_healthy | `bool` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ---------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ------------------------------------------------------------------ | +| LINK_TYPE_GENERIC | `uint8` | 0 | | +| LINK_TYPE_UBIQUITY_BULLET | `uint8` | 1 | | +| LINK_TYPE_WIRE | `uint8` | 2 | | +| LINK_TYPE_USB | `uint8` | 3 | | +| LINK_TYPE_IRIDIUM | `uint8` | 4 | | +| HEARTBEAT_TIMEOUT_US | `uint64` | 2500000 | Heartbeat timeout (tolerate missing 1 + jitter) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TelemetryStatus.msg) + +:::details +Click here to see original file ```c uint8 LINK_TYPE_GENERIC = 0 @@ -64,5 +129,6 @@ bool heartbeat_component_uart_bridge # MAV_COMP_ID_UART_BRIDGE # Misc component health bool open_drone_id_system_healthy bool parachute_system_healthy - ``` + +::: diff --git a/docs/uk/msg_docs/TiltrotorExtraControls.md b/docs/uk/msg_docs/TiltrotorExtraControls.md index 461e16e1a0..ee72fdae11 100644 --- a/docs/uk/msg_docs/TiltrotorExtraControls.md +++ b/docs/uk/msg_docs/TiltrotorExtraControls.md @@ -1,11 +1,31 @@ +--- +pageClass: is-wide-page +--- + # TiltrotorExtraControls (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TiltrotorExtraControls.msg) +**TOPICS:** tiltrotor_extracontrols + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| collective_tilt_normalized_setpoint | `float32` | | | Collective tilt angle of motors of tiltrotor, 0: vertical, 1: horizontal [0, 1] | +| collective_thrust_normalized_setpoint | `float32` | | | Collective thrust setpoint [0, 1] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TiltrotorExtraControls.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) float32 collective_tilt_normalized_setpoint # Collective tilt angle of motors of tiltrotor, 0: vertical, 1: horizontal [0, 1] float32 collective_thrust_normalized_setpoint # Collective thrust setpoint [0, 1] - ``` + +::: diff --git a/docs/uk/msg_docs/TimesyncStatus.md b/docs/uk/msg_docs/TimesyncStatus.md index 96ff9258be..61c38e61e9 100644 --- a/docs/uk/msg_docs/TimesyncStatus.md +++ b/docs/uk/msg_docs/TimesyncStatus.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # TimesyncStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TimesyncStatus.msg) +**TOPICS:** timesync_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| source_protocol | `uint8` | | | timesync source | +| remote_timestamp | `uint64` | | | remote system timestamp (microseconds) | +| observed_offset | `int64` | | | raw time offset directly observed from this timesync packet (microseconds) | +| estimated_offset | `int64` | | | smoothed time offset between companion system and PX4 (microseconds) | +| round_trip_time | `uint32` | | | round trip time of this timesync packet (microseconds) | + +## Constants + +| Назва | Тип | Значення | Опис | +| --------------------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| SOURCE_PROTOCOL_UNKNOWN | `uint8` | 0 | | +| SOURCE_PROTOCOL_MAVLINK | `uint8` | 1 | | +| SOURCE_PROTOCOL_DDS | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TimesyncStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +44,6 @@ uint64 remote_timestamp # remote system timestamp (microseconds) int64 observed_offset # raw time offset directly observed from this timesync packet (microseconds) int64 estimated_offset # smoothed time offset between companion system and PX4 (microseconds) uint32 round_trip_time # round trip time of this timesync packet (microseconds) - ``` + +::: diff --git a/docs/uk/msg_docs/TrajectorySetpoint.md b/docs/uk/msg_docs/TrajectorySetpoint.md index 25e9a101e8..91e3d1380e 100644 --- a/docs/uk/msg_docs/TrajectorySetpoint.md +++ b/docs/uk/msg_docs/TrajectorySetpoint.md @@ -1,11 +1,37 @@ +--- +pageClass: is-wide-page +--- + # TrajectorySetpoint (повідомлення UORB) -Traекторія вказівки в рамці NED -Вхід до контролера позиції PID. -Потрібно мати кінематичну консистентність і бути можливим для плавного польоту. -встановлення значення NaN означає, що стан не повинен контролюватися +Trajectory setpoint in NED frame. Input to PID position controller. Потрібно мати кінематичну консистентність і бути можливим для плавного польоту. setting a value to NaN means the state should not be controlled. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/TrajectorySetpoint.msg) +**TOPICS:** trajectory_setpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------ | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| положення | `float32[3]` | | | in meters | +| швидкість | `float32[3]` | | | in meters/second | +| acceleration | `float32[3]` | | | in meters/second^2 | +| jerk | `float32[3]` | | | in meters/second^3 (for logging only) | +| yaw | `float32` | | | euler angle of desired attitude in radians -PI..+PI | +| yawspeed | `float32` | | | angular velocity around NED frame z-axis in radians/second | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/TrajectorySetpoint.msg) + +:::details +Click here to see original file ```c # Trajectory setpoint in NED frame @@ -25,5 +51,6 @@ float32[3] jerk # in meters/second^3 (for logging only) float32 yaw # euler angle of desired attitude in radians -PI..+PI float32 yawspeed # angular velocity around NED frame z-axis in radians/second - ``` + +::: diff --git a/docs/uk/msg_docs/TrajectorySetpoint6dof.md b/docs/uk/msg_docs/TrajectorySetpoint6dof.md index f2629e19c4..0bd68e8087 100644 --- a/docs/uk/msg_docs/TrajectorySetpoint6dof.md +++ b/docs/uk/msg_docs/TrajectorySetpoint6dof.md @@ -1,9 +1,31 @@ +--- +pageClass: is-wide-page +--- + # TrajectorySetpoint6dof (UORB message) -Trajectory setpoint in NED frame -Input to position controller. +Trajectory setpoint in NED frame. Input to position controller. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TrajectorySetpoint6dof.msg) +**TOPICS:** trajectory_setpoint6dof + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| положення | `float32[3]` | | | in meters | +| швидкість | `float32[3]` | | | in meters/second | +| acceleration | `float32[3]` | | | in meters/second^2 | +| jerk | `float32[3]` | | | in meters/second^3 (for logging only) | +| quaternion | `float32[4]` | | | unit quaternion | +| angular_velocity | `float32[3]` | | | angular velocity in radians/second | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TrajectorySetpoint6dof.msg) + +:::details +Click here to see original file ```c # Trajectory setpoint in NED frame @@ -19,5 +41,6 @@ float32[3] jerk # in meters/second^3 (for logging only) float32[4] quaternion # unit quaternion float32[3] angular_velocity # angular velocity in radians/second - ``` + +::: diff --git a/docs/uk/msg_docs/TransponderReport.md b/docs/uk/msg_docs/TransponderReport.md index 9bab882b02..da15f55a06 100644 --- a/docs/uk/msg_docs/TransponderReport.md +++ b/docs/uk/msg_docs/TransponderReport.md @@ -1,6 +1,71 @@ +--- +pageClass: is-wide-page +--- + # TransponderReport (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TransponderReport.msg) +**TOPICS:** transponder_report + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| icao_address | `uint32` | | | ICAO address | +| lat | `float64` | | | Latitude, expressed as degrees | +| lon | `float64` | | | Longitude, expressed as degrees | +| altitude_type | `uint8` | | | Type from ADSB_ALTITUDE_TYPE enum | +| altitude | `float32` | | | Altitude(ASL) in meters | +| heading | `float32` | | | Course over ground in radians, 0 to 2pi, 0 is north | +| hor_velocity | `float32` | | | The horizontal velocity in m/s | +| ver_velocity | `float32` | | | The vertical velocity in m/s, positive is up | +| callsign | `char[9]` | | | The callsign, 8+null | +| emitter_type | `uint8` | | | Type from ADSB_EMITTER_TYPE enum | +| tslc | `uint8` | | | Time since last communication in seconds | +| flags | `uint16` | | | Flags to indicate various statuses including valid data fields | +| squawk | `uint16` | | | Squawk code | +| uas_id | `uint8[18]` | | | Unique UAS ID | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | -------- | ---- | +| PX4_ADSB_FLAGS_VALID_COORDS | `uint16` | 1 | | +| PX4_ADSB_FLAGS_VALID_ALTITUDE | `uint16` | 2 | | +| PX4_ADSB_FLAGS_VALID_HEADING | `uint16` | 4 | | +| PX4_ADSB_FLAGS_VALID_VELOCITY | `uint16` | 8 | | +| PX4_ADSB_FLAGS_VALID_CALLSIGN | `uint16` | 16 | | +| PX4_ADSB_FLAGS_VALID_SQUAWK | `uint16` | 32 | | +| PX4_ADSB_FLAGS_RETRANSLATE | `uint16` | 256 | | +| ADSB_EMITTER_TYPE_NO_INFO | `uint16` | 0 | | +| ADSB_EMITTER_TYPE_LIGHT | `uint16` | 1 | | +| ADSB_EMITTER_TYPE_SMALL | `uint16` | 2 | | +| ADSB_EMITTER_TYPE_LARGE | `uint16` | 3 | | +| ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE | `uint16` | 4 | | +| ADSB_EMITTER_TYPE_HEAVY | `uint16` | 5 | | +| ADSB_EMITTER_TYPE_HIGHLY_MANUV | `uint16` | 6 | | +| ADSB_EMITTER_TYPE_ROTOCRAFT | `uint16` | 7 | | +| ADSB_EMITTER_TYPE_UNASSIGNED | `uint16` | 8 | | +| ADSB_EMITTER_TYPE_GLIDER | `uint16` | 9 | | +| ADSB_EMITTER_TYPE_LIGHTER_AIR | `uint16` | 10 | | +| ADSB_EMITTER_TYPE_PARACHUTE | `uint16` | 11 | | +| ADSB_EMITTER_TYPE_ULTRA_LIGHT | `uint16` | 12 | | +| ADSB_EMITTER_TYPE_UNASSIGNED2 | `uint16` | 13 | | +| ADSB_EMITTER_TYPE_UAV | `uint16` | 14 | | +| ADSB_EMITTER_TYPE_SPACE | `uint16` | 15 | | +| ADSB_EMITTER_TYPE_UNASSGINED3 | `uint16` | 16 | | +| ADSB_EMITTER_TYPE_EMERGENCY_SURFACE | `uint16` | 17 | | +| ADSB_EMITTER_TYPE_SERVICE_SURFACE | `uint16` | 18 | | +| ADSB_EMITTER_TYPE_POINT_OBSTACLE | `uint16` | 19 | | +| ADSB_EMITTER_TYPE_ENUM_END | `uint16` | 20 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TransponderReport.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -53,5 +118,6 @@ uint16 ADSB_EMITTER_TYPE_POINT_OBSTACLE=19 uint16 ADSB_EMITTER_TYPE_ENUM_END=20 uint8 ORB_QUEUE_LENGTH = 16 - ``` + +::: diff --git a/docs/uk/msg_docs/TuneControl.md b/docs/uk/msg_docs/TuneControl.md index f0e50ed6b1..a52b2dab06 100644 --- a/docs/uk/msg_docs/TuneControl.md +++ b/docs/uk/msg_docs/TuneControl.md @@ -1,9 +1,61 @@ +--- +pageClass: is-wide-page +--- + # TuneControl (UORB message) -Це повідомлення використовується для контролю мелодій, коли tune_id встановлено на CUSTOM -то частота, тривалість використовуються, в іншому випадку ці значення ігноруються. +This message is used to control the tunes, when the tune_id is set to CUSTOM. then the frequency, duration are used otherwise those values are ignored. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TuneControl.msg) +**TOPICS:** tune_control + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| tune_id | `uint8` | | | tune_id corresponding to TuneID::\* from the tune_defaults.h in the tunes library | +| tune_override | `bool` | | | if true the tune which is playing will be stopped and the new started | +| frequency | `uint16` | | | in Hz | +| duration | `uint32` | | | in us | +| silence | `uint32` | | | in us | +| volume | `uint8` | | | value between 0-100 if supported by backend | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| TUNE_ID_STOP | `uint8` | 0 | | +| TUNE_ID_STARTUP | `uint8` | 1 | | +| TUNE_ID_ERROR | `uint8` | 2 | | +| TUNE_ID_NOTIFY_POSITIVE | `uint8` | 3 | | +| TUNE_ID_NOTIFY_NEUTRAL | `uint8` | 4 | | +| TUNE_ID_NOTIFY_NEGATIVE | `uint8` | 5 | | +| TUNE_ID_ARMING_WARNING | `uint8` | 6 | | +| TUNE_ID_BATTERY_WARNING_SLOW | `uint8` | 7 | | +| TUNE_ID_BATTERY_WARNING_FAST | `uint8` | 8 | | +| TUNE_ID_GPS_WARNING | `uint8` | 9 | | +| TUNE_ID_ARMING_FAILURE | `uint8` | 10 | | +| TUNE_ID_PARACHUTE_RELEASE | `uint8` | 11 | | +| TUNE_ID_SINGLE_BEEP | `uint8` | 12 | | +| TUNE_ID_HOME_SET | `uint8` | 13 | | +| TUNE_ID_SD_INIT | `uint8` | 14 | | +| TUNE_ID_SD_ERROR | `uint8` | 15 | | +| TUNE_ID_PROG_PX4IO | `uint8` | 16 | | +| TUNE_ID_PROG_PX4IO_OK | `uint8` | 17 | | +| TUNE_ID_PROG_PX4IO_ERR | `uint8` | 18 | | +| TUNE_ID_POWER_OFF | `uint8` | 19 | | +| NUMBER_OF_TUNES | `uint8` | 20 | | +| VOLUME_LEVEL_MIN | `uint8` | 0 | | +| VOLUME_LEVEL_DEFAULT | `uint8` | 20 | | +| VOLUME_LEVEL_MAX | `uint8` | 100 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TuneControl.msg) + +:::details +Click here to see original file ```c # This message is used to control the tunes, when the tune_id is set to CUSTOM @@ -45,5 +97,6 @@ uint8 VOLUME_LEVEL_DEFAULT = 20 uint8 VOLUME_LEVEL_MAX = 100 uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/uk/msg_docs/UavcanParameterRequest.md b/docs/uk/msg_docs/UavcanParameterRequest.md index e0af4962ef..f068ce116a 100644 --- a/docs/uk/msg_docs/UavcanParameterRequest.md +++ b/docs/uk/msg_docs/UavcanParameterRequest.md @@ -1,8 +1,45 @@ +--- +pageClass: is-wide-page +--- + # UavcanParameterRequest (UORB повідомлення) -Тип запиту моста параметрів UAVCAN-MAVLink +UAVCAN-MAVLink parameter bridge request type. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UavcanParameterRequest.msg) +**TOPICS:** uavcan_parameterrequest + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| message_type | `uint8` | | | MAVLink message type: PARAM_REQUEST_READ, PARAM_REQUEST_LIST, PARAM_SET | +| node_id | `uint8` | | | UAVCAN node ID mapped from MAVLink component ID | +| param_id | `char[17]` | | | MAVLink/UAVCAN parameter name | +| param_index | `int16` | | | -1 if the param_id field should be used as identifier | +| param_type | `uint8` | | | MAVLink parameter type | +| int_value | `int64` | | | current value if param_type is int-like | +| real_value | `float32` | | | current value if param_type is float-like | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| MESSAGE_TYPE_PARAM_REQUEST_READ | `uint8` | 20 | MAVLINK_MSG_ID_PARAM_REQUEST_READ | +| MESSAGE_TYPE_PARAM_REQUEST_LIST | `uint8` | 21 | MAVLINK_MSG_ID_PARAM_REQUEST_LIST | +| MESSAGE_TYPE_PARAM_SET | `uint8` | 23 | MAVLINK_MSG_ID_PARAM_SET | +| NODE_ID_ALL | `uint8` | 0 | MAV_COMP_ID_ALL | +| PARAM_TYPE_UINT8 | `uint8` | 1 | MAV_PARAM_TYPE_UINT8 | +| PARAM_TYPE_INT64 | `uint8` | 8 | MAV_PARAM_TYPE_INT64 | +| PARAM_TYPE_REAL32 | `uint8` | 9 | MAV_PARAM_TYPE_REAL32 | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UavcanParameterRequest.msg) + +:::details +Click here to see original file ```c # UAVCAN-MAVLink parameter bridge request type @@ -28,5 +65,6 @@ int64 int_value # current value if param_type is int-like float32 real_value # current value if param_type is float-like uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/uk/msg_docs/UavcanParameterValue.md b/docs/uk/msg_docs/UavcanParameterValue.md index c81423d77e..4e77fab3d8 100644 --- a/docs/uk/msg_docs/UavcanParameterValue.md +++ b/docs/uk/msg_docs/UavcanParameterValue.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # UavcanParameterValue (Параметр UORB) -Тип відповіді моста параметрів UAVCAN-MAVLink +UAVCAN-MAVLink parameter bridge response type. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UavcanParameterValue.msg) +**TOPICS:** uavcan_parametervalue + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| node_id | `uint8` | | | UAVCAN node ID mapped from MAVLink component ID | +| param_id | `char[17]` | | | MAVLink/UAVCAN parameter name | +| param_index | `int16` | | | parameter index, if known | +| param_count | `uint16` | | | number of parameters exposed by the node | +| param_type | `uint8` | | | MAVLink parameter type | +| int_value | `int64` | | | current value if param_type is int-like | +| real_value | `float32` | | | current value if param_type is float-like | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UavcanParameterValue.msg) + +:::details +Click here to see original file ```c # UAVCAN-MAVLink parameter bridge response type @@ -14,5 +38,6 @@ uint16 param_count # number of parameters exposed by the node uint8 param_type # MAVLink parameter type int64 int_value # current value if param_type is int-like float32 real_value # current value if param_type is float-like - ``` + +::: diff --git a/docs/uk/msg_docs/UlogStream.md b/docs/uk/msg_docs/UlogStream.md index ffca54c7fa..08e9606c69 100644 --- a/docs/uk/msg_docs/UlogStream.md +++ b/docs/uk/msg_docs/UlogStream.md @@ -1,9 +1,37 @@ +--- +pageClass: is-wide-page +--- + # UlogStream (повідомлення UORB) -Повідомлення для потоку даних ULog з пристрою реєстрування. Відповідає повідомленню mavlink LOGGING_DATA -mavlink message +Повідомлення для потоку даних ULog з пристрою реєстрування. Corresponds to the LOGGING_DATA. mavlink message. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UlogStream.msg) +**TOPICS:** ulog_stream + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| length | `uint8` | | | length of data | +| first_message_offset | `uint8` | | | offset into data where first message starts. This | +| msg_sequence | `uint16` | | | allows determine drops | +| flags | `uint8` | | | see FLAGS\_\* | +| data | `uint8[249]` | | | ulog data | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------ | +| FLAGS_NEED_ACK | `uint8` | 1 | if set, this message requires to be acked. | +| ORB_QUEUE_LENGTH | `uint8` | 16 | TODO: we might be able to reduce this if mavlink polled on the topic | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UlogStream.msg) + +:::details +Click here to see original file ```c # Message to stream ULog data from the logger. Corresponds to the LOGGING_DATA @@ -25,5 +53,6 @@ uint8 flags # see FLAGS_* uint8[249] data # ulog data uint8 ORB_QUEUE_LENGTH = 16 # TODO: we might be able to reduce this if mavlink polled on the topic - ``` + +::: diff --git a/docs/uk/msg_docs/UlogStreamAck.md b/docs/uk/msg_docs/UlogStreamAck.md index 70778fc0a9..e01165ef0a 100644 --- a/docs/uk/msg_docs/UlogStreamAck.md +++ b/docs/uk/msg_docs/UlogStreamAck.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # UlogStreamAck (повідомлення UORB) -Підтверджуйте попереднє повідомлення ulog_stream, в якому був встановлений прапорець NEED_ACK +Ack a previously sent ulog_stream message that had. the NEED_ACK flag set. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UlogStreamAck.msg) +**TOPICS:** ulog_streamack + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| msg_sequence | `uint16` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------ | +| ACK_TIMEOUT | `int32` | 50 | timeout waiting for an ack until we retry to send the message [ms] | +| ACK_MAX_TRIES | `int32` | 50 | maximum amount of tries to (re-)send a message, each time waiting ACK_TIMEOUT ms | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UlogStreamAck.msg) + +:::details +Click here to see original file ```c # Ack a previously sent ulog_stream message that had @@ -13,5 +38,6 @@ int32 ACK_TIMEOUT = 50 # timeout waiting for an ack until we retry to send the int32 ACK_MAX_TRIES = 50 # maximum amount of tries to (re-)send a message, each time waiting ACK_TIMEOUT ms uint16 msg_sequence - ``` + +::: diff --git a/docs/uk/msg_docs/UnregisterExtComponent.md b/docs/uk/msg_docs/UnregisterExtComponent.md index b09ea24d43..12a87efab3 100644 --- a/docs/uk/msg_docs/UnregisterExtComponent.md +++ b/docs/uk/msg_docs/UnregisterExtComponent.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # UnregisterExtComponent (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/UnregisterExtComponent.msg) +**TOPICS:** unregister_extcomponent + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| name | `char[25]` | | | either the mode name, or component name | +| arming_check_id | `int8` | | | arming check registration ID (-1 if not registered) | +| mode_id | `int8` | | | assigned mode ID (-1 if not registered) | +| mode_executor_id | `int8` | | | assigned mode executor ID (-1 if not registered) | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/UnregisterExtComponent.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -12,5 +39,6 @@ char[25] name # either the mode name, or component name int8 arming_check_id # arming check registration ID (-1 if not registered) int8 mode_id # assigned mode ID (-1 if not registered) int8 mode_executor_id # assigned mode executor ID (-1 if not registered) - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleAcceleration.md b/docs/uk/msg_docs/VehicleAcceleration.md index ea20cad6a9..2e77f93989 100644 --- a/docs/uk/msg_docs/VehicleAcceleration.md +++ b/docs/uk/msg_docs/VehicleAcceleration.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # VehicleAcceleration (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAcceleration.msg) +**TOPICS:** vehicle_acceleration + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| xyz | `float32[3]` | | | Bias corrected acceleration (including gravity) in the FRD body frame XYZ-axis in m/s^2 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAcceleration.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint64 timestamp_sample # the timestamp of the raw data (microseconds) float32[3] xyz # Bias corrected acceleration (including gravity) in the FRD body frame XYZ-axis in m/s^2 - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleAirData.md b/docs/uk/msg_docs/VehicleAirData.md index 738f52402e..97b6e35b7d 100644 --- a/docs/uk/msg_docs/VehicleAirData.md +++ b/docs/uk/msg_docs/VehicleAirData.md @@ -1,11 +1,36 @@ +--- +pageClass: is-wide-page +--- + # VehicleAirData (повідомлення UORB) -Vehicle air data +Vehicle air data. Data from the currently selected barometer (plus ambient temperature from the source specified in temperature_source). Includes calculated data such as barometric altitude and air density. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAirData.msg) +**TOPICS:** vehicle_airdata + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp of the raw data | +| baro_device_id | `uint32` | | | Unique device ID for the selected barometer | +| baro_alt_meter | `float32` | m [MSL] | | Altitude above MSL calculated from temperature compensated baro sensor data using an ISA corrected for sea level pressure SENS_BARO_QNH | +| baro_pressure_pa | `float32` | Pa | | Absolute pressure | +| ambient_temperature | `float32` | degC | | Температура середовища | +| temperature_source | `uint8` | | | Source of temperature data: 0: Default Temperature (15°C), 1: External Baro, 2: Airspeed | +| rho | `float32` | kg/m^3 | | Air density | +| calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever calibration changes. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAirData.msg) + +:::details +Click here to see original file ```c # Vehicle air data @@ -22,5 +47,6 @@ float32 ambient_temperature # [degC] Ambient temperature uint8 temperature_source # Source of temperature data: 0: Default Temperature (15°C), 1: External Baro, 2: Airspeed float32 rho # [kg/m^3] Air density uint8 calibration_count # Calibration changed counter. Monotonically increases whenever calibration changes. - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleAngularAccelerationSetpoint.md b/docs/uk/msg_docs/VehicleAngularAccelerationSetpoint.md index f30329fdb9..12fd5dc934 100644 --- a/docs/uk/msg_docs/VehicleAngularAccelerationSetpoint.md +++ b/docs/uk/msg_docs/VehicleAngularAccelerationSetpoint.md @@ -1,12 +1,31 @@ +--- +pageClass: is-wide-page +--- + # VehicleAngularAccelerationSetpoint (Повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAngularAccelerationSetpoint.msg) +**TOPICS:** vehicle_angularacceleration_setpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | timestamp of the data sample on which this message is based (microseconds) | +| xyz | `float32[3]` | | | angular acceleration about X, Y, Z body axis in rad/s^2 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAngularAccelerationSetpoint.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint64 timestamp_sample # timestamp of the data sample on which this message is based (microseconds) float32[3] xyz # angular acceleration about X, Y, Z body axis in rad/s^2 - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleAngularVelocity.md b/docs/uk/msg_docs/VehicleAngularVelocity.md index 64a3d32216..edc0b66901 100644 --- a/docs/uk/msg_docs/VehicleAngularVelocity.md +++ b/docs/uk/msg_docs/VehicleAngularVelocity.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # VehicleAngularVelocity (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAngularVelocity.msg) +**TOPICS:** vehicle_angular_velocity vehicle_angular_velocity_groundtruth + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | timestamp of the data sample on which this message is based (microseconds) | +| xyz | `float32[3]` | | | Bias corrected angular velocity about the FRD body frame XYZ-axis in rad/s | +| xyz_derivative | `float32[3]` | | | angular acceleration about the FRD body frame XYZ-axis in rad/s^2 | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAngularVelocity.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -13,5 +39,6 @@ float32[3] xyz # Bias corrected angular velocity about the FRD body frame XYZ float32[3] xyz_derivative # angular acceleration about the FRD body frame XYZ-axis in rad/s^2 # TOPICS vehicle_angular_velocity vehicle_angular_velocity_groundtruth - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleAttitude.md b/docs/uk/msg_docs/VehicleAttitude.md index d5077b36d3..7d6fb0df77 100644 --- a/docs/uk/msg_docs/VehicleAttitude.md +++ b/docs/uk/msg_docs/VehicleAttitude.md @@ -1,9 +1,35 @@ +--- +pageClass: is-wide-page +--- + # VehicleAttitude (повідомлення UORB) -Це повідомлення подібне до повідомлення mavlink ATTITUDE_QUATERNION, але для використання на борту -Для кватерніону використовується конвенція Гамільтона, а порядок має вигляд q(w, x, y, z) +This is similar to the mavlink message ATTITUDE_QUATERNION, but for onboard use. The quaternion uses the Hamilton convention, and the order is q(w, x, y, z). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitude.msg) +**TOPICS:** vehicle_attitude vehicle_attitude_groundtruth external_ins_attitude estimator_attitude + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| q | `float32[4]` | | | Quaternion rotation from the FRD body frame to the NED earth frame | +| delta_q_reset | `float32[4]` | | | Amount by which quaternion has changed during last reset | +| quat_reset_counter | `uint8` | | | Quaternion reset counter | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitude.msg) + +:::details +Click here to see original file ```c # This is similar to the mavlink message ATTITUDE_QUATERNION, but for onboard use @@ -21,5 +47,6 @@ uint8 quat_reset_counter # Quaternion reset counter # TOPICS vehicle_attitude vehicle_attitude_groundtruth external_ins_attitude # TOPICS estimator_attitude - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleAttitudeSetpoint.md b/docs/uk/msg_docs/VehicleAttitudeSetpoint.md index 9b6be02c9b..b1481f6d51 100644 --- a/docs/uk/msg_docs/VehicleAttitudeSetpoint.md +++ b/docs/uk/msg_docs/VehicleAttitudeSetpoint.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # VehicleAttitudeSetpoint (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitudeSetpoint.msg) +**TOPICS:** vehicle_attitude_setpoint mc_virtual_attitude_setpoint fw_virtual_attitude_setpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| yaw_sp_move_rate | `float32` | | | rad/s (commanded by user) | +| q_d | `float32[4]` | | | Desired quaternion for quaternion control | +| thrust_body | `float32[3]` | | | Normalized thrust command in body FRD frame [-1,1] | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitudeSetpoint.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 1 @@ -17,5 +43,6 @@ float32[4] q_d # Desired quaternion for quaternion control float32[3] thrust_body # Normalized thrust command in body FRD frame [-1,1] # TOPICS vehicle_attitude_setpoint mc_virtual_attitude_setpoint fw_virtual_attitude_setpoint - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleAttitudeSetpointV0.md b/docs/uk/msg_docs/VehicleAttitudeSetpointV0.md index 6eb03e797c..1918696cf4 100644 --- a/docs/uk/msg_docs/VehicleAttitudeSetpointV0.md +++ b/docs/uk/msg_docs/VehicleAttitudeSetpointV0.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # VehicleAttitudeSetpointV0 (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleAttitudeSetpointV0.msg) +**TOPICS:** vehicle_attitude_setpoint mc_virtual_attitude_setpoint fw_virtual_attitude_setpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| yaw_sp_move_rate | `float32` | | | rad/s (commanded by user) | +| q_d | `float32[4]` | | | Desired quaternion for quaternion control | +| thrust_body | `float32[3]` | | | Normalized thrust command in body FRD frame [-1,1] | +| reset_integral | `bool` | | | Reset roll/pitch/yaw integrals (navigation logic change) | +| fw_control_yaw_wheel | `bool` | | | control heading with steering wheel (used for auto takeoff on runway) | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleAttitudeSetpointV0.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -21,5 +49,6 @@ bool reset_integral # Reset roll/pitch/yaw integrals (navigation logic change) bool fw_control_yaw_wheel # control heading with steering wheel (used for auto takeoff on runway) # TOPICS vehicle_attitude_setpoint mc_virtual_attitude_setpoint fw_virtual_attitude_setpoint - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleCommand.md b/docs/uk/msg_docs/VehicleCommand.md index 71314eb864..81832aaf10 100644 --- a/docs/uk/msg_docs/VehicleCommand.md +++ b/docs/uk/msg_docs/VehicleCommand.md @@ -1,9 +1,1582 @@ +--- +pageClass: is-wide-page +--- + # VehicleCommand (повідомлення UORB) -Vehicle Command uORB повідомлення. Використовується для управління місією / дією / тощо. -Дотримується визначення MAVLink COMMAND_INT / COMMAND_LONG +Vehicle Command uORB повідомлення. Використовується для управління місією / дією / тощо. Follows the MAVLink COMMAND_INT / COMMAND_LONG definition. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleCommand.msg) +**TOPICS:** vehicle_command gimbal_v1_command vehicle_command_mode_executor + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start. | +| param1 | `float32` | | | Parameter 1, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param2 | `float32` | | | Parameter 2, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param3 | `float32` | | | Parameter 3, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param4 | `float32` | | | Parameter 4, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param5 | `float64` | | | Parameter 5, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param6 | `float64` | | | Parameter 6, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param7 | `float32` | | | Parameter 7, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| command | `uint32` | | | Command ID. | +| target_system | `uint8` | | | System which should execute the command. | +| target_component | `uint8` | | | Component which should execute the command, 0 for all components. | +| source_system | `uint8` | | | System sending the command. | +| source_component | `uint16` | | | Component / mode executor sending the command. | +| confirmation | `uint8` | | | 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command). | +| from_external | `bool` | | | | + +## Commands + +### VEHICLE_CMD_CUSTOM_0 (0) + +Test command. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_CUSTOM_1 (1) + +Test command. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_CUSTOM_2 (2) + +Test command. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_NAV_WAYPOINT (16) + +Navigate to MISSION. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | s | | (decimal) Hold time. (ignored by fixed wing, time to stay at MISSION for rotary wing) | +| 2 | m | | Acceptance radius (if the sphere with this radius is hit, the MISSION counts as reached) | +| 3 | | | 0 to pass through the WP, if > 0 radius [m] to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control. | +| 4 | | | Desired yaw angle at MISSION (rotary wing) | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_LOITER_UNLIM (17) + +Loiter around this MISSION an unlimited amount of time. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------------------------------------------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | m | | Radius around MISSION. If positive loiter clockwise, else counter-clockwise | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_LOITER_TURNS (18) + +Loiter around this MISSION for X turns. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | Turns | +| 2 | | | Unused | +| 3 | | | Radius around MISSION [m]. If positive loiter clockwise, else counter-clockwise | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_LOITER_TIME (19) + +Loiter around this MISSION for time. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | s | | Seconds (decimal) | +| 2 | | | Unused | +| 3 | | | Radius around MISSION [m]. If positive loiter clockwise, else counter-clockwise | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_RETURN_TO_LAUNCH (20) + +Return to launch location. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_NAV_LAND (21) + +Land at location. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_TAKEOFF (22) + +Takeoff from ground / hand. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | Unused (FW pitch from FW_TKO_PITCH_MIN) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | deg | [0 : 360] | Yaw angle in NED if yaw source available, ignored otherwise | +| 5 | | | Latitude (WGS-84) | +| 6 | | | Longitude (WGS-84) | +| 7 | m | | Altitude AMSL | + +### VEHICLE_CMD_NAV_PRECLAND (23) + +Attempt a precision landing. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_ORBIT (34) + +Start orbiting on the circumference of a circle defined by the parameters. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ------------------------------------------------------------------------------------- | ------------- | +| 1 | m | | Radius | +| 2 | m/s | | Velocity | +| 3 | | [ORBIT_YAW_BEHAVIOUR](#ORBIT_YAW_BEHAVIOUR) | Yaw behaviour | +| 4 | | | Unused | +| 5 | | | Latitude/X | +| 6 | | | Longitude/Y | +| 7 | | | Altitude/Z | + +### VEHICLE_CMD_DO_FIGUREEIGHT (35) + +Start flying on the outline of a figure eight defined by the parameters. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------ | +| 1 | m | | Major radius | +| 2 | m | | Minor radius | +| 3 | m/s | | Velocity | +| 4 | | | Орієнтація | +| 5 | | | Latitude/X | +| 6 | | | Longitude/Y | +| 7 | | | Altitude/Z | + +### 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. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ------------------------------------------------ | --------------------------------------------------------------------------------------- | +| 1 | | [VEHICLE_ROI](#VEHICLE_ROI) | Region of interest mode. | +| 2 | | | MISSION index/ target ID. | +| 3 | | | ROI index (allows a vehicle to manage multiple ROI's) | +| 4 | | | Unused | +| 5 | | | x the location of the fixed ROI (see MAV_FRAME) | +| 6 | | | y | +| 7 | | | z | + +### VEHICLE_CMD_NAV_PATHPLANNING (81) + +Control autonomous path planning on the MAV. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | | | 0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning | +| 2 | | | 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 | +| 3 | | | Unused | +| 4 | deg | [0 : 360] | Yaw angle at goal, in compass degrees | +| 5 | | | Latitude/X of goal | +| 6 | | | Longitude/Y of goal | +| 7 | | | Altitude/Z of goal | + +### VEHICLE_CMD_NAV_VTOL_TAKEOFF (84) + +Takeoff from ground / hand and transition to fixed wing. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | --------------------------------------------------------------------------------------------------- | +| 1 | | | Minimum pitch (if airspeed sensor present), desired pitch without sensor | +| 2 | | | Transition heading, 0: Default, 3: Use specified transition heading | +| 3 | | | Unused | +| 4 | | | Yaw angle (if magnetometer present), ignored without magnetometer | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_VTOL_LAND (85) + +Transition to MC and land at location. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_GUIDED_LIMITS (90) + +Set limits for external control. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | s | | Timeout - maximum time that external controller will be allowed to control vehicle. 0 means no timeout | +| 2 | 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 | +| 3 | 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 | +| 4 | 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 | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_NAV_GUIDED_MASTER (91) + +Set id of master controller. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------ | +| 1 | | | System ID | +| 2 | | | Component ID | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_NAV_DELAY (93) + +Delay the next navigation command a number of seconds or until a specified time. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------------------------------------------- | +| 1 | s | | Delay (decimal, -1 to enable time-of-day fields) | +| 2 | h | | hour (24h format, UTC, -1 to ignore) | +| 3 | | | minute (24h format, UTC, -1 to ignore) | +| 4 | | | second (24h format, UTC) | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_NAV_LAST (95) + +NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_DELAY (112) + +Delay mission state machine. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------------------ | +| 1 | s | | Delay (decimal seconds) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_CHANGE_ALT (113) + +Ascend/descend at rate. Delay mission state machine until desired altitude reached. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---------------------------------------------- | +| 1 | | | Descent / Ascend rate (m/s) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Finish Altitude | + +### VEHICLE_CMD_CONDITION_DISTANCE (114) + +Delay mission state machine until within desired distance of next NAV point. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---------------------------------------------------------------- | +| 1 | | | Distance [m] | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_YAW (115) + +Reach a certain target angle. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| 1 | deg | [0 : 360] | Target angle. 0 is north | +| 2 | deg/s | | Speed during yaw change | +| 3 | | [-1 : 1] | Direction: negative: counter clockwise, positive: clockwise | +| 4 | 1,0 | | Relative offset or absolute angle | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_LAST (159) + +NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_GATE (4501) + +Wait until passing a threshold. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ----------------------------------------------------------------------------- | +| 1 | | | 2D coord mode: 0: Orthogonal to planned route | +| 2 | | | Altitude mode: 0: Ignore altitude | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Lat | +| 6 | | | Lon | +| 7 | | | Alt | + +### VEHICLE_CMD_DO_SET_MODE (176) + +Set system mode. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------------------------------ | +| 1 | | | Mode, as defined by ENUM MAV_MODE | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_JUMP (177) + +Jump to the desired command in the mission list. Repeat this action only the specified number of times. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | --------------- | +| 1 | | | Sequence number | +| 2 | | | Repeat count | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_CHANGE_SPEED (178) + +Change speed and/or throttle set points. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------------------------------------------- | -------------------------------------------------------------- | +| 1 | | [SPEED_TYPE](#SPEED_TYPE) | Speed type (0=Airspeed, 1=Ground Speed) | +| 2 | | | Speed (m/s, -1 indicates no change) | +| 3 | % | | Throttle ( Percent, -1 indicates no change) | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_HOME (179) + +Changes the home location either to the current location or a specified location. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | --------------------------------------------------------------------------------- | +| 1 | | | Use current (1=use current location, 0=use specified location) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_DO_SET_PARAMETER (180) + +Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---------------- | +| 1 | | | Parameter number | +| 2 | | | Parameter value | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_RELAY (181) + +Set a relay to a condition. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | -------------------------------------------------------------------------------------- | +| 1 | | | Relay number | +| 2 | | | Setting (1=on, 0=off, others possible depending on system hardware) | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_REPEAT_RELAY (182) + +Cycle a relay on and off for a desired number of cycles with a desired period. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ----------------------------------------------- | +| 1 | | | Relay number | +| 2 | | | Cycle count | +| 3 | s | | Cycle time (decimal seconds) | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_REPEAT_SERVO (184) + +Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | -------------------------------------------------- | +| 1 | | | Servo number | +| 2 | us | | PWM rate (1000 to 2000 typical) | +| 3 | | | Cycle count | +| 4 | s | | Cycle time | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_FLIGHTTERMINATION (185) + +Terminate flight immediately. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ----------------------------------------------------- | +| 1 | | | Flight termination activated if > 0.5 | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_CHANGE_ALTITUDE (186) + +Set the vehicle to Loiter mode and change the altitude to specified value. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | --------------------- | +| 1 | | | Altitude | +| 2 | | | Frame of new altitude | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_ACTUATOR (187) + +Sets actuators (e.g. servos) to a desired value. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---------- | +| 1 | | | Actuator 1 | +| 2 | | | Actuator 2 | +| 3 | | | Actuator 3 | +| 4 | | | Actuator 4 | +| 5 | | | Actuator 5 | +| 6 | | | Actuator 6 | +| 7 | | | Index | + +### VEHICLE_CMD_DO_LAND_START (189) + +Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | --------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_GO_AROUND (191) + +Mission command to safely abort an autonomous landing. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | -------- | +| 1 | m | | Altitude | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_REPOSITION (192) + +Reposition to specific WGS84 GPS position. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------ | +| 1 | m/s | | Ground speed | +| 2 | | | Bitmask | +| 3 | m | | Loiter radius for planes | +| 4 | deg | | Yaw | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_DO_PAUSE_CONTINUE (193) + +None + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_SET_ROI_LOCATION (195) + +Sets the region of interest (ROI) to a location. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | --------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_DO_SET_ROI_WPNEXT_OFFSET (196) + +Sets the region of interest (ROI) to be toward next waypoint, with optional pitch/roll/yaw offset. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Pitch offset from next waypoint | +| 6 | | | Roll offset from next waypoint | +| 7 | | | Yaw offset from next waypoint | + +### VEHICLE_CMD_DO_SET_ROI_NONE (197) + +Cancels any previous ROI command returning the vehicle/sensors to default flight characteristics. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_CONTROL_VIDEO (200) + +Control onboard camera system. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | Camera ID (-1 for all) | +| 2 | | | Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw | +| 3 | | | Transmission mode: 0: video stream, >0: single images every n seconds (decimal seconds) | +| 4 | | | Recording: 0: disabled, 1: enabled compressed, 2: enabled raw | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_ROI (201) + +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. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ------------------------------------------------ | --------------------------------------------------------------------------------------- | +| 1 | | [VEHICLE_ROI](#VEHICLE_ROI) | Region of interest mode. | +| 2 | | | MISSION index/ target ID. | +| 3 | | | ROI index (allows a vehicle to manage multiple ROI's) | +| 4 | | | Unused | +| 5 | | | x the location of the fixed ROI (see MAV_FRAME) | +| 6 | | | y | +| 7 | | | z | + +### VEHICLE_CMD_DO_DIGICAM_CONTROL (203) + +None + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_MOUNT_CONFIGURE (204) + +Mission command to configure a camera or antenna mount. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | --------------------------------------------------------------------------- | ----------------------------------------------------- | +| 1 | | [MAV_MOUNT_MODE](#MAV_MOUNT_MODE) | Mount operation mode | +| 2 | | | Stabilize roll? (1 = yes, 0 = no) | +| 3 | | | Stabilize pitch? (1 = yes, 0 = no) | +| 4 | | | stabilize yaw? (1 = yes, 0 = no) | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_MOUNT_CONTROL (205) + +Mission command to control a camera or antenna mount. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| 1 | deg | | Pitch or lat, depending on mount mode. | +| 2 | deg | | Roll or lon depending on mount mode | +| 3 | deg | | /[m] Yaw or alt depending on mount mode | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | [MAV_MOUNT_MODE](#MAV_MOUNT_MODE) | | + +### VEHICLE_CMD_DO_SET_CAM_TRIGG_DIST (206) + +Mission command to set TRIG_DIST for this flight. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------ | +| 1 | m | | Camera trigger distance | +| 2 | ms | | Shutter integration time | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_FENCE_ENABLE (207) + +Mission command to enable the geofence. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------------------------ | +| 1 | | | enable? (0=disable, 1=enable) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_PARACHUTE (208) + +Mission command to trigger a parachute. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | action [@enum PARACHUTE_ACTION] (0=disable, 1=enable, 2=release, for some systems see [@enum PARACHUTE_ACTION], not in general message set.) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_MOTOR_TEST (209) + +Motor test command. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | --------------------------------------------------------------- | +| 1 | | | Instance (@range 1, ) | +| 2 | | | throttle type | +| 3 | | | throttle | +| 4 | | | timeout [s] | +| 5 | | | Motor count | +| 6 | | | Test order | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_INVERTED_FLIGHT (210) + +Change to/from inverted flight. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | -------------------------------------------------- | +| 1 | | | inverted (0=normal, 1=inverted) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_GRIPPER (211) + +Command to operate a gripper. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_AUTOTUNE_ENABLE (212) + +Enable autotune module. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ----------- | +| 1 | | | 1 to enable | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_CAM_TRIGG_INTERVAL (214) + +Mission command to set TRIG_INTERVAL for this flight. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------------------------ | +| 1 | m | | Camera trigger distance | +| 2 | | | Shutter integration time (ms) | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_MOUNT_CONTROL_QUAT (220) + +Mission command to control a camera or antenna mount, using a quaternion as reference. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------------------------------------------- | +| 1 | | | q1 - quaternion param #1, w (1 in null-rotation) | +| 2 | | | q2 - quaternion param #2, x (0 in null-rotation) | +| 3 | | | q3 - quaternion param #3, y (0 in null-rotation) | +| 4 | | | q4 - quaternion param #4, z (0 in null-rotation) | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_GUIDED_MASTER (221) + +Set id of master controller. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------ | +| 1 | | | System ID | +| 2 | | | Component ID | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_GUIDED_LIMITS (222) + +Set limits for external control. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | s | | Timeout - maximum time that external controller will be allowed to control vehicle. 0 means no timeout | +| 2 | 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 | +| 3 | 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 | +| 4 | 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 | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_LAST (240) + +NOP - This command is only used to mark the upper limit of the DO commands in the enumeration. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_PREFLIGHT_CALIBRATION (241) + +Trigger calibration. This command will be only accepted if in pre-flight mode. See MAVLink spec MAV_CMD_PREFLIGHT_CALIBRATION. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PREFLIGHT_SET_SENSOR_OFFSETS (242) + +Set sensor offsets. This command will be only accepted if in pre-flight mode. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | | | Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow | +| 2 | | | X axis offset (or generic dimension 1), in the sensor's raw units | +| 3 | | | Y axis offset (or generic dimension 2), in the sensor's raw units | +| 4 | | | Z axis offset (or generic dimension 3), in the sensor's raw units | +| 5 | | | Generic dimension 4, in the sensor's raw units | +| 6 | | | Generic dimension 5, in the sensor's raw units | +| 7 | | | Generic dimension 6, in the sensor's raw units | + +### VEHICLE_CMD_PREFLIGHT_UAVCAN (243) + +UAVCAN configuration. If param 1 == 1 actuator mapping and direction assignment should be started. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PREFLIGHT_STORAGE (245) + +Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------------------------------------------------------------------------------------------------------ | +| 1 | | | Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM | +| 2 | | | Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_PREFLIGHT_REBOOT_SHUTDOWN (246) + +Request the reboot or shutdown of system components. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | 0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot. | +| 2 | | | 0: Do nothing for onboard computer, 1: Reboot onboard computer, 2: Shutdown onboard computer. | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_OBLIQUE_SURVEY (260) + +Mission command to set a Camera Auto Mount Pivoting Oblique Survey for this flight. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------- | +| 1 | m | | Camera trigger distance | +| 2 | ms | | Shutter integration time | +| 3 | | | Camera minimum trigger interval | +| 4 | | | Number of positions | +| 5 | | | Roll | +| 6 | | | Pitch | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_STANDARD_MODE (262) + +Enable the specified standard MAVLink mode. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ----------------------------------------------------------- | +| 1 | | | MAV_STANDARD_MODE | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_GIMBAL_DEVICE_INFORMATION (283) + +Command to ask information about a low level gimbal. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_MISSION_START (300) + +Start running a mission. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | | | first_item: the first mission item to run | +| 2 | | | last_item: the last mission item to run (after this item is run, the mission ends) | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_ACTUATOR_TEST (310) + +Actuator testing command. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------------------------------------------------------------------------- | --------------- | +| 1 | | [-1 : 1] | value | +| 2 | s | | timeout | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | output function | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_CONFIGURE_ACTUATOR (311) + +Actuator configuration command. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | --------------- | +| 1 | | | configuration | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | output function | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_COMPONENT_ARM_DISARM (400) + +Arms / Disarms a component. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | -------------------------------------- | +| 1 | | | 1 to arm, 0 to disarm. | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_RUN_PREARM_CHECKS (401) + +Instructs a target system to run pre-arm checks. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_INJECT_FAILURE (420) + +Inject artificial failure for testing purposes. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_START_RX_PAIR (500) + +Starts receiver pairing. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---------------------------------------------------------------- | +| 1 | | | 0:Spektrum | +| 2 | | | 0:Spektrum DSM2, 1:Spektrum DSMX | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_REQUEST_MESSAGE (512) + +Request to send a single instance of the specified message. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_REQUEST_CAMERA_INFORMATION (521) + +Request camera information (CAMERA_INFORMATION). + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | --------------------------------------------------------------------------- | +| 1 | | | 0: No action 1: Request camera capabilities | +| 2 | | | Reserved (all remaining params) | +| 3 | | | Reserved (default:0) | +| 4 | | | Reserved (default:0) | +| 5 | | | Reserved (default:0) | +| 6 | | | Reserved (default:0) | +| 7 | | | Reserved (default:0) | + +### VEHICLE_CMD_SET_CAMERA_MODE (530) + +Set camera capture mode (photo, video, etc.). + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_SET_CAMERA_ZOOM (531) + +Set camera zoom. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_SET_CAMERA_FOCUS (532) + +None + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_EXTERNAL_ATTITUDE_ESTIMATE (620) + +Set an external estimate of vehicle attitude in degrees. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_GIMBAL_MANAGER_PITCHYAW (1000) + +Setpoint to be sent to a gimbal manager to set a gimbal pitch and yaw. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_GIMBAL_MANAGER_CONFIGURE (1001) + +Gimbal configuration to set which sysid/compid is in primary and secondary control. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_IMAGE_START_CAPTURE (2000) + +Start image capture sequence. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_TRIGGER_CONTROL (2003) + +Enable or disable on-board camera triggering system. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_VIDEO_START_CAPTURE (2500) + +Start a video capture. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_VIDEO_STOP_CAPTURE (2501) + +Stop the current video capture. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_LOGGING_START (2510) + +Start streaming ULog data. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_LOGGING_STOP (2511) + +Stop streaming ULog data. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_CONTROL_HIGH_LATENCY (2600) + +Control starting/stopping transmitting data over the high latency link. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_VTOL_TRANSITION (3000) + +Command VTOL transition. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_SET_SAFETY_SWITCH_STATE (5300) + +Command safety on/off. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | -------------------------------------------------------------------------------- | +| 1 | | | 1 to activate safety, 0 to deactivate safety and allow control surface movements | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_ARM_AUTHORIZATION_REQUEST (3001) + +Request arm authorization. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PAYLOAD_PREPARE_DEPLOY (30001) + +Prepare a payload deployment in the flight plan. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PAYLOAD_CONTROL_DEPLOY (30002) + +Control a pre-programmed payload deployment. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_FIXED_MAG_CAL_YAW (42006) + +Magnetometer calibration based on provided known yaw. This allows for fast calibration using WMM field tables in the vehicle, given only the known yaw of the vehicle. If Latitude and longitude are both zero then use the current vehicle location. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_WINCH (42600) + +Command to operate winch. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_EXTERNAL_POSITION_ESTIMATE (43003) + +External reset of estimator global position when dead reckoning. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_EXTERNAL_WIND_ESTIMATE (43004) + +None + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PX4_INTERNAL_START (65537) + +Start of PX4 internal only vehicle commands (> UINT16_MAX). + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ---- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_SET_GPS_GLOBAL_ORIGIN (100000) + +Sets the GPS coordinates of the vehicle local origin (0,0,0) position. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------------------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Latitude (WGS-84) | +| 6 | | | Longitude (WGS-84) | +| 7 | m | | Altitude (AMSL from GNSS, positive above ground) | + +### VEHICLE_CMD_SET_NAV_STATE (100001) + +Change mode by specifying nav_state directly. + +| Param | Units | Range/Enum | Опис | +| ----- | ----- | ---------- | ------------------------------ | +| 1 | | | nav_state | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +## Enums + +### ORBIT_YAW_BEHAVIOUR {#ORBIT_YAW_BEHAVIOUR} + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER | `uint8` | 0 | | +| ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING | `uint8` | 1 | | +| ORBIT_YAW_BEHAVIOUR_UNCONTROLLED | `uint8` | 2 | | +| ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE | `uint8` | 3 | | +| ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED | `uint8` | 4 | | +| ORBIT_YAW_BEHAVIOUR_UNCHANGED | `uint8` | 5 | | + +### VEHICLE_ROI {#VEHICLE_ROI} + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------ | ------- | -------- | -------------------------------------------- | +| VEHICLE_ROI_NONE | `uint8` | 0 | No region of interest. | +| VEHICLE_ROI_WPNEXT | `uint8` | 1 | Point toward next MISSION. | +| VEHICLE_ROI_WPINDEX | `uint8` | 2 | Point toward given MISSION. | +| VEHICLE_ROI_LOCATION | `uint8` | 3 | Point toward fixed location. | +| VEHICLE_ROI_TARGET | `uint8` | 4 | Point toward target. | +| VEHICLE_ROI_ENUM_END | `uint8` | 5 | | + +### SPEED_TYPE {#SPEED_TYPE} + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ---- | +| SPEED_TYPE_AIRSPEED | `uint8` | 0 | | +| SPEED_TYPE_GROUNDSPEED | `uint8` | 1 | | +| SPEED_TYPE_CLIMB_SPEED | `uint8` | 2 | | +| SPEED_TYPE_DESCEND_SPEED | `uint8` | 3 | | + +### MAV_MOUNT_MODE {#MAV_MOUNT_MODE} + +| Назва | Тип | Значення | Опис | +| ----- | --- | -------- | ---- | + +## Constants + +| Назва | Тип | Значення | Опис | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| MESSAGE_VERSION | `uint32` | 0 | | +| PREFLIGHT_CALIBRATION_TEMPERATURE_CALIBRATION | `uint16` | 3 | Param value for VEHICLE_CMD_PREFLIGHT_CALIBRATION to start temperature calibration. | +| VEHICLE_MOUNT_MODE_RETRACT | `uint8` | 0 | Load and keep safe position (Roll,Pitch,Yaw) from permanent memory and stop stabilization. | +| VEHICLE_MOUNT_MODE_NEUTRAL | `uint8` | 1 | Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory. | +| VEHICLE_MOUNT_MODE_MAVLINK_TARGETING | `uint8` | 2 | Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization. | +| VEHICLE_MOUNT_MODE_RC_TARGETING | `uint8` | 3 | Load neutral position and start RC Roll,Pitch,Yaw control with stabilization. | +| VEHICLE_MOUNT_MODE_GPS_POINT | `uint8` | 4 | Load neutral position and start to point to Lat,Lon,Alt. | +| VEHICLE_MOUNT_MODE_ENUM_END | `uint8` | 5 | | +| PARACHUTE_ACTION_DISABLE | `uint8` | 0 | | +| PARACHUTE_ACTION_ENABLE | `uint8` | 1 | | +| PARACHUTE_ACTION_RELEASE | `uint8` | 2 | | +| FAILURE_UNIT_SENSOR_GYRO | `uint8` | 0 | | +| FAILURE_UNIT_SENSOR_ACCEL | `uint8` | 1 | | +| FAILURE_UNIT_SENSOR_MAG | `uint8` | 2 | | +| FAILURE_UNIT_SENSOR_BARO | `uint8` | 3 | | +| FAILURE_UNIT_SENSOR_GPS | `uint8` | 4 | | +| FAILURE_UNIT_SENSOR_OPTICAL_FLOW | `uint8` | 5 | | +| FAILURE_UNIT_SENSOR_VIO | `uint8` | 6 | | +| FAILURE_UNIT_SENSOR_DISTANCE_SENSOR | `uint8` | 7 | | +| FAILURE_UNIT_SENSOR_AIRSPEED | `uint8` | 8 | | +| FAILURE_UNIT_SYSTEM_BATTERY | `uint8` | 100 | | +| FAILURE_UNIT_SYSTEM_MOTOR | `uint8` | 101 | | +| FAILURE_UNIT_SYSTEM_SERVO | `uint8` | 102 | | +| FAILURE_UNIT_SYSTEM_AVOIDANCE | `uint8` | 103 | | +| FAILURE_UNIT_SYSTEM_RC_SIGNAL | `uint8` | 104 | | +| FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL | `uint8` | 105 | | +| FAILURE_TYPE_OK | `uint8` | 0 | | +| FAILURE_TYPE_OFF | `uint8` | 1 | | +| FAILURE_TYPE_STUCK | `uint8` | 2 | | +| FAILURE_TYPE_GARBAGE | `uint8` | 3 | | +| FAILURE_TYPE_WRONG | `uint8` | 4 | | +| FAILURE_TYPE_SLOW | `uint8` | 5 | | +| FAILURE_TYPE_DELAYED | `uint8` | 6 | | +| FAILURE_TYPE_INTERMITTENT | `uint8` | 7 | | +| ARMING_ACTION_DISARM | `int8` | 0 | | +| ARMING_ACTION_ARM | `int8` | 1 | | +| GRIPPER_ACTION_RELEASE | `uint8` | 0 | | +| GRIPPER_ACTION_GRAB | `uint8` | 1 | | +| SAFETY_OFF | `uint8` | 0 | | +| SAFETY_ON | `uint8` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | +| COMPONENT_MODE_EXECUTOR_START | `uint16` | 1000 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleCommand.msg) + +:::details +Click here to see original file ```c # Vehicle Command uORB message. Used for commanding a mission / action / etc. @@ -212,5 +1785,6 @@ bool from_external uint16 COMPONENT_MODE_EXECUTOR_START = 1000 # TOPICS vehicle_command gimbal_v1_command vehicle_command_mode_executor - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleCommandAck.md b/docs/uk/msg_docs/VehicleCommandAck.md index 7a7bd0acdf..871e43fa1f 100644 --- a/docs/uk/msg_docs/VehicleCommandAck.md +++ b/docs/uk/msg_docs/VehicleCommandAck.md @@ -1,10 +1,52 @@ +--- +pageClass: is-wide-page +--- + # VehicleCommandAck (повідомлення UORB) -Повідомлення uORB підтвердження команди автомобіля. -Used for acknowledging the vehicle command being received. -Follows the MAVLink COMMAND_ACK message definition +Повідомлення uORB підтвердження команди автомобіля. Used for acknowledging the vehicle command being received. Follows the MAVLink COMMAND_ACK message definition. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleCommandAck.msg) +**TOPICS:** vehicle_commandack + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| command | `uint32` | | | Command that is being acknowledged | +| result | `uint8` | | | Command result | +| result_param1 | `uint8` | | | Also used as progress[%], it can be set with the reason why the command was denied, or the progress percentage when result is MAV_RESULT_IN_PROGRESS | +| result_param2 | `int32` | | | Additional parameter of the result, example: which parameter of MAV_CMD_NAV_WAYPOINT caused it to be denied. | +| target_system | `uint8` | | | | +| target_component | `uint16` | | | Target component / mode executor | +| from_external | `bool` | | | Indicates if the command came from an external source | + +## Constants + +| Назва | Тип | Значення | Опис | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | --------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| VEHICLE_CMD_RESULT_ACCEPTED | `uint8` | 0 | Command ACCEPTED and EXECUTED | +| VEHICLE_CMD_RESULT_TEMPORARILY_REJECTED | `uint8` | 1 | Command TEMPORARY REJECTED/DENIED | +| VEHICLE_CMD_RESULT_DENIED | `uint8` | 2 | Command PERMANENTLY DENIED | +| VEHICLE_CMD_RESULT_UNSUPPORTED | `uint8` | 3 | Command UNKNOWN/UNSUPPORTED | +| VEHICLE_CMD_RESULT_FAILED | `uint8` | 4 | Command executed, but failed | +| VEHICLE_CMD_RESULT_IN_PROGRESS | `uint8` | 5 | Command being executed | +| VEHICLE_CMD_RESULT_CANCELLED | `uint8` | 6 | Command Canceled | +| ARM_AUTH_DENIED_REASON_GENERIC | `uint16` | 0 | | +| ARM_AUTH_DENIED_REASON_NONE | `uint16` | 1 | | +| ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT | `uint16` | 2 | | +| ARM_AUTH_DENIED_REASON_TIMEOUT | `uint16` | 3 | | +| ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE | `uint16` | 4 | | +| ARM_AUTH_DENIED_REASON_BAD_WEATHER | `uint16` | 5 | | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleCommandAck.msg) + +:::details +Click here to see original file ```c # Vehicle Command Ackonwledgement uORB message. @@ -32,7 +74,7 @@ uint16 ARM_AUTH_DENIED_REASON_TIMEOUT = 3 uint16 ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE = 4 uint16 ARM_AUTH_DENIED_REASON_BAD_WEATHER = 5 -uint8 ORB_QUEUE_LENGTH = 4 +uint8 ORB_QUEUE_LENGTH = 8 uint32 command # Command that is being acknowledged uint8 result # Command result @@ -42,5 +84,6 @@ uint8 target_system uint16 target_component # Target component / mode executor bool from_external # Indicates if the command came from an external source - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleConstraints.md b/docs/uk/msg_docs/VehicleConstraints.md index 4d9d518b62..e7f3dd959c 100644 --- a/docs/uk/msg_docs/VehicleConstraints.md +++ b/docs/uk/msg_docs/VehicleConstraints.md @@ -1,9 +1,28 @@ +--- +pageClass: is-wide-page +--- + # VehicleConstraints (повідомлення UORB) -Обмеження локальної заданої точки в рамці NED -встановлення чого-небудь на NaN означає, що обмеження не надано +Local setpoint constraints in NED frame. setting something to NaN means that no limit is provided. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleConstraints.msg) +**TOPICS:** vehicle_constraints + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| speed_up | `float32` | | | in meters/sec | +| speed_down | `float32` | | | in meters/sec | +| want_takeoff | `bool` | | | tell the controller to initiate takeoff when idling (ignored during flight) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleConstraints.msg) + +:::details +Click here to see original file ```c # Local setpoint constraints in NED frame @@ -15,5 +34,6 @@ float32 speed_up # in meters/sec float32 speed_down # in meters/sec bool want_takeoff # tell the controller to initiate takeoff when idling (ignored during flight) - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleControlMode.md b/docs/uk/msg_docs/VehicleControlMode.md index c77128f38c..c0a28c1c59 100644 --- a/docs/uk/msg_docs/VehicleControlMode.md +++ b/docs/uk/msg_docs/VehicleControlMode.md @@ -1,6 +1,44 @@ +--- +pageClass: is-wide-page +--- + # VehicleControlMode (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleControlMode.msg) +**TOPICS:** vehicle_control_mode config_control_setpoints + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| flag_armed | `bool` | | | synonym for actuator_armed.armed | +| flag_multicopter_position_control_enabled | `bool` | | | | +| flag_control_manual_enabled | `bool` | | | true if manual input is mixed in | +| flag_control_auto_enabled | `bool` | | | true if onboard autopilot should act | +| flag_control_offboard_enabled | `bool` | | | true if offboard control should be used | +| flag_control_position_enabled | `bool` | | | true if position is controlled | +| flag_control_velocity_enabled | `bool` | | | true if horizontal velocity (implies direction) is controlled | +| flag_control_altitude_enabled | `bool` | | | true if altitude is controlled | +| flag_control_climb_rate_enabled | `bool` | | | true if climb rate is controlled | +| flag_control_acceleration_enabled | `bool` | | | true if acceleration is controlled | +| flag_control_attitude_enabled | `bool` | | | true if attitude stabilization is mixed in | +| flag_control_rates_enabled | `bool` | | | true if rates are stabilized | +| flag_control_allocation_enabled | `bool` | | | true if control allocation is enabled | +| flag_control_termination_enabled | `bool` | | | true if flighttermination is enabled | +| source_id | `uint8` | | | Mode ID (nav_state) | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleControlMode.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -27,5 +65,6 @@ bool flag_control_termination_enabled # true if flighttermination is enabled uint8 source_id # Mode ID (nav_state) # TOPICS vehicle_control_mode config_control_setpoints - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleGlobalPosition.md b/docs/uk/msg_docs/VehicleGlobalPosition.md index fd0e001391..81349e8c6c 100644 --- a/docs/uk/msg_docs/VehicleGlobalPosition.md +++ b/docs/uk/msg_docs/VehicleGlobalPosition.md @@ -1,10 +1,48 @@ +--- +pageClass: is-wide-page +--- + # VehicleGlobalPosition (повідомлення UORB) -Об'єднана глобальна позиція в WGS84. -This struct contains global position estimation. Це не сирі GPS -вимірювання (@see vehicle_gps_position). Ця тема зазвичай публікується позиціонером, який враховує більше джерел інформації, ніж просто GPS, наприклад, керування введеннями транспортного засобу в реалізації фільтра Калмана. +Об'єднана глобальна позиція в WGS84. This struct contains global position estimation. It is not the raw GPS. measurement (@see vehicle_gps_position). This topic is usually published by the position. estimator, which will take more sources of information into account than just GPS,. e.g. control inputs of the vehicle in a Kalman-filter implementation. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleGlobalPosition.msg) +**TOPICS:** vehicle_global_position vehicle_global_position_groundtruth external_ins_global_position estimator_global_position aux_global_position + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| lat | `float64` | | | Latitude, (degrees) | +| lon | `float64` | | | Longitude, (degrees) | +| alt | `float32` | | | Altitude AMSL, (meters) | +| alt_ellipsoid | `float32` | | | Altitude above ellipsoid, (meters) | +| lat_lon_valid | `bool` | | | | +| alt_valid | `bool` | | | | +| delta_alt | `float32` | | | Reset delta for altitude | +| delta_terrain | `float32` | | | Reset delta for terrain | +| lat_lon_reset_counter | `uint8` | | | Counter for reset events on horizontal position coordinates | +| alt_reset_counter | `uint8` | | | Counter for reset events on altitude | +| terrain_reset_counter | `uint8` | | | Counter for reset events on terrain | +| eph | `float32` | | | Standard deviation of horizontal position error, (metres) | +| epv | `float32` | | | Standard deviation of vertical position error, (metres) | +| terrain_alt | `float32` | | | Terrain altitude WGS84, (metres) | +| terrain_alt_valid | `bool` | | | Terrain altitude estimate is valid | +| dead_reckoning | `bool` | | | True if this position is estimated through dead-reckoning | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleGlobalPosition.msg) + +:::details +Click here to see original file ```c # Fused global position in WGS84. @@ -44,5 +82,6 @@ bool dead_reckoning # True if this position is estimated through dead-reckoning # TOPICS vehicle_global_position vehicle_global_position_groundtruth external_ins_global_position # TOPICS estimator_global_position # TOPICS aux_global_position - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleImu.md b/docs/uk/msg_docs/VehicleImu.md index bc841bf89d..d18db63ada 100644 --- a/docs/uk/msg_docs/VehicleImu.md +++ b/docs/uk/msg_docs/VehicleImu.md @@ -1,8 +1,44 @@ +--- +pageClass: is-wide-page +--- + # VehicleImu (повідомлення UORB) Вимірювання IMU у вигляді одиниць SI. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleImu.msg) +**TOPICS:** vehicle_imu + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| accel_device_id | `uint32` | | | Accelerometer unique device ID for the sensor that does not change between power cycles | +| gyro_device_id | `uint32` | | | Gyroscope unique device ID for the sensor that does not change between power cycles | +| delta_angle | `float32[3]` | | | delta angle about the FRD body frame XYZ-axis in rad over the integration time frame (delta_angle_dt) | +| delta_velocity | `float32[3]` | | | delta velocity in the FRD body frame XYZ-axis in m/s over the integration time frame (delta_velocity_dt) | +| delta_angle_dt | `uint32` | | | integration period in microseconds | +| delta_velocity_dt | `uint32` | | | integration period in microseconds | +| delta_angle_clipping | `uint8` | | | bitfield indicating if there was any gyro clipping (per axis) during the integration time frame | +| delta_velocity_clipping | `uint8` | | | bitfield indicating if there was any accelerometer clipping (per axis) during the integration time frame | +| accel_calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever accelermeter calibration changes. | +| gyro_calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever rate gyro calibration changes. | + +## Constants + +| Назва | Тип | Значення | Опис | +| ---------------------------------------------------------- | ------- | -------- | ---- | +| CLIPPING_X | `uint8` | 1 | | +| CLIPPING_Y | `uint8` | 2 | | +| CLIPPING_Z | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleImu.msg) + +:::details +Click here to see original file ```c # IMU readings in SI-unit form. @@ -28,5 +64,6 @@ uint8 delta_velocity_clipping # bitfield indicating if there was any accelerom uint8 accel_calibration_count # Calibration changed counter. Monotonically increases whenever accelermeter calibration changes. uint8 gyro_calibration_count # Calibration changed counter. Monotonically increases whenever rate gyro calibration changes. - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleImuStatus.md b/docs/uk/msg_docs/VehicleImuStatus.md index 2f2e1d03fa..9e53a2a312 100644 --- a/docs/uk/msg_docs/VehicleImuStatus.md +++ b/docs/uk/msg_docs/VehicleImuStatus.md @@ -1,6 +1,42 @@ +--- +pageClass: is-wide-page +--- + # VehicleImuStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleImuStatus.msg) +**TOPICS:** vehicle_imustatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| accel_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| gyro_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| accel_clipping | `uint32[3]` | | | total clipping per axis | +| gyro_clipping | `uint32[3]` | | | total clipping per axis | +| accel_error_count | `uint32` | | | | +| gyro_error_count | `uint32` | | | | +| accel_rate_hz | `float32` | | | | +| gyro_rate_hz | `float32` | | | | +| accel_raw_rate_hz | `float32` | | | full raw sensor sample rate (Hz) | +| gyro_raw_rate_hz | `float32` | | | full raw sensor sample rate (Hz) | +| accel_vibration_metric | `float32` | | | high frequency vibration level in the accelerometer data (m/s/s) | +| gyro_vibration_metric | `float32` | | | high frequency vibration level in the gyro data (rad/s) | +| delta_angle_coning_metric | `float32` | | | average IMU delta angle coning correction (rad^2) | +| mean_accel | `float32[3]` | | | average accelerometer readings since last publication | +| mean_gyro | `float32[3]` | | | average gyroscope readings since last publication | +| var_accel | `float32[3]` | | | accelerometer variance since last publication | +| var_gyro | `float32[3]` | | | gyroscope variance since last publication | +| temperature_accel | `float32` | | | | +| temperature_gyro | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleImuStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -31,5 +67,6 @@ float32[3] var_gyro # gyroscope variance since last publication float32 temperature_accel float32 temperature_gyro - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleLandDetected.md b/docs/uk/msg_docs/VehicleLandDetected.md index 77d340391d..56f92f660d 100644 --- a/docs/uk/msg_docs/VehicleLandDetected.md +++ b/docs/uk/msg_docs/VehicleLandDetected.md @@ -1,6 +1,41 @@ +--- +pageClass: is-wide-page +--- + # VehicleLandDetected (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleLandDetected.msg) +**TOPICS:** vehicle_landdetected + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| freefall | `bool` | | | true if vehicle is currently in free-fall | +| ground_contact | `bool` | | | true if vehicle has ground contact but is not landed (1. stage) | +| maybe_landed | `bool` | | | true if the vehicle might have landed (2. stage) | +| landed | `bool` | | | true if vehicle is currently landed on the ground (3. stage) | +| in_ground_effect | `bool` | | | indicates if from the perspective of the landing detector the vehicle might be in ground effect (baro). This flag will become true if the vehicle is not moving horizontally and is descending (crude assumption that user is landing). | +| in_descend | `bool` | | | | +| has_low_throttle | `bool` | | | | +| vertical_movement | `bool` | | | | +| horizontal_movement | `bool` | | | | +| rotational_movement | `bool` | | | | +| close_to_ground_or_skipped_check | `bool` | | | | +| at_rest | `bool` | | | | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleLandDetected.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -24,5 +59,6 @@ bool rotational_movement bool close_to_ground_or_skipped_check bool at_rest - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleLocalPosition.md b/docs/uk/msg_docs/VehicleLocalPosition.md index dc814eed21..2d387eba15 100644 --- a/docs/uk/msg_docs/VehicleLocalPosition.md +++ b/docs/uk/msg_docs/VehicleLocalPosition.md @@ -1,9 +1,86 @@ +--- +pageClass: is-wide-page +--- + # VehicleLocalPosition (повідомлення UORB) -Fused local position in NED. -The coordinate system origin is the vehicle position at the time when the EKF2-module was started. +Fused local position in NED. The coordinate system origin is the vehicle position at the time when the EKF2-module was started. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleLocalPosition.msg) +**TOPICS:** vehicle_local_position vehicle_local_position_groundtruth external_ins_local_position estimator_local_position + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| xy_valid | `bool` | | | true if x and y are valid | +| z_valid | `bool` | | | true if z is valid | +| v_xy_valid | `bool` | | | true if vx and vy are valid | +| v_z_valid | `bool` | | | true if vz is valid | +| x | `float32` | | | North position in NED earth-fixed frame, (metres) | +| y | `float32` | | | East position in NED earth-fixed frame, (metres) | +| z | `float32` | | | Down position (negative altitude) in NED earth-fixed frame, (metres) | +| delta_xy | `float32[2]` | | | Amount of lateral shift of position estimate in latest reset (in x and y) [m] | +| xy_reset_counter | `uint8` | | | Index of latest lateral position estimate reset | +| delta_z | `float32` | | | Amount of vertical shift of position estimate in latest reset [m] | +| z_reset_counter | `uint8` | | | Index of latest vertical position estimate reset | +| vx | `float32` | | | North velocity in NED earth-fixed frame, (metres/sec) | +| vy | `float32` | | | East velocity in NED earth-fixed frame, (metres/sec) | +| vz | `float32` | | | Down velocity in NED earth-fixed frame, (metres/sec) | +| z_deriv | `float32` | | | Down position time derivative in NED earth-fixed frame, (metres/sec) | +| delta_vxy | `float32[2]` | | | Amount of lateral shift of velocity estimate in latest reset (in x and y) [m/s] | +| vxy_reset_counter | `uint8` | | | Index of latest vertical velocity estimate reset | +| delta_vz | `float32` | | | Amount of vertical shift of velocity estimate in latest reset [m/s] | +| vz_reset_counter | `uint8` | | | Index of latest vertical velocity estimate reset | +| ax | `float32` | | | North velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| ay | `float32` | | | East velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| az | `float32` | | | Down velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| heading | `float32` | | | Euler yaw angle transforming the tangent plane relative to NED earth-fixed frame, -PI..+PI, (radians) | +| heading_var | `float32` | | | | +| unaided_heading | `float32` | | | Same as heading but generated by integrating corrected gyro data only | +| delta_heading | `float32` | | | Heading delta caused by latest heading reset [rad] | +| heading_reset_counter | `uint8` | | | Index of latest heading reset | +| heading_good_for_control | `bool` | | | | +| tilt_var | `float32` | | | | +| xy_global | `bool` | | | true if position (x, y) has a valid global reference (ref_lat, ref_lon) | +| z_global | `bool` | | | true if z has a valid global reference (ref_alt) | +| ref_timestamp | `uint64` | | | Time when reference position was set since system start, (microseconds) | +| ref_lat | `float64` | | | Reference point latitude, (degrees) | +| ref_lon | `float64` | | | Reference point longitude, (degrees) | +| ref_alt | `float32` | | | Reference altitude AMSL, (metres) | +| dist_bottom_valid | `bool` | | | true if distance to bottom surface is valid | +| dist_bottom | `float32` | | | Distance from from bottom surface to ground, (metres) | +| dist_bottom_var | `float32` | | | terrain estimate variance (m^2) | +| delta_dist_bottom | `float32` | | | Amount of vertical shift of dist bottom estimate in latest reset [m] | +| dist_bottom_reset_counter | `uint8` | | | Index of latest dist bottom estimate reset | +| dist_bottom_sensor_bitfield | `uint8` | | | bitfield indicating what type of sensor is used to estimate dist_bottom | +| eph | `float32` | | | Standard deviation of horizontal position error, (metres) | +| epv | `float32` | | | Standard deviation of vertical position error, (metres) | +| evh | `float32` | | | Standard deviation of horizontal velocity error, (metres/sec) | +| evv | `float32` | | | Standard deviation of vertical velocity error, (metres/sec) | +| dead_reckoning | `bool` | | | True if this position is estimated through dead-reckoning | +| vxy_max | `float32` | | | maximum horizontal speed (meters/sec) | +| vz_max | `float32` | | | maximum vertical speed (meters/sec) | +| hagl_min | `float32` | | | minimum height above ground level (meters) | +| hagl_max_z | `float32` | | | maximum height above ground level for z-control (meters) | +| hagl_max_xy | `float32` | | | maximum height above ground level for xy-control (meters) | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| MESSAGE_VERSION | `uint32` | 1 | | +| DIST_BOTTOM_SENSOR_NONE | `uint8` | 0 | | +| DIST_BOTTOM_SENSOR_RANGE | `uint8` | 1 | (1 << 0) a range sensor is used to estimate dist_bottom field | +| DIST_BOTTOM_SENSOR_FLOW | `uint8` | 2 | (1 << 1) a flow sensor is used to estimate dist_bottom field (mostly fixed-wing use case) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleLocalPosition.msg) + +:::details +Click here to see original file ```c # Fused local position in NED. @@ -94,5 +171,6 @@ float32 hagl_max_xy # maximum height above ground level for xy-control (meters # TOPICS vehicle_local_position vehicle_local_position_groundtruth external_ins_local_position # TOPICS estimator_local_position - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleLocalPositionSetpoint.md b/docs/uk/msg_docs/VehicleLocalPositionSetpoint.md index 2309a238a2..6bc878001a 100644 --- a/docs/uk/msg_docs/VehicleLocalPositionSetpoint.md +++ b/docs/uk/msg_docs/VehicleLocalPositionSetpoint.md @@ -1,10 +1,35 @@ +--- +pageClass: is-wide-page +--- + # VehicleLocalPositionSetpoint (повідомлення UORB) -Місцева позиція задана в рамці NED -Телеметрія контролера позиції PID для відстеження. -NaN means the state was not controlled +Local position setpoint in NED frame. Telemetry of PID position controller to monitor tracking. NaN means the state was not controlled. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleLocalPositionSetpoint.msg) +**TOPICS:** vehicle_localposition_setpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------ | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| x | `float32` | | | in meters NED | +| y | `float32` | | | in meters NED | +| z | `float32` | | | in meters NED | +| vx | `float32` | | | in meters/sec | +| vy | `float32` | | | in meters/sec | +| vz | `float32` | | | in meters/sec | +| acceleration | `float32[3]` | | | in meters/sec^2 | +| thrust | `float32[3]` | | | normalized thrust vector in NED | +| yaw | `float32` | | | in radians NED -PI..+PI | +| yawspeed | `float32` | | | in radians/sec | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleLocalPositionSetpoint.msg) + +:::details +Click here to see original file ```c # Local position setpoint in NED frame @@ -26,5 +51,6 @@ float32[3] thrust # normalized thrust vector in NED float32 yaw # in radians NED -PI..+PI float32 yawspeed # in radians/sec - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleLocalPositionV0.md b/docs/uk/msg_docs/VehicleLocalPositionV0.md index 05d9361dc1..0085af22c9 100644 --- a/docs/uk/msg_docs/VehicleLocalPositionV0.md +++ b/docs/uk/msg_docs/VehicleLocalPositionV0.md @@ -1,9 +1,85 @@ +--- +pageClass: is-wide-page +--- + # VehicleLocalPositionV0 (UORB message) -Fused local position in NED. -The coordinate system origin is the vehicle position at the time when the EKF2-module was started. +Fused local position in NED. The coordinate system origin is the vehicle position at the time when the EKF2-module was started. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleLocalPositionV0.msg) +**TOPICS:** vehicle_local_position vehicle_local_position_groundtruth external_ins_local_position estimator_local_position + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| xy_valid | `bool` | | | true if x and y are valid | +| z_valid | `bool` | | | true if z is valid | +| v_xy_valid | `bool` | | | true if vx and vy are valid | +| v_z_valid | `bool` | | | true if vz is valid | +| x | `float32` | | | North position in NED earth-fixed frame, (metres) | +| y | `float32` | | | East position in NED earth-fixed frame, (metres) | +| z | `float32` | | | Down position (negative altitude) in NED earth-fixed frame, (metres) | +| delta_xy | `float32[2]` | | | Amount of lateral shift of position estimate in latest reset (in x and y) [m] | +| xy_reset_counter | `uint8` | | | Index of latest lateral position estimate reset | +| delta_z | `float32` | | | Amount of vertical shift of position estimate in latest reset [m] | +| z_reset_counter | `uint8` | | | Index of latest vertical position estimate reset | +| vx | `float32` | | | North velocity in NED earth-fixed frame, (metres/sec) | +| vy | `float32` | | | East velocity in NED earth-fixed frame, (metres/sec) | +| vz | `float32` | | | Down velocity in NED earth-fixed frame, (metres/sec) | +| z_deriv | `float32` | | | Down position time derivative in NED earth-fixed frame, (metres/sec) | +| delta_vxy | `float32[2]` | | | Amount of lateral shift of velocity estimate in latest reset (in x and y) [m/s] | +| vxy_reset_counter | `uint8` | | | Index of latest vertical velocity estimate reset | +| delta_vz | `float32` | | | Amount of vertical shift of velocity estimate in latest reset [m/s] | +| vz_reset_counter | `uint8` | | | Index of latest vertical velocity estimate reset | +| ax | `float32` | | | North velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| ay | `float32` | | | East velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| az | `float32` | | | Down velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| heading | `float32` | | | Euler yaw angle transforming the tangent plane relative to NED earth-fixed frame, -PI..+PI, (radians) | +| heading_var | `float32` | | | | +| unaided_heading | `float32` | | | Same as heading but generated by integrating corrected gyro data only | +| delta_heading | `float32` | | | Heading delta caused by latest heading reset [rad] | +| heading_reset_counter | `uint8` | | | Index of latest heading reset | +| heading_good_for_control | `bool` | | | | +| tilt_var | `float32` | | | | +| xy_global | `bool` | | | true if position (x, y) has a valid global reference (ref_lat, ref_lon) | +| z_global | `bool` | | | true if z has a valid global reference (ref_alt) | +| ref_timestamp | `uint64` | | | Time when reference position was set since system start, (microseconds) | +| ref_lat | `float64` | | | Reference point latitude, (degrees) | +| ref_lon | `float64` | | | Reference point longitude, (degrees) | +| ref_alt | `float32` | | | Reference altitude AMSL, (metres) | +| dist_bottom_valid | `bool` | | | true if distance to bottom surface is valid | +| dist_bottom | `float32` | | | Distance from from bottom surface to ground, (metres) | +| dist_bottom_var | `float32` | | | terrain estimate variance (m^2) | +| delta_dist_bottom | `float32` | | | Amount of vertical shift of dist bottom estimate in latest reset [m] | +| dist_bottom_reset_counter | `uint8` | | | Index of latest dist bottom estimate reset | +| dist_bottom_sensor_bitfield | `uint8` | | | bitfield indicating what type of sensor is used to estimate dist_bottom | +| eph | `float32` | | | Standard deviation of horizontal position error, (metres) | +| epv | `float32` | | | Standard deviation of vertical position error, (metres) | +| evh | `float32` | | | Standard deviation of horizontal velocity error, (metres/sec) | +| evv | `float32` | | | Standard deviation of vertical velocity error, (metres/sec) | +| dead_reckoning | `bool` | | | True if this position is estimated through dead-reckoning | +| vxy_max | `float32` | | | maximum horizontal speed - set to 0 when limiting not required (meters/sec) | +| vz_max | `float32` | | | maximum vertical speed - set to 0 when limiting not required (meters/sec) | +| hagl_min | `float32` | | | minimum height above ground level - set to 0 when limiting not required (meters) | +| hagl_max | `float32` | | | maximum height above ground level - set to 0 when limiting not required (meters) | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| MESSAGE_VERSION | `uint32` | 0 | | +| DIST_BOTTOM_SENSOR_NONE | `uint8` | 0 | | +| DIST_BOTTOM_SENSOR_RANGE | `uint8` | 1 | (1 << 0) a range sensor is used to estimate dist_bottom field | +| DIST_BOTTOM_SENSOR_FLOW | `uint8` | 2 | (1 << 1) a flow sensor is used to estimate dist_bottom field (mostly fixed-wing use case) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleLocalPositionV0.msg) + +:::details +Click here to see original file ```c # Fused local position in NED. @@ -92,5 +168,6 @@ float32 hagl_max # maximum height above ground level - set to 0 when limiting # TOPICS vehicle_local_position vehicle_local_position_groundtruth external_ins_local_position # TOPICS estimator_local_position - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleMagnetometer.md b/docs/uk/msg_docs/VehicleMagnetometer.md index b727c76b4b..aee0f8a1b7 100644 --- a/docs/uk/msg_docs/VehicleMagnetometer.md +++ b/docs/uk/msg_docs/VehicleMagnetometer.md @@ -1,9 +1,29 @@ +--- +pageClass: is-wide-page +--- + # VehicleMagnetometer (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleMagnetometer.msg) +**TOPICS:** vehicle_magnetometer + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| device_id | `uint32` | | | unique device ID for the selected magnetometer | +| magnetometer_ga | `float32[3]` | | | Magnetic field in the FRD body frame XYZ-axis in Gauss | +| calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever calibration changes. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleMagnetometer.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint64 timestamp_sample # the timestamp of the raw data (microseconds) @@ -13,5 +33,6 @@ uint32 device_id # unique device ID for the selected magnetometer float32[3] magnetometer_ga # Magnetic field in the FRD body frame XYZ-axis in Gauss uint8 calibration_count # Calibration changed counter. Monotonically increases whenever calibration changes. - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleOdometry.md b/docs/uk/msg_docs/VehicleOdometry.md index c7abbc98c4..83cace64f0 100644 --- a/docs/uk/msg_docs/VehicleOdometry.md +++ b/docs/uk/msg_docs/VehicleOdometry.md @@ -1,10 +1,64 @@ +--- +pageClass: is-wide-page +--- + # VehicleOdometry (повідомлення UORB) -Vehicle odometry data +Vehicle odometry data. Fits ROS REP 147 for aerial vehicles -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleOdometry.msg) +**TOPICS:** vehicle_odometry vehicle_mocap_odometry vehicle_visual_odometry estimator_odometry + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp sample | +| pose_frame | `uint8` | | [POSE_FRAME](#POSE_FRAME) | Position and orientation frame of reference | +| положення | `float32[3]` | m [local frame] | | Position. Origin is position of GC at startup. (Invalid: NaN If invalid/unknown) | +| q | `float32[4]` | | | Attitude (expressed as a quaternion) relative to pose reference frame at current location. Follows the Hamiltonian convention (w, x, y, z, right-handed, passive rotations from body to world) (Invalid: NaN First value if invalid/unknown) | +| velocity_frame | `uint8` | | [VELOCITY_FRAME](#VELOCITY_FRAME) | Reference frame of the velocity data | +| швидкість | `float32[3]` | m/s [@velocity_frame] | | Velocity. (Invalid: NaN If invalid/unknown) | +| angular_velocity | `float32[3]` | rad/s [@VELOCITY_FRAME_BODY_FRD] | | Angular velocity in body-fixed frame (Invalid: NaN If invalid/unknown) | +| position_variance | `float32[3]` | m^2 | | Variance of position error | +| orientation_variance | `float32[3]` | rad^2 | | Variance of orientation/attitude error (expressed in body frame) | +| velocity_variance | `float32[3]` | m^2/s^2 | | Variance of velocity error | +| reset_counter | `uint8` | | | Reset counter. Counts reset events on attitude, velocity and position. | +| quality | `int8` | | | Quality. Unused. (Invalid: 0) | + +## Enums + +### POSE_FRAME {#POSE_FRAME} + +| Назва | Тип | Значення | Опис | +| ----------------------------------------------------------------------------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| POSE_FRAME_UNKNOWN | `uint8` | 0 | Unknown frame | +| POSE_FRAME_NED | `uint8` | 1 | North-East-Down (NED) navigation frame. Aligned with True North. | +| POSE_FRAME_FRD | `uint8` | 2 | Forward-Right-Down (FRD) frame. Constant arbitrary heading offset from True North. Z is down. | + +### VELOCITY_FRAME {#VELOCITY_FRAME} + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| VELOCITY_FRAME_UNKNOWN | `uint8` | 0 | Unknown frame | +| VELOCITY_FRAME_NED | `uint8` | 1 | NED navigation frame at current position. | +| VELOCITY_FRAME_FRD | `uint8` | 2 | FRD navigation frame at current position. Constant arbitrary heading offset from True North. Z is down. | +| VELOCITY_FRAME_BODY_FRD | `uint8` | 3 | FRD body-fixed frame | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleOdometry.msg) + +:::details +Click here to see original file ```c # Vehicle odometry data @@ -42,5 +96,6 @@ int8 quality # [-] [@invalid 0] Quality. Unused. # TOPICS vehicle_odometry vehicle_mocap_odometry vehicle_visual_odometry # TOPICS estimator_odometry - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleOpticalFlow.md b/docs/uk/msg_docs/VehicleOpticalFlow.md index 9007f9cadd..b3662a263f 100644 --- a/docs/uk/msg_docs/VehicleOpticalFlow.md +++ b/docs/uk/msg_docs/VehicleOpticalFlow.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # VehicleOpticalFlow (повідомлення UORB) Оптичний потік в кадрі тіла XYZ в одиницях SI. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleOpticalFlow.msg) +**TOPICS:** vehicle_opticalflow + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| pixel_flow | `float32[2]` | | | (radians) accumulated optical flow in radians where a positive value is produced by a RH rotation about the body axis | +| delta_angle | `float32[3]` | | | (radians) accumulated gyro radians where a positive value is produced by a RH rotation of the sensor about the body axis. (NAN if unavailable) | +| distance_m | `float32` | | | (meters) Distance to the center of the flow field (NAN if unavailable) | +| integration_timespan_us | `uint32` | | | (microseconds) accumulation timespan in microseconds | +| quality | `uint8` | | | Average of quality of accumulated frames, 0: bad quality, 255: maximum quality | +| max_flow_rate | `float32` | | | (radians/s) Magnitude of maximum angular which the optical flow sensor can measure reliably | +| min_ground_distance | `float32` | | | (meters) Minimum distance from ground at which the optical flow sensor operates reliably | +| max_ground_distance | `float32` | | | (meters) Maximum distance from ground at which the optical flow sensor operates reliably | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleOpticalFlow.msg) + +:::details +Click here to see original file ```c # Optical flow in XYZ body frame in SI units. @@ -26,5 +53,6 @@ float32 max_flow_rate # (radians/s) Magnitude of maximum angular which float32 min_ground_distance # (meters) Minimum distance from ground at which the optical flow sensor operates reliably float32 max_ground_distance # (meters) Maximum distance from ground at which the optical flow sensor operates reliably - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleOpticalFlowVel.md b/docs/uk/msg_docs/VehicleOpticalFlowVel.md index 1648106c32..3aee1f2bb6 100644 --- a/docs/uk/msg_docs/VehicleOpticalFlowVel.md +++ b/docs/uk/msg_docs/VehicleOpticalFlowVel.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # VehicleOpticalFlowVel (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleOpticalFlowVel.msg) +**TOPICS:** estimator_optical_flow_vel vehicle_optical_flow_vel + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| vel_body | `float32[2]` | | | velocity obtained from gyro-compensated and distance-scaled optical flow raw measurements in body frame(m/s) | +| vel_ne | `float32[2]` | | | same as vel_body but in local frame (m/s) | +| vel_body_filtered | `float32[2]` | | | filtered velocity obtained from gyro-compensated and distance-scaled optical flow raw measurements in body frame(m/s) | +| vel_ne_filtered | `float32[2]` | | | filtered same as vel_body_filtered but in local frame (m/s) | +| flow_rate_uncompensated | `float32[2]` | | | integrated optical flow measurement (rad/s) | +| flow_rate_compensated | `float32[2]` | | | integrated optical flow measurement compensated for angular motion (rad/s) | +| gyro_rate | `float32[3]` | | | gyro measurement synchronized with flow measurements (rad/s) | +| gyro_bias | `float32[3]` | | | | +| ref_gyro | `float32[3]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleOpticalFlowVel.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -21,5 +48,6 @@ float32[3] gyro_bias float32[3] ref_gyro # TOPICS estimator_optical_flow_vel vehicle_optical_flow_vel - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleRatesSetpoint.md b/docs/uk/msg_docs/VehicleRatesSetpoint.md index 4f659d5478..be37193266 100644 --- a/docs/uk/msg_docs/VehicleRatesSetpoint.md +++ b/docs/uk/msg_docs/VehicleRatesSetpoint.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # VehicleRatesSetpoint (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleRatesSetpoint.msg) +**TOPICS:** vehicle_ratessetpoint + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ----------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| roll | `float32` | rad/s | | roll rate setpoint | +| pitch | `float32` | rad/s | | pitch rate setpoint | +| yaw | `float32` | rad/s | | yaw rate setpoint | +| thrust_body | `float32[3]` | | | Normalized thrust command in body NED frame [-1,1] | +| reset_integral | `bool` | | | Reset roll/pitch/yaw integrals (navigation logic change) | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleRatesSetpoint.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -17,5 +45,6 @@ float32 yaw # [rad/s] yaw rate setpoint float32[3] thrust_body # Normalized thrust command in body NED frame [-1,1] bool reset_integral # Reset roll/pitch/yaw integrals (navigation logic change) - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleRoi.md b/docs/uk/msg_docs/VehicleRoi.md index 67c6bf03e6..1d01fa88f2 100644 --- a/docs/uk/msg_docs/VehicleRoi.md +++ b/docs/uk/msg_docs/VehicleRoi.md @@ -1,8 +1,43 @@ +--- +pageClass: is-wide-page +--- + # VehicleRoi (повідомлення UORB) -Vehicle Region Of Interest (ROI) +Vehicle Region Of Interest (ROI). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleRoi.msg) +**TOPICS:** vehicle_roi + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mode | `uint8` | | | ROI mode (see above) | +| lat | `float64` | | | Latitude to point to | +| lon | `float64` | | | Longitude to point to | +| alt | `float32` | | | Altitude to point to | +| roll_offset | `float32` | | | angle offset in rad | +| pitch_offset | `float32` | | | angle offset in rad | +| yaw_offset | `float32` | | | angle offset in rad | + +## Constants + +| Назва | Тип | Значення | Опис | +| ----------------------------------------------------------------------------------- | ------- | -------- | ---------------------------------------------- | +| ROI_NONE | `uint8` | 0 | No region of interest | +| ROI_WPNEXT | `uint8` | 1 | Point toward next MISSION with optional offset | +| ROI_WPINDEX | `uint8` | 2 | Point toward given MISSION | +| ROI_LOCATION | `uint8` | 3 | Point toward fixed location | +| ROI_TARGET | `uint8` | 4 | Point toward target | +| ROI_ENUM_END | `uint8` | 5 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleRoi.msg) + +:::details +Click here to see original file ```c # Vehicle Region Of Interest (ROI) @@ -26,5 +61,6 @@ float32 alt # Altitude to point to float32 roll_offset # angle offset in rad float32 pitch_offset # angle offset in rad float32 yaw_offset # angle offset in rad - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleStatus.md b/docs/uk/msg_docs/VehicleStatus.md index 63192fceb7..e37a7cefb9 100644 --- a/docs/uk/msg_docs/VehicleStatus.md +++ b/docs/uk/msg_docs/VehicleStatus.md @@ -1,8 +1,131 @@ +--- +pageClass: is-wide-page +--- + # VehicleStatus (повідомлення UORB) -Кодує стан системи транспортного засобу, опублікований командиром +Encodes the system state of the vehicle published by commander. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleStatus.msg) +**TOPICS:** vehicle_status + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| armed_time | `uint64` | | | Arming timestamp (microseconds) | +| takeoff_time | `uint64` | | | Takeoff timestamp (microseconds) | +| arming_state | `uint8` | | | | +| latest_arming_reason | `uint8` | | | | +| latest_disarming_reason | `uint8` | | | | +| nav_state_timestamp | `uint64` | | | time when current nav_state activated | +| nav_state_user_intention | `uint8` | | | Mode that the user selected (might be different from nav_state in a failsafe situation) | +| nav_state | `uint8` | | | Currently active mode | +| executor_in_charge | `uint8` | | | Current mode executor in charge (0=Autopilot) | +| valid_nav_states_mask | `uint32` | | | Bitmask for all valid nav_state values | +| can_set_nav_states_mask | `uint32` | | | Bitmask for all modes that a user can select | +| failure_detector_status | `uint16` | | | | +| hil_state | `uint8` | | | | +| vehicle_type | `uint8` | | | | +| failsafe | `bool` | | | true if system is in failsafe state (e.g.:RTL, Hover, Terminate, ...) | +| failsafe_and_user_took_over | `bool` | | | true if system is in failsafe state but the user took over control | +| failsafe_defer_state | `uint8` | | | one of FAILSAFE_DEFER_STATE_\* | +| gcs_connection_lost | `bool` | | | datalink to GCS lost | +| gcs_connection_lost_counter | `uint8` | | | counts unique GCS connection lost events | +| high_latency_data_link_lost | `bool` | | | Set to true if the high latency data link (eg. RockBlock Iridium 9603 telemetry module) is lost | +| is_vtol | `bool` | | | True if the system is VTOL capable | +| is_vtol_tailsitter | `bool` | | | True if the system performs a 90° pitch down rotation during transition from MC to FW | +| in_transition_mode | `bool` | | | True if VTOL is doing a transition | +| in_transition_to_fw | `bool` | | | True if VTOL is doing a transition from MC to FW | +| system_type | `uint8` | | | system type, contains mavlink MAV_TYPE | +| system_id | `uint8` | | | system id, contains MAVLink's system ID field | +| component_id | `uint8` | | | subsystem / component id, contains MAVLink's component ID field | +| safety_button_available | `bool` | | | Set to true if a safety button is connected | +| safety_off | `bool` | | | Set to true if safety is off | +| power_input_valid | `bool` | | | set if input power is valid | +| usb_connected | `bool` | | | set to true (never cleared) once telemetry received from usb link | +| open_drone_id_system_present | `bool` | | | | +| open_drone_id_system_healthy | `bool` | | | | +| parachute_system_present | `bool` | | | | +| parachute_system_healthy | `bool` | | | | +| rc_calibration_in_progress | `bool` | | | | +| calibration_enabled | `bool` | | | | +| pre_flight_checks_pass | `bool` | | | true if all checks necessary to arm pass | + +## Constants + +| Назва | Тип | Значення | Опис | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ----------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 1 | | +| ARMING_STATE_DISARMED | `uint8` | 1 | | +| ARMING_STATE_ARMED | `uint8` | 2 | | +| ARM_DISARM_REASON_STICK_GESTURE | `uint8` | 1 | | +| ARM_DISARM_REASON_RC_SWITCH | `uint8` | 2 | | +| ARM_DISARM_REASON_COMMAND_INTERNAL | `uint8` | 3 | | +| ARM_DISARM_REASON_COMMAND_EXTERNAL | `uint8` | 4 | | +| ARM_DISARM_REASON_MISSION_START | `uint8` | 5 | | +| ARM_DISARM_REASON_LANDING | `uint8` | 6 | | +| ARM_DISARM_REASON_PREFLIGHT_INACTION | `uint8` | 7 | | +| ARM_DISARM_REASON_KILL_SWITCH | `uint8` | 8 | | +| ARM_DISARM_REASON_RC_BUTTON | `uint8` | 13 | | +| ARM_DISARM_REASON_FAILSAFE | `uint8` | 14 | | +| NAVIGATION_STATE_MANUAL | `uint8` | 0 | Manual mode | +| NAVIGATION_STATE_ALTCTL | `uint8` | 1 | Altitude control mode | +| NAVIGATION_STATE_POSCTL | `uint8` | 2 | Position control mode | +| NAVIGATION_STATE_AUTO_MISSION | `uint8` | 3 | Auto mission mode | +| NAVIGATION_STATE_AUTO_LOITER | `uint8` | 4 | Auto loiter mode | +| NAVIGATION_STATE_AUTO_RTL | `uint8` | 5 | Auto return to launch mode | +| NAVIGATION_STATE_POSITION_SLOW | `uint8` | 6 | | +| NAVIGATION_STATE_FREE5 | `uint8` | 7 | | +| NAVIGATION_STATE_ALTITUDE_CRUISE | `uint8` | 8 | Altitude with Cruise mode | +| NAVIGATION_STATE_FREE3 | `uint8` | 9 | | +| NAVIGATION_STATE_ACRO | `uint8` | 10 | Acro mode | +| NAVIGATION_STATE_FREE2 | `uint8` | 11 | | +| NAVIGATION_STATE_DESCEND | `uint8` | 12 | Descend mode (no position control) | +| NAVIGATION_STATE_TERMINATION | `uint8` | 13 | Termination mode | +| NAVIGATION_STATE_OFFBOARD | `uint8` | 14 | | +| NAVIGATION_STATE_STAB | `uint8` | 15 | Stabilized mode | +| NAVIGATION_STATE_FREE1 | `uint8` | 16 | | +| NAVIGATION_STATE_AUTO_TAKEOFF | `uint8` | 17 | Takeoff | +| NAVIGATION_STATE_AUTO_LAND | `uint8` | 18 | Land | +| NAVIGATION_STATE_AUTO_FOLLOW_TARGET | `uint8` | 19 | Auto Follow | +| NAVIGATION_STATE_AUTO_PRECLAND | `uint8` | 20 | Precision land with landing target | +| NAVIGATION_STATE_ORBIT | `uint8` | 21 | Orbit in a circle | +| NAVIGATION_STATE_AUTO_VTOL_TAKEOFF | `uint8` | 22 | Takeoff, transition, establish loiter | +| NAVIGATION_STATE_EXTERNAL1 | `uint8` | 23 | | +| NAVIGATION_STATE_EXTERNAL2 | `uint8` | 24 | | +| NAVIGATION_STATE_EXTERNAL3 | `uint8` | 25 | | +| NAVIGATION_STATE_EXTERNAL4 | `uint8` | 26 | | +| NAVIGATION_STATE_EXTERNAL5 | `uint8` | 27 | | +| NAVIGATION_STATE_EXTERNAL6 | `uint8` | 28 | | +| NAVIGATION_STATE_EXTERNAL7 | `uint8` | 29 | | +| NAVIGATION_STATE_EXTERNAL8 | `uint8` | 30 | | +| NAVIGATION_STATE_MAX | `uint8` | 31 | | +| FAILURE_NONE | `uint16` | 0 | | +| FAILURE_ROLL | `uint16` | 1 | (1 << 0) | +| FAILURE_PITCH | `uint16` | 2 | (1 << 1) | +| FAILURE_ALT | `uint16` | 4 | (1 << 2) | +| FAILURE_EXT | `uint16` | 8 | (1 << 3) | +| FAILURE_ARM_ESC | `uint16` | 16 | (1 << 4) | +| FAILURE_BATTERY | `uint16` | 32 | (1 << 5) | +| FAILURE_IMBALANCED_PROP | `uint16` | 64 | (1 << 6) | +| FAILURE_MOTOR | `uint16` | 128 | (1 << 7) | +| HIL_STATE_OFF | `uint8` | 0 | | +| HIL_STATE_ON | `uint8` | 1 | | +| VEHICLE_TYPE_UNSPECIFIED | `uint8` | 0 | | +| VEHICLE_TYPE_ROTARY_WING | `uint8` | 1 | | +| VEHICLE_TYPE_FIXED_WING | `uint8` | 2 | | +| VEHICLE_TYPE_ROVER | `uint8` | 3 | | +| FAILSAFE_DEFER_STATE_DISABLED | `uint8` | 0 | | +| FAILSAFE_DEFER_STATE_ENABLED | `uint8` | 1 | | +| FAILSAFE_DEFER_STATE_WOULD_FAILSAFE | `uint8` | 2 | Failsafes deferred, but would trigger a failsafe | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleStatus.msg) + +:::details +Click here to see original file ```c # Encodes the system state of the vehicle published by commander @@ -137,5 +260,6 @@ bool rc_calibration_in_progress bool calibration_enabled bool pre_flight_checks_pass # true if all checks necessary to arm pass - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleStatusV0.md b/docs/uk/msg_docs/VehicleStatusV0.md index a72e788eb5..e155e098f5 100644 --- a/docs/uk/msg_docs/VehicleStatusV0.md +++ b/docs/uk/msg_docs/VehicleStatusV0.md @@ -1,8 +1,138 @@ +--- +pageClass: is-wide-page +--- + # VehicleStatusV0 (UORB message) -Кодує стан системи транспортного засобу, опублікований командиром +Encodes the system state of the vehicle published by commander. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleStatusV0.msg) +**TOPICS:** vehicle_statusv0 + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| armed_time | `uint64` | | | Arming timestamp (microseconds) | +| takeoff_time | `uint64` | | | Takeoff timestamp (microseconds) | +| arming_state | `uint8` | | | | +| latest_arming_reason | `uint8` | | | | +| latest_disarming_reason | `uint8` | | | | +| nav_state_timestamp | `uint64` | | | time when current nav_state activated | +| nav_state_user_intention | `uint8` | | | Mode that the user selected (might be different from nav_state in a failsafe situation) | +| nav_state | `uint8` | | | Currently active mode | +| executor_in_charge | `uint8` | | | Current mode executor in charge (0=Autopilot) | +| valid_nav_states_mask | `uint32` | | | Bitmask for all valid nav_state values | +| can_set_nav_states_mask | `uint32` | | | Bitmask for all modes that a user can select | +| failure_detector_status | `uint16` | | | | +| hil_state | `uint8` | | | | +| vehicle_type | `uint8` | | | | +| failsafe | `bool` | | | true if system is in failsafe state (e.g.:RTL, Hover, Terminate, ...) | +| failsafe_and_user_took_over | `bool` | | | true if system is in failsafe state but the user took over control | +| failsafe_defer_state | `uint8` | | | one of FAILSAFE_DEFER_STATE_\* | +| gcs_connection_lost | `bool` | | | datalink to GCS lost | +| gcs_connection_lost_counter | `uint8` | | | counts unique GCS connection lost events | +| high_latency_data_link_lost | `bool` | | | Set to true if the high latency data link (eg. RockBlock Iridium 9603 telemetry module) is lost | +| is_vtol | `bool` | | | True if the system is VTOL capable | +| is_vtol_tailsitter | `bool` | | | True if the system performs a 90° pitch down rotation during transition from MC to FW | +| in_transition_mode | `bool` | | | True if VTOL is doing a transition | +| in_transition_to_fw | `bool` | | | True if VTOL is doing a transition from MC to FW | +| system_type | `uint8` | | | system type, contains mavlink MAV_TYPE | +| system_id | `uint8` | | | system id, contains MAVLink's system ID field | +| component_id | `uint8` | | | subsystem / component id, contains MAVLink's component ID field | +| safety_button_available | `bool` | | | Set to true if a safety button is connected | +| safety_off | `bool` | | | Set to true if safety is off | +| power_input_valid | `bool` | | | set if input power is valid | +| usb_connected | `bool` | | | set to true (never cleared) once telemetry received from usb link | +| open_drone_id_system_present | `bool` | | | | +| open_drone_id_system_healthy | `bool` | | | | +| parachute_system_present | `bool` | | | | +| parachute_system_healthy | `bool` | | | | +| avoidance_system_required | `bool` | | | Set to true if avoidance system is enabled via COM_OBS_AVOID parameter | +| avoidance_system_valid | `bool` | | | Status of the obstacle avoidance system | +| rc_calibration_in_progress | `bool` | | | | +| calibration_enabled | `bool` | | | | +| pre_flight_checks_pass | `bool` | | | true if all checks necessary to arm pass | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ----------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ARMING_STATE_DISARMED | `uint8` | 1 | | +| ARMING_STATE_ARMED | `uint8` | 2 | | +| ARM_DISARM_REASON_TRANSITION_TO_STANDBY | `uint8` | 0 | | +| ARM_DISARM_REASON_STICK_GESTURE | `uint8` | 1 | | +| ARM_DISARM_REASON_RC_SWITCH | `uint8` | 2 | | +| ARM_DISARM_REASON_COMMAND_INTERNAL | `uint8` | 3 | | +| ARM_DISARM_REASON_COMMAND_EXTERNAL | `uint8` | 4 | | +| ARM_DISARM_REASON_MISSION_START | `uint8` | 5 | | +| ARM_DISARM_REASON_SAFETY_BUTTON | `uint8` | 6 | | +| ARM_DISARM_REASON_AUTO_DISARM_LAND | `uint8` | 7 | | +| ARM_DISARM_REASON_AUTO_DISARM_PREFLIGHT | `uint8` | 8 | | +| ARM_DISARM_REASON_KILL_SWITCH | `uint8` | 9 | | +| ARM_DISARM_REASON_LOCKDOWN | `uint8` | 10 | | +| ARM_DISARM_REASON_FAILURE_DETECTOR | `uint8` | 11 | | +| ARM_DISARM_REASON_SHUTDOWN | `uint8` | 12 | | +| ARM_DISARM_REASON_UNIT_TEST | `uint8` | 13 | | +| NAVIGATION_STATE_MANUAL | `uint8` | 0 | Manual mode | +| NAVIGATION_STATE_ALTCTL | `uint8` | 1 | Altitude control mode | +| NAVIGATION_STATE_POSCTL | `uint8` | 2 | Position control mode | +| NAVIGATION_STATE_AUTO_MISSION | `uint8` | 3 | Auto mission mode | +| NAVIGATION_STATE_AUTO_LOITER | `uint8` | 4 | Auto loiter mode | +| NAVIGATION_STATE_AUTO_RTL | `uint8` | 5 | Auto return to launch mode | +| NAVIGATION_STATE_POSITION_SLOW | `uint8` | 6 | | +| NAVIGATION_STATE_FREE5 | `uint8` | 7 | | +| NAVIGATION_STATE_FREE4 | `uint8` | 8 | | +| NAVIGATION_STATE_FREE3 | `uint8` | 9 | | +| NAVIGATION_STATE_ACRO | `uint8` | 10 | Acro mode | +| NAVIGATION_STATE_FREE2 | `uint8` | 11 | | +| NAVIGATION_STATE_DESCEND | `uint8` | 12 | Descend mode (no position control) | +| NAVIGATION_STATE_TERMINATION | `uint8` | 13 | Termination mode | +| NAVIGATION_STATE_OFFBOARD | `uint8` | 14 | | +| NAVIGATION_STATE_STAB | `uint8` | 15 | Stabilized mode | +| NAVIGATION_STATE_FREE1 | `uint8` | 16 | | +| NAVIGATION_STATE_AUTO_TAKEOFF | `uint8` | 17 | Takeoff | +| NAVIGATION_STATE_AUTO_LAND | `uint8` | 18 | Land | +| NAVIGATION_STATE_AUTO_FOLLOW_TARGET | `uint8` | 19 | Auto Follow | +| NAVIGATION_STATE_AUTO_PRECLAND | `uint8` | 20 | Precision land with landing target | +| NAVIGATION_STATE_ORBIT | `uint8` | 21 | Orbit in a circle | +| NAVIGATION_STATE_AUTO_VTOL_TAKEOFF | `uint8` | 22 | Takeoff, transition, establish loiter | +| NAVIGATION_STATE_EXTERNAL1 | `uint8` | 23 | | +| NAVIGATION_STATE_EXTERNAL2 | `uint8` | 24 | | +| NAVIGATION_STATE_EXTERNAL3 | `uint8` | 25 | | +| NAVIGATION_STATE_EXTERNAL4 | `uint8` | 26 | | +| NAVIGATION_STATE_EXTERNAL5 | `uint8` | 27 | | +| NAVIGATION_STATE_EXTERNAL6 | `uint8` | 28 | | +| NAVIGATION_STATE_EXTERNAL7 | `uint8` | 29 | | +| NAVIGATION_STATE_EXTERNAL8 | `uint8` | 30 | | +| NAVIGATION_STATE_MAX | `uint8` | 31 | | +| FAILURE_NONE | `uint16` | 0 | | +| FAILURE_ROLL | `uint16` | 1 | (1 << 0) | +| FAILURE_PITCH | `uint16` | 2 | (1 << 1) | +| FAILURE_ALT | `uint16` | 4 | (1 << 2) | +| FAILURE_EXT | `uint16` | 8 | (1 << 3) | +| FAILURE_ARM_ESC | `uint16` | 16 | (1 << 4) | +| FAILURE_BATTERY | `uint16` | 32 | (1 << 5) | +| FAILURE_IMBALANCED_PROP | `uint16` | 64 | (1 << 6) | +| FAILURE_MOTOR | `uint16` | 128 | (1 << 7) | +| HIL_STATE_OFF | `uint8` | 0 | | +| HIL_STATE_ON | `uint8` | 1 | | +| VEHICLE_TYPE_UNKNOWN | `uint8` | 0 | | +| VEHICLE_TYPE_ROTARY_WING | `uint8` | 1 | | +| VEHICLE_TYPE_FIXED_WING | `uint8` | 2 | | +| VEHICLE_TYPE_ROVER | `uint8` | 3 | | +| VEHICLE_TYPE_AIRSHIP | `uint8` | 4 | | +| FAILSAFE_DEFER_STATE_DISABLED | `uint8` | 0 | | +| FAILSAFE_DEFER_STATE_ENABLED | `uint8` | 1 | | +| FAILSAFE_DEFER_STATE_WOULD_FAILSAFE | `uint8` | 2 | Failsafes deferred, but would trigger a failsafe | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleStatusV0.msg) + +:::details +Click here to see original file ```c # Encodes the system state of the vehicle published by commander @@ -145,5 +275,6 @@ bool rc_calibration_in_progress bool calibration_enabled bool pre_flight_checks_pass # true if all checks necessary to arm pass - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleThrustSetpoint.md b/docs/uk/msg_docs/VehicleThrustSetpoint.md index 6b04fc1d95..09c5a131d0 100644 --- a/docs/uk/msg_docs/VehicleThrustSetpoint.md +++ b/docs/uk/msg_docs/VehicleThrustSetpoint.md @@ -1,9 +1,27 @@ +--- +pageClass: is-wide-page +--- + # VehicleThrustSetpoint (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleThrustSetpoint.msg) +**TOPICS:** vehicle_thrust_setpoint vehicle_thrust_setpoint_virtual_fw vehicle_thrust_setpoint_virtual_mc + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | timestamp of the data sample on which this message is based (microseconds) | +| xyz | `float32[3]` | | | thrust setpoint along X, Y, Z body axis [-1, 1] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleThrustSetpoint.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint64 timestamp_sample # timestamp of the data sample on which this message is based (microseconds) @@ -11,5 +29,6 @@ float32[3] xyz # thrust setpoint along X, Y, Z body axis [-1, 1] # TOPICS vehicle_thrust_setpoint # TOPICS vehicle_thrust_setpoint_virtual_fw vehicle_thrust_setpoint_virtual_mc - ``` + +::: diff --git a/docs/uk/msg_docs/VehicleTorqueSetpoint.md b/docs/uk/msg_docs/VehicleTorqueSetpoint.md index 8f8f66b7bc..566ce3a841 100644 --- a/docs/uk/msg_docs/VehicleTorqueSetpoint.md +++ b/docs/uk/msg_docs/VehicleTorqueSetpoint.md @@ -1,9 +1,27 @@ +--- +pageClass: is-wide-page +--- + # VehicleTorqueSetpoint (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleTorqueSetpoint.msg) +**TOPICS:** vehicle_torque_setpoint vehicle_torque_setpoint_virtual_fw vehicle_torque_setpoint_virtual_mc + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | timestamp of the data sample on which this message is based (microseconds) | +| xyz | `float32[3]` | | | torque setpoint about X, Y, Z body axis (normalized) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleTorqueSetpoint.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint64 timestamp_sample # timestamp of the data sample on which this message is based (microseconds) @@ -11,5 +29,6 @@ float32[3] xyz # torque setpoint about X, Y, Z body axis (normalized) # TOPICS vehicle_torque_setpoint # TOPICS vehicle_torque_setpoint_virtual_fw vehicle_torque_setpoint_virtual_mc - ``` + +::: diff --git a/docs/uk/msg_docs/VelocityLimits.md b/docs/uk/msg_docs/VelocityLimits.md index 5d9bfab8f8..11f15011f2 100644 --- a/docs/uk/msg_docs/VelocityLimits.md +++ b/docs/uk/msg_docs/VelocityLimits.md @@ -1,8 +1,28 @@ +--- +pageClass: is-wide-page +--- + # VelocityLimits (повідомлення UORB) -Обмеження швидкості та кутової швидкості для мультикоптера лише в режимі повільного переміщення позиції +Velocity and yaw rate limits for a multicopter position slow mode only. -[вихідний файл](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VelocityLimits.msg) +**TOPICS:** velocity_limits + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| horizontal_velocity | `float32` | m/s | | | +| vertical_velocity | `float32` | m/s | | | +| yaw_rate | `float32` | rad/s | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VelocityLimits.msg) + +:::details +Click here to see original file ```c # Velocity and yaw rate limits for a multicopter position slow mode only @@ -13,5 +33,6 @@ uint64 timestamp # time since system start (microseconds) float32 horizontal_velocity # [m/s] float32 vertical_velocity # [m/s] float32 yaw_rate # [rad/s] - ``` + +::: diff --git a/docs/uk/msg_docs/VtolVehicleStatus.md b/docs/uk/msg_docs/VtolVehicleStatus.md index 5b7ee37ae9..ced3fee553 100644 --- a/docs/uk/msg_docs/VtolVehicleStatus.md +++ b/docs/uk/msg_docs/VtolVehicleStatus.md @@ -1,8 +1,38 @@ +--- +pageClass: is-wide-page +--- + # VtolVehicleStatus (повідомлення UORB) -VEHICLE_VTOL_STATE, повинен відповідати 1:1 MAVLinks_VTOL_STATE +VEHICLE_VTOL_STATE, should match 1:1 MAVLinks's MAV_VTOL_STATE. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VtolVehicleStatus.msg) +**TOPICS:** vtol_vehiclestatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ---------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| vehicle_vtol_state | `uint8` | | | current state of the vtol, see VEHICLE_VTOL_STATE | +| fixed_wing_system_failure | `bool` | | | vehicle in fixed-wing system failure failsafe mode (after quad-chute) | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | +| VEHICLE_VTOL_STATE_UNDEFINED | `uint8` | 0 | | +| VEHICLE_VTOL_STATE_TRANSITION_TO_FW | `uint8` | 1 | | +| VEHICLE_VTOL_STATE_TRANSITION_TO_MC | `uint8` | 2 | | +| VEHICLE_VTOL_STATE_MC | `uint8` | 3 | | +| VEHICLE_VTOL_STATE_FW | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VtolVehicleStatus.msg) + +:::details +Click here to see original file ```c # VEHICLE_VTOL_STATE, should match 1:1 MAVLinks's MAV_VTOL_STATE @@ -20,5 +50,6 @@ uint64 timestamp # time since system start (microseconds) uint8 vehicle_vtol_state # current state of the vtol, see VEHICLE_VTOL_STATE bool fixed_wing_system_failure # vehicle in fixed-wing system failure failsafe mode (after quad-chute) - ``` + +::: diff --git a/docs/uk/msg_docs/Vtx.md b/docs/uk/msg_docs/Vtx.md new file mode 100644 index 0000000000..2668dd7a27 --- /dev/null +++ b/docs/uk/msg_docs/Vtx.md @@ -0,0 +1,84 @@ +--- +pageClass: is-wide-page +--- + +# Vtx (UORB message) + +**TOPICS:** vtx + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| protocol | `uint8` | | | | +| device | `uint8` | | | | +| mode | `uint8` | | | | +| band | `int8` | | | Band number (0-23), negative values indicate frequency mode | +| channel | `int8` | | | Channel number (0-15), negative values indicate frequency mode | +| frequency | `uint16` | | | Frequency in MHz, zero indicates unknown | +| band_letter | `uint8` | | | Band letter as ASCII | +| band_name | `uint8[12]` | | | Band name in ASCII without null termination | +| power_level | `int8` | | | Current power level (0-15), negative values indicate unknown | +| power_label | `uint8[4]` | | | Current power label in ASCII without null termination | + +## Constants + +| Назва | Тип | Значення | Опис | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ----------------------------------------- | +| BAND_NAME_LENGTH | `uint8` | 12 | | +| POWER_LABEL_LENGTH | `uint8` | 4 | | +| PROTOCOL_NONE | `uint8` | 0 | No protocol is detected, usually an error | +| PROTOCOL_SMART_AUDIO_V1 | `uint8` | 10 | | +| PROTOCOL_SMART_AUDIO_V2 | `uint8` | 20 | | +| PROTOCOL_SMART_AUDIO_V2_1 | `uint8` | 21 | | +| PROTOCOL_TRAMP | `uint8` | 100 | | +| DEVICE_UNKNOWN | `uint8` | 0 | | +| DEVICE_PEAK_THOR_T67 | `uint8` | 20 | | +| DEVICE_RUSH_MAX_SOLO | `uint8` | 40 | | +| MODE_NORMAL | `uint8` | 0 | | +| MODE_PIT | `uint8` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Vtx.msg) + +:::details +Click here to see original file + +```c +uint64 timestamp # time since system start (microseconds) + +uint8 BAND_NAME_LENGTH = 12 +uint8 POWER_LABEL_LENGTH = 4 + +uint8 PROTOCOL_NONE = 0 # No protocol is detected, usually an error +uint8 PROTOCOL_SMART_AUDIO_V1 = 10 +uint8 PROTOCOL_SMART_AUDIO_V2 = 20 +uint8 PROTOCOL_SMART_AUDIO_V2_1 = 21 +uint8 PROTOCOL_TRAMP = 100 +uint8 protocol + +uint8 DEVICE_UNKNOWN = 0 +uint8 DEVICE_PEAK_THOR_T67 = 20 +uint8 DEVICE_RUSH_MAX_SOLO = 40 +uint8 device + +uint8 MODE_NORMAL = 0 +uint8 MODE_PIT = 1 +uint8 mode + +# Band and Channel are 0-indexed! But the user expects a 1-indexed display! +int8 band # Band number (0-23), negative values indicate frequency mode +int8 channel # Channel number (0-15), negative values indicate frequency mode +uint16 frequency # Frequency in MHz, zero indicates unknown + +uint8 band_letter # Band letter as ASCII +uint8[12] band_name # Band name in ASCII without null termination + +# Also 0-indexed, but the user expects a 1-indexed display! +int8 power_level # Current power level (0-15), negative values indicate unknown +uint8[4] power_label # Current power label in ASCII without null termination +``` + +::: diff --git a/docs/uk/msg_docs/WheelEncoders.md b/docs/uk/msg_docs/WheelEncoders.md index 5a1264923d..099d65361b 100644 --- a/docs/uk/msg_docs/WheelEncoders.md +++ b/docs/uk/msg_docs/WheelEncoders.md @@ -1,6 +1,25 @@ +--- +pageClass: is-wide-page +--- + # WheelEncoders (UORB повідомлення) -[вихідний файл](https://github.com/PX4/PX4-Autopilot/blob/main/msg/WheelEncoders.msg) +**TOPICS:** wheel_encoders + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| wheel_speed | `float32[2]` | rad/s | | | +| wheel_angle | `float32[2]` | rad | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/WheelEncoders.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +27,6 @@ uint64 timestamp # time since system start (microseconds) # Two wheels: 0 right, 1 left float32[2] wheel_speed # [rad/s] float32[2] wheel_angle # [rad] - ``` + +::: diff --git a/docs/uk/msg_docs/Wind.md b/docs/uk/msg_docs/Wind.md index e16699ed1d..d2d542be9b 100644 --- a/docs/uk/msg_docs/Wind.md +++ b/docs/uk/msg_docs/Wind.md @@ -1,11 +1,43 @@ +--- +pageClass: is-wide-page +--- + # Wind (повідомлення UORB) -Wind estimate (from EKF2) +Wind estimate (from EKF2). Contains the system-wide estimate of horizontal wind velocity and its variance. Published by the navigation filter (EKF2) for use by other flight modules and libraries. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/Wind.msg) +**TOPICS:** wind estimator_wind + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| -------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp of the raw data | +| windspeed_north | `float32` | m/s | | Wind component in north / X direction | +| windspeed_east | `float32` | m/s | | Wind component in east / Y direction | +| variance_north | `float32` | (m/s)^2 | | Wind estimate error variance in north / X direction (Invalid: 0 if not estimated) | +| variance_east | `float32` | (m/s)^2 | | Wind estimate error variance in east / Y direction (Invalid: 0 if not estimated) | +| tas_innov | `float32` | m/s | | True airspeed innovation | +| tas_innov_var | `float32` | (m/s)^2 | | True airspeed innovation variance | +| beta_innov | `float32` | rad | | Sideslip measurement innovation | +| beta_innov_var | `float32` | rad^2 | | Sideslip measurement innovation variance | + +## Constants + +| Назва | Тип | Значення | Опис | +| -------------------------------------------------------------------- | -------- | -------- | ---- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/Wind.msg) + +:::details +Click here to see original file ```c # Wind estimate (from EKF2) @@ -31,5 +63,6 @@ float32 beta_innov # [rad] Sideslip measurement innovation float32 beta_innov_var # [rad^2] Sideslip measurement innovation variance # TOPICS wind estimator_wind - ``` + +::: diff --git a/docs/uk/msg_docs/YawEstimatorStatus.md b/docs/uk/msg_docs/YawEstimatorStatus.md index 555e58b6a7..f45e7c22b4 100644 --- a/docs/uk/msg_docs/YawEstimatorStatus.md +++ b/docs/uk/msg_docs/YawEstimatorStatus.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # YawEstimatorStatus (повідомлення UORB) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/YawEstimatorStatus.msg) +**TOPICS:** yaw_estimatorstatus + +## Fields + +| Назва | Тип | Unit [Frame] | Range/Enum | Опис | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| yaw_composite | `float32` | | | composite yaw from GSF (rad) | +| yaw_variance | `float32` | | | composite yaw variance from GSF (rad^2) | +| yaw_composite_valid | `bool` | | | | +| yaw | `float32[5]` | | | yaw estimate for each model in the filter bank (rad) | +| innov_vn | `float32[5]` | | | North velocity innovation for each model in the filter bank (m/s) | +| innov_ve | `float32[5]` | | | East velocity innovation for each model in the filter bank (m/s) | +| weight | `float32[5]` | | | weighting for each model in the filter bank | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/YawEstimatorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +39,6 @@ float32[5] yaw # yaw estimate for each model in the filter bank (rad) float32[5] innov_vn # North velocity innovation for each model in the filter bank (m/s) float32[5] innov_ve # East velocity innovation for each model in the filter bank (m/s) float32[5] weight # weighting for each model in the filter bank - ``` + +::: diff --git a/docs/uk/msg_docs/index.md b/docs/uk/msg_docs/index.md index 3bc682a23c..6ffa67c21e 100644 --- a/docs/uk/msg_docs/index.md +++ b/docs/uk/msg_docs/index.md @@ -13,90 +13,63 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m ## Versioned Messages -- [ActuatorMotors](ActuatorMotors.md) — Motor control message -- [ActuatorServos](ActuatorServos.md) — Servo control message -- [AirspeedValidated](AirspeedValidated.md) — Validated airspeed -- [ArmingCheckReply](ArmingCheckReply.md) — Arming check reply -- [ArmingCheckRequest](ArmingCheckRequest.md) — Arming check request -- [BatteryStatus](BatteryStatus.md) — Battery status -- [ConfigOverrides](ConfigOverrides.md) — Configurable overrides by (external) modes or mode executors -- [Event](Event.md) — Events interface -- [FixedWingLateralSetpoint](FixedWingLateralSetpoint.md) — Fixed Wing Lateral Setpoint message - Used by the fw_lateral_longitudinal_control module - At least one of course, airspeed_direction, or lateral_acceleration must be finite. -- [FixedWingLongitudinalSetpoint](FixedWingLongitudinalSetpoint.md) — Fixed Wing Longitudinal Setpoint message - Used by the fw_lateral_longitudinal_control module - If pitch_direct and throttle_direct are not both finite, then the controller relies on altitude/height_rate and equivalent_airspeed to control vertical motion. - If both altitude and height_rate are NAN, the controller maintains the current altitude. -- [GotoSetpoint](GotoSetpoint.md) — Position and (optional) heading setpoints with corresponding speed constraints - Setpoints are intended as inputs to position and heading smoothers, respectively - Setpoints do not need to be kinematically consistent - Optional heading setpoints may be specified as controlled by the respective flag - Unset optional setpoints are not controlled - Unset optional constraints default to vehicle specifications +- [ActuatorMotors](ActuatorMotors.md) — Motor control message. +- [ActuatorServos](ActuatorServos.md) — Servo control message. +- [AirspeedValidated](AirspeedValidated.md) — Validated airspeed. +- [ArmingCheckReply](ArmingCheckReply.md) — Arming check reply. +- [ArmingCheckRequest](ArmingCheckRequest.md) — Arming check request. +- [BatteryStatus](BatteryStatus.md) — Battery status. +- [ConfigOverrides](ConfigOverrides.md) — Configurable overrides by (external) modes or mode executors. +- [Event](Event.md) — Events interface. +- [FixedWingLateralSetpoint](FixedWingLateralSetpoint.md) — Fixed Wing Lateral Setpoint message. Used by the fw_lateral_longitudinal_control module. At least one of course, airspeed_direction, or lateral_acceleration must be finite. +- [FixedWingLongitudinalSetpoint](FixedWingLongitudinalSetpoint.md) — Fixed Wing Longitudinal Setpoint message. Used by the fw_lateral_longitudinal_control module. If pitch_direct and throttle_direct are not both finite, then the controller relies on altitude/height_rate and equivalent_airspeed to control vertical motion. If both altitude and height_rate are NAN, the controller maintains the current altitude. +- [GotoSetpoint](GotoSetpoint.md) — Position and (optional) heading setpoints with corresponding speed constraints. Setpoints are intended as inputs to position and heading smoothers, respectively. Setpoints do not need to be kinematically consistent. Optional heading setpoints may be specified as controlled by the respective flag. Unset optional setpoints are not controlled. Unset optional constraints default to vehicle specifications. - [HomePosition](HomePosition.md) — GPS home position in WGS84 coordinates. -- [LateralControlConfiguration](LateralControlConfiguration.md) — Fixed Wing Lateral Control Configuration message - Used by the fw_lateral_longitudinal_control module to constrain FixedWingLateralSetpoint messages. -- [LongitudinalControlConfiguration](LongitudinalControlConfiguration.md) — Fixed Wing Longitudinal Control Configuration message - Used by the fw_lateral_longitudinal_control module and TECS to constrain FixedWingLongitudinalSetpoint messages - and configure the resultant setpoints. +- [LateralControlConfiguration](LateralControlConfiguration.md) — Fixed Wing Lateral Control Configuration message. Used by the fw_lateral_longitudinal_control module to constrain FixedWingLateralSetpoint messages. +- [LongitudinalControlConfiguration](LongitudinalControlConfiguration.md) — Fixed Wing Longitudinal Control Configuration message. Used by the fw_lateral_longitudinal_control module and TECS to constrain FixedWingLongitudinalSetpoint messages. and configure the resultant setpoints. - [ManualControlSetpoint](ManualControlSetpoint.md) -- [ModeCompleted](ModeCompleted.md) — Mode completion result, published by an active mode. - Можливі значення nav_state визначені в повідомленні VehicleStatus. - Note that this is not always published (e.g. when a user switches modes or on - failsafe activation) +- [ModeCompleted](ModeCompleted.md) — Mode completion result, published by an active mode. Можливі значення nav_state визначені в повідомленні VehicleStatus. Note that this is not always published (e.g. when a user switches modes or on. failsafe activation). +- [RaptorInput](RaptorInput.md) — Raptor Input. +- [RaptorStatus](RaptorStatus.md) — Raptor Status. - [RegisterExtComponentReply](RegisterExtComponentReply.md) -- [RegisterExtComponentRequest](RegisterExtComponentRequest.md) — Request to register an external component -- [TrajectorySetpoint](TrajectorySetpoint.md) — Trajectory setpoint in NED frame - Input to PID position controller. - Потрібно мати кінематичну консистентність і бути можливим для плавного польоту. - встановлення значення NaN означає, що стан не повинен контролюватися +- [RegisterExtComponentRequest](RegisterExtComponentRequest.md) — Request to register an external component. +- [TrajectorySetpoint](TrajectorySetpoint.md) — Trajectory setpoint in NED frame. Input to PID position controller. Потрібно мати кінематичну консистентність і бути можливим для плавного польоту. setting a value to NaN means the state should not be controlled. - [UnregisterExtComponent](UnregisterExtComponent.md) - [VehicleAngularVelocity](VehicleAngularVelocity.md) -- [VehicleAttitude](VehicleAttitude.md) — This is similar to the mavlink message ATTITUDE_QUATERNION, but for onboard use - The quaternion uses the Hamilton convention, and the order is q(w, x, y, z) +- [VehicleAttitude](VehicleAttitude.md) — This is similar to the mavlink message ATTITUDE_QUATERNION, but for onboard use. The quaternion uses the Hamilton convention, and the order is q(w, x, y, z). - [VehicleAttitudeSetpoint](VehicleAttitudeSetpoint.md) -- [VehicleCommand](VehicleCommand.md) — Vehicle Command uORB message. Used for commanding a mission / action / etc. - Follows the MAVLink COMMAND_INT / COMMAND_LONG definition -- [VehicleCommandAck](VehicleCommandAck.md) — Vehicle Command Ackonwledgement uORB message. - Used for acknowledging the vehicle command being received. - Follows the MAVLink COMMAND_ACK message definition +- [VehicleCommand](VehicleCommand.md) — Vehicle Command uORB message. Використовується для управління місією / дією / тощо. Follows the MAVLink COMMAND_INT / COMMAND_LONG definition. +- [VehicleCommandAck](VehicleCommandAck.md) — Vehicle Command Ackonwledgement uORB message. Used for acknowledging the vehicle command being received. Follows the MAVLink COMMAND_ACK message definition. - [VehicleControlMode](VehicleControlMode.md) -- [VehicleGlobalPosition](VehicleGlobalPosition.md) — Fused global position in WGS84. - This struct contains global position estimation. It is not the raw GPS - measurement (@see vehicle_gps_position). This topic is usually published by the position - estimator, which will take more sources of information into account than just GPS, - e.g. control inputs of the vehicle in a Kalman-filter implementation. +- [VehicleGlobalPosition](VehicleGlobalPosition.md) — Fused global position in WGS84. This struct contains global position estimation. It is not the raw GPS. measurement (@see vehicle_gps_position). This topic is usually published by the position. estimator, which will take more sources of information into account than just GPS,. e.g. control inputs of the vehicle in a Kalman-filter implementation. - [VehicleLandDetected](VehicleLandDetected.md) -- [VehicleLocalPosition](VehicleLocalPosition.md) — Fused local position in NED. - The coordinate system origin is the vehicle position at the time when the EKF2-module was started. -- [VehicleOdometry](VehicleOdometry.md) — Vehicle odometry data +- [VehicleLocalPosition](VehicleLocalPosition.md) — Fused local position in NED. The coordinate system origin is the vehicle position at the time when the EKF2-module was started. +- [VehicleOdometry](VehicleOdometry.md) — Vehicle odometry data. - [VehicleRatesSetpoint](VehicleRatesSetpoint.md) -- [VehicleStatus](VehicleStatus.md) — Encodes the system state of the vehicle published by commander -- [VtolVehicleStatus](VtolVehicleStatus.md) — VEHICLE_VTOL_STATE, should match 1:1 MAVLinks's MAV_VTOL_STATE -- [Wind](Wind.md) — Wind estimate (from EKF2) +- [VehicleStatus](VehicleStatus.md) — Encodes the system state of the vehicle published by commander. +- [VtolVehicleStatus](VtolVehicleStatus.md) — VEHICLE_VTOL_STATE, should match 1:1 MAVLinks's MAV_VTOL_STATE. +- [Wind](Wind.md) — Wind estimate (from EKF2). ## Unversioned Messages -- [ActionRequest](ActionRequest.md) — Action request for the vehicle's main state +- [ActionRequest](ActionRequest.md) — Action request for the vehicle's main state. - [ActuatorArmed](ActuatorArmed.md) - [ActuatorControlsStatus](ActuatorControlsStatus.md) - [ActuatorOutputs](ActuatorOutputs.md) -- [ActuatorServosTrim](ActuatorServosTrim.md) — Servo trims, added as offset to servo outputs +- [ActuatorServosTrim](ActuatorServosTrim.md) — Servo trims, added as offset to servo outputs. - [ActuatorTest](ActuatorTest.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 -- [BatteryInfo](BatteryInfo.md) — Battery information +- [Airspeed](Airspeed.md) — Airspeed data from sensors. +- [AirspeedWind](AirspeedWind.md) — Wind estimate (from airspeed_selector). +- [AutotuneAttitudeControlStatus](AutotuneAttitudeControlStatus.md) — Autotune attitude control status. +- [BatteryInfo](BatteryInfo.md) — Battery information. - [ButtonEvent](ButtonEvent.md) - [CameraCapture](CameraCapture.md) - [CameraStatus](CameraStatus.md) - [CameraTrigger](CameraTrigger.md) - [CanInterfaceStatus](CanInterfaceStatus.md) -- [CellularStatus](CellularStatus.md) — Cellular status -- [CollisionConstraints](CollisionConstraints.md) — Local setpoint constraints in NED frame - setting something to NaN means that no limit is provided +- [CellularStatus](CellularStatus.md) — Cellular status. +- [CollisionConstraints](CollisionConstraints.md) — Local setpoint constraints in NED frame. setting something to NaN means that no limit is provided. - [ControlAllocatorStatus](ControlAllocatorStatus.md) - [Cpuload](Cpuload.md) - [DatamanRequest](DatamanRequest.md) @@ -105,13 +78,12 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [DebugKeyValue](DebugKeyValue.md) - [DebugValue](DebugValue.md) - [DebugVect](DebugVect.md) -- [DeviceInformation](DeviceInformation.md) — Device information -- [DifferentialPressure](DifferentialPressure.md) — Differential-pressure (airspeed) sensor -- [DistanceSensor](DistanceSensor.md) — DISTANCE_SENSOR message data +- [DeviceInformation](DeviceInformation.md) — Device information. +- [DifferentialPressure](DifferentialPressure.md) — Differential-pressure (airspeed) sensor. +- [DistanceSensor](DistanceSensor.md) — DISTANCE_SENSOR message data. - [DistanceSensorModeChangeRequest](DistanceSensorModeChangeRequest.md) - [DronecanNodeStatus](DronecanNodeStatus.md) -- [Ekf2Timestamps](Ekf2Timestamps.md) — this message contains the (relative) timestamps of the sensor inputs used by EKF2. - Це може бути використано для відтворення. +- [Ekf2Timestamps](Ekf2Timestamps.md) — this message contains the (relative) timestamps of the sensor inputs used by EKF2. Це може бути використано для відтворення. - [EscReport](EscReport.md) - [EscStatus](EscStatus.md) - [EstimatorAidSource1d](EstimatorAidSource1d.md) @@ -123,19 +95,16 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [EstimatorGpsStatus](EstimatorGpsStatus.md) - [EstimatorInnovations](EstimatorInnovations.md) - [EstimatorSelectorStatus](EstimatorSelectorStatus.md) -- [EstimatorSensorBias](EstimatorSensorBias.md) — Sensor readings and in-run biases in SI-unit form. Sensor readings are compensated for static offsets, - scale errors, in-run bias and thermal drift (if thermal compensation is enabled and available). +- [EstimatorSensorBias](EstimatorSensorBias.md) — Sensor readings and in-run biases in SI-unit form. Sensor readings are compensated for static offsets,. scale errors, in-run bias and thermal drift (if thermal compensation is enabled and available). - [EstimatorStates](EstimatorStates.md) - [EstimatorStatus](EstimatorStatus.md) - [EstimatorStatusFlags](EstimatorStatusFlags.md) - [FailsafeFlags](FailsafeFlags.md) — Input flags for the failsafe state machine set by the arming & health checks. - [FailureDetectorStatus](FailureDetectorStatus.md) - [FigureEightStatus](FigureEightStatus.md) -- [FixedWingLateralGuidanceStatus](FixedWingLateralGuidanceStatus.md) — Fixed Wing Lateral Guidance Status message - Published by fw_pos_control module to report the resultant lateral setpoints and NPFG debug outputs -- [FixedWingLateralStatus](FixedWingLateralStatus.md) — Fixed Wing Lateral Status message - Published by the fw_lateral_longitudinal_control module to report the resultant lateral setpoint -- [FixedWingRunwayControl](FixedWingRunwayControl.md) — Auxiliary control fields for fixed-wing runway takeoff/landing +- [FixedWingLateralGuidanceStatus](FixedWingLateralGuidanceStatus.md) — Fixed Wing Lateral Guidance Status message. Published by fw_pos_control module to report the resultant lateral setpoints and NPFG debug outputs. +- [FixedWingLateralStatus](FixedWingLateralStatus.md) — Fixed Wing Lateral Status message. Published by the fw_lateral_longitudinal_control module to report the resultant lateral setpoint. +- [FixedWingRunwayControl](FixedWingRunwayControl.md) — Auxiliary control fields for fixed-wing runway takeoff/landing. - [FlightPhaseEstimation](FlightPhaseEstimation.md) - [FollowTarget](FollowTarget.md) - [FollowTargetEstimator](FollowTargetEstimator.md) @@ -153,13 +122,13 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [GimbalManagerSetAttitude](GimbalManagerSetAttitude.md) - [GimbalManagerSetManualControl](GimbalManagerSetManualControl.md) - [GimbalManagerStatus](GimbalManagerStatus.md) -- [GpioConfig](GpioConfig.md) — GPIO configuration -- [GpioIn](GpioIn.md) — GPIO mask and state -- [GpioOut](GpioOut.md) — GPIO mask and state -- [GpioRequest](GpioRequest.md) — Request GPIO mask to be read +- [GpioConfig](GpioConfig.md) — GPIO configuration. +- [GpioIn](GpioIn.md) — GPIO mask and state. +- [GpioOut](GpioOut.md) — GPIO mask and state. +- [GpioRequest](GpioRequest.md) — Request GPIO mask to be read. - [GpsDump](GpsDump.md) — This message is used to dump the raw gps communication to the log. - [GpsInjectData](GpsInjectData.md) -- [Gripper](Gripper.md) — # Used to command an actuation in the gripper, which is mapped to a specific output in the control allocation module +- [Gripper](Gripper.md) — # Used to command an actuation in the gripper, which is mapped to a specific output in the control allocation module. - [HealthReport](HealthReport.md) - [HeaterStatus](HeaterStatus.md) - [HoverThrustEstimate](HoverThrustEstimate.md) @@ -167,34 +136,32 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [InternalCombustionEngineControl](InternalCombustionEngineControl.md) - [InternalCombustionEngineStatus](InternalCombustionEngineStatus.md) - [IridiumsbdStatus](IridiumsbdStatus.md) -- [IrlockReport](IrlockReport.md) — IRLOCK_REPORT message data +- [IrlockReport](IrlockReport.md) — IRLOCK_REPORT message data. - [LandingGear](LandingGear.md) - [LandingGearWheel](LandingGearWheel.md) - [LandingTargetInnovations](LandingTargetInnovations.md) -- [LandingTargetPose](LandingTargetPose.md) — Relative position of precision land target in navigation (body fixed, north aligned, NED) and inertial (world fixed, north aligned, NED) frames -- [LaunchDetectionStatus](LaunchDetectionStatus.md) — Status of the launch detection state machine (fixed-wing only) -- [LedControl](LedControl.md) — LED control: control a single or multiple LED's. - Це зовнішні світлодіоди, а не світлодіоди плати -- [LogMessage](LogMessage.md) — A logging message, output with PX4_WARN, PX4_ERR, PX4_INFO +- [LandingTargetPose](LandingTargetPose.md) — Relative position of precision land target in navigation (body fixed, north aligned, NED) and inertial (world fixed, north aligned, NED) frames. +- [LaunchDetectionStatus](LaunchDetectionStatus.md) — Status of the launch detection state machine (fixed-wing only). +- [LedControl](LedControl.md) — LED control: control a single or multiple LED's. These are the externally visible LED's, not the board LED's. +- [LogMessage](LogMessage.md) — A logging message, output with PX4_WARN, PX4_ERR, PX4_INFO. - [LoggerStatus](LoggerStatus.md) - [MagWorkerData](MagWorkerData.md) - [MagnetometerBiasEstimate](MagnetometerBiasEstimate.md) - [ManualControlSwitches](ManualControlSwitches.md) - [MavlinkLog](MavlinkLog.md) -- [MavlinkTunnel](MavlinkTunnel.md) — MAV_TUNNEL_PAYLOAD_TYPE enum +- [MavlinkTunnel](MavlinkTunnel.md) — MAV_TUNNEL_PAYLOAD_TYPE enum. - [MessageFormatRequest](MessageFormatRequest.md) - [MessageFormatResponse](MessageFormatResponse.md) - [Mission](Mission.md) - [MissionResult](MissionResult.md) - [MountOrientation](MountOrientation.md) - [NavigatorMissionItem](NavigatorMissionItem.md) -- [NavigatorStatus](NavigatorStatus.md) — Current status of a Navigator mode - The possible values of nav_state are defined in the VehicleStatus msg. -- [NeuralControl](NeuralControl.md) — Neural control +- [NavigatorStatus](NavigatorStatus.md) — Current status of a Navigator mode. Можливі значення nav_state визначені в повідомленні VehicleStatus. +- [NeuralControl](NeuralControl.md) — Neural control. - [NormalizedUnsignedSetpoint](NormalizedUnsignedSetpoint.md) - [ObstacleDistance](ObstacleDistance.md) — Obstacle distances in front of the sensor. -- [OffboardControlMode](OffboardControlMode.md) — Off-board control mode -- [OnboardComputerStatus](OnboardComputerStatus.md) — ONBOARD_COMPUTER_STATUS message data +- [OffboardControlMode](OffboardControlMode.md) — Off-board control mode. +- [OnboardComputerStatus](OnboardComputerStatus.md) — ONBOARD_COMPUTER_STATUS message data. - [OpenDroneIdArmStatus](OpenDroneIdArmStatus.md) - [OpenDroneIdOperatorId](OpenDroneIdOperatorId.md) - [OpenDroneIdSelfId](OpenDroneIdSelfId.md) @@ -202,22 +169,21 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [OrbTest](OrbTest.md) - [OrbTestLarge](OrbTestLarge.md) - [OrbTestMedium](OrbTestMedium.md) -- [OrbitStatus](OrbitStatus.md) — ORBIT_YAW_BEHAVIOUR -- [ParameterResetRequest](ParameterResetRequest.md) — ParameterResetRequest : Used by the primary to reset one or all parameter value(s) on the remote -- [ParameterSetUsedRequest](ParameterSetUsedRequest.md) — ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary -- [ParameterSetValueRequest](ParameterSetValueRequest.md) — ParameterSetValueRequest : Used by a remote or primary to update the value for a parameter at the other end -- [ParameterSetValueResponse](ParameterSetValueResponse.md) — ParameterSetValueResponse : Response to a set value request by either primary or secondary -- [ParameterUpdate](ParameterUpdate.md) — This message is used to notify the system about one or more parameter changes +- [OrbitStatus](OrbitStatus.md) — ORBIT_YAW_BEHAVIOUR. +- [ParameterResetRequest](ParameterResetRequest.md) — ParameterResetRequest : Used by the primary to reset one or all parameter value(s) on the remote. +- [ParameterSetUsedRequest](ParameterSetUsedRequest.md) — ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary. +- [ParameterSetValueRequest](ParameterSetValueRequest.md) — ParameterSetValueRequest : Used by a remote or primary to update the value for a parameter at the other end. +- [ParameterSetValueResponse](ParameterSetValueResponse.md) — ParameterSetValueResponse : Response to a set value request by either primary or secondary. +- [ParameterUpdate](ParameterUpdate.md) — This message is used to notify the system about one or more parameter changes. - [Ping](Ping.md) - [PositionControllerLandingStatus](PositionControllerLandingStatus.md) - [PositionControllerStatus](PositionControllerStatus.md) -- [PositionSetpoint](PositionSetpoint.md) — this file is only used in the position_setpoint triple as a dependency -- [PositionSetpointTriplet](PositionSetpointTriplet.md) — Global position setpoint triplet in WGS84 coordinates. - Ось наступні три способи вказівань (або просто наступні два або один). -- [PowerButtonState](PowerButtonState.md) — power button state notification message -- [PowerMonitor](PowerMonitor.md) — power monitor message +- [PositionSetpoint](PositionSetpoint.md) — this file is only used in the position_setpoint triple as a dependency. +- [PositionSetpointTriplet](PositionSetpointTriplet.md) — Global position setpoint triplet in WGS84 coordinates. Ось наступні три способи вказівань (або просто наступні два або один). +- [PowerButtonState](PowerButtonState.md) — power button state notification message. +- [PowerMonitor](PowerMonitor.md) — power monitor message. - [PpsCapture](PpsCapture.md) -- [PurePursuitStatus](PurePursuitStatus.md) — Pure pursuit status +- [PurePursuitStatus](PurePursuitStatus.md) — Pure pursuit status. - [PwmInput](PwmInput.md) - [Px4ioStatus](Px4ioStatus.md) - [QshellReq](QshellReq.md) @@ -226,15 +192,15 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [RateCtrlStatus](RateCtrlStatus.md) - [RcChannels](RcChannels.md) - [RcParameterMap](RcParameterMap.md) -- [RoverAttitudeSetpoint](RoverAttitudeSetpoint.md) — Rover Attitude Setpoint -- [RoverAttitudeStatus](RoverAttitudeStatus.md) — Rover Attitude Status -- [RoverPositionSetpoint](RoverPositionSetpoint.md) — Rover Position Setpoint -- [RoverRateSetpoint](RoverRateSetpoint.md) — Rover Rate setpoint -- [RoverRateStatus](RoverRateStatus.md) — Rover Rate Status -- [RoverSpeedSetpoint](RoverSpeedSetpoint.md) — Rover Speed Setpoint -- [RoverSpeedStatus](RoverSpeedStatus.md) — Rover Velocity Status -- [RoverSteeringSetpoint](RoverSteeringSetpoint.md) — Rover Steering setpoint -- [RoverThrottleSetpoint](RoverThrottleSetpoint.md) — Rover Throttle setpoint +- [RoverAttitudeSetpoint](RoverAttitudeSetpoint.md) — Rover Attitude Setpoint. +- [RoverAttitudeStatus](RoverAttitudeStatus.md) — Rover Attitude Status. +- [RoverPositionSetpoint](RoverPositionSetpoint.md) — Rover Position Setpoint. +- [RoverRateSetpoint](RoverRateSetpoint.md) — Rover Rate setpoint. +- [RoverRateStatus](RoverRateStatus.md) — Rover Rate Status. +- [RoverSpeedSetpoint](RoverSpeedSetpoint.md) — Rover Speed Setpoint. +- [RoverSpeedStatus](RoverSpeedStatus.md) — Rover Velocity Status. +- [RoverSteeringSetpoint](RoverSteeringSetpoint.md) — Rover Steering setpoint. +- [RoverThrottleSetpoint](RoverThrottleSetpoint.md) — Rover Throttle setpoint. - [Rpm](Rpm.md) - [RtlStatus](RtlStatus.md) - [RtlTimeEstimate](RtlTimeEstimate.md) @@ -242,78 +208,64 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [SensorAccel](SensorAccel.md) - [SensorAccelFifo](SensorAccelFifo.md) - [SensorAirflow](SensorAirflow.md) -- [SensorBaro](SensorBaro.md) — Barometer sensor -- [SensorCombined](SensorCombined.md) — Sensor readings in SI-unit form. - These fields are scaled and offset-compensated where possible and do not - change with board revisions and sensor updates. -- [SensorCorrection](SensorCorrection.md) — Sensor corrections in SI-unit form for the voted sensor +- [SensorBaro](SensorBaro.md) — Barometer sensor. +- [SensorCombined](SensorCombined.md) — Sensor readings in SI-unit form. These fields are scaled and offset-compensated where possible and do not. change with board revisions and sensor updates. +- [SensorCorrection](SensorCorrection.md) — Sensor corrections in SI-unit form for the voted sensor. - [SensorGnssRelative](SensorGnssRelative.md) — GNSS relative positioning information in NED frame. NED кадр визначається як локальна топологічна система на задній станції. -- [SensorGnssStatus](SensorGnssStatus.md) — Gnss quality indicators -- [SensorGps](SensorGps.md) — GPS position in WGS84 coordinates. - the field 'timestamp' is for the position & velocity (microseconds) +- [SensorGnssStatus](SensorGnssStatus.md) — Gnss quality indicators. +- [SensorGps](SensorGps.md) — GPS position in WGS84 coordinates. the field 'timestamp' is for the position & velocity (microseconds). - [SensorGyro](SensorGyro.md) - [SensorGyroFft](SensorGyroFft.md) - [SensorGyroFifo](SensorGyroFifo.md) - [SensorHygrometer](SensorHygrometer.md) - [SensorMag](SensorMag.md) - [SensorOpticalFlow](SensorOpticalFlow.md) -- [SensorPreflightMag](SensorPreflightMag.md) — Pre-flight sensor check metrics. - 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 +- [SensorPreflightMag](SensorPreflightMag.md) — Pre-flight sensor check metrics. 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. +- [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. Це значення буде нульовим для датчика, який є первинним або незаповненим. - [SensorsStatusImu](SensorsStatusImu.md) — Sensor check metrics. Це значення буде нульовим для датчика, який є первинним або незаповненим. - [SystemPower](SystemPower.md) -- [TakeoffStatus](TakeoffStatus.md) — Status of the takeoff state machine currently just available for multicopters -- [TaskStackInfo](TaskStackInfo.md) — stack information for a single running process +- [TakeoffStatus](TakeoffStatus.md) — Status of the takeoff state machine currently just available for multicopters. +- [TaskStackInfo](TaskStackInfo.md) — stack information for a single running process. - [TecsStatus](TecsStatus.md) - [TelemetryStatus](TelemetryStatus.md) - [TiltrotorExtraControls](TiltrotorExtraControls.md) - [TimesyncStatus](TimesyncStatus.md) -- [TrajectorySetpoint6dof](TrajectorySetpoint6dof.md) — Trajectory setpoint in NED frame - Input to position controller. +- [TrajectorySetpoint6dof](TrajectorySetpoint6dof.md) — Trajectory setpoint in NED frame. Input to position controller. - [TransponderReport](TransponderReport.md) -- [TuneControl](TuneControl.md) — This message is used to control the tunes, when the tune_id is set to CUSTOM - then the frequency, duration are used otherwise those values are ignored. -- [UavcanParameterRequest](UavcanParameterRequest.md) — UAVCAN-MAVLink parameter bridge request type -- [UavcanParameterValue](UavcanParameterValue.md) — UAVCAN-MAVLink parameter bridge response type -- [UlogStream](UlogStream.md) — Message to stream ULog data from the logger. Corresponds to the LOGGING_DATA - mavlink message -- [UlogStreamAck](UlogStreamAck.md) — Ack a previously sent ulog_stream message that had - the NEED_ACK flag set +- [TuneControl](TuneControl.md) — This message is used to control the tunes, when the tune_id is set to CUSTOM. then the frequency, duration are used otherwise those values are ignored. +- [UavcanParameterRequest](UavcanParameterRequest.md) — UAVCAN-MAVLink parameter bridge request type. +- [UavcanParameterValue](UavcanParameterValue.md) — UAVCAN-MAVLink parameter bridge response type. +- [UlogStream](UlogStream.md) — Message to stream ULog data from the logger. Corresponds to the LOGGING_DATA. mavlink message. +- [UlogStreamAck](UlogStreamAck.md) — Ack a previously sent ulog_stream message that had. the NEED_ACK flag set. - [VehicleAcceleration](VehicleAcceleration.md) -- [VehicleAirData](VehicleAirData.md) — Vehicle air data +- [VehicleAirData](VehicleAirData.md) — Vehicle air data. - [VehicleAngularAccelerationSetpoint](VehicleAngularAccelerationSetpoint.md) -- [VehicleConstraints](VehicleConstraints.md) — Local setpoint constraints in NED frame - setting something to NaN means that no limit is provided +- [VehicleConstraints](VehicleConstraints.md) — Local setpoint constraints in NED frame. setting something to NaN means that no limit is provided. - [VehicleImu](VehicleImu.md) — IMU readings in SI-unit form. - [VehicleImuStatus](VehicleImuStatus.md) -- [VehicleLocalPositionSetpoint](VehicleLocalPositionSetpoint.md) — Local position setpoint in NED frame - Telemetry of PID position controller to monitor tracking. - NaN means the state was not controlled +- [VehicleLocalPositionSetpoint](VehicleLocalPositionSetpoint.md) — Local position setpoint in NED frame. Telemetry of PID position controller to monitor tracking. NaN means the state was not controlled. - [VehicleMagnetometer](VehicleMagnetometer.md) - [VehicleOpticalFlow](VehicleOpticalFlow.md) — Optical flow in XYZ body frame in SI units. - [VehicleOpticalFlowVel](VehicleOpticalFlowVel.md) -- [VehicleRoi](VehicleRoi.md) — Vehicle Region Of Interest (ROI) +- [VehicleRoi](VehicleRoi.md) — Vehicle Region Of Interest (ROI). - [VehicleThrustSetpoint](VehicleThrustSetpoint.md) - [VehicleTorqueSetpoint](VehicleTorqueSetpoint.md) -- [VelocityLimits](VelocityLimits.md) — Velocity and yaw rate limits for a multicopter position slow mode only +- [VelocityLimits](VelocityLimits.md) — Velocity and yaw rate limits for a multicopter position slow mode only. +- [Vtx](Vtx.md) - [WheelEncoders](WheelEncoders.md) - [YawEstimatorStatus](YawEstimatorStatus.md) - [AirspeedValidatedV0](AirspeedValidatedV0.md) - [ArmingCheckReplyV0](ArmingCheckReplyV0.md) - [ArmingCheckRequestV0](ArmingCheckRequestV0.md) — Arming check request. -- [BatteryStatusV0](BatteryStatusV0.md) — Battery status -- [ConfigOverridesV0](ConfigOverridesV0.md) — Configurable overrides by (external) modes or mode executors -- [EventV0](EventV0.md) — this message is required here in the msg_old folder because other msg are depending on it - Events interface +- [BatteryStatusV0](BatteryStatusV0.md) — Battery status. +- [ConfigOverridesV0](ConfigOverridesV0.md) — Configurable overrides by (external) modes or mode executors. +- [EventV0](EventV0.md) — this message is required here in the msg_old folder because other msg are depending on it. Events interface. - [HomePositionV0](HomePositionV0.md) — GPS home position in WGS84 coordinates. - [RegisterExtComponentReplyV0](RegisterExtComponentReplyV0.md) -- [RegisterExtComponentRequestV0](RegisterExtComponentRequestV0.md) — Request to register an external component +- [RegisterExtComponentRequestV0](RegisterExtComponentRequestV0.md) — Request to register an external component. - [VehicleAttitudeSetpointV0](VehicleAttitudeSetpointV0.md) -- [VehicleLocalPositionV0](VehicleLocalPositionV0.md) — Fused local position in NED. - The coordinate system origin is the vehicle position at the time when the EKF2-module was started. -- [VehicleStatusV0](VehicleStatusV0.md) — Encodes the system state of the vehicle published by commander +- [VehicleLocalPositionV0](VehicleLocalPositionV0.md) — Fused local position in NED. The coordinate system origin is the vehicle position at the time when the EKF2-module was started. +- [VehicleStatusV0](VehicleStatusV0.md) — Encodes the system state of the vehicle published by commander. diff --git a/docs/uk/peripherals/remote_id.md b/docs/uk/peripherals/remote_id.md index c2673dae23..162dd32d26 100644 --- a/docs/uk/peripherals/remote_id.md +++ b/docs/uk/peripherals/remote_id.md @@ -166,7 +166,6 @@ PX4 v1.14 передає ці повідомлення за замовчуван - [OPEN_DRONE_ID_LOCATION](https://mavlink.io/en/messages/common.html#OPEN_DRONE_ID_LOCATION) (1 Hz) - UAV location, altitude, direction, and speed. - [OPEN_DRONE_ID_SYSTEM](https://mavlink.io/en/messages/common.html#OPEN_DRONE_ID_SYSTEM) (1 Hz) Operator location/altitude, multiple aircraft information (group/swarm, if applicable), full timestamp and possible category/class information. - - Реалізація передбачає, що оператор знаходиться в домашньому положенні транспортного засобу (ще не підтримує отримання позиції оператора з ПЗУ). Вважається, що це відповідає вимогам лише для віддалених ідентифікаторів трансляції. diff --git a/docs/uk/power_module/ark_12s_pab_power_module.md b/docs/uk/power_module/ark_12s_pab_power_module.md index c10cab61d0..fd59cf479f 100644 --- a/docs/uk/power_module/ark_12s_pab_power_module.md +++ b/docs/uk/power_module/ark_12s_pab_power_module.md @@ -13,25 +13,21 @@ The [ARK 12S PAB Power Module](https://arkelectron.gitbook.io/ark-documentation/ ## Характеристики обладнання - **TI INA238 Digital Power Monitor** - - 0.0001 Ohm Shunt - I2C Interface - **5.2V 6A Step-Down Regulator** - - 66V Maximum Input Voltage - 10V Minimum Input Voltage at 6A Out - Output Over-Current Protection - **Connections** - - Solder Pads Battery Input - Solder Pads Battery Output - 6 Pin Molex CLIK-Mate Output - [Matches ARK PAB Carrier Power Pinout](https://arkelectron.gitbook.io/ark-documentation/flight-controllers/ark-pixhawk-autopilot-bus-carrier/pinout) - **Other** - - USA Built - Includes 6 Pin Molex CLIK-Mate Cable diff --git a/docs/uk/power_module/holybro_pm03d.md b/docs/uk/power_module/holybro_pm03d.md index 8e1f13acdc..7c587bb573 100644 --- a/docs/uk/power_module/holybro_pm03d.md +++ b/docs/uk/power_module/holybro_pm03d.md @@ -46,8 +46,8 @@ The PM is **NOT** compatible with flight controllers that require an analog powe - 1x Електролітична ємність: 220uF 63V (передпаяна) - 1x 2.0мм інтервал CLIK-Mate 6pin кабель (Для живлення контролера польоту) - 4pin JST GH в USB тип C -- 4pin JST GH до бочкового штекера (2.1\*5.5мм) -- 4pin JST GH до бочкового штекера (2.5\*5.5мм) +- 4pin JST GH to barrel plug (2.1\*5.5mm) +- 4pin JST GH to barrel plug (2.5\*5.5mm) - Кабель Дюпон 4-шпильковий (2шт) - Nylon standoffs & nuts diff --git a/docs/uk/releases/1.13.md b/docs/uk/releases/1.13.md index 93bd66e7fe..0a0600cc78 100644 --- a/docs/uk/releases/1.13.md +++ b/docs/uk/releases/1.13.md @@ -24,7 +24,6 @@ ### Загальні - **Explicit Joystick source selection ([PR#17404](https://github.com/PX4/PX4-Autopilot/pull/17404))** - - Можливість до: - Чітко дозволити лише одне джерело - Повернутися до іншого джерела у повітрі diff --git a/docs/uk/releases/index.md b/docs/uk/releases/index.md index 260fd67bc7..c88cbfe0e1 100644 --- a/docs/uk/releases/index.md +++ b/docs/uk/releases/index.md @@ -10,4 +10,8 @@ - [v1.13](../releases/1.13.md) - [v1.12](../releases/1.12.md) -The full archive of releases for the PX4 autopilot project can be found on [GitHub](https://github.com/PX4/PX4-Autopilot/releases) +The full archive of releases for the PX4 autopilot project can be found on [GitHub](https://github.com/PX4/PX4-Autopilot/releases). + +:::info +For maintainers, see [Release Process](../releases/release_process.md) for the tagging and publishing workflow. +::: diff --git a/docs/uk/releases/release_process.md b/docs/uk/releases/release_process.md new file mode 100644 index 0000000000..68c57e38c2 --- /dev/null +++ b/docs/uk/releases/release_process.md @@ -0,0 +1,301 @@ +# Процес випуску + +This page documents the PX4 release process for maintainers. It covers the steps from preparing a release candidate through to the final announcement. + +## Загальний огляд + +PX4 uses a branch-based release workflow: + +- **`release/X.Y`** (e.g., `release/1.17`, `release/2.0`) - The active development branch for a specific release where changes are merged and tested +- **`stable`** - Points to the latest stable release tag; reset after each release +- **`beta`** - For flight testers to validate release candidates + +The target release cycle is approximately 6 months, best effort. The actual cadence depends on testing results and maintainer availability, with an ongoing goal to shorten the cycle. + +Releases are tracked on the [PX4 Release Project Board](https://github.com/orgs/PX4/projects/45), which is reused and renamed for each release cycle. + +### Release Tag Progression + +Release branches go through the following tag stages: + +| Stage | Example | Branch Status | What Gets Merged | +| ---------- | ---------------- | -------------- | ---------------------------------------------------------------------- | +| **Alpha** | `v1.18.0-alpha1` | Open for fixes | Bug fixes and regression fixes only | +| **Beta** | `v1.18.0-beta1` | Open for fixes | Bug fixes and regression fixes only | +| **RC** | `v1.18.0-rc1` | Frozen | Nothing (unless veto vote passes) | +| **Stable** | `v1.18.0` | Open for fixes | Bug fixes and regression fixes (for point releases) | + +:::info +New features are never merged to release branches. Once a release branch is created from `main`, only bug fixes and regression fixes are accepted. New features must target `main` and will be included in the next release cycle. +::: + +## Starting a New Release Cycle + +A new release cycle begins immediately after a stable release is published. This involves two votes during the [Weekly Community Q&A Call](../contribute/dev_call.md) when approving a stable release: + +1. **Vote to publish the current release** - Approve the stable release for publication +2. **Vote on the next release name/number** - Decide the version number for the next release (e.g., v1.18 or v2.0) + +### Prepare Release Notes Before Branching + +Release notes are built incrementally in [`main.md`](../releases/main.md), which accumulates changes as they land on `main`. Before creating the release branch: + +1. Rename `main.md` to the version-specific file (e.g., `docs/en/releases/1.18.md`) +2. Add the new file to `SUMMARY.md` and `releases/index.md` +3. Reset `main.md` to a clean template for the next release cycle +4. Verify that documentation for all included contributions is complete +5. Search for instances of `main (planned for:` and replace with the release version now that it is known. + So, for example `` is replaced with `` + +:::tip +Community members are encouraged to document changes as they are merged into `main`. This distributes the documentation workload and ensures changes are captured while they're fresh. +::: + +### Create the Release Branch + +Once the next release version is decided, create the new release branch from `main` in PX4-Autopilot and the companion repositories: + +```sh +# PX4-Autopilot +git checkout main && git pull +git checkout -b release/1.18 +git push origin release/1.18 +``` + +Matching release branches must also be created in: + +- [PX4/px4_msgs](https://github.com/PX4/px4_msgs) +- [Auterion/px4-ros2-interface-lib](https://github.com/Auterion/px4-ros2-interface-lib) + +After creating the companion branches, update the [ROS integration test workflow](https://github.com/PX4/PX4-Autopilot/blob/main/.github/workflows/ros_integration_tests.yml) on the release branch to clone `px4-ros2-interface-lib` from the matching release branch: + +```diff +- git clone --recursive https://github.com/Auterion/px4-ros2-interface-lib.git ++ git clone --recursive --branch release/1.18 https://github.com/Auterion/px4-ros2-interface-lib.git +``` + +:::warning +Once the release branches are created, they only accept bug fixes and regression fixes. All new feature development continues on `main`. +::: + +### Create the Alpha Tag + +Immediately after creating the release branch, create the first alpha tag to mark the beginning of the release cycle: + +```sh +# On the new release branch +git checkout release/1.18 + +# Create the signed alpha tag +git tag -s v1.18.0-alpha1 -m "v1.18.0-alpha1" +git push origin v1.18.0-alpha1 +``` + +Subsequent alpha tags can be created as fixes are merged (e.g., `v1.18.0-alpha2`, `v1.18.0-alpha3`). + +## Release Steps + +### 1. Review and Merge PRs (Alpha Phase) + +During the alpha phase, review pull requests targeting the release branch: + +- Review PRs according to the project's [contribution guidelines](../contribute/code.md) +- Merge **bug fixes and regression fixes only** +- New features must target `main`, not the release branch +- Create additional alpha tags as fixes are merged (e.g., `v1.18.0-alpha2`) + +### 2. Alpha Testing + +The _Dronecode Test Team_ (provided by [Ascend Engineering](https://www.ascendengineer.com) — Dronecode Silver member) conducts initial flight testing of alpha builds using: + +- The [test cards](../test_and_ci/test_flights.md) documented in the PX4 guide +- A hardware matrix covering supported flight controllers and airframes + +Alpha testing focuses on identifying regressions and blockers early. The alpha phase is complete when: + +- All test cards pass across the core hardware matrix (no critical or high-severity failures) +- All identified regressions have fixes merged or have been triaged as non-blocking +- Release notes and documentation for included changes are complete + +### 3. Create Beta Tag + +Once the alpha exit criteria above are met, create the first beta tag: + +```sh +# On the release branch +git checkout release/1.18 +git pull + +# Create the signed beta tag +git tag -s v1.18.0-beta1 -m "v1.18.0-beta1" +git push origin v1.18.0-beta1 +``` + +### 4. Beta Testing + +Beta builds are published for wider community validation. Unlike alpha testing (which is conducted by the Dronecode Test Team on the core hardware matrix), beta testing focuses on: + +- **Community testing** — beta builds are made available for community members to test on their own hardware and airframe configurations +- **Extended hardware coverage** — testing on hardware and configurations beyond the core test matrix +- **Real-world flight scenarios** — longer flights, mission testing, and edge cases not covered by standard test cards + +During beta, continue to: + +- Review and merge **bug fixes and regression fixes only** +- Create additional beta tags as fixes are merged (e.g., `v1.18.0-beta2`, `v1.18.0-beta3`) + +### 5. Create Release Candidate Tag + +The beta phase is complete when: + +- No new critical or high-severity issues are reported for at least one beta tag cycle +- All beta-reported regressions have fixes merged or have been triaged as non-blocking + +Once the beta exit criteria are met, create the first release candidate: + +```sh +# On the release branch +git checkout release/1.18 +git pull + +# Create the signed RC tag +git tag -s v1.18.0-rc1 -m "v1.18.0-rc1" +git push origin v1.18.0-rc1 +``` + +:::warning +The branch is now frozen. No PRs will be merged unless a veto vote passes (see below). +::: + +:::tip +Tags must be GPG-signed. Ensure your GitHub account is [configured for GPG signing](https://docs.github.com/en/authentication/managing-commit-signature-verification). Only maintainers with registered GPG keys can create release tags. +::: + +### 6. RC Testing and Branch Freeze + +During RC testing, the release branch is frozen: + +- No PRs are merged by default +- Testing focuses on final validation before stable release +- Any issues found are documented and evaluated + +#### Veto Vote for Critical Fixes + +If a critical issue is discovered during RC testing that must be fixed before release: + +1. Raise the issue during the [Weekly Community Q&A Call](../contribute/dev_call.md) +2. Present the case for why the fix is critical +3. Maintainers vote on whether to merge the fix +4. If approved, merge the fix and create a new RC tag (e.g., `v1.18.0-rc2`) + +### 7) Release Vote + +The release vote takes place during the [Weekly Community Q&A Call](../contribute/dev_call.md): + +- Present the release status and test results +- **Vote 1:** Core maintainers vote on whether to publish the release +- **Vote 2:** Decide the name/number of the next release version +- The call happens Wednesdays at 17:00 CET on [Discord](https://discord.gg/BDYmr6FA6Q) + +### 8. Create and Push Release Tag + +After a successful vote, create the final release tag: + +```sh +# On the release branch +git checkout release/1.18 +git pull + +# Create the signed release tag +git tag -s v1.18.0 -m "v1.18.0" +git push origin v1.18.0 +``` + +### 9. Update the Stable Branch + +Reset the `stable` branch to point to the new release tag: + +```sh +git checkout stable +git reset --hard v1.18.0 +git push --force origin stable +``` + +:::warning +This is a force push that rewrites the stable branch history. Ensure you have the correct tag before executing. +::: + +### 10. GitHub Release (Automated) + +When a version tag is pushed, the [build_all_targets.yml](https://github.com/PX4/PX4-Autopilot/blob/main/.github/workflows/build_all_targets.yml) GitHub Actions workflow automatically: + +1. Builds firmware for all supported targets +2. Uploads firmware artifacts to AWS S3 (`Firmware/vX.Y.Z/` and updates `Firmware/stable/`) +3. Creates a **draft release** on GitHub with all `.px4` firmware files attached + +### 11) Publish GitHub Release + +Edit the draft release on GitHub: + +- Add a brief description of major changes +- Link to the full release notes in the documentation (e.g., `releases/1.18.md`) +- Publish the release + +### 12. Finalize Documentation + +Review and finalize the release notes that have been developed throughout the release cycle: + +- Ensure all noteworthy changes, new features, and upgrade guides are documented +- Review for completeness and accuracy +- See existing [release notes](../releases/index.md) for the expected format + +### 13. Announce the Release + +Announce the release through official channels: + +- [PX4 Discuss Forum](https://discuss.px4.io/) +- [PX4 Discord](https://discord.gg/dronecode) +- Social media (Twitter/X, LinkedIn) +- Dronecode newsletter + +### 14. Start Next Release Cycle + +Immediately after publishing, start the next release cycle: + +- Create the new release branch from `main` (see [Create the Release Branch](#create-the-release-branch)) +- Create the alpha tag for the new release +- Create the initial documentation for the next release +- Rename and prepare the project board (see [Project Board Management](#project-board-management)) + +## Point Releases + +After a stable release is published, the release branch reopens for bug fixes and regression fixes to support point releases (e.g., `v1.18.1`). + +For patch releases: + +1. Merge bug fixes and regression fixes to the release branch +2. Create beta tags for testing if needed (e.g., `v1.18.1-beta1`) +3. Create RC tags for final validation (e.g., `v1.18.1-rc1`) +4. After testing and vote, tag the point release +5. Update stable branch and publish + +## Project Board Management + +The [PX4 Release Project Board](https://github.com/orgs/PX4/projects/45) is reused across release cycles to track issues and PRs for the current release. + +### After a Release + +Once a release is published: + +1. **Rename the project board** to reflect the next release version (e.g., "v1.17 Release" → "v1.18 Release") +2. **Review remaining items**: + - Close items that are no longer relevant + - Move incomplete items that should carry over to the next release + - Remove items that were descoped or deferred indefinitely +3. **Update the board description** if needed to reflect the new release target + +## Дивіться також + +- [Source Code Management](../contribute/code.md) - Branching model and contribution guidelines +- [Test Flights](../test_and_ci/test_flights.md) - Flight test procedures and test cards +- [Weekly Community Q&A Call](../contribute/dev_call.md) - Where release votes happen diff --git a/docs/uk/ros/mavros_custom_messages.md b/docs/uk/ros/mavros_custom_messages.md index 23fb6960f1..73b88d186e 100644 --- a/docs/uk/ros/mavros_custom_messages.md +++ b/docs/uk/ros/mavros_custom_messages.md @@ -68,6 +68,7 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c ``` 2. Edit **mavros_plugins.xml** (in **workspace/src/mavros/mavros_extras**) and add the following lines: + ```xml Accepts keyboard command. @@ -75,10 +76,11 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c ``` 3. Edit **CMakeLists.txt** (in **workspace/src/mavros/mavros_extras**) and add the following line in `add_library`. + ```cmake - add_library( + add_library( ... - src/plugins/keyboard_command.cpp + src/plugins/keyboard_command.cpp ) ``` @@ -148,6 +150,7 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c 4. Edit **mavlink_receiver.cpp** (in **PX4-Autopilot/src/modules/mavlink**). Саме тут PX4 отримує повідомлення MAVLink від ROS, і публікує його як тему uORB. + ```cpp ... void MavlinkReceiver::handle_message(mavlink_message_t *msg) @@ -227,7 +230,7 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c int error_counter = 0; - for (int i = 0; i < 10; i++) + for (int i = 0; i < 10; i++) { int poll_ret = px4_poll(fds, 1, 1000); @@ -264,10 +267,10 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c ``` menuconfig MODULES_KEY_RECEIVER - bool "key_receiver" - default n - ---help--- - Enable support for key_receiver + bool "key_receiver" + default n + ---help--- + Enable support for key_receiver ``` @@ -308,6 +311,7 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c ### Збірка для PX4 1. Очистіть попередньо зібраний каталог PX4-Autopilot. In the root of **PX4-Autopilot** directory: + ```sh make clean ``` @@ -348,6 +352,7 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c 1. Введіть оболонку Pixhawk через UDP. Замініть xxx.xx.xxx.xxx своїм IP. + ```sh cd PX4-Autopilot/Tools ./mavlink_shell.py xxx.xx.xxx.xxx:14557 --baudrate 57600 diff --git a/docs/uk/ros/mavros_installation.md b/docs/uk/ros/mavros_installation.md index b486ce151e..ef7a4660f8 100644 --- a/docs/uk/ros/mavros_installation.md +++ b/docs/uk/ros/mavros_installation.md @@ -26,7 +26,7 @@ They cover the _ROS Melodic and Noetic_ releases. :::tab ROS Noetic (Ubuntu 20.04) -If you're working with [ROS Noetic](https://wiki.ros.org/noetic) on Ubuntu 20.04: +If you're working with [ROS "Noetic"](https://wiki.ros.org/noetic) on Ubuntu 20.04: 1. Install PX4 without the simulator toolchain: 1. [Download PX4 Source Code](../dev_setup/building_px4.md): @@ -57,7 +57,7 @@ If you're working with [ROS Noetic](https://wiki.ros.org/noetic) on Ubuntu 20.04 :::tab ROS Melodic (Ubuntu 18.04) -If you're working with ROS "Melodic on Ubuntu 18.04: +If you're working with ROS "Melodic" on Ubuntu 18.04: 1. Download the [ubuntu_sim_ros_melodic.sh](https://raw.githubusercontent.com/PX4/Devguide/master/build_scripts/ubuntu_sim_ros_melodic.sh) script in a bash shell: diff --git a/docs/uk/ros2/px4_ros2_control_interface.md b/docs/uk/ros2/px4_ros2_control_interface.md index 8597ea0532..61ecd1393b 100644 --- a/docs/uk/ros2/px4_ros2_control_interface.md +++ b/docs/uk/ros2/px4_ros2_control_interface.md @@ -28,7 +28,7 @@ Unless the mode is safety-critical, requires strict timing or very high update r :::tip If you want to use Python, check out the [examples in the repository](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/examples/python). -Not all classes have Python bindings yet — the [supported bindings are here](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/px4_ros2_py/src/px4_ros2). +Not all classes have Python bindings yet — the [supported bindings are here](https://auterion.github.io/px4-ros2-interface-lib/python/index.html). You are welcome to add and contribute missing classes. ::: diff --git a/docs/uk/sensor/microstrain.md b/docs/uk/sensor/microstrain.md index 6a78dc6895..7503f30629 100644 --- a/docs/uk/sensor/microstrain.md +++ b/docs/uk/sensor/microstrain.md @@ -41,9 +41,7 @@ To use the MicroStrain driver: 1. Include the module in firmware in the [kconfig board configuration](../hardware/porting_guide_config.md#px4-board-configuration-kconfig) by setting the kconfig variables: `CONFIG_DRIVERS_INS_MICROSTRAIN` or `CONFIG_COMMON_INS`. 2. Configure the driver mode by setting [MS_MODE](../advanced_config/parameter_reference.md#MS_MODE) - - To use the MicroStrain sensor to provide raw IMU data to EKF2 - 1. Set [MS_MODE](../advanced_config/parameter_reference.md#MS_MODE) to 0 2. Update the [EKF2_MULTI_IMU](../advanced_config/parameter_reference.md#EKF2_MULTI_IMU) parameter to account for the added MicroStrain sensor. 3. Enable EKF2 by setting [EKF2_EN](../advanced_config/parameter_reference.md#EKF2_EN) to 1 @@ -78,22 +76,18 @@ To use the MicroStrain driver: ## MicroStrain Configuration 1. Rates: - - By default, accel and gyro data are published at 500 Hz, magnetometer at 50 Hz, and barometric pressure at 50 Hz. This can be changed by adjusting the following parameters: - - [MS_IMU_RATE_HZ](../advanced_config/parameter_reference.md#MS_IMU_RATE_HZ) - [MS_MAG_RATE_HZ](../advanced_config/parameter_reference.md#MS_MAG_RATE_HZ) - [MS_BARO_RATE_HZ](../advanced_config/parameter_reference.md#MS_BARO_RATE_HZ) - Global position, local position, attitude and odometry will be published at 250 Hz by default. This can be configured via: - - [MS_FILT_RATE_HZ](../advanced_config/parameter_reference.md#MS_FILT_RATE_HZ) - For the CV7-GNSS/INS, the GNSS receiver 1 and 2 will publish data at 5Hz by default. This can be changed using: - - [MS_GNSS_RATE_HZ](../advanced_config/parameter_reference.md#MS_GNSS_RATE_HZ) - The driver will automatically configure data outputs based on the specific sensor model and available data streams. @@ -105,7 +99,6 @@ To use the MicroStrain driver: - If supported, GNSS position and velocity aiding are always enabled. - Internal/external magnetometer and heading aiding, as well as optical flow aiding, are disabled by default. They can be enabled using the following parameters: - - [MS_INT_MAG_EN](../advanced_config/parameter_reference.md#MS_INT_MAG_EN) - [MS_INT_HEAD_EN](../advanced_config/parameter_reference.md#MS_INT_HEAD_EN) - [MS_EXT_HEAD_EN](../advanced_config/parameter_reference.md#MS_EXT_HEAD_EN) @@ -113,7 +106,6 @@ To use the MicroStrain driver: - [MS_OPT_FLOW_EN](../advanced_config/parameter_reference.md#MS_OPT_FLOW_EN) - The aiding frames for external sources can be configured using the following parameters: - - [MS_EHEAD_YAW](../advanced_config/parameter_reference.md#MS_EHEAD_YAW) - [MS_EMAG_ROLL](../advanced_config/parameter_reference.md#MS_EMAG_ROLL) - [MS_EMAG_PTCH](../advanced_config/parameter_reference.md#MS_EMAG_PTCH) @@ -124,7 +116,6 @@ To use the MicroStrain driver: - [SENS_FLOW_ROT](../advanced_config/parameter_reference.md#SENS_FLOW_ROT) - The uncertainty for optical flow and external magnetometer aiding must be specified using the following parameters: - - [MS_EMAG_UNCERT](../advanced_config/parameter_reference.md#MS_EMAG_UNCERT) - [MS_OFLW_UNCERT](../advanced_config/parameter_reference.md#MS_OFLW_UNCERT) @@ -137,25 +128,18 @@ To use the MicroStrain driver: ::: 3. Initial heading alignment: - - Initial heading alignment is set to kinematic by default. This can be changed by adjusting - - [MS_ALIGNMENT](../advanced_config/parameter_reference.md#MS_ALIGNMENT) 4. GNSS Aiding Source Control (GNSS/INS only) - - The Source of the GNSS aiding data can be configured using: - - [MS_GNSS_AID_SRC](../advanced_config/parameter_reference.md#MS_GNSS_AID_SRC) 5. Sensor to vehicle transform: - - If the sensor is mounted in an orientation different from the vehicle frame. A sensor to vehicle transform can be enabled using - - [MS_SVT_EN](../advanced_config/parameter_reference.md#MS_SVT_EN) - The transform is defined using the following parameters - - [MS_SENSOR_ROLL](../advanced_config/parameter_reference.md#MS_SENSOR_ROLL) - [MS_SENSOR_PTCH](../advanced_config/parameter_reference.md#MS_SENSOR_PTCH) - [MS_SENSOR_YAW](../advanced_config/parameter_reference.md#MS_SENSOR_YAW) @@ -163,7 +147,6 @@ To use the MicroStrain driver: 6. IMU ranges: - The accelerometer and gyroscope ranges on the device are configurable using: - - [MS_ACCEL_RANGE](../advanced_config/parameter_reference.md#MS_ACCEL_RANGE) - [MS_GYRO_RANGE](../advanced_config/parameter_reference.md#MS_GYRO_RANGE) @@ -175,15 +158,12 @@ To use the MicroStrain driver: ::: 7. GNSS Lever arm offsets: - - The lever arm offset for the external GNSS receiver can be configured using: - - [MS_GNSS_OFF1_X](../advanced_config/parameter_reference.md#MS_GNSS_OFF1_X) - [MS_GNSS_OFF1_Y](../advanced_config/parameter_reference.md#MS_GNSS_OFF1_Y) - [MS_GNSS_OFF1_Z](../advanced_config/parameter_reference.md#MS_GNSS_OFF1_Z) - For dual-antenna configurations, the second GNSS receiver’s offset is configured using: - - [MS_GNSS_OFF2_X](../advanced_config/parameter_reference.md#MS_GNSS_OFF2_X) - [MS_GNSS_OFF2_Y](../advanced_config/parameter_reference.md#MS_GNSS_OFF2_Y) - [MS_GNSS_OFF2_Z](../advanced_config/parameter_reference.md#MS_GNSS_OFF2_Z) diff --git a/docs/uk/sensor/optical_flow.md b/docs/uk/sensor/optical_flow.md index f2591cb856..8f301d4ad7 100644 --- a/docs/uk/sensor/optical_flow.md +++ b/docs/uk/sensor/optical_flow.md @@ -55,7 +55,7 @@ Reducing the optical flow scale factor can improve the situation. It has a PAW3902 optical flow sensor, Broadcom AFBR-S50LV85D 30 meter distance sensor, and Invensense ICM-42688-P 6-Axis IMU. [ARK Flow MR](../dronecan/ark_flow_mr.md) is a [DroneCAN](../dronecan/index.md) optical flow sensor, [distance sensor](../sensor/rangefinders.md), and IMU, for mid-range applications. -It has a PixArt PAA3905 optical flow sensor, Broadcom AFBR-S50LX85D 50 meter distance sensor, and Invensense IIM-42653 6-Axis IMU. +It has a PixArt PAA3905 optical flow sensor, Broadcom AFBR-S50LX85D 50 meter distance sensor, and Invensense IIM-42653 6-Axis IMU. ### Holybro H-Flow diff --git a/docs/uk/sensor/sbgecom.md b/docs/uk/sensor/sbgecom.md index 706c96b1b2..4e65d0243c 100644 --- a/docs/uk/sensor/sbgecom.md +++ b/docs/uk/sensor/sbgecom.md @@ -82,9 +82,7 @@ To use the sbgECom driver: In this case, MAVLink messages will be updated with the newly selected sensor. If you don't want to have this fallback mechanism, you must disable unwanted sensors. - -::: - 4. If using the sbgECom as an INS, disable EKF2 using [EKF2_EN](../advanced_config/parameter_reference.md#EKF2_EN). + ::: 4. If using the sbgECom as an INS, disable EKF2 using [EKF2_EN](../advanced_config/parameter_reference.md#EKF2_EN). 6. Перезавантажте PX4. diff --git a/docs/uk/sensor/sfxx_lidar.md b/docs/uk/sensor/sfxx_lidar.md index 5bfe0c7f8a..98becf2484 100644 --- a/docs/uk/sensor/sfxx_lidar.md +++ b/docs/uk/sensor/sfxx_lidar.md @@ -1,4 +1,4 @@ -# LightWare Lidar (SF1X/SF02/LW20/SF45) +# LightWare Lidar (SF1X/SF02/LW20/SF45/GRF250/GRF500) LightWare розробляє широкий спектр легких, загального призначення лазерних альтиметрів ("Lidar"), які підходять для установки на БПЛА. Ці інструменти корисні для застосувань, включаючи слідування за рельєфом, точне зависання у повітрі (наприклад, для фотографії), попередження про регуляторні висотні обмеження, антиколізійний датчик тощо. @@ -15,6 +15,8 @@ LightWare розробляє широкий спектр легких, зага | [LW20/C](https://lightware.co.za/products/lw20-c-100-m) | 100 | Шина I2C | Водонепроникний (IP67) з сервоприводом для додатків з детекцією та уникненням перешкод | | [SF30/D](https://lightwarelidar.com/shop/sf30-d-200-m/) | 200 | Шина I2C | Waterproofed (IP67) | | [SF45/B](../sensor/sf45_rotating_lidar.md) | 50 | Серія | Rotary Lidar (Used for [Collision Prevention](../computer_vision/collision_prevention.md)) | +| [GRF250](https://lightwarelidar.com/shop/grf-250/) | 250 | I2C | Gimbal Range Finder | +| [GRF500](https://lightwarelidar.com/shop/grf-500/) | 500 | I2C | Gimbal Range Finder | :::details Discontinued diff --git a/docs/uk/sensor/vectornav.md b/docs/uk/sensor/vectornav.md index 6fd363bed1..c5544fdd56 100644 --- a/docs/uk/sensor/vectornav.md +++ b/docs/uk/sensor/vectornav.md @@ -59,7 +59,6 @@ PX4 може використовувати це як [зовнішній INS] ( 4. Дозвольте драйвер VectorNav ініціалізуватися, перезапустивши PX4. 5. Налаштуйте водія як зовнішній INS або надайте сирові дані: - - Якщо використовувати VectorNav як зовнішній INS, встановіть [VN_MODE](../advanced_config/parameter_reference.md#VN_MODE) на `INS`. Це вимикає EKF2. - Якщо використовувати VectorNav як зовнішні інерційні сенсори: diff --git a/docs/uk/sensor_bus/i2c_development.md b/docs/uk/sensor_bus/i2c_development.md index 29b3c4f004..24cd99d914 100644 --- a/docs/uk/sensor_bus/i2c_development.md +++ b/docs/uk/sensor_bus/i2c_development.md @@ -23,7 +23,7 @@ IMUs (accelerometers/gyroscopes) should not be attached via I2C (typically the [ Drivers should `#include ` and then provide an implementation of the abstract base class `I2C` defined in **I2C.hpp** for the target hardware (i.e. for NuttX [here](https://github.com/PX4/PX4-Autopilot/blob/main/src/lib/drivers/device/nuttx/I2C.hpp)). -A small number of drivers will also need to include headers for their type of device (**drv_\*.h**) in [/src/drivers/](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers) - e.g. [drv_led.h](https://github.com/PX4/PX4-Autopilot/blob/main/src/drivers/drv_led.h). +A small number of drivers will also need to include headers for their type of device (**drv\_\*.h**) in [/src/drivers/](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers) - e.g. [drv_led.h](https://github.com/PX4/PX4-Autopilot/blob/main/src/drivers/drv_led.h). Для включення драйвера в прошивку потрібно додати драйвер до файлу cmake, специфічного для плати, який відповідає цілі, для якої ви хочете збудувати. Ви можете це зробити для одного драйвера: diff --git a/docs/uk/sensor_bus/translator_tfi2cadt.md b/docs/uk/sensor_bus/translator_tfi2cadt.md index 8663da646c..596035c247 100644 --- a/docs/uk/sensor_bus/translator_tfi2cadt.md +++ b/docs/uk/sensor_bus/translator_tfi2cadt.md @@ -28,7 +28,7 @@ TFI2CADT01 виконує операцію XOR на викликаній адр ## Приклад використання The tachometer sensor [TFRPM01](../sensor/thunderfly_tachometer.md) can be set to two different addresses using a solder jumper. -Якщо автопілот має три шини, тільки 6 датчиків можуть бути підключені і жодна шина не залишається вільною (2 доступні адреси \* 3 порти I2C). +If the autopilot has three buses, only 6 sensors can be connected and no bus remains free (2 available addresses \* 3 I2C ports). У деяких мультикоптерах або рішеннях VTOL є необхідність вимірювати оберти хвилину RPM 8 або більше елементів. The [TFI2CADT01](https://www.tindie.com/products/26353/) is highly recommended in this case. diff --git a/docs/uk/sim_gazebo_gz/index.md b/docs/uk/sim_gazebo_gz/index.md index a05e18c158..e2f0cd5637 100644 --- a/docs/uk/sim_gazebo_gz/index.md +++ b/docs/uk/sim_gazebo_gz/index.md @@ -254,7 +254,6 @@ where `ARGS` is a list of environment variables including: - `PX4_GZ_MODEL_NAME`: Sets the name of an _existing_ model in the gazebo simulation. Якщо вказано, скрипт запуску намагається прив'язати новий екземпляр PX4 до ресурсу Gazebo, що відповідає точно такому імені. - - The setting is mutually exclusive with `PX4_SIM_MODEL`. - `PX4_SIM_MODEL`: @@ -271,7 +270,6 @@ where `ARGS` is a list of environment variables including: - `PX4_GZ_MODEL_POSE`: Sets the spawning position and orientation of the model when `PX4_SIM_MODEL` is adopted. If provided, the startup script spawns the model at a pose following the syntax `"x,y,z,roll,pitch,yaw"`, where the positions are given in metres and the angles are in radians. - - If omitted, the zero pose `[0,0,0,0,0,0]` is used. - Якщо надано менше ніж 6 значень, то відсутні фіксуються на нулі. - This can only be used with `PX4_SIM_MODEL` (not `PX4_GZ_MODEL_NAME`). @@ -279,7 +277,6 @@ where `ARGS` is a list of environment variables including: - `PX4_GZ_WORLD`: Sets the Gazebo world file for a new simulation. If it is not given, then [default](https://github.com/PX4/PX4-gazebo-models/blob/main/worlds/default.sdf) is used. - - Ця змінна ігнорується, якщо наявна модель вже запущена. - This value should be [specified for the selected airframe](#adding-new-worlds-and-models) but may be overridden using this argument. - If the [moving platform world](../sim_gazebo_gz/worlds.md#moving-platform) is selected using `PX4_GZ_WORLD=moving_platform` (or any world using the moving platform plugin), the platform can be configured using environment variables: @@ -288,7 +285,6 @@ where `ARGS` is a list of environment variables including: - `PX4_SIMULATOR=GZ`: Sets the simulator, which for Gazebo must be `gz`. - - This value should be [set for the selected airframe](#adding-new-worlds-and-models), in which case it does not need to be set as an argument. - `PX4_GZ_STANDALONE`: @@ -390,7 +386,6 @@ SDF files, mesh files, textures and anything else to do with the functionality a 1. Add your world to the list of worlds found in the [`CMakeLists.txt` here](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/simulation/gz_bridge/CMakeLists.txt). This is required in order to allow `CMake` to generate correct targets. - - If you plan to use "normal" mode, add your world sdf to `Tools/simulation/gz/worlds/`. - If you plan to use _standalone_ mode, add your world SDF to `~/.simulation-gazebo/worlds/` diff --git a/docs/uk/simulation/community_supported_simulators.md b/docs/uk/simulation/community_supported_simulators.md index bc7940696b..26261eeb93 100644 --- a/docs/uk/simulation/community_supported_simulators.md +++ b/docs/uk/simulation/community_supported_simulators.md @@ -12,10 +12,10 @@ These simulators are not maintained, tested, or supported, by the core developme Інструменти мають різний рівень підтримки своїми спільнотами (деякі добре підтримують, інші - ні). Питання про ці інструменти повинні порушуватися на [форумах для обговорення](../contribute/support.md#forums-and-chat) -| Симулятор | Опис | -| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Simulation-In-Hardware](../sim_sih/README.md) (SIH) |

A simulator implemented in C++ as a PX4 module directly in the Firmware [code](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/simulation/simulator_sih). It can be ran in SITL directly on the computer or as an alternative to HITL offering a hard real-time simulation directly on the hardware autopilot.

Supported Vehicles: Quad, Hexa, Plane, Tailsitter, Standard VTOL, Ackermann Rover

| -| [FlightGear](../sim_flightgear/README.md) |

Симулятор який надає фізично та візуально реалістичні симуляції. Зокрема він може моделювати багато погодних умов, включаючи грози, сніг, дощ та град, а також може симулювати температурні режими та різні типи атмосферних течій. [Симуляція кількох засобів](../sim_flightgear/multi_vehicle.md) також підтримується.

Рухомі засоби, що підтримуються: Літак, Автожир, Ровер

| -| [JMAVSim](../sim_jmavsim/index.md) |

A simple multirotor/quad simulator. This was previously part of the PX4 development toolchain but was removed in favour of [Gazebo](../sim_gazebo_gz/index.md).

Supported Vehicles: Quad

| -| [JSBSim](../sim_jsbsim/README.md) |

Симулятор, який надає моделі просунутої динаміки польоту. Він може використовуватися для моделювання реалістичної динаміки польоту, заснованої на даних з аеродинамічної труби.

Рухомі засоби, що підтримуються: Літак, Квадрокоптер, Гексакоптер

| -| [AirSim](../sim_airsim/README.md) |

Міжплатформовий симулятор який надає фізично та візуально реалістичні симуляції. This simulator is resource intensive, and requires a significantly more powerful computer than the other simulators described here.

Supported Vehicles: Iris (MultiRotor model and a configuration for PX4 QuadRotor in the X configuration).

| +| Симулятор | Опис | +| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [Simulation-In-Hardware](../sim_sih/README.md) (SIH) |

A simulator implemented in C++ as a PX4 module directly in the Firmware [code](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/simulation/simulator_sih). It can be ran in SITL directly on the computer or as an alternative to HITL offering a hard real-time simulation directly on the hardware autopilot.

Supported Vehicles: Quad, Hexa, Plane, Tailsitter, Standard VTOL, Ackermann Rover

| +| [FlightGear](../sim_flightgear/README.md) |

Симулятор який надає фізично та візуально реалістичні симуляції. Зокрема він може моделювати багато погодних умов, включаючи грози, сніг, дощ та град, а також може симулювати температурні режими та різні типи атмосферних течій. [Симуляція кількох засобів](../sim_flightgear/multi_vehicle.md) також підтримується.

Рухомі засоби, що підтримуються: Літак, Автожир, Ровер

| +| [JMAVSim](../sim_jmavsim/index.md) |

A simple multirotor/quad simulator. This was previously part of the PX4 development toolchain but was removed in favour of [Gazebo](../sim_gazebo_gz/index.md).

Supported Vehicles: Quad

| +| [JSBSim](../sim_jsbsim/README.md) |

Симулятор, який надає моделі просунутої динаміки польоту. Він може використовуватися для моделювання реалістичної динаміки польоту, заснованої на даних з аеродинамічної труби.

Рухомі засоби, що підтримуються: Літак, Квадрокоптер, Гексакоптер

| +| [AirSim](../sim_airsim/README.md) |

Міжплатформовий симулятор який надає фізично та візуально реалістичні симуляції. This simulator is resource intensive, and requires a significantly more powerful computer than the other simulators described here.

Supported Vehicles: Iris (MultiRotor model and a configuration for PX4 QuadRotor in the X configuration).

| diff --git a/docs/uk/smart_batteries/rotoye_batmon.md b/docs/uk/smart_batteries/rotoye_batmon.md index 9050fe7efd..43f79d30c7 100644 --- a/docs/uk/smart_batteries/rotoye_batmon.md +++ b/docs/uk/smart_batteries/rotoye_batmon.md @@ -47,7 +47,7 @@ In _QGroundControl_: 3. Start the [batt_smbus driver](../modules/modules_driver.md) in the console. Наприклад, для запуску двох BatMons у одному підключенні: ```sh - batt_smbus start -X -b 1 -a 11 # External bus 1, address 0x0b + batt_smbus start -X -b 1 -a 11 # External bus 1, address 0x0b batt_smbus start -X -b 1 -a 12 # External bus 1, address 0x0c ``` diff --git a/docs/uk/test_and_ci/continous_integration.md b/docs/uk/test_and_ci/continous_integration.md index 2dfa556b90..dbf3b444a7 100644 --- a/docs/uk/test_and_ci/continous_integration.md +++ b/docs/uk/test_and_ci/continous_integration.md @@ -1,3 +1,194 @@ # Безперервна інтеграція -PX4 збірки і тестування виконуються використовуючи GitHub і сервер Jenkins . +PX4 uses GitHub Actions for continuous integration, with different workflows handling code builds, testing, and documentation. + +## Documentation CI + +The documentation pipeline handles building, deploying, and translating the PX4 User Guide. +All documentation CI is consolidated into a single orchestrator workflow organized in tiers. + +### Docs Orchestrator + +**Workflow file:** [`docs-orchestrator.yml`](https://github.com/PX4/PX4-Autopilot/blob/main/.github/workflows/docs-orchestrator.yml) + +This is the main documentation workflow. It runs on pull requests, pushes to `main` and `release/**` branches, and manual `workflow_dispatch` triggers, performing different jobs depending on the trigger event. +Jobs are organized in tiers, where each tier depends on the previous one completing successfully. + +#### Tier Structure + +| Tier | Job | PR | Push / Dispatch | Опис | +| ---- | -------------- | ----------------------------------------------- | --------------------------------- | -------------------------------------------------------------------------------- | +| T1 | Detect Changes | Так | — | Checks if source code files changed (triggers metadata regen) | +| T2 | PR Metadata | Yes (conditional) | — | Builds PX4 SITL and regenerates all auto-generated docs | +| T2 | Metadata Sync | — | Так | Builds PX4 SITL, regenerates metadata, auto-commits | +| T2 | Link Check | Так | — | Checks for broken links in changed files, posts PR comment | +| T3 | Build Site | Yes (if docs/source changed) | Yes (after T2) | Builds the VitePress documentation site | +| T4 | Deploy | — | Так | Deploys to AWS S3 | + +#### Pull Request Flow + +When a PR modifies files in `docs/**` or the orchestrator workflow file itself, the workflow validates the changes: + +```txt +PR Event + │ + ▼ +┌─────────────────────────────────────┐ +│ T1: Detect Changes │ +│ • Checks if src/msg/ROMFS changed │ +└─────────────────┬───────────────────┘ + │ + ┌───────┴───────┐ + ▼ ▼ +┌──────────────────┐ ┌─────────────────────────┐ +│ T2: PR Metadata │ │ T2: Link Check (~30s) │ +│ (conditional) │ │ • Detects changed .md │ +│ • Builds SITL │ │ • Runs filtered check │ +│ • Generates │ │ • Posts PR comment │ +│ metadata │ │ • Runs full check │ +│ • Builds │ └────────────┬────────────┘ +│ failsafe web │ │ +└────────┬─────────┘ │ + └───────────┬────────────┘ + ▼ +┌─────────────────────────────────────┐ +│ T3: Build Site (~7-10 min) │ +│ (skipped if only workflow YAML │ +│ changed — no docs/source changes) │ +│ • Builds VitePress site │ +│ • Verifies no build errors │ +└─────────────────┬───────────────────┘ + │ + ▼ + DONE +``` + +| Job | Duration | Опис | +| -------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **T1: Detect Changes** | ~10s | Determines if metadata regeneration is needed | +| **T2: PR Metadata** | ~10-15m | Rebuilds PX4 SITL and regenerates all metadata (only if source files changed) | +| **T2: Link Check** | ~30s | Checks for broken links in changed markdown files and posts a sticky comment to the PR (skipped on fork PRs) | +| **T3: Build Site** | ~7-10m | Builds the VitePress site to verify there are no build errors. Skipped when only the workflow YAML changed (no docs or source changes). | + +#### Push / Dispatch Flow (main/release branches) + +When changes are pushed to `main` or `release/**` branches (or a `workflow_dispatch` is triggered), the workflow regenerates metadata, builds, and deploys. +Only `main` and `release/*` branches are accepted for deploy — other branches will fail with a clear error. + +```txt +Push / Dispatch Event + │ + ▼ +┌─────────────────────────────────────┐ +│ T2: Metadata Sync (~10-15 min) │ +│ • Builds px4_sitl_default │ +│ • Generates parameter/airframe/ │ +│ module documentation │ +│ • Builds failsafe web simulator │ +│ • Formats with Prettier │ +│ • Auto-commits if changes detected │ +│ (with [skip ci]) │ +└─────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────┐ +│ T3: Build Site (~7-10 min) │ +│ • Builds VitePress site │ +│ • Uploads build artifact │ +└─────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────┐ +│ T4: Deploy (~3 min) │ +│ • Syncs to AWS S3 │ +│ • HTML: 60s cache │ +│ • Assets: 24h immutable cache │ +└─────────────────────────────────────┘ +``` + +| Job | Duration | Опис | +| ------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------ | +| **T2: Metadata Sync** | ~10-15m | Rebuilds PX4 SITL, regenerates all metadata, formats with Prettier, auto-commits with `[skip ci]` | +| **T3: Build Site** | ~7-10m | Builds the VitePress documentation site | +| **T4: Deploy** | ~3m | Syncs built site to AWS S3 (HTML: 60s cache, assets: 24h cache) | + +Crowdin upload is handled by a separate workflow (see below). + +#### Generated Metadata + +The metadata regeneration job creates the following auto-generated documentation: + +| Тип | Output | Опис | +| ------------------ | ------------------------------------------------ | --------------------------------------------------------------- | +| Параметри | `docs/en/advanced_config/parameter_reference.md` | Complete parameter reference | +| Планери | `docs/en/airframes/airframe_reference.md` | Airframe configurations | +| Модулі | `docs/en/modules/*.md` | Module documentation | +| Messages | `docs/en/msg_docs/*.md` | uORB message documentation | +| uORB Graphs | `docs/public/middleware/*.json` | Topic dependency graphs | +| Failsafe Simulator | `docs/public/config/failsafe/*` | Interactive failsafe simulator (WebAssembly) | + +:::warning +Do not manually edit the auto-generated files listed above. They are overwritten on every push to main. +::: + +#### Path Triggers + +The workflow triggers on different paths depending on the event: + +**Push** (main/release branches): + +| Path | Reason | +| ------------------------ | ------------------------------------- | +| `docs/**` | Documentation source files | +| `src/**` | Source code changes affect metadata | +| `msg/**` | Message definitions affect metadata | +| `ROMFS/**` | ROMFS files affect metadata | +| `Tools/module_config/**` | Module configuration affects metadata | + +**Pull Request:** + +| Path | Reason | +| ----------------------------------------- | ------------------------------ | +| `docs/**` | Documentation source files | +| `.github/workflows/docs-orchestrator.yml` | Changes to the workflow itself | + +Source-only changes on PRs are detected at runtime by the T1: Detect Changes job using [dorny/paths-filter](https://github.com/dorny/paths-filter), which conditionally triggers the T2: PR Metadata job. + +### Crowdin Download Workflow + +**Workflow file:** [`docs_crowdin_download.yml`](https://github.com/PX4/PX4-Autopilot/blob/main/.github/workflows/docs_crowdin_download.yml) + +This scheduled workflow downloads completed translations from Crowdin and creates pull requests. + +| Налаштування | Значення | +| -------------------- | ---------------------------------------------------------------------------------------------------------------- | +| **Schedule** | Every Sunday at 00:00 UTC | +| **Target Languages** | Korean (ko), Ukrainian (uk), Chinese Simplified (zh-CN) | + +**Process:** + +1. Downloads translations for each target language from Crowdin +2. Creates a separate PR for each language with new translations +3. PRs are labeled "Documentation" and assigned for review + +### Caching Strategy + +The workflows use caching to speed up builds: + +| Cache | Розмір | Ціль | +| --------------------------------- | --------------------- | -------------------------------------------------- | +| ccache | 1GB | C++ compilation cache for SITL builds | +| node_modules | ~26MB | Node.js dependencies for VitePress | + +### Infrastructure + +Jobs run on [runs-on](https://runs-on.com/) self-hosted runners with S3 cache: + +| Job | Runner | +| ---------------------------------- | ------------------------------------------------- | +| T1: Detect Changes | ubuntu-latest | +| T2: PR Metadata | 4 CPU (with px4-dev container) | +| T2: Metadata Sync | 4 CPU (with px4-dev container) | +| T2: Link Check | ubuntu-latest | +| T3: Build Site | 4 CPU | +| T4: Deploy | ubuntu-latest | diff --git a/docs/uk/test_and_ci/docker.md b/docs/uk/test_and_ci/docker.md index 1cb4ad8cdf..ee4f47ace8 100644 --- a/docs/uk/test_and_ci/docker.md +++ b/docs/uk/test_and_ci/docker.md @@ -1,12 +1,11 @@ # Docker контейнери для PX4 -Docker containers are provided for the complete [PX4 development toolchain](../dev_setup/dev_env.md#supported-targets) including NuttX and Linux based hardware, [Gazebo Classic](../sim_gazebo_classic/index.md) simulation, and [ROS](../simulation/ros_interface.md). +Docker containers are provided for the complete [PX4 development toolchain](../dev_setup/dev_env.md#supported-targets) including NuttX and Linux based hardware, [Gazebo](../sim_gazebo_gz/index.md) simulation, and [ROS 2](../ros2/user_guide.md). This topic shows how to use the [available docker containers](#px4_containers) to access the build environment in a local Linux computer. :::info -Dockerfiles and README can be found on [Github here](https://github.com/PX4/PX4-containers/tree/master?tab=readme-ov-file#container-hierarchy). -They are built automatically on [Docker Hub](https://hub.docker.com/u/px4io/). +The recommended `px4-dev` container is built from the [Dockerfile in the PX4-Autopilot source tree](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/setup/Dockerfile) by the [Container build workflow](https://github.com/PX4/PX4-Autopilot/actions/workflows/dev_container.yml). ::: ## Вимоги @@ -35,33 +34,36 @@ sudo usermod -aG docker $USER # Log in/out again before using docker! ``` -## Container Hierarchy {#px4_containers} +## px4-dev Container (Recommended) {#px4_containers} -The available containers are on [GitHub here](https://github.com/PX4/PX4-containers/tree/master?tab=readme-ov-file#container-hierarchy). +The **`px4-dev`** container is the recommended container for building PX4 firmware. +It is a single, multi-architecture container (linux/amd64 and linux/arm64) based on Ubuntu 24.04 that includes everything needed to build PX4 for NuttX hardware targets. -Вони дозволяють тестувати різні цілі збірки та конфігурації (включені інструменти можна зрозуміти з їх назв). -Контейнери є ієрархічними, тобто такими, що мають функціональність вихідних контейнерів. -For example, the partial hierarchy below shows that the docker container with NuttX build tools (`px4-dev-nuttx-focal`) does not include ROS 2, while the simulation containers do: +It is published to both registries simultaneously: -```plain -- px4io/px4-dev-base-focal - - px4io/px4-dev-nuttx-focal - - px4io/px4-dev-simulation-focal - - px4io/px4-dev-ros-noetic - - px4io/px4-dev-ros2-foxy - - px4io/px4-dev-ros2-rolling -- px4io/px4-dev-base-jammy - - px4io/px4-dev-nuttx-jammy -``` +- **GitHub Container Registry:** [ghcr.io/px4/px4-dev](https://github.com/PX4/PX4-Autopilot/pkgs/container/px4-dev) +- **Docker Hub:** [px4io/px4-dev](https://hub.docker.com/r/px4io/px4-dev) -The most recent version can be accessed using the `latest` tag: `px4io/px4-dev-nuttx-focal:latest` -(available tags are listed for each container on _hub.docker.com_. -For example, the `px4io/px4-dev-nuttx-focal` tags can be found on [hub.docker.com here](https://hub.docker.com/r/px4io/px4-dev-nuttx-focal/tags?page=1&ordering=last_updated)). +The container includes: + +- Ubuntu 24.04 base +- ARM cross-compiler (`gcc-arm-none-eabi`) and Xtensa compiler (for ESP32 targets) +- Build tools: `cmake`, `ninja`, `ccache`, `make` +- Python 3 with PX4 build dependencies +- NuttX toolchain libraries (`libnewlib-arm-none-eabi`, etc.) + +The container is built from the [Dockerfile](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/setup/Dockerfile) in the PX4 source tree using the [Container build workflow](https://github.com/PX4/PX4-Autopilot/actions/workflows/dev_container.yml). +Images are tagged with the PX4 version (e.g. `px4io/px4-dev:v1.16.0`). :::tip -Typically you should use a recent container, but not necessarily the `latest` (as this changes too often). +A `px4-sim` container with simulation tools (Gazebo Harmonic) is planned to complement `px4-dev` for simulation workflows. ::: +### Legacy Containers + +The older per-distro containers from [PX4/PX4-containers](https://github.com/PX4/PX4-containers) (e.g. `px4-dev-nuttx-jammy`, `px4-dev-ros2-humble`, etc.) are no longer recommended. +They will be replaced by `px4-dev` (for builds) and the upcoming `px4-sim` (for simulation). + ## Використання Docker контейнера Наступні інструкції показують, як зібрати вихідний код PX4 на основному комп'ютері за допомогою інструментарію, що працює у docker контейнері. @@ -121,23 +123,23 @@ docker run -it --privileged \ - ``: The host computer directory to be mapped to `` in the container. This should normally be the **PX4-Autopilot** directory. - ``: The location of the shared (source) directory when inside the container. - ``: A name for the docker container being created. Це потім можна використовувати, якщо потрібно посилатись на контейнер знову. -- `:`: The container with version tag to start - e.g.: `px4io/px4-dev-ros:2017-10-23`. +- `:`: The container with version tag to start - e.g.: `px4io/px4-dev:v1.16.0`. - ``: The command to invoke on the new container. Наприклад, `bash` is used to open a bash shell in the container. The concrete example below shows how to open a bash shell and share the directory **~/src/PX4-Autopilot** on the host computer. ```sh -# дозвольте доступ до xhost з контейнера +# enable access to xhost from the container xhost + -# запуск docker та оболонки bash +# Run docker and open bash shell docker run -it --privileged \ --env=LOCAL_USER_ID="$(id -u)" \ -v ~/src/PX4-Autopilot:/src/PX4-Autopilot/:rw \ -v /tmp/.X11-unix:/tmp/.X11-unix:ro \ -e DISPLAY=:0 \ --network host \ ---name=px4-ros px4io/px4-dev-ros2-foxy:2022-07-31 bash +--name=px4-dev px4io/px4-dev:v1.16.0 bash ``` :::info @@ -155,7 +157,7 @@ On other hosts you might iterate the value of `0` in `-e DISPLAY=:0` until the " ```sh cd src/PX4-Autopilot #This is -make px4_sitl_default gazebo-classic +make px4_sitl gz_x500 ``` ### Повторний вхід в контейнер @@ -219,7 +221,7 @@ The example above uses the line `--env=LOCAL_USER_ID="$(id -u)"` to create a use #### Проблеми з драйверами графіки -Можливо, що запуск Gazebo Classic призведе до подібного повідомлення про помилку: +It's possible that running Gazebo will result in a similar error message like the following: ```sh libGL error: failed to load driver: swrast @@ -239,7 +241,7 @@ libGL error: failed to load driver: swrast Наступна конфігурація протестована: -- OS X з підтримкою VMWare Fusion і Ubuntu 14.04 (Docker контейнер з підтримкою GUI в Parallels призводить до падіння X-Server). +- OS X with VMWare Fusion and Ubuntu 22.04 (Docker container with GUI support on Parallels make the X-Server crash). **Memory** diff --git a/docs/uk/uart/user_configurable_serial_driver.md b/docs/uk/uart/user_configurable_serial_driver.md index 4164dfbf84..ac764cf213 100644 --- a/docs/uk/uart/user_configurable_serial_driver.md +++ b/docs/uk/uart/user_configurable_serial_driver.md @@ -25,7 +25,6 @@ Аби зробити драйвер налаштовуваним: 1. Створіть конфігураційний файл модуля YAML: - - Add a new file in the driver's source directory named **module.yaml** - Вставте наступний текст і підлаштуйте за потреби: From 18c176beef4ff85ef0cdb0552fbefe5048124337 Mon Sep 17 00:00:00 2001 From: PX4 Build Bot Date: Wed, 18 Feb 2026 16:44:57 +1100 Subject: [PATCH 82/83] New Crowdin translations - ko (#26487) Co-authored-by: Crowdin Bot --- docs/ko/SUMMARY.md | 4 +- .../ark_jetson_pab_carrier.md | 3 - .../holybro_pixhawk_rpi_cm4_baseboard.md | 2 - docs/ko/companion_computer/pixhawk_rpi.md | 2 - .../computer_vision/collision_prevention.md | 1 - docs/ko/concept/flight_tasks.md | 1 - docs/ko/config/_autotune.md | 9 +- docs/ko/config/level_horizon_calibration.md | 1 - docs/ko/config_heli/index.md | 1 - .../pid_tuning_guide_multicopter_basic.md | 1 - docs/ko/config_rover/index.md | 43 +- docs/ko/dev_airframes/adding_a_new_frame.md | 1 - docs/ko/dev_setup/building_px4.md | 60 +- docs/ko/dev_setup/config_initial.md | 2 +- docs/ko/dev_setup/dev_env.md | 6 +- docs/ko/dev_setup/dev_env_linux_centos.md | 5 +- docs/ko/dev_setup/dev_env_linux_ubuntu.md | 26 +- docs/ko/dev_setup/dev_env_windows_wsl.md | 16 +- docs/ko/dev_setup/vscode.md | 5 +- docs/ko/dronecan/holybro_h_rtk_zed_f9p_gps.md | 1 - docs/ko/esc/ark_4in1_esc.md | 2 - docs/ko/flight_controller/airlink.md | 22 +- .../autopilot_manufacturer_supported.md | 1 + .../flight_controller/gearup_airbrainh743.md | 96 + docs/ko/flight_modes/offboard.md | 28 +- docs/ko/flight_modes_fw/mission.md | 1 - docs/ko/flight_modes_mc/follow_me.md | 1 - docs/ko/flight_modes_mc/mission.md | 1 - docs/ko/flight_modes_vtol/return.md | 1 - docs/ko/flight_stack/controller_diagrams.md | 6 +- docs/ko/flying/package_delivery_mission.md | 1 - docs/ko/frames_rover/index.md | 6 + docs/ko/getting_started/led_meanings.md | 21 +- docs/ko/getting_started/tunes.md | 2 +- docs/ko/gps_compass/rtk_gps.md | 1 - docs/ko/index.md | 93 +- docs/ko/middleware/dds_topics.md | 374 ++-- docs/ko/modules/module_template.md | 4 +- docs/ko/modules/modules_driver.md | 140 +- docs/ko/modules/modules_template.md | 31 + docs/ko/msg_docs/ActionRequest.md | 52 +- docs/ko/msg_docs/ActuatorArmed.md | 29 +- docs/ko/msg_docs/ActuatorControlsStatus.md | 23 +- docs/ko/msg_docs/ActuatorMotors.md | 35 +- docs/ko/msg_docs/ActuatorOutputs.md | 31 +- docs/ko/msg_docs/ActuatorServos.md | 33 +- docs/ko/msg_docs/ActuatorServosTrim.md | 31 +- docs/ko/msg_docs/ActuatorTest.md | 38 +- docs/ko/msg_docs/AdcReport.md | 27 +- docs/ko/msg_docs/Airspeed.md | 28 +- docs/ko/msg_docs/AirspeedValidated.md | 52 +- docs/ko/msg_docs/AirspeedValidatedV0.md | 38 +- docs/ko/msg_docs/AirspeedWind.md | 46 +- docs/ko/msg_docs/ArmingCheckReply.md | 59 +- docs/ko/msg_docs/ArmingCheckReplyV0.md | 49 +- docs/ko/msg_docs/ArmingCheckRequest.md | 32 +- docs/ko/msg_docs/ArmingCheckRequestV0.md | 29 +- .../msg_docs/AutotuneAttitudeControlStatus.md | 62 +- docs/ko/msg_docs/BatteryInfo.md | 26 +- docs/ko/msg_docs/BatteryStatus.md | 112 +- docs/ko/msg_docs/BatteryStatusV0.md | 113 +- docs/ko/msg_docs/ButtonEvent.md | 29 +- docs/ko/msg_docs/CameraCapture.md | 30 +- docs/ko/msg_docs/CameraStatus.md | 24 +- docs/ko/msg_docs/CameraTrigger.md | 31 +- docs/ko/msg_docs/CanInterfaceStatus.md | 26 +- docs/ko/msg_docs/CellularStatus.md | 70 +- docs/ko/msg_docs/CollisionConstraints.md | 27 +- docs/ko/msg_docs/ConfigOverrides.md | 39 +- docs/ko/msg_docs/ConfigOverridesV0.md | 38 +- docs/ko/msg_docs/ControlAllocatorStatus.md | 39 +- docs/ko/msg_docs/Cpuload.md | 24 +- docs/ko/msg_docs/DatamanRequest.md | 28 +- docs/ko/msg_docs/DatamanResponse.md | 39 +- docs/ko/msg_docs/DebugArray.md | 31 +- docs/ko/msg_docs/DebugKeyValue.md | 24 +- docs/ko/msg_docs/DebugValue.md | 24 +- docs/ko/msg_docs/DebugVect.md | 26 +- docs/ko/msg_docs/DeviceInformation.md | 54 +- docs/ko/msg_docs/DifferentialPressure.md | 29 +- docs/ko/msg_docs/DistanceSensor.md | 63 +- .../DistanceSensorModeChangeRequest.md | 30 +- docs/ko/msg_docs/DronecanNodeStatus.md | 42 +- docs/ko/msg_docs/Ekf2Timestamps.md | 39 +- docs/ko/msg_docs/EscReport.md | 61 +- docs/ko/msg_docs/EscStatus.md | 40 +- docs/ko/msg_docs/EstimatorAidSource1d.md | 35 +- docs/ko/msg_docs/EstimatorAidSource2d.md | 35 +- docs/ko/msg_docs/EstimatorAidSource3d.md | 35 +- docs/ko/msg_docs/EstimatorBias.md | 29 +- docs/ko/msg_docs/EstimatorBias3d.md | 29 +- docs/ko/msg_docs/EstimatorEventFlags.md | 41 +- docs/ko/msg_docs/EstimatorGpsStatus.md | 38 +- docs/ko/msg_docs/EstimatorInnovations.md | 43 +- docs/ko/msg_docs/EstimatorSelectorStatus.md | 37 +- docs/ko/msg_docs/EstimatorSensorBias.md | 44 +- docs/ko/msg_docs/EstimatorStates.md | 26 +- docs/ko/msg_docs/EstimatorStatus.md | 108 +- docs/ko/msg_docs/EstimatorStatusFlags.md | 98 +- docs/ko/msg_docs/Event.md | 35 +- docs/ko/msg_docs/EventV0.md | 36 +- docs/ko/msg_docs/FailsafeFlags.md | 63 +- docs/ko/msg_docs/FailureDetectorStatus.md | 33 +- docs/ko/msg_docs/FigureEightStatus.md | 29 +- .../FixedWingLateralGuidanceStatus.md | 33 +- docs/ko/msg_docs/FixedWingLateralSetpoint.md | 35 +- docs/ko/msg_docs/FixedWingLateralStatus.md | 27 +- .../msg_docs/FixedWingLongitudinalSetpoint.md | 38 +- docs/ko/msg_docs/FixedWingRunwayControl.md | 45 +- docs/ko/msg_docs/FlightPhaseEstimation.md | 32 +- docs/ko/msg_docs/FollowTarget.md | 29 +- docs/ko/msg_docs/FollowTargetEstimator.md | 33 +- docs/ko/msg_docs/FollowTargetStatus.md | 29 +- docs/ko/msg_docs/FuelTankStatus.md | 38 +- docs/ko/msg_docs/GainCompression.md | 25 +- docs/ko/msg_docs/GeneratorStatus.md | 61 +- docs/ko/msg_docs/GeofenceResult.md | 37 +- docs/ko/msg_docs/GeofenceStatus.md | 31 +- docs/ko/msg_docs/GimbalControls.md | 34 +- .../ko/msg_docs/GimbalDeviceAttitudeStatus.md | 46 +- docs/ko/msg_docs/GimbalDeviceInformation.md | 54 +- docs/ko/msg_docs/GimbalDeviceSetAttitude.md | 39 +- docs/ko/msg_docs/GimbalManagerInformation.md | 49 +- docs/ko/msg_docs/GimbalManagerSetAttitude.md | 43 +- .../msg_docs/GimbalManagerSetManualControl.md | 42 +- docs/ko/msg_docs/GimbalManagerStatus.md | 28 +- docs/ko/msg_docs/GotoSetpoint.md | 44 +- docs/ko/msg_docs/GpioConfig.md | 44 +- docs/ko/msg_docs/GpioIn.md | 32 +- docs/ko/msg_docs/GpioOut.md | 27 +- docs/ko/msg_docs/GpioRequest.md | 25 +- docs/ko/msg_docs/GpsDump.md | 34 +- docs/ko/msg_docs/GpsInjectData.md | 33 +- docs/ko/msg_docs/Gripper.md | 32 +- docs/ko/msg_docs/HealthReport.md | 29 +- docs/ko/msg_docs/HeaterStatus.md | 40 +- docs/ko/msg_docs/HomePosition.md | 42 +- docs/ko/msg_docs/HomePositionV0.md | 40 +- docs/ko/msg_docs/HoverThrustEstimate.md | 30 +- docs/ko/msg_docs/InputRc.md | 59 +- .../InternalCombustionEngineControl.md | 27 +- .../InternalCombustionEngineStatus.md | 77 +- docs/ko/msg_docs/IridiumsbdStatus.md | 36 +- docs/ko/msg_docs/IrlockReport.md | 29 +- docs/ko/msg_docs/LandingGear.md | 31 +- docs/ko/msg_docs/LandingGearWheel.md | 23 +- docs/ko/msg_docs/LandingTargetInnovations.md | 26 +- docs/ko/msg_docs/LandingTargetPose.md | 40 +- .../msg_docs/LateralControlConfiguration.md | 32 +- docs/ko/msg_docs/LaunchDetectionStatus.md | 33 +- docs/ko/msg_docs/LedControl.md | 54 +- docs/ko/msg_docs/LogMessage.md | 32 +- docs/ko/msg_docs/LoggerStatus.md | 42 +- .../LongitudinalControlConfiguration.md | 41 +- docs/ko/msg_docs/MagWorkerData.md | 37 +- docs/ko/msg_docs/MagnetometerBiasEstimate.md | 27 +- docs/ko/msg_docs/ManualControlSetpoint.md | 52 +- docs/ko/msg_docs/ManualControlSwitches.md | 54 +- docs/ko/msg_docs/MavlinkLog.md | 30 +- docs/ko/msg_docs/MavlinkTunnel.md | 47 +- docs/ko/msg_docs/MessageFormatRequest.md | 30 +- docs/ko/msg_docs/MessageFormatResponse.md | 26 +- docs/ko/msg_docs/Mission.md | 32 +- docs/ko/msg_docs/MissionResult.md | 36 +- docs/ko/msg_docs/ModeCompleted.md | 37 +- docs/ko/msg_docs/MountOrientation.md | 23 +- docs/ko/msg_docs/NavigatorMissionItem.md | 38 +- docs/ko/msg_docs/NavigatorStatus.md | 34 +- docs/ko/msg_docs/NeuralControl.md | 28 +- .../ko/msg_docs/NormalizedUnsignedSetpoint.md | 23 +- docs/ko/msg_docs/ObstacleDistance.md | 41 +- docs/ko/msg_docs/OffboardControlMode.md | 31 +- docs/ko/msg_docs/OnboardComputerStatus.md | 43 +- docs/ko/msg_docs/OpenDroneIdArmStatus.md | 24 +- docs/ko/msg_docs/OpenDroneIdOperatorId.md | 25 +- docs/ko/msg_docs/OpenDroneIdSelfId.md | 25 +- docs/ko/msg_docs/OpenDroneIdSystem.md | 34 +- docs/ko/msg_docs/OrbTest.md | 23 +- docs/ko/msg_docs/OrbTestLarge.md | 24 +- docs/ko/msg_docs/OrbTestMedium.md | 30 +- docs/ko/msg_docs/OrbitStatus.md | 41 +- docs/ko/msg_docs/ParameterResetRequest.md | 32 +- docs/ko/msg_docs/ParameterSetUsedRequest.md | 31 +- docs/ko/msg_docs/ParameterSetValueRequest.md | 33 +- docs/ko/msg_docs/ParameterSetValueResponse.md | 32 +- docs/ko/msg_docs/ParameterUpdate.md | 32 +- docs/ko/msg_docs/Ping.md | 28 +- .../PositionControllerLandingStatus.md | 35 +- docs/ko/msg_docs/PositionControllerStatus.md | 30 +- docs/ko/msg_docs/PositionSetpoint.md | 56 +- docs/ko/msg_docs/PositionSetpointTriplet.md | 28 +- docs/ko/msg_docs/PowerButtonState.md | 34 +- docs/ko/msg_docs/PowerMonitor.md | 35 +- docs/ko/msg_docs/PpsCapture.md | 24 +- docs/ko/msg_docs/PurePursuitStatus.md | 29 +- docs/ko/msg_docs/PwmInput.md | 25 +- docs/ko/msg_docs/Px4ioStatus.md | 53 +- docs/ko/msg_docs/QshellReq.md | 31 +- docs/ko/msg_docs/QshellRetval.md | 24 +- docs/ko/msg_docs/RadioStatus.md | 30 +- docs/ko/msg_docs/RaptorInput.md | 59 + docs/ko/msg_docs/RaptorStatus.md | 109 ++ docs/ko/msg_docs/RateCtrlStatus.md | 25 +- docs/ko/msg_docs/RcChannels.md | 65 +- docs/ko/msg_docs/RcParameterMap.md | 36 +- docs/ko/msg_docs/RegisterExtComponentReply.md | 37 +- .../msg_docs/RegisterExtComponentReplyV0.md | 36 +- .../msg_docs/RegisterExtComponentRequest.md | 42 +- .../msg_docs/RegisterExtComponentRequestV0.md | 41 +- docs/ko/msg_docs/RoverAttitudeSetpoint.md | 25 +- docs/ko/msg_docs/RoverAttitudeStatus.md | 26 +- docs/ko/msg_docs/RoverPositionSetpoint.md | 29 +- docs/ko/msg_docs/RoverRateSetpoint.md | 25 +- docs/ko/msg_docs/RoverRateStatus.md | 27 +- docs/ko/msg_docs/RoverSpeedSetpoint.md | 26 +- docs/ko/msg_docs/RoverSpeedStatus.md | 30 +- docs/ko/msg_docs/RoverSteeringSetpoint.md | 25 +- docs/ko/msg_docs/RoverThrottleSetpoint.md | 26 +- docs/ko/msg_docs/Rpm.md | 24 +- docs/ko/msg_docs/RtlStatus.md | 37 +- docs/ko/msg_docs/RtlTimeEstimate.md | 25 +- docs/ko/msg_docs/SatelliteInfo.md | 35 +- docs/ko/msg_docs/SensorAccel.md | 37 +- docs/ko/msg_docs/SensorAccelFifo.md | 30 +- docs/ko/msg_docs/SensorAirflow.md | 26 +- docs/ko/msg_docs/SensorBaro.md | 35 +- docs/ko/msg_docs/SensorCombined.md | 44 +- docs/ko/msg_docs/SensorCorrection.md | 48 +- docs/ko/msg_docs/SensorGnssRelative.md | 42 +- docs/ko/msg_docs/SensorGnssStatus.md | 30 +- docs/ko/msg_docs/SensorGps.md | 97 +- docs/ko/msg_docs/SensorGyro.md | 37 +- docs/ko/msg_docs/SensorGyroFft.md | 32 +- docs/ko/msg_docs/SensorGyroFifo.md | 36 +- docs/ko/msg_docs/SensorHygrometer.md | 26 +- docs/ko/msg_docs/SensorMag.md | 35 +- docs/ko/msg_docs/SensorOpticalFlow.md | 45 +- docs/ko/msg_docs/SensorPreflightMag.md | 26 +- docs/ko/msg_docs/SensorSelection.md | 27 +- docs/ko/msg_docs/SensorTemp.md | 24 +- docs/ko/msg_docs/SensorUwb.md | 45 +- docs/ko/msg_docs/SensorsStatus.md | 29 +- docs/ko/msg_docs/SensorsStatusImu.md | 32 +- docs/ko/msg_docs/SystemPower.md | 48 +- docs/ko/msg_docs/TakeoffStatus.md | 37 +- docs/ko/msg_docs/TaskStackInfo.md | 32 +- docs/ko/msg_docs/TecsStatus.md | 46 +- docs/ko/msg_docs/TelemetryStatus.md | 70 +- docs/ko/msg_docs/TiltrotorExtraControls.md | 24 +- docs/ko/msg_docs/TimesyncStatus.md | 35 +- docs/ko/msg_docs/TrajectorySetpoint.md | 39 +- docs/ko/msg_docs/TrajectorySetpoint6dof.md | 31 +- docs/ko/msg_docs/TransponderReport.md | 70 +- docs/ko/msg_docs/TuneControl.md | 61 +- docs/ko/msg_docs/UavcanParameterRequest.md | 44 +- docs/ko/msg_docs/UavcanParameterValue.md | 31 +- docs/ko/msg_docs/UlogStream.md | 37 +- docs/ko/msg_docs/UlogStreamAck.md | 33 +- docs/ko/msg_docs/UnregisterExtComponent.md | 32 +- docs/ko/msg_docs/VehicleAcceleration.md | 25 +- docs/ko/msg_docs/VehicleAirData.md | 32 +- .../VehicleAngularAccelerationSetpoint.md | 25 +- docs/ko/msg_docs/VehicleAngularVelocity.md | 31 +- docs/ko/msg_docs/VehicleAttitude.md | 35 +- docs/ko/msg_docs/VehicleAttitudeSetpoint.md | 31 +- docs/ko/msg_docs/VehicleAttitudeSetpointV0.md | 33 +- docs/ko/msg_docs/VehicleCommand.md | 1582 ++++++++++++++++- docs/ko/msg_docs/VehicleCommandAck.md | 55 +- docs/ko/msg_docs/VehicleConstraints.md | 28 +- docs/ko/msg_docs/VehicleControlMode.md | 43 +- docs/ko/msg_docs/VehicleGlobalPosition.md | 51 +- docs/ko/msg_docs/VehicleImu.md | 41 +- docs/ko/msg_docs/VehicleImuStatus.md | 41 +- docs/ko/msg_docs/VehicleLandDetected.md | 40 +- docs/ko/msg_docs/VehicleLocalPosition.md | 86 +- .../msg_docs/VehicleLocalPositionSetpoint.md | 36 +- docs/ko/msg_docs/VehicleLocalPositionV0.md | 85 +- docs/ko/msg_docs/VehicleMagnetometer.md | 27 +- docs/ko/msg_docs/VehicleOdometry.md | 61 +- docs/ko/msg_docs/VehicleOpticalFlow.md | 32 +- docs/ko/msg_docs/VehicleOpticalFlowVel.md | 32 +- docs/ko/msg_docs/VehicleRatesSetpoint.md | 33 +- docs/ko/msg_docs/VehicleRoi.md | 42 +- docs/ko/msg_docs/VehicleStatus.md | 130 +- docs/ko/msg_docs/VehicleStatusV0.md | 137 +- docs/ko/msg_docs/VehicleThrustSetpoint.md | 25 +- docs/ko/msg_docs/VehicleTorqueSetpoint.md | 25 +- docs/ko/msg_docs/VelocityLimits.md | 27 +- docs/ko/msg_docs/VtolVehicleStatus.md | 37 +- docs/ko/msg_docs/Vtx.md | 84 + docs/ko/msg_docs/WheelEncoders.md | 24 +- docs/ko/msg_docs/Wind.md | 39 +- docs/ko/msg_docs/YawEstimatorStatus.md | 30 +- docs/ko/msg_docs/index.md | 260 ++- docs/ko/peripherals/remote_id.md | 1 - .../power_module/ark_12s_pab_power_module.md | 4 - docs/ko/releases/1.13.md | 1 - docs/ko/releases/index.md | 6 +- docs/ko/releases/release_process.md | 301 ++++ docs/ko/ros/mavros_custom_messages.md | 19 +- docs/ko/ros/mavros_installation.md | 4 +- docs/ko/ros2/px4_ros2_control_interface.md | 2 +- docs/ko/sensor/microstrain.md | 20 - docs/ko/sensor/optical_flow.md | 2 +- docs/ko/sensor/sbgecom.md | 4 +- docs/ko/sensor/sfxx_lidar.md | 2 +- docs/ko/sensor/vectornav.md | 1 - docs/ko/sensor_bus/i2c_development.md | 2 +- docs/ko/sim_gazebo_gz/index.md | 5 - .../community_supported_simulators.md | 14 +- docs/ko/smart_batteries/rotoye_batmon.md | 2 +- docs/ko/test_and_ci/continous_integration.md | 193 +- docs/ko/test_and_ci/docker.md | 56 +- .../uart/user_configurable_serial_driver.md | 1 - 314 files changed, 11938 insertions(+), 1357 deletions(-) create mode 100644 docs/ko/flight_controller/gearup_airbrainh743.md create mode 100644 docs/ko/msg_docs/RaptorInput.md create mode 100644 docs/ko/msg_docs/RaptorStatus.md create mode 100644 docs/ko/msg_docs/Vtx.md create mode 100644 docs/ko/releases/release_process.md diff --git a/docs/ko/SUMMARY.md b/docs/ko/SUMMARY.md index 844175e86c..2f637e2a44 100644 --- a/docs/ko/SUMMARY.md +++ b/docs/ko/SUMMARY.md @@ -179,6 +179,7 @@ - [CubePilot Cube Orange (CubePilot)](flight_controller/cubepilot_cube_orange.md) - [CubePilot Cube Yellow (CubePilot)](flight_controller/cubepilot_cube_yellow.md) - [Cube 배선 퀵 스타트](assembly/quick_start_cube.md) + - [Gear Up AirBrainH743](flight_controller/gearup_airbrainh743.md) - [Holybro Kakute H7v2](flight_controller/kakuteh7v2.md) - [Holybro Kakute H7mini](flight_controller/kakuteh7mini.md) - [Holybro Kakute H7](flight_controller/kakuteh7.md) @@ -255,7 +256,7 @@ - [Benewake TFmini 라이다](sensor/tfmini.md) - [LeddarOne 라이다](sensor/leddar_one.md) - [Lidar-Lite](sensor/lidar_lite.md) - - [Lightware Lidars (SF/LW)](sensor/sfxx_lidar.md) + - [Lightware Lidars (SF/LW/GRF)](sensor/sfxx_lidar.md) - [Lightware SF45 Rotary Lidar](sensor/sf45_rotating_lidar.md) - [TeraRanger ](sensor/teraranger.md) - [✘ Lanbao PSK-CM8JL65-CC5](sensor/cm8jl65_ir_distance_sensor.md) @@ -932,6 +933,7 @@ - [라이센스](contribute/licenses.md) - [출시](releases/index.md) + - [Release Process](releases/release_process.md) - [main (alpha)](releases/main.md) - [1.17 (alpha)](releases/1.17.md) - [1.16 (stable)](releases/1.16.md) diff --git a/docs/ko/companion_computer/ark_jetson_pab_carrier.md b/docs/ko/companion_computer/ark_jetson_pab_carrier.md index 95a4e26d51..99f683dcb3 100644 --- a/docs/ko/companion_computer/ark_jetson_pab_carrier.md +++ b/docs/ko/companion_computer/ark_jetson_pab_carrier.md @@ -12,19 +12,16 @@ The [ARK Jetson Pixhawk Autopilot Bus (PAB) Carrier](https://arkelectron.gitbook ## 사양 - **Power Requirements** - - 5V - 4A minimum (dependent on usage and peripherals) - **Additional Features** - - Pixhawk Autopilot Bus (PAB) Form Factor ([PAB Standard](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-010%20Pixhawk%20Autopilot%20Bus%20Standard.pdf)) - MicroSD Slot - USA-built, NDAA compliant - Integrated 1W heater for sensor stability in extreme conditions - **Physical Details** - - Weight: - Without Jetson and Flight Controller – 80g - With Jetson, no heatsink or Flight Controller – 108g diff --git a/docs/ko/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md b/docs/ko/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md index 8229e9454e..0f062e642b 100644 --- a/docs/ko/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md +++ b/docs/ko/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md @@ -170,7 +170,6 @@ To enable this MAVLink instance on the FC: ![Image of baseboard showing FC USB-C connector](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/baseboard_fc_usb_c.jpg) 2. [Set the parameters](../advanced_config/parameters.md): - - `MAV_1_CONFIG` = `102` - `MAV_1_MODE = 2` - `SER_TEL2_BAUD` = `921600` @@ -184,7 +183,6 @@ On the RPi side: 1. Connect to the RPi (using WiFi, a router, or a WiFi Dongle). 2. Enable the RPi serial port by running `RPi-config` - - Go to `3 Interface Options`, then `I6 Serial Port`. Then choose: - `login shell accessible over serial → No` diff --git a/docs/ko/companion_computer/pixhawk_rpi.md b/docs/ko/companion_computer/pixhawk_rpi.md index 8dc16701da..070dbd0b3e 100644 --- a/docs/ko/companion_computer/pixhawk_rpi.md +++ b/docs/ko/companion_computer/pixhawk_rpi.md @@ -145,7 +145,6 @@ Enter the following commands (in sequence) a terminal to configure Ubuntu for RP ``` 3. Go to the **Interface Option** and then click **Serial Port**. - - Select **No** to disable serial login shell. - Select **Yes** to enable the serial interface. - Click **Finish** and restart the RPi. @@ -164,7 +163,6 @@ Enter the following commands (in sequence) a terminal to configure Ubuntu for RP ``` 6. Then save the file and restart the RPi. - - In `nano` you can save the file using the following sequence of keyboard shortcuts: **ctrl+x**, **ctrl+y**, **Enter**. 7. Check that the serial port is available. diff --git a/docs/ko/computer_vision/collision_prevention.md b/docs/ko/computer_vision/collision_prevention.md index b8e9a0ef2a..12d78ce16b 100644 --- a/docs/ko/computer_vision/collision_prevention.md +++ b/docs/ko/computer_vision/collision_prevention.md @@ -214,7 +214,6 @@ The Lua script works by extracting the `obstacle_distance_fused` data at each ti 3. Open PlotJuggler and navigate to the **Tools > Reactive Script Editor** section. In the **Script Editor** tab, add following scripts in the appropriate sections: - - **Global code, executed once:** ```lua diff --git a/docs/ko/concept/flight_tasks.md b/docs/ko/concept/flight_tasks.md index d8316fa1ba..6ffe26163b 100644 --- a/docs/ko/concept/flight_tasks.md +++ b/docs/ko/concept/flight_tasks.md @@ -33,7 +33,6 @@ The instructions below might be used to create a task named _MyTask_: - FlightTaskMyTask.cpp 3. Update **CMakeLists.txt** for the new task - - Copy the contents of the **CMakeLists.txt** for another task - e.g. [Orbit/CMakeLists.txt](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/flight_mode_manager/tasks/Orbit/CMakeLists.txt) - Update the copyright to the current year diff --git a/docs/ko/config/_autotune.md b/docs/ko/config/_autotune.md index ec9ec69753..932f43efc7 100644 --- a/docs/ko/config/_autotune.md +++ b/docs/ko/config/_autotune.md @@ -84,16 +84,9 @@ The test steps are: If an [Enable/Disable Autotune Switch](#enable-disable-autotune-switch) is configured you can just toggle the switch to the "enabled" position.
- 1. In QGroundControl, open the menu **Vehicle setup > PID Tuning**: - ![Tuning Setup > Autotune Enabled](../../assets/qgc/setup/autotune/autotune.png) - - 2. Select either the _Rate Controller_ or _Attitude Controller_ tabs. - - 3. Ensure that the **Autotune enabled** button is enabled (this will display the **Autotune** button and remove the manual tuning selectors). - - 4. Read the warning popup and click on **OK** to start tuning. + ![Tuning Setup > Autotune Enabled](../../assets/qgc/setup/autotune/autotune.png) 2. Select either the _Rate Controller_ or _Attitude Controller_ tabs. 3. Ensure that the **Autotune enabled** button is enabled (this will display the **Autotune** button and remove the manual tuning selectors). 4. Read the warning popup and click on **OK** to start tuning.
diff --git a/docs/ko/config/level_horizon_calibration.md b/docs/ko/config/level_horizon_calibration.md index a3769d8e9f..3e9fd0c508 100644 --- a/docs/ko/config/level_horizon_calibration.md +++ b/docs/ko/config/level_horizon_calibration.md @@ -22,7 +22,6 @@ Performing this calibration step is only recommended if the autopilot's orientat ::: 4. Place the vehicle in its level flight orientation on a level surface: - - For planes this is the position during level flight (planes tend to have their wings slightly pitched up!) - For copters this is the hover position. diff --git a/docs/ko/config_heli/index.md b/docs/ko/config_heli/index.md index bfa800eca5..5167e401bd 100644 --- a/docs/ko/config_heli/index.md +++ b/docs/ko/config_heli/index.md @@ -77,7 +77,6 @@ To setup and configure a helicopter: 3. Remove the rotor blades and propellers 4. Assign motors and servos to outputs and test (also in [Actuator configuration](../config/actuators.md)): - 1. Assign the [motors and servos to the outputs](../config/actuators.md#actuator-outputs). 2. Power the vehicle with a battery and use the [actuator testing sliders](../config/actuators.md#actuator-testing) to validate correct servo and motor assignment and direction. diff --git a/docs/ko/config_mc/pid_tuning_guide_multicopter_basic.md b/docs/ko/config_mc/pid_tuning_guide_multicopter_basic.md index efc5ebcfe7..c17c455ddd 100644 --- a/docs/ko/config_mc/pid_tuning_guide_multicopter_basic.md +++ b/docs/ko/config_mc/pid_tuning_guide_multicopter_basic.md @@ -140,7 +140,6 @@ Make sure to have assigned a [Kill switch](../config/safety.md#emergency-switche 13. 모든 축에서 자세 콘트롤러에 대하여 튜닝 프로세스를 반복하십시오. 14. Repeat the tuning process for the velocity and positions controllers (on all the axes). - - Use Position mode when tuning these controllers - Select the **Simple position control** option in the _Position control mode ..._ selector (this allows direct control for the generation of step inputs) diff --git a/docs/ko/config_rover/index.md b/docs/ko/config_rover/index.md index 17af2f6742..aff8b6389a 100644 --- a/docs/ko/config_rover/index.md +++ b/docs/ko/config_rover/index.md @@ -18,28 +18,37 @@ A drive mode will only work properly if all the configuration for the preceding ## Flashing the Rover Build -Rovers use a custom build that must be flashed onto your flight controller instead of the default PX4 build: +Rover is built as a [firmware variant](../dev_setup/building_px4.md#px4-make-build-targets), and must be installed as "Custom Firmware" in QGC (other vehicles are present in the default variant). -1. First build the rover firmware for your flight controller from the `main` branch (there is no release build, so you can't just select this build from QGroundControl). +The release versions of Rover firmware for different boards are attached to the associated GitHub release tag. +For example, you can find `px4_fmu-v5x_rover.px4` on [PX4-Autopilot/releases/tag/v1.16.1](https://github.com/PX4/PX4-Autopilot/releases/tag/v1.16.1). +For the `main` branch version of Rover you will need to [build the firmware](#building-rover). - To build for rover with the `make` command, replace the `_default` suffix with `_rover`. - For example, to build rover for px4_fmu-v6x boards, you would use the command: +Load the firmware onto your flight controller as "Custom Firmware" (see [Loading Firmware > Installing PX4 Main, Beta or Custom Firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware)). - ```sh - make px4_fmu-v6x_rover - ``` +## Building Rover - ::: info - You can also enable the modules in default builds by adding these lines to your [board configuration](../hardware/porting_guide_config.md) (e.g. for fmu-v6x you might add them to [`main/boards/px4/fmu-v6x/default.px4board`](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board)): +Rover is built as the `rover` [firmware variant](../dev_setup/building_px4.md#px4-make-build-targets). +What this means is that when building the firmware with the `make` command, you replace the `_default` suffix in the configuration target with `_rover`. - ```sh - CONFIG_MODULES_ROVER_ACKERMANN=y - CONFIG_MODULES_ROVER_DIFFERENTIAL=y - CONFIG_MODULES_ROVER_MECANUM=y - ``` +For example, to build rover for `px4_fmu-v6x` boards, you would use the following command: - Note that adding the rover modules may lead to flash overflow, in which case you will need to disable modules that you do not plan to use (such as those related to multicopter or fixed wing). +```sh +make px4_fmu-v6x_rover +``` +Note that configuration targets are constructed with the format "VENDOR_MODEL_VARIANT". + +The built firmware can be installed as custom firmware, as shown above in in [Flashing the Rover Build](#flashing-the-rover-build). + +:::info +You can also enable the modules in default builds by adding these lines to your [board configuration](../hardware/porting_guide_config.md) (e.g. for fmu-v6x you might add them to [`main/boards/px4/fmu-v6x/default.px4board`](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board)): + +```sh +CONFIG_MODULES_ROVER_ACKERMANN=y +CONFIG_MODULES_ROVER_DIFFERENTIAL=y +CONFIG_MODULES_ROVER_MECANUM=y +``` + +Adding the rover modules may lead to flash overflow, in which case you will need to disable modules that you do not plan to use (such as those related to multicopter or fixed wing). ::: - -2. Load the **custom firmware** that you just built onto your flight controller (see [Loading Firmware > Installing PX4 Main, Beta or Custom Firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware)). diff --git a/docs/ko/dev_airframes/adding_a_new_frame.md b/docs/ko/dev_airframes/adding_a_new_frame.md index 98f1f6869d..59aece9838 100644 --- a/docs/ko/dev_airframes/adding_a_new_frame.md +++ b/docs/ko/dev_airframes/adding_a_new_frame.md @@ -307,7 +307,6 @@ If the airframe is for a **new group** you additionally need to: ``` 3. Update _QGroundControl_: - - Add the svg image for the group into: [src/AutopilotPlugins/Common/images](https://github.com/mavlink/qgroundcontrol/tree/master/src/AutoPilotPlugins/Common/Images) - Add reference to the svg image into [qgcimages.qrc](https://github.com/mavlink/qgroundcontrol/blob/master/qgcimages.qrc), following the pattern below: diff --git a/docs/ko/dev_setup/building_px4.md b/docs/ko/dev_setup/building_px4.md index 4dec499bad..19f4a787fd 100644 --- a/docs/ko/dev_setup/building_px4.md +++ b/docs/ko/dev_setup/building_px4.md @@ -39,16 +39,6 @@ Navigate into the **PX4-Autopilot** directory and start [Gazebo SITL](../sim_gaz make px4_sitl gz_x500 ``` -:::details -If you installed Gazebo Classic -Start [Gazebo Classic SITL](../sim_gazebo_classic/index.md) using the following command: - -```sh -make px4_sitl gazebo-classic -``` - -::: - This will bring up the PX4 console: ![PX4 Console](../../assets/toolchain/console_gazebo.png) @@ -89,6 +79,16 @@ cd PX4-Autopilot make px4_fmu-v4_default ``` +:::tip +You can also build using the [px4-dev Docker container](../test_and_ci/docker.md) without installing the toolchain locally. +From the PX4-Autopilot directory: + +```sh +./Tools/docker_run.sh 'make px4_fmu-v5_default' +``` + +::: + A successful run will end with similar output to: ```sh @@ -145,7 +145,8 @@ The following list shows the build commands for the [Pixhawk standard](../flight - [Pixhawk 1 (FMUv2)](../flight_controller/pixhawk.md): `make px4_fmu-v2_default` :::warning - You **must** use a supported version of GCC to build this board (e.g. the same as used by [CI/docker](../test_and_ci/docker.md)) or remove modules from the build. PX4가 보드의 1MB 플래시 제한에 가깝기 때문에, 지원되지 않는 GCC로 빌드가 실패할 수 있습니다. + You **must** use a supported version of GCC to build this board (e.g. the `gcc-arm-none-eabi` package from the current Ubuntu LTS, which is the same toolchain used by CI) or remove modules from the build. + PX4가 보드의 1MB 플래시 제한에 가깝기 때문에, 지원되지 않는 GCC로 빌드가 실패할 수 있습니다. ::: @@ -211,7 +212,7 @@ The `region 'flash' overflowed by XXXX bytes` error indicates that the firmware This is common for `make px4_fmu-v2_default` builds, where the flash size is limited to 1MB. If you're building the _vanilla_ master branch, the most likely cause is using an unsupported version of GCC. -In this case, install the version specified in the [Developer Toolchain](../dev_setup/dev_env.md) instructions. +In this case, install the `gcc-arm-none-eabi` package from the current Ubuntu LTS as described in the [Developer Toolchain](../dev_setup/dev_env.md) instructions. If building your own branch, it is possible that you have increased the firmware size over the 1MB limit. PX4 빌드 시스템은 많은 수의 파일을 오픈하므로, 이 갯수를 초과할 수 있습니다. @@ -224,7 +225,7 @@ The PX4 build system opens a large number of files, so you may exceed this numbe The build toolchain will then report `Too many open files` for many files, as shown below: ```sh -/usr/local/Cellar/gcc-arm-none-eabi/20171218/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/ld: cannot find NuttX/nuttx/fs/libfs.a: Too many open files +arm-none-eabi-ld: cannot find NuttX/nuttx/fs/libfs.a: Too many open files ``` The solution is to increase the maximum allowed number of open files (e.g. to 300). @@ -247,34 +248,9 @@ xcode-select --install sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/ ``` -### Ubuntu 18.04: arm_none_eabi_gcc와 관련된 컴파일 오류 - -Build issues related to `arm_none_eabi_gcc`may be due to a broken g++ toolchain installation. -You can verify that this is the case by checking for missing dependencies using: - -```sh -arm-none-eabi-gcc --version -arm-none-eabi-g++ --version -arm-none-eabi-gdb --version -arm-none-eabi-size --version -``` - -Example of bash output with missing dependencies: - -```sh -arm-none-eabi-gdb --version -arm-none-eabi-gdb: command not found -``` - -This can be resolved by removing and [reinstalling the compiler](https://askubuntu.com/questions/1243252/how-to-install-arm-none-eabi-gdb-on-ubuntu-20-04-lts-focal-fossa). - -### Ubuntu 18.04: Visual Studio Code는 이 큰 작업 영역에서 파일 변경 사항을 감시할 수 없습니다. - -See [Visual Studio Code IDE (VSCode) > Troubleshooting](../dev_setup/vscode.md#troubleshooting). - ### Python 패키지를 가져오지 못했습니다. -"Failed to import" errors when running the `make px4_sitl jmavsim` command indicates that some Python packages are not installed (where expected). +"Failed to import" errors when running the `make px4_sitl gz_x500` command indicates that some Python packages are not installed (where expected). ```sh Failed to import jinja2: No module named 'jinja2' @@ -282,12 +258,12 @@ You may need to install it using: pip3 install --user jinja2 ``` -다음과 같이 종속성을 명시적으로 설치하여, 이 문제를 해결할 수 있습니다. +If you have already installed these dependencies this may be because there is more than one Python version on the computer (e.g. Python 2.7.16 and Python 3.8.3), and the module is not present in the version used by the build toolchain. -You should be able to fix this by explicitly installing the dependencies as shown: +You should be able to fix this by installing the dependencies from the repository's requirements file: ```sh -pip3 install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging +pip3 install --user -r Tools/setup/requirements.txt ``` ## PX4 빌드 타겟 만들기 diff --git a/docs/ko/dev_setup/config_initial.md b/docs/ko/dev_setup/config_initial.md index 83fc3131a8..693f6b3069 100644 --- a/docs/ko/dev_setup/config_initial.md +++ b/docs/ko/dev_setup/config_initial.md @@ -23,7 +23,7 @@ A Taranis RC and a mid-range Android tablet make a very inexpensive field kit. - Lenovo Thinkpad with i5-core running Windows 11 - MacBook Pro (early 2015 and later) with macOS 10.15 or later - - Lenovo Thinkpad i5 with Ubuntu Linux 20.04 or later + - Lenovo Thinkpad i5 with Ubuntu Linux 22.04 or later - **Ground control station** (computer or tablet): - iPad (may require Wifi telemetry adapter) diff --git a/docs/ko/dev_setup/dev_env.md b/docs/ko/dev_setup/dev_env.md index 9ed3e0cfd8..69d749fe4d 100644 --- a/docs/ko/dev_setup/dev_env.md +++ b/docs/ko/dev_setup/dev_env.md @@ -2,7 +2,7 @@ The _supported platforms_ for PX4 development are: -- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended +- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) - [Windows (10/11)](../dev_setup/dev_env_windows_wsl.md) — via WSL2 - [macOS](../dev_setup/dev_env_mac.md) @@ -15,9 +15,9 @@ The _supported platforms_ for PX4 development are: | **NuttX based hardware:** [Pixhawk Series](../flight_controller/pixhawk_series.md), [Crazyflie](../complete_vehicles_mc/crazyflie2.md) | ✓ | ✓ | ✓ | | **Linux-based hardware:** [Raspberry Pi 2/3](../flight_controller/raspberry_pi_navio2.md) | ✓ | | | | **Simulation:** [Gazebo SITL](../sim_gazebo_gz/index.md) | ✓ | ✓ | ✓ | -| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | ✓ | ✓ | ✓ | -| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | ✓ | | ✓ | | **Simulation:** ROS 2 with Gazebo | ✓ | | ✓ | +| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | | ✓ | ✓ | +| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | | | ✓ | Experienced Docker users can also build with the containers used by our continuous integration system: [Docker Containers](../test_and_ci/docker.md) diff --git a/docs/ko/dev_setup/dev_env_linux_centos.md b/docs/ko/dev_setup/dev_env_linux_centos.md index ec9989c908..f31e1f894c 100644 --- a/docs/ko/dev_setup/dev_env_linux_centos.md +++ b/docs/ko/dev_setup/dev_env_linux_centos.md @@ -39,8 +39,9 @@ You may want to also install `python-pip` and `screen`. 아래 스크립트로 GCC 7-2017-q4를 설치합니다. :::warning -This version of GCC is out of date. -At time of writing the current version on Ubuntu is `9-2020-q2-update` (see [focal nuttx docker file](https://github.com/PX4/PX4-containers/blob/master/docker/Dockerfile_nuttx-focal#L28)) +This version of GCC is very outdated. +PX4 now uses the `gcc-arm-none-eabi` package from the current Ubuntu LTS (GCC 13.2.1 on Ubuntu 24.04). +This CentOS guide is community-maintained and may not produce working builds. ::: ```sh diff --git a/docs/ko/dev_setup/dev_env_linux_ubuntu.md b/docs/ko/dev_setup/dev_env_linux_ubuntu.md index f9602445b4..83518ac420 100644 --- a/docs/ko/dev_setup/dev_env_linux_ubuntu.md +++ b/docs/ko/dev_setup/dev_env_linux_ubuntu.md @@ -4,21 +4,14 @@ The following instructions use a bash script to set up the PX4 development envir The environment includes: -- [Gazebo Simulator](../sim_gazebo_gz/index.md) ("Harmonic") -- [Build toolchain for Pixhawk (and other NuttX-based hardware)](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards). - -On Ubuntu 22.04: - -- [Gazebo Classic Simulator](../sim_gazebo_classic/index.md) can be used instead of Gazebo. - Gazebo is nearing feature-parity with Gazebo-Classic on PX4, and will soon replace it for all use cases. +- [Gazebo Simulator](../sim_gazebo_gz/index.md) (Gazebo Harmonic) +- [Build toolchain for Pixhawk (and other NuttX-based hardware)](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards) using the `gcc-arm-none-eabi` compiler from the Ubuntu package manager. The build toolchain for other flight controllers, simulators, and working with ROS are discussed in the [Other Targets](#other-targets) section below. -:::details -Can I use an older version of Ubuntu? -PX4 supports the current and last Ubuntu LTS release where possible. -Older releases are not supported (so you can't raise defects against them), but may still work. -For example, Gazebo Classic setup is included in our standard build instructions for macOS, Ubuntu 18.04 and 20.04, and Windows on WSL2 for the same hosts. +:::info +PX4 targets the **current Ubuntu LTS** (24.04) for CI and release builds, with the **previous LTS** (22.04) also supported. +Older Ubuntu versions are not supported and may not work. ::: ## Simulation and NuttX (Pixhawk) Targets @@ -52,9 +45,7 @@ The script is intended to be run on _clean_ Ubuntu LTS installations, and may no - 스크립트가 진행되는 동안 모든 프롬프트를 확인합니다. - You can use the `--no-nuttx` and `--no-sim-tools` options to omit the NuttX and/or simulation tools. -3. If you need Gazebo Classic (Ubuntu 22.04 only) then you can manually remove Gazebo and install it by following the instructions in [Gazebo Classic > Installation](../sim_gazebo_classic/index.md#installation). - -4. 완료되면 컴퓨터를 재부팅합니다. +3. 완료되면 컴퓨터를 재부팅합니다. :::details Additional notes @@ -63,10 +54,11 @@ These notes are provided "for information only": - This setup is supported by the PX4 Dev Team. The instructions may also work on other Debian Linux based systems. -- You can verify the NuttX installation by confirming the `gcc` version as shown: +- You can verify the NuttX installation by confirming `gcc` is available. + The version depends on your Ubuntu release (e.g. GCC 13.2.1 on Ubuntu 24.04): ```sh - $arm-none-eabi-gcc --version + $ arm-none-eabi-gcc --version arm-none-eabi-gcc (15:13.2.rel1-2) 13.2.1 20231009 Copyright (C) 2023 Free Software Foundation, Inc. diff --git a/docs/ko/dev_setup/dev_env_windows_wsl.md b/docs/ko/dev_setup/dev_env_windows_wsl.md index fe782c5baa..5e5150386b 100644 --- a/docs/ko/dev_setup/dev_env_windows_wsl.md +++ b/docs/ko/dev_setup/dev_env_windows_wsl.md @@ -61,20 +61,20 @@ To install WSL2 with Ubuntu on a new installation of Windows 10 or 11: wsl --install ``` - - Ubuntu 20.04 ([Gazebo-Classic Simulation](../sim_gazebo_classic/index.md)) - - ```sh - wsl --install -d Ubuntu-20.04 - ``` - - Ubuntu 22.04 ([Gazebo Simulation](../sim_gazebo_gz/index.md)) ```sh wsl --install -d Ubuntu-22.04 ``` + - Ubuntu 24.04 ([Gazebo Simulation](../sim_gazebo_gz/index.md)) + + ```sh + wsl --install -d Ubuntu-24.04 + ``` + ::: info - You can also install[Ubuntu 20.04](https://www.microsoft.com/store/productId/9MTTCL66CPXJ) and [Ubuntu 22.04](https://www.microsoft.com/store/productId/9PN20MSR04DW) from the store, which allows you to delete the application using the normal Windows Add/Remove settings: + You can also [Ubuntu 24.04](https://www.microsoft.com/store/productId/9nz3klhxdjp5) or [Ubuntu 22.04](https://www.microsoft.com/store/productId/9PN20MSR04DW) from Microsoft Store, which allows you to delete the application using the normal Windows Add/Remove settings. ::: @@ -110,7 +110,7 @@ To open a WSL shell using a command prompt: ``` ```sh - wsl -d Ubuntu-20.04 + wsl -d Ubuntu-24.04 ``` If you only have one version of Ubuntu, you can just use `wsl`. diff --git a/docs/ko/dev_setup/vscode.md b/docs/ko/dev_setup/vscode.md index 75ac6d2cdd..3d618c8aaa 100644 --- a/docs/ko/dev_setup/vscode.md +++ b/docs/ko/dev_setup/vscode.md @@ -61,7 +61,6 @@ You must already have installed the command line [PX4 developer environment](../ 빌드를 진행하려면: 1. Select your build target ("cmake build config"): - - The current _cmake build target_ is shown on the blue _config_ bar at the bottom (if this is already your desired target, skip to next step). ![Select Cmake build target](../../assets/toolchain/vscode/cmake_build_config.jpg) @@ -134,10 +133,10 @@ In order for the code completion to work (and other IntelliSense magic) you need 이 섹션에는 설정 및 빌드 오류에 대한 지침이 포함되어 있습니다. -### Ubuntu 18.04: "Visual Studio Code는 이 큰 작업 영역에서 파일 변경 사항을 감시할 수 없습니다." +### "Visual Studio Code is unable to watch for file changes in this large workspace" 이 오류는 시작시에 나타납니다. -On some systems, there is an upper-limit of 8192 file handles imposed on applications, which means that VSCode might not be able to detect file modifications in `/PX4-Autopilot`. +On some systems, there is an upper-limit on file handles imposed on applications, which means that VSCode might not be able to detect file modifications in `/PX4-Autopilot`. 메모리 소비를 희생시키면서 오류를 방지하기 위해 이 제한을 늘릴 수 있습니다. Follow the [instructions here](https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc). diff --git a/docs/ko/dronecan/holybro_h_rtk_zed_f9p_gps.md b/docs/ko/dronecan/holybro_h_rtk_zed_f9p_gps.md index 41302b0a1d..18d6915235 100644 --- a/docs/ko/dronecan/holybro_h_rtk_zed_f9p_gps.md +++ b/docs/ko/dronecan/holybro_h_rtk_zed_f9p_gps.md @@ -100,7 +100,6 @@ In order to use dual ZED-F9P GPS heading in PX4, follow these steps: 3. Components should be visible on the left panel. Click on the first `_Component_` that maps to the ZED-F9P DroneCAN node (below shown as _Component 124_). 4. Click on the _GPS_ subsection and configure the parameters listed below: - - `GPS_TYPE`: Either set to `17` for moving baseline _base_, or set to `18` to be the moving baseline _rover_. One F9P MUST be _rover_, and the other MUST be _base_. - `GPS_AUTO_CONFIG`: set to 1 for both the rover and base diff --git a/docs/ko/esc/ark_4in1_esc.md b/docs/ko/esc/ark_4in1_esc.md index e558bb5668..21ed5bd061 100644 --- a/docs/ko/esc/ark_4in1_esc.md +++ b/docs/ko/esc/ark_4in1_esc.md @@ -39,12 +39,10 @@ Order this module from: - 10 Pin JST-SH Debug - Motor & Battery Connectors (with-connector version) - - MR30 Connector Limit Per Motor: 30A Continuous, 40A Burst - Four MR30 Motor Connectors - Dimensions (with connectors) - - Size: 77.00mm x 42.00mm x 9.43mm - Mounting Pattern: 30.5mm - Weight: 24g diff --git a/docs/ko/flight_controller/airlink.md b/docs/ko/flight_controller/airlink.md index 5392cab76b..de1a5dddb5 100644 --- a/docs/ko/flight_controller/airlink.md +++ b/docs/ko/flight_controller/airlink.md @@ -26,7 +26,6 @@ AIRLink has two computers and integrated LTE Module: ## 사양 - **Sensors** - - 3x Accelerometers, 3x Gyroscopes, 3x Magnetometers, 3x Pressure sensorss - GNSS, Rangefinders, Lidars, Optical Flow, Cameras - 3x-redundant IMU @@ -34,7 +33,6 @@ AIRLink has two computers and integrated LTE Module: - Temperature stabilization - **Flight Controller** - - STM32F7, ARM Cortex M7 with FPU, 216 MHz, 2MB Flash, 512 kB RAM - STM32F1, I/O co-processor - Ethernet, 10/100 Mbps @@ -51,7 +49,6 @@ AIRLink has two computers and integrated LTE Module: - Safety switch / LED option - **AI Mission Computer** - - 6-Core CPU: Dual-Core Cortex-A72 + Quad-Core Cortex-A53 - GPU Mali-T864, OpenGL ES1.1/2.0/3.0/3.1 - VPU with 4K VP8/9, 4K 10bits H265/H264 60fps Decoding @@ -65,7 +62,6 @@ AIRLink has two computers and integrated LTE Module: - 2x Video: 4-Lane MIPI CSI (FPV Camera) and 4-Lane MIPI CSI with HMDI Input (Payload Camera) - **LTE/5G Connectivity Module** - - Up to 600 Mbps bandwidth - 5G sub-6 and mmWave, SA and NSA operations - 4G Cat 20, up to 7xCA, 256-QAM DL/UL, 2xCA UL @@ -142,7 +138,6 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production ![Left side](../../assets/flight_controller/airlink/airlink-interfaces-left.jpg) - **Left side interfaces:** - - Power input with voltage & current monitoring - AI Mission Computer micro SD card - Flight Controller micro SD card @@ -170,13 +165,13 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production - **RC Connector - JST GH SM06B-GHS-TB** - | Pin number | Pin name | 방향 | 전압 | 기능 | | | | - | ---------- | ----------------------------- | --- | --------------------- | ----------- | - | --- | -- | - | 1 | 5V | OUT | +5V | 5V output | | | | - | 2 | PPM_IN | IN | +3.3V | PPM 입력 | | | | - | 3 | RSSI_IN | IN | +3.3V | RSSI 입력 | | | | - | 4 | FAN_OUT | OUT | +5V | Fan output | | | | - | 5 | SBUS_OUT | OUT | +3.3V | SBUS output | 6 | GND | 접지 | + \| Pin number | Pin name | Direction | Voltage | Function | + \| ---------- | -------- | --------- | ------- | ----------- | --- | --- | ------ | + \| 1 | 5V | OUT | +5V | 5V output | + \| 2 | PPM_IN | IN | +3.3V | PPM input | + \| 3 | RSSI_IN | IN | +3.3V | RSSI input | + \| 4 | FAN_OUT | OUT | +5V | Fan output | + \| 5 | SBUS_OUT | OUT | +3.3V | SBUS output | 6 | GND | Ground | * **FMU SD card - microSD** @@ -185,7 +180,6 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production ![Right side](../../assets/flight_controller/airlink/airlink-interfaces-right.jpg) - **Right side interfaces:** - - Ethernet port with power output - Telemetry port - Second GPS port @@ -251,7 +245,6 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production ![Front side](../../assets/flight_controller/airlink/airlink-interfaces-front.jpg) - **Front side interfaces:** - - Main GNSS and compass port - Main telemetry port - CSI camera input @@ -309,7 +302,6 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production ![Back side](../../assets/flight_controller/airlink/airlink-interfaces-back.jpg) - **Rear side interfaces:** - - SBUS input - 16 PWM output channels - 2x LTE antenna sockets (MIMO) diff --git a/docs/ko/flight_controller/autopilot_manufacturer_supported.md b/docs/ko/flight_controller/autopilot_manufacturer_supported.md index 780c5bcf81..0d9b0ca603 100644 --- a/docs/ko/flight_controller/autopilot_manufacturer_supported.md +++ b/docs/ko/flight_controller/autopilot_manufacturer_supported.md @@ -25,6 +25,7 @@ This category includes boards that are not fully compliant with the pixhawk stan - [CubePilot Cube Orange+](../flight_controller/cubepilot_cube_orangeplus.md) - [CubePilot Cube Orange](../flight_controller/cubepilot_cube_orange.md) - [CubePilot Cube Yellow](../flight_controller/cubepilot_cube_yellow.md) +- [Gear Up AirBrainH743](../flight_controller/gearup_airbrainh743.md) - [Holybro Kakute H7v2](../flight_controller/kakuteh7v2.md) - [Holybro Kakute H7mini](../flight_controller/kakuteh7mini.md) - [Holybro Kakute H7](../flight_controller/kakuteh7.md) diff --git a/docs/ko/flight_controller/gearup_airbrainh743.md b/docs/ko/flight_controller/gearup_airbrainh743.md new file mode 100644 index 0000000000..a1fcf95a4c --- /dev/null +++ b/docs/ko/flight_controller/gearup_airbrainh743.md @@ -0,0 +1,96 @@ +# Gear Up AirBrainH743 + +:::warning +PX4 does not manufacture this (or any) autopilot. +Contact the [manufacturer](https://takeyourgear.com/) for hardware support. +::: + +:::info +This flight controller is [manufacturer supported](../flight_controller/autopilot_manufacturer_supported.md). +::: + +Purchase from [takeyourgear.com](https://takeyourgear.com/pages/products/airbrain). + +For more information and pinout, check the [GitHub documentation](https://github.com/GearUp-Company/AirBrainH743). + +## 주요 특징 + +- MCU: STM32H743 32-bit processor running at 480 MHz +- IMU: ICM42688P +- Barometer: DPS310 +- Magnetometer: LIS2MDL (internal) +- 128MB NAND Flash for logging (W25N) +- 7x UARTs +- I2C, SPI +- 9x PWM Outputs (8 Motor outputs, 1 LED strip) +- Battery input voltage: 3S-10S +- Battery voltage/current monitoring +- 5V@2A and 10V@2.5A BEC outputs +- USB Type-C (IP68) +- EMC and ESD protection + +## 커넥터 및 핀 + +:::warning +The pin order is different from the Pixhawk standard (compatible to the Betaflight standard). +::: + +### UART + +Current UART configuration: + +| UART | 장치 | 기능 | +| ------ | ---------- | --------------------------------------- | +| USART1 | /dev/ttyS0 | Console/Debug | +| USART2 | /dev/ttyS1 | RC Input | +| USART3 | /dev/ttyS2 | TEL4 (DJI/MSP) | +| UART4 | /dev/ttyS3 | TEL1 | +| UART5 | /dev/ttyS4 | TEL2 | +| UART7 | /dev/ttyS5 | TEL3 (ESC Telemetry) | +| UART8 | /dev/ttyS6 | GPS1 | + +### Motor/Servo Outputs + +| 커넥터 | 핀 | 기능 | +| --- | -- | ---------------------------- | +| ESC | M1 | Motor 1 | +| ESC | M2 | Motor 2 | +| ESC | M3 | Motor 3 | +| ESC | M4 | Motor 4 | +| PWM | M5 | Motor 5 | +| PWM | M6 | Motor 6 | +| PWM | M7 | Motor 7 | +| PWM | M8 | Motor 8 | +| AUX | M9 | LED/PWM/etc. | + + + +## 부트로더 업데이트 + +Before PX4 firmware can be installed, the _PX4 bootloader_ must be flashed. +Download the [gearup_airbrainh743_bootloader.bin](https://github.com/PX4/PX4-Autopilot/blob/main/boards/gearup/airbrainh743/extras/gearup_airbrainh743_bootloader.bin) bootloader binary and read [this page](../advanced_config/bootloader_update_from_betaflight.md) for flashing instructions. + +## 펌웨어 빌드 + +To [build PX4](../dev_setup/building_px4.md) for this target: + +``` +make gearup_airbrainh743_default +``` + +## 펌웨어 설치 + +Firmware can be installed in any of the normal ways: + +- Build and upload the source: + + ``` + make gearup_airbrainh743_default upload + ``` + +- [Load the firmware](../config/firmware.md) using _QGroundControl_. + 미리 빌드된 펌웨어나 사용자 지정 펌웨어를 사용할 수 있습니다. + +### 시스템 콘솔 + +UART1 (ttyS0) is configured for use as the [System Console](../debug/system_console.md). diff --git a/docs/ko/flight_modes/offboard.md b/docs/ko/flight_modes/offboard.md index 42d4c0c2df..008b779940 100644 --- a/docs/ko/flight_modes/offboard.md +++ b/docs/ko/flight_modes/offboard.md @@ -231,7 +231,7 @@ The following MAVLink messages and their particular fields and field values are - Position setpoint **and** velocity setpoint (the velocity setpoint is used as feedforward; it is added to the output of the position controller and the result is used as the input to the velocity controller). - - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL). + - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT). - [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) - 다음 입력 조합이 지원됩니다. @@ -278,7 +278,7 @@ The following MAVLink messages and their particular fields and field values are - 12288 : Loiter 설정점 (설정점을 중심으로 선회 비행합니다). - 16384 : 유휴 설정점 (제로 스로틀, 제로 롤/피치). - - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL). + - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT). - [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) - 다음 입력 조합이 지원됩니다. @@ -287,7 +287,29 @@ The following MAVLink messages and their particular fields and field values are ### 탐사선 -Rover does not support a MAVLink offboard API (ROS2 is supported). +Rover supports offboard control using the generic MAVLink position/velocity setpoint messages listed below. +These are converted into a [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) internally, and then into rover setpoints by the rover offboard modes. +For rover-specific control setpoints and better behaviour we recommend using the [Rover Setpoints](#rover-setpoints) via ROS 2. + +:::info +Rover MAVLink setpoints are gated by the MAVLink parameter [MAV_FWDEXTSP](../advanced_config/parameter_reference.md#MAV_FWDEXTSP) (Forward external setpoint messages). +::: + +- [SET_POSITION_TARGET_LOCAL_NED](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_LOCAL_NED) + - Position setpoint: `x`, `y` in [MAV_FRAME_LOCAL_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_LOCAL_NED) (`z` is ignored by rover modules). + - Velocity setpoint: `vx`, `vy` in [MAV_FRAME_LOCAL_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_LOCAL_NED) or [MAV_FRAME_BODY_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_BODY_NED). + - `yaw`/`yaw_rate`: + - Ackermann/Differential: ignored (in velocity control the yaw setpoint is derived from the velocity direction). + - Mecanum: can be controlled independently (decoupled) using `yaw`/`yaw_rate`. + - Acceleration setpoints (`afx`, `afy`, `afz`) are ignored by rover modules. + +- [SET_POSITION_TARGET_GLOBAL_INT](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_GLOBAL_INT) + - Position setpoint: `lat_int`, `lon_int`, `alt` (converted into local NED internally; rover modules only use the horizontal components). + - Velocity setpoint: `vx`, `vy`, `vz` (rover modules use only the horizontal components). + - PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT). + +- [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) + - Not supported for rover offboard control. ## 오프보드 매개변수 diff --git a/docs/ko/flight_modes_fw/mission.md b/docs/ko/flight_modes_fw/mission.md index 0d5f695af6..fe14d439ae 100644 --- a/docs/ko/flight_modes_fw/mission.md +++ b/docs/ko/flight_modes_fw/mission.md @@ -28,7 +28,6 @@ Missions are uploaded onto a SD card that needs to be inserted **before** bootin At high level all vehicle types behave in the same way when MISSION mode is engaged: 1. If no mission is stored, or if PX4 has finished executing all mission commands, or if the [mission is not feasible](#mission-feasibility-checks): - - If flying the vehicle will loiter. - If landed the vehicle will "wait". diff --git a/docs/ko/flight_modes_mc/follow_me.md b/docs/ko/flight_modes_mc/follow_me.md index c5ca434e6e..154a7a2636 100644 --- a/docs/ko/flight_modes_mc/follow_me.md +++ b/docs/ko/flight_modes_mc/follow_me.md @@ -115,7 +115,6 @@ The altitude control mode determine whether the vehicle altitude is relative to The relative distance to the drone to the target will change as you ascend and descend (use with care in hilly terrain). - `2D + Terrain` makes the drone follow at a fixed height relative to the terrain underneath it, using information from a distance sensor. - - If the vehicle does not have a distance sensor following will be identical to `2D tracking`. - Distance sensors aren't always accurate and vehicles may be "jumpy" when flying in this mode. - Note that that height is relative to the ground underneath the vehicle, not the follow target. diff --git a/docs/ko/flight_modes_mc/mission.md b/docs/ko/flight_modes_mc/mission.md index 313aabcb18..630e542ee5 100644 --- a/docs/ko/flight_modes_mc/mission.md +++ b/docs/ko/flight_modes_mc/mission.md @@ -30,7 +30,6 @@ Missions are uploaded onto a SD card that needs to be inserted **before** bootin At high level all vehicle types behave in the same way when MISSION mode is engaged: 1. If no mission is stored, or if PX4 has finished executing all mission commands, or if the [mission is not feasible](#mission-feasibility-checks): - - If flying the vehicle will hold. - If landed the vehicle will "wait". diff --git a/docs/ko/flight_modes_vtol/return.md b/docs/ko/flight_modes_vtol/return.md index 929cc8e64d..eb60a47d0e 100644 --- a/docs/ko/flight_modes_vtol/return.md +++ b/docs/ko/flight_modes_vtol/return.md @@ -49,7 +49,6 @@ If returning as a fixed-wing, the vehicle: A mission landing pattern for a VTOL vehicle consists of a [MAV_CMD_DO_LAND_START](https://mavlink.io/en/messages/common.html#MAV_CMD_DO_LAND_START), one or more position waypoints, and a [MAV_CMD_NAV_VTOL_LAND](https://mavlink.io/en/messages/common.html#MAV_CMD_NAV_VTOL_LAND). - If the destination is a rally point or home it will: - - Loiter/spiral down to [RTL_DESCEND_ALT](#RTL_DESCEND_ALT). - Circle for a short time, as defined by [RTL_LAND_DELAY](#RTL_LAND_DELAY). - Yaw towards the destination (centre of loiter). diff --git a/docs/ko/flight_stack/controller_diagrams.md b/docs/ko/flight_stack/controller_diagrams.md index b6c1d87c11..fa12f0e50e 100644 --- a/docs/ko/flight_stack/controller_diagrams.md +++ b/docs/ko/flight_stack/controller_diagrams.md @@ -30,7 +30,7 @@ The diagrams use the standard [PX4 notation](../contribute/notation.md) (and eac ::: info The IMU pipeline is: - gyro data > apply calibration parameters > remove estimated bias > notch filter (`IMU_GYRO_NF0_BW` and `IMU_GYRO_NF0_FRQ`) > low-pass filter (`IMU_GYRO_CUTOFF`) > vehicle_angular_velocity (_filtered angular rate used by the P and I controllers_) > derivative -> low-pass filter (`IMU_DGYRO_CUTOFF`) > vehicle_angular_acceleration (_filtered angular acceleration used by the D controller_) + gyro data > apply calibration parameters > remove estimated bias > notch filter (`IMU_GYRO_NF0_BW` and `IMU_GYRO_NF0_FRQ`) > low-pass filter (`IMU_GYRO_CUTOFF`) > vehicle_angular_velocity (\_filtered angular rate used by the P and I controllers_) > derivative -> low-pass filter (`IMU_DGYRO_CUTOFF`) > vehicle_angular_acceleration (\_filtered angular acceleration used by the D controller_) ![IMU pipeline](../../assets/diagrams/px4_imu_pipeline.png) @@ -177,7 +177,7 @@ The angular position of the control effectors (ailerons, elevators, rudders, ... 또한 제어 표면은 고속에서 더 효과적이고 저속에서는 덜 효과적이기 때문에, 순항 속도에 맞게 조정된 컨트롤러는 속도 측정을 사용하여 조정됩니다(이러한 센서가 사용되는 경우). :::info -If no airspeed sensor is used then gain scheduling for the FW attitude controller is disabled (it's open loop); no correction is/can be made in TECS using airspeed feedback. +If no airspeed sensor is used then gain scheduling for the FW attitude controller is disabled (it's open loop); no correction is/can be made in TECS using airspeed feedback. ::: 피드포워드 이득은 공기역학적 감쇠를 보상합니다. @@ -187,7 +187,7 @@ If no airspeed sensor is used then gain scheduling for the FW attitude controlle ### Turn coordination 롤 및 피치 컨트롤러는 동일한 구조를 가지며, 종방향 역학과 횡방향 역학은 독립적으로 작동하기에 충분히 분리되어 있다고 가정합니다. -그러나, 요 콘트롤러는 항공기가 미끄러질 때 생성되는 측면 가속도를 최소화하기 위해 선회 조정 제약 조건을 사용하여 요 각속도 설정점을 계산합니다. The turn coordination algorithm is based solely on coordinated turn geometry calculation. +그러나, 요 콘트롤러는 항공기가 미끄러질 때 생성되는 측면 가속도를 최소화하기 위해 선회 조정 제약 조건을 사용하여 요 각속도 설정점을 계산합니다. The turn coordination algorithm is based solely on coordinated turn geometry calculation. $$\dot{\Psi}_{sp} = \frac{g}{V_T} \tan{\phi_{sp}} \cos{\theta_{sp}}$$ diff --git a/docs/ko/flying/package_delivery_mission.md b/docs/ko/flying/package_delivery_mission.md index 3d1390abf5..65ca21e2de 100644 --- a/docs/ko/flying/package_delivery_mission.md +++ b/docs/ko/flying/package_delivery_mission.md @@ -33,7 +33,6 @@ To create a package delivery mission (with a Gripper): 1. Create a normal mission with a `Takeoff` mission item, and additional waypoints for your required flight path. 2. Add a waypoint on the map for where you'd like to release the package. - - To drop the package while flying set an appropriate altitude for the waypoint (and ensure the waypoint is at a safe location to drop the package). - If you'd like to land the vehicle to make the delivery you will need to change the `Waypoint` to a `Land` mission item. diff --git a/docs/ko/frames_rover/index.md b/docs/ko/frames_rover/index.md index 7cf786c054..66028513fd 100644 --- a/docs/ko/frames_rover/index.md +++ b/docs/ko/frames_rover/index.md @@ -7,6 +7,12 @@ Support for rover is [experimental](../airframes/index.md#experimental-vehicles) Maintainer volunteers, [contribution](../contribute/index.md) of new features, new frame configurations, or other improvements would all be very welcome! ::: +:::tip +Rover is not in the default PX4 firmware downloaded from QGC. +Unlike for other vehicle types you will need to install it as custom firmware. +For more information see [Flashing the Rover Build](../config_rover/index.md#flashing-the-rover-build). +::: + ![Rovers](../../assets/airframes/rover/rovers.png) PX4 provides support for the three most common types of rovers: diff --git a/docs/ko/getting_started/led_meanings.md b/docs/ko/getting_started/led_meanings.md index 82412cfe82..57e098b79e 100644 --- a/docs/ko/getting_started/led_meanings.md +++ b/docs/ko/getting_started/led_meanings.md @@ -20,7 +20,7 @@ It is possible to have a GPS lock (Green LED) and still not be able to arm the v ::: :::tip -In the event of an error (blinking red), or if the vehicle can't achieve GPS lock (change from blue to green), check for more detailed status information in _QGroundControl_ including calibration status, and errors messages reported by the [Preflight Checks (Internal)](../flying/pre_flight_checks.md). +In the event of an error (blinking red), or if the vehicle can't achieve GPS lock (change from blue to green), check for more detailed status information in _QGroundControl_ including calibration status, and errors messages reported by the [Preflight Checks (Internal)](../flying/pre_flight_checks.md). 또한 GPS 모듈이 연결 여부, Pixhawk와 GPS 연동 여부, 정확한 GPS 위치를 전송 여부를 확인하십시오. ::: @@ -47,7 +47,8 @@ In the event of an error (blinking red), or if the vehicle can't achieve GPS loc 사고 방지 모드에서는 기체는 이륙 위치로 복귀하거나, 현재 위치에 착륙할 수 있습니다. - **[Solid Amber] Low Battery Warning:** Indicates your vehicle's battery is running dangerously low. - 특정 시점이 지나면, 차량은 안전 방지 모드로 전환됩니다. 그러나, 이 모드는 종료시점에는 경고 메시지를 표시합니다. + 특정 시점이 지나면, 차량은 안전 방지 모드로 전환됩니다. However, this mode should signal caution that it's time to end + this flight. - **[Blinking Red] Error / Setup Required:** Indicates that your autopilot needs to be configured or calibrated before flying. 자동조종장치를 지상관제국에 연결하여 무슨 문제인지를 확인하십시오. @@ -77,11 +78,11 @@ The LED labels shown above are commonly used, but might differ on some boards. LED가 의미하는 메시지에 관한 자세한 정보는 아래에서 설명합니다( "x"는 "모든 상태"를 의미). -| 적색/황색 | 청색 | 녹색 | 설명 | -| ----- | --- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| 10Hz | x | x | Overload CPU load > 80%, or RAM usage > 98% | -| OFF | x | x | Overload CPU load <= 80%, or RAM usage <= 98% | -| NA | OFF | 4 Hz | actuator_armed->armed && failsafe | -| NA | ON | 4 Hz | actuator_armed->armed && !failsafe | -| NA | OFF | 1 Hz | !actuator_armed-> armed && actuator_armed->ready_to_arm | -| NA | OFF | 10 Hz | !actuator_armed->armed && !actuator_armed->ready_to_arm | +| 적색/황색 | 청색 | 녹색 | 설명 | +| ----- | --- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 10Hz | x | x | Overload CPU load > 80%, or RAM usage > 98% | +| OFF | x | x | Overload CPU load <= 80%, or RAM usage <= 98% | +| NA | OFF | 4 Hz | actuator_armed->armed && failsafe | +| NA | ON | 4 Hz | actuator_armed->armed && !failsafe | +| NA | OFF | 1 Hz | !actuator_armed-> armed && actuator_armed->ready_to_arm | +| NA | OFF | 10 Hz | !actuator_armed->armed && !actuator_armed->ready_to_arm | diff --git a/docs/ko/getting_started/tunes.md b/docs/ko/getting_started/tunes.md index 82f41d6feb..e85c4c6b63 100644 --- a/docs/ko/getting_started/tunes.md +++ b/docs/ko/getting_started/tunes.md @@ -13,7 +13,7 @@ You can search for tune use using the string `TUNE_ID_name`(e.g. \`TUNE_ID_PARAC 부팅중에 재생되는 톤들입니다. - + #### 시작 톤 diff --git a/docs/ko/gps_compass/rtk_gps.md b/docs/ko/gps_compass/rtk_gps.md index 07270685a5..8b0e09ca86 100644 --- a/docs/ko/gps_compass/rtk_gps.md +++ b/docs/ko/gps_compass/rtk_gps.md @@ -153,7 +153,6 @@ RTK GPS 연결은 기본적으로 플러그앤플레이입니다. ![survey-in](../../assets/qgc/setup/rtk/qgc_rtk_survey-in.png) 4. Survey-in이 완료되면 : - - The RTK GPS icon changes to white and _QGroundControl_ starts to stream position data to the vehicle: ![RTK streaming](../../assets/qgc/setup/rtk/qgc_rtk_streaming.png) diff --git a/docs/ko/index.md b/docs/ko/index.md index 4ae116f0c7..339b6ecf6c 100644 --- a/docs/ko/index.md +++ b/docs/ko/index.md @@ -3,20 +3,11 @@ import { useData } from 'vitepress' const { site } = useData(); -
- # PX4 Autopilot 사용자 안내서 [![Releases](https://img.shields.io/badge/release-main-blue.svg)](https://github.com/PX4/PX4-Autopilot/releases) [![Discuss](https://img.shields.io/badge/discuss-px4-ff69b4.svg)](https://discuss.px4.io//) [![Discord](https://discordapp.com/api/guilds/1022170275984457759/widget.png?style=shield)](https://discord.gg/dronecode) -PX4 is the _Professional Autopilot_. -세계적인 수준의 개발자들이 산업계와 학계에서 참여하여 개발하였으며, -세계 각국에서 활동중인 여러 단체들의 지원을 받을 수 있습니다. PX4는 레이싱 드론, 운송용 드론, 자동차와 선박 등의 다양한 운송체에 적용하여 사용할 수 있습니다. - -:::tip -This guide contains everything you need to assemble, configure, and safely fly a PX4-based vehicle. -이 프로젝트에 기여하시려면, Check out the [Development](development/development.md) section. -::: +PX4 is an open-source autopilot for drones and autonomous vehicles. It runs on multirotors, fixed-wing, VTOL, helicopters, rovers, and more. This guide covers everything from assembly and configuration to flight operations and development.
@@ -30,83 +21,43 @@ Documented changes since the stable release are captured in the evolving [releas
+## For Developers + +:::tip +Building on PX4 or extending the platform? Start here: [Development Guide](development/development.md). Set up your [dev environment](dev_setup/config_initial.md), [build from source](dev_setup/building_px4.md), run [SITL simulation](simulation/index.md), or integrate via [ROS 2](ros2/index.md) and [MAVSDK](https://mavsdk.mavlink.io/). +::: + ## 시작하기 -[Basic Concepts](getting_started/px4_basic_concepts.md) should be read by all users! -비행 스택(비행 모드 및 안전 기능)과 지원 하드웨어(비행 제어장치, 기체 형식, 텔레메트리, 원격 제어 시스템) 등 PX4의 전반적인 내용을 설명합니다. +Start with [Basic Concepts](getting_started/px4_basic_concepts.md) for an overview of the flight stack, flight modes, safety features, and supported hardware. -이 안내서를 위한 팁들은 아래과 같습니다. +## Build a Vehicle -### PX4로 동작하는 기체를 만들려고 합니다 +Pick your frame type: [Multicopter](frames_multicopter/index.md), [Fixed-Wing](frames_plane/index.md), [VTOL](frames_vtol/index.md), [Helicopter](frames_helicopter/index.md), or [Rover](frames_rover/index.md). Each section covers complete vehicles, kits, and DIY builds. For assembly instructions see [Assembling a Multicopter](assembly/assembly_mc.md) or the equivalent for your frame. -In the [Multicopter](frames_multicopter/index.md), [VTOL](frames_vtol/index.md), and [Plane (Fixed-Wing)](frames_plane/index.md) sections you'll find topics like the following (these links are for multicopter): +## Configure and Tune -- [Complete Vehicles](complete_vehicles_mc/index.md) list "Ready to Fly" (RTF) pre-built vehicles -- [Kits](frames_multicopter/kits.md) lists drones that you have to build yourself from a set of preselected parts -- [DIY Builds](frames_multicopter/diy_builds.md) shows some examples of drones that have been built using parts that were sourced individually +Once assembled, follow the configuration guide for your vehicle type (e.g. [Multicopter Configuration](config_mc/index.md)). This covers sensor calibration, flight mode setup, and tuning. -Both kits and complete vehicles usually include everything you need except for a battery and RC System. -Kits are usually not hard to build, provide a good introduction to how drones fit together, and are relatively inexpensive. -We provide generic instructions for assembly, such as [Assembling a Multicopter](assembly/assembly_mc.md), and most kits come with specific instructions too. +## 하드웨어 -If the kits and complete drones aren't quite right for you then you can build a vehicle from scratch, but this requires more knowledge. -[Airframe Builds](airframes/index.md) lists the supported frame starting points to give you some idea of what is possible. +The [Hardware Selection & Setup](hardware/drone_parts.md) section covers flight controllers, sensors, telemetry, RC systems, and payloads. See [Payloads](payloads/index.md) for camera and delivery integrations. -Once you have a vehicle that supports PX4 you will need to configure it and calibrate the sensors. -Each vehicle type has its own configuration section that explains the main steps, such as [Multicopter Configuration/Tuning](config_mc/index.md). +## Fly -### I want to add a payload/camera +Read [Operations](config/operations.md) to understand safety features and failsafe behavior before your first flight. Then see [Basic Flying (Multicopter)](flying/basic_flying_mc.md) or the equivalent for your frame type. -The [Payloads](payloads/index.md) section describes how to add a camera and how to configure PX4 to enable you to deliver packages. +## 지원 -### I am modifying a supported vehicle - -The [Hardware Selection & Setup](hardware/drone_parts.md) section provides both high level and product-specific information about hardware that you might use with PX4 and its configuration. -This is the first place you should look if you want to modify a drone and add new components. - -### I want to fly - -Before you fly you should read [Operations](config/operations.md) to understand how to set up the safety features of your vehicle and the common behaviours of all frame types. -Once you've done that you're ready to fly. - -Basic instructions for flying each vehicle type are provided in the respective sections, such as [Basic Flying (Multicopter)](flying/basic_flying_mc.md). - -### I want to run PX4 on a new Flight Controller and extend the platform - -The [Development](development/development.md) section explains how to support new airframes and types of vehicles, modify flight algorithms, add new modes, integrate new hardware, communicate with PX4 from outside the flight controller, and contribute to PX4. - -## 도움 받기 - -The [Support](contribute/support.md) page explains how to get help from the core dev team and the wider community. - -다음과 같은 내용을 다룹니다. - -- [Forums where you can get help](contribute/support.md#forums-and-chat) -- [Diagnosing issues](contribute/support.md#diagnosing-problems) -- [How to report bugs](contribute/support.md#issue-bug-reporting) -- [Weekly dev call](contribute/support.md#weekly-dev-call) - -## Reporting Bugs & Issues - -If you have any problems using PX4 first post them on the [support forums](contribute/support.md#forums-and-chat) (as they may be caused by vehicle configuration). - -If directed by the development team, code issues may be raised on [Github here](https://github.com/PX4/PX4-Autopilot/issues). -Where possible provide [flight logs](getting_started/flight_reporting.md) and other information requested in the issue template. +Get help on the [discussion forums](https://discuss.px4.io/) or [Discord](https://discord.gg/dronecode). See the [Support](contribute/support.md) page for diagnosing problems, reporting bugs, and joining the [weekly dev call](contribute/dev_call.md). ## 기여 -Information on how to contribute to code and documentation can be found in the [Contributing](contribute/index.md) section: - -- [Code](contribute/index.md) -- [Documentation](contribute/docs.md) -- [Translation](contribute/translation.md) +See the [Contributing](contribute/index.md) section for code, [documentation](contribute/docs.md), and [translation](contribute/translation.md) guidelines. ## 번역 -There are several [translations](contribute/translation.md) of this guide. -우상단의 언어 메뉴에서 원하시는 번역본을 선택할 수 있습니다: - -![Language Selector](../assets/vuepress/language_selector.png) +There are several [translations](contribute/translation.md) of this guide. Use the language selector in the top navigation. @@ -143,9 +94,9 @@ The calendar default timezone is Central European Time (CET). ## 운영 방법 -The PX4 flight stack is hosted under the governance of the [Dronecode Project](https://dronecode.org/). +The PX4 Autopilot project is hosted by the [Dronecode Foundation](https://www.dronecode.org/), a [Linux Foundation](https://www.linuxfoundation.org/) Collaborative Project. Dronecode holds all PX4 trademarks and serves as the project's legal guardian, ensuring vendor-neutral stewardship. No single company owns the name or controls the roadmap. The source code is licensed under the [BSD 3-Clause](https://opensource.org/license/BSD-3-Clause) license, so you are free to use, modify, and distribute it in your own projects. -Dronecode Logo Linux Foundation Logo +Dronecode Logo Linux Foundation Logo
 
diff --git a/docs/ko/middleware/dds_topics.md b/docs/ko/middleware/dds_topics.md index 95784b2227..642635db4c 100644 --- a/docs/ko/middleware/dds_topics.md +++ b/docs/ko/middleware/dds_topics.md @@ -95,192 +95,200 @@ They are not build into the module, and hence are neither published or subscribe :::details See messages -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.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) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [GpioOut](../msg_docs/GpioOut.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) -- [Cpuload](../msg_docs/Cpuload.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.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) -- [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) +- [SystemPower](../msg_docs/SystemPower.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.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) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) - [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [Mission](../msg_docs/Mission.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [LedControl](../msg_docs/LedControl.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [InputRc](../msg_docs/InputRc.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [EventV0](../msg_docs/EventV0.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [Rpm](../msg_docs/Rpm.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) - [IrlockReport](../msg_docs/IrlockReport.md) +- [Ping](../msg_docs/Ping.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [Vtx](../msg_docs/Vtx.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [EscReport](../msg_docs/EscReport.md) +- [Gripper](../msg_docs/Gripper.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [Event](../msg_docs/Event.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) ::: diff --git a/docs/ko/modules/module_template.md b/docs/ko/modules/module_template.md index 761257acc6..79c3b14655 100644 --- a/docs/ko/modules/module_template.md +++ b/docs/ko/modules/module_template.md @@ -35,8 +35,8 @@ PX4-Autopilot contains a template for writing a new application (module) that ru ```cpp WorkItemExample::WorkItemExample() : - ModuleParams(nullptr), - ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::test1) + ModuleParams(nullptr), + ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::test1) { } ``` diff --git a/docs/ko/modules/modules_driver.md b/docs/ko/modules/modules_driver.md index cbcd7b8448..eaa588cf0e 100644 --- a/docs/ko/modules/modules_driver.md +++ b/docs/ko/modules/modules_driver.md @@ -45,6 +45,26 @@ atxxxx [arguments...] status print status info ``` +## auterion_autostarter + +Source: [drivers/auterion_autostarter](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/auterion_autostarter) + +### 설명 + +Driver for starting and auto-detecting different power monitors. + +### Usage {#auterion_autostarter_usage} + +``` +auterion_autostarter [arguments...] + Commands: + start + + stop + + status print status info +``` + ## batmon Source: [drivers/smart_battery/batmon](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/smart_battery/batmon) @@ -925,26 +945,6 @@ pca9685_pwm_out [arguments...] status print status info ``` -## pm_selector_auterion - -Source: [drivers/power_monitor/pm_selector_auterion](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/power_monitor/pm_selector_auterion) - -### 설명 - -Driver for starting and auto-detecting different power monitors. - -### Usage {#pm_selector_auterion_usage} - -``` -pm_selector_auterion [arguments...] - Commands: - start - - stop - - status print status info -``` - ## pmw3901 Source: [drivers/optical_flow/pmw3901](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/optical_flow/pmw3901) @@ -1109,7 +1109,7 @@ px4io [arguments...] ## rgbled -Source: [drivers/lights/rgbled_ncp5623c](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/lights/rgbled_ncp5623c) +Source: [drivers/lights/rgbled](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/lights/rgbled) ### Usage {#rgbled_usage} @@ -1124,9 +1124,7 @@ rgbled [arguments...] [-f ] bus frequency in kHz [-q] quiet startup (no message if no device found) [-a ] I2C address - default: 57 - [-o ] RGB PWM Assignment - default: 123 + default: 85 stop @@ -1438,6 +1436,30 @@ tap_esc [arguments...] default: 4 ``` +## tmp102 + +Source: [drivers/temperature_sensor/tmp102](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/temperature_sensor/tmp102) + +### Usage {#tmp102_usage} + +``` +tmp102 [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 +``` + ## tone_alarm Source: [drivers/tone_alarm](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/tone_alarm) @@ -1627,6 +1649,76 @@ voxlpm [arguments...] status print status info ``` +## vtx + +Source: [drivers/vtx](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/vtx) + +### 설명 + +This module communicates with a VTX camera via serial port. It can be used to +configure the camera settings and to control the camera's video transmission. +Supported protocols are: + +- SmartAudio v1, v2.0, v2.1 +- Tramp + +### Usage {#vtx_usage} + +``` +vtx [arguments...] + Commands: + start + -d VTX device + values: + + Sets an entry in the mapping table: + + + stop + + status print status info +``` + +## vtxtable + +Source: [drivers/vtxtable](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/vtxtable) + +### 설명 + +Manages the VTX frequency, power level and RC mapping table for VTX configuration. + +### Usage {#vtxtable_usage} + +``` +vtxtable [arguments...] + Commands: + status Shows the current VTX table configuration. + + name Sets the VTX table name: + + bands Sets the number of bands: + + band Sets the band frequencies: <1-index> + + + channels Sets the number of channels: + + powerlevels Sets number of power levels: + + powervalues Sets the power level values: + + powerlabels Sets the power level labels: <3 chars...> + + Sets an entry in the mapping table: <0-index> + + + clear Clears the VTX table configuration. + + save Saves the VTX config to a file: + + load Loads the VTX config from a file: +``` + ## zenoh Source: [modules/zenoh](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/zenoh) diff --git a/docs/ko/modules/modules_template.md b/docs/ko/modules/modules_template.md index aad61d7aa0..76a15000e0 100644 --- a/docs/ko/modules/modules_template.md +++ b/docs/ko/modules/modules_template.md @@ -1,5 +1,36 @@ # 모듈 참고: 템플릿 +## mc_raptor + +Source: [modules/mc_raptor](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/mc_raptor) + +### 설명 + +RAPTOR Policy Flight Mode + +### Usage {#mc_raptor_usage} + +``` +mc_raptor [arguments...] + Commands: + start + + intref Modify internal reference + lissajous Set Lissajous trajectory parameters + Amplitude X [m] + Amplitude Y [m] + Amplitude Z [m] + Frequency a + Frequency b + Frequency c + Total duration [s] + Ramp duration [s] + + stop + + status print status info +``` + ## module Source: [templates/template_module](https://github.com/PX4/PX4-Autopilot/tree/main/src/templates/template_module) diff --git a/docs/ko/msg_docs/ActionRequest.md b/docs/ko/msg_docs/ActionRequest.md index 1c724dabb7..94f8d7d693 100644 --- a/docs/ko/msg_docs/ActionRequest.md +++ b/docs/ko/msg_docs/ActionRequest.md @@ -1,12 +1,57 @@ +--- +pageClass: is-wide-page +--- + # ActionRequest (UORB message) -Action request for the vehicle's main state +Action request for the vehicle's main state. Message represents actions requested by a PX4 internal component towards the main state machine such as a request to arm or switch mode. It allows mapping triggers from various external interfaces like RC channels or MAVLink to cause an action. Request are published by `manual_control` and subscribed by the `commander` and `vtol_att_control` modules. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActionRequest.msg) +**TOPICS:** action_request + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | -------- | ---------------------------------------------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| action | `uint8` | | [ACTION](#ACTION) | Requested action | +| source | `uint8` | | [SOURCE](#SOURCE) | Request trigger type, such as a switch, button or gesture | +| mode | `uint8` | | | Requested mode. Only applies when `action` is `ACTION_SWITCH_MODE`. Values for this field are defined by the `vehicle_status_s::NAVIGATION_STATE_*` enumeration. | + +## Enums + +### ACTION {#ACTION} + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ---------------------------------------------------------------------------------------- | +| ACTION_DISARM | `uint8` | 0 | Disarm vehicle | +| ACTION_ARM | `uint8` | 1 | Arm vehicle | +| ACTION_TOGGLE_ARMING | `uint8` | 2 | Toggle arming | +| ACTION_UNKILL | `uint8` | 3 | Revert a kill action | +| ACTION_KILL | `uint8` | 4 | Kill vehicle (instantly stop the motors) | +| ACTION_SWITCH_MODE | `uint8` | 5 | Switch mode. The target mode is set in the `mode` field. | +| ACTION_VTOL_TRANSITION_TO_MULTICOPTER | `uint8` | 6 | Transition to hover flight | +| ACTION_VTOL_TRANSITION_TO_FIXEDWING | `uint8` | 7 | Transition to fast forward flight | +| ACTION_TERMINATION | `uint8` | 8 | Irreversibly output failsafe values on all outputs, trigger parachute | + +### SOURCE {#SOURCE} + +| 명칭 | 형식 | Value | 설명 | +| ---------------------------------------------------------------------------------------------------------------------- | ------- | ----- | --------------------------------------------------------------- | +| SOURCE_STICK_GESTURE | `uint8` | 0 | Triggered by holding the sticks in a certain position | +| SOURCE_RC_SWITCH | `uint8` | 1 | Triggered by an RC switch moving into a certain position | +| SOURCE_RC_BUTTON | `uint8` | 2 | Triggered by a momentary button on the RC being pressed or held | +| SOURCE_RC_MODE_SLOT | `uint8` | 3 | Mode change through the RC mode selection mechanism | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActionRequest.msg) + +:::details +Click here to see original file ```c # Action request for the vehicle's main state @@ -35,5 +80,6 @@ uint8 SOURCE_RC_BUTTON = 2 # Triggered by a momentary button on the RC bein uint8 SOURCE_RC_MODE_SLOT = 3 # Mode change through the RC mode selection mechanism uint8 mode # Requested mode. Only applies when `action` is `ACTION_SWITCH_MODE`. Values for this field are defined by the `vehicle_status_s::NAVIGATION_STATE_*` enumeration. - ``` + +::: diff --git a/docs/ko/msg_docs/ActuatorArmed.md b/docs/ko/msg_docs/ActuatorArmed.md index adee89cb21..947c633568 100644 --- a/docs/ko/msg_docs/ActuatorArmed.md +++ b/docs/ko/msg_docs/ActuatorArmed.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # ActuatorArmed (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorArmed.msg) +**TOPICS:** actuator_armed + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| armed | `bool` | | | Set to true if system is armed | +| prearmed | `bool` | | | Set to true if the actuator safety is disabled but motors are not armed | +| ready_to_arm | `bool` | | | Set to true if system is ready to be armed | +| lockdown | `bool` | | | Set to true if actuators are forced to being disabled (due to emergency or HIL) | +| kill | `bool` | | | Set to true if manual throttle kill switch is engaged | +| termination | `bool` | | | Send out failsafe (by default same as disarmed) output | +| in_esc_calibration_mode | `bool` | | | IO/FMU should ignore messages from the actuator controls topics | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorArmed.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -12,5 +36,6 @@ bool lockdown # Set to true if actuators are forced to being disabled (due to e bool kill # Set to true if manual throttle kill switch is engaged bool termination # Send out failsafe (by default same as disarmed) output bool in_esc_calibration_mode # IO/FMU should ignore messages from the actuator controls topics - ``` + +::: diff --git a/docs/ko/msg_docs/ActuatorControlsStatus.md b/docs/ko/msg_docs/ActuatorControlsStatus.md index e8b30d6132..7949287110 100644 --- a/docs/ko/msg_docs/ActuatorControlsStatus.md +++ b/docs/ko/msg_docs/ActuatorControlsStatus.md @@ -1,6 +1,24 @@ +--- +pageClass: is-wide-page +--- + # ActuatorControlsStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorControlsStatus.msg) +**TOPICS:** actuator_controls_status_0 actuator_controls_status_1 + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| control_power | `float32[3]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorControlsStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +26,6 @@ uint64 timestamp # time since system start (microseconds) float32[3] control_power # TOPICS actuator_controls_status_0 actuator_controls_status_1 - ``` + +::: diff --git a/docs/ko/msg_docs/ActuatorMotors.md b/docs/ko/msg_docs/ActuatorMotors.md index 701465d6ea..eb794ef1c6 100644 --- a/docs/ko/msg_docs/ActuatorMotors.md +++ b/docs/ko/msg_docs/ActuatorMotors.md @@ -1,11 +1,39 @@ +--- +pageClass: is-wide-page +--- + # ActuatorMotors (UORB message) -Motor control message +Motor control message. Normalised thrust setpoint for up to 12 motors. Published by the vehicle's allocation and consumed by the ESC protocol drivers e.g. PWM, DSHOT, UAVCAN. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorMotors.msg) +**TOPICS:** actuator_motors + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Sampling timestamp of the data this control response is based on | +| reversible_flags | `uint16` | | | Bitset indicating which motors are configured to be reversible | +| control | `float32[12]` | | [-1 : 1] | Normalized thrust. where 1 means maximum positive thrust, -1 maximum negative (if not supported by the output, <0 maps to NaN). NaN maps to disarmed (stop the motors) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ----------------------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ACTUATOR_FUNCTION_MOTOR1 | `uint8` | 101 | | +| NUM_CONTROLS | `uint8` | 12 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorMotors.msg) + +:::details +Click here to see original file ```c # Motor control message @@ -24,5 +52,6 @@ uint8 ACTUATOR_FUNCTION_MOTOR1 = 101 # uint8 NUM_CONTROLS = 12 # float32[12] control # [@range -1, 1] Normalized thrust. where 1 means maximum positive thrust, -1 maximum negative (if not supported by the output, <0 maps to NaN). NaN maps to disarmed (stop the motors) - ``` + +::: diff --git a/docs/ko/msg_docs/ActuatorOutputs.md b/docs/ko/msg_docs/ActuatorOutputs.md index cf89004982..cbdaacf727 100644 --- a/docs/ko/msg_docs/ActuatorOutputs.md +++ b/docs/ko/msg_docs/ActuatorOutputs.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # ActuatorOutputs (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorOutputs.msg) +**TOPICS:** actuator_outputs actuator_outputs_sim actuator_outputs_debug + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | ------------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| noutputs | `uint32` | | | valid outputs | +| output | `float32[16]` | | | output data, in natural output units | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ------------------- | +| NUM_ACTUATOR_OUTPUTS | `uint8` | 16 | | +| NUM_ACTUATOR_OUTPUT_GROUPS | `uint8` | 4 | for sanity checking | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorOutputs.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +37,6 @@ float32[16] output # output data, in natural output units # actuator_outputs_sim is used for SITL, HITL & SIH (with an output range of [-1, 1]) # TOPICS actuator_outputs actuator_outputs_sim actuator_outputs_debug - ``` + +::: diff --git a/docs/ko/msg_docs/ActuatorServos.md b/docs/ko/msg_docs/ActuatorServos.md index ea053f67a3..41776a04f5 100644 --- a/docs/ko/msg_docs/ActuatorServos.md +++ b/docs/ko/msg_docs/ActuatorServos.md @@ -1,11 +1,37 @@ +--- +pageClass: is-wide-page +--- + # ActuatorServos (UORB message) -Servo control message +Servo control message. Normalised output setpoint for up to 8 servos. Published by the vehicle's allocation and consumed by the actuator output drivers. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorServos.msg) +**TOPICS:** actuator_servos + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Sampling timestamp of the data this control response is based on | +| control | `float32[8]` | | [-1 : 1] | Normalized output. 1 means maximum positive position. -1 maximum negative position (if not supported by the output, <0 maps to NaN). NaN maps to disarmed. | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| NUM_CONTROLS | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorServos.msg) + +:::details +Click here to see original file ```c # Servo control message @@ -20,5 +46,6 @@ uint64 timestamp_sample # [us] Sampling timestamp of the data this control resp uint8 NUM_CONTROLS = 8 # float32[8] control # [-] [@range -1, 1] Normalized output. 1 means maximum positive position. -1 maximum negative position (if not supported by the output, <0 maps to NaN). NaN maps to disarmed. - ``` + +::: diff --git a/docs/ko/msg_docs/ActuatorServosTrim.md b/docs/ko/msg_docs/ActuatorServosTrim.md index 07f42a43ce..f507eb06b5 100644 --- a/docs/ko/msg_docs/ActuatorServosTrim.md +++ b/docs/ko/msg_docs/ActuatorServosTrim.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # ActuatorServosTrim (UORB message) -Servo trims, added as offset to servo outputs +Servo trims, added as offset to servo outputs. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorServosTrim.msg) +**TOPICS:** actuator_servostrim + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| trim | `float32[8]` | | | range: [-1, 1] | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------- | ------- | ----- | -- | +| NUM_CONTROLS | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorServosTrim.msg) + +:::details +Click here to see original file ```c # Servo trims, added as offset to servo outputs @@ -10,5 +34,6 @@ uint64 timestamp # time since system start (microseconds) uint8 NUM_CONTROLS = 8 float32[8] trim # range: [-1, 1] - ``` + +::: diff --git a/docs/ko/msg_docs/ActuatorTest.md b/docs/ko/msg_docs/ActuatorTest.md index 16d1523c9d..ffb159486c 100644 --- a/docs/ko/msg_docs/ActuatorTest.md +++ b/docs/ko/msg_docs/ActuatorTest.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # ActuatorTest (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorTest.msg) +**TOPICS:** actuator_test + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| action | `uint8` | | | one of ACTION\_\* | +| function | `uint16` | | | actuator output function | +| value | `float32` | | | range: [-1, 1], where 1 means maximum positive output, | +| timeout_ms | `uint32` | | | timeout in ms after which to exit test mode (if 0, do not time out) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------- | ------- | ----- | -------------------------------------------------------------------------------------------------------------------- | +| ACTION_RELEASE_CONTROL | `uint8` | 0 | exit test mode for the given function | +| ACTION_DO_CONTROL | `uint8` | 1 | enable actuator test mode | +| FUNCTION_MOTOR1 | `uint8` | 101 | | +| MAX_NUM_MOTORS | `uint8` | 12 | | +| FUNCTION_SERVO1 | `uint8` | 201 | | +| MAX_NUM_SERVOS | `uint8` | 8 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | > = MAX_NUM_MOTORS to support code in esc_calibration | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorTest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -24,5 +57,6 @@ float32 value # range: [-1, 1], where 1 means maximum positive output, uint32 timeout_ms # timeout in ms after which to exit test mode (if 0, do not time out) uint8 ORB_QUEUE_LENGTH = 16 # >= MAX_NUM_MOTORS to support code in esc_calibration - ``` + +::: diff --git a/docs/ko/msg_docs/AdcReport.md b/docs/ko/msg_docs/AdcReport.md index 50fde63ff5..e872f5eb88 100644 --- a/docs/ko/msg_docs/AdcReport.md +++ b/docs/ko/msg_docs/AdcReport.md @@ -1,10 +1,32 @@ +--- +pageClass: is-wide-page +--- + # AdcReport (UORB message) 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) +**TOPICS:** adc_report + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| channel_id | `int16[16]` | | | ADC channel IDs, negative for non-existent, TODO: should be kept same as array index | +| raw_data | `int32[16]` | | | ADC channel raw value, accept negative value, valid if channel ID is positive | +| resolution | `uint32` | | | ADC channel resolution | +| v_ref | `float32` | V | | ADC channel voltage reference, use to calculate LSB voltage(lsb=scale/resolution) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AdcReport.msg) + +:::details +Click here to see original file ```c # ADC raw data. @@ -17,5 +39,6 @@ int16[16] channel_id # [-] ADC channel IDs, negative for non-existent, TODO: sh 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/ko/msg_docs/Airspeed.md b/docs/ko/msg_docs/Airspeed.md index 949af8d5e7..9baed000a6 100644 --- a/docs/ko/msg_docs/Airspeed.md +++ b/docs/ko/msg_docs/Airspeed.md @@ -1,11 +1,32 @@ +--- +pageClass: is-wide-page +--- + # Airspeed (UORB message) -Airspeed data from sensors +Airspeed data from sensors. This is published by airspeed sensor drivers, CAN airspeed sensors, simulators. It is subscribed by the airspeed selector module, which validates the data from multiple sensors and passes on a single estimation to the EKF, controllers and telemetry providers. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Airspeed.msg) +**TOPICS:** airspeed + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------- | -------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp of the raw data | +| indicated_airspeed_m_s | `float32` | m/s | | Indicated airspeed | +| true_airspeed_m_s | `float32` | m/s | | True airspeed | +| confidence | `float32` | | [0 : 1] | Confidence value for this sensor | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Airspeed.msg) + +:::details +Click here to see original file ```c # Airspeed data from sensors @@ -18,5 +39,6 @@ uint64 timestamp_sample # [us] Timestamp of the raw data float32 indicated_airspeed_m_s # [m/s] Indicated airspeed float32 true_airspeed_m_s # [m/s] True airspeed float32 confidence # [@range 0,1] Confidence value for this sensor - ``` + +::: diff --git a/docs/ko/msg_docs/AirspeedValidated.md b/docs/ko/msg_docs/AirspeedValidated.md index 61f607e7fa..aeffcc6904 100644 --- a/docs/ko/msg_docs/AirspeedValidated.md +++ b/docs/ko/msg_docs/AirspeedValidated.md @@ -1,11 +1,56 @@ +--- +pageClass: is-wide-page +--- + # AirspeedValidated (UORB message) -Validated airspeed +Validated airspeed. Provides information about airspeed (indicated, true, calibrated) and the source of the data. Used by controllers, estimators and for airspeed reporting to operator. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/AirspeedValidated.msg) +**TOPICS:** airspeed_validated + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| indicated_airspeed_m_s | `float32` | m/s | | Indicated airspeed (IAS) (Invalid: NaN) | +| calibrated_airspeed_m_s | `float32` | m/s | | Calibrated airspeed (CAS) (Invalid: NaN) | +| true_airspeed_m_s | `float32` | m/s | | True airspeed (TAS) (Invalid: NaN) | +| airspeed_source | `int8` | | [SOURCE](#SOURCE) | Source of currently published airspeed values | +| calibrated_ground_minus_wind_m_s | `float32` | m/s | | CAS calculated from groundspeed - windspeed, where windspeed is estimated based on a zero-sideslip assumption (Invalid: NaN) | +| calibraded_airspeed_synth_m_s | `float32` | m/s | | Synthetic airspeed (Invalid: NaN) | +| airspeed_derivative_filtered | `float32` | m/s^2 | | Filtered indicated airspeed derivative | +| throttle_filtered | `float32` | | | Filtered fixed-wing throttle | +| pitch_filtered | `float32` | rad | | Filtered pitch | + +## Enums + +### SOURCE {#SOURCE} + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------- | ------ | ----- | ----------------------- | +| SOURCE_DISABLED | `int8` | -1 | Disabled | +| SOURCE_GROUND_MINUS_WIND | `int8` | 0 | Ground speed minus wind | +| SOURCE_SENSOR_1 | `int8` | 1 | Sensor 1 | +| SOURCE_SENSOR_2 | `int8` | 2 | Sensor 2 | +| SOURCE_SENSOR_3 | `int8` | 3 | Sensor 3 | +| SOURCE_SYNTHETIC | `int8` | 4 | Synthetic airspeed | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/AirspeedValidated.msg) + +:::details +Click here to see original file ```c # Validated airspeed @@ -35,5 +80,6 @@ float32 calibraded_airspeed_synth_m_s # [m/s] [@invalid NaN] Synthetic airsp float32 airspeed_derivative_filtered # [m/s^2] Filtered indicated airspeed derivative float32 throttle_filtered # [-] Filtered fixed-wing throttle float32 pitch_filtered # [rad] Filtered pitch - ``` + +::: diff --git a/docs/ko/msg_docs/AirspeedValidatedV0.md b/docs/ko/msg_docs/AirspeedValidatedV0.md index 8bca98a224..e311b1e496 100644 --- a/docs/ko/msg_docs/AirspeedValidatedV0.md +++ b/docs/ko/msg_docs/AirspeedValidatedV0.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # AirspeedValidatedV0 (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/AirspeedValidatedV0.msg) +**TOPICS:** airspeed_validatedv0 + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| indicated_airspeed_m_s | `float32` | | | indicated airspeed in m/s (IAS), set to NAN if invalid | +| calibrated_airspeed_m_s | `float32` | | | calibrated airspeed in m/s (CAS, accounts for instrumentation errors), set to NAN if invalid | +| true_airspeed_m_s | `float32` | | | true filtered airspeed in m/s (TAS), set to NAN if invalid | +| calibrated_ground_minus_wind_m_s | `float32` | | | CAS calculated from groundspeed - windspeed, where windspeed is estimated based on a zero-sideslip assumption, set to NAN if invalid | +| true_ground_minus_wind_m_s | `float32` | | | TAS calculated from groundspeed - windspeed, where windspeed is estimated based on a zero-sideslip assumption, set to NAN if invalid | +| airspeed_sensor_measurement_valid | `bool` | | | True if data from at least one airspeed sensor is declared valid. | +| selected_airspeed_index | `int8` | | | 1-3: airspeed sensor index, 0: groundspeed-windspeed, -1: airspeed invalid | +| airspeed_derivative_filtered | `float32` | | | filtered indicated airspeed derivative [m/s/s] | +| throttle_filtered | `float32` | | | filtered fixed-wing throttle [-] | +| pitch_filtered | `float32` | | | filtered pitch [rad] | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/AirspeedValidatedV0.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -21,5 +54,6 @@ int8 selected_airspeed_index # 1-3: airspeed sensor index, 0: groundspeed-win float32 airspeed_derivative_filtered # filtered indicated airspeed derivative [m/s/s] float32 throttle_filtered # filtered fixed-wing throttle [-] float32 pitch_filtered # filtered pitch [rad] - ``` + +::: diff --git a/docs/ko/msg_docs/AirspeedWind.md b/docs/ko/msg_docs/AirspeedWind.md index 23e91399b0..a3aaf9ab46 100644 --- a/docs/ko/msg_docs/AirspeedWind.md +++ b/docs/ko/msg_docs/AirspeedWind.md @@ -1,6 +1,10 @@ +--- +pageClass: is-wide-page +--- + # AirspeedWind (UORB message) -Wind estimate (from airspeed_selector) +Wind estimate (from airspeed_selector). Contains wind estimation and airspeed innovation information estimated by the WindEstimator in the airspeed selector module. @@ -8,7 +12,42 @@ in the airspeed selector module. This message is published by the airspeed selector for debugging purposes, and is not subscribed to by any other modules. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AirspeedWind.msg) +**TOPICS:** airspeed_wind + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp of the raw data | +| windspeed_north | `float32` | m/s | | Wind component in north / X direction | +| windspeed_east | `float32` | m/s | | Wind component in east / Y direction | +| variance_north | `float32` | (m/s)^2 | | Wind estimate error variance in north / X direction (Invalid: 0 if not estimated) | +| variance_east | `float32` | (m/s)^2 | | Wind estimate error variance in east / Y direction (Invalid: 0 if not estimated) | +| tas_innov | `float32` | m/s | | True airspeed innovation | +| tas_innov_var | `float32` | m/s | | True airspeed innovation variance | +| tas_scale_raw | `float32` | | | Estimated true airspeed scale factor (not validated) | +| tas_scale_raw_var | `float32` | | | True airspeed scale factor variance | +| tas_scale_validated | `float32` | | | Estimated true airspeed scale factor after validation | +| beta_innov | `float32` | rad | | Sideslip measurement innovation | +| beta_innov_var | `float32` | rad^2 | | Sideslip measurement innovation variance | +| source | `uint8` | | | source of wind estimate | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ---------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ----------------------------------------------------------------------------------------------------- | +| SOURCE_AS_BETA_ONLY | `uint8` | 0 | Wind estimate only based on synthetic sideslip fusion | +| SOURCE_AS_SENSOR_1 | `uint8` | 1 | Combined synthetic sideslip and airspeed fusion (data from first airspeed sensor) | +| SOURCE_AS_SENSOR_2 | `uint8` | 2 | Combined synthetic sideslip and airspeed fusion (data from second airspeed sensor) | +| SOURCE_AS_SENSOR_3 | `uint8` | 3 | Combined synthetic sideslip and airspeed fusion (data from third airspeed sensor) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AirspeedWind.msg) + +:::details +Click here to see original file ```c # Wind estimate (from airspeed_selector) @@ -45,5 +84,6 @@ uint8 SOURCE_AS_BETA_ONLY = 0 # Wind estimate only based on synthetic sideslip f uint8 SOURCE_AS_SENSOR_1 = 1 # Combined synthetic sideslip and airspeed fusion (data from first airspeed sensor) uint8 SOURCE_AS_SENSOR_2 = 2 # Combined synthetic sideslip and airspeed fusion (data from second airspeed sensor) uint8 SOURCE_AS_SENSOR_3 = 3 # Combined synthetic sideslip and airspeed fusion (data from third airspeed sensor) - ``` + +::: diff --git a/docs/ko/msg_docs/ArmingCheckReply.md b/docs/ko/msg_docs/ArmingCheckReply.md index 14af54f0d1..bf5e6d21d7 100644 --- a/docs/ko/msg_docs/ArmingCheckReply.md +++ b/docs/ko/msg_docs/ArmingCheckReply.md @@ -1,6 +1,10 @@ +--- +pageClass: is-wide-page +--- + # ArmingCheckReply (UORB message) -Arming check reply +Arming check reply. This is a response to an ArmingCheckRequest message sent by the FMU to an external component, such as a ROS 2 navigation mode. The response contains the current set of external mode requirements, and a queue of events indicating recent failures to set the mode (which the FMU may then forward to a ground station). @@ -9,7 +13,55 @@ The request is sent regularly to all registered ROS modes, even while armed, so Note that the external component is identified by its registration_id, which is allocated to the component during registration (arming_check_id in RegisterExtComponentReply). The message is not used by internal/FMU components, as their mode requirements are known at compile time. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ArmingCheckReply.msg) +**TOPICS:** arming_checkreply + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start. | +| request_id | `uint8` | | | Id of ArmingCheckRequest for which this is a response | +| registration_id | `uint8` | | | Id of external component emitting this response | +| health_component_index | `uint8` | | [HEALTH_COMPONENT_INDEX](#HEALTH_COMPONENT_INDEX) | | +| health_component_is_present | `bool` | | | Unused. Intended for use with health events interface (health_component_t in events.json) | +| health_component_warning | `bool` | | | Unused. Intended for use with health events interface (health_component_t in events.json) | +| health_component_error | `bool` | | | Unused. Intended for use with health events interface (health_component_t in events.json) | +| can_arm_and_run | `bool` | | | True if the component can arm. For navigation mode components, true if the component can arm in the mode or switch to the mode when already armed | +| num_events | `uint8` | | | Number of queued failure messages (Event) in the events field | +| events | `Event[5]` | | | Arming failure reasons (Queue of events to report to GCS) | +| mode_req_angular_velocity | `bool` | | | Requires angular velocity estimate (e.g. from gyroscope) | +| mode_req_attitude | `bool` | | | Requires an attitude estimate | +| mode_req_local_alt | `bool` | | | Requires a local altitude estimate | +| mode_req_local_position | `bool` | | | Requires a local position estimate | +| mode_req_local_position_relaxed | `bool` | | | Requires a more relaxed global position estimate | +| mode_req_global_position | `bool` | | | Requires a global position estimate | +| mode_req_global_position_relaxed | `bool` | | | Requires a relaxed global position estimate | +| mode_req_mission | `bool` | | | Requires an uploaded mission | +| mode_req_home_position | `bool` | | | Requires a home position (such as RTL/Return mode) | +| mode_req_prevent_arming | `bool` | | | Prevent arming (such as in Land mode) | +| mode_req_manual_control | `bool` | | | Requires a manual controller | + +## Enums + +### HEALTH_COMPONENT_INDEX {#HEALTH_COMPONENT_INDEX} + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | --------------------------------------------------------- | +| HEALTH_COMPONENT_INDEX_NONE | `uint8` | 0 | Index of health component for which this response applies | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ArmingCheckReply.msg) + +:::details +Click here to see original file ```c # Arming check reply @@ -55,5 +107,6 @@ bool mode_req_prevent_arming # Prevent arming (such as in Land mode) bool mode_req_manual_control # Requires a manual controller uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/ko/msg_docs/ArmingCheckReplyV0.md b/docs/ko/msg_docs/ArmingCheckReplyV0.md index 48917da802..10a7bd8602 100644 --- a/docs/ko/msg_docs/ArmingCheckReplyV0.md +++ b/docs/ko/msg_docs/ArmingCheckReplyV0.md @@ -1,6 +1,50 @@ +--- +pageClass: is-wide-page +--- + # ArmingCheckReplyV0 (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ArmingCheckReplyV0.msg) +**TOPICS:** arming_checkreplyv0 + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint8` | | | | +| registration_id | `uint8` | | | | +| health_component_index | `uint8` | | | HEALTH_COMPONENT_INDEX_\* | +| health_component_is_present | `bool` | | | | +| health_component_warning | `bool` | | | | +| health_component_error | `bool` | | | | +| can_arm_and_run | `bool` | | | whether arming is possible, and if it's a navigation mode, if it can run | +| num_events | `uint8` | | | | +| events | `EventV0[5]` | | | | +| mode_req_angular_velocity | `bool` | | | | +| mode_req_attitude | `bool` | | | | +| mode_req_local_alt | `bool` | | | | +| mode_req_local_position | `bool` | | | | +| mode_req_local_position_relaxed | `bool` | | | | +| mode_req_global_position | `bool` | | | | +| mode_req_mission | `bool` | | | | +| mode_req_home_position | `bool` | | | | +| mode_req_prevent_arming | `bool` | | | | +| mode_req_manual_control | `bool` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| HEALTH_COMPONENT_INDEX_NONE | `uint8` | 0 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ArmingCheckReplyV0.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -37,5 +81,6 @@ bool mode_req_manual_control uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/ko/msg_docs/ArmingCheckRequest.md b/docs/ko/msg_docs/ArmingCheckRequest.md index d093dfb5e1..d67cf35311 100644 --- a/docs/ko/msg_docs/ArmingCheckRequest.md +++ b/docs/ko/msg_docs/ArmingCheckRequest.md @@ -1,6 +1,10 @@ +--- +pageClass: is-wide-page +--- + # ArmingCheckRequest (UORB message) -Arming check request +Arming check request. Broadcast message to request arming checks be reported by all registered components, such as external ROS 2 navigation modes. All registered components should respond with an ArmingCheckReply message that indicates their current mode requirements, and any arming failure information. @@ -9,7 +13,28 @@ The request is sent regularly, even while armed, so that the FMU always knows th The reply will include the published request_id, allowing correlation of all arming check information for a particular request. The reply will also include the registration_id for each external component, provided to it during the registration process (RegisterExtComponentReply). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ArmingCheckRequest.msg) +**TOPICS:** arming_checkrequest + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| request_id | `uint8` | | | Id of this request. Allows correlation with associated ArmingCheckReply messages. | +| valid_registrations_mask | `uint32` | | | Bitmask of valid registration ID's (the bit is also cleared if flagged as unresponsive) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ArmingCheckRequest.msg) + +:::details +Click here to see original file ```c # Arming check request @@ -28,5 +53,6 @@ uint64 timestamp # [us] Time since system start uint8 request_id # [-] Id of this request. Allows correlation with associated ArmingCheckReply messages. uint32 valid_registrations_mask # [-] Bitmask of valid registration ID's (the bit is also cleared if flagged as unresponsive) - ``` + +::: diff --git a/docs/ko/msg_docs/ArmingCheckRequestV0.md b/docs/ko/msg_docs/ArmingCheckRequestV0.md index f5680c11f2..1014b8f53e 100644 --- a/docs/ko/msg_docs/ArmingCheckRequestV0.md +++ b/docs/ko/msg_docs/ArmingCheckRequestV0.md @@ -1,3 +1,7 @@ +--- +pageClass: is-wide-page +--- + # ArmingCheckRequestV0 (UORB message) Arming check request. @@ -9,7 +13,27 @@ The request is sent regularly, even while armed, so that the FMU always knows th The reply will include the published request_id, allowing correlation of all arming check information for a particular request. The reply will also include the registration_id for each external component, provided to it during the registration process (RegisterExtComponentReply). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ArmingCheckRequestV0.msg) +**TOPICS:** arming_checkrequestv0 + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start. | +| request_id | `uint8` | | | Id of this request. Allows correlation with associated ArmingCheckReply messages. | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ArmingCheckRequestV0.msg) + +:::details +Click here to see original file ```c # Arming check request. @@ -26,5 +50,6 @@ uint32 MESSAGE_VERSION = 0 uint64 timestamp # [us] Time since system start. uint8 request_id # Id of this request. Allows correlation with associated ArmingCheckReply messages. - ``` + +::: diff --git a/docs/ko/msg_docs/AutotuneAttitudeControlStatus.md b/docs/ko/msg_docs/AutotuneAttitudeControlStatus.md index 31a47ef204..6831460328 100644 --- a/docs/ko/msg_docs/AutotuneAttitudeControlStatus.md +++ b/docs/ko/msg_docs/AutotuneAttitudeControlStatus.md @@ -1,13 +1,68 @@ +--- +pageClass: is-wide-page +--- + # AutotuneAttitudeControlStatus (UORB message) -Autotune attitude control status +Autotune attitude control status. This message is published by the fw_autotune_attitude_control and mc_autotune_attitude_control modules when the user engages autotune, and is subscribed to by the respective attitude controllers to command rate setpoints. The rate_sp field is consumed by the controllers, while the remaining fields (model coefficients, gains, filters, and autotune state) are used for logging and debugging. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AutotuneAttitudeControlStatus.msg) +**TOPICS:** autotune_attitudecontrol_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------ | ------------ | ---------------------------------------------------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| coeff | `float32[5]` | | | Coefficients of the identified discrete-time model | +| coeff_var | `float32[5]` | | | Coefficients' variance of the identified discrete-time model | +| fitness | `float32` | | | Fitness of the parameter estimate | +| innov | `float32` | rad/s | | Innovation (residual error between model and measured output) | +| dt_model | `float32` | s | | Model sample time used for identification | +| kc | `float32` | | | Proportional rate-loop gain (ideal form) | +| ki | `float32` | | | Integral rate-loop gain (ideal form) | +| kd | `float32` | | | Derivative rate-loop gain (ideal form) | +| kff | `float32` | | | Feedforward rate-loop gain | +| att_p | `float32` | | | Proportional attitude gain | +| rate_sp | `float32[3]` | rad/s | | Rate setpoint commanded to the attitude controller. | +| u_filt | `float32` | | | Filtered input signal (normalized torque setpoint) used in system identification. | +| y_filt | `float32` | rad/s | | Filtered output signal (angular velocity) used in system identification. | +| state | `uint8` | | [STATE](#STATE) | Current state of the autotune procedure. | + +## Enums + +### STATE {#STATE} + +| 명칭 | 형식 | Value | 설명 | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------- | +| STATE_IDLE | `uint8` | 0 | Idle (not running) | +| STATE_INIT | `uint8` | 1 | Initialize filters and setup | +| STATE_ROLL_AMPLITUDE_DETECTION | `uint8` | 2 | FW only: determine required excitation amplitude (roll) | +| STATE_ROLL | `uint8` | 3 | Roll-axis excitation and model identification | +| STATE_ROLL_PAUSE | `uint8` | 4 | Pause to return to level flight | +| STATE_PITCH_AMPLITUDE_DETECTION | `uint8` | 5 | FW only: determine required excitation amplitude (pitch) | +| STATE_PITCH | `uint8` | 6 | Pitch-axis excitation and model identification | +| STATE_PITCH_PAUSE | `uint8` | 7 | Pause to return to level flight | +| STATE_YAW_AMPLITUDE_DETECTION | `uint8` | 8 | FW only: determine required excitation amplitude (yaw) | +| STATE_YAW | `uint8` | 9 | Yaw-axis excitation and model identification | +| STATE_YAW_PAUSE | `uint8` | 10 | Pause to return to level flight | +| STATE_VERIFICATION | `uint8` | 11 | Verify model and candidate gains | +| STATE_APPLY | `uint8` | 12 | Apply gains | +| STATE_TEST | `uint8` | 13 | Test gains in closed-loop | +| STATE_COMPLETE | `uint8` | 14 | Tuning completed successfully | +| STATE_FAIL | `uint8` | 15 | Tuning failed (model invalid or controller unstable) | +| STATE_WAIT_FOR_DISARM | `uint8` | 16 | Waiting for disarm before finalizing | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AutotuneAttitudeControlStatus.msg) + +:::details +Click here to see original file ```c # Autotune attitude control status @@ -55,5 +110,6 @@ uint8 STATE_TEST = 13 # Test gains in closed-loop uint8 STATE_COMPLETE = 14 # Tuning completed successfully uint8 STATE_FAIL = 15 # Tuning failed (model invalid or controller unstable) uint8 STATE_WAIT_FOR_DISARM = 16 # Waiting for disarm before finalizing - ``` + +::: diff --git a/docs/ko/msg_docs/BatteryInfo.md b/docs/ko/msg_docs/BatteryInfo.md index 4b0c2823ce..35f5175ced 100644 --- a/docs/ko/msg_docs/BatteryInfo.md +++ b/docs/ko/msg_docs/BatteryInfo.md @@ -1,11 +1,30 @@ +--- +pageClass: is-wide-page +--- + # BatteryInfo (UORB message) -Battery information +Battery information. Static or near-invariant battery information. Should be streamed at low rate. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/BatteryInfo.msg) +**TOPICS:** battery_info + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| id | `uint8` | | | Must match the id in the battery_status message for the same battery | +| serial_number | `char[32]` | | | Serial number of the battery pack in ASCII characters, 0 terminated (Invalid: 0 All bytes) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/BatteryInfo.msg) + +:::details +Click here to see original file ```c # Battery information @@ -17,5 +36,6 @@ uint64 timestamp # [us] Time since system start uint8 id # Must match the id in the battery_status message for the same battery char[32] serial_number # [@invalid 0 All bytes] Serial number of the battery pack in ASCII characters, 0 terminated - ``` + +::: diff --git a/docs/ko/msg_docs/BatteryStatus.md b/docs/ko/msg_docs/BatteryStatus.md index ec2c19c59e..9058d50080 100644 --- a/docs/ko/msg_docs/BatteryStatus.md +++ b/docs/ko/msg_docs/BatteryStatus.md @@ -1,12 +1,117 @@ +--- +pageClass: is-wide-page +--- + # BatteryStatus (UORB message) -Battery status +Battery status. Battery status information for up to 3 battery instances. These are populated from power module and smart battery device drivers, and one battery updated from MAVLink. Battery instance information is also logged and streamed in MAVLink telemetry. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/BatteryStatus.msg) +**TOPICS:** battery_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------------------------------------- | ------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| connected | `bool` | | | Whether or not a battery is connected. For power modules this is based on a voltage threshold. | +| voltage_v | `float32` | V | | Battery voltage (Invalid: 0) | +| current_a | `float32` | A | | Battery current (Invalid: -1) | +| current_average_a | `float32` | A | | Battery current average (for FW average in level flight) (Invalid: -1) | +| discharged_mah | `float32` | mAh | | Discharged amount (Invalid: -1) | +| remaining | `float32` | | [0 : 1] | Remaining capacity (Invalid: -1) | +| scale | `float32` | | [1 : -] | Scaling factor to compensate for lower actuation power caused by voltage sag (Invalid: -1) | +| time_remaining_s | `float32` | s | | Predicted time remaining until battery is empty under previous averaged load (Invalid: NaN) | +| temperature | `float32` | °C | | Temperature of the battery (Invalid: NaN) | +| cell_count | `uint8` | | | Number of cells (Invalid: 0) | +| source | `uint8` | | [SOURCE](#SOURCE) | Battery source | +| priority | `uint8` | | | Zero based priority is the connection on the Power Controller V1..Vn AKA BrickN-1 | +| capacity | `uint16` | mAh | | Capacity of the battery when fully charged | +| cycle_count | `uint16` | | | Number of discharge cycles the battery has experienced | +| average_time_to_empty | `uint16` | minutes | | Predicted remaining battery capacity based on the average rate of discharge | +| manufacture_date | `uint16` | | | Manufacture date, part of serial number of the battery pack. Formatted as: Day + Month×32 + (Year–1980)×512 | +| state_of_health | `uint16` | % | [0 : 100] | State of health. FullChargeCapacity/DesignCapacity | +| max_error | `uint16` | % | [1 : 100] | Max error, expected margin of error in the state-of-charge calculation | +| id | `uint8` | | | ID number of a battery. Should be unique and consistent for the lifetime of a vehicle. 1-indexed | +| interface_error | `uint16` | | | Interface error counter | +| voltage_cell_v | `float32[14]` | V | | Battery individual cell voltages (Invalid: 0) | +| max_cell_voltage_delta | `float32` | V | | Max difference between individual cell voltages | +| is_powering_off | `bool` | | | Power off event imminent indication, false if unknown | +| is_required | `bool` | | | Set if the battery is explicitly required before arming | +| warning | `uint8` | | [WARNING](#WARNING)[STATE](#STATE) | Current battery warning | +| faults | `uint16` | | [FAULT](#FAULT) | Smart battery supply status/fault flags (bitmask) for health indication | +| full_charge_capacity_wh | `float32` | Wh | | Compensated battery capacity | +| remaining_capacity_wh | `float32` | Wh | | Compensated battery capacity remaining | +| over_discharge_count | `uint16` | | | Number of battery overdischarge | +| nominal_voltage | `float32` | V | | Nominal voltage of the battery pack | +| internal_resistance_estimate | `float32` | Ohm | | Internal resistance per cell estimate | +| ocv_estimate | `float32` | V | | Open circuit voltage estimate | +| ocv_estimate_filtered | `float32` | V | | Filtered open circuit voltage estimate | +| volt_based_soc_estimate | `float32` | | [0 : 1] | Normalized volt based state of charge estimate | +| voltage_prediction | `float32` | V | | Predicted voltage | +| prediction_error | `float32` | V | | Prediction error | +| estimation_covariance_norm | `float32` | | | Norm of the covariance matrix | + +## Enums + +### SOURCE {#SOURCE} + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------- | ------- | ----- | ----------------------------------------------------------------- | +| SOURCE_POWER_MODULE | `uint8` | 0 | Power module (analog ADC or I2C power monitor) | +| SOURCE_EXTERNAL | `uint8` | 1 | External (MAVLink, CAN, or external driver) | +| SOURCE_ESCS | `uint8` | 2 | ESCs (via ESC telemetry) | + +### WARNING {#WARNING} + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------ | ------- | ----- | -------------------------------------------- | +| WARNING_NONE | `uint8` | 0 | No battery low voltage warning active | +| WARNING_LOW | `uint8` | 1 | Low voltage warning | +| WARNING_CRITICAL | `uint8` | 2 | Critical voltage, return / abort immediately | +| WARNING_EMERGENCY | `uint8` | 3 | Immediate landing required | +| WARNING_FAILED | `uint8` | 4 | Battery has failed completely | + +### STATE {#STATE} + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| STATE_UNHEALTHY | `uint8` | 6 | Battery is diagnosed to be defective or an error occurred, usage is discouraged / prohibited. Possible causes (faults) are listed in faults field | +| STATE_CHARGING | `uint8` | 7 | Battery is charging | + +### FAULT {#FAULT} + +| 명칭 | 형식 | Value | 설명 | +| ---------------------------------------------------------------------------------------------------------------------- | ------- | ----- | --------------------------------------------------------------------------------------------------------------------------------- | +| FAULT_DEEP_DISCHARGE | `uint8` | 0 | Battery has deep discharged | +| FAULT_SPIKES | `uint8` | 1 | Voltage spikes | +| FAULT_CELL_FAIL | `uint8` | 2 | One or more cells have failed | +| FAULT_OVER_CURRENT | `uint8` | 3 | Over-current | +| FAULT_OVER_TEMPERATURE | `uint8` | 4 | Over-temperature | +| FAULT_UNDER_TEMPERATURE | `uint8` | 5 | Under-temperature fault | +| FAULT_INCOMPATIBLE_VOLTAGE | `uint8` | 6 | Vehicle voltage is not compatible with this battery (batteries on same power rail should have similar voltage) | +| FAULT_INCOMPATIBLE_FIRMWARE | `uint8` | 7 | Battery firmware is not compatible with current autopilot firmware | +| FAULT_INCOMPATIBLE_MODEL | `uint8` | 8 | Battery model is not supported by the system | +| FAULT_HARDWARE_FAILURE | `uint8` | 9 | Hardware problem | +| FAULT_FAILED_TO_ARM | `uint8` | 10 | Battery had a problem while arming | +| FAULT_COUNT | `uint8` | 11 | Counter. Keep this as last element | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 1 | | +| MAX_INSTANCES | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/BatteryStatus.msg) + +:::details +Click here to see original file ```c # Battery status @@ -88,5 +193,6 @@ float32 volt_based_soc_estimate # [-] [@range 0, 1] Normalized volt based float32 voltage_prediction # [V] Predicted voltage float32 prediction_error # [V] Prediction error float32 estimation_covariance_norm # [-] Norm of the covariance matrix - ``` + +::: diff --git a/docs/ko/msg_docs/BatteryStatusV0.md b/docs/ko/msg_docs/BatteryStatusV0.md index cd900a1f17..569b955594 100644 --- a/docs/ko/msg_docs/BatteryStatusV0.md +++ b/docs/ko/msg_docs/BatteryStatusV0.md @@ -1,12 +1,118 @@ +--- +pageClass: is-wide-page +--- + # BatteryStatusV0 (UORB message) -Battery status +Battery status. Battery status information for up to 4 battery instances. These are populated from power module and smart battery device drivers, and one battery updated from MAVLink. Battery instance information is also logged and streamed in MAVLink telemetry. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/BatteryStatusV0.msg) +**TOPICS:** battery_statusv0 + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------------------------------------- | ------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| connected | `bool` | | | Whether or not a battery is connected. For power modules this is based on a voltage threshold. | +| voltage_v | `float32` | V | | Battery voltage (Invalid: 0) | +| current_a | `float32` | A | | Battery current (Invalid: -1) | +| current_average_a | `float32` | A | | Battery current average (for FW average in level flight) (Invalid: -1) | +| discharged_mah | `float32` | mAh | | Discharged amount (Invalid: -1) | +| remaining | `float32` | | [0 : 1] | Remaining capacity (Invalid: -1) | +| scale | `float32` | | [1 : -] | Scaling factor to compensate for lower actuation power caused by voltage sag (Invalid: -1) | +| time_remaining_s | `float32` | s | | Predicted time remaining until battery is empty under previous averaged load (Invalid: NaN) | +| temperature | `float32` | °C | | Temperature of the battery (Invalid: NaN) | +| cell_count | `uint8` | | | Number of cells (Invalid: 0) | +| source | `uint8` | | [SOURCE](#SOURCE) | Battery source | +| priority | `uint8` | | | Zero based priority is the connection on the Power Controller V1..Vn AKA BrickN-1 | +| capacity | `uint16` | mAh | | Capacity of the battery when fully charged | +| cycle_count | `uint16` | | | Number of discharge cycles the battery has experienced | +| average_time_to_empty | `uint16` | minutes | | Predicted remaining battery capacity based on the average rate of discharge | +| serial_number | `uint16` | | | Serial number of the battery pack | +| manufacture_date | `uint16` | | | Manufacture date, part of serial number of the battery pack. Formatted as: Day + Month×32 + (Year–1980)×512 | +| state_of_health | `uint16` | % | [0 : 100] | State of health. FullChargeCapacity/DesignCapacity | +| max_error | `uint16` | % | [1 : 100] | Max error, expected margin of error in the state-of-charge calculation | +| id | `uint8` | | | ID number of a battery. Should be unique and consistent for the lifetime of a vehicle. 1-indexed | +| interface_error | `uint16` | | | Interface error counter | +| voltage_cell_v | `float32[14]` | V | | Battery individual cell voltages (Invalid: 0) | +| max_cell_voltage_delta | `float32` | | | Max difference between individual cell voltages | +| is_powering_off | `bool` | | | Power off event imminent indication, false if unknown | +| is_required | `bool` | | | Set if the battery is explicitly required before arming | +| warning | `uint8` | | [WARNING](#WARNING)[STATE](#STATE) | Current battery warning | +| faults | `uint16` | | [FAULT](#FAULT) | Smart battery supply status/fault flags (bitmask) for health indication | +| full_charge_capacity_wh | `float32` | Wh | | Compensated battery capacity | +| remaining_capacity_wh | `float32` | Wh | | Compensated battery capacity remaining | +| over_discharge_count | `uint16` | | | Number of battery overdischarge | +| nominal_voltage | `float32` | V | | Nominal voltage of the battery pack | +| internal_resistance_estimate | `float32` | Ohm | | Internal resistance per cell estimate | +| ocv_estimate | `float32` | V | | Open circuit voltage estimate | +| ocv_estimate_filtered | `float32` | V | | Filtered open circuit voltage estimate | +| volt_based_soc_estimate | `float32` | | [0 : 1] | Normalized volt based state of charge estimate | +| voltage_prediction | `float32` | V | | Predicted voltage | +| prediction_error | `float32` | V | | Prediction error | +| estimation_covariance_norm | `float32` | | | Norm of the covariance matrix | + +## Enums + +### SOURCE {#SOURCE} + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------- | ------- | ----- | ----------------------------------------------------------------- | +| SOURCE_POWER_MODULE | `uint8` | 0 | Power module (analog ADC or I2C power monitor) | +| SOURCE_EXTERNAL | `uint8` | 1 | External (MAVLink, CAN, or external driver) | +| SOURCE_ESCS | `uint8` | 2 | ESCs (via ESC telemetry) | + +### WARNING {#WARNING} + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------ | ------- | ----- | -------------------------------------------- | +| WARNING_NONE | `uint8` | 0 | No battery low voltage warning active | +| WARNING_LOW | `uint8` | 1 | Low voltage warning | +| WARNING_CRITICAL | `uint8` | 2 | Critical voltage, return / abort immediately | +| WARNING_EMERGENCY | `uint8` | 3 | Immediate landing required | +| WARNING_FAILED | `uint8` | 4 | Battery has failed completely | + +### STATE {#STATE} + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| STATE_UNHEALTHY | `uint8` | 6 | Battery is diagnosed to be defective or an error occurred, usage is discouraged / prohibited. Possible causes (faults) are listed in faults field | +| STATE_CHARGING | `uint8` | 7 | Battery is charging | + +### FAULT {#FAULT} + +| 명칭 | 형식 | Value | 설명 | +| ---------------------------------------------------------------------------------------------------------------------- | ------- | ----- | --------------------------------------------------------------------------------------------------------------------------------- | +| FAULT_DEEP_DISCHARGE | `uint8` | 0 | Battery has deep discharged | +| FAULT_SPIKES | `uint8` | 1 | Voltage spikes | +| FAULT_CELL_FAIL | `uint8` | 2 | One or more cells have failed | +| FAULT_OVER_CURRENT | `uint8` | 3 | Over-current | +| FAULT_OVER_TEMPERATURE | `uint8` | 4 | Over-temperature | +| FAULT_UNDER_TEMPERATURE | `uint8` | 5 | Under-temperature fault | +| FAULT_INCOMPATIBLE_VOLTAGE | `uint8` | 6 | Vehicle voltage is not compatible with this battery (batteries on same power rail should have similar voltage) | +| FAULT_INCOMPATIBLE_FIRMWARE | `uint8` | 7 | Battery firmware is not compatible with current autopilot firmware | +| FAULT_INCOMPATIBLE_MODEL | `uint8` | 8 | Battery model is not supported by the system | +| FAULT_HARDWARE_FAILURE | `uint8` | 9 | Hardware problem | +| FAULT_FAILED_TO_ARM | `uint8` | 10 | Battery had a problem while arming | +| FAULT_COUNT | `uint8` | 11 | Counter. Keep this as last element | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| MAX_INSTANCES | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/BatteryStatusV0.msg) + +:::details +Click here to see original file ```c # Battery status @@ -88,5 +194,6 @@ float32 volt_based_soc_estimate # [@range 0, 1] Normalized volt based state of c float32 voltage_prediction # [V] Predicted voltage float32 prediction_error # [V] Prediction error float32 estimation_covariance_norm # Norm of the covariance matrix - ``` + +::: diff --git a/docs/ko/msg_docs/ButtonEvent.md b/docs/ko/msg_docs/ButtonEvent.md index 8c22ff2491..26b8256910 100644 --- a/docs/ko/msg_docs/ButtonEvent.md +++ b/docs/ko/msg_docs/ButtonEvent.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # ButtonEvent (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ButtonEvent.msg) +**TOPICS:** button_event safety_button + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| triggered | `bool` | | | Set to true if the event is triggered | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ButtonEvent.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,5 +33,6 @@ bool triggered # Set to true if the event is triggered # TOPICS button_event safety_button uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/ko/msg_docs/CameraCapture.md b/docs/ko/msg_docs/CameraCapture.md index cafef27922..54c0b56e29 100644 --- a/docs/ko/msg_docs/CameraCapture.md +++ b/docs/ko/msg_docs/CameraCapture.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # CameraCapture (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraCapture.msg) +**TOPICS:** camera_capture + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_utc | `uint64` | | | Capture time in UTC / GPS time | +| seq | `uint32` | | | Image sequence number | +| lat | `float64` | | | Latitude in degrees (WGS84) | +| lon | `float64` | | | Longitude in degrees (WGS84) | +| alt | `float32` | | | Altitude (AMSL) | +| ground_distance | `float32` | | | Altitude above ground (meters) | +| q | `float32[4]` | | | Attitude of the camera relative to NED earth-fixed frame when using a gimbal, otherwise vehicle attitude | +| result | `int8` | | | 1 for success, 0 for failure, -1 if camera does not provide feedback | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraCapture.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -12,5 +37,6 @@ float32 alt # Altitude (AMSL) float32 ground_distance # Altitude above ground (meters) float32[4] q # Attitude of the camera relative to NED earth-fixed frame when using a gimbal, otherwise vehicle attitude int8 result # 1 for success, 0 for failure, -1 if camera does not provide feedback - ``` + +::: diff --git a/docs/ko/msg_docs/CameraStatus.md b/docs/ko/msg_docs/CameraStatus.md index 2ed1011c50..58b4e76ae4 100644 --- a/docs/ko/msg_docs/CameraStatus.md +++ b/docs/ko/msg_docs/CameraStatus.md @@ -1,11 +1,31 @@ +--- +pageClass: is-wide-page +--- + # CameraStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraStatus.msg) +**TOPICS:** camera_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| active_sys_id | `uint8` | | | mavlink system id of the currently active camera | +| active_comp_id | `uint8` | | | mavlink component id of currently active camera | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) uint8 active_sys_id # mavlink system id of the currently active camera uint8 active_comp_id # mavlink component id of currently active camera - ``` + +::: diff --git a/docs/ko/msg_docs/CameraTrigger.md b/docs/ko/msg_docs/CameraTrigger.md index edd07edd5a..c59b50d542 100644 --- a/docs/ko/msg_docs/CameraTrigger.md +++ b/docs/ko/msg_docs/CameraTrigger.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # CameraTrigger (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraTrigger.msg) +**TOPICS:** camera_trigger + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_utc | `uint64` | | | UTC timestamp | +| seq | `uint32` | | | Image sequence number | +| feedback | `bool` | | | Trigger feedback from camera | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint32` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraTrigger.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +36,6 @@ uint32 seq # Image sequence number bool feedback # Trigger feedback from camera uint32 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/ko/msg_docs/CanInterfaceStatus.md b/docs/ko/msg_docs/CanInterfaceStatus.md index 1d0f618f8d..e00ec7c3ae 100644 --- a/docs/ko/msg_docs/CanInterfaceStatus.md +++ b/docs/ko/msg_docs/CanInterfaceStatus.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # CanInterfaceStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CanInterfaceStatus.msg) +**TOPICS:** can_interfacestatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| interface | `uint8` | | | | +| io_errors | `uint64` | | | | +| frames_tx | `uint64` | | | | +| frames_rx | `uint64` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CanInterfaceStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,5 +30,6 @@ uint8 interface uint64 io_errors uint64 frames_tx uint64 frames_rx - ``` + +::: diff --git a/docs/ko/msg_docs/CellularStatus.md b/docs/ko/msg_docs/CellularStatus.md index 04ca0a65dc..d5a547f472 100644 --- a/docs/ko/msg_docs/CellularStatus.md +++ b/docs/ko/msg_docs/CellularStatus.md @@ -1,10 +1,73 @@ +--- +pageClass: is-wide-page +--- + # CellularStatus (UORB message) -Cellular status +Cellular status. This is currently used only for logging cell status from MAVLink. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CellularStatus.msg) +**TOPICS:** cellular_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------- | -------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| status | `uint16` | | [STATUS_FLAG](#STATUS_FLAG) | Status bitmap | +| failure_reason | `uint8` | | [FAILURE_REASON](#FAILURE_REASON) | Failure reason | +| type | `uint8` | | [CELLULAR_NETWORK_RADIO_TYPE](#CELLULAR_NETWORK_RADIO_TYPE) | Cellular network radio type | +| quality | `uint8` | dBm | | Cellular network RSSI/RSRP, absolute value | +| mcc | `uint16` | | | Mobile country code (Invalid: UINT16_MAX) | +| mnc | `uint16` | | | Mobile network code (Invalid: UINT16_MAX) | +| lac | `uint16` | | | Location area code (Invalid: 0) | + +## Enums + +### STATUS_FLAG {#STATUS_FLAG} + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------- | -------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| STATUS_FLAG_UNKNOWN | `uint16` | 1 | State unknown or not reportable | +| STATUS_FLAG_FAILED | `uint16` | 2 | Modem is unusable | +| STATUS_FLAG_INITIALIZING | `uint16` | 4 | Modem is being initialized | +| STATUS_FLAG_LOCKED | `uint16` | 8 | Modem is locked | +| STATUS_FLAG_DISABLED | `uint16` | 16 | Modem is not enabled and is powered down | +| STATUS_FLAG_DISABLING | `uint16` | 32 | Modem is currently transitioning to the STATUS_FLAG_DISABLED state | +| STATUS_FLAG_ENABLING | `uint16` | 64 | Modem is currently transitioning to the STATUS_FLAG_ENABLED state | +| STATUS_FLAG_ENABLED | `uint16` | 128 | Modem is enabled and powered on but not registered with a network provider and not available for data connections | +| STATUS_FLAG_SEARCHING | `uint16` | 256 | Modem is searching for a network provider to register | +| STATUS_FLAG_REGISTERED | `uint16` | 512 | Modem is registered with a network provider, and data connections and messaging may be available for use | +| STATUS_FLAG_DISCONNECTING | `uint16` | 1024 | Modem is disconnecting and deactivating the last active packet data bearer. This state will not be entered if more than one packet data bearer is active and one of the active bearers is deactivated | +| STATUS_FLAG_CONNECTING | `uint16` | 2048 | Modem is activating and connecting the first packet data bearer. Subsequent bearer activations when another bearer is already active do not cause this state to be entered | +| STATUS_FLAG_CONNECTED | `uint16` | 4096 | One or more packet data bearers is active and connected | + +### FAILURE_REASON {#FAILURE_REASON} + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------- | ----- | ----------------------------------------------- | +| FAILURE_REASON_NONE | `uint8` | 0 | No error | +| FAILURE_REASON_UNKNOWN | `uint8` | 1 | Error state is unknown | +| FAILURE_REASON_SIM_MISSING | `uint8` | 2 | SIM is required for the modem but missing | +| FAILURE_REASON_SIM_ERROR | `uint8` | 3 | SIM is available, but not usable for connection | + +### CELLULAR_NETWORK_RADIO_TYPE {#CELLULAR_NETWORK_RADIO_TYPE} + +| 명칭 | 형식 | Value | 설명 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ----- | +| CELLULAR_NETWORK_RADIO_TYPE_NONE | `uint8` | 0 | None | +| CELLULAR_NETWORK_RADIO_TYPE_GSM | `uint8` | 1 | GSM | +| CELLULAR_NETWORK_RADIO_TYPE_CDMA | `uint8` | 2 | CDMA | +| CELLULAR_NETWORK_RADIO_TYPE_WCDMA | `uint8` | 3 | WCDMA | +| CELLULAR_NETWORK_RADIO_TYPE_LTE | `uint8` | 4 | LTE | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CellularStatus.msg) + +:::details +Click here to see original file ```c # Cellular status @@ -45,5 +108,6 @@ uint8 quality # [dBm] Cellular network RSSI/RSRP, absolute value uint16 mcc # [@invalid UINT16_MAX] Mobile country code uint16 mnc # [@invalid UINT16_MAX] Mobile network code uint16 lac # [@invalid 0] Location area code - ``` + +::: diff --git a/docs/ko/msg_docs/CollisionConstraints.md b/docs/ko/msg_docs/CollisionConstraints.md index fd0f562886..59d4a7ee01 100644 --- a/docs/ko/msg_docs/CollisionConstraints.md +++ b/docs/ko/msg_docs/CollisionConstraints.md @@ -1,9 +1,27 @@ +--- +pageClass: is-wide-page +--- + # CollisionConstraints (UORB message) -Local setpoint constraints in NED frame -setting something to NaN means that no limit is provided +Local setpoint constraints in NED frame. setting something to NaN means that no limit is provided. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CollisionConstraints.msg) +**TOPICS:** collision_constraints + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| original_setpoint | `float32[2]` | | | velocities demanded | +| adapted_setpoint | `float32[2]` | | | velocities allowed | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CollisionConstraints.msg) + +:::details +Click here to see original file ```c # Local setpoint constraints in NED frame @@ -13,5 +31,6 @@ uint64 timestamp # time since system start (microseconds) float32[2] original_setpoint # velocities demanded float32[2] adapted_setpoint # velocities allowed - ``` + +::: diff --git a/docs/ko/msg_docs/ConfigOverrides.md b/docs/ko/msg_docs/ConfigOverrides.md index caa4d0816b..cb1c45cbee 100644 --- a/docs/ko/msg_docs/ConfigOverrides.md +++ b/docs/ko/msg_docs/ConfigOverrides.md @@ -1,8 +1,40 @@ +--- +pageClass: is-wide-page +--- + # ConfigOverrides (UORB message) -Configurable overrides by (external) modes or mode executors +Configurable overrides by (external) modes or mode executors. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ConfigOverrides.msg) +**TOPICS:** config_overrides config_overrides_request + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| disable_auto_disarm | `bool` | | | Prevent the drone from automatically disarming after landing (if configured) | +| defer_failsafes | `bool` | | | Defer all failsafes that can be deferred (until the flag is cleared) | +| defer_failsafes_timeout_s | `int16` | | | Maximum time a failsafe can be deferred. 0 = system default, -1 = no timeout | +| disable_auto_set_home | `bool` | | | Prevent the drone from automatically setting the home position on arm or takeoff | +| source_type | `int8` | | | | +| source_id | `uint8` | | | ID depending on source_type | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ---------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 1 | | +| SOURCE_TYPE_MODE | `int8` | 0 | | +| SOURCE_TYPE_MODE_EXECUTOR | `int8` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ConfigOverrides.msg) + +:::details +Click here to see original file ```c # Configurable overrides by (external) modes or mode executors @@ -26,5 +58,6 @@ uint8 source_id # ID depending on source_type uint8 ORB_QUEUE_LENGTH = 4 # TOPICS config_overrides config_overrides_request - ``` + +::: diff --git a/docs/ko/msg_docs/ConfigOverridesV0.md b/docs/ko/msg_docs/ConfigOverridesV0.md index 91e2cf5b48..a7dcaf2a98 100644 --- a/docs/ko/msg_docs/ConfigOverridesV0.md +++ b/docs/ko/msg_docs/ConfigOverridesV0.md @@ -1,8 +1,39 @@ +--- +pageClass: is-wide-page +--- + # ConfigOverridesV0 (UORB message) -Configurable overrides by (external) modes or mode executors +Configurable overrides by (external) modes or mode executors. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ConfigOverridesV0.msg) +**TOPICS:** config_overrides config_overrides_request + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| disable_auto_disarm | `bool` | | | Prevent the drone from automatically disarming after landing (if configured) | +| defer_failsafes | `bool` | | | Defer all failsafes that can be deferred (until the flag is cleared) | +| defer_failsafes_timeout_s | `int16` | | | Maximum time a failsafe can be deferred. 0 = system default, -1 = no timeout | +| source_type | `int8` | | | | +| source_id | `uint8` | | | ID depending on source_type | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ---------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| SOURCE_TYPE_MODE | `int8` | 0 | | +| SOURCE_TYPE_MODE_EXECUTOR | `int8` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/ConfigOverridesV0.msg) + +:::details +Click here to see original file ```c # Configurable overrides by (external) modes or mode executors @@ -26,5 +57,6 @@ uint8 source_id # ID depending on source_type uint8 ORB_QUEUE_LENGTH = 4 # TOPICS config_overrides config_overrides_request - ``` + +::: diff --git a/docs/ko/msg_docs/ControlAllocatorStatus.md b/docs/ko/msg_docs/ControlAllocatorStatus.md index 4068e7b4f4..4239807f5a 100644 --- a/docs/ko/msg_docs/ControlAllocatorStatus.md +++ b/docs/ko/msg_docs/ControlAllocatorStatus.md @@ -1,6 +1,40 @@ +--- +pageClass: is-wide-page +--- + # ControlAllocatorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ControlAllocatorStatus.msg) +**TOPICS:** control_allocatorstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| torque_setpoint_achieved | `bool` | | | Boolean indicating whether the 3D torque setpoint was correctly allocated to actuators. 0 if not achieved, 1 if achieved. | +| unallocated_torque | `float32[3]` | | | Unallocated torque. Equal to 0 if the setpoint was achieved. | +| thrust_setpoint_achieved | `bool` | | | Boolean indicating whether the 3D thrust setpoint was correctly allocated to actuators. 0 if not achieved, 1 if achieved. | +| unallocated_thrust | `float32[3]` | | | Unallocated thrust. Equal to 0 if the setpoint was achieved. | +| actuator_saturation | `int8[16]` | | | Indicates actuator saturation status. | +| handled_motor_failure_mask | `uint16` | | | Bitmask of failed motors that were removed from the allocation / effectiveness matrix. Not necessarily identical to the report from FailureDetector | +| motor_stop_mask | `uint16` | | | Bitmaks of motors stopped by failure injection | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------ | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| ACTUATOR_SATURATION_OK | `int8` | 0 | The actuator is not saturated | +| ACTUATOR_SATURATION_UPPER_DYN | `int8` | 1 | The actuator is saturated (with a value <= the desired value) because it cannot increase its value faster | +| ACTUATOR_SATURATION_UPPER | `int8` | 2 | The actuator is saturated (with a value <= the desired value) because it has reached its maximum value | +| ACTUATOR_SATURATION_LOWER_DYN | `int8` | -1 | The actuator is saturated (with a value >= the desired value) because it cannot decrease its value faster | +| ACTUATOR_SATURATION_LOWER | `int8` | -2 | The actuator is saturated (with a value >= the desired value) because it has reached its minimum value | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ControlAllocatorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -25,5 +59,6 @@ int8[16] actuator_saturation # Indicates actuator saturation status. uint16 handled_motor_failure_mask # Bitmask of failed motors that were removed from the allocation / effectiveness matrix. Not necessarily identical to the report from FailureDetector uint16 motor_stop_mask # Bitmaks of motors stopped by failure injection - ``` + +::: diff --git a/docs/ko/msg_docs/Cpuload.md b/docs/ko/msg_docs/Cpuload.md index fd865702a8..824c8e5841 100644 --- a/docs/ko/msg_docs/Cpuload.md +++ b/docs/ko/msg_docs/Cpuload.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # Cpuload (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Cpuload.msg) +**TOPICS:** cpuload + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| load | `float32` | | | processor load from 0 to 1 | +| ram_usage | `float32` | | | RAM usage from 0 to 1 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Cpuload.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) float32 load # processor load from 0 to 1 float32 ram_usage # RAM usage from 0 to 1 - ``` + +::: diff --git a/docs/ko/msg_docs/DatamanRequest.md b/docs/ko/msg_docs/DatamanRequest.md index ae8701f157..0c2daa6029 100644 --- a/docs/ko/msg_docs/DatamanRequest.md +++ b/docs/ko/msg_docs/DatamanRequest.md @@ -1,6 +1,29 @@ +--- +pageClass: is-wide-page +--- + # DatamanRequest (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DatamanRequest.msg) +**TOPICS:** dataman_request + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| client_id | `uint8` | | | | +| request_type | `uint8` | | | id/read/write/clear | +| item | `uint8` | | | dm_item_t | +| index | `uint32` | | | | +| data | `uint8[56]` | | | | +| data_length | `uint32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DatamanRequest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +34,6 @@ uint8 item # dm_item_t uint32 index uint8[56] data uint32 data_length - ``` + +::: diff --git a/docs/ko/msg_docs/DatamanResponse.md b/docs/ko/msg_docs/DatamanResponse.md index e8cd9f5c71..fd41bf5a34 100644 --- a/docs/ko/msg_docs/DatamanResponse.md +++ b/docs/ko/msg_docs/DatamanResponse.md @@ -1,6 +1,40 @@ +--- +pageClass: is-wide-page +--- + # DatamanResponse (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DatamanResponse.msg) +**TOPICS:** dataman_response + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| client_id | `uint8` | | | | +| request_type | `uint8` | | | id/read/write/clear | +| item | `uint8` | | | dm_item_t | +| index | `uint32` | | | | +| data | `uint8[56]` | | | | +| status | `uint8` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| STATUS_SUCCESS | `uint8` | 0 | | +| STATUS_FAILURE_ID_ERR | `uint8` | 1 | | +| STATUS_FAILURE_NO_DATA | `uint8` | 2 | | +| STATUS_FAILURE_READ_FAILED | `uint8` | 3 | | +| STATUS_FAILURE_WRITE_FAILED | `uint8` | 4 | | +| STATUS_FAILURE_CLEAR_FAILED | `uint8` | 5 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DatamanResponse.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +52,6 @@ uint8 STATUS_FAILURE_READ_FAILED = 3 uint8 STATUS_FAILURE_WRITE_FAILED = 4 uint8 STATUS_FAILURE_CLEAR_FAILED = 5 uint8 status - ``` + +::: diff --git a/docs/ko/msg_docs/DebugArray.md b/docs/ko/msg_docs/DebugArray.md index 1e1cacd739..80918ae97f 100644 --- a/docs/ko/msg_docs/DebugArray.md +++ b/docs/ko/msg_docs/DebugArray.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # DebugArray (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugArray.msg) +**TOPICS:** debug_array + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | ------------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| id | `uint16` | | | unique ID of debug array, used to discriminate between arrays | +| name | `char[10]` | | | name of the debug array (max. 10 characters) | +| data | `float32[58]` | | | data | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ---------------------------------------------------------- | ------- | ----- | -- | +| ARRAY_SIZE | `uint8` | 58 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugArray.msg) + +:::details +Click here to see original file ```c uint8 ARRAY_SIZE = 58 @@ -8,5 +34,6 @@ uint64 timestamp # time since system start (microseconds) uint16 id # unique ID of debug array, used to discriminate between arrays char[10] name # name of the debug array (max. 10 characters) float32[58] data # data - ``` + +::: diff --git a/docs/ko/msg_docs/DebugKeyValue.md b/docs/ko/msg_docs/DebugKeyValue.md index f9d6a5bde2..1ed3816e57 100644 --- a/docs/ko/msg_docs/DebugKeyValue.md +++ b/docs/ko/msg_docs/DebugKeyValue.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # DebugKeyValue (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugKeyValue.msg) +**TOPICS:** debug_keyvalue + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| 키 | `char[10]` | | | max. 10 characters as key / name | +| value | `float32` | | | the value to send as debug output | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugKeyValue.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) char[10] key # max. 10 characters as key / name float32 value # the value to send as debug output - ``` + +::: diff --git a/docs/ko/msg_docs/DebugValue.md b/docs/ko/msg_docs/DebugValue.md index 04457e37cc..1ec9f0c460 100644 --- a/docs/ko/msg_docs/DebugValue.md +++ b/docs/ko/msg_docs/DebugValue.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # DebugValue (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugValue.msg) +**TOPICS:** debug_value + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| ind | `int8` | | | index of debug variable | +| value | `float32` | | | the value to send as debug output | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugValue.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) int8 ind # index of debug variable float32 value # the value to send as debug output - ``` + +::: diff --git a/docs/ko/msg_docs/DebugVect.md b/docs/ko/msg_docs/DebugVect.md index ec009e7279..c9ee73e7b9 100644 --- a/docs/ko/msg_docs/DebugVect.md +++ b/docs/ko/msg_docs/DebugVect.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # DebugVect (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugVect.msg) +**TOPICS:** debug_vect + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| name | `char[10]` | | | max. 10 characters as key / name | +| x | `float32` | | | x value | +| y | `float32` | | | y value | +| z | `float32` | | | z value | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugVect.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +29,6 @@ char[10] name # max. 10 characters as key / name float32 x # x value float32 y # y value float32 z # z value - ``` + +::: diff --git a/docs/ko/msg_docs/DeviceInformation.md b/docs/ko/msg_docs/DeviceInformation.md index d415461f94..af01a4f244 100644 --- a/docs/ko/msg_docs/DeviceInformation.md +++ b/docs/ko/msg_docs/DeviceInformation.md @@ -1,11 +1,58 @@ +--- +pageClass: is-wide-page +--- + # DeviceInformation (UORB message) -Device information +Device information. Can be used to uniquely associate a device_id from a sensor topic with a physical device using serial number. as well as tracking of the used firmware versions on the devices. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DeviceInformation.msg) +**TOPICS:** device_information + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_type | `uint8` | | [DEVICE_TYPE](#DEVICE_TYPE) | Type of the device. Matches MAVLink DEVICE_TYPE enum | +| vendor_name | `char[32]` | | | Name of the device vendor | +| model_name | `char[32]` | | | Name of the device model | +| `uint32` | | | Unique device ID for the sensor. Does not change between power cycles. (Invalid: 0 if not available) | | +| firmware_version | `char[24]` | | | Firmware version. (Invalid: empty if not available) | +| hardware_version | `char[24]` | | | Hardware version. (Invalid: empty if not available) | +| serial_number | `char[33]` | | | Device serial number or unique identifier. (Invalid: empty if not available) | + +## Enums + +### DEVICE_TYPE {#DEVICE_TYPE} + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ---------------------- | +| DEVICE_TYPE_GENERIC | `uint8` | 0 | Generic/unknown sensor | +| DEVICE_TYPE_AIRSPEED | `uint8` | 1 | 풍속 센서 | +| DEVICE_TYPE_ESC | `uint8` | 2 | ESC | +| DEVICE_TYPE_SERVO | `uint8` | 3 | Servo | +| DEVICE_TYPE_GPS | `uint8` | 4 | GPS | +| DEVICE_TYPE_MAGNETOMETER | `uint8` | 5 | 자기 센서 | +| DEVICE_TYPE_PARACHUTE | `uint8` | 6 | 낙하산 | +| DEVICE_TYPE_RANGEFINDER | `uint8` | 7 | Rangefinder | +| DEVICE_TYPE_WINCH | `uint8` | 8 | Winch | +| DEVICE_TYPE_BAROMETER | `uint8` | 9 | 기압계 | +| DEVICE_TYPE_OPTICAL_FLOW | `uint8` | 10 | Optical flow | +| DEVICE_TYPE_ACCELEROMETER | `uint8` | 11 | Accelerometer | +| DEVICE_TYPE_GYROSCOPE | `uint8` | 12 | Gyroscope | +| DEVICE_TYPE_DIFFERENTIAL_PRESSURE | `uint8` | 13 | Differential pressure | +| DEVICE_TYPE_BATTERY | `uint8` | 14 | Battery | +| DEVICE_TYPE_HYGROMETER | `uint8` | 15 | Hygrometer | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DeviceInformation.msg) + +:::details +Click here to see original file ```c # Device information @@ -41,5 +88,6 @@ uint32 device_id # [-] [@invalid 0 if not available] Unique device ID char[24] firmware_version # [-] [@invalid empty if not available] Firmware version. char[24] hardware_version # [-] [@invalid empty if not available] Hardware version. char[33] serial_number # [-] [@invalid empty if not available] Device serial number or unique identifier. - ``` + +::: diff --git a/docs/ko/msg_docs/DifferentialPressure.md b/docs/ko/msg_docs/DifferentialPressure.md index 83adb2d03e..09d07faadf 100644 --- a/docs/ko/msg_docs/DifferentialPressure.md +++ b/docs/ko/msg_docs/DifferentialPressure.md @@ -1,11 +1,33 @@ +--- +pageClass: is-wide-page +--- + # DifferentialPressure (UORB message) -Differential-pressure (airspeed) sensor +Differential-pressure (airspeed) sensor. This is populated by airspeed sensor drivers and used by the sensor module to calculate airspeed. The information is published in the `SCALED_PRESSURE_n` MAVLink messages (along with information from a corresponding `SensorBaro` instance). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DifferentialPressure.msg) +**TOPICS:** differential_pressure + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time of publication (since system start) | +| timestamp_sample | `uint64` | us | | Time of raw data capture | +| device_id | `uint32` | | | Unique device ID for the sensor that does not change between power cycles | +| differential_pressure_pa | `float32` | Pa | | Differential pressure reading (may be negative) | +| temperature | `float32` | degC | | Temperature (Invalid: NaN if unknown) | +| error_count | `uint32` | | | Number of errors detected by driver | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DifferentialPressure.msg) + +:::details +Click here to see original file ```c # Differential-pressure (airspeed) sensor @@ -20,5 +42,6 @@ uint32 device_id # [-] Unique device ID for the sensor that doe float32 differential_pressure_pa # [Pa] Differential pressure reading (may be negative) float32 temperature # [degC] [@invalid NaN if unknown] Temperature uint32 error_count # [-] Number of errors detected by driver - ``` + +::: diff --git a/docs/ko/msg_docs/DistanceSensor.md b/docs/ko/msg_docs/DistanceSensor.md index c4d5bbc2c0..d66f400c91 100644 --- a/docs/ko/msg_docs/DistanceSensor.md +++ b/docs/ko/msg_docs/DistanceSensor.md @@ -1,8 +1,64 @@ +--- +pageClass: is-wide-page +--- + # DistanceSensor (UORB message) -DISTANCE_SENSOR message data +DISTANCE_SENSOR message data. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DistanceSensor.msg) +**TOPICS:** distance_sensor + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| min_distance | `float32` | | | Minimum distance the sensor can measure (in m) | +| max_distance | `float32` | | | Maximum distance the sensor can measure (in m) | +| current_distance | `float32` | | | Current distance reading (in m) | +| variance | `float32` | | | Measurement variance (in m^2), 0 for unknown / invalid readings | +| signal_quality | `int8` | | | Signal quality in percent (0...100%), where 0 = invalid signal, 100 = perfect signal, and -1 = unknown signal quality. | +| type | `uint8` | | | Type from MAV_DISTANCE_SENSOR enum | +| h_fov | `float32` | | | Sensor horizontal field of view (rad) | +| v_fov | `float32` | | | Sensor vertical field of view (rad) | +| q | `float32[4]` | | | Quaterion sensor orientation with respect to the vehicle body frame to specify the orientation ROTATION_CUSTOM | +| orientation | `uint8` | | | Direction the sensor faces from MAV_SENSOR_ORIENTATION enum | +| mode | `uint8` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ----------------------------------------------------------------------------------------------------------------- | +| MAV_DISTANCE_SENSOR_LASER | `uint8` | 0 | | +| MAV_DISTANCE_SENSOR_ULTRASOUND | `uint8` | 1 | | +| MAV_DISTANCE_SENSOR_INFRARED | `uint8` | 2 | | +| MAV_DISTANCE_SENSOR_RADAR | `uint8` | 3 | | +| ROTATION_YAW_0 | `uint8` | 0 | MAV_SENSOR_ROTATION_NONE | +| ROTATION_YAW_45 | `uint8` | 1 | MAV_SENSOR_ROTATION_YAW_45 | +| ROTATION_YAW_90 | `uint8` | 2 | MAV_SENSOR_ROTATION_YAW_90 | +| ROTATION_YAW_135 | `uint8` | 3 | MAV_SENSOR_ROTATION_YAW_135 | +| ROTATION_YAW_180 | `uint8` | 4 | MAV_SENSOR_ROTATION_YAW_180 | +| ROTATION_YAW_225 | `uint8` | 5 | MAV_SENSOR_ROTATION_YAW_225 | +| ROTATION_YAW_270 | `uint8` | 6 | MAV_SENSOR_ROTATION_YAW_270 | +| ROTATION_YAW_315 | `uint8` | 7 | MAV_SENSOR_ROTATION_YAW_315 | +| ROTATION_FORWARD_FACING | `uint8` | 0 | MAV_SENSOR_ROTATION_NONE | +| ROTATION_RIGHT_FACING | `uint8` | 2 | MAV_SENSOR_ROTATION_YAW_90 | +| ROTATION_BACKWARD_FACING | `uint8` | 4 | MAV_SENSOR_ROTATION_YAW_180 | +| ROTATION_LEFT_FACING | `uint8` | 6 | MAV_SENSOR_ROTATION_YAW_270 | +| ROTATION_UPWARD_FACING | `uint8` | 24 | MAV_SENSOR_ROTATION_PITCH_90 | +| ROTATION_DOWNWARD_FACING | `uint8` | 25 | MAV_SENSOR_ROTATION_PITCH_270 | +| ROTATION_CUSTOM | `uint8` | 100 | MAV_SENSOR_ROTATION_CUSTOM | +| MODE_UNKNOWN | `uint8` | 0 | | +| MODE_ENABLED | `uint8` | 1 | | +| MODE_DISABLED | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DistanceSensor.msg) + +:::details +Click here to see original file ```c # DISTANCE_SENSOR message data @@ -52,5 +108,6 @@ uint8 mode uint8 MODE_UNKNOWN = 0 uint8 MODE_ENABLED = 1 uint8 MODE_DISABLED = 2 - ``` + +::: diff --git a/docs/ko/msg_docs/DistanceSensorModeChangeRequest.md b/docs/ko/msg_docs/DistanceSensorModeChangeRequest.md index ab957de133..8c222c5d97 100644 --- a/docs/ko/msg_docs/DistanceSensorModeChangeRequest.md +++ b/docs/ko/msg_docs/DistanceSensorModeChangeRequest.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # DistanceSensorModeChangeRequest (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DistanceSensorModeChangeRequest.msg) +**TOPICS:** distance_sensormode_changerequest + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_on_off | `uint8` | | | request to disable/enable the distance sensor | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------ | ------- | ----- | -- | +| REQUEST_OFF | `uint8` | 0 | | +| REQUEST_ON | `uint8` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DistanceSensorModeChangeRequest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +33,6 @@ uint64 timestamp # time since system start (microseconds) uint8 request_on_off # request to disable/enable the distance sensor uint8 REQUEST_OFF = 0 uint8 REQUEST_ON = 1 - ``` + +::: diff --git a/docs/ko/msg_docs/DronecanNodeStatus.md b/docs/ko/msg_docs/DronecanNodeStatus.md index 5c8a8d7862..7a4cbd8f7a 100644 --- a/docs/ko/msg_docs/DronecanNodeStatus.md +++ b/docs/ko/msg_docs/DronecanNodeStatus.md @@ -1,6 +1,43 @@ +--- +pageClass: is-wide-page +--- + # DronecanNodeStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DronecanNodeStatus.msg) +**TOPICS:** dronecan_nodestatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| node_id | `uint16` | | | The node ID which this data comes from | +| uptime_sec | `uint32` | | | Node uptime | +| health | `uint8` | | | | +| mode | `uint8` | | | | +| sub_mode | `uint8` | | | | +| vendor_specific_status_code | `uint16` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| --------------------------------------------------------------------------------------------------- | ------- | ----- | ----------------------------------------------------------------------------------------------- | +| HEALTH_OK | `uint8` | 0 | The node is functioning properly. | +| HEALTH_WARNING | `uint8` | 1 | A critical parameter went out of range or the node encountered a minor failure. | +| HEALTH_ERROR | `uint8` | 2 | The node encountered a major failure. | +| HEALTH_CRITICAL | `uint8` | 3 | The node suffered a fatal malfunction. | +| MODE_OPERATIONAL | `uint8` | 0 | Normal operating mode. | +| MODE_INITIALIZATION | `uint8` | 1 | Initialization is in progress; this mode is entered immediately after startup. | +| MODE_MAINTENANCE | `uint8` | 2 | 예: calibration, the bootloader is running, etc. | +| MODE_SOFTWARE_UPDATE | `uint8` | 3 | New software/firmware is being loaded. | +| MODE_OFFLINE | `uint8` | 7 | The node is no longer available. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DronecanNodeStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -44,5 +81,6 @@ uint8 sub_mode # Optional, vendor-specific node status code, e.g. a fault code or a status bitmask. # uint16 vendor_specific_status_code - ``` + +::: diff --git a/docs/ko/msg_docs/Ekf2Timestamps.md b/docs/ko/msg_docs/Ekf2Timestamps.md index 8de695f523..844d062050 100644 --- a/docs/ko/msg_docs/Ekf2Timestamps.md +++ b/docs/ko/msg_docs/Ekf2Timestamps.md @@ -1,12 +1,38 @@ +--- +pageClass: is-wide-page +--- + # Ekf2Timestamps (UORB message) -this message contains the (relative) timestamps of the sensor inputs used by EKF2. -It can be used for reproducible replay. +this message contains the (relative) timestamps of the sensor inputs used by EKF2. It can be used for reproducible replay. -the timestamp field is the ekf2 reference time and matches the timestamp of -the sensor_combined topic. +**TOPICS:** ekf2_timestamps -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Ekf2Timestamps.msg) +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| airspeed_timestamp_rel | `int16` | | | | +| airspeed_validated_timestamp_rel | `int16` | | | | +| distance_sensor_timestamp_rel | `int16` | | | | +| optical_flow_timestamp_rel | `int16` | | | | +| vehicle_air_data_timestamp_rel | `int16` | | | | +| vehicle_magnetometer_timestamp_rel | `int16` | | | | +| visual_odometry_timestamp_rel | `int16` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| --------------------------------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------- | +| RELATIVE_TIMESTAMP_INVALID | `int16` | 32767 | (0x7fff) If one of the relative timestamps | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Ekf2Timestamps.msg) + +:::details +Click here to see original file ```c # this message contains the (relative) timestamps of the sensor inputs used by EKF2. @@ -33,5 +59,6 @@ int16 vehicle_magnetometer_timestamp_rel int16 visual_odometry_timestamp_rel # Note: this is a high-rate logged topic, so it needs to be as small as possible - ``` + +::: diff --git a/docs/ko/msg_docs/EscReport.md b/docs/ko/msg_docs/EscReport.md index 277402ae69..9ad39f92cd 100644 --- a/docs/ko/msg_docs/EscReport.md +++ b/docs/ko/msg_docs/EscReport.md @@ -1,6 +1,62 @@ +--- +pageClass: is-wide-page +--- + # EscReport (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscReport.msg) +**TOPICS:** esc_report + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| esc_errorcount | `uint32` | | | Number of reported errors by ESC - if supported | +| esc_rpm | `int32` | | | Motor RPM, negative for reverse rotation [RPM] - if supported | +| esc_voltage | `float32` | | | Voltage measured from current ESC [V] - if supported | +| esc_current | `float32` | | | Current measured from current ESC [A] - if supported | +| esc_temperature | `float32` | | | Temperature measured from current ESC [degC] - if supported | +| esc_address | `uint8` | | | Address of current ESC (in most cases 1-8 / must be set by driver) | +| esc_cmdcount | `uint8` | | | Counter of number of commands | +| esc_state | `uint8` | | | State of ESC - depend on Vendor | +| actuator_function | `uint8` | | | actuator output function (one of Motor1...MotorN) | +| failures | `uint16` | | | Bitmask to indicate the internal ESC faults | +| esc_power | `int8` | | | Applied power 0-100 in % (negative values reserved) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| ACTUATOR_FUNCTION_MOTOR1 | `uint8` | 101 | | +| ACTUATOR_FUNCTION_MOTOR2 | `uint8` | 102 | | +| ACTUATOR_FUNCTION_MOTOR3 | `uint8` | 103 | | +| ACTUATOR_FUNCTION_MOTOR4 | `uint8` | 104 | | +| ACTUATOR_FUNCTION_MOTOR5 | `uint8` | 105 | | +| ACTUATOR_FUNCTION_MOTOR6 | `uint8` | 106 | | +| ACTUATOR_FUNCTION_MOTOR7 | `uint8` | 107 | | +| ACTUATOR_FUNCTION_MOTOR8 | `uint8` | 108 | | +| ACTUATOR_FUNCTION_MOTOR9 | `uint8` | 109 | | +| ACTUATOR_FUNCTION_MOTOR10 | `uint8` | 110 | | +| ACTUATOR_FUNCTION_MOTOR11 | `uint8` | 111 | | +| ACTUATOR_FUNCTION_MOTOR12 | `uint8` | 112 | | +| FAILURE_OVER_CURRENT | `uint8` | 0 | (1 << 0) | +| FAILURE_OVER_VOLTAGE | `uint8` | 1 | (1 << 1) | +| FAILURE_MOTOR_OVER_TEMPERATURE | `uint8` | 2 | (1 << 2) | +| FAILURE_OVER_RPM | `uint8` | 3 | (1 << 3) | +| FAILURE_INCONSISTENT_CMD | `uint8` | 4 | (1 << 4) Set if ESC received an inconsistent command (i.e out of boundaries) | +| FAILURE_MOTOR_STUCK | `uint8` | 5 | (1 << 5) | +| FAILURE_GENERIC | `uint8` | 6 | (1 << 6) | +| FAILURE_MOTOR_WARN_TEMPERATURE | `uint8` | 7 | (1 << 7) | +| FAILURE_WARN_ESC_TEMPERATURE | `uint8` | 8 | (1 << 8) | +| FAILURE_OVER_ESC_TEMPERATURE | `uint8` | 9 | (1 << 9) | +| ESC_FAILURE_COUNT | `uint8` | 10 | Counter - keep it as last element! | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscReport.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -43,5 +99,6 @@ uint8 FAILURE_MOTOR_WARN_TEMPERATURE = 7 # (1 << 7) uint8 FAILURE_WARN_ESC_TEMPERATURE = 8 # (1 << 8) uint8 FAILURE_OVER_ESC_TEMPERATURE = 9 # (1 << 9) uint8 ESC_FAILURE_COUNT = 10 # Counter - keep it as last element! - ``` + +::: diff --git a/docs/ko/msg_docs/EscStatus.md b/docs/ko/msg_docs/EscStatus.md index 97ca475568..e3678d9ff0 100644 --- a/docs/ko/msg_docs/EscStatus.md +++ b/docs/ko/msg_docs/EscStatus.md @@ -1,6 +1,41 @@ +--- +pageClass: is-wide-page +--- + # EscStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscStatus.msg) +**TOPICS:** esc_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------- | -------------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| counter | `uint16` | | | incremented by the writing thread everytime new data is stored | +| esc_count | `uint8` | | | number of connected ESCs | +| esc_connectiontype | `uint8` | | | how ESCs connected to the system | +| esc_online_flags | `uint8` | | | Bitmask indicating which ESC is online/offline | +| esc_armed_flags | `uint8` | | | Bitmask indicating which ESC is armed. For ESC's where the arming state is not known (returned by the ESC), the arming bits should always be set. | +| esc | `EscReport[8]` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ---------------------------------------------------------------------------------------------------- | +| CONNECTED_ESC_MAX | `uint8` | 8 | The number of ESCs supported. Current (Q2/2013) we support 8 ESCs | +| ESC_CONNECTION_TYPE_PPM | `uint8` | 0 | Traditional PPM ESC | +| ESC_CONNECTION_TYPE_SERIAL | `uint8` | 1 | Serial Bus connected ESC | +| ESC_CONNECTION_TYPE_ONESHOT | `uint8` | 2 | One Shot PPM | +| ESC_CONNECTION_TYPE_I2C | `uint8` | 3 | I2C | +| ESC_CONNECTION_TYPE_CAN | `uint8` | 4 | CAN-Bus | +| ESC_CONNECTION_TYPE_DSHOT | `uint8` | 5 | DShot | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -31,5 +66,6 @@ uint8 esc_online_flags # Bitmask indicating which ESC is online/offline uint8 esc_armed_flags # Bitmask indicating which ESC is armed. For ESC's where the arming state is not known (returned by the ESC), the arming bits should always be set. EscReport[8] esc - ``` + +::: diff --git a/docs/ko/msg_docs/EstimatorAidSource1d.md b/docs/ko/msg_docs/EstimatorAidSource1d.md index da73b0859f..d2ea0e4575 100644 --- a/docs/ko/msg_docs/EstimatorAidSource1d.md +++ b/docs/ko/msg_docs/EstimatorAidSource1d.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # EstimatorAidSource1d (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource1d.msg) +**TOPICS:** estimator_aid_src_baro_hgt estimator_aid_src_ev_hgt estimator_aid_src_gnss_hgt estimator_aid_src_rng_hgt estimator_aid_src_airspeed estimator_aid_src_sideslip estimator_aid_src_fake_hgt estimator_aid_src_gnss_yaw estimator_aid_src_ev_yaw + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| estimator_instance | `uint8` | | | | +| device_id | `uint32` | | | | +| time_last_fuse | `uint64` | | | | +| observation | `float32` | | | | +| observation_variance | `float32` | | | | +| innovation | `float32` | | | | +| innovation_filtered | `float32` | | | | +| innovation_variance | `float32` | | | | +| test_ratio | `float32` | | | normalized innovation squared | +| test_ratio_filtered | `float32` | | | signed filtered test ratio | +| innovation_rejected | `bool` | | | true if the observation has been rejected | +| fused | `bool` | | | true if the sample was successfully fused | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource1d.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -30,5 +60,6 @@ bool fused # true if the sample was successfully fused # TOPICS estimator_aid_src_airspeed estimator_aid_src_sideslip # TOPICS estimator_aid_src_fake_hgt # TOPICS estimator_aid_src_gnss_yaw estimator_aid_src_ev_yaw - ``` + +::: diff --git a/docs/ko/msg_docs/EstimatorAidSource2d.md b/docs/ko/msg_docs/EstimatorAidSource2d.md index 9714e3491d..24d6ab62b2 100644 --- a/docs/ko/msg_docs/EstimatorAidSource2d.md +++ b/docs/ko/msg_docs/EstimatorAidSource2d.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # EstimatorAidSource2d (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource2d.msg) +**TOPICS:** estimator_aid_src_ev_pos estimator_aid_src_fake_pos estimator_aid_src_gnss_pos estimator_aid_src_aux_global_position estimator_aid_src_aux_vel estimator_aid_src_optical_flow estimator_aid_src_drag + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| estimator_instance | `uint8` | | | | +| device_id | `uint32` | | | | +| time_last_fuse | `uint64` | | | | +| observation | `float64[2]` | | | | +| observation_variance | `float32[2]` | | | | +| innovation | `float32[2]` | | | | +| innovation_filtered | `float32[2]` | | | | +| innovation_variance | `float32[2]` | | | | +| test_ratio | `float32[2]` | | | normalized innovation squared | +| test_ratio_filtered | `float32[2]` | | | signed filtered test ratio | +| innovation_rejected | `bool` | | | true if the observation has been rejected | +| fused | `bool` | | | true if the sample was successfully fused | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource2d.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -29,5 +59,6 @@ bool fused # true if the sample was successfully fused # TOPICS estimator_aid_src_ev_pos estimator_aid_src_fake_pos estimator_aid_src_gnss_pos estimator_aid_src_aux_global_position # TOPICS estimator_aid_src_aux_vel estimator_aid_src_optical_flow # TOPICS estimator_aid_src_drag - ``` + +::: diff --git a/docs/ko/msg_docs/EstimatorAidSource3d.md b/docs/ko/msg_docs/EstimatorAidSource3d.md index 69b38719a3..4f756a8c4f 100644 --- a/docs/ko/msg_docs/EstimatorAidSource3d.md +++ b/docs/ko/msg_docs/EstimatorAidSource3d.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # EstimatorAidSource3d (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource3d.msg) +**TOPICS:** estimator_aid_src_ev_vel estimator_aid_src_gnss_vel estimator_aid_src_gravity estimator_aid_src_mag + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| estimator_instance | `uint8` | | | | +| device_id | `uint32` | | | | +| time_last_fuse | `uint64` | | | | +| observation | `float32[3]` | | | | +| observation_variance | `float32[3]` | | | | +| innovation | `float32[3]` | | | | +| innovation_filtered | `float32[3]` | | | | +| innovation_variance | `float32[3]` | | | | +| test_ratio | `float32[3]` | | | normalized innovation squared | +| test_ratio_filtered | `float32[3]` | | | signed filtered test ratio | +| innovation_rejected | `bool` | | | true if the observation has been rejected | +| fused | `bool` | | | true if the sample was successfully fused | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource3d.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -27,5 +57,6 @@ bool innovation_rejected # true if the observation has been rejected bool fused # true if the sample was successfully fused # TOPICS estimator_aid_src_ev_vel estimator_aid_src_gnss_vel estimator_aid_src_gravity estimator_aid_src_mag - ``` + +::: diff --git a/docs/ko/msg_docs/EstimatorBias.md b/docs/ko/msg_docs/EstimatorBias.md index fa911d05b8..be5bd57dad 100644 --- a/docs/ko/msg_docs/EstimatorBias.md +++ b/docs/ko/msg_docs/EstimatorBias.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # EstimatorBias (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorBias.msg) +**TOPICS:** estimator_baro_bias estimator_gnss_hgt_bias + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| bias | `float32` | | | estimated barometric altitude bias (m) | +| bias_var | `float32` | | | estimated barometric altitude bias variance (m^2) | +| innov | `float32` | | | innovation of the last measurement fusion (m) | +| innov_var | `float32` | | | innovation variance of the last measurement fusion (m^2) | +| innov_test_ratio | `float32` | | | normalized innovation squared test ratio | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorBias.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -15,5 +39,6 @@ float32 innov_var # innovation variance of the last measurement fusion (m^2) float32 innov_test_ratio # normalized innovation squared test ratio # TOPICS estimator_baro_bias estimator_gnss_hgt_bias - ``` + +::: diff --git a/docs/ko/msg_docs/EstimatorBias3d.md b/docs/ko/msg_docs/EstimatorBias3d.md index 7fff18ae25..d2dfe2c464 100644 --- a/docs/ko/msg_docs/EstimatorBias3d.md +++ b/docs/ko/msg_docs/EstimatorBias3d.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # EstimatorBias3d (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorBias3d.msg) +**TOPICS:** estimator_bias3d estimator_ev_pos_bias + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| bias | `float32[3]` | | | estimated barometric altitude bias (m) | +| bias_var | `float32[3]` | | | estimated barometric altitude bias variance (m^2) | +| innov | `float32[3]` | | | innovation of the last measurement fusion (m) | +| innov_var | `float32[3]` | | | innovation variance of the last measurement fusion (m^2) | +| innov_test_ratio | `float32[3]` | | | normalized innovation squared test ratio | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorBias3d.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -17,5 +41,6 @@ float32[3] innov_test_ratio # normalized innovation squared test ratio # TOPICS estimator_bias3d # TOPICS estimator_ev_pos_bias - ``` + +::: diff --git a/docs/ko/msg_docs/EstimatorEventFlags.md b/docs/ko/msg_docs/EstimatorEventFlags.md index 54f333d788..f4f6350ab1 100644 --- a/docs/ko/msg_docs/EstimatorEventFlags.md +++ b/docs/ko/msg_docs/EstimatorEventFlags.md @@ -1,6 +1,42 @@ +--- +pageClass: is-wide-page +--- + # EstimatorEventFlags (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorEventFlags.msg) +**TOPICS:** estimator_eventflags + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| information_event_changes | `uint32` | | | number of information event changes | +| gps_checks_passed | `bool` | | | 0 - true when gps quality checks are passing passed | +| reset_vel_to_gps | `bool` | | | 1 - true when the velocity states are reset to the gps measurement | +| reset_vel_to_flow | `bool` | | | 2 - true when the velocity states are reset using the optical flow measurement | +| reset_vel_to_vision | `bool` | | | 3 - true when the velocity states are reset to the vision system measurement | +| reset_vel_to_zero | `bool` | | | 4 - true when the velocity states are reset to zero | +| reset_pos_to_last_known | `bool` | | | 5 - true when the position states are reset to the last known position | +| reset_pos_to_gps | `bool` | | | 6 - true when the position states are reset to the gps measurement | +| reset_pos_to_vision | `bool` | | | 7 - true when the position states are reset to the vision system measurement | +| starting_gps_fusion | `bool` | | | 8 - true when the filter starts using gps measurements to correct the state estimates | +| starting_vision_pos_fusion | `bool` | | | 9 - true when the filter starts using vision system position measurements to correct the state estimates | +| starting_vision_vel_fusion | `bool` | | | 10 - true when the filter starts using vision system velocity measurements to correct the state estimates | +| starting_vision_yaw_fusion | `bool` | | | 11 - true when the filter starts using vision system yaw measurements to correct the state estimates | +| yaw_aligned_to_imu_gps | `bool` | | | 12 - true when the filter resets the yaw to an estimate derived from IMU and GPS data | +| reset_hgt_to_baro | `bool` | | | 13 - true when the vertical position state is reset to the baro measurement | +| reset_hgt_to_gps | `bool` | | | 14 - true when the vertical position state is reset to the gps measurement | +| reset_hgt_to_rng | `bool` | | | 15 - true when the vertical position state is reset to the rng measurement | +| reset_hgt_to_ev | `bool` | | | 16 - true when the vertical position state is reset to the ev measurement | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorEventFlags.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -25,5 +61,6 @@ bool reset_hgt_to_baro # 13 - true when the vertical position s bool reset_hgt_to_gps # 14 - true when the vertical position state is reset to the gps measurement bool reset_hgt_to_rng # 15 - true when the vertical position state is reset to the rng measurement bool reset_hgt_to_ev # 16 - true when the vertical position state is reset to the ev measurement - ``` + +::: diff --git a/docs/ko/msg_docs/EstimatorGpsStatus.md b/docs/ko/msg_docs/EstimatorGpsStatus.md index 1833682def..b7a4b3c9ff 100644 --- a/docs/ko/msg_docs/EstimatorGpsStatus.md +++ b/docs/ko/msg_docs/EstimatorGpsStatus.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # EstimatorGpsStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorGpsStatus.msg) +**TOPICS:** estimator_gpsstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| checks_passed | `bool` | | | | +| check_fail_gps_fix | `bool` | | | 0 : insufficient fix type (no 3D solution) | +| check_fail_min_sat_count | `bool` | | | 1 : minimum required sat count fail | +| check_fail_max_pdop | `bool` | | | 2 : maximum allowed PDOP fail | +| check_fail_max_horz_err | `bool` | | | 3 : maximum allowed horizontal position error fail | +| check_fail_max_vert_err | `bool` | | | 4 : maximum allowed vertical position error fail | +| check_fail_max_spd_err | `bool` | | | 5 : maximum allowed speed error fail | +| check_fail_max_horz_drift | `bool` | | | 6 : maximum allowed horizontal position drift fail - requires stationary vehicle | +| check_fail_max_vert_drift | `bool` | | | 7 : maximum allowed vertical position drift fail - requires stationary vehicle | +| check_fail_max_horz_spd_err | `bool` | | | 8 : maximum allowed horizontal speed fail - requires stationary vehicle | +| check_fail_max_vert_spd_err | `bool` | | | 9 : maximum allowed vertical velocity discrepancy fail | +| check_fail_spoofed_gps | `bool` | | | 10 : GPS signal is spoofed | +| position_drift_rate_horizontal_m_s | `float32` | | | Horizontal position rate magnitude (m/s) | +| position_drift_rate_vertical_m_s | `float32` | | | Vertical position rate magnitude (m/s) | +| filtered_horizontal_speed_m_s | `float32` | | | Filtered horizontal velocity magnitude (m/s) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorGpsStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -23,5 +56,6 @@ bool check_fail_spoofed_gps # 10 : GPS signal is spoofed float32 position_drift_rate_horizontal_m_s # Horizontal position rate magnitude (m/s) float32 position_drift_rate_vertical_m_s # Vertical position rate magnitude (m/s) float32 filtered_horizontal_speed_m_s # Filtered horizontal velocity magnitude (m/s) - ``` + +::: diff --git a/docs/ko/msg_docs/EstimatorInnovations.md b/docs/ko/msg_docs/EstimatorInnovations.md index 59014ef15b..87c3692da4 100644 --- a/docs/ko/msg_docs/EstimatorInnovations.md +++ b/docs/ko/msg_docs/EstimatorInnovations.md @@ -1,6 +1,44 @@ +--- +pageClass: is-wide-page +--- + # EstimatorInnovations (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorInnovations.msg) +**TOPICS:** estimator_innovations estimator_innovation_variances estimator_innovation_test_ratios + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| gps_hvel | `float32[2]` | | | horizontal GPS velocity innovation (m/sec) and innovation variance ((m/sec)\*\*2) | +| `float32` | | | vertical GPS velocity innovation (m/sec) and innovation variance ((m/sec)\*\*2) | | +| gps_hpos | `float32[2]` | | | horizontal GPS position innovation (m) and innovation variance (m\*\*2) | +| `float32` | | | vertical GPS position innovation (m) and innovation variance (m\*\*2) | | +| ev_hvel | `float32[2]` | | | horizontal external vision velocity innovation (m/sec) and innovation variance ((m/sec)\*\*2) | +| `float32` | | | vertical external vision velocity innovation (m/sec) and innovation variance ((m/sec)\*\*2) | | +| ev_hpos | `float32[2]` | | | horizontal external vision position innovation (m) and innovation variance (m\*\*2) | +| `float32` | | | vertical external vision position innovation (m) and innovation variance (m\*\*2) | | +| rng_vpos | `float32` | | | range sensor height innovation (m) and innovation variance (m\*\*2) | +| baro_vpos | `float32` | | | barometer height innovation (m) and innovation variance (m\*\*2) | +| aux_hvel | `float32[2]` | | | horizontal auxiliary velocity innovation from landing target measurement (m/sec) and innovation variance ((m/sec)\*\*2) | +| flow | `float32[2]` | | | flow innvoation (rad/sec) and innovation variance ((rad/sec)\*\*2) | +| heading | `float32` | | | heading innovation (rad) and innovation variance (rad\*\*2) | +| mag_field | `float32[3]` | | | earth magnetic field innovation (Gauss) and innovation variance (Gauss\*\*2) | +| gravity | `float32[3]` | | | gravity innovation from accelerometerr vector (m/s\*\*2) | +| drag | `float32[2]` | | | drag specific force innovation (m/sec\*\*2) and innovation variance ((m/sec)\*\*2) | +| airspeed | `float32` | | | airspeed innovation (m/sec) and innovation variance ((m/sec)\*\*2) | +| beta | `float32` | | | synthetic sideslip innovation (rad) and innovation variance (rad\*\*2) | +| hagl | `float32` | | | height of ground innovation (m) and innovation variance (m\*\*2) | +| hagl_rate | `float32` | | | height of ground rate innovation (m/s) and innovation variance ((m/s)\*\*2) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorInnovations.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -42,5 +80,6 @@ float32 hagl_rate # height of ground rate innovation (m/s) and innovation varian # the test ratio will be put in the first component of the vector. # TOPICS estimator_innovations estimator_innovation_variances estimator_innovation_test_ratios - ``` + +::: diff --git a/docs/ko/msg_docs/EstimatorSelectorStatus.md b/docs/ko/msg_docs/EstimatorSelectorStatus.md index fd1145e2dc..a908697306 100644 --- a/docs/ko/msg_docs/EstimatorSelectorStatus.md +++ b/docs/ko/msg_docs/EstimatorSelectorStatus.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # EstimatorSelectorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorSelectorStatus.msg) +**TOPICS:** estimator_selectorstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| primary_instance | `uint8` | | | | +| instances_available | `uint8` | | | | +| instance_changed_count | `uint32` | | | | +| last_instance_change | `uint64` | | | | +| accel_device_id | `uint32` | | | | +| baro_device_id | `uint32` | | | | +| gyro_device_id | `uint32` | | | | +| mag_device_id | `uint32` | | | | +| combined_test_ratio | `float32[9]` | | | | +| relative_test_ratio | `float32[9]` | | | | +| healthy | `bool[9]` | | | | +| accumulated_gyro_error | `float32[4]` | | | | +| accumulated_accel_error | `float32[4]` | | | | +| gyro_fault_detected | `bool` | | | | +| accel_fault_detected | `bool` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorSelectorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -25,5 +57,6 @@ float32[4] accumulated_gyro_error float32[4] accumulated_accel_error bool gyro_fault_detected bool accel_fault_detected - ``` + +::: diff --git a/docs/ko/msg_docs/EstimatorSensorBias.md b/docs/ko/msg_docs/EstimatorSensorBias.md index 9b4a1d66c2..babb6a5532 100644 --- a/docs/ko/msg_docs/EstimatorSensorBias.md +++ b/docs/ko/msg_docs/EstimatorSensorBias.md @@ -1,9 +1,44 @@ +--- +pageClass: is-wide-page +--- + # EstimatorSensorBias (UORB message) -Sensor readings and in-run biases in SI-unit form. Sensor readings are compensated for static offsets, -scale errors, in-run bias and thermal drift (if thermal compensation is enabled and available). +Sensor readings and in-run biases in SI-unit form. Sensor readings are compensated for static offsets,. scale errors, in-run bias and thermal drift (if thermal compensation is enabled and available). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorSensorBias.msg) +**TOPICS:** estimator_sensorbias + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| gyro_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| gyro_bias | `float32[3]` | | | gyroscope in-run bias in body frame (rad/s) | +| gyro_bias_limit | `float32` | | | magnitude of maximum gyroscope in-run bias in body frame (rad/s) | +| gyro_bias_variance | `float32[3]` | | | | +| gyro_bias_valid | `bool` | | | | +| gyro_bias_stable | `bool` | | | true when the gyro bias estimate is stable enough to use for calibration | +| accel_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| accel_bias | `float32[3]` | | | accelerometer in-run bias in body frame (m/s^2) | +| accel_bias_limit | `float32` | | | magnitude of maximum accelerometer in-run bias in body frame (m/s^2) | +| accel_bias_variance | `float32[3]` | | | | +| accel_bias_valid | `bool` | | | | +| accel_bias_stable | `bool` | | | true when the accel bias estimate is stable enough to use for calibration | +| mag_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| mag_bias | `float32[3]` | | | magnetometer in-run bias in body frame (Gauss) | +| mag_bias_limit | `float32` | | | magnitude of maximum magnetometer in-run bias in body frame (Gauss) | +| mag_bias_variance | `float32[3]` | | | | +| mag_bias_valid | `bool` | | | | +| mag_bias_stable | `bool` | | | true when the mag bias estimate is stable enough to use for calibration | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorSensorBias.msg) + +:::details +Click here to see original file ```c # @@ -36,5 +71,6 @@ float32 mag_bias_limit # magnitude of maximum magnetometer in-run bias float32[3] mag_bias_variance bool mag_bias_valid bool mag_bias_stable # true when the mag bias estimate is stable enough to use for calibration - ``` + +::: diff --git a/docs/ko/msg_docs/EstimatorStates.md b/docs/ko/msg_docs/EstimatorStates.md index 7d13493ca9..5ec8193d09 100644 --- a/docs/ko/msg_docs/EstimatorStates.md +++ b/docs/ko/msg_docs/EstimatorStates.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # EstimatorStates (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStates.msg) +**TOPICS:** estimator_states + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ------------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| states | `float32[25]` | | | Internal filter states | +| n_states | `uint8` | | | Number of states effectively used | +| covariances | `float32[24]` | | | Diagonal Elements of Covariance Matrix | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStates.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +31,6 @@ float32[25] states # Internal filter states uint8 n_states # Number of states effectively used float32[24] covariances # Diagonal Elements of Covariance Matrix - ``` + +::: diff --git a/docs/ko/msg_docs/EstimatorStatus.md b/docs/ko/msg_docs/EstimatorStatus.md index aca77484b9..bbc1a2b612 100644 --- a/docs/ko/msg_docs/EstimatorStatus.md +++ b/docs/ko/msg_docs/EstimatorStatus.md @@ -1,6 +1,109 @@ +--- +pageClass: is-wide-page +--- + # EstimatorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatus.msg) +**TOPICS:** estimator_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| output_tracking_error | `float32[3]` | | | return a vector containing the output predictor angular, velocity and position tracking error magnitudes (rad), (m/s), (m) | +| gps_check_fail_flags | `uint16` | | | Bitmask to indicate status of GPS checks - see definition below | +| control_mode_flags | `uint64` | | | Bitmask to indicate EKF logic state | +| filter_fault_flags | `uint32` | | | Bitmask to indicate EKF internal faults | +| pos_horiz_accuracy | `float32` | | | 1-Sigma estimated horizontal position accuracy relative to the estimators origin (m) | +| pos_vert_accuracy | `float32` | | | 1-Sigma estimated vertical position accuracy relative to the estimators origin (m) | +| hdg_test_ratio | `float32` | | | low-pass filtered ratio of the largest heading innovation component to the innovation test limit | +| vel_test_ratio | `float32` | | | low-pass filtered ratio of the largest velocity innovation component to the innovation test limit | +| pos_test_ratio | `float32` | | | low-pass filtered ratio of the largest horizontal position innovation component to the innovation test limit | +| hgt_test_ratio | `float32` | | | low-pass filtered ratio of the vertical position innovation to the innovation test limit | +| tas_test_ratio | `float32` | | | low-pass filtered ratio of the true airspeed innovation to the innovation test limit | +| hagl_test_ratio | `float32` | | | low-pass filtered ratio of the height above ground innovation to the innovation test limit | +| beta_test_ratio | `float32` | | | low-pass filtered ratio of the synthetic sideslip innovation to the innovation test limit | +| solution_status_flags | `uint16` | | | Bitmask indicating which filter kinematic state outputs are valid for flight control use. | +| reset_count_vel_ne | `uint8` | | | number of horizontal position reset events (allow to wrap if count exceeds 255) | +| reset_count_vel_d | `uint8` | | | number of vertical velocity reset events (allow to wrap if count exceeds 255) | +| reset_count_pos_ne | `uint8` | | | number of horizontal position reset events (allow to wrap if count exceeds 255) | +| reset_count_pod_d | `uint8` | | | number of vertical position reset events (allow to wrap if count exceeds 255) | +| reset_count_quat | `uint8` | | | number of quaternion reset events (allow to wrap if count exceeds 255) | +| time_slip | `float32` | | | cumulative amount of time in seconds that the EKF inertial calculation has slipped relative to system time | +| pre_flt_fail_innov_heading | `bool` | | | | +| pre_flt_fail_innov_height | `bool` | | | | +| pre_flt_fail_innov_pos_horiz | `bool` | | | | +| pre_flt_fail_innov_vel_horiz | `bool` | | | | +| pre_flt_fail_innov_vel_vert | `bool` | | | | +| pre_flt_fail_mag_field_disturbed | `bool` | | | | +| accel_device_id | `uint32` | | | | +| gyro_device_id | `uint32` | | | | +| baro_device_id | `uint32` | | | | +| mag_device_id | `uint32` | | | | +| health_flags | `uint8` | | | Bitmask to indicate sensor health states (vel, pos, hgt) | +| timeout_flags | `uint8` | | | Bitmask to indicate timeout flags (vel, pos, hgt) | +| mag_inclination_deg | `float32` | | | | +| mag_inclination_ref_deg | `float32` | | | | +| mag_strength_gs | `float32` | | | | +| mag_strength_ref_gs | `float32` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------------- | +| GPS_CHECK_FAIL_GPS_FIX | `uint8` | 0 | 0 : insufficient fix type (no 3D solution) | +| GPS_CHECK_FAIL_MIN_SAT_COUNT | `uint8` | 1 | 1 : minimum required sat count fail | +| GPS_CHECK_FAIL_MAX_PDOP | `uint8` | 2 | 2 : maximum allowed PDOP fail | +| GPS_CHECK_FAIL_MAX_HORZ_ERR | `uint8` | 3 | 3 : maximum allowed horizontal position error fail | +| GPS_CHECK_FAIL_MAX_VERT_ERR | `uint8` | 4 | 4 : maximum allowed vertical position error fail | +| GPS_CHECK_FAIL_MAX_SPD_ERR | `uint8` | 5 | 5 : maximum allowed speed error fail | +| GPS_CHECK_FAIL_MAX_HORZ_DRIFT | `uint8` | 6 | 6 : maximum allowed horizontal position drift fail - requires stationary vehicle | +| GPS_CHECK_FAIL_MAX_VERT_DRIFT | `uint8` | 7 | 7 : maximum allowed vertical position drift fail - requires stationary vehicle | +| GPS_CHECK_FAIL_MAX_HORZ_SPD_ERR | `uint8` | 8 | 8 : maximum allowed horizontal speed fail - requires stationary vehicle | +| GPS_CHECK_FAIL_MAX_VERT_SPD_ERR | `uint8` | 9 | 9 : maximum allowed vertical velocity discrepancy fail | +| GPS_CHECK_FAIL_SPOOFED | `uint8` | 10 | 10 : GPS signal is spoofed | +| GPS_CHECK_FAIL_JAMMED | `uint8` | 11 | 11 : GPS signal is jammed | +| CS_TILT_ALIGN | `uint8` | 0 | 0 - true if the filter tilt alignment is complete | +| CS_YAW_ALIGN | `uint8` | 1 | 1 - true if the filter yaw alignment is complete | +| CS_GNSS_POS | `uint8` | 2 | 2 - true if GNSS position measurements are being fused | +| CS_OPT_FLOW | `uint8` | 3 | 3 - true if optical flow measurements are being fused | +| CS_MAG_HDG | `uint8` | 4 | 4 - true if a simple magnetic yaw heading is being fused | +| CS_MAG_3D | `uint8` | 5 | 5 - true if 3-axis magnetometer measurement are being fused | +| CS_MAG_DEC | `uint8` | 6 | 6 - true if synthetic magnetic declination measurements are being fused | +| CS_IN_AIR | `uint8` | 7 | 7 - true when thought to be airborne | +| CS_WIND | `uint8` | 8 | 8 - true when wind velocity is being estimated | +| CS_BARO_HGT | `uint8` | 9 | 9 - true when baro data is being fused | +| CS_RNG_HGT | `uint8` | 10 | 10 - true when range finder data is being fused for height aiding | +| CS_GPS_HGT | `uint8` | 11 | 11 - true when GPS altitude is being fused | +| CS_EV_POS | `uint8` | 12 | 12 - true when local position data from external vision is being fused | +| CS_EV_YAW | `uint8` | 13 | 13 - true when yaw data from external vision measurements is being fused | +| CS_EV_HGT | `uint8` | 14 | 14 - true when height data from external vision measurements is being fused | +| CS_BETA | `uint8` | 15 | 15 - true when synthetic sideslip measurements are being fused | +| CS_MAG_FIELD | `uint8` | 16 | 16 - true when only the magnetic field states are updated by the magnetometer | +| CS_FIXED_WING | `uint8` | 17 | 17 - true when thought to be operating as a fixed wing vehicle with constrained sideslip | +| CS_MAG_FAULT | `uint8` | 18 | 18 - true when the magnetometer has been declared faulty and is no longer being used | +| CS_ASPD | `uint8` | 19 | 19 - true when airspeed measurements are being fused | +| CS_GND_EFFECT | `uint8` | 20 | 20 - true when when protection from ground effect induced static pressure rise is active | +| CS_RNG_STUCK | `uint8` | 21 | 21 - true when a stuck range finder sensor has been detected | +| CS_GPS_YAW | `uint8` | 22 | 22 - true when yaw (not ground course) data from a GPS receiver is being fused | +| CS_MAG_ALIGNED | `uint8` | 23 | 23 - true when the in-flight mag field alignment has been completed | +| CS_EV_VEL | `uint8` | 24 | 24 - true when local frame velocity data fusion from external vision measurements is intended | +| CS_SYNTHETIC_MAG_Z | `uint8` | 25 | 25 - true when we are using a synthesized measurement for the magnetometer Z component | +| CS_VEHICLE_AT_REST | `uint8` | 26 | 26 - true when the vehicle is at rest | +| CS_GPS_YAW_FAULT | `uint8` | 27 | 27 - true when the GNSS heading has been declared faulty and is no longer being used | +| CS_RNG_FAULT | `uint8` | 28 | 28 - true when the range finder has been declared faulty and is no longer being used | +| CS_GNSS_VEL | `uint8` | 44 | 44 - true if GNSS velocity measurement fusion is intended | +| CS_GNSS_FAULT | `uint8` | 45 | 45 - true if GNSS measurements have been declared faulty and are no longer used | +| CS_YAW_MANUAL | `uint8` | 46 | 46 - true if yaw has been set manually | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -130,5 +233,6 @@ float32 mag_inclination_deg float32 mag_inclination_ref_deg float32 mag_strength_gs float32 mag_strength_ref_gs - ``` + +::: diff --git a/docs/ko/msg_docs/EstimatorStatusFlags.md b/docs/ko/msg_docs/EstimatorStatusFlags.md index aa7250fe1e..0b907904f0 100644 --- a/docs/ko/msg_docs/EstimatorStatusFlags.md +++ b/docs/ko/msg_docs/EstimatorStatusFlags.md @@ -1,6 +1,85 @@ +--- +pageClass: is-wide-page +--- + # EstimatorStatusFlags (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatusFlags.msg) +**TOPICS:** estimator_statusflags + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| control_status_changes | `uint32` | | | number of filter control status (cs) changes | +| cs_tilt_align | `bool` | | | 0 - true if the filter tilt alignment is complete | +| cs_yaw_align | `bool` | | | 1 - true if the filter yaw alignment is complete | +| cs_gnss_pos | `bool` | | | 2 - true if GNSS position measurement fusion is intended | +| cs_opt_flow | `bool` | | | 3 - true if optical flow measurements fusion is intended | +| cs_mag_hdg | `bool` | | | 4 - true if a simple magnetic yaw heading fusion is intended | +| cs_mag_3d | `bool` | | | 5 - true if 3-axis magnetometer measurement fusion is intended | +| cs_mag_dec | `bool` | | | 6 - true if synthetic magnetic declination measurements fusion is intended | +| cs_in_air | `bool` | | | 7 - true when the vehicle is airborne | +| cs_wind | `bool` | | | 8 - true when wind velocity is being estimated | +| cs_baro_hgt | `bool` | | | 9 - true when baro data is being fused | +| cs_rng_hgt | `bool` | | | 10 - true when range finder data is being fused for height aiding | +| cs_gps_hgt | `bool` | | | 11 - true when GPS altitude is being fused | +| cs_ev_pos | `bool` | | | 12 - true when local position data fusion from external vision is intended | +| cs_ev_yaw | `bool` | | | 13 - true when yaw data from external vision measurements fusion is intended | +| cs_ev_hgt | `bool` | | | 14 - true when height data from external vision measurements is being fused | +| cs_fuse_beta | `bool` | | | 15 - true when synthetic sideslip measurements are being fused | +| cs_mag_field_disturbed | `bool` | | | 16 - true when the mag field does not match the expected strength | +| cs_fixed_wing | `bool` | | | 17 - true when the vehicle is operating as a fixed wing vehicle | +| cs_mag_fault | `bool` | | | 18 - true when the magnetometer has been declared faulty and is no longer being used | +| cs_fuse_aspd | `bool` | | | 19 - true when airspeed measurements are being fused | +| cs_gnd_effect | `bool` | | | 20 - true when protection from ground effect induced static pressure rise is active | +| cs_rng_stuck | `bool` | | | 21 - true when rng data wasn't ready for more than 10s and new rng values haven't changed enough | +| cs_gnss_yaw | `bool` | | | 22 - true when yaw (not ground course) data fusion from a GPS receiver is intended | +| cs_mag_aligned_in_flight | `bool` | | | 23 - true when the in-flight mag field alignment has been completed | +| cs_ev_vel | `bool` | | | 24 - true when local frame velocity data fusion from external vision measurements is intended | +| cs_synthetic_mag_z | `bool` | | | 25 - true when we are using a synthesized measurement for the magnetometer Z component | +| cs_vehicle_at_rest | `bool` | | | 26 - true when the vehicle is at rest | +| cs_gnss_yaw_fault | `bool` | | | 27 - true when the GNSS heading has been declared faulty and is no longer being used | +| cs_rng_fault | `bool` | | | 28 - true when the range finder has been declared faulty and is no longer being used | +| cs_inertial_dead_reckoning | `bool` | | | 29 - true if we are no longer fusing measurements that constrain horizontal velocity drift | +| cs_wind_dead_reckoning | `bool` | | | 30 - true if we are navigationg reliant on wind relative measurements | +| cs_rng_kin_consistent | `bool` | | | 31 - true when the range finder kinematic consistency check is passing | +| cs_fake_pos | `bool` | | | 32 - true when fake position measurements are being fused | +| cs_fake_hgt | `bool` | | | 33 - true when fake height measurements are being fused | +| cs_gravity_vector | `bool` | | | 34 - true when gravity vector measurements are being fused | +| cs_mag | `bool` | | | 35 - true if 3-axis magnetometer measurement fusion (mag states only) is intended | +| cs_ev_yaw_fault | `bool` | | | 36 - true when the EV heading has been declared faulty and is no longer being used | +| cs_mag_heading_consistent | `bool` | | | 37 - true when the heading obtained from mag data is declared consistent with the filter | +| cs_aux_gpos | `bool` | | | 38 - true if auxiliary global position measurement fusion is intended | +| cs_rng_terrain | `bool` | | | 39 - true if we are fusing range finder data for terrain | +| cs_opt_flow_terrain | `bool` | | | 40 - true if we are fusing flow data for terrain | +| cs_valid_fake_pos | `bool` | | | 41 - true if a valid constant position is being fused | +| cs_constant_pos | `bool` | | | 42 - true if the vehicle is at a constant position | +| cs_baro_fault | `bool` | | | 43 - true when the current baro has been declared faulty and is no longer being used | +| cs_gnss_vel | `bool` | | | 44 - true if GNSS velocity measurement fusion is intended | +| cs_gnss_fault | `bool` | | | 45 - true if GNSS true if GNSS measurements (lat, lon, vel) have been declared faulty | +| cs_yaw_manual | `bool` | | | 46 - true if yaw has been set manually | +| cs_gnss_hgt_fault | `bool` | | | 47 - true if GNSS true if GNSS measurements (alt) have been declared faulty | +| fault_status_changes | `uint32` | | | number of filter fault status (fs) changes | +| fs_bad_mag_x | `bool` | | | 0 - true if the fusion of the magnetometer X-axis has encountered a numerical error | +| fs_bad_mag_y | `bool` | | | 1 - true if the fusion of the magnetometer Y-axis has encountered a numerical error | +| fs_bad_mag_z | `bool` | | | 2 - true if the fusion of the magnetometer Z-axis has encountered a numerical error | +| fs_bad_hdg | `bool` | | | 3 - true if the fusion of the heading angle has encountered a numerical error | +| fs_bad_mag_decl | `bool` | | | 4 - true if the fusion of the magnetic declination has encountered a numerical error | +| fs_bad_airspeed | `bool` | | | 5 - true if fusion of the airspeed has encountered a numerical error | +| fs_bad_sideslip | `bool` | | | 6 - true if fusion of the synthetic sideslip constraint has encountered a numerical error | +| fs_bad_optflow_x | `bool` | | | 7 - true if fusion of the optical flow X axis has encountered a numerical error | +| fs_bad_optflow_y | `bool` | | | 8 - true if fusion of the optical flow Y axis has encountered a numerical error | +| fs_bad_acc_vertical | `bool` | | | 10 - true if bad vertical accelerometer data has been detected | +| fs_bad_acc_clipping | `bool` | | | 11 - true if delta velocity data contains clipping (asymmetric railing) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatusFlags.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -71,19 +150,6 @@ bool fs_bad_optflow_x # 7 - true if fusion of the optical flow X axis h bool fs_bad_optflow_y # 8 - true if fusion of the optical flow Y axis has encountered a numerical error bool fs_bad_acc_vertical # 10 - true if bad vertical accelerometer data has been detected bool fs_bad_acc_clipping # 11 - true if delta velocity data contains clipping (asymmetric railing) - - -# innovation test failures -uint32 innovation_fault_status_changes # number of innovation fault status (reject) changes -bool reject_hor_vel # 0 - true if horizontal velocity observations have been rejected -bool reject_ver_vel # 1 - true if vertical velocity observations have been rejected -bool reject_hor_pos # 2 - true if horizontal position observations have been rejected -bool reject_ver_pos # 3 - true if vertical position observations have been rejected -bool reject_yaw # 7 - true if the yaw observation has been rejected -bool reject_airspeed # 8 - true if the airspeed observation has been rejected -bool reject_sideslip # 9 - true if the synthetic sideslip observation has been rejected -bool reject_hagl # 10 - true if the height above ground observation has been rejected -bool reject_optflow_x # 11 - true if the X optical flow observation has been rejected -bool reject_optflow_y # 12 - true if the Y optical flow observation has been rejected - ``` + +::: diff --git a/docs/ko/msg_docs/Event.md b/docs/ko/msg_docs/Event.md index 5d22f337f5..6fa988c3fd 100644 --- a/docs/ko/msg_docs/Event.md +++ b/docs/ko/msg_docs/Event.md @@ -1,8 +1,36 @@ +--- +pageClass: is-wide-page +--- + # Event (UORB message) -Events interface +Events interface. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/Event.msg) +**TOPICS:** event + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| id | `uint32` | | | Event ID | +| event_sequence | `uint16` | | | Event sequence number | +| arguments | `uint8[25]` | | | (optional) arguments, depend on event id | +| log_levels | `uint8` | | | Log levels: 4 bits MSB: internal, 4 bits LSB: external | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/Event.msg) + +:::details +Click here to see original file ```c # Events interface @@ -17,5 +45,6 @@ uint8[25] arguments # (optional) arguments, depend on event id uint8 log_levels # Log levels: 4 bits MSB: internal, 4 bits LSB: external uint8 ORB_QUEUE_LENGTH = 16 - ``` + +::: diff --git a/docs/ko/msg_docs/EventV0.md b/docs/ko/msg_docs/EventV0.md index 19cfa7b70c..4bc23e839a 100644 --- a/docs/ko/msg_docs/EventV0.md +++ b/docs/ko/msg_docs/EventV0.md @@ -1,9 +1,36 @@ +--- +pageClass: is-wide-page +--- + # EventV0 (UORB message) -this message is required here in the msg_old folder because other msg are depending on it -Events interface +this message is required here in the msg_old folder because other msg are depending on it. Events interface. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/EventV0.msg) +**TOPICS:** eventv0 + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| id | `uint32` | | | Event ID | +| event_sequence | `uint16` | | | Event sequence number | +| arguments | `uint8[25]` | | | (optional) arguments, depend on event id | +| log_levels | `uint8` | | | Log levels: 4 bits MSB: internal, 4 bits LSB: external | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/EventV0.msg) + +:::details +Click here to see original file ```c # this message is required here in the msg_old folder because other msg are depending on it @@ -20,5 +47,6 @@ uint8[25] arguments # (optional) arguments, depend on event id uint8 log_levels # Log levels: 4 bits MSB: internal, 4 bits LSB: external uint8 ORB_QUEUE_LENGTH = 16 - ``` + +::: diff --git a/docs/ko/msg_docs/FailsafeFlags.md b/docs/ko/msg_docs/FailsafeFlags.md index a9e0079ae8..04514b37ba 100644 --- a/docs/ko/msg_docs/FailsafeFlags.md +++ b/docs/ko/msg_docs/FailsafeFlags.md @@ -1,3 +1,7 @@ +--- +pageClass: is-wide-page +--- + # FailsafeFlags (UORB message) Input flags for the failsafe state machine set by the arming & health checks. @@ -5,7 +9,61 @@ Input flags for the failsafe state machine set by the arming & health checks. Flags must be named such that false == no failure (e.g. \_invalid, \_unhealthy, \_lost) The flag comments are used as label for the failsafe state machine simulation -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FailsafeFlags.msg) +**TOPICS:** failsafe_flags + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mode_req_angular_velocity | `uint32` | | | | +| mode_req_attitude | `uint32` | | | | +| mode_req_local_alt | `uint32` | | | | +| mode_req_local_position | `uint32` | | | | +| mode_req_local_position_relaxed | `uint32` | | | | +| mode_req_global_position | `uint32` | | | | +| mode_req_global_position_relaxed | `uint32` | | | | +| mode_req_mission | `uint32` | | | | +| mode_req_offboard_signal | `uint32` | | | | +| mode_req_home_position | `uint32` | | | | +| mode_req_wind_and_flight_time_compliance | `uint32` | | | if set, mode cannot be entered if wind or flight time limit exceeded | +| mode_req_prevent_arming | `uint32` | | | if set, cannot arm while in this mode | +| mode_req_manual_control | `uint32` | | | | +| mode_req_other | `uint32` | | | other requirements, not covered above (for external modes) | +| angular_velocity_invalid | `bool` | | | Angular velocity invalid | +| attitude_invalid | `bool` | | | Attitude invalid | +| local_altitude_invalid | `bool` | | | Local altitude invalid | +| local_position_invalid | `bool` | | | Local position estimate invalid | +| local_position_invalid_relaxed | `bool` | | | Local position with reduced accuracy requirements invalid (e.g. flying with optical flow) | +| local_velocity_invalid | `bool` | | | Local velocity estimate invalid | +| global_position_invalid | `bool` | | | Global position estimate invalid | +| global_position_invalid_relaxed | `bool` | | | Global position estimate invalid with relaxed accuracy requirements | +| auto_mission_missing | `bool` | | | No mission available | +| offboard_control_signal_lost | `bool` | | | Offboard signal lost | +| home_position_invalid | `bool` | | | No home position available | +| manual_control_signal_lost | `bool` | | | Manual control (RC) signal lost | +| gcs_connection_lost | `bool` | | | GCS connection lost | +| battery_warning | `uint8` | | | Battery warning level (see BatteryStatus.msg) | +| battery_low_remaining_time | `bool` | | | Low battery based on remaining flight time | +| battery_unhealthy | `bool` | | | Battery unhealthy | +| geofence_breached | `bool` | | | Geofence breached (one or multiple) | +| mission_failure | `bool` | | | Mission failure | +| vtol_fixed_wing_system_failure | `bool` | | | vehicle in fixed-wing system failure failsafe mode (after quad-chute) | +| wind_limit_exceeded | `bool` | | | Wind limit exceeded | +| flight_time_limit_exceeded | `bool` | | | Maximum flight time exceeded | +| position_accuracy_low | `bool` | | | Position estimate has dropped below threshold, but is currently still declared valid | +| navigator_failure | `bool` | | | Navigator failed to execute a mode | +| fd_critical_failure | `bool` | | | Critical failure (attitude/altitude limit exceeded, or external ATS) | +| fd_esc_arming_failure | `bool` | | | ESC failed to arm | +| fd_imbalanced_prop | `bool` | | | Imbalanced propeller detected | +| fd_motor_failure | `bool` | | | Motor failure | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FailsafeFlags.msg) + +:::details +Click here to see original file ```c # Input flags for the failsafe state machine set by the arming & health checks. @@ -68,5 +126,6 @@ bool fd_critical_failure # Critical failure (attitude/altitude limi bool fd_esc_arming_failure # ESC failed to arm bool fd_imbalanced_prop # Imbalanced propeller detected bool fd_motor_failure # Motor failure - ``` + +::: diff --git a/docs/ko/msg_docs/FailureDetectorStatus.md b/docs/ko/msg_docs/FailureDetectorStatus.md index a112a1e642..9b4de32cae 100644 --- a/docs/ko/msg_docs/FailureDetectorStatus.md +++ b/docs/ko/msg_docs/FailureDetectorStatus.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # FailureDetectorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FailureDetectorStatus.msg) +**TOPICS:** failure_detectorstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| fd_roll | `bool` | | | | +| fd_pitch | `bool` | | | | +| fd_alt | `bool` | | | | +| fd_ext | `bool` | | | | +| fd_arm_escs | `bool` | | | | +| fd_battery | `bool` | | | | +| fd_imbalanced_prop | `bool` | | | | +| fd_motor | `bool` | | | | +| imbalanced_prop_metric | `float32` | | | Metric of the imbalanced propeller check (low-passed) | +| motor_failure_mask | `uint16` | | | Bit-mask with motor indices, indicating critical motor failures | +| motor_stop_mask | `uint16` | | | Bitmaks of motors stopped by failure injection | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FailureDetectorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +46,6 @@ bool fd_motor float32 imbalanced_prop_metric # Metric of the imbalanced propeller check (low-passed) uint16 motor_failure_mask # Bit-mask with motor indices, indicating critical motor failures uint16 motor_stop_mask # Bitmaks of motors stopped by failure injection - ``` + +::: diff --git a/docs/ko/msg_docs/FigureEightStatus.md b/docs/ko/msg_docs/FigureEightStatus.md index 7a8ae760c2..375d856181 100644 --- a/docs/ko/msg_docs/FigureEightStatus.md +++ b/docs/ko/msg_docs/FigureEightStatus.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # FigureEightStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FigureEightStatus.msg) +**TOPICS:** figure_eightstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| major_radius | `float32` | | | Major axis radius of the figure eight [m]. Positive values orbit clockwise, negative values orbit counter-clockwise. | +| minor_radius | `float32` | | | Minor axis radius of the figure eight [m]. | +| orientation | `float32` | | | Orientation of the major axis of the figure eight [rad]. | +| frame | `uint8` | | | The coordinate system of the fields: x, y, z. | +| x | `int32` | | | X coordinate of center point. Coordinate system depends on frame field: local = x position in meters _ 1e4, global = latitude in degrees _ 1e7. | +| y | `int32` | | | Y coordinate of center point. Coordinate system depends on frame field: local = y position in meters _ 1e4, global = latitude in degrees _ 1e7. | +| z | `float32` | | | Altitude of center point. Coordinate system depends on frame field. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FigureEightStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +35,6 @@ uint8 frame # The coordinate system of the fields: x, y, z. int32 x # X coordinate of center point. Coordinate system depends on frame field: local = x position in meters * 1e4, global = latitude in degrees * 1e7. int32 y # Y coordinate of center point. Coordinate system depends on frame field: local = y position in meters * 1e4, global = latitude in degrees * 1e7. float32 z # Altitude of center point. Coordinate system depends on frame field. - ``` + +::: diff --git a/docs/ko/msg_docs/FixedWingLateralGuidanceStatus.md b/docs/ko/msg_docs/FixedWingLateralGuidanceStatus.md index 02dc50b410..c8f636e377 100644 --- a/docs/ko/msg_docs/FixedWingLateralGuidanceStatus.md +++ b/docs/ko/msg_docs/FixedWingLateralGuidanceStatus.md @@ -1,9 +1,33 @@ +--- +pageClass: is-wide-page +--- + # FixedWingLateralGuidanceStatus (UORB message) -Fixed Wing Lateral Guidance Status message -Published by fw_pos_control module to report the resultant lateral setpoints and NPFG debug outputs +Fixed Wing Lateral Guidance Status message. Published by fw_pos_control module to report the resultant lateral setpoints and NPFG debug outputs. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingLateralGuidanceStatus.msg) +**TOPICS:** fixed_winglateral_guidancestatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| course_setpoint | `float32` | rad | [-pi : pi] | Desired direction of travel over ground w.r.t (true) North. Set by guidance law | +| lateral_acceleration_ff | `float32` | FRD | | lateral acceleration demand only for maintaining curvature | +| bearing_feas | `float32` | | [0 : 1] | bearing feasibility | +| bearing_feas_on_track | `float32` | | [0 : 1] | on-track bearing feasibility | +| signed_track_error | `float32` | m | | signed track error | +| track_error_bound | `float32` | m | | track error bound | +| adapted_period | `float32` | s | | adapted period (if auto-tuning enabled) | +| wind_est_valid | `uint8` | boolean | | true = wind estimate is valid and/or being used by controller (also indicates if wind estimate usage is disabled despite being valid) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingLateralGuidanceStatus.msg) + +:::details +Click here to see original file ```c # Fixed Wing Lateral Guidance Status message @@ -19,5 +43,6 @@ float32 signed_track_error # [m] signed track error float32 track_error_bound # [m] track error bound float32 adapted_period # [s] adapted period (if auto-tuning enabled) uint8 wind_est_valid # [boolean] true = wind estimate is valid and/or being used by controller (also indicates if wind estimate usage is disabled despite being valid) - ``` + +::: diff --git a/docs/ko/msg_docs/FixedWingLateralSetpoint.md b/docs/ko/msg_docs/FixedWingLateralSetpoint.md index 153167bb62..c0ecdb3a9e 100644 --- a/docs/ko/msg_docs/FixedWingLateralSetpoint.md +++ b/docs/ko/msg_docs/FixedWingLateralSetpoint.md @@ -1,10 +1,34 @@ +--- +pageClass: is-wide-page +--- + # FixedWingLateralSetpoint (UORB message) -Fixed Wing Lateral Setpoint message -Used by the fw_lateral_longitudinal_control module -At least one of course, airspeed_direction, or lateral_acceleration must be finite. +Fixed Wing Lateral Setpoint message. Used by the fw_lateral_longitudinal_control module. At least one of course, airspeed_direction, or lateral_acceleration must be finite. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/FixedWingLateralSetpoint.msg) +**TOPICS:** fixed_winglateral_setpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| course | `float32` | rad | [-pi : pi] | Desired direction of travel over ground w.r.t (true) North. NAN if not controlled directly. | +| airspeed_direction | `float32` | rad | [-pi : pi] | Desired horizontal angle of airspeed vector w.r.t. (true) North. Same as vehicle heading if in the absence of sideslip. NAN if not controlled directly, takes precedence over course if finite. | +| lateral_acceleration | `float32` | FRD | | Lateral acceleration setpoint. NAN if not controlled directly, used as feedforward if either course setpoint or airspeed_direction is finite. | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/FixedWingLateralSetpoint.msg) + +:::details +Click here to see original file ```c # Fixed Wing Lateral Setpoint message @@ -18,5 +42,6 @@ uint64 timestamp # time since system start (microseconds) float32 course # [rad] [@range -pi, pi] Desired direction of travel over ground w.r.t (true) North. NAN if not controlled directly. float32 airspeed_direction # [rad] [@range -pi, pi] Desired horizontal angle of airspeed vector w.r.t. (true) North. Same as vehicle heading if in the absence of sideslip. NAN if not controlled directly, takes precedence over course if finite. float32 lateral_acceleration # [m/s^2] [FRD] Lateral acceleration setpoint. NAN if not controlled directly, used as feedforward if either course setpoint or airspeed_direction is finite. - ``` + +::: diff --git a/docs/ko/msg_docs/FixedWingLateralStatus.md b/docs/ko/msg_docs/FixedWingLateralStatus.md index 9214d1e9e0..442146c4d8 100644 --- a/docs/ko/msg_docs/FixedWingLateralStatus.md +++ b/docs/ko/msg_docs/FixedWingLateralStatus.md @@ -1,9 +1,27 @@ +--- +pageClass: is-wide-page +--- + # FixedWingLateralStatus (UORB message) -Fixed Wing Lateral Status message -Published by the fw_lateral_longitudinal_control module to report the resultant lateral setpoint +Fixed Wing Lateral Status message. Published by the fw_lateral_longitudinal_control module to report the resultant lateral setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingLateralStatus.msg) +**TOPICS:** fixed_winglateral_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lateral_acceleration_setpoint | `float32` | FRD | | resultant lateral acceleration setpoint | +| can_run_factor | `float32` | norm | [0 : 1] | estimate of certainty of the correct functionality of the npfg roll setpoint | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingLateralStatus.msg) + +:::details +Click here to see original file ```c # Fixed Wing Lateral Status message @@ -13,5 +31,6 @@ uint64 timestamp # time since system start (microseconds float32 lateral_acceleration_setpoint # [m/s^2] [FRD] resultant lateral acceleration setpoint float32 can_run_factor # [norm] [@range 0, 1] estimate of certainty of the correct functionality of the npfg roll setpoint - ``` + +::: diff --git a/docs/ko/msg_docs/FixedWingLongitudinalSetpoint.md b/docs/ko/msg_docs/FixedWingLongitudinalSetpoint.md index 6b8fb29e5b..2ba24c7f5f 100644 --- a/docs/ko/msg_docs/FixedWingLongitudinalSetpoint.md +++ b/docs/ko/msg_docs/FixedWingLongitudinalSetpoint.md @@ -1,11 +1,36 @@ +--- +pageClass: is-wide-page +--- + # FixedWingLongitudinalSetpoint (UORB message) -Fixed Wing Longitudinal Setpoint message -Used by the fw_lateral_longitudinal_control module -If pitch_direct and throttle_direct are not both finite, then the controller relies on altitude/height_rate and equivalent_airspeed to control vertical motion. -If both altitude and height_rate are NAN, the controller maintains the current altitude. +Fixed Wing Longitudinal Setpoint message. Used by the fw_lateral_longitudinal_control module. If pitch_direct and throttle_direct are not both finite, then the controller relies on altitude/height_rate and equivalent_airspeed to control vertical motion. If both altitude and height_rate are NAN, the controller maintains the current altitude. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/FixedWingLongitudinalSetpoint.msg) +**TOPICS:** fixed_winglongitudinal_setpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| altitude | `float32` | m | | Altitude setpoint AMSL, not controlled directly if NAN or if height_rate is finite | +| height_rate | `float32` | ENU | | Scalar height rate setpoint. NAN if not controlled directly | +| equivalent_airspeed | `float32` | m/s | [0 : inf] | Scalar equivalent airspeed setpoint. NAN if system default should be used | +| pitch_direct | `float32` | FRD | [-pi : pi] | NAN if not controlled, overrides total energy controller | +| throttle_direct | `float32` | norm | [0 : 1] | NAN if not controlled, overrides total energy controller | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/FixedWingLongitudinalSetpoint.msg) + +:::details +Click here to see original file ```c # Fixed Wing Longitudinal Setpoint message @@ -22,5 +47,6 @@ float32 height_rate # [m/s] [ENU] Scalar height rate setpoint. NAN if not con float32 equivalent_airspeed # [m/s] [@range 0, inf] Scalar equivalent airspeed setpoint. NAN if system default should be used float32 pitch_direct # [rad] [@range -pi, pi] [FRD] NAN if not controlled, overrides total energy controller float32 throttle_direct # [norm] [@range 0,1] NAN if not controlled, overrides total energy controller - ``` + +::: diff --git a/docs/ko/msg_docs/FixedWingRunwayControl.md b/docs/ko/msg_docs/FixedWingRunwayControl.md index 9e9f5ff428..b05ac86b18 100644 --- a/docs/ko/msg_docs/FixedWingRunwayControl.md +++ b/docs/ko/msg_docs/FixedWingRunwayControl.md @@ -1,19 +1,54 @@ +--- +pageClass: is-wide-page +--- + # FixedWingRunwayControl (UORB message) -Auxiliary control fields for fixed-wing runway takeoff/landing +Auxiliary control fields for fixed-wing runway takeoff/landing. -Passes information from the FixedWingModeManager to the FixedWingAttitudeController +**TOPICS:** fixed_wingrunway_control -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingRunwayControl.msg) +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | time since system start | +| runway_takeoff_state | `uint8` | | | Current state of runway takeoff state machine | +| wheel_steering_enabled | `bool` | | | Flag that enables the wheel steering. | +| wheel_steering_nudging_rate | `float32` | FRD | [-1 : 1] | Manual wheel nudging, added to controller output. NAN is interpreted as 0. | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------ | ------- | ----- | -------------------------------------------------------------------------------- | +| STATE_THROTTLE_RAMP | `uint8` | 0 | ramping up throttle | +| STATE_CLAMPED_TO_RUNWAY | `uint8` | 1 | clamped to runway, controlling yaw directly (wheel or rudder) | +| STATE_CLIMBOUT | `uint8` | 2 | climbout to safe height before navigation | +| STATE_FLYING | `uint8` | 3 | navigate freely | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FixedWingRunwayControl.msg) + +:::details +Click here to see original file ```c # Auxiliary control fields for fixed-wing runway takeoff/landing -# Passes information from the FixedWingModeManager to the FixedWingAttitudeController +# Passes information from the FixedWingModeManager to the FixedWingAttitudeController (wheel control) and FixedWingLandDetector (takeoff state) uint64 timestamp # [us] time since system start +uint8 STATE_THROTTLE_RAMP = 0 # ramping up throttle +uint8 STATE_CLAMPED_TO_RUNWAY = 1 # clamped to runway, controlling yaw directly (wheel or rudder) +uint8 STATE_CLIMBOUT = 2 # climbout to safe height before navigation +uint8 STATE_FLYING = 3 # navigate freely + +uint8 runway_takeoff_state # Current state of runway takeoff state machine + bool wheel_steering_enabled # Flag that enables the wheel steering. float32 wheel_steering_nudging_rate # [norm] [@range -1, 1] [FRD] Manual wheel nudging, added to controller output. NAN is interpreted as 0. - ``` + +::: diff --git a/docs/ko/msg_docs/FlightPhaseEstimation.md b/docs/ko/msg_docs/FlightPhaseEstimation.md index 51561e39e3..b859adfc27 100644 --- a/docs/ko/msg_docs/FlightPhaseEstimation.md +++ b/docs/ko/msg_docs/FlightPhaseEstimation.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # FlightPhaseEstimation (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FlightPhaseEstimation.msg) +**TOPICS:** flight_phaseestimation + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| flight_phase | `uint8` | | | Estimate of current flight phase | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| --------------------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------- | +| FLIGHT_PHASE_UNKNOWN | `uint8` | 0 | vehicle flight phase is unknown | +| FLIGHT_PHASE_LEVEL | `uint8` | 1 | Vehicle is in level flight | +| FLIGHT_PHASE_DESCEND | `uint8` | 2 | vehicle is in descend | +| FLIGHT_PHASE_CLIMB | `uint8` | 3 | vehicle is climbing | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FlightPhaseEstimation.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +38,6 @@ uint8 FLIGHT_PHASE_UNKNOWN = 0 # vehicle flight phase is unknown uint8 FLIGHT_PHASE_LEVEL = 1 # Vehicle is in level flight uint8 FLIGHT_PHASE_DESCEND = 2 # vehicle is in descend uint8 FLIGHT_PHASE_CLIMB = 3 # vehicle is climbing - ``` + +::: diff --git a/docs/ko/msg_docs/FollowTarget.md b/docs/ko/msg_docs/FollowTarget.md index ae194a6019..34a85fcda4 100644 --- a/docs/ko/msg_docs/FollowTarget.md +++ b/docs/ko/msg_docs/FollowTarget.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # FollowTarget (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTarget.msg) +**TOPICS:** follow_target + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lat | `float64` | | | target position (deg \* 1e7) | +| lon | `float64` | | | target position (deg \* 1e7) | +| alt | `float32` | | | target position | +| vy | `float32` | | | target vel in y | +| vx | `float32` | | | target vel in x | +| vz | `float32` | | | target vel in z | +| est_cap | `uint8` | | | target reporting capabilities | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTarget.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +38,6 @@ float32 vx # target vel in x float32 vz # target vel in z uint8 est_cap # target reporting capabilities - ``` + +::: diff --git a/docs/ko/msg_docs/FollowTargetEstimator.md b/docs/ko/msg_docs/FollowTargetEstimator.md index 00d5760b36..799cab3655 100644 --- a/docs/ko/msg_docs/FollowTargetEstimator.md +++ b/docs/ko/msg_docs/FollowTargetEstimator.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # FollowTargetEstimator (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTargetEstimator.msg) +**TOPICS:** follow_targetestimator + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| last_filter_reset_timestamp | `uint64` | | | time of last filter reset (microseconds) | +| valid | `bool` | | | True if estimator states are okay to be used | +| stale | `bool` | | | True if estimator stopped receiving follow_target messages for some time. The estimate can still be valid, though it might be inaccurate. | +| lat_est | `float64` | | | Estimated target latitude | +| lon_est | `float64` | | | Estimated target longitude | +| alt_est | `float32` | | | Estimated target altitude | +| pos_est | `float32[3]` | | | Estimated target NED position (m) | +| vel_est | `float32[3]` | | | Estimated target NED velocity (m/s) | +| acc_est | `float32[3]` | | | Estimated target NED acceleration (m^2/s) | +| prediction_count | `uint64` | | | | +| fusion_count | `uint64` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTargetEstimator.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -19,5 +47,6 @@ float32[3] acc_est # Estimated target NED acceleration (m^2/s) uint64 prediction_count uint64 fusion_count - ``` + +::: diff --git a/docs/ko/msg_docs/FollowTargetStatus.md b/docs/ko/msg_docs/FollowTargetStatus.md index 99594c5fcb..7fe978c12a 100644 --- a/docs/ko/msg_docs/FollowTargetStatus.md +++ b/docs/ko/msg_docs/FollowTargetStatus.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # FollowTargetStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTargetStatus.msg) +**TOPICS:** follow_targetstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | microseconds | | time since system start | +| tracked_target_course | `float32` | rad | | Tracked target course in NED local frame (North is course zero) | +| follow_angle | `float32` | rad | | Current follow angle setting | +| orbit_angle_setpoint | `float32` | rad | | Current orbit angle setpoint from the smooth trajectory generator | +| angular_rate_setpoint | `float32` | rad/s | | Angular rate commanded from Jerk-limited Orbit Angle trajectory for Orbit Angle | +| desired_position_raw | `float32[3]` | m | | Raw 'idealistic' desired drone position if a drone could teleport from place to places | +| in_emergency_ascent | `bool` | bool | | True when doing emergency ascent (when distance to ground is below safety altitude) | +| gimbal_pitch | `float32` | rad | | Gimbal pitch commanded to track target in the center of the frame | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTargetStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # [microseconds] time since system start @@ -15,5 +39,6 @@ float32[3] desired_position_raw # [m] Raw 'idealistic' desired drone position bool in_emergency_ascent # [bool] True when doing emergency ascent (when distance to ground is below safety altitude) float32 gimbal_pitch # [rad] Gimbal pitch commanded to track target in the center of the frame - ``` + +::: diff --git a/docs/ko/msg_docs/FuelTankStatus.md b/docs/ko/msg_docs/FuelTankStatus.md index f36eaff6dc..82da178157 100644 --- a/docs/ko/msg_docs/FuelTankStatus.md +++ b/docs/ko/msg_docs/FuelTankStatus.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # FuelTankStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FuelTankStatus.msg) +**TOPICS:** fuel_tankstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| maximum_fuel_capacity | `float32` | | | maximum fuel capacity. Must always be provided, either from the driver or a parameter | +| consumed_fuel | `float32` | | | consumed fuel, NaN if not measured. Should not be inferred from the max fuel capacity | +| fuel_consumption_rate | `float32` | | | fuel consumption rate, NaN if not measured | +| percent_remaining | `uint8` | | | percentage of remaining fuel, UINT8_MAX if not provided | +| remaining_fuel | `float32` | | | remaining fuel, NaN if not measured. Should not be inferred from the max fuel capacity | +| fuel_tank_id | `uint8` | | | identifier for the fuel tank. Must match ID of other messages for same fuel system. 0 by default when only a single tank exists | +| fuel_type | `uint32` | | | type of fuel based on MAV_FUEL_TYPE enum. Set to MAV_FUEL_TYPE_UNKNOWN if unknown or it does not fit the provided types | +| temperature | `float32` | | | fuel temperature in Kelvin, NaN if not measured | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| MAV_FUEL_TYPE_UNKNOWN | `uint8` | 0 | fuel type not specified. Fuel levels are normalized (i.e., maximum is 1, and other levels are relative to 1). | +| MAV_FUEL_TYPE_LIQUID | `uint8` | 1 | represents generic liquid fuels, such as gasoline or diesel. Fuel levels are measured in millilitres (ml), and flow rates in millilitres per second (ml/s). | +| MAV_FUEL_TYPE_GAS | `uint8` | 2 | represents a gas fuel, such as hydrogen, methane, or propane. Fuel levels are in kilo-Pascal (kPa), and flow rates are in milliliters per second (ml/s). | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FuelTankStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -20,5 +53,6 @@ uint8 MAV_FUEL_TYPE_LIQUID = 1 # represents generic liquid fuels, such as gasol uint8 MAV_FUEL_TYPE_GAS = 2 # represents a gas fuel, such as hydrogen, methane, or propane. Fuel levels are in kilo-Pascal (kPa), and flow rates are in milliliters per second (ml/s). float32 temperature # fuel temperature in Kelvin, NaN if not measured - ``` + +::: diff --git a/docs/ko/msg_docs/GainCompression.md b/docs/ko/msg_docs/GainCompression.md index e26c1e8fcc..77a96793ab 100644 --- a/docs/ko/msg_docs/GainCompression.md +++ b/docs/ko/msg_docs/GainCompression.md @@ -1,6 +1,26 @@ +--- +pageClass: is-wide-page +--- + # GainCompression (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GainCompression.msg) +**TOPICS:** gain_compression + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------- | +| timestamp | `uint64` | | | Time since system start (microseconds) | +| compression_gains | `float32[3]` | [FRD] | [0 : 1] | Multiplicative gain to modify the output of the controller per axis | +| spectral_damper_hpf | `float32[3]` | [FRD] | | Squared output of spectral damper high-pass filter | +| spectral_damper_out | `float32[3]` | [FRD] | | Spectral damper output squared | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GainCompression.msg) + +:::details +Click here to see original file ```c uint64 timestamp # Time since system start (microseconds) @@ -8,5 +28,6 @@ uint64 timestamp # Time since system start (microseconds) 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 # [-] [@frame FRD] Squared output of spectral damper high-pass filter float32[3] spectral_damper_out # [-] [@frame FRD] Spectral damper output squared - ``` + +::: diff --git a/docs/ko/msg_docs/GeneratorStatus.md b/docs/ko/msg_docs/GeneratorStatus.md index b21bc9852a..838563a7c9 100644 --- a/docs/ko/msg_docs/GeneratorStatus.md +++ b/docs/ko/msg_docs/GeneratorStatus.md @@ -1,6 +1,62 @@ +--- +pageClass: is-wide-page +--- + # GeneratorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeneratorStatus.msg) +**TOPICS:** generator_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| status | `uint64` | | | Status flags | +| battery_current | `float32` | A | | Current into/out of battery. Positive for out. Negative for in. NaN: field not provided. | +| load_current | `float32` | A | | Current going to the UAV. If battery current not available this is the DC current from the generator. Positive for out. Negative for in. NaN: field not provided | +| power_generated | `float32` | W | | The power being generated. NaN: field not provided | +| bus_voltage | `float32` | V | | Voltage of the bus seen at the generator, or battery bus if battery bus is controlled by generator and at a different voltage to main bus. | +| bat_current_setpoint | `float32` | A | | The target battery current. Positive for out. Negative for in. NaN: field not provided | +| runtime | `uint32` | s | | Seconds this generator has run since it was rebooted. UINT32_MAX: field not provided. | +| time_until_maintenance | `int32` | s | | Seconds until this generator requires maintenance. A negative value indicates maintenance is past-due. INT32_MAX: field not provided. | +| generator_speed | `uint16` | rpm | | Speed of electrical generator or alternator. UINT16_MAX: field not provided. | +| rectifier_temperature | `int16` | degC | | The temperature of the rectifier or power converter. INT16_MAX: field not provided. | +| generator_temperature | `int16` | degC | | The temperature of the mechanical motor, fuel cell core or generator. INT16_MAX: field not provided. | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| STATUS_FLAG_OFF | `uint64` | 1 | Generator is off. | +| STATUS_FLAG_READY | `uint64` | 2 | Generator is ready to start generating power. | +| STATUS_FLAG_GENERATING | `uint64` | 4 | Generator is generating power. | +| STATUS_FLAG_CHARGING | `uint64` | 8 | Generator is charging the batteries (generating enough power to charge and provide the load). | +| STATUS_FLAG_REDUCED_POWER | `uint64` | 16 | Generator is operating at a reduced maximum power. | +| STATUS_FLAG_MAXPOWER | `uint64` | 32 | Generator is providing the maximum output. | +| STATUS_FLAG_OVERTEMP_WARNING | `uint64` | 64 | Generator is near the maximum operating temperature, cooling is insufficient. | +| STATUS_FLAG_OVERTEMP_FAULT | `uint64` | 128 | Generator hit the maximum operating temperature and shutdown. | +| STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING | `uint64` | 256 | Power electronics are near the maximum operating temperature, cooling is insufficient. | +| STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT | `uint64` | 512 | Power electronics hit the maximum operating temperature and shutdown. | +| STATUS_FLAG_ELECTRONICS_FAULT | `uint64` | 1024 | Power electronics experienced a fault and shutdown. | +| STATUS_FLAG_POWERSOURCE_FAULT | `uint64` | 2048 | The power source supplying the generator failed e.g. mechanical generator stopped, tether is no longer providing power, solar cell is in shade, hydrogen reaction no longer happening. | +| STATUS_FLAG_COMMUNICATION_WARNING | `uint64` | 4096 | Generator controller having communication problems. | +| STATUS_FLAG_COOLING_WARNING | `uint64` | 8192 | Power electronic or generator cooling system error. | +| STATUS_FLAG_POWER_RAIL_FAULT | `uint64` | 16384 | Generator controller power rail experienced a fault. | +| STATUS_FLAG_OVERCURRENT_FAULT | `uint64` | 32768 | Generator controller exceeded the overcurrent threshold and shutdown to prevent damage. | +| STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT | `uint64` | 65536 | Generator controller detected a high current going into the batteries and shutdown to prevent battery damage. | +| STATUS_FLAG_OVERVOLTAGE_FAULT | `uint64` | 131072 | Generator controller exceeded it's overvoltage threshold and shutdown to prevent it exceeding the voltage rating. | +| STATUS_FLAG_BATTERY_UNDERVOLT_FAULT | `uint64` | 262144 | Batteries are under voltage (generator will not start). | +| STATUS_FLAG_START_INHIBITED | `uint64` | 524288 | Generator start is inhibited by e.g. a safety switch. | +| STATUS_FLAG_MAINTENANCE_REQUIRED | `uint64` | 1048576 | Generator requires maintenance. | +| STATUS_FLAG_WARMING_UP | `uint64` | 2097152 | Generator is not ready to generate yet. | +| STATUS_FLAG_IDLE | `uint64` | 4194304 | Generator is idle. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeneratorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -47,5 +103,6 @@ uint16 generator_speed # [rpm] Speed of electrical generator or alte int16 rectifier_temperature # [degC] The temperature of the rectifier or power converter. INT16_MAX: field not provided. int16 generator_temperature # [degC] The temperature of the mechanical motor, fuel cell core or generator. INT16_MAX: field not provided. - ``` + +::: diff --git a/docs/ko/msg_docs/GeofenceResult.md b/docs/ko/msg_docs/GeofenceResult.md index 1259594be7..f6c650b707 100644 --- a/docs/ko/msg_docs/GeofenceResult.md +++ b/docs/ko/msg_docs/GeofenceResult.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # GeofenceResult (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeofenceResult.msg) +**TOPICS:** geofence_result + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| geofence_max_dist_triggered | `bool` | | | true the check for max distance from Home is triggered | +| geofence_max_alt_triggered | `bool` | | | true the check for max altitude above Home is triggered | +| geofence_custom_fence_triggered | `bool` | | | true the check for custom inclusion/exclusion geofence(s) is triggered | +| geofence_action | `uint8` | | | action to take when the geofence is breached | + +## Constants + +\| Name | Type | Value | Description | +\| ------------------------------------------------------- | ------- | ----- | ------------------------------- | ------ | +\| GF_ACTION_NONE | `uint8` | 0 | no action on geofence violation | +\| GF_ACTION_WARN | `uint8` | 1 | critical mavlink message | +\| GF_ACTION_LOITER | `uint8` | 2 | switch to AUTO | LOITER | +\| GF_ACTION_RTL | `uint8` | 3 | switch to AUTO | RTL | +\| GF_ACTION_TERMINATE | `uint8` | 4 | flight termination | +\| GF_ACTION_LAND | `uint8` | 5 | switch to AUTO | LAND | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeofenceResult.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -16,5 +48,6 @@ bool geofence_max_alt_triggered # true the check for max altitude above Home is bool geofence_custom_fence_triggered # true the check for custom inclusion/exclusion geofence(s) is triggered uint8 geofence_action # action to take when the geofence is breached - ``` + +::: diff --git a/docs/ko/msg_docs/GeofenceStatus.md b/docs/ko/msg_docs/GeofenceStatus.md index 9918290e4d..a12563d15e 100644 --- a/docs/ko/msg_docs/GeofenceStatus.md +++ b/docs/ko/msg_docs/GeofenceStatus.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # GeofenceStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeofenceStatus.msg) +**TOPICS:** geofence_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| geofence_id | `uint32` | | | loaded geofence id | +| status | `uint8` | | | Current geofence status | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| --------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| GF_STATUS_LOADING | `uint8` | 0 | | +| GF_STATUS_READY | `uint8` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeofenceStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +36,6 @@ uint8 status # Current geofence status uint8 GF_STATUS_LOADING = 0 uint8 GF_STATUS_READY = 1 - ``` + +::: diff --git a/docs/ko/msg_docs/GimbalControls.md b/docs/ko/msg_docs/GimbalControls.md index bc8408cffa..2757e77784 100644 --- a/docs/ko/msg_docs/GimbalControls.md +++ b/docs/ko/msg_docs/GimbalControls.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # GimbalControls (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalControls.msg) +**TOPICS:** gimbal_controls + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp the data this control response is based on was sampled | +| control | `float32[3]` | | | Normalized output. 1 means maximum positive position. -1 maximum negative position. 0 means no deflection. NaN maps to disarmed. | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------ | ------- | ----- | -- | +| INDEX_ROLL | `uint8` | 0 | | +| INDEX_PITCH | `uint8` | 1 | | +| INDEX_YAW | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalControls.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,6 +36,7 @@ uint8 INDEX_PITCH = 1 uint8 INDEX_YAW = 2 uint64 timestamp_sample # the timestamp the data this control response is based on was sampled -float32[3] control - +float32[3] control # Normalized output. 1 means maximum positive position. -1 maximum negative position. 0 means no deflection. NaN maps to disarmed. ``` + +::: diff --git a/docs/ko/msg_docs/GimbalDeviceAttitudeStatus.md b/docs/ko/msg_docs/GimbalDeviceAttitudeStatus.md index 0935029087..83ee93aa44 100644 --- a/docs/ko/msg_docs/GimbalDeviceAttitudeStatus.md +++ b/docs/ko/msg_docs/GimbalDeviceAttitudeStatus.md @@ -1,6 +1,47 @@ +--- +pageClass: is-wide-page +--- + # GimbalDeviceAttitudeStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceAttitudeStatus.msg) +**TOPICS:** gimbal_deviceattitude_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| target_system | `uint8` | | | | +| target_component | `uint8` | | | | +| device_flags | `uint16` | | | | +| q | `float32[4]` | | | | +| angular_velocity_x | `float32` | | | | +| angular_velocity_y | `float32` | | | | +| angular_velocity_z | `float32` | | | | +| failure_flags | `uint32` | | | | +| delta_yaw | `float32` | | | | +| delta_yaw_velocity | `float32` | | | | +| gimbal_device_id | `uint8` | | | | +| received_from_mavlink | `bool` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| DEVICE_FLAGS_RETRACT | `uint16` | 1 | | +| DEVICE_FLAGS_NEUTRAL | `uint16` | 2 | | +| DEVICE_FLAGS_ROLL_LOCK | `uint16` | 4 | | +| DEVICE_FLAGS_PITCH_LOCK | `uint16` | 8 | | +| DEVICE_FLAGS_YAW_LOCK | `uint16` | 16 | | +| DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME | `uint16` | 32 | | +| DEVICE_FLAGS_YAW_IN_EARTH_FRAME | `uint16` | 64 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceAttitudeStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -29,5 +70,6 @@ float32 delta_yaw_velocity uint8 gimbal_device_id bool received_from_mavlink - ``` + +::: diff --git a/docs/ko/msg_docs/GimbalDeviceInformation.md b/docs/ko/msg_docs/GimbalDeviceInformation.md index d06837a049..19b6db7b88 100644 --- a/docs/ko/msg_docs/GimbalDeviceInformation.md +++ b/docs/ko/msg_docs/GimbalDeviceInformation.md @@ -1,6 +1,55 @@ +--- +pageClass: is-wide-page +--- + # GimbalDeviceInformation (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceInformation.msg) +**TOPICS:** gimbal_deviceinformation + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| vendor_name | `uint8[32]` | | | | +| model_name | `uint8[32]` | | | | +| custom_name | `uint8[32]` | | | | +| firmware_version | `uint32` | | | | +| hardware_version | `uint32` | | | | +| uid | `uint64` | | | | +| cap_flags | `uint16` | | | | +| custom_cap_flags | `uint16` | | | | +| roll_min | `float32` | rad | | | +| roll_max | `float32` | rad | | | +| pitch_min | `float32` | rad | | | +| pitch_max | `float32` | rad | | | +| yaw_min | `float32` | rad | | | +| yaw_max | `float32` | rad | | | +| gimbal_device_id | `uint8` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT | `uint32` | 1 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS | `uint32` | 4 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW | `uint32` | 8 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK | `uint32` | 16 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS | `uint32` | 32 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW | `uint32` | 64 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK | `uint32` | 128 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS | `uint32` | 256 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW | `uint32` | 512 | | +| GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK | `uint32` | 1024 | | +| GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW | `uint32` | 2048 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceInformation.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -39,5 +88,6 @@ float32 yaw_min # [rad] float32 yaw_max # [rad] uint8 gimbal_device_id - ``` + +::: diff --git a/docs/ko/msg_docs/GimbalDeviceSetAttitude.md b/docs/ko/msg_docs/GimbalDeviceSetAttitude.md index d47cdf4689..4ddac878bb 100644 --- a/docs/ko/msg_docs/GimbalDeviceSetAttitude.md +++ b/docs/ko/msg_docs/GimbalDeviceSetAttitude.md @@ -1,6 +1,40 @@ +--- +pageClass: is-wide-page +--- + # GimbalDeviceSetAttitude (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceSetAttitude.msg) +**TOPICS:** gimbal_deviceset_attitude + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| target_system | `uint8` | | | | +| target_component | `uint8` | | | | +| flags | `uint16` | | | | +| q | `float32[4]` | | | | +| angular_velocity_x | `float32` | | | | +| angular_velocity_y | `float32` | | | | +| angular_velocity_z | `float32` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| GIMBAL_DEVICE_FLAGS_RETRACT | `uint32` | 1 | | +| GIMBAL_DEVICE_FLAGS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_DEVICE_FLAGS_ROLL_LOCK | `uint32` | 4 | | +| GIMBAL_DEVICE_FLAGS_PITCH_LOCK | `uint32` | 8 | | +| GIMBAL_DEVICE_FLAGS_YAW_LOCK | `uint32` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceSetAttitude.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -20,5 +54,6 @@ float32[4] q float32 angular_velocity_x float32 angular_velocity_y float32 angular_velocity_z - ``` + +::: diff --git a/docs/ko/msg_docs/GimbalManagerInformation.md b/docs/ko/msg_docs/GimbalManagerInformation.md index fab5d6a87e..bbc7286498 100644 --- a/docs/ko/msg_docs/GimbalManagerInformation.md +++ b/docs/ko/msg_docs/GimbalManagerInformation.md @@ -1,6 +1,50 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerInformation (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerInformation.msg) +**TOPICS:** gimbal_managerinformation + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| cap_flags | `uint32` | | | | +| gimbal_device_id | `uint8` | | | | +| roll_min | `float32` | rad | | | +| roll_max | `float32` | rad | | | +| pitch_min | `float32` | rad | | | +| pitch_max | `float32` | rad | | | +| yaw_min | `float32` | rad | | | +| yaw_max | `float32` | rad | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------ | -- | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT | `uint32` | 1 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS | `uint32` | 4 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW | `uint32` | 8 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK | `uint32` | 16 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS | `uint32` | 32 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW | `uint32` | 64 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK | `uint32` | 128 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS | `uint32` | 256 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW | `uint32` | 512 | | +| GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK | `uint32` | 1024 | | +| GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW | `uint32` | 2048 | | +| GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL | `uint32` | 65536 | | +| GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL | `uint32` | 131072 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerInformation.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -32,5 +76,6 @@ float32 pitch_max # [rad] float32 yaw_min # [rad] float32 yaw_max # [rad] - ``` + +::: diff --git a/docs/ko/msg_docs/GimbalManagerSetAttitude.md b/docs/ko/msg_docs/GimbalManagerSetAttitude.md index 1415f34b42..538cb79b54 100644 --- a/docs/ko/msg_docs/GimbalManagerSetAttitude.md +++ b/docs/ko/msg_docs/GimbalManagerSetAttitude.md @@ -1,6 +1,44 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerSetAttitude (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerSetAttitude.msg) +**TOPICS:** gimbal_managerset_attitude + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| origin_sysid | `uint8` | | | | +| origin_compid | `uint8` | | | | +| target_system | `uint8` | | | | +| target_component | `uint8` | | | | +| flags | `uint32` | | | | +| gimbal_device_id | `uint8` | | | | +| q | `float32[4]` | | | | +| angular_velocity_x | `float32` | | | | +| angular_velocity_y | `float32` | | | | +| angular_velocity_z | `float32` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| GIMBAL_MANAGER_FLAGS_RETRACT | `uint32` | 1 | | +| GIMBAL_MANAGER_FLAGS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_MANAGER_FLAGS_ROLL_LOCK | `uint32` | 4 | | +| GIMBAL_MANAGER_FLAGS_PITCH_LOCK | `uint32` | 8 | | +| GIMBAL_MANAGER_FLAGS_YAW_LOCK | `uint32` | 16 | | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerSetAttitude.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -27,5 +65,6 @@ float32 angular_velocity_y float32 angular_velocity_z uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/ko/msg_docs/GimbalManagerSetManualControl.md b/docs/ko/msg_docs/GimbalManagerSetManualControl.md index 10ec822415..b3bca540a0 100644 --- a/docs/ko/msg_docs/GimbalManagerSetManualControl.md +++ b/docs/ko/msg_docs/GimbalManagerSetManualControl.md @@ -1,6 +1,43 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerSetManualControl (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerSetManualControl.msg) +**TOPICS:** gimbal_managerset_manualcontrol + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| origin_sysid | `uint8` | | | | +| origin_compid | `uint8` | | | | +| target_system | `uint8` | | | | +| target_component | `uint8` | | | | +| flags | `uint32` | | | | +| gimbal_device_id | `uint8` | | | | +| pitch | `float32` | | | unitless -1..1, can be NAN | +| yaw | `float32` | | | unitless -1..1, can be NAN | +| pitch_rate | `float32` | | | unitless -1..1, can be NAN | +| yaw_rate | `float32` | | | unitless -1..1, can be NAN | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| GIMBAL_MANAGER_FLAGS_RETRACT | `uint32` | 1 | | +| GIMBAL_MANAGER_FLAGS_NEUTRAL | `uint32` | 2 | | +| GIMBAL_MANAGER_FLAGS_ROLL_LOCK | `uint32` | 4 | | +| GIMBAL_MANAGER_FLAGS_PITCH_LOCK | `uint32` | 8 | | +| GIMBAL_MANAGER_FLAGS_YAW_LOCK | `uint32` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerSetManualControl.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -24,5 +61,6 @@ float32 pitch # unitless -1..1, can be NAN float32 yaw # unitless -1..1, can be NAN float32 pitch_rate # unitless -1..1, can be NAN float32 yaw_rate # unitless -1..1, can be NAN - ``` + +::: diff --git a/docs/ko/msg_docs/GimbalManagerStatus.md b/docs/ko/msg_docs/GimbalManagerStatus.md index 317e1d3538..a664c44f05 100644 --- a/docs/ko/msg_docs/GimbalManagerStatus.md +++ b/docs/ko/msg_docs/GimbalManagerStatus.md @@ -1,6 +1,29 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerStatus.msg) +**TOPICS:** gimbal_managerstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| flags | `uint32` | | | | +| gimbal_device_id | `uint8` | | | | +| primary_control_sysid | `uint8` | | | | +| primary_control_compid | `uint8` | | | | +| secondary_control_sysid | `uint8` | | | | +| secondary_control_compid | `uint8` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +34,6 @@ uint8 primary_control_sysid uint8 primary_control_compid uint8 secondary_control_sysid uint8 secondary_control_compid - ``` + +::: diff --git a/docs/ko/msg_docs/GotoSetpoint.md b/docs/ko/msg_docs/GotoSetpoint.md index 746d15eb00..eca8aaf6cf 100644 --- a/docs/ko/msg_docs/GotoSetpoint.md +++ b/docs/ko/msg_docs/GotoSetpoint.md @@ -1,13 +1,40 @@ +--- +pageClass: is-wide-page +--- + # GotoSetpoint (UORB message) -Position and (optional) heading setpoints with corresponding speed constraints -Setpoints are intended as inputs to position and heading smoothers, respectively -Setpoints do not need to be kinematically consistent -Optional heading setpoints may be specified as controlled by the respective flag -Unset optional setpoints are not controlled -Unset optional constraints default to vehicle specifications +Position and (optional) heading setpoints with corresponding speed constraints. Setpoints are intended as inputs to position and heading smoothers, respectively. Setpoints do not need to be kinematically consistent. Optional heading setpoints may be specified as controlled by the respective flag. Unset optional setpoints are not controlled. Unset optional constraints default to vehicle specifications. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/GotoSetpoint.msg) +**TOPICS:** goto_setpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| position | `float32[3]` | m | | NED local world frame | +| flag_control_heading | `bool` | | | true if heading is to be controlled | +| heading | `float32` | | | (optional) [rad] [-pi,pi] from North | +| flag_set_max_horizontal_speed | `bool` | | | true if setting a non-default horizontal speed limit | +| max_horizontal_speed | `float32` | | | (optional) [m/s] maximum speed (absolute) in the NE-plane | +| flag_set_max_vertical_speed | `bool` | | | true if setting a non-default vertical speed limit | +| max_vertical_speed | `float32` | | | (optional) [m/s] maximum speed (absolute) in the D-axis | +| flag_set_max_heading_rate | `bool` | | | true if setting a non-default heading rate limit | +| max_heading_rate | `float32` | | | (optional) [rad/s] maximum heading rate (absolute) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/GotoSetpoint.msg) + +:::details +Click here to see original file ```c # Position and (optional) heading setpoints with corresponding speed constraints @@ -36,5 +63,6 @@ float32 max_vertical_speed # (optional) [m/s] maximum speed (absolute) in the D- bool flag_set_max_heading_rate # true if setting a non-default heading rate limit float32 max_heading_rate # (optional) [rad/s] maximum heading rate (absolute) - ``` + +::: diff --git a/docs/ko/msg_docs/GpioConfig.md b/docs/ko/msg_docs/GpioConfig.md index 0d21b3ce66..fba68b892d 100644 --- a/docs/ko/msg_docs/GpioConfig.md +++ b/docs/ko/msg_docs/GpioConfig.md @@ -1,8 +1,45 @@ +--- +pageClass: is-wide-page +--- + # GpioConfig (UORB message) -GPIO configuration +GPIO configuration. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioConfig.msg) +**TOPICS:** gpio_config + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | Device id | +| mask | `uint32` | | | Pin mask | +| state | `uint32` | | | Initial pin output state | +| config | `uint32` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ---------------------------------------------------------------------------------------------------------- | -------- | ----- | ------ | +| INPUT | `uint32` | 0 | 0x0000 | +| OUTPUT | `uint32` | 1 | 0x0001 | +| PULLUP | `uint32` | 16 | 0x0010 | +| PULLDOWN | `uint32` | 32 | 0x0020 | +| OPENDRAIN | `uint32` | 256 | 0x0100 | +| INPUT_FLOATING | `uint32` | 0 | 0x0000 | +| INPUT_PULLUP | `uint32` | 16 | 0x0010 | +| INPUT_PULLDOWN | `uint32` | 32 | 0x0020 | +| OUTPUT_PUSHPULL | `uint32` | 0 | 0x0000 | +| OUTPUT_OPENDRAIN | `uint32` | 256 | 0x0100 | +| OUTPUT_OPENDRAIN_PULLUP | `uint32` | 272 | 0x0110 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioConfig.msg) + +:::details +Click here to see original file ```c # GPIO configuration @@ -33,5 +70,6 @@ uint32 OUTPUT_OPENDRAIN = 256 # 0x0100 uint32 OUTPUT_OPENDRAIN_PULLUP = 272 # 0x0110 uint32 config - ``` + +::: diff --git a/docs/ko/msg_docs/GpioIn.md b/docs/ko/msg_docs/GpioIn.md index 589e7d7841..5bbaf4ae51 100644 --- a/docs/ko/msg_docs/GpioIn.md +++ b/docs/ko/msg_docs/GpioIn.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # GpioIn (UORB message) -GPIO mask and state +GPIO mask and state. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioIn.msg) +**TOPICS:** gpio_in + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | Device id | +| state | `uint32` | | | pin state mask | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ---------------------------------------------------------------- | ------- | ----- | -- | +| MAX_INSTANCES | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioIn.msg) + +:::details +Click here to see original file ```c # GPIO mask and state @@ -12,5 +37,6 @@ uint64 timestamp # time since system start (microseconds) uint32 device_id # Device id uint32 state # pin state mask - ``` + +::: diff --git a/docs/ko/msg_docs/GpioOut.md b/docs/ko/msg_docs/GpioOut.md index fd77f0be3b..ae09019de4 100644 --- a/docs/ko/msg_docs/GpioOut.md +++ b/docs/ko/msg_docs/GpioOut.md @@ -1,8 +1,28 @@ +--- +pageClass: is-wide-page +--- + # GpioOut (UORB message) -GPIO mask and state +GPIO mask and state. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioOut.msg) +**TOPICS:** gpio_out + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | Device id | +| mask | `uint32` | | | pin mask | +| state | `uint32` | | | pin state mask | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioOut.msg) + +:::details +Click here to see original file ```c # GPIO mask and state @@ -12,5 +32,6 @@ uint32 device_id # Device id uint32 mask # pin mask uint32 state # pin state mask - ``` + +::: diff --git a/docs/ko/msg_docs/GpioRequest.md b/docs/ko/msg_docs/GpioRequest.md index 027b84c685..20f323a774 100644 --- a/docs/ko/msg_docs/GpioRequest.md +++ b/docs/ko/msg_docs/GpioRequest.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # GpioRequest (UORB message) -Request GPIO mask to be read +Request GPIO mask to be read. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioRequest.msg) +**TOPICS:** gpio_request + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | Device id | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpioRequest.msg) + +:::details +Click here to see original file ```c # Request GPIO mask to be read uint64 timestamp # time since system start (microseconds) uint32 device_id # Device id - ``` + +::: diff --git a/docs/ko/msg_docs/GpsDump.md b/docs/ko/msg_docs/GpsDump.md index 03910da906..a0afd2f854 100644 --- a/docs/ko/msg_docs/GpsDump.md +++ b/docs/ko/msg_docs/GpsDump.md @@ -1,8 +1,37 @@ +--- +pageClass: is-wide-page +--- + # GpsDump (UORB message) This message is used to dump the raw gps communication to the log. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpsDump.msg) +**TOPICS:** gps_dump + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------ | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| instance | `uint8` | | | Instance of GNSS receiver | +| device_id | `uint32` | | | | +| len | `uint8` | | | length of data, MSB bit set = message to the gps device, | +| data | `uint8[79]` | | | data to write to the log | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| INSTANCE_MAIN | `uint8` | 0 | | +| INSTANCE_SECONDARY | `uint8` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpsDump.msg) + +:::details +Click here to see original file ```c # This message is used to dump the raw gps communication to the log. @@ -19,5 +48,6 @@ uint8 len # length of data, MSB bit set = message to the gps device, uint8[79] data # data to write to the log uint8 ORB_QUEUE_LENGTH = 16 - ``` + +::: diff --git a/docs/ko/msg_docs/GpsInjectData.md b/docs/ko/msg_docs/GpsInjectData.md index 2eda49d0c4..041afba713 100644 --- a/docs/ko/msg_docs/GpsInjectData.md +++ b/docs/ko/msg_docs/GpsInjectData.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # GpsInjectData (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpsInjectData.msg) +**TOPICS:** gps_injectdata + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| len | `uint16` | | | length of data | +| flags | `uint8` | | | LSB: 1=fragmented | +| data | `uint8[300]` | | | data to write to GPS device (RTCM message) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | +| MAX_INSTANCES | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpsInjectData.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +42,6 @@ uint8[300] data # data to write to GPS device (RTCM message) uint8 ORB_QUEUE_LENGTH = 8 uint8 MAX_INSTANCES = 2 - ``` + +::: diff --git a/docs/ko/msg_docs/Gripper.md b/docs/ko/msg_docs/Gripper.md index eb888e2017..86e1393f8e 100644 --- a/docs/ko/msg_docs/Gripper.md +++ b/docs/ko/msg_docs/Gripper.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # Gripper (UORB message) -# Used to command an actuation in the gripper, which is mapped to a specific output in the control allocation module +# Used to command an actuation in the gripper, which is mapped to a specific output in the control allocation module. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Gripper.msg) +**TOPICS:** gripper + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------- | +| timestamp | `uint64` | | | | +| command | `int8` | | | Commanded state for the gripper | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | ------ | ----- | -- | +| COMMAND_GRAB | `int8` | 0 | | +| COMMAND_RELEASE | `int8` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Gripper.msg) + +:::details +Click here to see original file ```c ## Used to command an actuation in the gripper, which is mapped to a specific output in the control allocation module @@ -12,5 +37,6 @@ uint64 timestamp int8 command # Commanded state for the gripper int8 COMMAND_GRAB = 0 int8 COMMAND_RELEASE = 1 - ``` + +::: diff --git a/docs/ko/msg_docs/HealthReport.md b/docs/ko/msg_docs/HealthReport.md index f69de0b179..9d8eb7ab83 100644 --- a/docs/ko/msg_docs/HealthReport.md +++ b/docs/ko/msg_docs/HealthReport.md @@ -1,6 +1,30 @@ +--- +pageClass: is-wide-page +--- + # HealthReport (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HealthReport.msg) +**TOPICS:** health_report + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| can_arm_mode_flags | `uint64` | | | bitfield for each flight mode (NAVIGATION_STATE_\*) if arming is possible | +| can_run_mode_flags | `uint64` | | | bitfield for each flight mode if it can run | +| health_is_present_flags | `uint64` | | | flags for each health_component_t | +| health_warning_flags | `uint64` | | | | +| health_error_flags | `uint64` | | | | +| arming_check_warning_flags | `uint64` | | | | +| arming_check_error_flags | `uint64` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HealthReport.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -15,5 +39,6 @@ uint64 health_error_flags uint64 arming_check_warning_flags uint64 arming_check_error_flags - ``` + +::: diff --git a/docs/ko/msg_docs/HeaterStatus.md b/docs/ko/msg_docs/HeaterStatus.md index 49194eed01..d587e119d5 100644 --- a/docs/ko/msg_docs/HeaterStatus.md +++ b/docs/ko/msg_docs/HeaterStatus.md @@ -1,6 +1,41 @@ +--- +pageClass: is-wide-page +--- + # HeaterStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HeaterStatus.msg) +**TOPICS:** heater_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | | +| heater_on | `bool` | | | | +| temperature_target_met | `bool` | | | | +| temperature_sensor | `float32` | | | | +| temperature_target | `float32` | | | | +| controller_period_usec | `uint32` | | | | +| controller_time_on_usec | `uint32` | | | | +| proportional_value | `float32` | | | | +| integrator_value | `float32` | | | | +| feed_forward_value | `float32` | | | | +| mode | `uint8` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ---------------------------------------------------------- | ------- | ----- | -- | +| MODE_GPIO | `uint8` | 1 | | +| MODE_PX4IO | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HeaterStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -23,5 +58,6 @@ float32 feed_forward_value uint8 MODE_GPIO = 1 uint8 MODE_PX4IO = 2 uint8 mode - ``` + +::: diff --git a/docs/ko/msg_docs/HomePosition.md b/docs/ko/msg_docs/HomePosition.md index b48528de7e..1dca6ffb41 100644 --- a/docs/ko/msg_docs/HomePosition.md +++ b/docs/ko/msg_docs/HomePosition.md @@ -1,8 +1,45 @@ +--- +pageClass: is-wide-page +--- + # HomePosition (UORB message) GPS home position in WGS84 coordinates. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/HomePosition.msg) +**TOPICS:** home_position + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lat | `float64` | | | Latitude in degrees | +| lon | `float64` | | | Longitude in degrees | +| alt | `float32` | | | Altitude in meters (AMSL) | +| x | `float32` | | | X coordinate in meters | +| y | `float32` | | | Y coordinate in meters | +| z | `float32` | | | Z coordinate in meters | +| roll | `float32` | | | Pitch angle in radians | +| pitch | `float32` | | | Roll angle in radians | +| yaw | `float32` | | | Yaw angle in radians | +| valid_alt | `bool` | | | true when the altitude has been set | +| valid_hpos | `bool` | | | true when the latitude and longitude have been set | +| valid_lpos | `bool` | | | true when the local position (xyz) has been set | +| manual_home | `bool` | | | true when home position was set manually | +| update_count | `uint32` | | | update counter of the home position | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/HomePosition.msg) + +:::details +Click here to see original file ```c # GPS home position in WGS84 coordinates. @@ -30,5 +67,6 @@ bool valid_lpos # true when the local position (xyz) has been set bool manual_home # true when home position was set manually uint32 update_count # update counter of the home position - ``` + +::: diff --git a/docs/ko/msg_docs/HomePositionV0.md b/docs/ko/msg_docs/HomePositionV0.md index 270d752337..8fcde53cb5 100644 --- a/docs/ko/msg_docs/HomePositionV0.md +++ b/docs/ko/msg_docs/HomePositionV0.md @@ -1,8 +1,43 @@ +--- +pageClass: is-wide-page +--- + # HomePositionV0 (UORB message) GPS home position in WGS84 coordinates. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/HomePositionV0.msg) +**TOPICS:** home_positionv0 + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lat | `float64` | | | Latitude in degrees | +| lon | `float64` | | | Longitude in degrees | +| alt | `float32` | | | Altitude in meters (AMSL) | +| x | `float32` | | | X coordinate in meters | +| y | `float32` | | | Y coordinate in meters | +| z | `float32` | | | Z coordinate in meters | +| yaw | `float32` | | | Yaw angle in radians | +| valid_alt | `bool` | | | true when the altitude has been set | +| valid_hpos | `bool` | | | true when the latitude and longitude have been set | +| valid_lpos | `bool` | | | true when the local position (xyz) has been set | +| manual_home | `bool` | | | true when home position was set manually | +| update_count | `uint32` | | | update counter of the home position | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/HomePositionV0.msg) + +:::details +Click here to see original file ```c # GPS home position in WGS84 coordinates. @@ -28,5 +63,6 @@ bool valid_lpos # true when the local position (xyz) has been set bool manual_home # true when home position was set manually uint32 update_count # update counter of the home position - ``` + +::: diff --git a/docs/ko/msg_docs/HoverThrustEstimate.md b/docs/ko/msg_docs/HoverThrustEstimate.md index d84945da58..d39e2dea3d 100644 --- a/docs/ko/msg_docs/HoverThrustEstimate.md +++ b/docs/ko/msg_docs/HoverThrustEstimate.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # HoverThrustEstimate (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HoverThrustEstimate.msg) +**TOPICS:** hover_thrustestimate + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | time of corresponding sensor data last used for this estimate | +| hover_thrust | `float32` | | | estimated hover thrust [0.1, 0.9] | +| hover_thrust_var | `float32` | | | estimated hover thrust variance | +| accel_innov | `float32` | | | innovation of the last acceleration fusion | +| accel_innov_var | `float32` | | | innovation variance of the last acceleration fusion | +| accel_innov_test_ratio | `float32` | | | normalized innovation squared test ratio | +| accel_noise_var | `float32` | | | vertical acceleration noise variance estimated form innovation residual | +| valid | `bool` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HoverThrustEstimate.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -16,5 +41,6 @@ float32 accel_innov_test_ratio # normalized innovation squared test ratio float32 accel_noise_var # vertical acceleration noise variance estimated form innovation residual bool valid - ``` + +::: diff --git a/docs/ko/msg_docs/InputRc.md b/docs/ko/msg_docs/InputRc.md index fbae6e0254..130ad9ada4 100644 --- a/docs/ko/msg_docs/InputRc.md +++ b/docs/ko/msg_docs/InputRc.md @@ -1,6 +1,60 @@ +--- +pageClass: is-wide-page +--- + # InputRc (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InputRc.msg) +**TOPICS:** input_rc + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_last_signal | `uint64` | | | last valid reception time | +| channel_count | `uint8` | | | number of channels actually being seen | +| rssi | `int32` | | | receive signal strength indicator (RSSI): < 0: Undefined, 0: no signal, 100: full reception | +| rc_failsafe | `bool` | | | explicit failsafe flag: true on TX failure or TX out of range , false otherwise. Only the true state is reliable, as there are some (PPM) receivers on the market going into failsafe without telling us explicitly. | +| rc_lost | `bool` | | | RC receiver connection status: True,if no frame has arrived in the expected time, false otherwise. True usually means that the receiver has been disconnected, but can also indicate a radio link loss on "stupid" systems. Will remain false, if a RX with failsafe option continues to transmit frames after a link loss. | +| rc_lost_frame_count | `uint16` | | | 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. | +| rc_total_frame_count | `uint16` | | | 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. | +| rc_ppm_frame_length | `uint16` | | | Length of a single PPM frame. Zero for non-PPM systems | +| rc_frame_rate | `uint16` | | | RC frame rate in msg/second. 0 = invalid | +| input_source | `uint8` | | | Input source | +| values | `uint16[18]` | | | measured pulse widths for each of the supported channels | +| link_quality | `int8` | | | link quality. Percentage 0-100%. -1 = invalid | +| rssi_dbm | `float32` | | | Actual rssi in units of dBm. NaN = invalid | +| link_snr | `int8` | | | link signal to noise ratio in units of dB. -1 = invalid | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | -------------------------------------------------------------------------------------------------------------------------------- | +| RC_INPUT_SOURCE_UNKNOWN | `uint8` | 0 | | +| RC_INPUT_SOURCE_PX4FMU_PPM | `uint8` | 1 | | +| RC_INPUT_SOURCE_PX4IO_PPM | `uint8` | 2 | | +| RC_INPUT_SOURCE_PX4IO_SPEKTRUM | `uint8` | 3 | | +| RC_INPUT_SOURCE_PX4IO_SBUS | `uint8` | 4 | | +| RC_INPUT_SOURCE_PX4IO_ST24 | `uint8` | 5 | | +| RC_INPUT_SOURCE_MAVLINK | `uint8` | 6 | | +| RC_INPUT_SOURCE_QURT | `uint8` | 7 | | +| RC_INPUT_SOURCE_PX4FMU_SPEKTRUM | `uint8` | 8 | | +| RC_INPUT_SOURCE_PX4FMU_SBUS | `uint8` | 9 | | +| RC_INPUT_SOURCE_PX4FMU_ST24 | `uint8` | 10 | | +| RC_INPUT_SOURCE_PX4FMU_SUMD | `uint8` | 11 | | +| RC_INPUT_SOURCE_PX4FMU_DSM | `uint8` | 12 | | +| RC_INPUT_SOURCE_PX4IO_SUMD | `uint8` | 13 | | +| RC_INPUT_SOURCE_PX4FMU_CRSF | `uint8` | 14 | | +| RC_INPUT_SOURCE_PX4FMU_GHST | `uint8` | 15 | | +| RC_INPUT_MAX_CHANNELS | `uint8` | 18 | Maximum number of R/C input channels in the system. S.Bus has up to 18 channels. | +| RSSI_MAX | `int8` | 100 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InputRc.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -45,5 +99,6 @@ 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/ko/msg_docs/InternalCombustionEngineControl.md b/docs/ko/msg_docs/InternalCombustionEngineControl.md index aacacd8973..a7d6822f00 100644 --- a/docs/ko/msg_docs/InternalCombustionEngineControl.md +++ b/docs/ko/msg_docs/InternalCombustionEngineControl.md @@ -1,6 +1,28 @@ +--- +pageClass: is-wide-page +--- + # InternalCombustionEngineControl (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InternalCombustionEngineControl.msg) +**TOPICS:** internal_combustionengine_control + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| ignition_on | `bool` | | | activate/deactivate ignition (spark plug) | +| throttle_control | `float32` | | | setpoint for throttle actuator, with slew rate if enabled, idles with 0 [norm] [@range 0,1] [@uncontrolled NAN to stop motor] | +| choke_control | `float32` | | | setpoint for choke actuator, 1: fully closed [norm] [@range 0,1] | +| starter_engine_control | `float32` | | | setpoint for (electric) starter motor [norm] [@range 0,1] | +| user_request | `uint8` | | | user intent for the ICE being on/off | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InternalCombustionEngineControl.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +33,6 @@ float32 choke_control # setpoint for choke actuator, 1: fully closed [norm] [@ float32 starter_engine_control # setpoint for (electric) starter motor [norm] [@range 0,1] uint8 user_request # user intent for the ICE being on/off - ``` + +::: diff --git a/docs/ko/msg_docs/InternalCombustionEngineStatus.md b/docs/ko/msg_docs/InternalCombustionEngineStatus.md index 2ebb28ef4d..99fc9fae60 100644 --- a/docs/ko/msg_docs/InternalCombustionEngineStatus.md +++ b/docs/ko/msg_docs/InternalCombustionEngineStatus.md @@ -1,6 +1,78 @@ +--- +pageClass: is-wide-page +--- + # InternalCombustionEngineStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InternalCombustionEngineStatus.msg) +**TOPICS:** internal_combustionengine_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| state | `uint8` | | | | +| flags | `uint32` | | | | +| engine_load_percent | `uint8` | | | Engine load estimate, percent, [0, 127] | +| engine_speed_rpm | `uint32` | | | Engine speed, revolutions per minute | +| spark_dwell_time_ms | `float32` | | | Spark dwell time, millisecond | +| atmospheric_pressure_kpa | `float32` | | | Atmospheric (barometric) pressure, kilopascal | +| intake_manifold_pressure_kpa | `float32` | | | Engine intake manifold pressure, kilopascal | +| intake_manifold_temperature | `float32` | | | Engine intake manifold temperature, kelvin | +| coolant_temperature | `float32` | | | Engine coolant temperature, kelvin | +| oil_pressure | `float32` | | | Oil pressure, kilopascal | +| oil_temperature | `float32` | | | Oil temperature, kelvin | +| fuel_pressure | `float32` | | | Fuel pressure, kilopascal | +| fuel_consumption_rate_cm3pm | `float32` | | | Instant fuel consumption estimate, (centimeter^3)/minute | +| estimated_consumed_fuel_volume_cm3 | `float32` | | | Estimate of the consumed fuel since the start of the engine, centimeter^3 | +| throttle_position_percent | `uint8` | | | Throttle position, percent | +| ecu_index | `uint8` | | | The index of the publishing ECU | +| spark_plug_usage | `uint8` | | | Spark plug activity report. | +| ignition_timing_deg | `float32` | | | Cylinder ignition timing, angular degrees of the crankshaft | +| injection_time_ms | `float32` | | | Fuel injection time, millisecond | +| cylinder_head_temperature | `float32` | | | Cylinder head temperature (CHT), kelvin | +| exhaust_gas_temperature | `float32` | | | Exhaust gas temperature (EGT), kelvin | +| lambda_coefficient | `float32` | | | Estimated lambda coefficient, dimensionless ratio | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------ | -------------------------------------------------------------------------------------- | +| STATE_STOPPED | `uint8` | 0 | The engine is not running. This is the default state. | +| STATE_STARTING | `uint8` | 1 | The engine is starting. This is a transient state. | +| STATE_RUNNING | `uint8` | 2 | The engine is running normally. | +| STATE_FAULT | `uint8` | 3 | The engine can no longer function. | +| FLAG_GENERAL_ERROR | `uint32` | 1 | General error. | +| FLAG_CRANKSHAFT_SENSOR_ERROR_SUPPORTED | `uint32` | 2 | Error of the crankshaft sensor. This flag is optional. | +| FLAG_CRANKSHAFT_SENSOR_ERROR | `uint32` | 4 | | +| FLAG_TEMPERATURE_SUPPORTED | `uint32` | 8 | Temperature levels. These flags are optional | +| FLAG_TEMPERATURE_BELOW_NOMINAL | `uint32` | 16 | Under-temperature warning | +| FLAG_TEMPERATURE_ABOVE_NOMINAL | `uint32` | 32 | Over-temperature warning | +| FLAG_TEMPERATURE_OVERHEATING | `uint32` | 64 | Critical overheating | +| FLAG_TEMPERATURE_EGT_ABOVE_NOMINAL | `uint32` | 128 | Exhaust gas over-temperature warning | +| FLAG_FUEL_PRESSURE_SUPPORTED | `uint32` | 256 | Fuel pressure. These flags are optional | +| FLAG_FUEL_PRESSURE_BELOW_NOMINAL | `uint32` | 512 | Under-pressure warning | +| FLAG_FUEL_PRESSURE_ABOVE_NOMINAL | `uint32` | 1024 | Over-pressure warning | +| FLAG_DETONATION_SUPPORTED | `uint32` | 2048 | Detonation warning. This flag is optional. | +| FLAG_DETONATION_OBSERVED | `uint32` | 4096 | Detonation condition observed warning | +| FLAG_MISFIRE_SUPPORTED | `uint32` | 8192 | Misfire warning. This flag is optional. | +| FLAG_MISFIRE_OBSERVED | `uint32` | 16384 | Misfire condition observed warning | +| FLAG_OIL_PRESSURE_SUPPORTED | `uint32` | 32768 | Oil pressure. These flags are optional | +| FLAG_OIL_PRESSURE_BELOW_NOMINAL | `uint32` | 65536 | Under-pressure warning | +| FLAG_OIL_PRESSURE_ABOVE_NOMINAL | `uint32` | 131072 | Over-pressure warning | +| FLAG_DEBRIS_SUPPORTED | `uint32` | 262144 | Debris warning. This flag is optional | +| FLAG_DEBRIS_DETECTED | `uint32` | 524288 | Detection of debris warning | +| SPARK_PLUG_SINGLE | `uint8` | 0 | | +| SPARK_PLUG_FIRST_ACTIVE | `uint8` | 1 | | +| SPARK_PLUG_SECOND_ACTIVE | `uint8` | 2 | | +| SPARK_PLUG_BOTH_ACTIVE | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InternalCombustionEngineStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -67,5 +139,6 @@ float32 injection_time_ms # Fuel injection time, millisecond float32 cylinder_head_temperature # Cylinder head temperature (CHT), kelvin float32 exhaust_gas_temperature # Exhaust gas temperature (EGT), kelvin float32 lambda_coefficient # Estimated lambda coefficient, dimensionless ratio - ``` + +::: diff --git a/docs/ko/msg_docs/IridiumsbdStatus.md b/docs/ko/msg_docs/IridiumsbdStatus.md index 07355178c9..f762ba1fb8 100644 --- a/docs/ko/msg_docs/IridiumsbdStatus.md +++ b/docs/ko/msg_docs/IridiumsbdStatus.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # IridiumsbdStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/IridiumsbdStatus.msg) +**TOPICS:** iridiumsbd_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| last_at_ok_timestamp | `uint64` | | | timestamp of the last "OK" received after the "AT" command | +| tx_buf_write_index | `uint16` | | | current size of the tx buffer | +| rx_buf_read_index | `uint16` | | | the rx buffer is parsed up to that index | +| rx_buf_end_index | `uint16` | | | current size of the rx buffer | +| failed_sbd_sessions | `uint16` | | | number of failed sbd sessions | +| successful_sbd_sessions | `uint16` | | | number of successful sbd sessions | +| num_tx_buf_reset | `uint16` | | | number of times the tx buffer was reset | +| signal_quality | `uint8` | | | current signal quality, 0 is no signal, 5 the best | +| state | `uint8` | | | current state of the driver, see the satcom_state of IridiumSBD.h for the definition | +| ring_pending | `bool` | | | indicates if a ring call is pending | +| tx_buf_write_pending | `bool` | | | indicates if a tx buffer write is pending | +| tx_session_pending | `bool` | | | indicates if a tx session is pending | +| rx_read_pending | `bool` | | | indicates if a rx read is pending | +| rx_session_pending | `bool` | | | indicates if a rx session is pending | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/IridiumsbdStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +49,6 @@ bool tx_buf_write_pending # indicates if a tx buffer write is pending bool tx_session_pending # indicates if a tx session is pending bool rx_read_pending # indicates if a rx read is pending bool rx_session_pending # indicates if a rx session is pending - ``` + +::: diff --git a/docs/ko/msg_docs/IrlockReport.md b/docs/ko/msg_docs/IrlockReport.md index d850a0bb1e..9a437b1354 100644 --- a/docs/ko/msg_docs/IrlockReport.md +++ b/docs/ko/msg_docs/IrlockReport.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # IrlockReport (UORB message) -IRLOCK_REPORT message data +IRLOCK_REPORT message data. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/IrlockReport.msg) +**TOPICS:** irlock_report + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| signature | `uint16` | | | | +| pos_x | `float32` | | | tan(theta), where theta is the angle between the target and the camera center of projection in camera x-axis | +| pos_y | `float32` | | | tan(theta), where theta is the angle between the target and the camera center of projection in camera y-axis | +| size_x | `float32` | | | /\*\* size of target along camera x-axis in units of tan(theta) \*\*/ | +| size_y | `float32` | | | /\*\* size of target along camera y-axis in units of tan(theta) \*\*/ | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/IrlockReport.msg) + +:::details +Click here to see original file ```c # IRLOCK_REPORT message data @@ -16,5 +38,6 @@ float32 pos_x # tan(theta), where theta is the angle between the target and the float32 pos_y # tan(theta), where theta is the angle between the target and the camera center of projection in camera y-axis float32 size_x #/** size of target along camera x-axis in units of tan(theta) **/ float32 size_y #/** size of target along camera y-axis in units of tan(theta) **/ - ``` + +::: diff --git a/docs/ko/msg_docs/LandingGear.md b/docs/ko/msg_docs/LandingGear.md index 25e803e461..3781f1816e 100644 --- a/docs/ko/msg_docs/LandingGear.md +++ b/docs/ko/msg_docs/LandingGear.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # LandingGear (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingGear.msg) +**TOPICS:** landing_gear + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| landing_gear | `int8` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------- | ------ | ----- | ---------------------- | +| GEAR_UP | `int8` | 1 | landing gear up | +| GEAR_DOWN | `int8` | -1 | landing gear down | +| GEAR_KEEP | `int8` | 0 | keep the current state | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingGear.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +36,6 @@ int8 GEAR_DOWN = -1 # landing gear down int8 GEAR_KEEP = 0 # keep the current state int8 landing_gear - ``` + +::: diff --git a/docs/ko/msg_docs/LandingGearWheel.md b/docs/ko/msg_docs/LandingGearWheel.md index 74da2943fd..a815e88f5f 100644 --- a/docs/ko/msg_docs/LandingGearWheel.md +++ b/docs/ko/msg_docs/LandingGearWheel.md @@ -1,10 +1,29 @@ +--- +pageClass: is-wide-page +--- + # LandingGearWheel (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingGearWheel.msg) +**TOPICS:** landing_gearwheel + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| normalized_wheel_setpoint | `float32` | | | negative is turning left, positive turning right [-1, 1] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingGearWheel.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) float32 normalized_wheel_setpoint # negative is turning left, positive turning right [-1, 1] - ``` + +::: diff --git a/docs/ko/msg_docs/LandingTargetInnovations.md b/docs/ko/msg_docs/LandingTargetInnovations.md index 9c896092e3..e82715c4a9 100644 --- a/docs/ko/msg_docs/LandingTargetInnovations.md +++ b/docs/ko/msg_docs/LandingTargetInnovations.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # LandingTargetInnovations (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingTargetInnovations.msg) +**TOPICS:** landing_targetinnovations + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| innov_x | `float32` | | | | +| innov_y | `float32` | | | | +| innov_cov_x | `float32` | | | | +| innov_cov_y | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingTargetInnovations.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +32,6 @@ float32 innov_y # Innovation covariance of landing target position estimator float32 innov_cov_x float32 innov_cov_y - ``` + +::: diff --git a/docs/ko/msg_docs/LandingTargetPose.md b/docs/ko/msg_docs/LandingTargetPose.md index b4a76aeda7..404e715203 100644 --- a/docs/ko/msg_docs/LandingTargetPose.md +++ b/docs/ko/msg_docs/LandingTargetPose.md @@ -1,8 +1,41 @@ +--- +pageClass: is-wide-page +--- + # LandingTargetPose (UORB message) -Relative position of precision land target in navigation (body fixed, north aligned, NED) and inertial (world fixed, north aligned, NED) frames +Relative position of precision land target in navigation (body fixed, north aligned, NED) and inertial (world fixed, north aligned, NED) frames. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingTargetPose.msg) +**TOPICS:** landing_targetpose + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| is_static | `bool` | | | Flag indicating whether the landing target is static or moving with respect to the ground | +| rel_pos_valid | `bool` | | | Flag showing whether relative position is valid | +| rel_vel_valid | `bool` | | | Flag showing whether relative velocity is valid | +| x_rel | `float32` | | | X/north position of target, relative to vehicle (navigation frame) [meters] | +| y_rel | `float32` | | | Y/east position of target, relative to vehicle (navigation frame) [meters] | +| z_rel | `float32` | | | Z/down position of target, relative to vehicle (navigation frame) [meters] | +| vx_rel | `float32` | | | X/north velocity of target, relative to vehicle (navigation frame) [meters/second] | +| vy_rel | `float32` | | | Y/east velocity of target, relative to vehicle (navigation frame) [meters/second] | +| cov_x_rel | `float32` | | | X/north position variance [meters^2] | +| cov_y_rel | `float32` | | | Y/east position variance [meters^2] | +| cov_vx_rel | `float32` | | | X/north velocity variance [(meters/second)^2] | +| cov_vy_rel | `float32` | | | Y/east velocity variance [(meters/second)^2] | +| abs_pos_valid | `bool` | | | Flag showing whether absolute position is valid | +| x_abs | `float32` | | | X/north position of target, relative to origin (navigation frame) [meters] | +| y_abs | `float32` | | | Y/east position of target, relative to origin (navigation frame) [meters] | +| z_abs | `float32` | | | Z/down position of target, relative to origin (navigation frame) [meters] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingTargetPose.msg) + +:::details +Click here to see original file ```c # Relative position of precision land target in navigation (body fixed, north aligned, NED) and inertial (world fixed, north aligned, NED) frames @@ -31,5 +64,6 @@ bool abs_pos_valid # Flag showing whether absolute position is valid float32 x_abs # X/north position of target, relative to origin (navigation frame) [meters] float32 y_abs # Y/east position of target, relative to origin (navigation frame) [meters] float32 z_abs # Z/down position of target, relative to origin (navigation frame) [meters] - ``` + +::: diff --git a/docs/ko/msg_docs/LateralControlConfiguration.md b/docs/ko/msg_docs/LateralControlConfiguration.md index b0a03a6378..cac7d54072 100644 --- a/docs/ko/msg_docs/LateralControlConfiguration.md +++ b/docs/ko/msg_docs/LateralControlConfiguration.md @@ -1,9 +1,32 @@ +--- +pageClass: is-wide-page +--- + # LateralControlConfiguration (UORB message) -Fixed Wing Lateral Control Configuration message -Used by the fw_lateral_longitudinal_control module to constrain FixedWingLateralSetpoint messages. +Fixed Wing Lateral Control Configuration message. Used by the fw_lateral_longitudinal_control module to constrain FixedWingLateralSetpoint messages. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/LateralControlConfiguration.msg) +**TOPICS:** lateral_controlconfiguration + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| lateral_accel_max | `float32` | m/s^2 | | currently maps to a maximum roll angle, accel_max = tan(roll_max) \* GRAVITY | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/LateralControlConfiguration.msg) + +:::details +Click here to see original file ```c # Fixed Wing Lateral Control Configuration message @@ -14,5 +37,6 @@ uint32 MESSAGE_VERSION = 0 uint64 timestamp # time since system start (microseconds) float32 lateral_accel_max # [m/s^2] currently maps to a maximum roll angle, accel_max = tan(roll_max) * GRAVITY - ``` + +::: diff --git a/docs/ko/msg_docs/LaunchDetectionStatus.md b/docs/ko/msg_docs/LaunchDetectionStatus.md index a85c63e4e8..5ef459164b 100644 --- a/docs/ko/msg_docs/LaunchDetectionStatus.md +++ b/docs/ko/msg_docs/LaunchDetectionStatus.md @@ -1,8 +1,34 @@ +--- +pageClass: is-wide-page +--- + # LaunchDetectionStatus (UORB message) -Status of the launch detection state machine (fixed-wing only) +Status of the launch detection state machine (fixed-wing only). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LaunchDetectionStatus.msg) +**TOPICS:** launch_detectionstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| launch_detection_state | `uint8` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| STATE_WAITING_FOR_LAUNCH | `uint8` | 0 | waiting for launch | +| STATE_LAUNCH_DETECTED_DISABLED_MOTOR | `uint8` | 1 | launch detected, but keep motor(s) disabled (e.g. because it can't spin freely while on catapult) | +| STATE_FLYING | `uint8` | 2 | launch detected, use normal takeoff/flying configuration | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LaunchDetectionStatus.msg) + +:::details +Click here to see original file ```c # Status of the launch detection state machine (fixed-wing only) @@ -14,5 +40,6 @@ uint8 STATE_LAUNCH_DETECTED_DISABLED_MOTOR = 1 # launch detected, but keep moto uint8 STATE_FLYING = 2 # launch detected, use normal takeoff/flying configuration uint8 launch_detection_state - ``` + +::: diff --git a/docs/ko/msg_docs/LedControl.md b/docs/ko/msg_docs/LedControl.md index 69590eb8a5..3ee8b926aa 100644 --- a/docs/ko/msg_docs/LedControl.md +++ b/docs/ko/msg_docs/LedControl.md @@ -1,9 +1,54 @@ +--- +pageClass: is-wide-page +--- + # LedControl (UORB message) -LED control: control a single or multiple LED's. -These are the externally visible LED's, not the board LED's +LED control: control a single or multiple LED's. These are the externally visible LED's, not the board LED's. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LedControl.msg) +**TOPICS:** led_control + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| led_mask | `uint8` | | | bitmask which LED(s) to control, set to 0xff for all | +| color | `uint8` | | | see COLOR\_\* | +| mode | `uint8` | | | see MODE\_\* | +| num_blinks | `uint8` | | | how many times to blink (number of on-off cycles if mode is one of MODE_BLINK_\*) . Set to 0 for infinite | +| priority | `uint8` | | | priority: higher priority events will override current lower priority events (see MAX_PRIORITY) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| --------------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| COLOR_OFF | `uint8` | 0 | this is only used in the drivers | +| COLOR_RED | `uint8` | 1 | | +| COLOR_GREEN | `uint8` | 2 | | +| COLOR_BLUE | `uint8` | 3 | | +| COLOR_YELLOW | `uint8` | 4 | | +| COLOR_PURPLE | `uint8` | 5 | | +| COLOR_AMBER | `uint8` | 6 | | +| COLOR_CYAN | `uint8` | 7 | | +| COLOR_WHITE | `uint8` | 8 | | +| MODE_OFF | `uint8` | 0 | turn LED off | +| MODE_ON | `uint8` | 1 | turn LED on | +| MODE_DISABLED | `uint8` | 2 | disable this priority (switch to lower priority setting) | +| MODE_BLINK_SLOW | `uint8` | 3 | | +| MODE_BLINK_NORMAL | `uint8` | 4 | | +| MODE_BLINK_FAST | `uint8` | 5 | | +| MODE_BREATHE | `uint8` | 6 | continuously increase & decrease brightness (solid color if driver does not support it) | +| MODE_FLASH | `uint8` | 7 | two fast blinks (on/off) with timing as in MODE_BLINK_FAST and then off for a while | +| MAX_PRIORITY | `uint8` | 2 | maximum priority (minimum is 0) | +| ORB_QUEUE_LENGTH | `uint8` | 8 | needs to match BOARD_MAX_LEDS | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LedControl.msg) + +:::details +Click here to see original file ```c # LED control: control a single or multiple LED's. @@ -43,5 +88,6 @@ uint8 num_blinks # how many times to blink (number of on-off cycles if mode is o uint8 priority # priority: higher priority events will override current lower priority events (see MAX_PRIORITY) uint8 ORB_QUEUE_LENGTH = 8 # needs to match BOARD_MAX_LEDS - ``` + +::: diff --git a/docs/ko/msg_docs/LogMessage.md b/docs/ko/msg_docs/LogMessage.md index 5f640bae18..96b04eb262 100644 --- a/docs/ko/msg_docs/LogMessage.md +++ b/docs/ko/msg_docs/LogMessage.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # LogMessage (UORB message) -A logging message, output with PX4_WARN, PX4_ERR, PX4_INFO +A logging message, output with PX4_WARN, PX4_ERR, PX4_INFO. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LogMessage.msg) +**TOPICS:** log_message + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| severity | `uint8` | | | log level (same as in the linux kernel, starting with 0) | +| text | `char[127]` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LogMessage.msg) + +:::details +Click here to see original file ```c # A logging message, output with PX4_WARN, PX4_ERR, PX4_INFO @@ -13,5 +38,6 @@ uint8 severity # log level (same as in the linux kernel, starting with 0) char[127] text uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/ko/msg_docs/LoggerStatus.md b/docs/ko/msg_docs/LoggerStatus.md index 81dd11e035..59f5a9bb25 100644 --- a/docs/ko/msg_docs/LoggerStatus.md +++ b/docs/ko/msg_docs/LoggerStatus.md @@ -1,6 +1,43 @@ +--- +pageClass: is-wide-page +--- + # LoggerStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LoggerStatus.msg) +**TOPICS:** logger_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| type | `uint8` | | | | +| backend | `uint8` | | | | +| is_logging | `bool` | | | | +| total_written_kb | `float32` | | | total written to log in kiloBytes | +| write_rate_kb_s | `float32` | | | write rate in kiloBytes/s | +| dropouts | `uint32` | | | number of failed buffer writes due to buffer overflow | +| message_gaps | `uint32` | | | messages misssed | +| buffer_used_bytes | `uint32` | | | current buffer fill in Bytes | +| buffer_size_bytes | `uint32` | | | total buffer size in Bytes | +| num_messages | `uint8` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------- | ------- | ----- | -------------------------------------------------------------------------------------------- | +| LOGGER_TYPE_FULL | `uint8` | 0 | Normal, full size log | +| LOGGER_TYPE_MISSION | `uint8` | 1 | reduced mission log (e.g. for geotagging) | +| BACKEND_FILE | `uint8` | 1 | | +| BACKEND_MAVLINK | `uint8` | 2 | | +| BACKEND_ALL | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LoggerStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -26,5 +63,6 @@ uint32 buffer_used_bytes # current buffer fill in Bytes uint32 buffer_size_bytes # total buffer size in Bytes uint8 num_messages - ``` + +::: diff --git a/docs/ko/msg_docs/LongitudinalControlConfiguration.md b/docs/ko/msg_docs/LongitudinalControlConfiguration.md index 901d5c23bc..a9d7c67f20 100644 --- a/docs/ko/msg_docs/LongitudinalControlConfiguration.md +++ b/docs/ko/msg_docs/LongitudinalControlConfiguration.md @@ -1,10 +1,40 @@ +--- +pageClass: is-wide-page +--- + # LongitudinalControlConfiguration (UORB message) -Fixed Wing Longitudinal Control Configuration message -Used by the fw_lateral_longitudinal_control module and TECS to constrain FixedWingLongitudinalSetpoint messages -and configure the resultant setpoints. +Fixed Wing Longitudinal Control Configuration message. Used by the fw_lateral_longitudinal_control module and TECS to constrain FixedWingLongitudinalSetpoint messages. and configure the resultant setpoints. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/LongitudinalControlConfiguration.msg) +**TOPICS:** longitudinal_controlconfiguration + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| pitch_min | `float32` | rad | [-pi : pi] | defaults to FW_P_LIM_MIN if NAN. | +| pitch_max | `float32` | rad | [-pi : pi] | defaults to FW_P_LIM_MAX if NAN. | +| throttle_min | `float32` | norm | [0 : 1] | deaults to FW_THR_MIN if NAN. | +| throttle_max | `float32` | norm | [0 : 1] | defaults to FW_THR_MAX if NAN. | +| climb_rate_target | `float32` | m/s | | target climbrate to change altitude. Defaults to FW_T_CLIMB_MAX if NAN. Not used if height_rate is directly set in FixedWingLongitudinalSetpoint. | +| sink_rate_target | `float32` | m/s | | target sinkrate to change altitude. Defaults to FW_T_SINK_MAX if NAN. Not used if height_rate is directly set in FixedWingLongitudinalSetpoint. | +| speed_weight | `float32` | | [0 : 2] | , 0=pitch controls altitude only, 2=pitch controls airspeed only | +| enforce_low_height_condition | `bool` | boolean | | if true, the altitude controller is configured with an alternative timeconstant for tighter altitude tracking | +| disable_underspeed_protection | `bool` | boolean | | if true, underspeed handling is disabled in the altitude controller | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/LongitudinalControlConfiguration.msg) + +:::details +Click here to see original file ```c # Fixed Wing Longitudinal Control Configuration message @@ -24,5 +54,6 @@ float32 sink_rate_target # [m/s] target sinkrate to change altitude. Defaults float32 speed_weight # [@range 0,2], 0=pitch controls altitude only, 2=pitch controls airspeed only bool enforce_low_height_condition # [boolean] if true, the altitude controller is configured with an alternative timeconstant for tighter altitude tracking bool disable_underspeed_protection # [boolean] if true, underspeed handling is disabled in the altitude controller - ``` + +::: diff --git a/docs/ko/msg_docs/MagWorkerData.md b/docs/ko/msg_docs/MagWorkerData.md index d761c92843..d064f7b94c 100644 --- a/docs/ko/msg_docs/MagWorkerData.md +++ b/docs/ko/msg_docs/MagWorkerData.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # MagWorkerData (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MagWorkerData.msg) +**TOPICS:** mag_workerdata + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| done_count | `uint32` | | | | +| calibration_points_perside | `uint32` | | | | +| calibration_interval_perside_us | `uint64` | | | | +| calibration_counter_total | `uint32[4]` | | | | +| side_data_collected | `bool[4]` | | | | +| x | `float32[4]` | | | | +| y | `float32[4]` | | | | +| z | `float32[4]` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------ | ------- | ----- | -- | +| MAX_MAGS | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MagWorkerData.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -16,5 +48,6 @@ bool[4] side_data_collected float32[4] x float32[4] y float32[4] z - ``` + +::: diff --git a/docs/ko/msg_docs/MagnetometerBiasEstimate.md b/docs/ko/msg_docs/MagnetometerBiasEstimate.md index 0c8c28af9b..3b3ff1987c 100644 --- a/docs/ko/msg_docs/MagnetometerBiasEstimate.md +++ b/docs/ko/msg_docs/MagnetometerBiasEstimate.md @@ -1,6 +1,28 @@ +--- +pageClass: is-wide-page +--- + # MagnetometerBiasEstimate (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MagnetometerBiasEstimate.msg) +**TOPICS:** magnetometer_biasestimate + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| bias_x | `float32[4]` | | | estimated X-bias of all the sensors | +| bias_y | `float32[4]` | | | estimated Y-bias of all the sensors | +| bias_z | `float32[4]` | | | estimated Z-bias of all the sensors | +| valid | `bool[4]` | | | true if the estimator has converged | +| stable | `bool[4]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MagnetometerBiasEstimate.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +33,6 @@ float32[4] bias_z # estimated Z-bias of all the sensors bool[4] valid # true if the estimator has converged bool[4] stable - ``` + +::: diff --git a/docs/ko/msg_docs/ManualControlSetpoint.md b/docs/ko/msg_docs/ManualControlSetpoint.md index b96cb64322..7cbccf2f40 100644 --- a/docs/ko/msg_docs/ManualControlSetpoint.md +++ b/docs/ko/msg_docs/ManualControlSetpoint.md @@ -1,6 +1,53 @@ +--- +pageClass: is-wide-page +--- + # ManualControlSetpoint (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ManualControlSetpoint.msg) +**TOPICS:** manual_control_setpoint manual_control_input + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| valid | `bool` | | | | +| data_source | `uint8` | | | | +| roll | `float32` | | | move right, positive roll rotation, right side down | +| pitch | `float32` | | | move forward, negative pitch rotation, nose down | +| yaw | `float32` | | | positive yaw rotation, clockwise when seen top down | +| throttle | `float32` | | | move up, positive thrust, -1 is minimum available 0% or -100% +1 is 100% thrust | +| flaps | `float32` | | | position of flaps switch/knob/lever [-1, 1] | +| aux1 | `float32` | | | | +| aux2 | `float32` | | | | +| aux3 | `float32` | | | | +| aux4 | `float32` | | | | +| aux5 | `float32` | | | | +| aux6 | `float32` | | | | +| sticks_moving | `bool` | | | | +| buttons | `uint16` | | | From uint16 buttons field of Mavlink manual_control message | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | -------- | ----- | ---------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| SOURCE_UNKNOWN | `uint8` | 0 | | +| SOURCE_RC | `uint8` | 1 | radio control (input_rc) | +| SOURCE_MAVLINK_0 | `uint8` | 2 | mavlink instance 0 | +| SOURCE_MAVLINK_1 | `uint8` | 3 | mavlink instance 1 | +| SOURCE_MAVLINK_2 | `uint8` | 4 | mavlink instance 2 | +| SOURCE_MAVLINK_3 | `uint8` | 5 | mavlink instance 3 | +| SOURCE_MAVLINK_4 | `uint8` | 6 | mavlink instance 4 | +| SOURCE_MAVLINK_5 | `uint8` | 7 | mavlink instance 5 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ManualControlSetpoint.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -51,5 +98,6 @@ uint16 buttons # From uint16 buttons field of Mavlink manual_control message # DEPRECATED: float32 y # DEPRECATED: float32 z # DEPRECATED: float32 r - ``` + +::: diff --git a/docs/ko/msg_docs/ManualControlSwitches.md b/docs/ko/msg_docs/ManualControlSwitches.md index 189682730f..e5bbf63d8a 100644 --- a/docs/ko/msg_docs/ManualControlSwitches.md +++ b/docs/ko/msg_docs/ManualControlSwitches.md @@ -1,6 +1,55 @@ +--- +pageClass: is-wide-page +--- + # ManualControlSwitches (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ManualControlSwitches.msg) +**TOPICS:** manual_controlswitches + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| mode_slot | `uint8` | | | the slot a specific model selector is in | +| arm_switch | `uint8` | | | arm/disarm switch: _DISARMED_, ARMED | +| return_switch | `uint8` | | | return to launch 2 position switch (mandatory): _NORMAL_, RTL | +| loiter_switch | `uint8` | | | loiter 2 position switch (optional): _MISSION_, LOITER | +| offboard_switch | `uint8` | | | offboard 2 position switch (optional): _NORMAL_, OFFBOARD | +| kill_switch | `uint8` | | | throttle kill: _NORMAL_, KILL | +| termination_switch | `uint8` | | | trigger termination which cannot be undone | +| gear_switch | `uint8` | | | landing gear switch: _DOWN_, UP | +| transition_switch | `uint8` | | | VTOL transition switch: \_HOVER, FORWARD_FLIGHT | +| photo_switch | `uint8` | | | Photo trigger switch | +| video_switch | `uint8` | | | Photo trigger switch | +| engage_main_motor_switch | `uint8` | | | Engage the main motor (for helicopters) | +| payload_power_switch | `uint8` | | | Payload power switch | +| switch_changes | `uint32` | | | number of switch changes | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| --------------------------------------------------------------------------------------------- | ------- | ----- | ---------------------------------------------------- | +| SWITCH_POS_NONE | `uint8` | 0 | switch is not mapped | +| SWITCH_POS_ON | `uint8` | 1 | switch activated (value = 1) | +| SWITCH_POS_MIDDLE | `uint8` | 2 | middle position (value = 0) | +| SWITCH_POS_OFF | `uint8` | 3 | switch not activated (value = -1) | +| MODE_SLOT_NONE | `uint8` | 0 | no mode slot assigned | +| MODE_SLOT_1 | `uint8` | 1 | mode slot 1 selected | +| MODE_SLOT_2 | `uint8` | 2 | mode slot 2 selected | +| MODE_SLOT_3 | `uint8` | 3 | mode slot 3 selected | +| MODE_SLOT_4 | `uint8` | 4 | mode slot 4 selected | +| MODE_SLOT_5 | `uint8` | 5 | mode slot 5 selected | +| MODE_SLOT_6 | `uint8` | 6 | mode slot 6 selected | +| MODE_SLOT_NUM | `uint8` | 6 | number of slots | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ManualControlSwitches.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -40,5 +89,6 @@ uint8 engage_main_motor_switch # Engage the main motor (for helicopters) uint8 payload_power_switch # Payload power switch uint32 switch_changes # number of switch changes - ``` + +::: diff --git a/docs/ko/msg_docs/MavlinkLog.md b/docs/ko/msg_docs/MavlinkLog.md index 64ab9a8085..ddc17e1344 100644 --- a/docs/ko/msg_docs/MavlinkLog.md +++ b/docs/ko/msg_docs/MavlinkLog.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # MavlinkLog (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MavlinkLog.msg) +**TOPICS:** mavlink_log + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| text | `char[127]` | | | | +| severity | `uint8` | | | log level (same as in the linux kernel, starting with 0) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MavlinkLog.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,5 +34,6 @@ char[127] text uint8 severity # log level (same as in the linux kernel, starting with 0) uint8 ORB_QUEUE_LENGTH = 8 - ``` + +::: diff --git a/docs/ko/msg_docs/MavlinkTunnel.md b/docs/ko/msg_docs/MavlinkTunnel.md index 8775e82ae4..d32551de64 100644 --- a/docs/ko/msg_docs/MavlinkTunnel.md +++ b/docs/ko/msg_docs/MavlinkTunnel.md @@ -1,8 +1,46 @@ +--- +pageClass: is-wide-page +--- + # MavlinkTunnel (UORB message) -MAV_TUNNEL_PAYLOAD_TYPE enum +MAV_TUNNEL_PAYLOAD_TYPE enum. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MavlinkTunnel.msg) +**TOPICS:** mavlink_tunnel esc_serial_passthru io_serial_passthru + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | Time since system start (microseconds) | +| payload_type | `uint16` | | | A code that identifies the content of the payload (0 for unknown, which is the default). If this code is less than 32768, it is a 'registered' payload type and the corresponding code should be added to the MAV_TUNNEL_PAYLOAD_TYPE enum. Software creators can register blocks of types as needed. Codes greater than 32767 are considered local experiments and should not be checked in to any widely distributed codebase. | +| target_system | `uint8` | | | System ID (can be 0 for broadcast, but this is discouraged) | +| target_component | `uint8` | | | Component ID (can be 0 for broadcast, but this is discouraged) | +| payload_length | `uint8` | | | Length of the data transported in payload | +| payload | `uint8[128]` | | | Data itself | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | ----- | ---------------------------------------- | +| MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN | `uint8` | 0 | Encoding of payload unknown | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0 | `uint8` | 200 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1 | `uint8` | 201 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2 | `uint8` | 202 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3 | `uint8` | 203 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4 | `uint8` | 204 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5 | `uint8` | 205 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6 | `uint8` | 206 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7 | `uint8` | 207 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8 | `uint8` | 208 | Registered for STorM32 gimbal controller | +| MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9 | `uint8` | 209 | Registered for STorM32 gimbal controller | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MavlinkTunnel.msg) + +:::details +Click here to see original file ```c # MAV_TUNNEL_PAYLOAD_TYPE enum @@ -27,6 +65,7 @@ uint8 payload_length # Length of the data transported in payload uint8[128] payload # Data itself # Topic aliases for known payload types -# TOPICS mavlink_tunnel esc_serial_passthru - +# TOPICS mavlink_tunnel esc_serial_passthru io_serial_passthru ``` + +::: diff --git a/docs/ko/msg_docs/MessageFormatRequest.md b/docs/ko/msg_docs/MessageFormatRequest.md index a141574434..e79150861c 100644 --- a/docs/ko/msg_docs/MessageFormatRequest.md +++ b/docs/ko/msg_docs/MessageFormatRequest.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # MessageFormatRequest (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MessageFormatRequest.msg) +**TOPICS:** message_formatrequest + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| protocol_version | `uint16` | | | Must be set to LATEST_PROTOCOL_VERSION. Do not change this field, it must be the first field after the timestamp | +| topic_name | `char[50]` | | | 예: /fmu/in/vehicle_command | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| --------------------------------------------------------------------------------------------------------- | -------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| LATEST_PROTOCOL_VERSION | `uint16` | 1 | Current version of this protocol. Increase this whenever the MessageFormatRequest or MessageFormatResponse changes. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MessageFormatRequest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -12,5 +37,6 @@ uint16 LATEST_PROTOCOL_VERSION = 1 # Current version of this protocol. Increase uint16 protocol_version # Must be set to LATEST_PROTOCOL_VERSION. Do not change this field, it must be the first field after the timestamp char[50] topic_name # E.g. /fmu/in/vehicle_command - ``` + +::: diff --git a/docs/ko/msg_docs/MessageFormatResponse.md b/docs/ko/msg_docs/MessageFormatResponse.md index 5b9bd86917..dab3670a29 100644 --- a/docs/ko/msg_docs/MessageFormatResponse.md +++ b/docs/ko/msg_docs/MessageFormatResponse.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # MessageFormatResponse (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MessageFormatResponse.msg) +**TOPICS:** message_formatresponse + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| protocol_version | `uint16` | | | Must be set to LATEST_PROTOCOL_VERSION. Do not change this field, it must be the first field after the timestamp | +| topic_name | `char[50]` | | | 예: /fmu/in/vehicle_command | +| success | `bool` | | | | +| message_hash | `uint32` | | | hash over all message fields | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MessageFormatResponse.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -13,5 +34,6 @@ char[50] topic_name # E.g. /fmu/in/vehicle_command bool success uint32 message_hash # hash over all message fields - ``` + +::: diff --git a/docs/ko/msg_docs/Mission.md b/docs/ko/msg_docs/Mission.md index d878aba5a6..403f8eb668 100644 --- a/docs/ko/msg_docs/Mission.md +++ b/docs/ko/msg_docs/Mission.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # Mission (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Mission.msg) +**TOPICS:** mission + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mission_dataman_id | `uint8` | | | default 0, there are two offboard storage places in the dataman: 0 or 1 | +| fence_dataman_id | `uint8` | | | default 0, there are two offboard storage places in the dataman: 0 or 1 | +| safepoint_dataman_id | `uint8` | | | default 0, there are two offboard storage places in the dataman: 0 or 1 | +| count | `uint16` | | | count of the missions stored in the dataman | +| current_seq | `int32` | | | default -1, start at the one changed latest | +| land_start_index | `int32` | | | Index of the land start marker, if unavailable index of the land item, -1 otherwise | +| land_index | `int32` | | | Index of the land item, -1 otherwise | +| mission_id | `uint32` | | | indicates updates to the mission, reload from dataman if changed | +| geofence_id | `uint32` | | | indicates updates to the geofence, reload from dataman if changed | +| safe_points_id | `uint32` | | | indicates updates to the safe points, reload from dataman if changed | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Mission.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -17,5 +44,6 @@ int32 land_index # Index of the land item, -1 otherwise uint32 mission_id # indicates updates to the mission, reload from dataman if changed uint32 geofence_id # indicates updates to the geofence, reload from dataman if changed uint32 safe_points_id # indicates updates to the safe points, reload from dataman if changed - ``` + +::: diff --git a/docs/ko/msg_docs/MissionResult.md b/docs/ko/msg_docs/MissionResult.md index 60ee84c923..4f8c284558 100644 --- a/docs/ko/msg_docs/MissionResult.md +++ b/docs/ko/msg_docs/MissionResult.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # MissionResult (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MissionResult.msg) +**TOPICS:** mission_result + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mission_id | `uint32` | | | Id for the mission for which the result was generated | +| geofence_id | `uint32` | | | Id for the corresponding geofence for which the result was generated (used for mission feasibility) | +| home_position_counter | `uint32` | | | Counter of the home position for which the result was generated (used for mission feasibility) | +| seq_reached | `int32` | | | Sequence of the mission item which has been reached, default -1 | +| seq_current | `uint16` | | | Sequence of the current mission item | +| seq_total | `uint16` | | | Total number of mission items | +| valid | `bool` | | | true if mission is valid | +| warning | `bool` | | | true if mission is valid, but has potentially problematic items leading to safety warnings | +| finished | `bool` | | | true if mission has been completed | +| failure | `bool` | | | true if the mission cannot continue or be completed for some reason | +| item_do_jump_changed | `bool` | | | true if the number of do jumps remaining has changed | +| item_changed_index | `uint16` | | | indicate which item has changed | +| item_do_jump_remaining | `uint16` | | | set to the number of do jumps remaining for that item | +| execution_mode | `uint8` | | | indicates the mode in which the mission is executed | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MissionResult.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -23,5 +54,6 @@ uint16 item_changed_index # indicate which item has changed uint16 item_do_jump_remaining # set to the number of do jumps remaining for that item uint8 execution_mode # indicates the mode in which the mission is executed - ``` + +::: diff --git a/docs/ko/msg_docs/ModeCompleted.md b/docs/ko/msg_docs/ModeCompleted.md index 76c0c297e6..612c19d953 100644 --- a/docs/ko/msg_docs/ModeCompleted.md +++ b/docs/ko/msg_docs/ModeCompleted.md @@ -1,11 +1,35 @@ +--- +pageClass: is-wide-page +--- + # ModeCompleted (UORB message) -Mode completion result, published by an active mode. -The possible values of nav_state are defined in the VehicleStatus msg. -Note that this is not always published (e.g. when a user switches modes or on -failsafe activation) +Mode completion result, published by an active mode. The possible values of nav_state are defined in the VehicleStatus msg. Note that this is not always published (e.g. when a user switches modes or on. failsafe activation). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ModeCompleted.msg) +**TOPICS:** mode_completed + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| result | `uint8` | | | One of RESULT\_\* | +| nav_state | `uint8` | | | Source mode (values in VehicleStatus) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| --------------------------------------------------------------------------------------------------- | -------- | ----- | ---------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| RESULT_SUCCESS | `uint8` | 0 | | +| RESULT_FAILURE_OTHER | `uint8` | 100 | Mode failed (generic error) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ModeCompleted.msg) + +:::details +Click here to see original file ```c # Mode completion result, published by an active mode. @@ -25,5 +49,6 @@ uint8 RESULT_FAILURE_OTHER = 100 # Mode failed (generic error) uint8 result # One of RESULT_* uint8 nav_state # Source mode (values in VehicleStatus) - ``` + +::: diff --git a/docs/ko/msg_docs/MountOrientation.md b/docs/ko/msg_docs/MountOrientation.md index 4ab3f5b3e4..986dc0db3d 100644 --- a/docs/ko/msg_docs/MountOrientation.md +++ b/docs/ko/msg_docs/MountOrientation.md @@ -1,9 +1,28 @@ +--- +pageClass: is-wide-page +--- + # MountOrientation (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MountOrientation.msg) +**TOPICS:** mount_orientation + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| attitude_euler_angle | `float32[3]` | | | Attitude/direction of the mount as euler angles in rad | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MountOrientation.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) float32[3] attitude_euler_angle # Attitude/direction of the mount as euler angles in rad - ``` + +::: diff --git a/docs/ko/msg_docs/NavigatorMissionItem.md b/docs/ko/msg_docs/NavigatorMissionItem.md index 0899681c54..93e9bd7529 100644 --- a/docs/ko/msg_docs/NavigatorMissionItem.md +++ b/docs/ko/msg_docs/NavigatorMissionItem.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # NavigatorMissionItem (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NavigatorMissionItem.msg) +**TOPICS:** navigator_missionitem + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| sequence_current | `uint16` | | | Sequence of the current mission item | +| nav_cmd | `uint16` | | | | +| latitude | `float32` | | | | +| longitude | `float32` | | | | +| time_inside | `float32` | | | time that the MAV should stay inside the radius before advancing in seconds | +| acceptance_radius | `float32` | | | default radius in which the mission is accepted as reached in meters | +| loiter_radius | `float32` | | | loiter radius in meters, 0 for a VTOL to hover, negative for counter-clockwise | +| yaw | `float32` | | | in radians NED -PI..+PI, NAN means don't change yaw | +| altitude | `float32` | | | altitude in meters (AMSL) | +| frame | `uint8` | | | mission frame | +| origin | `uint8` | | | mission item origin (onboard or mavlink) | +| loiter_exit_xtrack | `bool` | | | exit xtrack location: 0 for center of loiter wp, 1 for exit location | +| force_heading | `bool` | | | heading needs to be reached | +| altitude_is_relative | `bool` | | | true if altitude is relative from start point | +| autocontinue | `bool` | | | true if next waypoint should follow after this one | +| vtol_back_transition | `bool` | | | part of the vtol back transition sequence | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NavigatorMissionItem.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -26,5 +59,6 @@ bool force_heading # heading needs to be reached bool altitude_is_relative # true if altitude is relative from start point bool autocontinue # true if next waypoint should follow after this one bool vtol_back_transition # part of the vtol back transition sequence - ``` + +::: diff --git a/docs/ko/msg_docs/NavigatorStatus.md b/docs/ko/msg_docs/NavigatorStatus.md index 4eb53a56c8..88f7cd48de 100644 --- a/docs/ko/msg_docs/NavigatorStatus.md +++ b/docs/ko/msg_docs/NavigatorStatus.md @@ -1,9 +1,34 @@ +--- +pageClass: is-wide-page +--- + # NavigatorStatus (UORB message) -Current status of a Navigator mode -The possible values of nav_state are defined in the VehicleStatus msg. +Current status of a Navigator mode. The possible values of nav_state are defined in the VehicleStatus msg. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NavigatorStatus.msg) +**TOPICS:** navigator_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| nav_state | `uint8` | | | Source mode (values in VehicleStatus) | +| failure | `uint8` | | | Navigator failure enum | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------- | ------- | ----- | --------------------------------------------------- | +| FAILURE_NONE | `uint8` | 0 | | +| FAILURE_HAGL | `uint8` | 1 | Target altitude exceeds maximum height above ground | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NavigatorStatus.msg) + +:::details +Click here to see original file ```c # Current status of a Navigator mode @@ -15,5 +40,6 @@ uint8 failure # Navigator failure enum uint8 FAILURE_NONE = 0 uint8 FAILURE_HAGL = 1 # Target altitude exceeds maximum height above ground - ``` + +::: diff --git a/docs/ko/msg_docs/NeuralControl.md b/docs/ko/msg_docs/NeuralControl.md index 3e99004fbc..280eb141c6 100644 --- a/docs/ko/msg_docs/NeuralControl.md +++ b/docs/ko/msg_docs/NeuralControl.md @@ -1,12 +1,33 @@ +--- +pageClass: is-wide-page +--- + # NeuralControl (UORB message) -Neural control +Neural control. Debugging topic for the Neural controller, logs the inputs and output vectors of the neural network, and the time it takes to run Publisher: mc_nn_control Subscriber: logger -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NeuralControl.msg) +**TOPICS:** neural_control + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------ | ------------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| observation | `float32[15]` | | | Observation vector (pos error (3), att (6d), lin vel (3), ang vel (3)) | +| network_output | `float32[4]` | | | Output from neural network | +| controller_time | `int32` | us | | Time spent from input to output | +| inference_time | `int32` | us | | Time spent for NN inference | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NeuralControl.msg) + +:::details +Click here to see original file ```c # Neural control @@ -22,5 +43,6 @@ float32[4] network_output # Output from neural network int32 controller_time # [us] Time spent from input to output int32 inference_time # [us] Time spent for NN inference - ``` + +::: diff --git a/docs/ko/msg_docs/NormalizedUnsignedSetpoint.md b/docs/ko/msg_docs/NormalizedUnsignedSetpoint.md index 8533b090ae..d3f7813aac 100644 --- a/docs/ko/msg_docs/NormalizedUnsignedSetpoint.md +++ b/docs/ko/msg_docs/NormalizedUnsignedSetpoint.md @@ -1,6 +1,24 @@ +--- +pageClass: is-wide-page +--- + # NormalizedUnsignedSetpoint (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NormalizedUnsignedSetpoint.msg) +**TOPICS:** flaps_setpoint spoilers_setpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| normalized_setpoint | `float32` | 0, 1 | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NormalizedUnsignedSetpoint.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +26,6 @@ uint64 timestamp # time since system start (microseconds) float32 normalized_setpoint # [0, 1] # TOPICS flaps_setpoint spoilers_setpoint - ``` + +::: diff --git a/docs/ko/msg_docs/ObstacleDistance.md b/docs/ko/msg_docs/ObstacleDistance.md index 622ba0a2ba..af0fa0246a 100644 --- a/docs/ko/msg_docs/ObstacleDistance.md +++ b/docs/ko/msg_docs/ObstacleDistance.md @@ -1,8 +1,44 @@ +--- +pageClass: is-wide-page +--- + # ObstacleDistance (UORB message) Obstacle distances in front of the sensor. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ObstacleDistance.msg) +**TOPICS:** obstacle_distance obstacle_distance_fused + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| frame | `uint8` | | | Coordinate frame of reference for the yaw rotation and offset of the sensor data. Defaults to MAV_FRAME_GLOBAL, which is North aligned. For body-mounted sensors use MAV_FRAME_BODY_FRD, which is vehicle front aligned. | +| sensor_type | `uint8` | | | Type from MAV_DISTANCE_SENSOR enum. | +| distances | `uint16[72]` | | | Distance of obstacles around the UAV with index 0 corresponding to local North. A value of 0 means that the obstacle is right in front of the sensor. A value of max_distance +1 means no obstacle is present. A value of UINT16_MAX for unknown/not used. In a array element, one unit corresponds to 1cm. | +| increment | `float32` | | | Angular width in degrees of each array element. | +| min_distance | `uint16` | | | Minimum distance the sensor can measure in centimeters. | +| max_distance | `uint16` | | | Maximum distance the sensor can measure in centimeters. | +| angle_offset | `float32` | | | Relative angle offset of the 0-index element in the distances array. Value of 0 corresponds to forward. Positive is clockwise direction, negative is counter-clockwise. | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| MAV_FRAME_GLOBAL | `uint8` | 0 | | +| MAV_FRAME_LOCAL_NED | `uint8` | 1 | | +| MAV_FRAME_BODY_FRD | `uint8` | 12 | | +| MAV_DISTANCE_SENSOR_LASER | `uint8` | 0 | | +| MAV_DISTANCE_SENSOR_ULTRASOUND | `uint8` | 1 | | +| MAV_DISTANCE_SENSOR_INFRARED | `uint8` | 2 | | +| MAV_DISTANCE_SENSOR_RADAR | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ObstacleDistance.msg) + +:::details +Click here to see original file ```c # Obstacle distances in front of the sensor. @@ -29,5 +65,6 @@ uint16 max_distance # Maximum distance the sensor can measure in centimeters. float32 angle_offset # Relative angle offset of the 0-index element in the distances array. Value of 0 corresponds to forward. Positive is clockwise direction, negative is counter-clockwise. # TOPICS obstacle_distance obstacle_distance_fused - ``` + +::: diff --git a/docs/ko/msg_docs/OffboardControlMode.md b/docs/ko/msg_docs/OffboardControlMode.md index 4499912d95..ebb818ef90 100644 --- a/docs/ko/msg_docs/OffboardControlMode.md +++ b/docs/ko/msg_docs/OffboardControlMode.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # OffboardControlMode (UORB message) -Off-board control mode +Off-board control mode. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OffboardControlMode.msg) +**TOPICS:** offboard_controlmode + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| position | `bool` | | | | +| velocity | `bool` | | | | +| acceleration | `bool` | | | | +| attitude | `bool` | | | | +| body_rate | `bool` | | | | +| thrust_and_torque | `bool` | | | | +| direct_actuator | `bool` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OffboardControlMode.msg) + +:::details +Click here to see original file ```c # Off-board control mode @@ -16,5 +40,6 @@ bool attitude bool body_rate bool thrust_and_torque bool direct_actuator - ``` + +::: diff --git a/docs/ko/msg_docs/OnboardComputerStatus.md b/docs/ko/msg_docs/OnboardComputerStatus.md index fc60e6f789..faf2732f7a 100644 --- a/docs/ko/msg_docs/OnboardComputerStatus.md +++ b/docs/ko/msg_docs/OnboardComputerStatus.md @@ -1,8 +1,44 @@ +--- +pageClass: is-wide-page +--- + # OnboardComputerStatus (UORB message) -ONBOARD_COMPUTER_STATUS message data +ONBOARD_COMPUTER_STATUS message data. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OnboardComputerStatus.msg) +**TOPICS:** onboard_computerstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------ | ----------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | time since system start (microseconds) | +| uptime | `uint32` | ms | | time since system boot of the companion (milliseconds) | +| type | `uint8` | | | type of onboard computer 0: Mission computer primary, 1: Mission computer backup 1, 2: Mission computer backup 2, 3: Compute node, 4-5: Compute spares, 6-9: Payload computers. | +| cpu_cores | `uint8[8]` | | | CPU usage on the component in percent | +| cpu_combined | `uint8[10]` | | | Combined CPU usage as the last 10 slices of 100 MS | +| gpu_cores | `uint8[4]` | | | GPU usage on the component in percent | +| gpu_combined | `uint8[10]` | | | Combined GPU usage as the last 10 slices of 100 MS | +| temperature_board | `int8` | degC | | Temperature of the board | +| temperature_core | `int8[8]` | degC | | Temperature of the CPU core | +| fan_speed | `int16[4]` | rpm | | Fan speeds | +| ram_usage | `uint32` | MB | | Amount of used RAM on the component system | +| ram_total | `uint32` | MB | | Total amount of RAM on the component system | +| storage_type | `uint32[4]` | | | Storage type: 0: HDD, 1: SSD, 2: EMMC, 3: SD card (non-removable), 4: SD card (removable) | +| storage_usage | `uint32[4]` | MB | | Amount of used storage space on the component system | +| storage_total | `uint32[4]` | MB | | Total amount of storage space on the component system | +| link_type | `uint32[6]` | Kb/s | | Link type: 0-9: UART, 10-19: Wired network, 20-29: Wifi, 30-39: Point-to-point proprietary, 40-49: Mesh proprietary | +| link_tx_rate | `uint32[6]` | Kb/s | | Network traffic from the component system | +| link_rx_rate | `uint32[6]` | Kb/s | | Network traffic to the component system | +| link_tx_max | `uint32[6]` | Kb/s | | Network capacity from the component system | +| link_rx_max | `uint32[6]` | Kb/s | | Network capacity to the component system | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OnboardComputerStatus.msg) + +:::details +Click here to see original file ```c # ONBOARD_COMPUTER_STATUS message data @@ -28,5 +64,6 @@ uint32[6] link_tx_rate # [Kb/s] Network traffic from the component system uint32[6] link_rx_rate # [Kb/s] Network traffic to the component system uint32[6] link_tx_max # [Kb/s] Network capacity from the component system uint32[6] link_rx_max # [Kb/s] Network capacity to the component system - ``` + +::: diff --git a/docs/ko/msg_docs/OpenDroneIdArmStatus.md b/docs/ko/msg_docs/OpenDroneIdArmStatus.md index 152d34a166..85005cc985 100644 --- a/docs/ko/msg_docs/OpenDroneIdArmStatus.md +++ b/docs/ko/msg_docs/OpenDroneIdArmStatus.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdArmStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdArmStatus.msg) +**TOPICS:** open_droneid_armstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | ---------- | ---------------------------------------------------------------- | ---------- | -- | +| timestamp | `uint64` | | | | +| status | `uint8` | | | | +| error | `char[50]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdArmStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp uint8 status char[50] error - ``` + +::: diff --git a/docs/ko/msg_docs/OpenDroneIdOperatorId.md b/docs/ko/msg_docs/OpenDroneIdOperatorId.md index cafca0aa09..e1a879b49e 100644 --- a/docs/ko/msg_docs/OpenDroneIdOperatorId.md +++ b/docs/ko/msg_docs/OpenDroneIdOperatorId.md @@ -1,11 +1,32 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdOperatorId (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdOperatorId.msg) +**TOPICS:** open_droneid_operatorid + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | -- | +| timestamp | `uint64` | | | | +| id_or_mac | `uint8[20]` | | | | +| operator_id_type | `uint8` | | | | +| operator_id | `char[20]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdOperatorId.msg) + +:::details +Click here to see original file ```c uint64 timestamp uint8[20] id_or_mac uint8 operator_id_type char[20] operator_id - ``` + +::: diff --git a/docs/ko/msg_docs/OpenDroneIdSelfId.md b/docs/ko/msg_docs/OpenDroneIdSelfId.md index 493be28d9f..4c20d7a368 100644 --- a/docs/ko/msg_docs/OpenDroneIdSelfId.md +++ b/docs/ko/msg_docs/OpenDroneIdSelfId.md @@ -1,11 +1,32 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdSelfId (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdSelfId.msg) +**TOPICS:** open_droneid_selfid + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | -- | +| timestamp | `uint64` | | | | +| id_or_mac | `uint8[20]` | | | | +| description_type | `uint8` | | | | +| description | `char[23]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdSelfId.msg) + +:::details +Click here to see original file ```c uint64 timestamp uint8[20] id_or_mac uint8 description_type char[23] description - ``` + +::: diff --git a/docs/ko/msg_docs/OpenDroneIdSystem.md b/docs/ko/msg_docs/OpenDroneIdSystem.md index 402b7d0baf..7e92821350 100644 --- a/docs/ko/msg_docs/OpenDroneIdSystem.md +++ b/docs/ko/msg_docs/OpenDroneIdSystem.md @@ -1,6 +1,35 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdSystem (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdSystem.msg) +**TOPICS:** open_droneid_system + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | -- | +| timestamp | `uint64` | | | | +| id_or_mac | `uint8[20]` | | | | +| operator_location_type | `uint8` | | | | +| classification_type | `uint8` | | | | +| operator_latitude | `int32` | | | | +| operator_longitude | `int32` | | | | +| area_count | `uint16` | | | | +| area_radius | `uint16` | | | | +| area_ceiling | `float32` | | | | +| area_floor | `float32` | | | | +| category_eu | `uint8` | | | | +| class_eu | `uint8` | | | | +| operator_altitude_geo | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdSystem.msg) + +:::details +Click here to see original file ```c uint64 timestamp @@ -16,5 +45,6 @@ float32 area_floor uint8 category_eu uint8 class_eu float32 operator_altitude_geo - ``` + +::: diff --git a/docs/ko/msg_docs/OrbTest.md b/docs/ko/msg_docs/OrbTest.md index 3cd2460956..aecab002f8 100644 --- a/docs/ko/msg_docs/OrbTest.md +++ b/docs/ko/msg_docs/OrbTest.md @@ -1,6 +1,24 @@ +--- +pageClass: is-wide-page +--- + # OrbTest (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTest.msg) +**TOPICS:** orb_test orb_multitest + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| val | `int32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTest.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +26,6 @@ uint64 timestamp # time since system start (microseconds) int32 val # TOPICS orb_test orb_multitest - ``` + +::: diff --git a/docs/ko/msg_docs/OrbTestLarge.md b/docs/ko/msg_docs/OrbTestLarge.md index 3298811450..ad59a33640 100644 --- a/docs/ko/msg_docs/OrbTestLarge.md +++ b/docs/ko/msg_docs/OrbTestLarge.md @@ -1,6 +1,25 @@ +--- +pageClass: is-wide-page +--- + # OrbTestLarge (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTestLarge.msg) +**TOPICS:** orb_testlarge + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| val | `int32` | | | | +| junk | `uint8[512]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTestLarge.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +27,6 @@ uint64 timestamp # time since system start (microseconds) int32 val uint8[512] junk - ``` + +::: diff --git a/docs/ko/msg_docs/OrbTestMedium.md b/docs/ko/msg_docs/OrbTestMedium.md index e4a7bec7c0..8e7aaf27c3 100644 --- a/docs/ko/msg_docs/OrbTestMedium.md +++ b/docs/ko/msg_docs/OrbTestMedium.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # OrbTestMedium (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTestMedium.msg) +**TOPICS:** orb_test_medium orb_test_medium_multi orb_test_medium_wrap_around orb_test_medium_queue orb_test_medium_queue_poll + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| val | `int32` | | | | +| junk | `uint8[64]` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTestMedium.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -12,5 +37,6 @@ uint8[64] junk uint8 ORB_QUEUE_LENGTH = 16 # TOPICS orb_test_medium orb_test_medium_multi orb_test_medium_wrap_around orb_test_medium_queue orb_test_medium_queue_poll - ``` + +::: diff --git a/docs/ko/msg_docs/OrbitStatus.md b/docs/ko/msg_docs/OrbitStatus.md index 2cbeeec36b..4273d7f627 100644 --- a/docs/ko/msg_docs/OrbitStatus.md +++ b/docs/ko/msg_docs/OrbitStatus.md @@ -1,8 +1,42 @@ +--- +pageClass: is-wide-page +--- + # OrbitStatus (UORB message) -ORBIT_YAW_BEHAVIOUR +ORBIT_YAW_BEHAVIOUR. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbitStatus.msg) +**TOPICS:** orbit_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| radius | `float32` | | | Radius of the orbit circle. Positive values orbit clockwise, negative values orbit counter-clockwise. [m] | +| frame | `uint8` | | | The coordinate system of the fields: x, y, z. | +| x | `float64` | | | X coordinate of center point. Coordinate system depends on frame field: local = x position in meters _ 1e4, global = latitude in degrees _ 1e7. | +| y | `float64` | | | Y coordinate of center point. Coordinate system depends on frame field: local = y position in meters _ 1e4, global = latitude in degrees _ 1e7. | +| z | `float32` | | | Altitude of center point. Coordinate system depends on frame field. | +| yaw_behaviour | `uint8` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER | `uint8` | 0 | | +| ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING | `uint8` | 1 | | +| ORBIT_YAW_BEHAVIOUR_UNCONTROLLED | `uint8` | 2 | | +| ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE | `uint8` | 3 | | +| ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED | `uint8` | 4 | | +| ORBIT_YAW_BEHAVIOUR_UNCHANGED | `uint8` | 5 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbitStatus.msg) + +:::details +Click here to see original file ```c # ORBIT_YAW_BEHAVIOUR @@ -20,5 +54,6 @@ float64 x # X coordinate of center point. Coordinate system depends on fr float64 y # Y coordinate of center point. Coordinate system depends on frame field: local = y position in meters * 1e4, global = latitude in degrees * 1e7. float32 z # Altitude of center point. Coordinate system depends on frame field. uint8 yaw_behaviour - ``` + +::: diff --git a/docs/ko/msg_docs/ParameterResetRequest.md b/docs/ko/msg_docs/ParameterResetRequest.md index 3c776a0faf..f945088419 100644 --- a/docs/ko/msg_docs/ParameterResetRequest.md +++ b/docs/ko/msg_docs/ParameterResetRequest.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # ParameterResetRequest (UORB message) -ParameterResetRequest : Used by the primary to reset one or all parameter value(s) on the remote +ParameterResetRequest : Used by the primary to reset one or all parameter value(s) on the remote. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterResetRequest.msg) +**TOPICS:** parameter_resetrequest + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | +| timestamp | `uint64` | | | | +| parameter_index | `uint16` | | | | +| reset_all | `bool` | | | If this is true then ignore parameter_index | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterResetRequest.msg) + +:::details +Click here to see original file ```c # ParameterResetRequest : Used by the primary to reset one or all parameter value(s) on the remote @@ -13,5 +38,6 @@ uint16 parameter_index bool reset_all # If this is true then ignore parameter_index uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/ko/msg_docs/ParameterSetUsedRequest.md b/docs/ko/msg_docs/ParameterSetUsedRequest.md index 14684c0eed..1539fa0b2e 100644 --- a/docs/ko/msg_docs/ParameterSetUsedRequest.md +++ b/docs/ko/msg_docs/ParameterSetUsedRequest.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # ParameterSetUsedRequest (UORB message) -ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary +ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetUsedRequest.msg) +**TOPICS:** parameter_setused_request + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | -- | +| timestamp | `uint64` | | | | +| parameter_index | `uint16` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 64 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetUsedRequest.msg) + +:::details +Click here to see original file ```c # ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary @@ -11,5 +35,6 @@ uint64 timestamp uint16 parameter_index uint8 ORB_QUEUE_LENGTH = 64 - ``` + +::: diff --git a/docs/ko/msg_docs/ParameterSetValueRequest.md b/docs/ko/msg_docs/ParameterSetValueRequest.md index b8322a952e..3a405780ef 100644 --- a/docs/ko/msg_docs/ParameterSetValueRequest.md +++ b/docs/ko/msg_docs/ParameterSetValueRequest.md @@ -1,8 +1,34 @@ +--- +pageClass: is-wide-page +--- + # ParameterSetValueRequest (UORB message) -ParameterSetValueRequest : Used by a remote or primary to update the value for a parameter at the other end +ParameterSetValueRequest : Used by a remote or primary to update the value for a parameter at the other end. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetValueRequest.msg) +**TOPICS:** parameter_set_value_request parameter_remote_set_value_request parameter_primary_set_value_request + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------- | +| timestamp | `uint64` | | | | +| parameter_index | `uint16` | | | | +| int_value | `int32` | | | Optional value for an integer parameter | +| float_value | `float32` | | | Optional value for a float parameter | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 32 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetValueRequest.msg) + +:::details +Click here to see original file ```c # ParameterSetValueRequest : Used by a remote or primary to update the value for a parameter at the other end @@ -16,5 +42,6 @@ float32 float_value # Optional value for a float parameter uint8 ORB_QUEUE_LENGTH = 32 # TOPICS parameter_set_value_request parameter_remote_set_value_request parameter_primary_set_value_request - ``` + +::: diff --git a/docs/ko/msg_docs/ParameterSetValueResponse.md b/docs/ko/msg_docs/ParameterSetValueResponse.md index dbb44d46ea..da1392e540 100644 --- a/docs/ko/msg_docs/ParameterSetValueResponse.md +++ b/docs/ko/msg_docs/ParameterSetValueResponse.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # ParameterSetValueResponse (UORB message) -ParameterSetValueResponse : Response to a set value request by either primary or secondary +ParameterSetValueResponse : Response to a set value request by either primary or secondary. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetValueResponse.msg) +**TOPICS:** parameter_set_value_response parameter_remote_set_value_response parameter_primary_set_value_response + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | -- | +| timestamp | `uint64` | | | | +| request_timestamp | `uint64` | | | | +| parameter_index | `uint16` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterSetValueResponse.msg) + +:::details +Click here to see original file ```c # ParameterSetValueResponse : Response to a set value request by either primary or secondary @@ -14,5 +39,6 @@ uint16 parameter_index uint8 ORB_QUEUE_LENGTH = 4 # TOPICS parameter_set_value_response parameter_remote_set_value_response parameter_primary_set_value_response - ``` + +::: diff --git a/docs/ko/msg_docs/ParameterUpdate.md b/docs/ko/msg_docs/ParameterUpdate.md index 29148e2b5b..1e59a6b8cc 100644 --- a/docs/ko/msg_docs/ParameterUpdate.md +++ b/docs/ko/msg_docs/ParameterUpdate.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # ParameterUpdate (UORB message) -This message is used to notify the system about one or more parameter changes +This message is used to notify the system about one or more parameter changes. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterUpdate.msg) +**TOPICS:** parameter_update + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| instance | `uint32` | | | Instance count - constantly incrementing | +| get_count | `uint32` | | | | +| set_count | `uint32` | | | | +| find_count | `uint32` | | | | +| export_count | `uint32` | | | | +| active | `uint16` | | | | +| changed | `uint16` | | | | +| custom_default | `uint16` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ParameterUpdate.msg) + +:::details +Click here to see original file ```c # This message is used to notify the system about one or more parameter changes @@ -19,5 +44,6 @@ uint32 export_count uint16 active uint16 changed uint16 custom_default - ``` + +::: diff --git a/docs/ko/msg_docs/Ping.md b/docs/ko/msg_docs/Ping.md index 1cb8ac5413..80c9f4e43c 100644 --- a/docs/ko/msg_docs/Ping.md +++ b/docs/ko/msg_docs/Ping.md @@ -1,6 +1,29 @@ +--- +pageClass: is-wide-page +--- + # Ping (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Ping.msg) +**TOPICS:** ping + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| ping_time | `uint64` | | | Timestamp of the ping packet | +| ping_sequence | `uint32` | | | Sequence number of the ping packet | +| dropped_packets | `uint32` | | | Number of dropped ping packets | +| rtt_ms | `float32` | | | Round trip time (in ms) | +| system_id | `uint8` | | | System ID of the remote system | +| component_id | `uint8` | | | Component ID of the remote system | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Ping.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -10,5 +33,6 @@ uint32 dropped_packets # Number of dropped ping packets float32 rtt_ms # Round trip time (in ms) uint8 system_id # System ID of the remote system uint8 component_id # Component ID of the remote system - ``` + +::: diff --git a/docs/ko/msg_docs/PositionControllerLandingStatus.md b/docs/ko/msg_docs/PositionControllerLandingStatus.md index 3e58676dc3..f91a4d7514 100644 --- a/docs/ko/msg_docs/PositionControllerLandingStatus.md +++ b/docs/ko/msg_docs/PositionControllerLandingStatus.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # PositionControllerLandingStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionControllerLandingStatus.msg) +**TOPICS:** position_controllerlanding_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------- | +| timestamp | `uint64` | us | | time since system start | +| lateral_touchdown_offset | `float32` | m | | lateral touchdown position offset manually commanded during landing | +| flaring | `bool` | | | true if the aircraft is flaring | +| abort_status | `uint8` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| --------------------------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------ | +| NOT_ABORTED | `uint8` | 0 | | +| ABORTED_BY_OPERATOR | `uint8` | 1 | | +| TERRAIN_NOT_FOUND | `uint8` | 2 | FW_LND_ABORT (1 << 0) | +| TERRAIN_TIMEOUT | `uint8` | 3 | FW_LND_ABORT (1 << 1) | +| UNKNOWN_ABORT_CRITERION | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionControllerLandingStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # [us] time since system start @@ -19,5 +49,6 @@ uint8 ABORTED_BY_OPERATOR = 1 uint8 TERRAIN_NOT_FOUND = 2 # FW_LND_ABORT (1 << 0) uint8 TERRAIN_TIMEOUT = 3 # FW_LND_ABORT (1 << 1) uint8 UNKNOWN_ABORT_CRITERION = 4 - ``` + +::: diff --git a/docs/ko/msg_docs/PositionControllerStatus.md b/docs/ko/msg_docs/PositionControllerStatus.md index 2fadf80a9e..3b7dd545d9 100644 --- a/docs/ko/msg_docs/PositionControllerStatus.md +++ b/docs/ko/msg_docs/PositionControllerStatus.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # PositionControllerStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionControllerStatus.msg) +**TOPICS:** position_controllerstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| nav_roll | `float32` | | | Roll setpoint [rad] | +| nav_pitch | `float32` | | | Pitch setpoint [rad] | +| nav_bearing | `float32` | | | Bearing angle[rad] | +| target_bearing | `float32` | | | Bearing angle from aircraft to current target [rad] | +| xtrack_error | `float32` | | | Signed track error [m] | +| wp_dist | `float32` | | | Distance to active (next) waypoint [m] | +| acceptance_radius | `float32` | | | Current horizontal acceptance radius [m] | +| type | `uint8` | | | Current (applied) position setpoint type (see PositionSetpoint.msg) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionControllerStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -13,5 +38,6 @@ float32 xtrack_error # Signed track error [m] float32 wp_dist # Distance to active (next) waypoint [m] float32 acceptance_radius # Current horizontal acceptance radius [m] uint8 type # Current (applied) position setpoint type (see PositionSetpoint.msg) - ``` + +::: diff --git a/docs/ko/msg_docs/PositionSetpoint.md b/docs/ko/msg_docs/PositionSetpoint.md index b4e16681b7..a00b37083c 100644 --- a/docs/ko/msg_docs/PositionSetpoint.md +++ b/docs/ko/msg_docs/PositionSetpoint.md @@ -1,8 +1,57 @@ +--- +pageClass: is-wide-page +--- + # PositionSetpoint (UORB message) -this file is only used in the position_setpoint triple as a dependency +this file is only used in the position_setpoint triple as a dependency. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionSetpoint.msg) +**TOPICS:** position_setpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| valid | `bool` | | | true if setpoint is valid | +| type | `uint8` | | | setpoint type to adjust behavior of position controller | +| vx | `float32` | | | local velocity setpoint in m/s in NED | +| vy | `float32` | | | local velocity setpoint in m/s in NED | +| vz | `float32` | | | local velocity setpoint in m/s in NED | +| lat | `float64` | | | latitude, in deg | +| lon | `float64` | | | longitude, in deg | +| alt | `float32` | | | altitude AMSL, in m | +| yaw | `float32` | | | yaw (only in hover), in rad [-PI..PI), NaN = leave to flight task | +| loiter_radius | `float32` | m | [0 : INF] | loiter major axis radius | +| loiter_minor_radius | `float32` | m | [0 : INF] | loiter minor axis radius (used for non-circular loiter shapes) | +| loiter_direction_counter_clockwise | `bool` | | | loiter direction is clockwise by default and can be changed using this field | +| loiter_orientation | `float32` | rad | [-pi : pi] | orientation of the major axis with respect to true north | +| loiter_pattern | `uint8` | | | loitern pattern to follow | +| acceptance_radius | `float32` | | | horizontal acceptance_radius (meters) | +| alt_acceptance_radius | `float32` | | | vertical acceptance radius, only used for fixed wing guidance, NAN = let guidance choose (meters) | +| cruising_speed | `float32` | | | the generally desired cruising speed (not a hard constraint) | +| gliding_enabled | `bool` | | | commands the vehicle to glide if the capability is available (fixed wing only) | +| cruising_throttle | `float32` | | | the generally desired cruising throttle (not a hard constraint), only has an effect for rover | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| --------------------------------------------------------------------------------------------------------- | ------- | ----- | --------------------------------------------------------------------------- | +| SETPOINT_TYPE_POSITION | `uint8` | 0 | position setpoint | +| SETPOINT_TYPE_VELOCITY | `uint8` | 1 | velocity setpoint | +| SETPOINT_TYPE_LOITER | `uint8` | 2 | loiter setpoint | +| SETPOINT_TYPE_TAKEOFF | `uint8` | 3 | takeoff setpoint | +| SETPOINT_TYPE_LAND | `uint8` | 4 | land setpoint, altitude must be ignored, descend until landing | +| SETPOINT_TYPE_IDLE | `uint8` | 5 | do nothing, switch off motors or keep at idle speed (MC) | +| LOITER_TYPE_ORBIT | `uint8` | 0 | Circular pattern | +| LOITER_TYPE_FIGUREEIGHT | `uint8` | 1 | Pattern resembling an 8 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionSetpoint.msg) + +:::details +Click here to see original file ```c # this file is only used in the position_setpoint triple as a dependency @@ -43,5 +92,6 @@ float32 alt_acceptance_radius # vertical acceptance radius, only used for fixed float32 cruising_speed # the generally desired cruising speed (not a hard constraint) bool gliding_enabled # commands the vehicle to glide if the capability is available (fixed wing only) float32 cruising_throttle # the generally desired cruising throttle (not a hard constraint), only has an effect for rover - ``` + +::: diff --git a/docs/ko/msg_docs/PositionSetpointTriplet.md b/docs/ko/msg_docs/PositionSetpointTriplet.md index d4de724bdd..52762394aa 100644 --- a/docs/ko/msg_docs/PositionSetpointTriplet.md +++ b/docs/ko/msg_docs/PositionSetpointTriplet.md @@ -1,9 +1,28 @@ +--- +pageClass: is-wide-page +--- + # PositionSetpointTriplet (UORB message) -Global position setpoint triplet in WGS84 coordinates. -This are the three next waypoints (or just the next two or one). +Global position setpoint triplet in WGS84 coordinates. This are the three next waypoints (or just the next two or one). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionSetpointTriplet.msg) +**TOPICS:** position_setpointtriplet + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | ------------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| previous | `PositionSetpoint` | | | | +| current | `PositionSetpoint` | | | | +| next | `PositionSetpoint` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionSetpointTriplet.msg) + +:::details +Click here to see original file ```c # Global position setpoint triplet in WGS84 coordinates. @@ -14,5 +33,6 @@ uint64 timestamp # time since system start (microseconds) PositionSetpoint previous PositionSetpoint current PositionSetpoint next - ``` + +::: diff --git a/docs/ko/msg_docs/PowerButtonState.md b/docs/ko/msg_docs/PowerButtonState.md index 8d6f38461e..a28a40261c 100644 --- a/docs/ko/msg_docs/PowerButtonState.md +++ b/docs/ko/msg_docs/PowerButtonState.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # PowerButtonState (UORB message) -power button state notification message +power button state notification message. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PowerButtonState.msg) +**TOPICS:** power_buttonstate + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| event | `uint8` | | | one of PWR_BUTTON_STATE_\* | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------ | +| PWR_BUTTON_STATE_IDEL | `uint8` | 0 | Button went up without meeting shutdown button down time (delete event) | +| PWR_BUTTON_STATE_DOWN | `uint8` | 1 | Button went Down | +| PWR_BUTTON_STATE_UP | `uint8` | 2 | Button went Up | +| PWR_BUTTON_STATE_REQUEST_SHUTDOWN | `uint8` | 3 | Button went Up after meeting shutdown button down time | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PowerButtonState.msg) + +:::details +Click here to see original file ```c # power button state notification message @@ -15,5 +42,6 @@ uint8 PWR_BUTTON_STATE_UP = 2 # Button went Up uint8 PWR_BUTTON_STATE_REQUEST_SHUTDOWN = 3 # Button went Up after meeting shutdown button down time uint8 event # one of PWR_BUTTON_STATE_* - ``` + +::: diff --git a/docs/ko/msg_docs/PowerMonitor.md b/docs/ko/msg_docs/PowerMonitor.md index 5f38bb3d56..c305bf8f77 100644 --- a/docs/ko/msg_docs/PowerMonitor.md +++ b/docs/ko/msg_docs/PowerMonitor.md @@ -1,8 +1,36 @@ +--- +pageClass: is-wide-page +--- + # PowerMonitor (UORB message) -power monitor message +power monitor message. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PowerMonitor.msg) +**TOPICS:** power_monitor + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | Time since system start (microseconds) | +| voltage_v | `float32` | | | Voltage in volts, 0 if unknown | +| current_a | `float32` | | | Current in amperes, -1 if unknown | +| power_w | `float32` | | | power in watts, -1 if unknown | +| rconf | `int16` | | | | +| rsv | `int16` | | | | +| rbv | `int16` | | | | +| rp | `int16` | | | | +| rc | `int16` | | | | +| rcal | `int16` | | | | +| me | `int16` | | | | +| al | `int16` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PowerMonitor.msg) + +:::details +Click here to see original file ```c # power monitor message @@ -20,5 +48,6 @@ int16 rc int16 rcal int16 me int16 al - ``` + +::: diff --git a/docs/ko/msg_docs/PpsCapture.md b/docs/ko/msg_docs/PpsCapture.md index e566147389..e61fae3f3e 100644 --- a/docs/ko/msg_docs/PpsCapture.md +++ b/docs/ko/msg_docs/PpsCapture.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # PpsCapture (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PpsCapture.msg) +**TOPICS:** pps_capture + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------- | -------- | ---------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) at PPS capture event | +| rtc_timestamp | `uint64` | | | Corrected GPS UTC timestamp at PPS capture event | +| `uint8` | | | Increments when PPS dt < 50ms | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PpsCapture.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) at PPS capture event uint64 rtc_timestamp # Corrected GPS UTC timestamp at PPS capture event uint8 pps_rate_exceeded_counter # Increments when PPS dt < 50ms - ``` + +::: diff --git a/docs/ko/msg_docs/PurePursuitStatus.md b/docs/ko/msg_docs/PurePursuitStatus.md index 8d54ba473e..b099125813 100644 --- a/docs/ko/msg_docs/PurePursuitStatus.md +++ b/docs/ko/msg_docs/PurePursuitStatus.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # PurePursuitStatus (UORB message) -Pure pursuit status +Pure pursuit status. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PurePursuitStatus.msg) +**TOPICS:** pure_pursuitstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| lookahead_distance | `float32` | m | [0 : inf] | Lookahead distance of pure the pursuit controller | +| target_bearing | `float32` | rad [NED] | [-pi : pi] | Target bearing calculated by the pure pursuit controller | +| crosstrack_error | `float32` | m | [-inf (Left of the path) : inf (Right of the path)] | Shortest distance from the vehicle to the path | +| distance_to_waypoint | `float32` | m | [-inf : inf] | Distance from the vehicle to the current waypoint | +| bearing_to_waypoint | `float32` | rad [NED] | [-pi : pi] | Bearing towards current waypoint | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PurePursuitStatus.msg) + +:::details +Click here to see original file ```c # Pure pursuit status @@ -13,5 +35,6 @@ float32 target_bearing # [rad] [@range -pi, pi] [@frame NED] Target beari float32 crosstrack_error # [m] [@range -inf (Left of the path), inf (Right of the path)] Shortest distance from the vehicle to the path float32 distance_to_waypoint # [m] [@range -inf, inf]Distance from the vehicle to the current waypoint float32 bearing_to_waypoint # [rad] [@range -pi, pi] [@frame NED]Bearing towards current waypoint - ``` + +::: diff --git a/docs/ko/msg_docs/PwmInput.md b/docs/ko/msg_docs/PwmInput.md index 9389ca3fb1..e88ae007fc 100644 --- a/docs/ko/msg_docs/PwmInput.md +++ b/docs/ko/msg_docs/PwmInput.md @@ -1,11 +1,32 @@ +--- +pageClass: is-wide-page +--- + # PwmInput (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PwmInput.msg) +**TOPICS:** pwm_input + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | Time since system start (microseconds) | +| error_count | `uint64` | | | Timer overcapture error flag (AUX5 or MAIN5) | +| pulse_width | `uint32` | | | Pulse width, timer counts (microseconds) | +| period | `uint32` | | | Period, timer counts (microseconds) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PwmInput.msg) + +:::details +Click here to see original file ```c uint64 timestamp # Time since system start (microseconds) uint64 error_count # Timer overcapture error flag (AUX5 or MAIN5) uint32 pulse_width # Pulse width, timer counts (microseconds) uint32 period # Period, timer counts (microseconds) - ``` + +::: diff --git a/docs/ko/msg_docs/Px4ioStatus.md b/docs/ko/msg_docs/Px4ioStatus.md index 4b1fbb1314..b41313c584 100644 --- a/docs/ko/msg_docs/Px4ioStatus.md +++ b/docs/ko/msg_docs/Px4ioStatus.md @@ -1,6 +1,54 @@ +--- +pageClass: is-wide-page +--- + # Px4ioStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Px4ioStatus.msg) +**TOPICS:** px4io_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| free_memory_bytes | `uint16` | | | | +| voltage_v | `float32` | | | Servo rail voltage in volts | +| rssi_v | `float32` | | | RSSI pin voltage in volts | +| status_arm_sync | `bool` | | | | +| status_failsafe | `bool` | | | | +| status_fmu_initialized | `bool` | | | | +| status_fmu_ok | `bool` | | | | +| status_init_ok | `bool` | | | | +| status_outputs_armed | `bool` | | | | +| status_raw_pwm | `bool` | | | | +| status_rc_ok | `bool` | | | | +| status_rc_dsm | `bool` | | | | +| status_rc_ppm | `bool` | | | | +| status_rc_sbus | `bool` | | | | +| status_rc_st24 | `bool` | | | | +| status_rc_sumd | `bool` | | | | +| status_safety_button_event | `bool` | | | px4io safety button was pressed for longer than 1 second | +| alarm_pwm_error | `bool` | | | | +| alarm_rc_lost | `bool` | | | | +| arming_failsafe_custom | `bool` | | | | +| arming_fmu_armed | `bool` | | | | +| arming_fmu_prearmed | `bool` | | | | +| arming_termination | `bool` | | | | +| arming_io_arm_ok | `bool` | | | | +| arming_lockdown | `bool` | | | | +| arming_termination_failsafe | `bool` | | | | +| pwm | `uint16[8]` | | | | +| pwm_disarmed | `uint16[8]` | | | | +| pwm_failsafe | `uint16[8]` | | | | +| pwm_rate_hz | `uint16[8]` | | | | +| raw_inputs | `uint16[18]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Px4ioStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -46,5 +94,6 @@ uint16[8] pwm_failsafe uint16[8] pwm_rate_hz uint16[18] raw_inputs - ``` + +::: diff --git a/docs/ko/msg_docs/QshellReq.md b/docs/ko/msg_docs/QshellReq.md index 7f8e38c701..451f900693 100644 --- a/docs/ko/msg_docs/QshellReq.md +++ b/docs/ko/msg_docs/QshellReq.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # QshellReq (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/QshellReq.msg) +**TOPICS:** qshell_req + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| cmd | `char[100]` | | | | +| strlen | `uint32` | | | | +| request_sequence | `uint32` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ---------------------------------------------------------- | -------- | ----- | -- | +| MAX_STRLEN | `uint32` | 100 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/QshellReq.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +34,6 @@ char[100] cmd uint32 MAX_STRLEN = 100 uint32 strlen uint32 request_sequence - ``` + +::: diff --git a/docs/ko/msg_docs/QshellRetval.md b/docs/ko/msg_docs/QshellRetval.md index 3a27b00e93..f1113846d0 100644 --- a/docs/ko/msg_docs/QshellRetval.md +++ b/docs/ko/msg_docs/QshellRetval.md @@ -1,10 +1,30 @@ +--- +pageClass: is-wide-page +--- + # QshellRetval (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/QshellRetval.msg) +**TOPICS:** qshell_retval + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------ | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| return_value | `int32` | | | | +| return_sequence | `uint32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/QshellRetval.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) int32 return_value uint32 return_sequence - ``` + +::: diff --git a/docs/ko/msg_docs/RadioStatus.md b/docs/ko/msg_docs/RadioStatus.md index 58c320308e..407a291b68 100644 --- a/docs/ko/msg_docs/RadioStatus.md +++ b/docs/ko/msg_docs/RadioStatus.md @@ -1,9 +1,32 @@ +--- +pageClass: is-wide-page +--- + # RadioStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RadioStatus.msg) +**TOPICS:** radio_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| rssi | `uint8` | | | local signal strength | +| remote_rssi | `uint8` | | | remote signal strength | +| txbuf | `uint8` | | | how full the tx buffer is as a percentage | +| noise | `uint8` | | | background noise level | +| remote_noise | `uint8` | | | remote background noise level | +| rxerrors | `uint16` | | | receive errors | +| fix | `uint16` | | | count of error corrected packets | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RadioStatus.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint8 rssi # local signal strength @@ -16,5 +39,6 @@ uint8 remote_noise # remote background noise level uint16 rxerrors # receive errors uint16 fix # count of error corrected packets - ``` + +::: diff --git a/docs/ko/msg_docs/RaptorInput.md b/docs/ko/msg_docs/RaptorInput.md new file mode 100644 index 0000000000..7089aae299 --- /dev/null +++ b/docs/ko/msg_docs/RaptorInput.md @@ -0,0 +1,59 @@ +--- +pageClass: is-wide-page +--- + +# RaptorInput (UORB message) + +Raptor Input. + +**TOPICS:** raptor_input + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Sampling timestamp of the data this control response is based on | +| active | `bool` | | | Signals if the policy is active (aka publishing actuator_motors) | +| position | `float32[3]` | m [FLU] | | Position of the vehicle_local_position frame | +| orientation | `float32[4]` | | | Orientation in the vehicle_attitude frame but using the FLU convention as a unit quaternion (w, x, y, z) | +| linear_velocity | `float32[3]` | m/s [FLU] | | Linear velocity in the vehicle_local_position frame | +| angular_velocity | `float32[3]` | rad/s [FLU] | | Angular velocity in the body frame | +| previous_action | `float32[4]` | | [-1 : 1] | Previous action. Motor commands normalized to [-1, 1] | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | ---------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ACTION_DIM | `uint8` | 4 | Policy output dimensionality (for quadrotors) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RaptorInput.msg) + +:::details +Click here to see original file + +```c +# Raptor Input + +# The exact inputs to the Raptor foundation policy. +# Having access to the exact inputs helps with debugging and post-hoc analysis. + +uint32 MESSAGE_VERSION = 0 + +uint64 timestamp # [us] Time since system start +uint64 timestamp_sample # [us] Sampling timestamp of the data this control response is based on +bool active # Signals if the policy is active (aka publishing actuator_motors) +float32[3] position # [m] [@frame FLU] Position of the vehicle_local_position frame +float32[4] orientation # [-] Orientation in the vehicle_attitude frame but using the FLU convention as a unit quaternion (w, x, y, z) +float32[3] linear_velocity # [m/s] [@frame FLU] Linear velocity in the vehicle_local_position frame +float32[3] angular_velocity # [rad/s] [@frame FLU] Angular velocity in the body frame +uint8 ACTION_DIM = 4 # Policy output dimensionality (for quadrotors) +float32[4] previous_action # [@range -1, 1] Previous action. Motor commands normalized to [-1, 1] + +# TOPICS raptor_input +``` + +::: diff --git a/docs/ko/msg_docs/RaptorStatus.md b/docs/ko/msg_docs/RaptorStatus.md new file mode 100644 index 0000000000..0325c004db --- /dev/null +++ b/docs/ko/msg_docs/RaptorStatus.md @@ -0,0 +1,109 @@ +--- +pageClass: is-wide-page +--- + +# RaptorStatus (UORB message) + +Raptor Status. + +**TOPICS:** raptor_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Sampling timestamp of the data this control response is based on | +| subscription_update_angular_velocity | `bool` | bool | | Flag signalling if the vehicle_angular_velocity was updated | +| subscription_update_local_position | `bool` | bool | | Flag signalling if the vehicle_local_position was updated | +| subscription_update_attitude | `bool` | bool | | Flag signalling if the vehicle_attitude was updated | +| subscription_update_trajectory_setpoint | `bool` | bool | | Flag signalling if the trajectory_setpoint was updated | +| subscription_update_vehicle_status | `bool` | bool | | Flag signalling if the vehicle_status was updated | +| exit_reason | `uint8` | enum | | Exit reason identifier. Representing conditions that lead to the Raptor policy not being executed | +| timestamp_last_vehicle_angular_velocity | `uint32` | us | | Timestamp of the last received vehicle_angular_velocity message | +| timestamp_last_vehicle_local_position | `uint32` | us | | Timestamp of the last received vehicle_local_position message | +| timestamp_last_vehicle_attitude | `uint32` | us | | Timestamp of the last received vehicle_attitude message | +| timestamp_last_trajectory_setpoint | `uint32` | us | | Timestamp of the last received trajectory_setpoint message | +| vehicle_angular_velocity_stale | `bool` | bool | | True if vehicle_angular_velocity data is considered stale (exceeded timeout) | +| vehicle_local_position_stale | `bool` | bool | | True if vehicle_local_position data is considered stale (exceeded timeout) | +| vehicle_attitude_stale | `bool` | bool | | True if vehicle_attitude data is considered stale (exceeded timeout) | +| trajectory_setpoint_stale | `bool` | bool | | True if trajectory_setpoint data is considered stale (exceeded timeout) | +| active | `bool` | bool | | True if the Raptor policy is currently active (publishing actuator_motors) | +| substep | `uint8` | | | The policy is trained at a fixed frequency (e.g. 100 Hz) but we might want to use it for control at higher frequencies (e.g. 400 Hz), which leads to a number of intermediate steps before the actual policy state is advanced (in this case 4 = 400 Hz / 100 Hz). This field provides the current substep (e.g. 0-3). | +| control_interval | `float32` | s | | Time interval between control updates | +| trajectory_setpoint_dt_mean | `float32` | us | | The average trajectory setpoint arrival time interval (since Raptor mode activation within NUM_TRAJECTORY_SETPOINT_DTS received trajectory_setpoint messages) | +| trajectory_setpoint_dt_max | `float32` | us | | The max trajectory setpoint arrival time interval (since Raptor mode activation and within NUM_TRAJECTORY_SETPOINT_DTS received trajectory_setpoint messages) | +| trajectory_setpoint_dt_max_since_activation | `float32` | us | | The max trajectory setpoint arrival time interval (since Raptor mode activation) | +| internal_reference_position | `float32[3]` | m [FLU] | | Internal reference position | +| internal_reference_linear_velocity | `float32[3]` | m/s [FLU] | | Internal reference linear velocity | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| EXIT_REASON_NONE | `uint8` | 0 | No exit reason => Raptor control step was executed (actuator_motors should have been published) | +| EXIT_REASON_NO_ANGULAR_VELOCITY_UPDATE | `uint8` | 1 | We synchronize the control onto the input observation with the highest update frequency, which is vehicle_angular_velocity. If there was no update, we do not need to execute the policy again | +| EXIT_REASON_NOT_ALL_OBSERVATIONS_SET | `uint8` | 2 | We can not execute the policy if not all observations are available | +| EXIT_REASON_ANGULAR_VELOCITY_STALE | `uint8` | 3 | If OBSERVATION_TIMEOUT_ANGULAR_VELOCITY is exceeded, we treat the vehicle_angular_velocity as stale and can not run the policy | +| EXIT_REASON_LOCAL_POSITION_STALE | `uint8` | 4 | If OBSERVATION_TIMEOUT_LOCAL_POSITION is exceeded, we treat the vehicle_local_position as stale and can not run the policy | +| EXIT_REASON_ATTITUDE_STALE | `uint8` | 5 | If OBSERVATION_TIMEOUT_ATTITUDE is exceeded, we treat the vehicle_attitude as stale and can not run the policy | +| EXIT_REASON_EXECUTOR_STATUS_SOURCE_NOT_CONTROL | `uint8` | 6 | The executor that runs the policy can run in oversampling mode, where it decides if the policy should be ran based on the timestamp and not based on fixed synchronization onto the vehicle_angular_velocity. In this case the executor can decide to skip running the policy if the interval is too small, in which case this flag is set. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RaptorStatus.msg) + +:::details +Click here to see original file + +```c +# Raptor Status + +# Diagnostic messages for the Raptor foundation policy. +# This diagnostic data is useful for debugging (e.g. identifying missing input information). + +uint32 MESSAGE_VERSION = 0 + +uint64 timestamp # [us] Time since system start +uint64 timestamp_sample # [us] Sampling timestamp of the data this control response is based on +bool subscription_update_angular_velocity # [bool] Flag signalling if the vehicle_angular_velocity was updated +bool subscription_update_local_position # [bool] Flag signalling if the vehicle_local_position was updated +bool subscription_update_attitude # [bool] Flag signalling if the vehicle_attitude was updated +bool subscription_update_trajectory_setpoint # [bool] Flag signalling if the trajectory_setpoint was updated +bool subscription_update_vehicle_status # [bool] Flag signalling if the vehicle_status was updated + +uint8 exit_reason # [enum] Exit reason identifier. Representing conditions that lead to the Raptor policy not being executed +uint8 EXIT_REASON_NONE = 0 # No exit reason => Raptor control step was executed (actuator_motors should have been published) +uint8 EXIT_REASON_NO_ANGULAR_VELOCITY_UPDATE = 1 # We synchronize the control onto the input observation with the highest update frequency, which is vehicle_angular_velocity. If there was no update, we do not need to execute the policy again +uint8 EXIT_REASON_NOT_ALL_OBSERVATIONS_SET = 2 # We can not execute the policy if not all observations are available +uint8 EXIT_REASON_ANGULAR_VELOCITY_STALE = 3 # If OBSERVATION_TIMEOUT_ANGULAR_VELOCITY is exceeded, we treat the vehicle_angular_velocity as stale and can not run the policy +uint8 EXIT_REASON_LOCAL_POSITION_STALE = 4 # If OBSERVATION_TIMEOUT_LOCAL_POSITION is exceeded, we treat the vehicle_local_position as stale and can not run the policy +uint8 EXIT_REASON_ATTITUDE_STALE = 5 # If OBSERVATION_TIMEOUT_ATTITUDE is exceeded, we treat the vehicle_attitude as stale and can not run the policy +uint8 EXIT_REASON_EXECUTOR_STATUS_SOURCE_NOT_CONTROL = 6 # The executor that runs the policy can run in oversampling mode, where it decides if the policy should be ran based on the timestamp and not based on fixed synchronization onto the vehicle_angular_velocity. In this case the executor can decide to skip running the policy if the interval is too small, in which case this flag is set. + +uint32 timestamp_last_vehicle_angular_velocity # [us] Timestamp of the last received vehicle_angular_velocity message +uint32 timestamp_last_vehicle_local_position # [us] Timestamp of the last received vehicle_local_position message +uint32 timestamp_last_vehicle_attitude # [us] Timestamp of the last received vehicle_attitude message +uint32 timestamp_last_trajectory_setpoint # [us] Timestamp of the last received trajectory_setpoint message + +bool vehicle_angular_velocity_stale # [bool] True if vehicle_angular_velocity data is considered stale (exceeded timeout) +bool vehicle_local_position_stale # [bool] True if vehicle_local_position data is considered stale (exceeded timeout) +bool vehicle_attitude_stale # [bool] True if vehicle_attitude data is considered stale (exceeded timeout) +bool trajectory_setpoint_stale # [bool] True if trajectory_setpoint data is considered stale (exceeded timeout) + +bool active # [bool] True if the Raptor policy is currently active (publishing actuator_motors) +uint8 substep # [-] The policy is trained at a fixed frequency (e.g. 100 Hz) but we might want to use it for control at higher frequencies (e.g. 400 Hz), which leads to a number of intermediate steps before the actual policy state is advanced (in this case 4 = 400 Hz / 100 Hz). This field provides the current substep (e.g. 0-3). +float32 control_interval # [s] Time interval between control updates + +float32 trajectory_setpoint_dt_mean # [us] The average trajectory setpoint arrival time interval (since Raptor mode activation within NUM_TRAJECTORY_SETPOINT_DTS received trajectory_setpoint messages) +float32 trajectory_setpoint_dt_max # [us] The max trajectory setpoint arrival time interval (since Raptor mode activation and within NUM_TRAJECTORY_SETPOINT_DTS received trajectory_setpoint messages) +float32 trajectory_setpoint_dt_max_since_activation # [us] The max trajectory setpoint arrival time interval (since Raptor mode activation) + +float32[3] internal_reference_position # [m] [@frame FLU] Internal reference position +float32[3] internal_reference_linear_velocity # [m/s] [@frame FLU] Internal reference linear velocity + +# TOPICS raptor_status +``` + +::: diff --git a/docs/ko/msg_docs/RateCtrlStatus.md b/docs/ko/msg_docs/RateCtrlStatus.md index 90eaa1208f..9b297ca4a0 100644 --- a/docs/ko/msg_docs/RateCtrlStatus.md +++ b/docs/ko/msg_docs/RateCtrlStatus.md @@ -1,6 +1,26 @@ +--- +pageClass: is-wide-page +--- + # RateCtrlStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RateCtrlStatus.msg) +**TOPICS:** rate_ctrlstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| rollspeed_integ | `float32` | | | | +| pitchspeed_integ | `float32` | | | | +| yawspeed_integ | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RateCtrlStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -9,5 +29,6 @@ uint64 timestamp # time since system start (microseconds) float32 rollspeed_integ float32 pitchspeed_integ float32 yawspeed_integ - ``` + +::: diff --git a/docs/ko/msg_docs/RcChannels.md b/docs/ko/msg_docs/RcChannels.md index 7abb87c0bc..90baf9744a 100644 --- a/docs/ko/msg_docs/RcChannels.md +++ b/docs/ko/msg_docs/RcChannels.md @@ -1,6 +1,66 @@ +--- +pageClass: is-wide-page +--- + # RcChannels (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RcChannels.msg) +**TOPICS:** rc_channels + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------------- | ------------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_last_valid | `uint64` | | | Timestamp of last valid RC signal | +| channels | `float32[18]` | | | Scaled to -1..1 (throttle: 0..1) | +| channel_count | `uint8` | | | Number of valid channels | +| function | `int8[30]` | | | Functions mapping | +| rssi | `uint8` | | | Receive signal strength index | +| signal_lost | `bool` | | | Control signal lost, should be checked together with topic timeout | +| frame_drop_count | `uint32` | | | Number of dropped frames | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------- | ----- | -- | +| FUNCTION_THROTTLE | `uint8` | 0 | | +| FUNCTION_ROLL | `uint8` | 1 | | +| FUNCTION_PITCH | `uint8` | 2 | | +| FUNCTION_YAW | `uint8` | 3 | | +| FUNCTION_RETURN | `uint8` | 4 | | +| FUNCTION_LOITER | `uint8` | 5 | | +| FUNCTION_OFFBOARD | `uint8` | 6 | | +| FUNCTION_FLAPS | `uint8` | 7 | | +| FUNCTION_AUX_1 | `uint8` | 8 | | +| FUNCTION_AUX_2 | `uint8` | 9 | | +| FUNCTION_AUX_3 | `uint8` | 10 | | +| FUNCTION_AUX_4 | `uint8` | 11 | | +| FUNCTION_AUX_5 | `uint8` | 12 | | +| FUNCTION_AUX_6 | `uint8` | 13 | | +| FUNCTION_PARAM_1 | `uint8` | 14 | | +| FUNCTION_PARAM_2 | `uint8` | 15 | | +| FUNCTION_PARAM_3_5 | `uint8` | 16 | | +| FUNCTION_KILLSWITCH | `uint8` | 17 | | +| FUNCTION_TRANSITION | `uint8` | 18 | | +| FUNCTION_GEAR | `uint8` | 19 | | +| FUNCTION_ARMSWITCH | `uint8` | 20 | | +| FUNCTION_FLTBTN_SLOT_1 | `uint8` | 21 | | +| FUNCTION_FLTBTN_SLOT_2 | `uint8` | 22 | | +| FUNCTION_FLTBTN_SLOT_3 | `uint8` | 23 | | +| FUNCTION_FLTBTN_SLOT_4 | `uint8` | 24 | | +| FUNCTION_FLTBTN_SLOT_5 | `uint8` | 25 | | +| FUNCTION_FLTBTN_SLOT_6 | `uint8` | 26 | | +| FUNCTION_ENGAGE_MAIN_MOTOR | `uint8` | 27 | | +| FUNCTION_PAYLOAD_POWER | `uint8` | 28 | | +| FUNCTION_TERMINATION | `uint8` | 29 | | +| FUNCTION_FLTBTN_SLOT_COUNT | `uint8` | 6 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RcChannels.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -45,5 +105,6 @@ int8[30] function # Functions mapping uint8 rssi # Receive signal strength index bool signal_lost # Control signal lost, should be checked together with topic timeout uint32 frame_drop_count # Number of dropped frames - ``` + +::: diff --git a/docs/ko/msg_docs/RcParameterMap.md b/docs/ko/msg_docs/RcParameterMap.md index e1ced1f8d1..52fbfddb41 100644 --- a/docs/ko/msg_docs/RcParameterMap.md +++ b/docs/ko/msg_docs/RcParameterMap.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # RcParameterMap (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RcParameterMap.msg) +**TOPICS:** rc_parametermap + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| valid | `bool[3]` | | | true for RC-Param channels which are mapped to a param | +| param_index | `int32[3]` | | | corresponding param index, this field is ignored if set to -1, in this case param_id will be used | +| param_id | `char[51]` | | | MAP_NCHAN \* (ID_LEN + 1) chars, corresponding param id, null terminated | +| scale | `float32[3]` | | | scale to map the RC input [-1, 1] to a parameter value | +| value0 | `float32[3]` | | | initial value around which the parameter value is changed | +| value_min | `float32[3]` | | | minimal parameter value | +| value_max | `float32[3]` | | | minimal parameter value | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| RC_PARAM_MAP_NCHAN | `uint8` | 3 | This limit is also hardcoded in the enum RC_CHANNELS_FUNCTION in rc_channels.h | +| PARAM_ID_LEN | `uint8` | 16 | corresponds to MAVLINK_MSG_PARAM_VALUE_FIELD_PARAM_ID_LEN | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RcParameterMap.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +45,6 @@ float32[3] scale # scale to map the RC input [-1, 1] to a parameter value float32[3] value0 # initial value around which the parameter value is changed float32[3] value_min # minimal parameter value float32[3] value_max # minimal parameter value - ``` + +::: diff --git a/docs/ko/msg_docs/RegisterExtComponentReply.md b/docs/ko/msg_docs/RegisterExtComponentReply.md index 119703472a..0f210ccbef 100644 --- a/docs/ko/msg_docs/RegisterExtComponentReply.md +++ b/docs/ko/msg_docs/RegisterExtComponentReply.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # RegisterExtComponentReply (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RegisterExtComponentReply.msg) +**TOPICS:** register_extcomponent_reply + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint64` | | | ID from the request | +| name | `char[25]` | | | name from the request | +| px4_ros2_api_version | `uint16` | | | | +| success | `bool` | | | | +| arming_check_id | `int8` | | | arming check registration ID (-1 if invalid) | +| mode_id | `int8` | | | assigned mode ID (-1 if invalid) | +| mode_executor_id | `int8` | | | assigned mode executor ID (-1 if invalid) | +| not_user_selectable | `bool` | | | mode cannot be selected by the user | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RegisterExtComponentReply.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 1 @@ -20,5 +52,6 @@ int8 mode_executor_id # assigned mode executor ID (-1 if invalid) bool not_user_selectable # mode cannot be selected by the user uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/ko/msg_docs/RegisterExtComponentReplyV0.md b/docs/ko/msg_docs/RegisterExtComponentReplyV0.md index cceec88d5c..3266cff2ce 100644 --- a/docs/ko/msg_docs/RegisterExtComponentReplyV0.md +++ b/docs/ko/msg_docs/RegisterExtComponentReplyV0.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # RegisterExtComponentReplyV0 (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/RegisterExtComponentReplyV0.msg) +**TOPICS:** register_extcomponent_replyv0 + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint64` | | | ID from the request | +| name | `char[25]` | | | name from the request | +| px4_ros2_api_version | `uint16` | | | | +| success | `bool` | | | | +| arming_check_id | `int8` | | | arming check registration ID (-1 if invalid) | +| mode_id | `int8` | | | assigned mode ID (-1 if invalid) | +| mode_executor_id | `int8` | | | assigned mode executor ID (-1 if invalid) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/RegisterExtComponentReplyV0.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -18,5 +49,6 @@ int8 mode_id # assigned mode ID (-1 if invalid) int8 mode_executor_id # assigned mode executor ID (-1 if invalid) uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/ko/msg_docs/RegisterExtComponentRequest.md b/docs/ko/msg_docs/RegisterExtComponentRequest.md index 814ea6e51b..c373dd7477 100644 --- a/docs/ko/msg_docs/RegisterExtComponentRequest.md +++ b/docs/ko/msg_docs/RegisterExtComponentRequest.md @@ -1,8 +1,43 @@ +--- +pageClass: is-wide-page +--- + # RegisterExtComponentRequest (UORB message) -Request to register an external component +Request to register an external component. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RegisterExtComponentRequest.msg) +**TOPICS:** register_extcomponent_request + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint64` | | | ID, set this to a random value | +| name | `char[25]` | | | either the requested mode name, or component name | +| px4_ros2_api_version | `uint16` | | | Set to LATEST_PX4_ROS2_API_VERSION | +| register_arming_check | `bool` | | | | +| register_mode | `bool` | | | registering a mode also requires arming_check to be set | +| register_mode_executor | `bool` | | | registering an executor also requires a mode to be registered (which is the owned mode by the executor) | +| enable_replace_internal_mode | `bool` | | | set to true if an internal mode should be replaced | +| replace_internal_mode | `uint8` | | | vehicle_status::NAVIGATION_STATE_\* | +| activate_mode_immediately | `bool` | | | switch to the registered mode (can only be set in combination with an executor) | +| not_user_selectable | `bool` | | | mode cannot be selected by the user | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 1 | | +| LATEST_PX4_ROS2_API_VERSION | `uint16` | 1 | API version compatibility. Increase this on a breaking semantic change. Changes to any message field are detected separately and do not require an API version change. | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/RegisterExtComponentRequest.msg) + +:::details +Click here to see original file ```c # Request to register an external component @@ -29,5 +64,6 @@ bool activate_mode_immediately # switch to the registered mode (can only be bool not_user_selectable # mode cannot be selected by the user uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/ko/msg_docs/RegisterExtComponentRequestV0.md b/docs/ko/msg_docs/RegisterExtComponentRequestV0.md index 58e99a484e..ce3700a623 100644 --- a/docs/ko/msg_docs/RegisterExtComponentRequestV0.md +++ b/docs/ko/msg_docs/RegisterExtComponentRequestV0.md @@ -1,8 +1,42 @@ +--- +pageClass: is-wide-page +--- + # RegisterExtComponentRequestV0 (UORB message) -Request to register an external component +Request to register an external component. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/RegisterExtComponentRequestV0.msg) +**TOPICS:** register_extcomponent_requestv0 + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_id | `uint64` | | | ID, set this to a random value | +| name | `char[25]` | | | either the requested mode name, or component name | +| px4_ros2_api_version | `uint16` | | | Set to LATEST_PX4_ROS2_API_VERSION | +| register_arming_check | `bool` | | | | +| register_mode | `bool` | | | registering a mode also requires arming_check to be set | +| register_mode_executor | `bool` | | | registering an executor also requires a mode to be registered (which is the owned mode by the executor) | +| enable_replace_internal_mode | `bool` | | | set to true if an internal mode should be replaced | +| replace_internal_mode | `uint8` | | | vehicle_status::NAVIGATION_STATE_\* | +| activate_mode_immediately | `bool` | | | switch to the registered mode (can only be set in combination with an executor) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| LATEST_PX4_ROS2_API_VERSION | `uint16` | 1 | API version compatibility. Increase this on a breaking semantic change. Changes to any message field are detected separately and do not require an API version change. | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/RegisterExtComponentRequestV0.msg) + +:::details +Click here to see original file ```c # Request to register an external component @@ -29,5 +63,6 @@ bool activate_mode_immediately # switch to the registered mode (can only be uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/ko/msg_docs/RoverAttitudeSetpoint.md b/docs/ko/msg_docs/RoverAttitudeSetpoint.md index ca75a6e3e2..2d6d3c390f 100644 --- a/docs/ko/msg_docs/RoverAttitudeSetpoint.md +++ b/docs/ko/msg_docs/RoverAttitudeSetpoint.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # RoverAttitudeSetpoint (UORB message) -Rover Attitude Setpoint +Rover Attitude Setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverAttitudeSetpoint.msg) +**TOPICS:** rover_attitudesetpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | --------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------- | +| timestamp | `uint64` | us | | Time since system start | +| yaw_setpoint | `float32` | rad [NED] | [-inf : inf] | Yaw setpoint | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverAttitudeSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Attitude Setpoint uint64 timestamp # [us] Time since system start float32 yaw_setpoint # [rad] [@range -inf, inf] [@frame NED] Yaw setpoint - ``` + +::: diff --git a/docs/ko/msg_docs/RoverAttitudeStatus.md b/docs/ko/msg_docs/RoverAttitudeStatus.md index f5a9ce1f02..416d52ec34 100644 --- a/docs/ko/msg_docs/RoverAttitudeStatus.md +++ b/docs/ko/msg_docs/RoverAttitudeStatus.md @@ -1,8 +1,27 @@ +--- +pageClass: is-wide-page +--- + # RoverAttitudeStatus (UORB message) -Rover Attitude Status +Rover Attitude Status. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverAttitudeStatus.msg) +**TOPICS:** rover_attitudestatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| measured_yaw | `float32` | rad [NED] | [-pi : pi] | Measured yaw | +| adjusted_yaw_setpoint | `float32` | rad [NED] | [-pi : pi] | Yaw setpoint that is being tracked (Applied slew rates) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverAttitudeStatus.msg) + +:::details +Click here to see original file ```c # Rover Attitude Status @@ -10,5 +29,6 @@ Rover Attitude Status uint64 timestamp # [us] Time since system start float32 measured_yaw # [rad] [@range -pi, pi] [@frame NED]Measured yaw float32 adjusted_yaw_setpoint # [rad] [@range -pi, pi] [@frame NED] Yaw setpoint that is being tracked (Applied slew rates) - ``` + +::: diff --git a/docs/ko/msg_docs/RoverPositionSetpoint.md b/docs/ko/msg_docs/RoverPositionSetpoint.md index 751536e7f9..7371a64cc6 100644 --- a/docs/ko/msg_docs/RoverPositionSetpoint.md +++ b/docs/ko/msg_docs/RoverPositionSetpoint.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # RoverPositionSetpoint (UORB message) -Rover Position Setpoint +Rover Position Setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverPositionSetpoint.msg) +**TOPICS:** rover_positionsetpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------- | ------------ | ---------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| position_ned | `float32[2]` | m [NED] | [-inf : inf] | Target position | +| start_ned | `float32[2]` | m [NED] | [-inf : inf] | Start position which specifies a line for the rover to track (Invalid: NaN Defaults to vehicle position) | +| cruising_speed | `float32` | m/s | [0 : inf] | Cruising speed (Invalid: NaN Defaults to maximum speed) | +| arrival_speed | `float32` | m/s | [0 : inf] | Speed the rover should arrive at the target with (Invalid: NaN Defaults to 0) | +| yaw | `float32` | rad [NED] | [-pi : pi] | Mecanum only: Specify vehicle yaw during travel (Invalid: NaN Defaults to vehicle yaw) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverPositionSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Position Setpoint @@ -13,5 +35,6 @@ float32[2] start_ned # [m] [@range -inf, inf] [@frame NED] [@invalid NaN Def float32 cruising_speed # [m/s] [@range 0, inf] [@invalid NaN Defaults to maximum speed] Cruising speed float32 arrival_speed # [m/s] [@range 0, inf] [@invalid NaN Defaults to 0] Speed the rover should arrive at the target with float32 yaw # [rad] [@range -pi,pi] [@frame NED] [@invalid NaN Defaults to vehicle yaw] Mecanum only: Specify vehicle yaw during travel - ``` + +::: diff --git a/docs/ko/msg_docs/RoverRateSetpoint.md b/docs/ko/msg_docs/RoverRateSetpoint.md index 9bb844e802..35029e72d3 100644 --- a/docs/ko/msg_docs/RoverRateSetpoint.md +++ b/docs/ko/msg_docs/RoverRateSetpoint.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # RoverRateSetpoint (UORB message) -Rover Rate setpoint +Rover Rate setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverRateSetpoint.msg) +**TOPICS:** rover_ratesetpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------- | --------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------- | +| timestamp | `uint64` | us | | Time since system start | +| yaw_rate_setpoint | `float32` | rad/s [NED] | [-inf : inf] | Yaw rate setpoint | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverRateSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Rate setpoint uint64 timestamp # [us] Time since system start float32 yaw_rate_setpoint # [rad/s] [@range -inf, inf] [@frame NED] Yaw rate setpoint - ``` + +::: diff --git a/docs/ko/msg_docs/RoverRateStatus.md b/docs/ko/msg_docs/RoverRateStatus.md index 70345fe315..3bd0642d4f 100644 --- a/docs/ko/msg_docs/RoverRateStatus.md +++ b/docs/ko/msg_docs/RoverRateStatus.md @@ -1,8 +1,28 @@ +--- +pageClass: is-wide-page +--- + # RoverRateStatus (UORB message) -Rover Rate Status +Rover Rate Status. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverRateStatus.msg) +**TOPICS:** rover_ratestatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| measured_yaw_rate | `float32` | rad/s [NED] | [-inf : inf] | Measured yaw rate | +| adjusted_yaw_rate_setpoint | `float32` | rad/s [NED] | [-inf : inf] | Yaw rate setpoint that is being tracked (Applied slew rates) | +| pid_yaw_rate_integral | `float32` | | [-1 : 1] | Integral of the PID for the closed loop yaw rate controller | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverRateStatus.msg) + +:::details +Click here to see original file ```c # Rover Rate Status @@ -11,5 +31,6 @@ uint64 timestamp # [us] Time since system start float32 measured_yaw_rate # [rad/s] [@range -inf, inf] [@frame NED] Measured yaw rate float32 adjusted_yaw_rate_setpoint # [rad/s] [@range -inf, inf] [@frame NED] Yaw rate setpoint that is being tracked (Applied slew rates) float32 pid_yaw_rate_integral # [-] [@range -1, 1] Integral of the PID for the closed loop yaw rate controller - ``` + +::: diff --git a/docs/ko/msg_docs/RoverSpeedSetpoint.md b/docs/ko/msg_docs/RoverSpeedSetpoint.md index 84176cd1c3..3c87dda1fe 100644 --- a/docs/ko/msg_docs/RoverSpeedSetpoint.md +++ b/docs/ko/msg_docs/RoverSpeedSetpoint.md @@ -1,8 +1,27 @@ +--- +pageClass: is-wide-page +--- + # RoverSpeedSetpoint (UORB message) -Rover Speed Setpoint +Rover Speed Setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSpeedSetpoint.msg) +**TOPICS:** rover_speedsetpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------ | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| speed_body_x | `float32` | m/s [Body] | [-inf (Backwards) : inf (Forwards)] | Speed setpoint in body x direction | +| speed_body_y | `float32` | m/s [Body] | [-inf (Left) : inf (Right)] | Mecanum only: Speed setpoint in body y direction (Invalid: NaN If not mecanum) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSpeedSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Speed Setpoint @@ -10,5 +29,6 @@ Rover Speed Setpoint uint64 timestamp # [us] Time since system start float32 speed_body_x # [m/s] [@range -inf (Backwards), inf (Forwards)] [@frame Body] Speed setpoint in body x direction float32 speed_body_y # [m/s] [@range -inf (Left), inf (Right)] [@frame Body] [@invalid NaN If not mecanum] Mecanum only: Speed setpoint in body y direction - ``` + +::: diff --git a/docs/ko/msg_docs/RoverSpeedStatus.md b/docs/ko/msg_docs/RoverSpeedStatus.md index 4213e1e5df..161c20da43 100644 --- a/docs/ko/msg_docs/RoverSpeedStatus.md +++ b/docs/ko/msg_docs/RoverSpeedStatus.md @@ -1,8 +1,31 @@ +--- +pageClass: is-wide-page +--- + # RoverSpeedStatus (UORB message) -Rover Velocity Status +Rover Velocity Status. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSpeedStatus.msg) +**TOPICS:** rover_speedstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| measured_speed_body_x | `float32` | m/s [Body] | [-inf (Backwards) : inf (Forwards)] | Measured speed in body x direction | +| adjusted_speed_body_x_setpoint | `float32` | m/s [Body] | [-inf (Backwards) : inf (Forwards)] | Speed setpoint in body x direction that is being tracked (Applied slew rates) | +| pid_throttle_body_x_integral | `float32` | | [-1 : 1] | Integral of the PID for the closed loop controller of the speed in body x direction | +| measured_speed_body_y | `float32` | m/s [Body] | [-inf (Left) : inf (Right)] | Mecanum only: Measured speed in body y direction (Invalid: NaN If not mecanum) | +| adjusted_speed_body_y_setpoint | `float32` | m/s [Body] | [-inf (Left) : inf (Right)] | Mecanum only: Speed setpoint in body y direction that is being tracked (Applied slew rates) (Invalid: NaN If not mecanum) | +| pid_throttle_body_y_integral | `float32` | | [-1 : 1] | Mecanum only: Integral of the PID for the closed loop controller of the speed in body y direction (Invalid: NaN If not mecanum) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSpeedStatus.msg) + +:::details +Click here to see original file ```c # Rover Velocity Status @@ -14,5 +37,6 @@ float32 pid_throttle_body_x_integral # [-] [@range -1, 1] Integral of the PID float32 measured_speed_body_y # [m/s] [@range -inf (Left), inf (Right)] [@frame Body] [@invalid NaN If not mecanum] Mecanum only: Measured speed in body y direction float32 adjusted_speed_body_y_setpoint # [m/s] [@range -inf (Left), inf (Right)] [@frame Body] [@invalid NaN If not mecanum] Mecanum only: Speed setpoint in body y direction that is being tracked (Applied slew rates) float32 pid_throttle_body_y_integral # [-] [@range -1, 1] [@invalid NaN If not mecanum] Mecanum only: Integral of the PID for the closed loop controller of the speed in body y direction - ``` + +::: diff --git a/docs/ko/msg_docs/RoverSteeringSetpoint.md b/docs/ko/msg_docs/RoverSteeringSetpoint.md index 974f3fc4c9..fb18a4dd08 100644 --- a/docs/ko/msg_docs/RoverSteeringSetpoint.md +++ b/docs/ko/msg_docs/RoverSteeringSetpoint.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # RoverSteeringSetpoint (UORB message) -Rover Steering setpoint +Rover Steering setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSteeringSetpoint.msg) +**TOPICS:** rover_steeringsetpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| normalized_steering_setpoint | `float32` | [Body] | [-1 (Left) : 1 (Right)] | Ackermann: Normalized steering angle, Differential/Mecanum: Normalized speed difference between the left and right wheels | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverSteeringSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Steering setpoint uint64 timestamp # [us] Time since system start float32 normalized_steering_setpoint # [-] [@range -1 (Left), 1 (Right)] [@frame Body] Ackermann: Normalized steering angle, Differential/Mecanum: Normalized speed difference between the left and right wheels - ``` + +::: diff --git a/docs/ko/msg_docs/RoverThrottleSetpoint.md b/docs/ko/msg_docs/RoverThrottleSetpoint.md index bd5ee93d55..d05660b098 100644 --- a/docs/ko/msg_docs/RoverThrottleSetpoint.md +++ b/docs/ko/msg_docs/RoverThrottleSetpoint.md @@ -1,8 +1,27 @@ +--- +pageClass: is-wide-page +--- + # RoverThrottleSetpoint (UORB message) -Rover Throttle setpoint +Rover Throttle setpoint. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverThrottleSetpoint.msg) +**TOPICS:** rover_throttlesetpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| throttle_body_x | `float32` | [Body] | [-1 (Backwards) : 1 (Forwards)] | Throttle setpoint along body X axis | +| throttle_body_y | `float32` | [Body] | [-1 (Left) : 1 (Right)] | Mecanum only: Throttle setpoint along body Y axis (Invalid: NaN If not mecanum) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverThrottleSetpoint.msg) + +:::details +Click here to see original file ```c # Rover Throttle setpoint @@ -10,5 +29,6 @@ Rover Throttle setpoint uint64 timestamp # [us] Time since system start float32 throttle_body_x # [-] [@range -1 (Backwards), 1 (Forwards)] [@frame Body] Throttle setpoint along body X axis float32 throttle_body_y # [-] [@range -1 (Left), 1 (Right)] [@frame Body] [@invalid NaN If not mecanum] Mecanum only: Throttle setpoint along body Y axis - ``` + +::: diff --git a/docs/ko/msg_docs/Rpm.md b/docs/ko/msg_docs/Rpm.md index ff2bf9c827..0fd75037af 100644 --- a/docs/ko/msg_docs/Rpm.md +++ b/docs/ko/msg_docs/Rpm.md @@ -1,6 +1,25 @@ +--- +pageClass: is-wide-page +--- + # Rpm (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Rpm.msg) +**TOPICS:** rpm + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| rpm_estimate | `float32` | | | filtered revolutions per minute | +| rpm_raw | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Rpm.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +27,6 @@ uint64 timestamp # time since system start (microseconds) # rpm values of 0.0 mean within a timeout there is no movement measured float32 rpm_estimate # filtered revolutions per minute float32 rpm_raw - ``` + +::: diff --git a/docs/ko/msg_docs/RtlStatus.md b/docs/ko/msg_docs/RtlStatus.md index e585898e8b..b2937a5a61 100644 --- a/docs/ko/msg_docs/RtlStatus.md +++ b/docs/ko/msg_docs/RtlStatus.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # RtlStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RtlStatus.msg) +**TOPICS:** rtl_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| safe_points_id | `uint32` | | | unique ID of active set of safe_point_items | +| is_evaluation_pending | `bool` | | | flag if the RTL point needs reevaluation (e.g. new safe points available, but need loading). | +| has_vtol_approach | `bool` | | | flag if approaches are defined for current RTL_TYPE parameter setting | +| rtl_type | `uint8` | | | Type of RTL chosen | +| safe_point_index | `uint8` | | | index of the chosen safe point, if in RTL_STATUS_TYPE_DIRECT_SAFE_POINT mode | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| RTL_STATUS_TYPE_NONE | `uint8` | 0 | pending if evaluation can't pe performed currently e.g. when it is still loading the safe points | +| RTL_STATUS_TYPE_DIRECT_SAFE_POINT | `uint8` | 1 | chosen to directly go to a safe point or home position | +| RTL_STATUS_TYPE_DIRECT_MISSION_LAND | `uint8` | 2 | going straight to the beginning of the mission landing | +| RTL_STATUS_TYPE_FOLLOW_MISSION | `uint8` | 3 | Following the mission from start index to mission landing. Start index is current WP if in Mission mode, and closest WP otherwise. | +| RTL_STATUS_TYPE_FOLLOW_MISSION_REVERSE | `uint8` | 4 | Following the mission in reverse from start index to the beginning of the mission. Start index is previous WP if in Mission mode, and closest WP otherwise. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RtlStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +50,6 @@ uint8 RTL_STATUS_TYPE_DIRECT_SAFE_POINT=1 # chosen to directly go to a safe poi uint8 RTL_STATUS_TYPE_DIRECT_MISSION_LAND=2 # going straight to the beginning of the mission landing uint8 RTL_STATUS_TYPE_FOLLOW_MISSION=3 # Following the mission from start index to mission landing. Start index is current WP if in Mission mode, and closest WP otherwise. uint8 RTL_STATUS_TYPE_FOLLOW_MISSION_REVERSE=4 # Following the mission in reverse from start index to the beginning of the mission. Start index is previous WP if in Mission mode, and closest WP otherwise. - ``` + +::: diff --git a/docs/ko/msg_docs/RtlTimeEstimate.md b/docs/ko/msg_docs/RtlTimeEstimate.md index a12f553d71..640008a18e 100644 --- a/docs/ko/msg_docs/RtlTimeEstimate.md +++ b/docs/ko/msg_docs/RtlTimeEstimate.md @@ -1,6 +1,26 @@ +--- +pageClass: is-wide-page +--- + # RtlTimeEstimate (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RtlTimeEstimate.msg) +**TOPICS:** rtl_timeestimate + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| valid | `bool` | | | Flag indicating whether the time estiamtes are valid | +| time_estimate | `float32` | s | | Estimated time for RTL | +| safe_time_estimate | `float32` | s | | Same as time_estimate, but with safety factor and safety margin included (factor\*t + margin) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RtlTimeEstimate.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +28,6 @@ uint64 timestamp # time since system start (microseconds) bool valid # Flag indicating whether the time estiamtes are valid float32 time_estimate # [s] Estimated time for RTL float32 safe_time_estimate # [s] Same as time_estimate, but with safety factor and safety margin included (factor*t + margin) - ``` + +::: diff --git a/docs/ko/msg_docs/SatelliteInfo.md b/docs/ko/msg_docs/SatelliteInfo.md index c040856148..244068aee3 100644 --- a/docs/ko/msg_docs/SatelliteInfo.md +++ b/docs/ko/msg_docs/SatelliteInfo.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # SatelliteInfo (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SatelliteInfo.msg) +**TOPICS:** satellite_info + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------- | ----------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| count | `uint8` | | | Number of satellites visible to the receiver | +| svid | `uint8[40]` | | | Space vehicle ID [1..255], see scheme below | +| used | `uint8[40]` | | | 0: Satellite not used, 1: used for navigation | +| elevation | `uint8[40]` | | | Elevation (0: right on top of receiver, 90: on the horizon) of satellite | +| azimuth | `uint8[40]` | | | Direction of satellite, 0: 0 deg, 255: 360 deg. | +| snr | `uint8[40]` | | | dBHz, Signal to noise ratio of satellite C/N0, range 0..99, zero when not tracking this satellite. | +| prn | `uint8[40]` | | | Satellite PRN code assignment, (psuedorandom number SBAS, valid codes are 120-144) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------ | ------- | ----- | -- | +| SAT_INFO_MAX_SATELLITES | `uint8` | 40 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SatelliteInfo.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -13,5 +43,6 @@ uint8[40] elevation # Elevation (0: right on top of receiver, 90: on the horizo uint8[40] azimuth # Direction of satellite, 0: 0 deg, 255: 360 deg. uint8[40] snr # dBHz, Signal to noise ratio of satellite C/N0, range 0..99, zero when not tracking this satellite. uint8[40] prn # Satellite PRN code assignment, (psuedorandom number SBAS, valid codes are 120-144) - ``` + +::: diff --git a/docs/ko/msg_docs/SensorAccel.md b/docs/ko/msg_docs/SensorAccel.md index 7f7ad93e57..e73dd5b593 100644 --- a/docs/ko/msg_docs/SensorAccel.md +++ b/docs/ko/msg_docs/SensorAccel.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # SensorAccel (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAccel.msg) +**TOPICS:** sensor_accel + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| x | `float32` | | | acceleration in the FRD board frame X-axis in m/s^2 | +| y | `float32` | | | acceleration in the FRD board frame Y-axis in m/s^2 | +| z | `float32` | | | acceleration in the FRD board frame Z-axis in m/s^2 | +| temperature | `float32` | | | temperature in degrees Celsius | +| error_count | `uint32` | | | | +| clip_counter | `uint8[3]` | | | clip count per axis in the sample period | +| samples | `uint8` | | | number of raw samples that went into this message | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAccel.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -21,5 +53,6 @@ uint8[3] clip_counter # clip count per axis in the sample period uint8 samples # number of raw samples that went into this message uint8 ORB_QUEUE_LENGTH = 8 - ``` + +::: diff --git a/docs/ko/msg_docs/SensorAccelFifo.md b/docs/ko/msg_docs/SensorAccelFifo.md index 86f5a02a06..210582255b 100644 --- a/docs/ko/msg_docs/SensorAccelFifo.md +++ b/docs/ko/msg_docs/SensorAccelFifo.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # SensorAccelFifo (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAccelFifo.msg) +**TOPICS:** sensor_accelfifo + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| dt | `float32` | | | delta time between samples (microseconds) | +| scale | `float32` | | | | +| samples | `uint8` | | | number of valid samples | +| x | `int16[32]` | | | acceleration in the FRD board frame X-axis in m/s^2 | +| y | `int16[32]` | | | acceleration in the FRD board frame Y-axis in m/s^2 | +| z | `int16[32]` | | | acceleration in the FRD board frame Z-axis in m/s^2 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAccelFifo.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -16,5 +41,6 @@ uint8 samples # number of valid samples int16[32] x # acceleration in the FRD board frame X-axis in m/s^2 int16[32] y # acceleration in the FRD board frame Y-axis in m/s^2 int16[32] z # acceleration in the FRD board frame Z-axis in m/s^2 - ``` + +::: diff --git a/docs/ko/msg_docs/SensorAirflow.md b/docs/ko/msg_docs/SensorAirflow.md index 82b8706060..f0578936ac 100644 --- a/docs/ko/msg_docs/SensorAirflow.md +++ b/docs/ko/msg_docs/SensorAirflow.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # SensorAirflow (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAirflow.msg) +**TOPICS:** sensor_airflow + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| speed | `float32` | | | the speed being reported by the wind / airflow sensor | +| direction | `float32` | | | the direction being reported by the wind / airflow sensor | +| status | `uint8` | | | Status code from the sensor | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAirflow.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +29,6 @@ uint32 device_id # unique device ID for the sensor that does not float32 speed # the speed being reported by the wind / airflow sensor float32 direction # the direction being reported by the wind / airflow sensor uint8 status # Status code from the sensor - ``` + +::: diff --git a/docs/ko/msg_docs/SensorBaro.md b/docs/ko/msg_docs/SensorBaro.md index ef4d7a8f28..5ab06a270a 100644 --- a/docs/ko/msg_docs/SensorBaro.md +++ b/docs/ko/msg_docs/SensorBaro.md @@ -1,11 +1,39 @@ +--- +pageClass: is-wide-page +--- + # SensorBaro (UORB message) -Barometer sensor +Barometer sensor. This is populated by barometer drivers and used by the EKF2 estimator. The information is published in the `SCALED_PRESSURE_n` MAVLink messages (along with information from a corresponding `DifferentialPressure` instance). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorBaro.msg) +**TOPICS:** sensor_baro + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time of publication (since system start) | +| timestamp_sample | `uint64` | us | | Time of raw data capture | +| device_id | `uint32` | | | Unique device ID for the sensor that does not change between power cycles | +| pressure | `float32` | Pa | | Static pressure measurement | +| temperature | `float32` | degC | | Temperature. | +| error_count | `uint32` | | | Number of errors detected by driver. | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorBaro.msg) + +:::details +Click here to see original file ```c # Barometer sensor @@ -22,5 +50,6 @@ float32 temperature # [degC] Temperature. uint32 error_count # [-] Number of errors detected by driver. uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/ko/msg_docs/SensorCombined.md b/docs/ko/msg_docs/SensorCombined.md index 29a22b6326..bcadd24a73 100644 --- a/docs/ko/msg_docs/SensorCombined.md +++ b/docs/ko/msg_docs/SensorCombined.md @@ -1,10 +1,43 @@ +--- +pageClass: is-wide-page +--- + # SensorCombined (UORB message) -Sensor readings in SI-unit form. -These fields are scaled and offset-compensated where possible and do not -change with board revisions and sensor updates. +Sensor readings in SI-unit form. These fields are scaled and offset-compensated where possible and do not. change with board revisions and sensor updates. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorCombined.msg) +**TOPICS:** sensor_combined + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| gyro_rad | `float32[3]` | | | average angular rate measured in the FRD body frame XYZ-axis in rad/s over the last gyro sampling period | +| gyro_integral_dt | `uint32` | | | gyro measurement sampling period in microseconds | +| accelerometer_timestamp_relative | `int32` | | | timestamp + accelerometer_timestamp_relative = Accelerometer timestamp | +| accelerometer_m_s2 | `float32[3]` | | | average value acceleration measured in the FRD body frame XYZ-axis in m/s^2 over the last accelerometer sampling period | +| accelerometer_integral_dt | `uint32` | | | accelerometer measurement sampling period in microseconds | +| accelerometer_clipping | `uint8` | | | bitfield indicating if there was any accelerometer clipping (per axis) during the integration time frame | +| gyro_clipping | `uint8` | | | bitfield indicating if there was any gyro clipping (per axis) during the integration time frame | +| accel_calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever accelermeter calibration changes. | +| gyro_calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever rate gyro calibration changes. | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| --------------------------------------------------------------------------------------------------------------- | ------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| RELATIVE_TIMESTAMP_INVALID | `int32` | 2147483647 | (0x7fffffff) If one of the relative timestamps is set to this value, it means the associated sensor values are invalid | +| CLIPPING_X | `uint8` | 1 | | +| CLIPPING_Y | `uint8` | 2 | | +| CLIPPING_Z | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorCombined.msg) + +:::details +Click here to see original file ```c # Sensor readings in SI-unit form. @@ -32,5 +65,6 @@ uint8 gyro_clipping # bitfield indicating if there was any gyro clip uint8 accel_calibration_count # Calibration changed counter. Monotonically increases whenever accelermeter calibration changes. uint8 gyro_calibration_count # Calibration changed counter. Monotonically increases whenever rate gyro calibration changes. - ``` + +::: diff --git a/docs/ko/msg_docs/SensorCorrection.md b/docs/ko/msg_docs/SensorCorrection.md index 8c9cfbb9d2..8ea356cd26 100644 --- a/docs/ko/msg_docs/SensorCorrection.md +++ b/docs/ko/msg_docs/SensorCorrection.md @@ -1,8 +1,49 @@ +--- +pageClass: is-wide-page +--- + # SensorCorrection (UORB message) -Sensor corrections in SI-unit form for the voted sensor +Sensor corrections in SI-unit form for the voted sensor. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorCorrection.msg) +**TOPICS:** sensor_correction + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| accel_device_ids | `uint32[4]` | | | | +| accel_temperature | `float32[4]` | | | | +| accel_offset_0 | `float32[3]` | | | accelerometer 0 offsets in the FRD board frame XYZ-axis in m/s^s | +| accel_offset_1 | `float32[3]` | | | accelerometer 1 offsets in the FRD board frame XYZ-axis in m/s^s | +| accel_offset_2 | `float32[3]` | | | accelerometer 2 offsets in the FRD board frame XYZ-axis in m/s^s | +| accel_offset_3 | `float32[3]` | | | accelerometer 3 offsets in the FRD board frame XYZ-axis in m/s^s | +| gyro_device_ids | `uint32[4]` | | | | +| gyro_temperature | `float32[4]` | | | | +| gyro_offset_0 | `float32[3]` | | | gyro 0 XYZ offsets in the sensor frame in rad/s | +| gyro_offset_1 | `float32[3]` | | | gyro 1 XYZ offsets in the sensor frame in rad/s | +| gyro_offset_2 | `float32[3]` | | | gyro 2 XYZ offsets in the sensor frame in rad/s | +| gyro_offset_3 | `float32[3]` | | | gyro 3 XYZ offsets in the sensor frame in rad/s | +| mag_device_ids | `uint32[4]` | | | | +| mag_temperature | `float32[4]` | | | | +| mag_offset_0 | `float32[3]` | | | magnetometer 0 offsets in the FRD board frame XYZ-axis in m/s^s | +| mag_offset_1 | `float32[3]` | | | magnetometer 1 offsets in the FRD board frame XYZ-axis in m/s^s | +| mag_offset_2 | `float32[3]` | | | magnetometer 2 offsets in the FRD board frame XYZ-axis in m/s^s | +| mag_offset_3 | `float32[3]` | | | magnetometer 3 offsets in the FRD board frame XYZ-axis in m/s^s | +| baro_device_ids | `uint32[4]` | | | | +| baro_temperature | `float32[4]` | | | | +| baro_offset_0 | `float32` | | | barometric pressure 0 offsets in the sensor frame in Pascals | +| baro_offset_1 | `float32` | | | barometric pressure 1 offsets in the sensor frame in Pascals | +| baro_offset_2 | `float32` | | | barometric pressure 2 offsets in the sensor frame in Pascals | +| baro_offset_3 | `float32` | | | barometric pressure 3 offsets in the sensor frame in Pascals | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorCorrection.msg) + +:::details +Click here to see original file ```c # @@ -46,5 +87,6 @@ float32 baro_offset_0 # barometric pressure 0 offsets in the sensor frame in Pa float32 baro_offset_1 # barometric pressure 1 offsets in the sensor frame in Pascals float32 baro_offset_2 # barometric pressure 2 offsets in the sensor frame in Pascals float32 baro_offset_3 # barometric pressure 3 offsets in the sensor frame in Pascals - ``` + +::: diff --git a/docs/ko/msg_docs/SensorGnssRelative.md b/docs/ko/msg_docs/SensorGnssRelative.md index 639e7897f5..0fea3a7b92 100644 --- a/docs/ko/msg_docs/SensorGnssRelative.md +++ b/docs/ko/msg_docs/SensorGnssRelative.md @@ -1,8 +1,45 @@ +--- +pageClass: is-wide-page +--- + # SensorGnssRelative (UORB message) GNSS relative positioning information in NED frame. The NED frame is defined as the local topological system at the reference station. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGnssRelative.msg) +**TOPICS:** sensor_gnssrelative + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| time_utc_usec | `uint64` | | | Timestamp (microseconds, UTC), this is the timestamp which comes from the gps module. It might be unavailable right after cold start, indicated by a value of 0 | +| reference_station_id | `uint16` | | | Reference Station ID | +| position | `float32[3]` | | | GPS NED relative position vector (m) | +| position_accuracy | `float32[3]` | | | Accuracy of relative position (m) | +| heading | `float32` | | | Heading of the relative position vector (radians) | +| heading_accuracy | `float32` | | | Accuracy of heading of the relative position vector (radians) | +| position_length | `float32` | | | Length of the position vector (m) | +| accuracy_length | `float32` | | | Accuracy of the position length (m) | +| gnss_fix_ok | `bool` | | | GNSS valid fix (i.e within DOP & accuracy masks) | +| differential_solution | `bool` | | | differential corrections were applied | +| relative_position_valid | `bool` | | | | +| carrier_solution_floating | `bool` | | | carrier phase range solution with floating ambiguities | +| carrier_solution_fixed | `bool` | | | carrier phase range solution with fixed ambiguities | +| moving_base_mode | `bool` | | | if the receiver is operating in moving base mode | +| reference_position_miss | `bool` | | | extrapolated reference position was used to compute moving base solution this epoch | +| reference_observations_miss | `bool` | | | extrapolated reference observations were used to compute moving base solution this epoch | +| heading_valid | `bool` | | | | +| relative_position_normalized | `bool` | | | the components of the relative position vector (including the high-precision parts) are normalized | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGnssRelative.msg) + +:::details +Click here to see original file ```c # GNSS relative positioning information in NED frame. The NED frame is defined as the local topological system at the reference station. @@ -35,5 +72,6 @@ bool reference_position_miss # extrapolated reference position was used to bool reference_observations_miss # extrapolated reference observations were used to compute moving base solution this epoch bool heading_valid bool relative_position_normalized # the components of the relative position vector (including the high-precision parts) are normalized - ``` + +::: diff --git a/docs/ko/msg_docs/SensorGnssStatus.md b/docs/ko/msg_docs/SensorGnssStatus.md index 70602b85fc..a0392d9293 100644 --- a/docs/ko/msg_docs/SensorGnssStatus.md +++ b/docs/ko/msg_docs/SensorGnssStatus.md @@ -1,8 +1,31 @@ +--- +pageClass: is-wide-page +--- + # SensorGnssStatus (UORB message) -Gnss quality indicators +Gnss quality indicators. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGnssStatus.msg) +**TOPICS:** sensor_gnssstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| `bool` | | | Set to true if quality indicators are available | | +| quality_corrections | `uint8` | | | Corrections quality from 0 to 10, or 255 if not available | +| quality_receiver | `uint8` | | | Overall receiver operating status from 0 to 10, or 255 if not available | +| quality_gnss_signals | `uint8` | | | Quality of GNSS signals from 0 to 10, or 255 if not available | +| quality_post_processing | `uint8` | | | Expected post processing quality from 0 to 10, or 255 if not available | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGnssStatus.msg) + +:::details +Click here to see original file ```c # Gnss quality indicators @@ -15,5 +38,6 @@ uint8 quality_corrections # Corrections quality from 0 to 10, or 255 if no uint8 quality_receiver # Overall receiver operating status from 0 to 10, or 255 if not available uint8 quality_gnss_signals # Quality of GNSS signals from 0 to 10, or 255 if not available uint8 quality_post_processing # Expected post processing quality from 0 to 10, or 255 if not available - ``` + +::: diff --git a/docs/ko/msg_docs/SensorGps.md b/docs/ko/msg_docs/SensorGps.md index 1b5fb3cf41..895a60e8f0 100644 --- a/docs/ko/msg_docs/SensorGps.md +++ b/docs/ko/msg_docs/SensorGps.md @@ -1,9 +1,97 @@ +--- +pageClass: is-wide-page +--- + # SensorGps (UORB message) -GPS position in WGS84 coordinates. -the field 'timestamp' is for the position & velocity (microseconds) +GPS position in WGS84 coordinates. the field 'timestamp' is for the position & velocity (microseconds). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGps.msg) +**TOPICS:** sensor_gps vehicle_gps_position + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| latitude_deg | `float64` | | | Latitude in degrees, allows centimeter level RTK precision | +| longitude_deg | `float64` | | | Longitude in degrees, allows centimeter level RTK precision | +| altitude_msl_m | `float64` | | | Altitude above MSL, meters | +| altitude_ellipsoid_m | `float64` | | | Altitude above Ellipsoid, meters | +| s_variance_m_s | `float32` | | | GPS speed accuracy estimate, (metres/sec) | +| c_variance_rad | `float32` | | | GPS course accuracy estimate, (radians) | +| fix_type | `uint8` | | | Some applications will not use the value of this field unless it is at least two, so always correctly fill in the fix. | +| eph | `float32` | | | GPS horizontal position accuracy (metres) | +| epv | `float32` | | | GPS vertical position accuracy (metres) | +| hdop | `float32` | | | Horizontal dilution of precision | +| vdop | `float32` | | | Vertical dilution of precision | +| noise_per_ms | `int32` | | | GPS noise per millisecond | +| automatic_gain_control | `uint16` | | | Automatic gain control monitor | +| jamming_state | `uint8` | | | indicates whether jamming has been detected or suspected by the receivers. O: Unknown, 1: OK, 2: Mitigated, 3: Detected | +| jamming_indicator | `int32` | | | indicates jamming is occurring | +| spoofing_state | `uint8` | | | indicates whether spoofing has been detected or suspected by the receivers. O: Unknown, 1: OK, 2: Mitigated, 3: Detected | +| authentication_state | `uint8` | | | GPS signal authentication state | +| vel_m_s | `float32` | | | GPS ground speed, (metres/sec) | +| vel_n_m_s | `float32` | | | GPS North velocity, (metres/sec) | +| vel_e_m_s | `float32` | | | GPS East velocity, (metres/sec) | +| vel_d_m_s | `float32` | | | GPS Down velocity, (metres/sec) | +| cog_rad | `float32` | | | Course over ground (NOT heading, but direction of movement), -PI..PI, (radians) | +| vel_ned_valid | `bool` | | | True if NED velocity is valid | +| timestamp_time_relative | `int32` | | | timestamp + timestamp_time_relative = Time of the UTC timestamp since system start, (microseconds) | +| time_utc_usec | `uint64` | | | Timestamp (microseconds, UTC), this is the timestamp which comes from the gps module. It might be unavailable right after cold start, indicated by a value of 0 | +| satellites_used | `uint8` | | | Number of satellites used | +| system_error | `uint32` | | | General errors with the connected GPS receiver | +| heading | `float32` | | | heading angle of XYZ body frame rel to NED. Set to NaN if not available and updated (used for dual antenna GPS), (rad, [-PI, PI]) | +| heading_offset | `float32` | | | heading offset of dual antenna array in body frame. Set to NaN if not applicable. (rad, [-PI, PI]) | +| heading_accuracy | `float32` | | | heading accuracy (rad, [0, 2PI]) | +| rtcm_injection_rate | `float32` | | | RTCM message injection rate Hz | +| selected_rtcm_instance | `uint8` | | | uorb instance that is being used for RTCM corrections | +| rtcm_crc_failed | `bool` | | | RTCM message CRC failure detected | +| rtcm_msg_used | `uint8` | | | Indicates if the RTCM message was used successfully by the receiver | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | ---------------------------------------------------------- | +| FIX_TYPE_NONE | `uint8` | 1 | Value 0 is also valid to represent no fix. | +| FIX_TYPE_2D | `uint8` | 2 | | +| FIX_TYPE_3D | `uint8` | 3 | | +| FIX_TYPE_RTCM_CODE_DIFFERENTIAL | `uint8` | 4 | | +| FIX_TYPE_RTK_FLOAT | `uint8` | 5 | | +| FIX_TYPE_RTK_FIXED | `uint8` | 6 | | +| FIX_TYPE_EXTRAPOLATED | `uint8` | 8 | | +| JAMMING_STATE_UNKNOWN | `uint8` | 0 | default | +| JAMMING_STATE_OK | `uint8` | 1 | | +| JAMMING_STATE_MITIGATED | `uint8` | 2 | | +| JAMMING_STATE_DETECTED | `uint8` | 3 | | +| SPOOFING_STATE_UNKNOWN | `uint8` | 0 | default | +| SPOOFING_STATE_OK | `uint8` | 1 | | +| SPOOFING_STATE_MITIGATED | `uint8` | 2 | | +| SPOOFING_STATE_DETECTED | `uint8` | 3 | | +| AUTHENTICATION_STATE_UNKNOWN | `uint8` | 0 | default | +| AUTHENTICATION_STATE_INITIALIZING | `uint8` | 1 | | +| AUTHENTICATION_STATE_ERROR | `uint8` | 2 | | +| AUTHENTICATION_STATE_OK | `uint8` | 3 | | +| AUTHENTICATION_STATE_DISABLED | `uint8` | 4 | | +| SYSTEM_ERROR_OK | `uint32` | 0 | default | +| SYSTEM_ERROR_INCOMING_CORRECTIONS | `uint32` | 1 | | +| SYSTEM_ERROR_CONFIGURATION | `uint32` | 2 | | +| SYSTEM_ERROR_SOFTWARE | `uint32` | 4 | | +| SYSTEM_ERROR_ANTENNA | `uint32` | 8 | | +| SYSTEM_ERROR_EVENT_CONGESTION | `uint32` | 16 | | +| SYSTEM_ERROR_CPU_OVERLOAD | `uint32` | 32 | | +| SYSTEM_ERROR_OUTPUT_CONGESTION | `uint32` | 64 | | +| RTCM_MSG_USED_UNKNOWN | `uint8` | 0 | | +| RTCM_MSG_USED_NOT_USED | `uint8` | 1 | | +| RTCM_MSG_USED_USED | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGps.msg) + +:::details +Click here to see original file ```c # GPS position in WGS84 coordinates. @@ -96,5 +184,6 @@ uint8 RTCM_MSG_USED_USED = 2 uint8 rtcm_msg_used # Indicates if the RTCM message was used successfully by the receiver # TOPICS sensor_gps vehicle_gps_position - ``` + +::: diff --git a/docs/ko/msg_docs/SensorGyro.md b/docs/ko/msg_docs/SensorGyro.md index ee2b4f084a..71eb80d0c5 100644 --- a/docs/ko/msg_docs/SensorGyro.md +++ b/docs/ko/msg_docs/SensorGyro.md @@ -1,6 +1,38 @@ +--- +pageClass: is-wide-page +--- + # SensorGyro (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyro.msg) +**TOPICS:** sensor_gyro + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| x | `float32` | | | angular velocity in the FRD board frame X-axis in rad/s | +| y | `float32` | | | angular velocity in the FRD board frame Y-axis in rad/s | +| z | `float32` | | | angular velocity in the FRD board frame Z-axis in rad/s | +| temperature | `float32` | | | temperature in degrees Celsius | +| error_count | `uint32` | | | | +| clip_counter | `uint8[3]` | | | clip count per axis in the sample period | +| samples | `uint8` | | | number of raw samples that went into this message | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyro.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -21,5 +53,6 @@ uint8[3] clip_counter # clip count per axis in the sample period uint8 samples # number of raw samples that went into this message uint8 ORB_QUEUE_LENGTH = 8 - ``` + +::: diff --git a/docs/ko/msg_docs/SensorGyroFft.md b/docs/ko/msg_docs/SensorGyroFft.md index 645ce2b2dc..db7dd2359d 100644 --- a/docs/ko/msg_docs/SensorGyroFft.md +++ b/docs/ko/msg_docs/SensorGyroFft.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # SensorGyroFft (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyroFft.msg) +**TOPICS:** sensor_gyrofft + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| sensor_sample_rate_hz | `float32` | | | | +| resolution_hz | `float32` | | | | +| peak_frequencies_x | `float32[3]` | | | x axis peak frequencies | +| peak_frequencies_y | `float32[3]` | | | y axis peak frequencies | +| peak_frequencies_z | `float32[3]` | | | z axis peak frequencies | +| peak_snr_x | `float32[3]` | | | x axis peak SNR | +| peak_snr_y | `float32[3]` | | | y axis peak SNR | +| peak_snr_z | `float32[3]` | | | z axis peak SNR | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyroFft.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +45,6 @@ float32[3] peak_frequencies_z # z axis peak frequencies float32[3] peak_snr_x # x axis peak SNR float32[3] peak_snr_y # y axis peak SNR float32[3] peak_snr_z # z axis peak SNR - ``` + +::: diff --git a/docs/ko/msg_docs/SensorGyroFifo.md b/docs/ko/msg_docs/SensorGyroFifo.md index 4d440b1129..9309924553 100644 --- a/docs/ko/msg_docs/SensorGyroFifo.md +++ b/docs/ko/msg_docs/SensorGyroFifo.md @@ -1,6 +1,37 @@ +--- +pageClass: is-wide-page +--- + # SensorGyroFifo (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyroFifo.msg) +**TOPICS:** sensor_gyrofifo + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| dt | `float32` | | | delta time between samples (microseconds) | +| scale | `float32` | | | | +| samples | `uint8` | | | number of valid samples | +| x | `int16[32]` | | | angular velocity in the FRD board frame X-axis in rad/s | +| y | `int16[32]` | | | angular velocity in the FRD board frame Y-axis in rad/s | +| z | `int16[32]` | | | angular velocity in the FRD board frame Z-axis in rad/s | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyroFifo.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -18,5 +49,6 @@ int16[32] y # angular velocity in the FRD board frame Y-axis in ra int16[32] z # angular velocity in the FRD board frame Z-axis in rad/s uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/ko/msg_docs/SensorHygrometer.md b/docs/ko/msg_docs/SensorHygrometer.md index e3da07593f..49ab07e65b 100644 --- a/docs/ko/msg_docs/SensorHygrometer.md +++ b/docs/ko/msg_docs/SensorHygrometer.md @@ -1,6 +1,27 @@ +--- +pageClass: is-wide-page +--- + # SensorHygrometer (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorHygrometer.msg) +**TOPICS:** sensor_hygrometer + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| `float32` | | | Temperature provided by sensor (Celsius) | | +| humidity | `float32` | | | Humidity provided by sensor | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorHygrometer.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -11,5 +32,6 @@ uint32 device_id # unique device ID for the sensor that does not change float32 temperature # Temperature provided by sensor (Celsius) float32 humidity # Humidity provided by sensor - ``` + +::: diff --git a/docs/ko/msg_docs/SensorMag.md b/docs/ko/msg_docs/SensorMag.md index b3cb27bb11..98b4a1d1fd 100644 --- a/docs/ko/msg_docs/SensorMag.md +++ b/docs/ko/msg_docs/SensorMag.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # SensorMag (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorMag.msg) +**TOPICS:** sensor_mag + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| x | `float32` | | | magnetic field in the FRD board frame X-axis in Gauss | +| y | `float32` | | | magnetic field in the FRD board frame Y-axis in Gauss | +| z | `float32` | | | magnetic field in the FRD board frame Z-axis in Gauss | +| temperature | `float32` | | | temperature in degrees Celsius | +| error_count | `uint32` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorMag.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -17,5 +47,6 @@ float32 temperature # temperature in degrees Celsius uint32 error_count uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/ko/msg_docs/SensorOpticalFlow.md b/docs/ko/msg_docs/SensorOpticalFlow.md index b1b131b50d..1b6e407e1c 100644 --- a/docs/ko/msg_docs/SensorOpticalFlow.md +++ b/docs/ko/msg_docs/SensorOpticalFlow.md @@ -1,6 +1,46 @@ +--- +pageClass: is-wide-page +--- + # SensorOpticalFlow (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorOpticalFlow.msg) +**TOPICS:** sensor_opticalflow + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| pixel_flow | `float32[2]` | | | (radians) optical flow in radians where a positive value is produced by a RH rotation of the sensor about the body axis | +| delta_angle | `float32[3]` | | | (radians) accumulated gyro radians where a positive value is produced by a RH rotation about the body axis. Set to NaN if flow sensor does not have 3-axis gyro data. | +| delta_angle_available | `bool` | | | | +| distance_m | `float32` | | | (meters) Distance to the center of the flow field | +| distance_available | `bool` | | | | +| integration_timespan_us | `uint32` | | | (microseconds) accumulation timespan in microseconds | +| quality | `uint8` | | | quality, 0: bad quality, 255: maximum quality | +| error_count | `uint32` | | | | +| max_flow_rate | `float32` | | | (radians/s) Magnitude of maximum angular which the optical flow sensor can measure reliably | +| min_ground_distance | `float32` | | | (meters) Minimum distance from ground at which the optical flow sensor operates reliably | +| max_ground_distance | `float32` | | | (meters) Maximum distance from ground at which the optical flow sensor operates reliably | +| mode | `uint8` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| MODE_UNKNOWN | `uint8` | 0 | | +| MODE_BRIGHT | `uint8` | 1 | | +| MODE_LOWLIGHT | `uint8` | 2 | | +| MODE_SUPER_LOWLIGHT | `uint8` | 3 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorOpticalFlow.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -33,5 +73,6 @@ uint8 MODE_LOWLIGHT = 2 uint8 MODE_SUPER_LOWLIGHT = 3 uint8 mode - ``` + +::: diff --git a/docs/ko/msg_docs/SensorPreflightMag.md b/docs/ko/msg_docs/SensorPreflightMag.md index 7d5a933bc7..2f47320d2a 100644 --- a/docs/ko/msg_docs/SensorPreflightMag.md +++ b/docs/ko/msg_docs/SensorPreflightMag.md @@ -1,9 +1,26 @@ +--- +pageClass: is-wide-page +--- + # SensorPreflightMag (UORB message) -Pre-flight sensor check metrics. -The topic will not be updated when the vehicle is armed +Pre-flight sensor check metrics. The topic will not be updated when the vehicle is armed. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorPreflightMag.msg) +**TOPICS:** sensor_preflightmag + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mag_inconsistency_angle | `float32` | | | maximum angle between magnetometer instance field vectors in radians. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorPreflightMag.msg) + +:::details +Click here to see original file ```c # @@ -13,5 +30,6 @@ The topic will not be updated when the vehicle is armed uint64 timestamp # time since system start (microseconds) float32 mag_inconsistency_angle # maximum angle between magnetometer instance field vectors in radians. - ``` + +::: diff --git a/docs/ko/msg_docs/SensorSelection.md b/docs/ko/msg_docs/SensorSelection.md index 58fb6be289..a89e3dd5de 100644 --- a/docs/ko/msg_docs/SensorSelection.md +++ b/docs/ko/msg_docs/SensorSelection.md @@ -1,9 +1,27 @@ +--- +pageClass: is-wide-page +--- + # SensorSelection (UORB message) -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 +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. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorSelection.msg) +**TOPICS:** sensor_selection + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| accel_device_id | `uint32` | | | unique device ID for the selected accelerometers | +| gyro_device_id | `uint32` | | | unique device ID for the selected rate gyros | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorSelection.msg) + +:::details +Click here to see original file ```c # @@ -13,5 +31,6 @@ Will be updated on startup of the sensor module and when sensor selection change uint64 timestamp # time since system start (microseconds) uint32 accel_device_id # unique device ID for the selected accelerometers uint32 gyro_device_id # unique device ID for the selected rate gyros - ``` + +::: diff --git a/docs/ko/msg_docs/SensorTemp.md b/docs/ko/msg_docs/SensorTemp.md index 5ed50541fe..99f03105ed 100644 --- a/docs/ko/msg_docs/SensorTemp.md +++ b/docs/ko/msg_docs/SensorTemp.md @@ -1,11 +1,31 @@ +--- +pageClass: is-wide-page +--- + # SensorTemp (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorTemp.msg) +**TOPICS:** sensor_temp + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------ | -------- | ---------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| `float32` | | | Temperature provided by sensor (Celsius) | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorTemp.msg) + +:::details +Click here to see original file ```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/ko/msg_docs/SensorUwb.md b/docs/ko/msg_docs/SensorUwb.md index 544bc60e7a..a08736d30a 100644 --- a/docs/ko/msg_docs/SensorUwb.md +++ b/docs/ko/msg_docs/SensorUwb.md @@ -1,9 +1,45 @@ +--- +pageClass: is-wide-page +--- + # SensorUwb (UORB message) -UWB distance contains the distance information measured by an ultra-wideband positioning system, -such as Pozyx or NXP Rddrone. +UWB distance contains the distance information measured by an ultra-wideband positioning system,. such as Pozyx or NXP Rddrone. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorUwb.msg) +**TOPICS:** sensor_uwb + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| sessionid | `uint32` | | | UWB SessionID | +| time_offset | `uint32` | | | Time between Ranging Rounds in ms | +| counter | `uint32` | | | Number of Ranges since last Start of Ranging | +| mac | `uint16` | | | MAC adress of Initiator (controller) | +| mac_dest | `uint16` | | | MAC adress of Responder (Controlee) | +| status | `uint16` | | | status feedback # | +| nlos | `uint8` | | | None line of site condition y/n | +| distance | `float32` | | | distance in m to the UWB receiver | +| aoa_azimuth_dev | `float32` | | | Angle of arrival of first incomming RX msg | +| aoa_elevation_dev | `float32` | | | Angle of arrival of first incomming RX msg | +| aoa_azimuth_resp | `float32` | | | Angle of arrival of first incomming RX msg at the responder | +| aoa_elevation_resp | `float32` | | | Angle of arrival of first incomming RX msg at the responder | +| aoa_azimuth_fom | `uint8` | | | AOA Azimuth FOM | +| aoa_elevation_fom | `uint8` | | | AOA Elevation FOM | +| aoa_dest_azimuth_fom | `uint8` | | | AOA Azimuth FOM | +| aoa_dest_elevation_fom | `uint8` | | | AOA Elevation FOM | +| orientation | `uint8` | | | Direction the sensor faces from MAV_SENSOR_ORIENTATION enum | +| offset_x | `float32` | | | UWB initiator offset in X axis (NED drone frame) | +| offset_y | `float32` | | | UWB initiator offset in Y axis (NED drone frame) | +| offset_z | `float32` | | | UWB initiator offset in Z axis (NED drone frame) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorUwb.msg) + +:::details +Click here to see original file ```c # UWB distance contains the distance information measured by an ultra-wideband positioning system, @@ -40,5 +76,6 @@ uint8 orientation # Direction the sensor faces from MAV_SENSOR_ORIENTATION enum float32 offset_x # UWB initiator offset in X axis (NED drone frame) float32 offset_y # UWB initiator offset in Y axis (NED drone frame) float32 offset_z # UWB initiator offset in Z axis (NED drone frame) - ``` + +::: diff --git a/docs/ko/msg_docs/SensorsStatus.md b/docs/ko/msg_docs/SensorsStatus.md index 996d7107fb..178dff80fe 100644 --- a/docs/ko/msg_docs/SensorsStatus.md +++ b/docs/ko/msg_docs/SensorsStatus.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # SensorsStatus (UORB message) Sensor check metrics. This will be zero for a sensor that's primary or unpopulated. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorsStatus.msg) +**TOPICS:** sensors_status_baro sensors_status_mag + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id_primary | `uint32` | | | current primary device id for reference | +| device_ids | `uint32[4]` | | | | +| inconsistency | `float32[4]` | | | magnitude of difference between sensor instance and mean | +| healthy | `bool[4]` | | | sensor healthy | +| priority | `uint8[4]` | | | | +| enabled | `bool[4]` | | | | +| external | `bool[4]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorsStatus.msg) + +:::details +Click here to see original file ```c # @@ -20,5 +44,6 @@ bool[4] enabled bool[4] external # TOPICS sensors_status_baro sensors_status_mag - ``` + +::: diff --git a/docs/ko/msg_docs/SensorsStatusImu.md b/docs/ko/msg_docs/SensorsStatusImu.md index a25b5d1c01..cd716510f9 100644 --- a/docs/ko/msg_docs/SensorsStatusImu.md +++ b/docs/ko/msg_docs/SensorsStatusImu.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # SensorsStatusImu (UORB message) Sensor check metrics. This will be zero for a sensor that's primary or unpopulated. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorsStatusImu.msg) +**TOPICS:** sensors_statusimu + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| accel_device_id_primary | `uint32` | | | current primary accel device id for reference | +| accel_device_ids | `uint32[4]` | | | | +| accel_inconsistency_m_s_s | `float32[4]` | | | magnitude of acceleration difference between IMU instance and mean in m/s^2. | +| accel_healthy | `bool[4]` | | | | +| accel_priority | `uint8[4]` | | | | +| gyro_device_id_primary | `uint32` | | | current primary gyro device id for reference | +| gyro_device_ids | `uint32[4]` | | | | +| gyro_inconsistency_rad_s | `float32[4]` | | | magnitude of angular rate difference between IMU instance and mean in (rad/s). | +| gyro_healthy | `bool[4]` | | | | +| gyro_priority | `uint8[4]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorsStatusImu.msg) + +:::details +Click here to see original file ```c # @@ -23,5 +50,6 @@ uint32[4] gyro_device_ids float32[4] gyro_inconsistency_rad_s # magnitude of angular rate difference between IMU instance and mean in (rad/s). bool[4] gyro_healthy uint8[4] gyro_priority - ``` + +::: diff --git a/docs/ko/msg_docs/SystemPower.md b/docs/ko/msg_docs/SystemPower.md index eac7503f97..fae286bc67 100644 --- a/docs/ko/msg_docs/SystemPower.md +++ b/docs/ko/msg_docs/SystemPower.md @@ -1,6 +1,49 @@ +--- +pageClass: is-wide-page +--- + # SystemPower (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SystemPower.msg) +**TOPICS:** system_power + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| voltage5v_v | `float32` | | | peripheral 5V rail voltage | +| voltage_payload_v | `float32` | | | payload rail voltage | +| sensors3v3 | `float32[4]` | | | Sensors 3V3 rail voltage | +| sensors3v3_valid | `uint8` | | | Sensors 3V3 rail voltage was read (bitfield). | +| usb_connected | `uint8` | | | USB is connected when 1 | +| brick_valid | `uint8` | | | brick bits power is good when bit 1 | +| usb_valid | `uint8` | | | USB is valid when 1 | +| servo_valid | `uint8` | | | servo power is good when 1 | +| periph_5v_oc | `uint8` | | | peripheral overcurrent when 1 | +| hipower_5v_oc | `uint8` | | | high power peripheral overcurrent when 1 | +| comp_5v_valid | `uint8` | | | 5V to companion valid | +| can1_gps1_5v_valid | `uint8` | | | 5V for CAN1/GPS1 valid | +| payload_v_valid | `uint8` | | | payload rail voltage is valid | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| BRICK1_VALID_SHIFTS | `uint8` | 0 | | +| BRICK1_VALID_MASK | `uint8` | 1 | | +| BRICK2_VALID_SHIFTS | `uint8` | 1 | | +| BRICK2_VALID_MASK | `uint8` | 2 | | +| BRICK3_VALID_SHIFTS | `uint8` | 2 | | +| BRICK3_VALID_MASK | `uint8` | 4 | | +| BRICK4_VALID_SHIFTS | `uint8` | 3 | | +| BRICK4_VALID_MASK | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SystemPower.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -26,5 +69,6 @@ uint8 BRICK3_VALID_SHIFTS=2 uint8 BRICK3_VALID_MASK=4 uint8 BRICK4_VALID_SHIFTS=3 uint8 BRICK4_VALID_MASK=8 - ``` + +::: diff --git a/docs/ko/msg_docs/TakeoffStatus.md b/docs/ko/msg_docs/TakeoffStatus.md index 45540a74b4..4797f9e947 100644 --- a/docs/ko/msg_docs/TakeoffStatus.md +++ b/docs/ko/msg_docs/TakeoffStatus.md @@ -1,8 +1,38 @@ +--- +pageClass: is-wide-page +--- + # TakeoffStatus (UORB message) -Status of the takeoff state machine currently just available for multicopters +Status of the takeoff state machine currently just available for multicopters. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TakeoffStatus.msg) +**TOPICS:** takeoff_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| takeoff_state | `uint8` | | | | +| tilt_limit | `float32` | | | limited tilt feasibility during takeoff, contains maximum tilt otherwise | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| TAKEOFF_STATE_UNINITIALIZED | `uint8` | 0 | | +| TAKEOFF_STATE_DISARMED | `uint8` | 1 | | +| TAKEOFF_STATE_SPOOLUP | `uint8` | 2 | | +| TAKEOFF_STATE_READY_FOR_TAKEOFF | `uint8` | 3 | | +| TAKEOFF_STATE_RAMPUP | `uint8` | 4 | | +| TAKEOFF_STATE_FLIGHT | `uint8` | 5 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TakeoffStatus.msg) + +:::details +Click here to see original file ```c # Status of the takeoff state machine currently just available for multicopters @@ -19,5 +49,6 @@ uint8 TAKEOFF_STATE_FLIGHT = 5 uint8 takeoff_state float32 tilt_limit # limited tilt feasibility during takeoff, contains maximum tilt otherwise - ``` + +::: diff --git a/docs/ko/msg_docs/TaskStackInfo.md b/docs/ko/msg_docs/TaskStackInfo.md index fde6ed7585..b876ff4a7d 100644 --- a/docs/ko/msg_docs/TaskStackInfo.md +++ b/docs/ko/msg_docs/TaskStackInfo.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # TaskStackInfo (UORB message) -stack information for a single running process +stack information for a single running process. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TaskStackInfo.msg) +**TOPICS:** task_stackinfo + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| stack_free | `uint16` | | | | +| task_name | `char[24]` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORB_QUEUE_LENGTH | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TaskStackInfo.msg) + +:::details +Click here to see original file ```c # stack information for a single running process @@ -13,5 +38,6 @@ uint16 stack_free char[24] task_name uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/ko/msg_docs/TecsStatus.md b/docs/ko/msg_docs/TecsStatus.md index ce79ad1b7b..713caeb30c 100644 --- a/docs/ko/msg_docs/TecsStatus.md +++ b/docs/ko/msg_docs/TecsStatus.md @@ -1,6 +1,47 @@ +--- +pageClass: is-wide-page +--- + # TecsStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TecsStatus.msg) +**TOPICS:** tecs_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| altitude_sp | `float32` | | | Altitude setpoint AMSL [m] | +| altitude_reference | `float32` | | | Altitude setpoint reference AMSL [m] | +| altitude_time_constant | `float32` | | | Time constant of the altitude tracker [s] | +| height_rate_reference | `float32` | | | Height rate setpoint reference [m/s] | +| height_rate_direct | `float32` | | | Direct height rate setpoint from velocity reference generator [m/s] | +| height_rate_setpoint | `float32` | | | Height rate setpoint [m/s] | +| height_rate | `float32` | | | Height rate [m/s] | +| equivalent_airspeed_sp | `float32` | | | Equivalent airspeed setpoint [m/s] | +| true_airspeed_sp | `float32` | | | True airspeed setpoint [m/s] | +| true_airspeed_filtered | `float32` | | | True airspeed filtered [m/s] | +| true_airspeed_derivative_sp | `float32` | | | True airspeed derivative setpoint [m/s^2] | +| true_airspeed_derivative | `float32` | | | True airspeed derivative [m/s^2] | +| true_airspeed_derivative_raw | `float32` | | | True airspeed derivative raw [m/s^2] | +| total_energy_rate_sp | `float32` | | | Total energy rate setpoint [m^2/s^3] | +| total_energy_rate | `float32` | | | Total energy rate estimate [m^2/s^3] | +| total_energy_balance_rate_sp | `float32` | | | Energy balance rate setpoint [m^2/s^3] | +| total_energy_balance_rate | `float32` | | | Energy balance rate estimate [m^2/s^3] | +| throttle_integ | `float32` | | | Throttle integrator value [-] | +| pitch_integ | `float32` | | | Pitch integrator value [rad] | +| throttle_sp | `float32` | | | Current throttle setpoint [-] | +| pitch_sp_rad | `float32` | | | Current pitch setpoint [rad] | +| throttle_trim | `float32` | | | estimated throttle value [0,1] required to fly level at equivalent_airspeed_sp in the current atmospheric conditions | +| underspeed_ratio | `float32` | | | 0: no underspeed, 1: maximal underspeed. Controller takes measures to avoid stall proportional to ratio if >0. | +| fast_descend_ratio | `float32` | | | value indicating if fast descend mode is enabled with ramp up and ramp down [0-1] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TecsStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -34,5 +75,6 @@ float32 throttle_trim # estimated throttle value [0,1] required to fly level a float32 underspeed_ratio # 0: no underspeed, 1: maximal underspeed. Controller takes measures to avoid stall proportional to ratio if >0. float32 fast_descend_ratio # value indicating if fast descend mode is enabled with ramp up and ramp down [0-1] - ``` + +::: diff --git a/docs/ko/msg_docs/TelemetryStatus.md b/docs/ko/msg_docs/TelemetryStatus.md index 1d12591375..0061ddec9a 100644 --- a/docs/ko/msg_docs/TelemetryStatus.md +++ b/docs/ko/msg_docs/TelemetryStatus.md @@ -1,6 +1,71 @@ +--- +pageClass: is-wide-page +--- + # TelemetryStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TelemetryStatus.msg) +**TOPICS:** telemetry_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| type | `uint8` | | | type of the radio hardware (LINK_TYPE_\*) | +| mode | `uint8` | | | | +| flow_control | `bool` | | | | +| forwarding | `bool` | | | | +| mavlink_v2 | `bool` | | | | +| ftp | `bool` | | | | +| streams | `uint8` | | | | +| data_rate | `float32` | | | configured maximum data rate (Bytes/s) | +| rate_multiplier | `float32` | | | | +| tx_rate_avg | `float32` | | | transmit rate average (Bytes/s) | +| tx_error_rate_avg | `float32` | | | transmit error rate average (Bytes/s) | +| tx_message_count | `uint32` | | | total message sent count | +| tx_buffer_overruns | `uint32` | | | number of TX buffer overruns | +| rx_rate_avg | `float32` | | | transmit rate average (Bytes/s) | +| rx_message_count | `uint32` | | | count of total messages received | +| rx_message_lost_count | `uint32` | | | | +| rx_buffer_overruns | `uint32` | | | number of RX buffer overruns | +| rx_parse_errors | `uint32` | | | number of parse errors | +| rx_packet_drop_count | `uint32` | | | number of packet drops | +| rx_message_lost_rate | `float32` | | | | +| heartbeat_type_antenna_tracker | `bool` | | | MAV_TYPE_ANTENNA_TRACKER | +| heartbeat_type_gcs | `bool` | | | MAV_TYPE_GCS | +| heartbeat_type_onboard_controller | `bool` | | | MAV_TYPE_ONBOARD_CONTROLLER | +| heartbeat_type_gimbal | `bool` | | | MAV_TYPE_GIMBAL | +| heartbeat_type_adsb | `bool` | | | MAV_TYPE_ADSB | +| heartbeat_type_camera | `bool` | | | MAV_TYPE_CAMERA | +| heartbeat_type_parachute | `bool` | | | MAV_TYPE_PARACHUTE | +| heartbeat_type_open_drone_id | `bool` | | | MAV_TYPE_ODID | +| heartbeat_component_telemetry_radio | `bool` | | | MAV_COMP_ID_TELEMETRY_RADIO | +| heartbeat_component_log | `bool` | | | MAV_COMP_ID_LOG | +| heartbeat_component_osd | `bool` | | | MAV_COMP_ID_OSD | +| heartbeat_component_vio | `bool` | | | MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY | +| heartbeat_component_pairing_manager | `bool` | | | MAV_COMP_ID_PAIRING_MANAGER | +| heartbeat_component_udp_bridge | `bool` | | | MAV_COMP_ID_UDP_BRIDGE | +| heartbeat_component_uart_bridge | `bool` | | | MAV_COMP_ID_UART_BRIDGE | +| open_drone_id_system_healthy | `bool` | | | | +| parachute_system_healthy | `bool` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ---------------------------------------------------------------------------------------------------------------------------------- | -------- | ------- | ------------------------------------------------------------------ | +| LINK_TYPE_GENERIC | `uint8` | 0 | | +| LINK_TYPE_UBIQUITY_BULLET | `uint8` | 1 | | +| LINK_TYPE_WIRE | `uint8` | 2 | | +| LINK_TYPE_USB | `uint8` | 3 | | +| LINK_TYPE_IRIDIUM | `uint8` | 4 | | +| HEARTBEAT_TIMEOUT_US | `uint64` | 2500000 | Heartbeat timeout (tolerate missing 1 + jitter) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TelemetryStatus.msg) + +:::details +Click here to see original file ```c uint8 LINK_TYPE_GENERIC = 0 @@ -64,5 +129,6 @@ bool heartbeat_component_uart_bridge # MAV_COMP_ID_UART_BRIDGE # Misc component health bool open_drone_id_system_healthy bool parachute_system_healthy - ``` + +::: diff --git a/docs/ko/msg_docs/TiltrotorExtraControls.md b/docs/ko/msg_docs/TiltrotorExtraControls.md index 461e16e1a0..8a081e8243 100644 --- a/docs/ko/msg_docs/TiltrotorExtraControls.md +++ b/docs/ko/msg_docs/TiltrotorExtraControls.md @@ -1,11 +1,31 @@ +--- +pageClass: is-wide-page +--- + # TiltrotorExtraControls (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TiltrotorExtraControls.msg) +**TOPICS:** tiltrotor_extracontrols + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| collective_tilt_normalized_setpoint | `float32` | | | Collective tilt angle of motors of tiltrotor, 0: vertical, 1: horizontal [0, 1] | +| collective_thrust_normalized_setpoint | `float32` | | | Collective thrust setpoint [0, 1] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TiltrotorExtraControls.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) float32 collective_tilt_normalized_setpoint # Collective tilt angle of motors of tiltrotor, 0: vertical, 1: horizontal [0, 1] float32 collective_thrust_normalized_setpoint # Collective thrust setpoint [0, 1] - ``` + +::: diff --git a/docs/ko/msg_docs/TimesyncStatus.md b/docs/ko/msg_docs/TimesyncStatus.md index 96ff9258be..0893914b5d 100644 --- a/docs/ko/msg_docs/TimesyncStatus.md +++ b/docs/ko/msg_docs/TimesyncStatus.md @@ -1,6 +1,36 @@ +--- +pageClass: is-wide-page +--- + # TimesyncStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TimesyncStatus.msg) +**TOPICS:** timesync_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| source_protocol | `uint8` | | | timesync source | +| remote_timestamp | `uint64` | | | remote system timestamp (microseconds) | +| observed_offset | `int64` | | | raw time offset directly observed from this timesync packet (microseconds) | +| estimated_offset | `int64` | | | smoothed time offset between companion system and PX4 (microseconds) | +| round_trip_time | `uint32` | | | round trip time of this timesync packet (microseconds) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| --------------------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| SOURCE_PROTOCOL_UNKNOWN | `uint8` | 0 | | +| SOURCE_PROTOCOL_MAVLINK | `uint8` | 1 | | +| SOURCE_PROTOCOL_DDS | `uint8` | 2 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TimesyncStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +44,6 @@ uint64 remote_timestamp # remote system timestamp (microseconds) int64 observed_offset # raw time offset directly observed from this timesync packet (microseconds) int64 estimated_offset # smoothed time offset between companion system and PX4 (microseconds) uint32 round_trip_time # round trip time of this timesync packet (microseconds) - ``` + +::: diff --git a/docs/ko/msg_docs/TrajectorySetpoint.md b/docs/ko/msg_docs/TrajectorySetpoint.md index 06e44bcf11..78afc474ec 100644 --- a/docs/ko/msg_docs/TrajectorySetpoint.md +++ b/docs/ko/msg_docs/TrajectorySetpoint.md @@ -1,11 +1,37 @@ +--- +pageClass: is-wide-page +--- + # TrajectorySetpoint (UORB message) -Trajectory setpoint in NED frame -Input to PID position controller. -Needs to be kinematically consistent and feasible for smooth flight. -setting a value to NaN means the state should not be controlled +Trajectory setpoint in NED frame. Input to PID position controller. Needs to be kinematically consistent and feasible for smooth flight. setting a value to NaN means the state should not be controlled. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/TrajectorySetpoint.msg) +**TOPICS:** trajectory_setpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------ | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| position | `float32[3]` | | | in meters | +| velocity | `float32[3]` | | | in meters/second | +| acceleration | `float32[3]` | | | in meters/second^2 | +| jerk | `float32[3]` | | | in meters/second^3 (for logging only) | +| yaw | `float32` | | | euler angle of desired attitude in radians -PI..+PI | +| yawspeed | `float32` | | | angular velocity around NED frame z-axis in radians/second | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/TrajectorySetpoint.msg) + +:::details +Click here to see original file ```c # Trajectory setpoint in NED frame @@ -25,5 +51,6 @@ float32[3] jerk # in meters/second^3 (for logging only) float32 yaw # euler angle of desired attitude in radians -PI..+PI float32 yawspeed # angular velocity around NED frame z-axis in radians/second - ``` + +::: diff --git a/docs/ko/msg_docs/TrajectorySetpoint6dof.md b/docs/ko/msg_docs/TrajectorySetpoint6dof.md index f2629e19c4..ad51686074 100644 --- a/docs/ko/msg_docs/TrajectorySetpoint6dof.md +++ b/docs/ko/msg_docs/TrajectorySetpoint6dof.md @@ -1,9 +1,31 @@ +--- +pageClass: is-wide-page +--- + # TrajectorySetpoint6dof (UORB message) -Trajectory setpoint in NED frame -Input to position controller. +Trajectory setpoint in NED frame. Input to position controller. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TrajectorySetpoint6dof.msg) +**TOPICS:** trajectory_setpoint6dof + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| position | `float32[3]` | | | in meters | +| velocity | `float32[3]` | | | in meters/second | +| acceleration | `float32[3]` | | | in meters/second^2 | +| jerk | `float32[3]` | | | in meters/second^3 (for logging only) | +| quaternion | `float32[4]` | | | unit quaternion | +| angular_velocity | `float32[3]` | | | angular velocity in radians/second | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TrajectorySetpoint6dof.msg) + +:::details +Click here to see original file ```c # Trajectory setpoint in NED frame @@ -19,5 +41,6 @@ float32[3] jerk # in meters/second^3 (for logging only) float32[4] quaternion # unit quaternion float32[3] angular_velocity # angular velocity in radians/second - ``` + +::: diff --git a/docs/ko/msg_docs/TransponderReport.md b/docs/ko/msg_docs/TransponderReport.md index 9bab882b02..a501f648a3 100644 --- a/docs/ko/msg_docs/TransponderReport.md +++ b/docs/ko/msg_docs/TransponderReport.md @@ -1,6 +1,71 @@ +--- +pageClass: is-wide-page +--- + # TransponderReport (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TransponderReport.msg) +**TOPICS:** transponder_report + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| icao_address | `uint32` | | | ICAO address | +| lat | `float64` | | | Latitude, expressed as degrees | +| lon | `float64` | | | Longitude, expressed as degrees | +| altitude_type | `uint8` | | | Type from ADSB_ALTITUDE_TYPE enum | +| altitude | `float32` | | | Altitude(ASL) in meters | +| heading | `float32` | | | Course over ground in radians, 0 to 2pi, 0 is north | +| hor_velocity | `float32` | | | The horizontal velocity in m/s | +| ver_velocity | `float32` | | | The vertical velocity in m/s, positive is up | +| callsign | `char[9]` | | | The callsign, 8+null | +| emitter_type | `uint8` | | | Type from ADSB_EMITTER_TYPE enum | +| tslc | `uint8` | | | Time since last communication in seconds | +| flags | `uint16` | | | Flags to indicate various statuses including valid data fields | +| squawk | `uint16` | | | Squawk code | +| uas_id | `uint8[18]` | | | Unique UAS ID | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ----- | -- | +| PX4_ADSB_FLAGS_VALID_COORDS | `uint16` | 1 | | +| PX4_ADSB_FLAGS_VALID_ALTITUDE | `uint16` | 2 | | +| PX4_ADSB_FLAGS_VALID_HEADING | `uint16` | 4 | | +| PX4_ADSB_FLAGS_VALID_VELOCITY | `uint16` | 8 | | +| PX4_ADSB_FLAGS_VALID_CALLSIGN | `uint16` | 16 | | +| PX4_ADSB_FLAGS_VALID_SQUAWK | `uint16` | 32 | | +| PX4_ADSB_FLAGS_RETRANSLATE | `uint16` | 256 | | +| ADSB_EMITTER_TYPE_NO_INFO | `uint16` | 0 | | +| ADSB_EMITTER_TYPE_LIGHT | `uint16` | 1 | | +| ADSB_EMITTER_TYPE_SMALL | `uint16` | 2 | | +| ADSB_EMITTER_TYPE_LARGE | `uint16` | 3 | | +| ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE | `uint16` | 4 | | +| ADSB_EMITTER_TYPE_HEAVY | `uint16` | 5 | | +| ADSB_EMITTER_TYPE_HIGHLY_MANUV | `uint16` | 6 | | +| ADSB_EMITTER_TYPE_ROTOCRAFT | `uint16` | 7 | | +| ADSB_EMITTER_TYPE_UNASSIGNED | `uint16` | 8 | | +| ADSB_EMITTER_TYPE_GLIDER | `uint16` | 9 | | +| ADSB_EMITTER_TYPE_LIGHTER_AIR | `uint16` | 10 | | +| ADSB_EMITTER_TYPE_PARACHUTE | `uint16` | 11 | | +| ADSB_EMITTER_TYPE_ULTRA_LIGHT | `uint16` | 12 | | +| ADSB_EMITTER_TYPE_UNASSIGNED2 | `uint16` | 13 | | +| ADSB_EMITTER_TYPE_UAV | `uint16` | 14 | | +| ADSB_EMITTER_TYPE_SPACE | `uint16` | 15 | | +| ADSB_EMITTER_TYPE_UNASSGINED3 | `uint16` | 16 | | +| ADSB_EMITTER_TYPE_EMERGENCY_SURFACE | `uint16` | 17 | | +| ADSB_EMITTER_TYPE_SERVICE_SURFACE | `uint16` | 18 | | +| ADSB_EMITTER_TYPE_POINT_OBSTACLE | `uint16` | 19 | | +| ADSB_EMITTER_TYPE_ENUM_END | `uint16` | 20 | | +| ORB_QUEUE_LENGTH | `uint8` | 16 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TransponderReport.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -53,5 +118,6 @@ uint16 ADSB_EMITTER_TYPE_POINT_OBSTACLE=19 uint16 ADSB_EMITTER_TYPE_ENUM_END=20 uint8 ORB_QUEUE_LENGTH = 16 - ``` + +::: diff --git a/docs/ko/msg_docs/TuneControl.md b/docs/ko/msg_docs/TuneControl.md index b6e96771ad..5e1da3cd11 100644 --- a/docs/ko/msg_docs/TuneControl.md +++ b/docs/ko/msg_docs/TuneControl.md @@ -1,9 +1,61 @@ +--- +pageClass: is-wide-page +--- + # TuneControl (UORB message) -This message is used to control the tunes, when the tune_id is set to CUSTOM -then the frequency, duration are used otherwise those values are ignored. +This message is used to control the tunes, when the tune_id is set to CUSTOM. then the frequency, duration are used otherwise those values are ignored. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TuneControl.msg) +**TOPICS:** tune_control + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| tune_id | `uint8` | | | tune_id corresponding to TuneID::\* from the tune_defaults.h in the tunes library | +| tune_override | `bool` | | | if true the tune which is playing will be stopped and the new started | +| frequency | `uint16` | | | in Hz | +| duration | `uint32` | | | in us | +| silence | `uint32` | | | in us | +| volume | `uint8` | | | value between 0-100 if supported by backend | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| TUNE_ID_STOP | `uint8` | 0 | | +| TUNE_ID_STARTUP | `uint8` | 1 | | +| TUNE_ID_ERROR | `uint8` | 2 | | +| TUNE_ID_NOTIFY_POSITIVE | `uint8` | 3 | | +| TUNE_ID_NOTIFY_NEUTRAL | `uint8` | 4 | | +| TUNE_ID_NOTIFY_NEGATIVE | `uint8` | 5 | | +| TUNE_ID_ARMING_WARNING | `uint8` | 6 | | +| TUNE_ID_BATTERY_WARNING_SLOW | `uint8` | 7 | | +| TUNE_ID_BATTERY_WARNING_FAST | `uint8` | 8 | | +| TUNE_ID_GPS_WARNING | `uint8` | 9 | | +| TUNE_ID_ARMING_FAILURE | `uint8` | 10 | | +| TUNE_ID_PARACHUTE_RELEASE | `uint8` | 11 | | +| TUNE_ID_SINGLE_BEEP | `uint8` | 12 | | +| TUNE_ID_HOME_SET | `uint8` | 13 | | +| TUNE_ID_SD_INIT | `uint8` | 14 | | +| TUNE_ID_SD_ERROR | `uint8` | 15 | | +| TUNE_ID_PROG_PX4IO | `uint8` | 16 | | +| TUNE_ID_PROG_PX4IO_OK | `uint8` | 17 | | +| TUNE_ID_PROG_PX4IO_ERR | `uint8` | 18 | | +| TUNE_ID_POWER_OFF | `uint8` | 19 | | +| NUMBER_OF_TUNES | `uint8` | 20 | | +| VOLUME_LEVEL_MIN | `uint8` | 0 | | +| VOLUME_LEVEL_DEFAULT | `uint8` | 20 | | +| VOLUME_LEVEL_MAX | `uint8` | 100 | | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TuneControl.msg) + +:::details +Click here to see original file ```c # This message is used to control the tunes, when the tune_id is set to CUSTOM @@ -45,5 +97,6 @@ uint8 VOLUME_LEVEL_DEFAULT = 20 uint8 VOLUME_LEVEL_MAX = 100 uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/ko/msg_docs/UavcanParameterRequest.md b/docs/ko/msg_docs/UavcanParameterRequest.md index 681c8aa8c9..d2cb0f7771 100644 --- a/docs/ko/msg_docs/UavcanParameterRequest.md +++ b/docs/ko/msg_docs/UavcanParameterRequest.md @@ -1,8 +1,45 @@ +--- +pageClass: is-wide-page +--- + # UavcanParameterRequest (UORB message) -UAVCAN-MAVLink parameter bridge request type +UAVCAN-MAVLink parameter bridge request type. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UavcanParameterRequest.msg) +**TOPICS:** uavcan_parameterrequest + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| message_type | `uint8` | | | MAVLink message type: PARAM_REQUEST_READ, PARAM_REQUEST_LIST, PARAM_SET | +| node_id | `uint8` | | | UAVCAN node ID mapped from MAVLink component ID | +| param_id | `char[17]` | | | MAVLink/UAVCAN parameter name | +| param_index | `int16` | | | -1 if the param_id field should be used as identifier | +| param_type | `uint8` | | | MAVLink parameter type | +| int_value | `int64` | | | current value if param_type is int-like | +| real_value | `float32` | | | current value if param_type is float-like | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| MESSAGE_TYPE_PARAM_REQUEST_READ | `uint8` | 20 | MAVLINK_MSG_ID_PARAM_REQUEST_READ | +| MESSAGE_TYPE_PARAM_REQUEST_LIST | `uint8` | 21 | MAVLINK_MSG_ID_PARAM_REQUEST_LIST | +| MESSAGE_TYPE_PARAM_SET | `uint8` | 23 | MAVLINK_MSG_ID_PARAM_SET | +| NODE_ID_ALL | `uint8` | 0 | MAV_COMP_ID_ALL | +| PARAM_TYPE_UINT8 | `uint8` | 1 | MAV_PARAM_TYPE_UINT8 | +| PARAM_TYPE_INT64 | `uint8` | 8 | MAV_PARAM_TYPE_INT64 | +| PARAM_TYPE_REAL32 | `uint8` | 9 | MAV_PARAM_TYPE_REAL32 | +| ORB_QUEUE_LENGTH | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UavcanParameterRequest.msg) + +:::details +Click here to see original file ```c # UAVCAN-MAVLink parameter bridge request type @@ -28,5 +65,6 @@ int64 int_value # current value if param_type is int-like float32 real_value # current value if param_type is float-like uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/ko/msg_docs/UavcanParameterValue.md b/docs/ko/msg_docs/UavcanParameterValue.md index f77444727a..606f06bbad 100644 --- a/docs/ko/msg_docs/UavcanParameterValue.md +++ b/docs/ko/msg_docs/UavcanParameterValue.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # UavcanParameterValue (UORB message) -UAVCAN-MAVLink parameter bridge response type +UAVCAN-MAVLink parameter bridge response type. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UavcanParameterValue.msg) +**TOPICS:** uavcan_parametervalue + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| node_id | `uint8` | | | UAVCAN node ID mapped from MAVLink component ID | +| param_id | `char[17]` | | | MAVLink/UAVCAN parameter name | +| param_index | `int16` | | | parameter index, if known | +| param_count | `uint16` | | | number of parameters exposed by the node | +| param_type | `uint8` | | | MAVLink parameter type | +| int_value | `int64` | | | current value if param_type is int-like | +| real_value | `float32` | | | current value if param_type is float-like | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UavcanParameterValue.msg) + +:::details +Click here to see original file ```c # UAVCAN-MAVLink parameter bridge response type @@ -14,5 +38,6 @@ uint16 param_count # number of parameters exposed by the node uint8 param_type # MAVLink parameter type int64 int_value # current value if param_type is int-like float32 real_value # current value if param_type is float-like - ``` + +::: diff --git a/docs/ko/msg_docs/UlogStream.md b/docs/ko/msg_docs/UlogStream.md index 8aba8063c8..2025b806f0 100644 --- a/docs/ko/msg_docs/UlogStream.md +++ b/docs/ko/msg_docs/UlogStream.md @@ -1,9 +1,37 @@ +--- +pageClass: is-wide-page +--- + # UlogStream (UORB message) -Message to stream ULog data from the logger. Corresponds to the LOGGING_DATA -mavlink message +Message to stream ULog data from the logger. Corresponds to the LOGGING_DATA. mavlink message. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UlogStream.msg) +**TOPICS:** ulog_stream + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| length | `uint8` | | | length of data | +| first_message_offset | `uint8` | | | offset into data where first message starts. This | +| msg_sequence | `uint16` | | | allows determine drops | +| flags | `uint8` | | | see FLAGS\_\* | +| data | `uint8[249]` | | | ulog data | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------ | +| FLAGS_NEED_ACK | `uint8` | 1 | if set, this message requires to be acked. | +| ORB_QUEUE_LENGTH | `uint8` | 16 | TODO: we might be able to reduce this if mavlink polled on the topic | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UlogStream.msg) + +:::details +Click here to see original file ```c # Message to stream ULog data from the logger. Corresponds to the LOGGING_DATA @@ -25,5 +53,6 @@ uint8 flags # see FLAGS_* uint8[249] data # ulog data uint8 ORB_QUEUE_LENGTH = 16 # TODO: we might be able to reduce this if mavlink polled on the topic - ``` + +::: diff --git a/docs/ko/msg_docs/UlogStreamAck.md b/docs/ko/msg_docs/UlogStreamAck.md index 4bef62c4f5..67fa1eed8a 100644 --- a/docs/ko/msg_docs/UlogStreamAck.md +++ b/docs/ko/msg_docs/UlogStreamAck.md @@ -1,9 +1,33 @@ +--- +pageClass: is-wide-page +--- + # UlogStreamAck (UORB message) -Ack a previously sent ulog_stream message that had -the NEED_ACK flag set +Ack a previously sent ulog_stream message that had. the NEED_ACK flag set. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UlogStreamAck.msg) +**TOPICS:** ulog_streamack + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| msg_sequence | `uint16` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------ | +| ACK_TIMEOUT | `int32` | 50 | timeout waiting for an ack until we retry to send the message [ms] | +| ACK_MAX_TRIES | `int32` | 50 | maximum amount of tries to (re-)send a message, each time waiting ACK_TIMEOUT ms | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/UlogStreamAck.msg) + +:::details +Click here to see original file ```c # Ack a previously sent ulog_stream message that had @@ -14,5 +38,6 @@ int32 ACK_TIMEOUT = 50 # timeout waiting for an ack until we retry to send the int32 ACK_MAX_TRIES = 50 # maximum amount of tries to (re-)send a message, each time waiting ACK_TIMEOUT ms uint16 msg_sequence - ``` + +::: diff --git a/docs/ko/msg_docs/UnregisterExtComponent.md b/docs/ko/msg_docs/UnregisterExtComponent.md index b09ea24d43..67f2a7e058 100644 --- a/docs/ko/msg_docs/UnregisterExtComponent.md +++ b/docs/ko/msg_docs/UnregisterExtComponent.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # UnregisterExtComponent (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/UnregisterExtComponent.msg) +**TOPICS:** unregister_extcomponent + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------- | ---------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| name | `char[25]` | | | either the mode name, or component name | +| arming_check_id | `int8` | | | arming check registration ID (-1 if not registered) | +| mode_id | `int8` | | | assigned mode ID (-1 if not registered) | +| mode_executor_id | `int8` | | | assigned mode executor ID (-1 if not registered) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/UnregisterExtComponent.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -12,5 +39,6 @@ char[25] name # either the mode name, or component name int8 arming_check_id # arming check registration ID (-1 if not registered) int8 mode_id # assigned mode ID (-1 if not registered) int8 mode_executor_id # assigned mode executor ID (-1 if not registered) - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleAcceleration.md b/docs/ko/msg_docs/VehicleAcceleration.md index ea20cad6a9..9d1e60a3b3 100644 --- a/docs/ko/msg_docs/VehicleAcceleration.md +++ b/docs/ko/msg_docs/VehicleAcceleration.md @@ -1,13 +1,32 @@ +--- +pageClass: is-wide-page +--- + # VehicleAcceleration (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAcceleration.msg) +**TOPICS:** vehicle_acceleration + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| xyz | `float32[3]` | | | Bias corrected acceleration (including gravity) in the FRD body frame XYZ-axis in m/s^2 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAcceleration.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint64 timestamp_sample # the timestamp of the raw data (microseconds) float32[3] xyz # Bias corrected acceleration (including gravity) in the FRD body frame XYZ-axis in m/s^2 - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleAirData.md b/docs/ko/msg_docs/VehicleAirData.md index dccfefc095..cc1ceb71e1 100644 --- a/docs/ko/msg_docs/VehicleAirData.md +++ b/docs/ko/msg_docs/VehicleAirData.md @@ -1,11 +1,36 @@ +--- +pageClass: is-wide-page +--- + # VehicleAirData (UORB message) -Vehicle air data +Vehicle air data. Data from the currently selected barometer (plus ambient temperature from the source specified in temperature_source). Includes calculated data such as barometric altitude and air density. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAirData.msg) +**TOPICS:** vehicle_airdata + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp of the raw data | +| baro_device_id | `uint32` | | | Unique device ID for the selected barometer | +| baro_alt_meter | `float32` | m [MSL] | | Altitude above MSL calculated from temperature compensated baro sensor data using an ISA corrected for sea level pressure SENS_BARO_QNH | +| baro_pressure_pa | `float32` | Pa | | Absolute pressure | +| ambient_temperature | `float32` | degC | | Ambient temperature | +| temperature_source | `uint8` | | | Source of temperature data: 0: Default Temperature (15°C), 1: External Baro, 2: Airspeed | +| rho | `float32` | kg/m^3 | | Air density | +| calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever calibration changes. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAirData.msg) + +:::details +Click here to see original file ```c # Vehicle air data @@ -22,5 +47,6 @@ float32 ambient_temperature # [degC] Ambient temperature uint8 temperature_source # Source of temperature data: 0: Default Temperature (15°C), 1: External Baro, 2: Airspeed float32 rho # [kg/m^3] Air density uint8 calibration_count # Calibration changed counter. Monotonically increases whenever calibration changes. - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleAngularAccelerationSetpoint.md b/docs/ko/msg_docs/VehicleAngularAccelerationSetpoint.md index 3caa12669e..4989f5d30b 100644 --- a/docs/ko/msg_docs/VehicleAngularAccelerationSetpoint.md +++ b/docs/ko/msg_docs/VehicleAngularAccelerationSetpoint.md @@ -1,12 +1,31 @@ +--- +pageClass: is-wide-page +--- + # VehicleAngularAccelerationSetpoint (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAngularAccelerationSetpoint.msg) +**TOPICS:** vehicle_angularacceleration_setpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | timestamp of the data sample on which this message is based (microseconds) | +| xyz | `float32[3]` | | | angular acceleration about X, Y, Z body axis in rad/s^2 | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAngularAccelerationSetpoint.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint64 timestamp_sample # timestamp of the data sample on which this message is based (microseconds) float32[3] xyz # angular acceleration about X, Y, Z body axis in rad/s^2 - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleAngularVelocity.md b/docs/ko/msg_docs/VehicleAngularVelocity.md index fb05ad0f51..b12ac9e5a6 100644 --- a/docs/ko/msg_docs/VehicleAngularVelocity.md +++ b/docs/ko/msg_docs/VehicleAngularVelocity.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # VehicleAngularVelocity (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAngularVelocity.msg) +**TOPICS:** vehicle_angular_velocity vehicle_angular_velocity_groundtruth + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | timestamp of the data sample on which this message is based (microseconds) | +| xyz | `float32[3]` | | | Bias corrected angular velocity about the FRD body frame XYZ-axis in rad/s | +| xyz_derivative | `float32[3]` | | | angular acceleration about the FRD body frame XYZ-axis in rad/s^2 | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAngularVelocity.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -13,5 +39,6 @@ float32[3] xyz # Bias corrected angular velocity about the FRD body frame XYZ float32[3] xyz_derivative # angular acceleration about the FRD body frame XYZ-axis in rad/s^2 # TOPICS vehicle_angular_velocity vehicle_angular_velocity_groundtruth - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleAttitude.md b/docs/ko/msg_docs/VehicleAttitude.md index 856fe6d5a6..f3c3cc59c0 100644 --- a/docs/ko/msg_docs/VehicleAttitude.md +++ b/docs/ko/msg_docs/VehicleAttitude.md @@ -1,9 +1,35 @@ +--- +pageClass: is-wide-page +--- + # VehicleAttitude (UORB message) -This is similar to the mavlink message ATTITUDE_QUATERNION, but for onboard use -The quaternion uses the Hamilton convention, and the order is q(w, x, y, z) +This is similar to the mavlink message ATTITUDE_QUATERNION, but for onboard use. The quaternion uses the Hamilton convention, and the order is q(w, x, y, z). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitude.msg) +**TOPICS:** vehicle_attitude vehicle_attitude_groundtruth external_ins_attitude estimator_attitude + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| q | `float32[4]` | | | Quaternion rotation from the FRD body frame to the NED earth frame | +| delta_q_reset | `float32[4]` | | | Amount by which quaternion has changed during last reset | +| quat_reset_counter | `uint8` | | | Quaternion reset counter | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitude.msg) + +:::details +Click here to see original file ```c # This is similar to the mavlink message ATTITUDE_QUATERNION, but for onboard use @@ -21,5 +47,6 @@ uint8 quat_reset_counter # Quaternion reset counter # TOPICS vehicle_attitude vehicle_attitude_groundtruth external_ins_attitude # TOPICS estimator_attitude - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleAttitudeSetpoint.md b/docs/ko/msg_docs/VehicleAttitudeSetpoint.md index 9cd9ba092b..27ab886978 100644 --- a/docs/ko/msg_docs/VehicleAttitudeSetpoint.md +++ b/docs/ko/msg_docs/VehicleAttitudeSetpoint.md @@ -1,6 +1,32 @@ +--- +pageClass: is-wide-page +--- + # VehicleAttitudeSetpoint (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitudeSetpoint.msg) +**TOPICS:** vehicle_attitude_setpoint mc_virtual_attitude_setpoint fw_virtual_attitude_setpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| yaw_sp_move_rate | `float32` | | | rad/s (commanded by user) | +| q_d | `float32[4]` | | | Desired quaternion for quaternion control | +| thrust_body | `float32[3]` | | | Normalized thrust command in body FRD frame [-1,1] | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitudeSetpoint.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 1 @@ -17,5 +43,6 @@ float32[4] q_d # Desired quaternion for quaternion control float32[3] thrust_body # Normalized thrust command in body FRD frame [-1,1] # TOPICS vehicle_attitude_setpoint mc_virtual_attitude_setpoint fw_virtual_attitude_setpoint - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleAttitudeSetpointV0.md b/docs/ko/msg_docs/VehicleAttitudeSetpointV0.md index 6eb03e797c..1d1ed1de3f 100644 --- a/docs/ko/msg_docs/VehicleAttitudeSetpointV0.md +++ b/docs/ko/msg_docs/VehicleAttitudeSetpointV0.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # VehicleAttitudeSetpointV0 (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleAttitudeSetpointV0.msg) +**TOPICS:** vehicle_attitude_setpoint mc_virtual_attitude_setpoint fw_virtual_attitude_setpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| yaw_sp_move_rate | `float32` | | | rad/s (commanded by user) | +| q_d | `float32[4]` | | | Desired quaternion for quaternion control | +| thrust_body | `float32[3]` | | | Normalized thrust command in body FRD frame [-1,1] | +| reset_integral | `bool` | | | Reset roll/pitch/yaw integrals (navigation logic change) | +| fw_control_yaw_wheel | `bool` | | | control heading with steering wheel (used for auto takeoff on runway) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleAttitudeSetpointV0.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -21,5 +49,6 @@ bool reset_integral # Reset roll/pitch/yaw integrals (navigation logic change) bool fw_control_yaw_wheel # control heading with steering wheel (used for auto takeoff on runway) # TOPICS vehicle_attitude_setpoint mc_virtual_attitude_setpoint fw_virtual_attitude_setpoint - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleCommand.md b/docs/ko/msg_docs/VehicleCommand.md index 225f680857..88a1068ee2 100644 --- a/docs/ko/msg_docs/VehicleCommand.md +++ b/docs/ko/msg_docs/VehicleCommand.md @@ -1,9 +1,1582 @@ +--- +pageClass: is-wide-page +--- + # VehicleCommand (UORB message) -Vehicle Command uORB message. Used for commanding a mission / action / etc. -Follows the MAVLink COMMAND_INT / COMMAND_LONG definition +Vehicle Command uORB message. Used for commanding a mission / action / etc. Follows the MAVLink COMMAND_INT / COMMAND_LONG definition. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleCommand.msg) +**TOPICS:** vehicle_command gimbal_v1_command vehicle_command_mode_executor + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start. | +| param1 | `float32` | | | Parameter 1, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param2 | `float32` | | | Parameter 2, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param3 | `float32` | | | Parameter 3, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param4 | `float32` | | | Parameter 4, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param5 | `float64` | | | Parameter 5, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param6 | `float64` | | | Parameter 6, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| param7 | `float32` | | | Parameter 7, as defined by MAVLink uint16 VEHICLE_CMD enum. | +| command | `uint32` | | | Command ID. | +| target_system | `uint8` | | | System which should execute the command. | +| target_component | `uint8` | | | Component which should execute the command, 0 for all components. | +| source_system | `uint8` | | | System sending the command. | +| source_component | `uint16` | | | Component / mode executor sending the command. | +| confirmation | `uint8` | | | 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command). | +| from_external | `bool` | | | | + +## Commands + +### VEHICLE_CMD_CUSTOM_0 (0) + +Test command. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_CUSTOM_1 (1) + +Test command. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_CUSTOM_2 (2) + +Test command. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_NAV_WAYPOINT (16) + +Navigate to MISSION. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | s | | (decimal) Hold time. (ignored by fixed wing, time to stay at MISSION for rotary wing) | +| 2 | m | | Acceptance radius (if the sphere with this radius is hit, the MISSION counts as reached) | +| 3 | | | 0 to pass through the WP, if > 0 radius [m] to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control. | +| 4 | | | Desired yaw angle at MISSION (rotary wing) | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_LOITER_UNLIM (17) + +Loiter around this MISSION an unlimited amount of time. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------------------------------------------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | m | | Radius around MISSION. If positive loiter clockwise, else counter-clockwise | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_LOITER_TURNS (18) + +Loiter around this MISSION for X turns. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | Turns | +| 2 | | | Unused | +| 3 | | | Radius around MISSION [m]. If positive loiter clockwise, else counter-clockwise | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_LOITER_TIME (19) + +Loiter around this MISSION for time. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | s | | Seconds (decimal) | +| 2 | | | Unused | +| 3 | | | Radius around MISSION [m]. If positive loiter clockwise, else counter-clockwise | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_RETURN_TO_LAUNCH (20) + +Return to launch location. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_NAV_LAND (21) + +Land at location. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ---------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_TAKEOFF (22) + +Takeoff from ground / hand. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | --- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | Unused (FW pitch from FW_TKO_PITCH_MIN) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | deg | [0 : 360] | Yaw angle in NED if yaw source available, ignored otherwise | +| 5 | | | Latitude (WGS-84) | +| 6 | | | Longitude (WGS-84) | +| 7 | m | | Altitude AMSL | + +### VEHICLE_CMD_NAV_PRECLAND (23) + +Attempt a precision landing. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_ORBIT (34) + +Start orbiting on the circumference of a circle defined by the parameters. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | --- | ------------------------------------------------------------------------------------- | ------------- | +| 1 | m | | Radius | +| 2 | m/s | | Velocity | +| 3 | | [ORBIT_YAW_BEHAVIOUR](#ORBIT_YAW_BEHAVIOUR) | Yaw behaviour | +| 4 | | | Unused | +| 5 | | | Latitude/X | +| 6 | | | Longitude/Y | +| 7 | | | Altitude/Z | + +### VEHICLE_CMD_DO_FIGUREEIGHT (35) + +Start flying on the outline of a figure eight defined by the parameters. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | --- | ---------- | ------------ | +| 1 | m | | Major radius | +| 2 | m | | Minor radius | +| 3 | m/s | | Velocity | +| 4 | | | 방향 | +| 5 | | | Latitude/X | +| 6 | | | Longitude/Y | +| 7 | | | Altitude/Z | + +### 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. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ------------------------------------------------ | --------------------------------------------------------------------------------------- | +| 1 | | [VEHICLE_ROI](#VEHICLE_ROI) | Region of interest mode. | +| 2 | | | MISSION index/ target ID. | +| 3 | | | ROI index (allows a vehicle to manage multiple ROI's) | +| 4 | | | Unused | +| 5 | | | x the location of the fixed ROI (see MAV_FRAME) | +| 6 | | | y | +| 7 | | | z | + +### VEHICLE_CMD_NAV_PATHPLANNING (81) + +Control autonomous path planning on the MAV. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | --- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | | | 0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning | +| 2 | | | 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 | +| 3 | | | Unused | +| 4 | deg | [0 : 360] | Yaw angle at goal, in compass degrees | +| 5 | | | Latitude/X of goal | +| 6 | | | Longitude/Y of goal | +| 7 | | | Altitude/Z of goal | + +### VEHICLE_CMD_NAV_VTOL_TAKEOFF (84) + +Takeoff from ground / hand and transition to fixed wing. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | --------------------------------------------------------------------------------------------------- | +| 1 | | | Minimum pitch (if airspeed sensor present), desired pitch without sensor | +| 2 | | | Transition heading, 0: Default, 3: Use specified transition heading | +| 3 | | | Unused | +| 4 | | | Yaw angle (if magnetometer present), ignored without magnetometer | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_VTOL_LAND (85) + +Transition to MC and land at location. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ---------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Desired yaw angle. | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_NAV_GUIDED_LIMITS (90) + +Set limits for external control. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | s | | Timeout - maximum time that external controller will be allowed to control vehicle. 0 means no timeout | +| 2 | 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 | +| 3 | 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 | +| 4 | 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 | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_NAV_GUIDED_MASTER (91) + +Set id of master controller. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------ | +| 1 | | | System ID | +| 2 | | | Component ID | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_NAV_DELAY (93) + +Delay the next navigation command a number of seconds or until a specified time. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------------------------------------------- | +| 1 | s | | Delay (decimal, -1 to enable time-of-day fields) | +| 2 | h | | hour (24h format, UTC, -1 to ignore) | +| 3 | | | minute (24h format, UTC, -1 to ignore) | +| 4 | | | second (24h format, UTC) | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_NAV_LAST (95) + +NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_DELAY (112) + +Delay mission state machine. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------------------ | +| 1 | s | | Delay (decimal seconds) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_CHANGE_ALT (113) + +Ascend/descend at rate. Delay mission state machine until desired altitude reached. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ---------------------------------------------- | +| 1 | | | Descent / Ascend rate (m/s) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Finish Altitude | + +### VEHICLE_CMD_CONDITION_DISTANCE (114) + +Delay mission state machine until within desired distance of next NAV point. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ---------------------------------------------------------------- | +| 1 | | | Distance [m] | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_YAW (115) + +Reach a certain target angle. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | ----- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| 1 | deg | [0 : 360] | Target angle. 0 is north | +| 2 | deg/s | | Speed during yaw change | +| 3 | | [-1 : 1] | Direction: negative: counter clockwise, positive: clockwise | +| 4 | 1,0 | | Relative offset or absolute angle | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_LAST (159) + +NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_CONDITION_GATE (4501) + +Wait until passing a threshold. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ----------------------------------------------------------------------------- | +| 1 | | | 2D coord mode: 0: Orthogonal to planned route | +| 2 | | | Altitude mode: 0: Ignore altitude | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Lat | +| 6 | | | Lon | +| 7 | | | Alt | + +### VEHICLE_CMD_DO_SET_MODE (176) + +Set system mode. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------------------------------ | +| 1 | | | Mode, as defined by ENUM MAV_MODE | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_JUMP (177) + +Jump to the desired command in the mission list. Repeat this action only the specified number of times. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | --------------- | +| 1 | | | Sequence number | +| 2 | | | Repeat count | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_CHANGE_SPEED (178) + +Change speed and/or throttle set points. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------------------------------------------- | -------------------------------------------------------------- | +| 1 | | [SPEED_TYPE](#SPEED_TYPE) | Speed type (0=Airspeed, 1=Ground Speed) | +| 2 | | | Speed (m/s, -1 indicates no change) | +| 3 | % | | Throttle ( Percent, -1 indicates no change) | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_HOME (179) + +Changes the home location either to the current location or a specified location. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | --------------------------------------------------------------------------------- | +| 1 | | | Use current (1=use current location, 0=use specified location) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_DO_SET_PARAMETER (180) + +Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ---------------- | +| 1 | | | Parameter number | +| 2 | | | Parameter value | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_RELAY (181) + +Set a relay to a condition. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -------------------------------------------------------------------------------------- | +| 1 | | | Relay number | +| 2 | | | Setting (1=on, 0=off, others possible depending on system hardware) | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_REPEAT_RELAY (182) + +Cycle a relay on and off for a desired number of cycles with a desired period. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ----------------------------------------------- | +| 1 | | | Relay number | +| 2 | | | Cycle count | +| 3 | s | | Cycle time (decimal seconds) | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_REPEAT_SERVO (184) + +Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -------------------------------------------------- | +| 1 | | | Servo number | +| 2 | us | | PWM rate (1000 to 2000 typical) | +| 3 | | | Cycle count | +| 4 | s | | Cycle time | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_FLIGHTTERMINATION (185) + +Terminate flight immediately. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ----------------------------------------------------- | +| 1 | | | Flight termination activated if > 0.5 | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_CHANGE_ALTITUDE (186) + +Set the vehicle to Loiter mode and change the altitude to specified value. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | --------------------- | +| 1 | | | Altitude | +| 2 | | | Frame of new altitude | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_ACTUATOR (187) + +Sets actuators (e.g. servos) to a desired value. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ---------- | +| 1 | | | Actuator 1 | +| 2 | | | Actuator 2 | +| 3 | | | Actuator 3 | +| 4 | | | Actuator 4 | +| 5 | | | Actuator 5 | +| 6 | | | Actuator 6 | +| 7 | | | Index | + +### VEHICLE_CMD_DO_LAND_START (189) + +Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | --------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_GO_AROUND (191) + +Mission command to safely abort an autonomous landing. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -------- | +| 1 | m | | Altitude | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_REPOSITION (192) + +Reposition to specific WGS84 GPS position. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | --- | ---------- | ------------------------ | +| 1 | m/s | | Ground speed | +| 2 | | | Bitmask | +| 3 | m | | Loiter radius for planes | +| 4 | deg | | Yaw | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_DO_PAUSE_CONTINUE (193) + +None + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_SET_ROI_LOCATION (195) + +Sets the region of interest (ROI) to a location. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | --------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Latitude | +| 6 | | | Longitude | +| 7 | | | Altitude | + +### VEHICLE_CMD_DO_SET_ROI_WPNEXT_OFFSET (196) + +Sets the region of interest (ROI) to be toward next waypoint, with optional pitch/roll/yaw offset. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Pitch offset from next waypoint | +| 6 | | | Roll offset from next waypoint | +| 7 | | | Yaw offset from next waypoint | + +### VEHICLE_CMD_DO_SET_ROI_NONE (197) + +Cancels any previous ROI command returning the vehicle/sensors to default flight characteristics. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_CONTROL_VIDEO (200) + +Control onboard camera system. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | Camera ID (-1 for all) | +| 2 | | | Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw | +| 3 | | | Transmission mode: 0: video stream, >0: single images every n seconds (decimal seconds) | +| 4 | | | Recording: 0: disabled, 1: enabled compressed, 2: enabled raw | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_ROI (201) + +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. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ------------------------------------------------ | --------------------------------------------------------------------------------------- | +| 1 | | [VEHICLE_ROI](#VEHICLE_ROI) | Region of interest mode. | +| 2 | | | MISSION index/ target ID. | +| 3 | | | ROI index (allows a vehicle to manage multiple ROI's) | +| 4 | | | Unused | +| 5 | | | x the location of the fixed ROI (see MAV_FRAME) | +| 6 | | | y | +| 7 | | | z | + +### VEHICLE_CMD_DO_DIGICAM_CONTROL (203) + +None + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_MOUNT_CONFIGURE (204) + +Mission command to configure a camera or antenna mount. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | --------------------------------------------------------------------------- | ----------------------------------------------------- | +| 1 | | [MAV_MOUNT_MODE](#MAV_MOUNT_MODE) | Mount operation mode | +| 2 | | | Stabilize roll? (1 = yes, 0 = no) | +| 3 | | | Stabilize pitch? (1 = yes, 0 = no) | +| 4 | | | stabilize yaw? (1 = yes, 0 = no) | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_MOUNT_CONTROL (205) + +Mission command to control a camera or antenna mount. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | --- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| 1 | deg | | Pitch or lat, depending on mount mode. | +| 2 | deg | | Roll or lon depending on mount mode | +| 3 | deg | | /[m] Yaw or alt depending on mount mode | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | [MAV_MOUNT_MODE](#MAV_MOUNT_MODE) | | + +### VEHICLE_CMD_DO_SET_CAM_TRIGG_DIST (206) + +Mission command to set TRIG_DIST for this flight. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------ | +| 1 | m | | Camera trigger distance | +| 2 | ms | | Shutter integration time | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_FENCE_ENABLE (207) + +Mission command to enable the geofence. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------------------------ | +| 1 | | | enable? (0=disable, 1=enable) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_PARACHUTE (208) + +Mission command to trigger a parachute. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | action [@enum PARACHUTE_ACTION] (0=disable, 1=enable, 2=release, for some systems see [@enum PARACHUTE_ACTION], not in general message set.) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_MOTOR_TEST (209) + +Motor test command. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | --------------------------------------------------------------- | +| 1 | | | Instance (@range 1, ) | +| 2 | | | throttle type | +| 3 | | | throttle | +| 4 | | | timeout [s] | +| 5 | | | Motor count | +| 6 | | | Test order | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_INVERTED_FLIGHT (210) + +Change to/from inverted flight. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -------------------------------------------------- | +| 1 | | | inverted (0=normal, 1=inverted) | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_GRIPPER (211) + +Command to operate a gripper. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_AUTOTUNE_ENABLE (212) + +Enable autotune module. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ----------- | +| 1 | | | 1 to enable | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_CAM_TRIGG_INTERVAL (214) + +Mission command to set TRIG_INTERVAL for this flight. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------------------------ | +| 1 | m | | Camera trigger distance | +| 2 | | | Shutter integration time (ms) | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_MOUNT_CONTROL_QUAT (220) + +Mission command to control a camera or antenna mount, using a quaternion as reference. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------------------------------------------- | +| 1 | | | q1 - quaternion param #1, w (1 in null-rotation) | +| 2 | | | q2 - quaternion param #2, x (0 in null-rotation) | +| 3 | | | q3 - quaternion param #3, y (0 in null-rotation) | +| 4 | | | q4 - quaternion param #4, z (0 in null-rotation) | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_GUIDED_MASTER (221) + +Set id of master controller. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------ | +| 1 | | | System ID | +| 2 | | | Component ID | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_GUIDED_LIMITS (222) + +Set limits for external control. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | s | | Timeout - maximum time that external controller will be allowed to control vehicle. 0 means no timeout | +| 2 | 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 | +| 3 | 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 | +| 4 | 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 | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_LAST (240) + +NOP - This command is only used to mark the upper limit of the DO commands in the enumeration. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------ | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_PREFLIGHT_CALIBRATION (241) + +Trigger calibration. This command will be only accepted if in pre-flight mode. See MAVLink spec MAV_CMD_PREFLIGHT_CALIBRATION. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PREFLIGHT_SET_SENSOR_OFFSETS (242) + +Set sensor offsets. This command will be only accepted if in pre-flight mode. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | | | Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow | +| 2 | | | X axis offset (or generic dimension 1), in the sensor's raw units | +| 3 | | | Y axis offset (or generic dimension 2), in the sensor's raw units | +| 4 | | | Z axis offset (or generic dimension 3), in the sensor's raw units | +| 5 | | | Generic dimension 4, in the sensor's raw units | +| 6 | | | Generic dimension 5, in the sensor's raw units | +| 7 | | | Generic dimension 6, in the sensor's raw units | + +### VEHICLE_CMD_PREFLIGHT_UAVCAN (243) + +UAVCAN configuration. If param 1 == 1 actuator mapping and direction assignment should be started. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PREFLIGHT_STORAGE (245) + +Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------------------------------------------------------------------------------------------------------ | +| 1 | | | Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM | +| 2 | | | Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_PREFLIGHT_REBOOT_SHUTDOWN (246) + +Request the reboot or shutdown of system components. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | | | 0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot. | +| 2 | | | 0: Do nothing for onboard computer, 1: Reboot onboard computer, 2: Shutdown onboard computer. | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_OBLIQUE_SURVEY (260) + +Mission command to set a Camera Auto Mount Pivoting Oblique Survey for this flight. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------- | +| 1 | m | | Camera trigger distance | +| 2 | ms | | Shutter integration time | +| 3 | | | Camera minimum trigger interval | +| 4 | | | Number of positions | +| 5 | | | Roll | +| 6 | | | Pitch | +| 7 | | | Unused | + +### VEHICLE_CMD_DO_SET_STANDARD_MODE (262) + +Enable the specified standard MAVLink mode. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ----------------------------------------------------------- | +| 1 | | | MAV_STANDARD_MODE | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_GIMBAL_DEVICE_INFORMATION (283) + +Command to ask information about a low level gimbal. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_MISSION_START (300) + +Start running a mission. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | | | first_item: the first mission item to run | +| 2 | | | last_item: the last mission item to run (after this item is run, the mission ends) | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_ACTUATOR_TEST (310) + +Actuator testing command. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------------------------------------------------------------------------- | --------------- | +| 1 | | [-1 : 1] | value | +| 2 | s | | timeout | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | output function | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_CONFIGURE_ACTUATOR (311) + +Actuator configuration command. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | --------------- | +| 1 | | | configuration | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | output function | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_COMPONENT_ARM_DISARM (400) + +Arms / Disarms a component. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -------------------------------------- | +| 1 | | | 1 to arm, 0 to disarm. | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_RUN_PREARM_CHECKS (401) + +Instructs a target system to run pre-arm checks. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_INJECT_FAILURE (420) + +Inject artificial failure for testing purposes. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_START_RX_PAIR (500) + +Starts receiver pairing. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ---------------------------------------------------------------- | +| 1 | | | 0:Spektrum | +| 2 | | | 0:Spektrum DSM2, 1:Spektrum DSMX | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_REQUEST_MESSAGE (512) + +Request to send a single instance of the specified message. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_REQUEST_CAMERA_INFORMATION (521) + +Request camera information (CAMERA_INFORMATION). + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | --------------------------------------------------------------------------- | +| 1 | | | 0: No action 1: Request camera capabilities | +| 2 | | | Reserved (all remaining params) | +| 3 | | | Reserved (default:0) | +| 4 | | | Reserved (default:0) | +| 5 | | | Reserved (default:0) | +| 6 | | | Reserved (default:0) | +| 7 | | | Reserved (default:0) | + +### VEHICLE_CMD_SET_CAMERA_MODE (530) + +Set camera capture mode (photo, video, etc.). + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_SET_CAMERA_ZOOM (531) + +Set camera zoom. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_SET_CAMERA_FOCUS (532) + +None + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_EXTERNAL_ATTITUDE_ESTIMATE (620) + +Set an external estimate of vehicle attitude in degrees. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_GIMBAL_MANAGER_PITCHYAW (1000) + +Setpoint to be sent to a gimbal manager to set a gimbal pitch and yaw. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_GIMBAL_MANAGER_CONFIGURE (1001) + +Gimbal configuration to set which sysid/compid is in primary and secondary control. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_IMAGE_START_CAPTURE (2000) + +Start image capture sequence. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_TRIGGER_CONTROL (2003) + +Enable or disable on-board camera triggering system. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_VIDEO_START_CAPTURE (2500) + +Start a video capture. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_VIDEO_STOP_CAPTURE (2501) + +Stop the current video capture. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_LOGGING_START (2510) + +Start streaming ULog data. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_LOGGING_STOP (2511) + +Stop streaming ULog data. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_CONTROL_HIGH_LATENCY (2600) + +Control starting/stopping transmitting data over the high latency link. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_VTOL_TRANSITION (3000) + +Command VTOL transition. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_SET_SAFETY_SWITCH_STATE (5300) + +Command safety on/off. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -------------------------------------------------------------------------------- | +| 1 | | | 1 to activate safety, 0 to deactivate safety and allow control surface movements | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +### VEHICLE_CMD_ARM_AUTHORIZATION_REQUEST (3001) + +Request arm authorization. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PAYLOAD_PREPARE_DEPLOY (30001) + +Prepare a payload deployment in the flight plan. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PAYLOAD_CONTROL_DEPLOY (30002) + +Control a pre-programmed payload deployment. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_FIXED_MAG_CAL_YAW (42006) + +Magnetometer calibration based on provided known yaw. This allows for fast calibration using WMM field tables in the vehicle, given only the known yaw of the vehicle. If Latitude and longitude are both zero then use the current vehicle location. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_WINCH (42600) + +Command to operate winch. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_EXTERNAL_POSITION_ESTIMATE (43003) + +External reset of estimator global position when dead reckoning. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_EXTERNAL_WIND_ESTIMATE (43004) + +None + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PX4_INTERNAL_START (65537) + +Start of PX4 internal only vehicle commands (> UINT16_MAX). + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | -- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_SET_GPS_GLOBAL_ORIGIN (100000) + +Sets the GPS coordinates of the vehicle local origin (0,0,0) position. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------------------------------------------- | +| 1 | | | Unused | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Latitude (WGS-84) | +| 6 | | | Longitude (WGS-84) | +| 7 | m | | Altitude (AMSL from GNSS, positive above ground) | + +### VEHICLE_CMD_SET_NAV_STATE (100001) + +Change mode by specifying nav_state directly. + +| Param | 단위 | Range/Enum | 설명 | +| ----- | -- | ---------- | ------------------------------ | +| 1 | | | nav_state | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +## Enums + +### ORBIT_YAW_BEHAVIOUR {#ORBIT_YAW_BEHAVIOUR} + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER | `uint8` | 0 | | +| ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING | `uint8` | 1 | | +| ORBIT_YAW_BEHAVIOUR_UNCONTROLLED | `uint8` | 2 | | +| ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE | `uint8` | 3 | | +| ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED | `uint8` | 4 | | +| ORBIT_YAW_BEHAVIOUR_UNCHANGED | `uint8` | 5 | | + +### VEHICLE_ROI {#VEHICLE_ROI} + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------ | ------- | ----- | -------------------------------------------- | +| VEHICLE_ROI_NONE | `uint8` | 0 | No region of interest. | +| VEHICLE_ROI_WPNEXT | `uint8` | 1 | Point toward next MISSION. | +| VEHICLE_ROI_WPINDEX | `uint8` | 2 | Point toward given MISSION. | +| VEHICLE_ROI_LOCATION | `uint8` | 3 | Point toward fixed location. | +| VEHICLE_ROI_TARGET | `uint8` | 4 | Point toward target. | +| VEHICLE_ROI_ENUM_END | `uint8` | 5 | | + +### SPEED_TYPE {#SPEED_TYPE} + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | -- | +| SPEED_TYPE_AIRSPEED | `uint8` | 0 | | +| SPEED_TYPE_GROUNDSPEED | `uint8` | 1 | | +| SPEED_TYPE_CLIMB_SPEED | `uint8` | 2 | | +| SPEED_TYPE_DESCEND_SPEED | `uint8` | 3 | | + +### MAV_MOUNT_MODE {#MAV_MOUNT_MODE} + +| 명칭 | 형식 | Value | 설명 | +| -- | -- | ----- | -- | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| MESSAGE_VERSION | `uint32` | 0 | | +| PREFLIGHT_CALIBRATION_TEMPERATURE_CALIBRATION | `uint16` | 3 | Param value for VEHICLE_CMD_PREFLIGHT_CALIBRATION to start temperature calibration. | +| VEHICLE_MOUNT_MODE_RETRACT | `uint8` | 0 | Load and keep safe position (Roll,Pitch,Yaw) from permanent memory and stop stabilization. | +| VEHICLE_MOUNT_MODE_NEUTRAL | `uint8` | 1 | Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory. | +| VEHICLE_MOUNT_MODE_MAVLINK_TARGETING | `uint8` | 2 | Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization. | +| VEHICLE_MOUNT_MODE_RC_TARGETING | `uint8` | 3 | Load neutral position and start RC Roll,Pitch,Yaw control with stabilization. | +| VEHICLE_MOUNT_MODE_GPS_POINT | `uint8` | 4 | Load neutral position and start to point to Lat,Lon,Alt. | +| VEHICLE_MOUNT_MODE_ENUM_END | `uint8` | 5 | | +| PARACHUTE_ACTION_DISABLE | `uint8` | 0 | | +| PARACHUTE_ACTION_ENABLE | `uint8` | 1 | | +| PARACHUTE_ACTION_RELEASE | `uint8` | 2 | | +| FAILURE_UNIT_SENSOR_GYRO | `uint8` | 0 | | +| FAILURE_UNIT_SENSOR_ACCEL | `uint8` | 1 | | +| FAILURE_UNIT_SENSOR_MAG | `uint8` | 2 | | +| FAILURE_UNIT_SENSOR_BARO | `uint8` | 3 | | +| FAILURE_UNIT_SENSOR_GPS | `uint8` | 4 | | +| FAILURE_UNIT_SENSOR_OPTICAL_FLOW | `uint8` | 5 | | +| FAILURE_UNIT_SENSOR_VIO | `uint8` | 6 | | +| FAILURE_UNIT_SENSOR_DISTANCE_SENSOR | `uint8` | 7 | | +| FAILURE_UNIT_SENSOR_AIRSPEED | `uint8` | 8 | | +| FAILURE_UNIT_SYSTEM_BATTERY | `uint8` | 100 | | +| FAILURE_UNIT_SYSTEM_MOTOR | `uint8` | 101 | | +| FAILURE_UNIT_SYSTEM_SERVO | `uint8` | 102 | | +| FAILURE_UNIT_SYSTEM_AVOIDANCE | `uint8` | 103 | | +| FAILURE_UNIT_SYSTEM_RC_SIGNAL | `uint8` | 104 | | +| FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL | `uint8` | 105 | | +| FAILURE_TYPE_OK | `uint8` | 0 | | +| FAILURE_TYPE_OFF | `uint8` | 1 | | +| FAILURE_TYPE_STUCK | `uint8` | 2 | | +| FAILURE_TYPE_GARBAGE | `uint8` | 3 | | +| FAILURE_TYPE_WRONG | `uint8` | 4 | | +| FAILURE_TYPE_SLOW | `uint8` | 5 | | +| FAILURE_TYPE_DELAYED | `uint8` | 6 | | +| FAILURE_TYPE_INTERMITTENT | `uint8` | 7 | | +| ARMING_ACTION_DISARM | `int8` | 0 | | +| ARMING_ACTION_ARM | `int8` | 1 | | +| GRIPPER_ACTION_RELEASE | `uint8` | 0 | | +| GRIPPER_ACTION_GRAB | `uint8` | 1 | | +| SAFETY_OFF | `uint8` | 0 | | +| SAFETY_ON | `uint8` | 1 | | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | +| COMPONENT_MODE_EXECUTOR_START | `uint16` | 1000 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleCommand.msg) + +:::details +Click here to see original file ```c # Vehicle Command uORB message. Used for commanding a mission / action / etc. @@ -212,5 +1785,6 @@ bool from_external uint16 COMPONENT_MODE_EXECUTOR_START = 1000 # TOPICS vehicle_command gimbal_v1_command vehicle_command_mode_executor - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleCommandAck.md b/docs/ko/msg_docs/VehicleCommandAck.md index e40b7bc87c..1573f3a243 100644 --- a/docs/ko/msg_docs/VehicleCommandAck.md +++ b/docs/ko/msg_docs/VehicleCommandAck.md @@ -1,10 +1,52 @@ +--- +pageClass: is-wide-page +--- + # VehicleCommandAck (UORB message) -Vehicle Command Ackonwledgement uORB message. -Used for acknowledging the vehicle command being received. -Follows the MAVLink COMMAND_ACK message definition +Vehicle Command Ackonwledgement uORB message. Used for acknowledging the vehicle command being received. Follows the MAVLink COMMAND_ACK message definition. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleCommandAck.msg) +**TOPICS:** vehicle_commandack + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| command | `uint32` | | | Command that is being acknowledged | +| result | `uint8` | | | Command result | +| result_param1 | `uint8` | | | Also used as progress[%], it can be set with the reason why the command was denied, or the progress percentage when result is MAV_RESULT_IN_PROGRESS | +| result_param2 | `int32` | | | Additional parameter of the result, example: which parameter of MAV_CMD_NAV_WAYPOINT caused it to be denied. | +| target_system | `uint8` | | | | +| target_component | `uint16` | | | Target component / mode executor | +| from_external | `bool` | | | Indicates if the command came from an external source | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | --------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| VEHICLE_CMD_RESULT_ACCEPTED | `uint8` | 0 | Command ACCEPTED and EXECUTED | +| VEHICLE_CMD_RESULT_TEMPORARILY_REJECTED | `uint8` | 1 | Command TEMPORARY REJECTED/DENIED | +| VEHICLE_CMD_RESULT_DENIED | `uint8` | 2 | Command PERMANENTLY DENIED | +| VEHICLE_CMD_RESULT_UNSUPPORTED | `uint8` | 3 | Command UNKNOWN/UNSUPPORTED | +| VEHICLE_CMD_RESULT_FAILED | `uint8` | 4 | Command executed, but failed | +| VEHICLE_CMD_RESULT_IN_PROGRESS | `uint8` | 5 | Command being executed | +| VEHICLE_CMD_RESULT_CANCELLED | `uint8` | 6 | Command Canceled | +| ARM_AUTH_DENIED_REASON_GENERIC | `uint16` | 0 | | +| ARM_AUTH_DENIED_REASON_NONE | `uint16` | 1 | | +| ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT | `uint16` | 2 | | +| ARM_AUTH_DENIED_REASON_TIMEOUT | `uint16` | 3 | | +| ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE | `uint16` | 4 | | +| ARM_AUTH_DENIED_REASON_BAD_WEATHER | `uint16` | 5 | | +| ORB_QUEUE_LENGTH | `uint8` | 8 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleCommandAck.msg) + +:::details +Click here to see original file ```c # Vehicle Command Ackonwledgement uORB message. @@ -32,7 +74,7 @@ uint16 ARM_AUTH_DENIED_REASON_TIMEOUT = 3 uint16 ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE = 4 uint16 ARM_AUTH_DENIED_REASON_BAD_WEATHER = 5 -uint8 ORB_QUEUE_LENGTH = 4 +uint8 ORB_QUEUE_LENGTH = 8 uint32 command # Command that is being acknowledged uint8 result # Command result @@ -42,5 +84,6 @@ uint8 target_system uint16 target_component # Target component / mode executor bool from_external # Indicates if the command came from an external source - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleConstraints.md b/docs/ko/msg_docs/VehicleConstraints.md index 266ac8911f..37c83cf27a 100644 --- a/docs/ko/msg_docs/VehicleConstraints.md +++ b/docs/ko/msg_docs/VehicleConstraints.md @@ -1,9 +1,28 @@ +--- +pageClass: is-wide-page +--- + # VehicleConstraints (UORB message) -Local setpoint constraints in NED frame -setting something to NaN means that no limit is provided +Local setpoint constraints in NED frame. setting something to NaN means that no limit is provided. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleConstraints.msg) +**TOPICS:** vehicle_constraints + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| speed_up | `float32` | | | in meters/sec | +| speed_down | `float32` | | | in meters/sec | +| want_takeoff | `bool` | | | tell the controller to initiate takeoff when idling (ignored during flight) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleConstraints.msg) + +:::details +Click here to see original file ```c # Local setpoint constraints in NED frame @@ -15,5 +34,6 @@ float32 speed_up # in meters/sec float32 speed_down # in meters/sec bool want_takeoff # tell the controller to initiate takeoff when idling (ignored during flight) - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleControlMode.md b/docs/ko/msg_docs/VehicleControlMode.md index b32f09c725..63d54865b1 100644 --- a/docs/ko/msg_docs/VehicleControlMode.md +++ b/docs/ko/msg_docs/VehicleControlMode.md @@ -1,6 +1,44 @@ +--- +pageClass: is-wide-page +--- + # VehicleControlMode (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleControlMode.msg) +**TOPICS:** vehicle_control_mode config_control_setpoints + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| flag_armed | `bool` | | | synonym for actuator_armed.armed | +| flag_multicopter_position_control_enabled | `bool` | | | | +| flag_control_manual_enabled | `bool` | | | true if manual input is mixed in | +| flag_control_auto_enabled | `bool` | | | true if onboard autopilot should act | +| flag_control_offboard_enabled | `bool` | | | true if offboard control should be used | +| flag_control_position_enabled | `bool` | | | true if position is controlled | +| flag_control_velocity_enabled | `bool` | | | true if horizontal velocity (implies direction) is controlled | +| flag_control_altitude_enabled | `bool` | | | true if altitude is controlled | +| flag_control_climb_rate_enabled | `bool` | | | true if climb rate is controlled | +| flag_control_acceleration_enabled | `bool` | | | true if acceleration is controlled | +| flag_control_attitude_enabled | `bool` | | | true if attitude stabilization is mixed in | +| flag_control_rates_enabled | `bool` | | | true if rates are stabilized | +| flag_control_allocation_enabled | `bool` | | | true if control allocation is enabled | +| flag_control_termination_enabled | `bool` | | | true if flighttermination is enabled | +| source_id | `uint8` | | | Mode ID (nav_state) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleControlMode.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -27,5 +65,6 @@ bool flag_control_termination_enabled # true if flighttermination is enabled uint8 source_id # Mode ID (nav_state) # TOPICS vehicle_control_mode config_control_setpoints - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleGlobalPosition.md b/docs/ko/msg_docs/VehicleGlobalPosition.md index c3e4147201..7e3fcd4f4a 100644 --- a/docs/ko/msg_docs/VehicleGlobalPosition.md +++ b/docs/ko/msg_docs/VehicleGlobalPosition.md @@ -1,12 +1,48 @@ +--- +pageClass: is-wide-page +--- + # VehicleGlobalPosition (UORB message) -Fused global position in WGS84. -This struct contains global position estimation. It is not the raw GPS -measurement (@see vehicle_gps_position). This topic is usually published by the position -estimator, which will take more sources of information into account than just GPS, -e.g. control inputs of the vehicle in a Kalman-filter implementation. +Fused global position in WGS84. This struct contains global position estimation. It is not the raw GPS. measurement (@see vehicle_gps_position). This topic is usually published by the position. estimator, which will take more sources of information into account than just GPS,. e.g. control inputs of the vehicle in a Kalman-filter implementation. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleGlobalPosition.msg) +**TOPICS:** vehicle_global_position vehicle_global_position_groundtruth external_ins_global_position estimator_global_position aux_global_position + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| lat | `float64` | | | Latitude, (degrees) | +| lon | `float64` | | | Longitude, (degrees) | +| alt | `float32` | | | Altitude AMSL, (meters) | +| alt_ellipsoid | `float32` | | | Altitude above ellipsoid, (meters) | +| lat_lon_valid | `bool` | | | | +| alt_valid | `bool` | | | | +| delta_alt | `float32` | | | Reset delta for altitude | +| delta_terrain | `float32` | | | Reset delta for terrain | +| lat_lon_reset_counter | `uint8` | | | Counter for reset events on horizontal position coordinates | +| alt_reset_counter | `uint8` | | | Counter for reset events on altitude | +| terrain_reset_counter | `uint8` | | | Counter for reset events on terrain | +| eph | `float32` | | | Standard deviation of horizontal position error, (metres) | +| epv | `float32` | | | Standard deviation of vertical position error, (metres) | +| terrain_alt | `float32` | | | Terrain altitude WGS84, (metres) | +| terrain_alt_valid | `bool` | | | Terrain altitude estimate is valid | +| dead_reckoning | `bool` | | | True if this position is estimated through dead-reckoning | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleGlobalPosition.msg) + +:::details +Click here to see original file ```c # Fused global position in WGS84. @@ -46,5 +82,6 @@ bool dead_reckoning # True if this position is estimated through dead-reckoning # TOPICS vehicle_global_position vehicle_global_position_groundtruth external_ins_global_position # TOPICS estimator_global_position # TOPICS aux_global_position - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleImu.md b/docs/ko/msg_docs/VehicleImu.md index 5c3856f190..74520f4fa4 100644 --- a/docs/ko/msg_docs/VehicleImu.md +++ b/docs/ko/msg_docs/VehicleImu.md @@ -1,8 +1,44 @@ +--- +pageClass: is-wide-page +--- + # VehicleImu (UORB message) IMU readings in SI-unit form. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleImu.msg) +**TOPICS:** vehicle_imu + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| accel_device_id | `uint32` | | | Accelerometer unique device ID for the sensor that does not change between power cycles | +| gyro_device_id | `uint32` | | | Gyroscope unique device ID for the sensor that does not change between power cycles | +| delta_angle | `float32[3]` | | | delta angle about the FRD body frame XYZ-axis in rad over the integration time frame (delta_angle_dt) | +| delta_velocity | `float32[3]` | | | delta velocity in the FRD body frame XYZ-axis in m/s over the integration time frame (delta_velocity_dt) | +| delta_angle_dt | `uint32` | | | integration period in microseconds | +| delta_velocity_dt | `uint32` | | | integration period in microseconds | +| delta_angle_clipping | `uint8` | | | bitfield indicating if there was any gyro clipping (per axis) during the integration time frame | +| delta_velocity_clipping | `uint8` | | | bitfield indicating if there was any accelerometer clipping (per axis) during the integration time frame | +| accel_calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever accelermeter calibration changes. | +| gyro_calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever rate gyro calibration changes. | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ---------------------------------------------------------- | ------- | ----- | -- | +| CLIPPING_X | `uint8` | 1 | | +| CLIPPING_Y | `uint8` | 2 | | +| CLIPPING_Z | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleImu.msg) + +:::details +Click here to see original file ```c # IMU readings in SI-unit form. @@ -28,5 +64,6 @@ uint8 delta_velocity_clipping # bitfield indicating if there was any accelerom uint8 accel_calibration_count # Calibration changed counter. Monotonically increases whenever accelermeter calibration changes. uint8 gyro_calibration_count # Calibration changed counter. Monotonically increases whenever rate gyro calibration changes. - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleImuStatus.md b/docs/ko/msg_docs/VehicleImuStatus.md index c6335b8f3b..7cf1612c42 100644 --- a/docs/ko/msg_docs/VehicleImuStatus.md +++ b/docs/ko/msg_docs/VehicleImuStatus.md @@ -1,6 +1,42 @@ +--- +pageClass: is-wide-page +--- + # VehicleImuStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleImuStatus.msg) +**TOPICS:** vehicle_imustatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| accel_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| gyro_device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| accel_clipping | `uint32[3]` | | | total clipping per axis | +| gyro_clipping | `uint32[3]` | | | total clipping per axis | +| accel_error_count | `uint32` | | | | +| gyro_error_count | `uint32` | | | | +| accel_rate_hz | `float32` | | | | +| gyro_rate_hz | `float32` | | | | +| accel_raw_rate_hz | `float32` | | | full raw sensor sample rate (Hz) | +| gyro_raw_rate_hz | `float32` | | | full raw sensor sample rate (Hz) | +| accel_vibration_metric | `float32` | | | high frequency vibration level in the accelerometer data (m/s/s) | +| gyro_vibration_metric | `float32` | | | high frequency vibration level in the gyro data (rad/s) | +| delta_angle_coning_metric | `float32` | | | average IMU delta angle coning correction (rad^2) | +| mean_accel | `float32[3]` | | | average accelerometer readings since last publication | +| mean_gyro | `float32[3]` | | | average gyroscope readings since last publication | +| var_accel | `float32[3]` | | | accelerometer variance since last publication | +| var_gyro | `float32[3]` | | | gyroscope variance since last publication | +| temperature_accel | `float32` | | | | +| temperature_gyro | `float32` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleImuStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -31,5 +67,6 @@ float32[3] var_gyro # gyroscope variance since last publication float32 temperature_accel float32 temperature_gyro - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleLandDetected.md b/docs/ko/msg_docs/VehicleLandDetected.md index acd95de190..b7a3cbd68e 100644 --- a/docs/ko/msg_docs/VehicleLandDetected.md +++ b/docs/ko/msg_docs/VehicleLandDetected.md @@ -1,6 +1,41 @@ +--- +pageClass: is-wide-page +--- + # VehicleLandDetected (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleLandDetected.msg) +**TOPICS:** vehicle_landdetected + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| freefall | `bool` | | | true if vehicle is currently in free-fall | +| ground_contact | `bool` | | | true if vehicle has ground contact but is not landed (1. stage) | +| maybe_landed | `bool` | | | true if the vehicle might have landed (2. stage) | +| landed | `bool` | | | true if vehicle is currently landed on the ground (3. stage) | +| in_ground_effect | `bool` | | | indicates if from the perspective of the landing detector the vehicle might be in ground effect (baro). This flag will become true if the vehicle is not moving horizontally and is descending (crude assumption that user is landing). | +| in_descend | `bool` | | | | +| has_low_throttle | `bool` | | | | +| vertical_movement | `bool` | | | | +| horizontal_movement | `bool` | | | | +| rotational_movement | `bool` | | | | +| close_to_ground_or_skipped_check | `bool` | | | | +| at_rest | `bool` | | | | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleLandDetected.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -24,5 +59,6 @@ bool rotational_movement bool close_to_ground_or_skipped_check bool at_rest - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleLocalPosition.md b/docs/ko/msg_docs/VehicleLocalPosition.md index af84dc1ddb..c2d2a179c0 100644 --- a/docs/ko/msg_docs/VehicleLocalPosition.md +++ b/docs/ko/msg_docs/VehicleLocalPosition.md @@ -1,9 +1,86 @@ +--- +pageClass: is-wide-page +--- + # VehicleLocalPosition (UORB message) -Fused local position in NED. -The coordinate system origin is the vehicle position at the time when the EKF2-module was started. +Fused local position in NED. The coordinate system origin is the vehicle position at the time when the EKF2-module was started. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleLocalPosition.msg) +**TOPICS:** vehicle_local_position vehicle_local_position_groundtruth external_ins_local_position estimator_local_position + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| xy_valid | `bool` | | | true if x and y are valid | +| z_valid | `bool` | | | true if z is valid | +| v_xy_valid | `bool` | | | true if vx and vy are valid | +| v_z_valid | `bool` | | | true if vz is valid | +| x | `float32` | | | North position in NED earth-fixed frame, (metres) | +| y | `float32` | | | East position in NED earth-fixed frame, (metres) | +| z | `float32` | | | Down position (negative altitude) in NED earth-fixed frame, (metres) | +| delta_xy | `float32[2]` | | | Amount of lateral shift of position estimate in latest reset (in x and y) [m] | +| xy_reset_counter | `uint8` | | | Index of latest lateral position estimate reset | +| delta_z | `float32` | | | Amount of vertical shift of position estimate in latest reset [m] | +| z_reset_counter | `uint8` | | | Index of latest vertical position estimate reset | +| vx | `float32` | | | North velocity in NED earth-fixed frame, (metres/sec) | +| vy | `float32` | | | East velocity in NED earth-fixed frame, (metres/sec) | +| vz | `float32` | | | Down velocity in NED earth-fixed frame, (metres/sec) | +| z_deriv | `float32` | | | Down position time derivative in NED earth-fixed frame, (metres/sec) | +| delta_vxy | `float32[2]` | | | Amount of lateral shift of velocity estimate in latest reset (in x and y) [m/s] | +| vxy_reset_counter | `uint8` | | | Index of latest vertical velocity estimate reset | +| delta_vz | `float32` | | | Amount of vertical shift of velocity estimate in latest reset [m/s] | +| vz_reset_counter | `uint8` | | | Index of latest vertical velocity estimate reset | +| ax | `float32` | | | North velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| ay | `float32` | | | East velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| az | `float32` | | | Down velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| heading | `float32` | | | Euler yaw angle transforming the tangent plane relative to NED earth-fixed frame, -PI..+PI, (radians) | +| heading_var | `float32` | | | | +| unaided_heading | `float32` | | | Same as heading but generated by integrating corrected gyro data only | +| delta_heading | `float32` | | | Heading delta caused by latest heading reset [rad] | +| heading_reset_counter | `uint8` | | | Index of latest heading reset | +| heading_good_for_control | `bool` | | | | +| tilt_var | `float32` | | | | +| xy_global | `bool` | | | true if position (x, y) has a valid global reference (ref_lat, ref_lon) | +| z_global | `bool` | | | true if z has a valid global reference (ref_alt) | +| ref_timestamp | `uint64` | | | Time when reference position was set since system start, (microseconds) | +| ref_lat | `float64` | | | Reference point latitude, (degrees) | +| ref_lon | `float64` | | | Reference point longitude, (degrees) | +| ref_alt | `float32` | | | Reference altitude AMSL, (metres) | +| dist_bottom_valid | `bool` | | | true if distance to bottom surface is valid | +| dist_bottom | `float32` | | | Distance from from bottom surface to ground, (metres) | +| dist_bottom_var | `float32` | | | terrain estimate variance (m^2) | +| delta_dist_bottom | `float32` | | | Amount of vertical shift of dist bottom estimate in latest reset [m] | +| dist_bottom_reset_counter | `uint8` | | | Index of latest dist bottom estimate reset | +| dist_bottom_sensor_bitfield | `uint8` | | | bitfield indicating what type of sensor is used to estimate dist_bottom | +| eph | `float32` | | | Standard deviation of horizontal position error, (metres) | +| epv | `float32` | | | Standard deviation of vertical position error, (metres) | +| evh | `float32` | | | Standard deviation of horizontal velocity error, (metres/sec) | +| evv | `float32` | | | Standard deviation of vertical velocity error, (metres/sec) | +| dead_reckoning | `bool` | | | True if this position is estimated through dead-reckoning | +| vxy_max | `float32` | | | maximum horizontal speed (meters/sec) | +| vz_max | `float32` | | | maximum vertical speed (meters/sec) | +| hagl_min | `float32` | | | minimum height above ground level (meters) | +| hagl_max_z | `float32` | | | maximum height above ground level for z-control (meters) | +| hagl_max_xy | `float32` | | | maximum height above ground level for xy-control (meters) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| MESSAGE_VERSION | `uint32` | 1 | | +| DIST_BOTTOM_SENSOR_NONE | `uint8` | 0 | | +| DIST_BOTTOM_SENSOR_RANGE | `uint8` | 1 | (1 << 0) a range sensor is used to estimate dist_bottom field | +| DIST_BOTTOM_SENSOR_FLOW | `uint8` | 2 | (1 << 1) a flow sensor is used to estimate dist_bottom field (mostly fixed-wing use case) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleLocalPosition.msg) + +:::details +Click here to see original file ```c # Fused local position in NED. @@ -94,5 +171,6 @@ float32 hagl_max_xy # maximum height above ground level for xy-control (meters # TOPICS vehicle_local_position vehicle_local_position_groundtruth external_ins_local_position # TOPICS estimator_local_position - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleLocalPositionSetpoint.md b/docs/ko/msg_docs/VehicleLocalPositionSetpoint.md index 15f66292b3..a6015eae16 100644 --- a/docs/ko/msg_docs/VehicleLocalPositionSetpoint.md +++ b/docs/ko/msg_docs/VehicleLocalPositionSetpoint.md @@ -1,10 +1,35 @@ +--- +pageClass: is-wide-page +--- + # VehicleLocalPositionSetpoint (UORB message) -Local position setpoint in NED frame -Telemetry of PID position controller to monitor tracking. -NaN means the state was not controlled +Local position setpoint in NED frame. Telemetry of PID position controller to monitor tracking. NaN means the state was not controlled. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleLocalPositionSetpoint.msg) +**TOPICS:** vehicle_localposition_setpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------ | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| x | `float32` | | | in meters NED | +| y | `float32` | | | in meters NED | +| z | `float32` | | | in meters NED | +| vx | `float32` | | | in meters/sec | +| vy | `float32` | | | in meters/sec | +| vz | `float32` | | | in meters/sec | +| acceleration | `float32[3]` | | | in meters/sec^2 | +| thrust | `float32[3]` | | | normalized thrust vector in NED | +| yaw | `float32` | | | in radians NED -PI..+PI | +| yawspeed | `float32` | | | in radians/sec | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleLocalPositionSetpoint.msg) + +:::details +Click here to see original file ```c # Local position setpoint in NED frame @@ -26,5 +51,6 @@ float32[3] thrust # normalized thrust vector in NED float32 yaw # in radians NED -PI..+PI float32 yawspeed # in radians/sec - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleLocalPositionV0.md b/docs/ko/msg_docs/VehicleLocalPositionV0.md index 05d9361dc1..f76947c7dd 100644 --- a/docs/ko/msg_docs/VehicleLocalPositionV0.md +++ b/docs/ko/msg_docs/VehicleLocalPositionV0.md @@ -1,9 +1,85 @@ +--- +pageClass: is-wide-page +--- + # VehicleLocalPositionV0 (UORB message) -Fused local position in NED. -The coordinate system origin is the vehicle position at the time when the EKF2-module was started. +Fused local position in NED. The coordinate system origin is the vehicle position at the time when the EKF2-module was started. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleLocalPositionV0.msg) +**TOPICS:** vehicle_local_position vehicle_local_position_groundtruth external_ins_local_position estimator_local_position + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| xy_valid | `bool` | | | true if x and y are valid | +| z_valid | `bool` | | | true if z is valid | +| v_xy_valid | `bool` | | | true if vx and vy are valid | +| v_z_valid | `bool` | | | true if vz is valid | +| x | `float32` | | | North position in NED earth-fixed frame, (metres) | +| y | `float32` | | | East position in NED earth-fixed frame, (metres) | +| z | `float32` | | | Down position (negative altitude) in NED earth-fixed frame, (metres) | +| delta_xy | `float32[2]` | | | Amount of lateral shift of position estimate in latest reset (in x and y) [m] | +| xy_reset_counter | `uint8` | | | Index of latest lateral position estimate reset | +| delta_z | `float32` | | | Amount of vertical shift of position estimate in latest reset [m] | +| z_reset_counter | `uint8` | | | Index of latest vertical position estimate reset | +| vx | `float32` | | | North velocity in NED earth-fixed frame, (metres/sec) | +| vy | `float32` | | | East velocity in NED earth-fixed frame, (metres/sec) | +| vz | `float32` | | | Down velocity in NED earth-fixed frame, (metres/sec) | +| z_deriv | `float32` | | | Down position time derivative in NED earth-fixed frame, (metres/sec) | +| delta_vxy | `float32[2]` | | | Amount of lateral shift of velocity estimate in latest reset (in x and y) [m/s] | +| vxy_reset_counter | `uint8` | | | Index of latest vertical velocity estimate reset | +| delta_vz | `float32` | | | Amount of vertical shift of velocity estimate in latest reset [m/s] | +| vz_reset_counter | `uint8` | | | Index of latest vertical velocity estimate reset | +| ax | `float32` | | | North velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| ay | `float32` | | | East velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| az | `float32` | | | Down velocity derivative in NED earth-fixed frame, (metres/sec^2) | +| heading | `float32` | | | Euler yaw angle transforming the tangent plane relative to NED earth-fixed frame, -PI..+PI, (radians) | +| heading_var | `float32` | | | | +| unaided_heading | `float32` | | | Same as heading but generated by integrating corrected gyro data only | +| delta_heading | `float32` | | | Heading delta caused by latest heading reset [rad] | +| heading_reset_counter | `uint8` | | | Index of latest heading reset | +| heading_good_for_control | `bool` | | | | +| tilt_var | `float32` | | | | +| xy_global | `bool` | | | true if position (x, y) has a valid global reference (ref_lat, ref_lon) | +| z_global | `bool` | | | true if z has a valid global reference (ref_alt) | +| ref_timestamp | `uint64` | | | Time when reference position was set since system start, (microseconds) | +| ref_lat | `float64` | | | Reference point latitude, (degrees) | +| ref_lon | `float64` | | | Reference point longitude, (degrees) | +| ref_alt | `float32` | | | Reference altitude AMSL, (metres) | +| dist_bottom_valid | `bool` | | | true if distance to bottom surface is valid | +| dist_bottom | `float32` | | | Distance from from bottom surface to ground, (metres) | +| dist_bottom_var | `float32` | | | terrain estimate variance (m^2) | +| delta_dist_bottom | `float32` | | | Amount of vertical shift of dist bottom estimate in latest reset [m] | +| dist_bottom_reset_counter | `uint8` | | | Index of latest dist bottom estimate reset | +| dist_bottom_sensor_bitfield | `uint8` | | | bitfield indicating what type of sensor is used to estimate dist_bottom | +| eph | `float32` | | | Standard deviation of horizontal position error, (metres) | +| epv | `float32` | | | Standard deviation of vertical position error, (metres) | +| evh | `float32` | | | Standard deviation of horizontal velocity error, (metres/sec) | +| evv | `float32` | | | Standard deviation of vertical velocity error, (metres/sec) | +| dead_reckoning | `bool` | | | True if this position is estimated through dead-reckoning | +| vxy_max | `float32` | | | maximum horizontal speed - set to 0 when limiting not required (meters/sec) | +| vz_max | `float32` | | | maximum vertical speed - set to 0 when limiting not required (meters/sec) | +| hagl_min | `float32` | | | minimum height above ground level - set to 0 when limiting not required (meters) | +| hagl_max | `float32` | | | maximum height above ground level - set to 0 when limiting not required (meters) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| MESSAGE_VERSION | `uint32` | 0 | | +| DIST_BOTTOM_SENSOR_NONE | `uint8` | 0 | | +| DIST_BOTTOM_SENSOR_RANGE | `uint8` | 1 | (1 << 0) a range sensor is used to estimate dist_bottom field | +| DIST_BOTTOM_SENSOR_FLOW | `uint8` | 2 | (1 << 1) a flow sensor is used to estimate dist_bottom field (mostly fixed-wing use case) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleLocalPositionV0.msg) + +:::details +Click here to see original file ```c # Fused local position in NED. @@ -92,5 +168,6 @@ float32 hagl_max # maximum height above ground level - set to 0 when limiting # TOPICS vehicle_local_position vehicle_local_position_groundtruth external_ins_local_position # TOPICS estimator_local_position - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleMagnetometer.md b/docs/ko/msg_docs/VehicleMagnetometer.md index a847ae520c..b9e75f149a 100644 --- a/docs/ko/msg_docs/VehicleMagnetometer.md +++ b/docs/ko/msg_docs/VehicleMagnetometer.md @@ -1,9 +1,29 @@ +--- +pageClass: is-wide-page +--- + # VehicleMagnetometer (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleMagnetometer.msg) +**TOPICS:** vehicle_magnetometer + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| device_id | `uint32` | | | unique device ID for the selected magnetometer | +| magnetometer_ga | `float32[3]` | | | Magnetic field in the FRD body frame XYZ-axis in Gauss | +| calibration_count | `uint8` | | | Calibration changed counter. Monotonically increases whenever calibration changes. | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleMagnetometer.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint64 timestamp_sample # the timestamp of the raw data (microseconds) @@ -13,5 +33,6 @@ uint32 device_id # unique device ID for the selected magnetometer float32[3] magnetometer_ga # Magnetic field in the FRD body frame XYZ-axis in Gauss uint8 calibration_count # Calibration changed counter. Monotonically increases whenever calibration changes. - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleOdometry.md b/docs/ko/msg_docs/VehicleOdometry.md index 4213c23337..30159d40ef 100644 --- a/docs/ko/msg_docs/VehicleOdometry.md +++ b/docs/ko/msg_docs/VehicleOdometry.md @@ -1,10 +1,64 @@ +--- +pageClass: is-wide-page +--- + # VehicleOdometry (UORB message) -Vehicle odometry data +Vehicle odometry data. Fits ROS REP 147 for aerial vehicles -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleOdometry.msg) +**TOPICS:** vehicle_odometry vehicle_mocap_odometry vehicle_visual_odometry estimator_odometry + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp sample | +| pose_frame | `uint8` | | [POSE_FRAME](#POSE_FRAME) | Position and orientation frame of reference | +| position | `float32[3]` | m [local frame] | | Position. Origin is position of GC at startup. (Invalid: NaN If invalid/unknown) | +| q | `float32[4]` | | | Attitude (expressed as a quaternion) relative to pose reference frame at current location. Follows the Hamiltonian convention (w, x, y, z, right-handed, passive rotations from body to world) (Invalid: NaN First value if invalid/unknown) | +| velocity_frame | `uint8` | | [VELOCITY_FRAME](#VELOCITY_FRAME) | Reference frame of the velocity data | +| velocity | `float32[3]` | m/s [@velocity_frame] | | Velocity. (Invalid: NaN If invalid/unknown) | +| angular_velocity | `float32[3]` | rad/s [@VELOCITY_FRAME_BODY_FRD] | | Angular velocity in body-fixed frame (Invalid: NaN If invalid/unknown) | +| position_variance | `float32[3]` | m^2 | | Variance of position error | +| orientation_variance | `float32[3]` | rad^2 | | Variance of orientation/attitude error (expressed in body frame) | +| velocity_variance | `float32[3]` | m^2/s^2 | | Variance of velocity error | +| reset_counter | `uint8` | | | Reset counter. Counts reset events on attitude, velocity and position. | +| quality | `int8` | | | Quality. Unused. (Invalid: 0) | + +## Enums + +### POSE_FRAME {#POSE_FRAME} + +| 명칭 | 형식 | Value | 설명 | +| ----------------------------------------------------------------------------------------------- | ------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| POSE_FRAME_UNKNOWN | `uint8` | 0 | Unknown frame | +| POSE_FRAME_NED | `uint8` | 1 | North-East-Down (NED) navigation frame. Aligned with True North. | +| POSE_FRAME_FRD | `uint8` | 2 | Forward-Right-Down (FRD) frame. Constant arbitrary heading offset from True North. Z is down. | + +### VELOCITY_FRAME {#VELOCITY_FRAME} + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------ | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| VELOCITY_FRAME_UNKNOWN | `uint8` | 0 | Unknown frame | +| VELOCITY_FRAME_NED | `uint8` | 1 | NED navigation frame at current position. | +| VELOCITY_FRAME_FRD | `uint8` | 2 | FRD navigation frame at current position. Constant arbitrary heading offset from True North. Z is down. | +| VELOCITY_FRAME_BODY_FRD | `uint8` | 3 | FRD body-fixed frame | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleOdometry.msg) + +:::details +Click here to see original file ```c # Vehicle odometry data @@ -42,5 +96,6 @@ int8 quality # [-] [@invalid 0] Quality. Unused. # TOPICS vehicle_odometry vehicle_mocap_odometry vehicle_visual_odometry # TOPICS estimator_odometry - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleOpticalFlow.md b/docs/ko/msg_docs/VehicleOpticalFlow.md index 21bd5ab438..848458e9b6 100644 --- a/docs/ko/msg_docs/VehicleOpticalFlow.md +++ b/docs/ko/msg_docs/VehicleOpticalFlow.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # VehicleOpticalFlow (UORB message) Optical flow in XYZ body frame in SI units. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleOpticalFlow.msg) +**TOPICS:** vehicle_opticalflow + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | | +| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles | +| pixel_flow | `float32[2]` | | | (radians) accumulated optical flow in radians where a positive value is produced by a RH rotation about the body axis | +| delta_angle | `float32[3]` | | | (radians) accumulated gyro radians where a positive value is produced by a RH rotation of the sensor about the body axis. (NAN if unavailable) | +| distance_m | `float32` | | | (meters) Distance to the center of the flow field (NAN if unavailable) | +| integration_timespan_us | `uint32` | | | (microseconds) accumulation timespan in microseconds | +| quality | `uint8` | | | Average of quality of accumulated frames, 0: bad quality, 255: maximum quality | +| max_flow_rate | `float32` | | | (radians/s) Magnitude of maximum angular which the optical flow sensor can measure reliably | +| min_ground_distance | `float32` | | | (meters) Minimum distance from ground at which the optical flow sensor operates reliably | +| max_ground_distance | `float32` | | | (meters) Maximum distance from ground at which the optical flow sensor operates reliably | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleOpticalFlow.msg) + +:::details +Click here to see original file ```c # Optical flow in XYZ body frame in SI units. @@ -26,5 +53,6 @@ float32 max_flow_rate # (radians/s) Magnitude of maximum angular which float32 min_ground_distance # (meters) Minimum distance from ground at which the optical flow sensor operates reliably float32 max_ground_distance # (meters) Maximum distance from ground at which the optical flow sensor operates reliably - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleOpticalFlowVel.md b/docs/ko/msg_docs/VehicleOpticalFlowVel.md index c8dd307921..574f04ccff 100644 --- a/docs/ko/msg_docs/VehicleOpticalFlowVel.md +++ b/docs/ko/msg_docs/VehicleOpticalFlowVel.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # VehicleOpticalFlowVel (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleOpticalFlowVel.msg) +**TOPICS:** estimator_optical_flow_vel vehicle_optical_flow_vel + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| vel_body | `float32[2]` | | | velocity obtained from gyro-compensated and distance-scaled optical flow raw measurements in body frame(m/s) | +| vel_ne | `float32[2]` | | | same as vel_body but in local frame (m/s) | +| vel_body_filtered | `float32[2]` | | | filtered velocity obtained from gyro-compensated and distance-scaled optical flow raw measurements in body frame(m/s) | +| vel_ne_filtered | `float32[2]` | | | filtered same as vel_body_filtered but in local frame (m/s) | +| flow_rate_uncompensated | `float32[2]` | | | integrated optical flow measurement (rad/s) | +| flow_rate_compensated | `float32[2]` | | | integrated optical flow measurement compensated for angular motion (rad/s) | +| gyro_rate | `float32[3]` | | | gyro measurement synchronized with flow measurements (rad/s) | +| gyro_bias | `float32[3]` | | | | +| ref_gyro | `float32[3]` | | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleOpticalFlowVel.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -21,5 +48,6 @@ float32[3] gyro_bias float32[3] ref_gyro # TOPICS estimator_optical_flow_vel vehicle_optical_flow_vel - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleRatesSetpoint.md b/docs/ko/msg_docs/VehicleRatesSetpoint.md index 1281c74091..9ddb01c33a 100644 --- a/docs/ko/msg_docs/VehicleRatesSetpoint.md +++ b/docs/ko/msg_docs/VehicleRatesSetpoint.md @@ -1,6 +1,34 @@ +--- +pageClass: is-wide-page +--- + # VehicleRatesSetpoint (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleRatesSetpoint.msg) +**TOPICS:** vehicle_ratessetpoint + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ----------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| roll | `float32` | rad/s | | roll rate setpoint | +| pitch | `float32` | rad/s | | pitch rate setpoint | +| yaw | `float32` | rad/s | | yaw rate setpoint | +| thrust_body | `float32[3]` | | | Normalized thrust command in body NED frame [-1,1] | +| reset_integral | `bool` | | | Reset roll/pitch/yaw integrals (navigation logic change) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleRatesSetpoint.msg) + +:::details +Click here to see original file ```c uint32 MESSAGE_VERSION = 0 @@ -17,5 +45,6 @@ float32 yaw # [rad/s] yaw rate setpoint float32[3] thrust_body # Normalized thrust command in body NED frame [-1,1] bool reset_integral # Reset roll/pitch/yaw integrals (navigation logic change) - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleRoi.md b/docs/ko/msg_docs/VehicleRoi.md index 9f3533e29f..f54ffc2be4 100644 --- a/docs/ko/msg_docs/VehicleRoi.md +++ b/docs/ko/msg_docs/VehicleRoi.md @@ -1,8 +1,43 @@ +--- +pageClass: is-wide-page +--- + # VehicleRoi (UORB message) -Vehicle Region Of Interest (ROI) +Vehicle Region Of Interest (ROI). -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleRoi.msg) +**TOPICS:** vehicle_roi + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| --------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| mode | `uint8` | | | ROI mode (see above) | +| lat | `float64` | | | Latitude to point to | +| lon | `float64` | | | Longitude to point to | +| alt | `float32` | | | Altitude to point to | +| roll_offset | `float32` | | | angle offset in rad | +| pitch_offset | `float32` | | | angle offset in rad | +| yaw_offset | `float32` | | | angle offset in rad | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ----------------------------------------------------------------------------------- | ------- | ----- | ---------------------------------------------- | +| ROI_NONE | `uint8` | 0 | No region of interest | +| ROI_WPNEXT | `uint8` | 1 | Point toward next MISSION with optional offset | +| ROI_WPINDEX | `uint8` | 2 | Point toward given MISSION | +| ROI_LOCATION | `uint8` | 3 | Point toward fixed location | +| ROI_TARGET | `uint8` | 4 | Point toward target | +| ROI_ENUM_END | `uint8` | 5 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleRoi.msg) + +:::details +Click here to see original file ```c # Vehicle Region Of Interest (ROI) @@ -26,5 +61,6 @@ float32 alt # Altitude to point to float32 roll_offset # angle offset in rad float32 pitch_offset # angle offset in rad float32 yaw_offset # angle offset in rad - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleStatus.md b/docs/ko/msg_docs/VehicleStatus.md index 05e3f98bbb..d7663812c3 100644 --- a/docs/ko/msg_docs/VehicleStatus.md +++ b/docs/ko/msg_docs/VehicleStatus.md @@ -1,8 +1,131 @@ +--- +pageClass: is-wide-page +--- + # VehicleStatus (UORB message) -Encodes the system state of the vehicle published by commander +Encodes the system state of the vehicle published by commander. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleStatus.msg) +**TOPICS:** vehicle_status + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| armed_time | `uint64` | | | Arming timestamp (microseconds) | +| takeoff_time | `uint64` | | | Takeoff timestamp (microseconds) | +| arming_state | `uint8` | | | | +| latest_arming_reason | `uint8` | | | | +| latest_disarming_reason | `uint8` | | | | +| nav_state_timestamp | `uint64` | | | time when current nav_state activated | +| nav_state_user_intention | `uint8` | | | Mode that the user selected (might be different from nav_state in a failsafe situation) | +| nav_state | `uint8` | | | Currently active mode | +| executor_in_charge | `uint8` | | | Current mode executor in charge (0=Autopilot) | +| valid_nav_states_mask | `uint32` | | | Bitmask for all valid nav_state values | +| can_set_nav_states_mask | `uint32` | | | Bitmask for all modes that a user can select | +| failure_detector_status | `uint16` | | | | +| hil_state | `uint8` | | | | +| vehicle_type | `uint8` | | | | +| failsafe | `bool` | | | true if system is in failsafe state (e.g.:RTL, Hover, Terminate, ...) | +| failsafe_and_user_took_over | `bool` | | | true if system is in failsafe state but the user took over control | +| failsafe_defer_state | `uint8` | | | one of FAILSAFE_DEFER_STATE_\* | +| gcs_connection_lost | `bool` | | | datalink to GCS lost | +| gcs_connection_lost_counter | `uint8` | | | counts unique GCS connection lost events | +| high_latency_data_link_lost | `bool` | | | Set to true if the high latency data link (eg. RockBlock Iridium 9603 telemetry module) is lost | +| is_vtol | `bool` | | | True if the system is VTOL capable | +| is_vtol_tailsitter | `bool` | | | True if the system performs a 90° pitch down rotation during transition from MC to FW | +| in_transition_mode | `bool` | | | True if VTOL is doing a transition | +| in_transition_to_fw | `bool` | | | True if VTOL is doing a transition from MC to FW | +| system_type | `uint8` | | | system type, contains mavlink MAV_TYPE | +| system_id | `uint8` | | | system id, contains MAVLink's system ID field | +| component_id | `uint8` | | | subsystem / component id, contains MAVLink's component ID field | +| safety_button_available | `bool` | | | Set to true if a safety button is connected | +| safety_off | `bool` | | | Set to true if safety is off | +| power_input_valid | `bool` | | | set if input power is valid | +| usb_connected | `bool` | | | set to true (never cleared) once telemetry received from usb link | +| open_drone_id_system_present | `bool` | | | | +| open_drone_id_system_healthy | `bool` | | | | +| parachute_system_present | `bool` | | | | +| parachute_system_healthy | `bool` | | | | +| rc_calibration_in_progress | `bool` | | | | +| calibration_enabled | `bool` | | | | +| pre_flight_checks_pass | `bool` | | | true if all checks necessary to arm pass | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | ----------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 1 | | +| ARMING_STATE_DISARMED | `uint8` | 1 | | +| ARMING_STATE_ARMED | `uint8` | 2 | | +| ARM_DISARM_REASON_STICK_GESTURE | `uint8` | 1 | | +| ARM_DISARM_REASON_RC_SWITCH | `uint8` | 2 | | +| ARM_DISARM_REASON_COMMAND_INTERNAL | `uint8` | 3 | | +| ARM_DISARM_REASON_COMMAND_EXTERNAL | `uint8` | 4 | | +| ARM_DISARM_REASON_MISSION_START | `uint8` | 5 | | +| ARM_DISARM_REASON_LANDING | `uint8` | 6 | | +| ARM_DISARM_REASON_PREFLIGHT_INACTION | `uint8` | 7 | | +| ARM_DISARM_REASON_KILL_SWITCH | `uint8` | 8 | | +| ARM_DISARM_REASON_RC_BUTTON | `uint8` | 13 | | +| ARM_DISARM_REASON_FAILSAFE | `uint8` | 14 | | +| NAVIGATION_STATE_MANUAL | `uint8` | 0 | Manual mode | +| NAVIGATION_STATE_ALTCTL | `uint8` | 1 | Altitude control mode | +| NAVIGATION_STATE_POSCTL | `uint8` | 2 | Position control mode | +| NAVIGATION_STATE_AUTO_MISSION | `uint8` | 3 | Auto mission mode | +| NAVIGATION_STATE_AUTO_LOITER | `uint8` | 4 | Auto loiter mode | +| NAVIGATION_STATE_AUTO_RTL | `uint8` | 5 | Auto return to launch mode | +| NAVIGATION_STATE_POSITION_SLOW | `uint8` | 6 | | +| NAVIGATION_STATE_FREE5 | `uint8` | 7 | | +| NAVIGATION_STATE_ALTITUDE_CRUISE | `uint8` | 8 | Altitude with Cruise mode | +| NAVIGATION_STATE_FREE3 | `uint8` | 9 | | +| NAVIGATION_STATE_ACRO | `uint8` | 10 | Acro mode | +| NAVIGATION_STATE_FREE2 | `uint8` | 11 | | +| NAVIGATION_STATE_DESCEND | `uint8` | 12 | Descend mode (no position control) | +| NAVIGATION_STATE_TERMINATION | `uint8` | 13 | Termination mode | +| NAVIGATION_STATE_OFFBOARD | `uint8` | 14 | | +| NAVIGATION_STATE_STAB | `uint8` | 15 | Stabilized mode | +| NAVIGATION_STATE_FREE1 | `uint8` | 16 | | +| NAVIGATION_STATE_AUTO_TAKEOFF | `uint8` | 17 | Takeoff | +| NAVIGATION_STATE_AUTO_LAND | `uint8` | 18 | Land | +| NAVIGATION_STATE_AUTO_FOLLOW_TARGET | `uint8` | 19 | Auto Follow | +| NAVIGATION_STATE_AUTO_PRECLAND | `uint8` | 20 | Precision land with landing target | +| NAVIGATION_STATE_ORBIT | `uint8` | 21 | Orbit in a circle | +| NAVIGATION_STATE_AUTO_VTOL_TAKEOFF | `uint8` | 22 | Takeoff, transition, establish loiter | +| NAVIGATION_STATE_EXTERNAL1 | `uint8` | 23 | | +| NAVIGATION_STATE_EXTERNAL2 | `uint8` | 24 | | +| NAVIGATION_STATE_EXTERNAL3 | `uint8` | 25 | | +| NAVIGATION_STATE_EXTERNAL4 | `uint8` | 26 | | +| NAVIGATION_STATE_EXTERNAL5 | `uint8` | 27 | | +| NAVIGATION_STATE_EXTERNAL6 | `uint8` | 28 | | +| NAVIGATION_STATE_EXTERNAL7 | `uint8` | 29 | | +| NAVIGATION_STATE_EXTERNAL8 | `uint8` | 30 | | +| NAVIGATION_STATE_MAX | `uint8` | 31 | | +| FAILURE_NONE | `uint16` | 0 | | +| FAILURE_ROLL | `uint16` | 1 | (1 << 0) | +| FAILURE_PITCH | `uint16` | 2 | (1 << 1) | +| FAILURE_ALT | `uint16` | 4 | (1 << 2) | +| FAILURE_EXT | `uint16` | 8 | (1 << 3) | +| FAILURE_ARM_ESC | `uint16` | 16 | (1 << 4) | +| FAILURE_BATTERY | `uint16` | 32 | (1 << 5) | +| FAILURE_IMBALANCED_PROP | `uint16` | 64 | (1 << 6) | +| FAILURE_MOTOR | `uint16` | 128 | (1 << 7) | +| HIL_STATE_OFF | `uint8` | 0 | | +| HIL_STATE_ON | `uint8` | 1 | | +| VEHICLE_TYPE_UNSPECIFIED | `uint8` | 0 | | +| VEHICLE_TYPE_ROTARY_WING | `uint8` | 1 | | +| VEHICLE_TYPE_FIXED_WING | `uint8` | 2 | | +| VEHICLE_TYPE_ROVER | `uint8` | 3 | | +| FAILSAFE_DEFER_STATE_DISABLED | `uint8` | 0 | | +| FAILSAFE_DEFER_STATE_ENABLED | `uint8` | 1 | | +| FAILSAFE_DEFER_STATE_WOULD_FAILSAFE | `uint8` | 2 | Failsafes deferred, but would trigger a failsafe | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleStatus.msg) + +:::details +Click here to see original file ```c # Encodes the system state of the vehicle published by commander @@ -137,5 +260,6 @@ bool rc_calibration_in_progress bool calibration_enabled bool pre_flight_checks_pass # true if all checks necessary to arm pass - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleStatusV0.md b/docs/ko/msg_docs/VehicleStatusV0.md index 9a91186524..c3d872ff41 100644 --- a/docs/ko/msg_docs/VehicleStatusV0.md +++ b/docs/ko/msg_docs/VehicleStatusV0.md @@ -1,8 +1,138 @@ +--- +pageClass: is-wide-page +--- + # VehicleStatusV0 (UORB message) -Encodes the system state of the vehicle published by commander +Encodes the system state of the vehicle published by commander. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleStatusV0.msg) +**TOPICS:** vehicle_statusv0 + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| armed_time | `uint64` | | | Arming timestamp (microseconds) | +| takeoff_time | `uint64` | | | Takeoff timestamp (microseconds) | +| arming_state | `uint8` | | | | +| latest_arming_reason | `uint8` | | | | +| latest_disarming_reason | `uint8` | | | | +| nav_state_timestamp | `uint64` | | | time when current nav_state activated | +| nav_state_user_intention | `uint8` | | | Mode that the user selected (might be different from nav_state in a failsafe situation) | +| nav_state | `uint8` | | | Currently active mode | +| executor_in_charge | `uint8` | | | Current mode executor in charge (0=Autopilot) | +| valid_nav_states_mask | `uint32` | | | Bitmask for all valid nav_state values | +| can_set_nav_states_mask | `uint32` | | | Bitmask for all modes that a user can select | +| failure_detector_status | `uint16` | | | | +| hil_state | `uint8` | | | | +| vehicle_type | `uint8` | | | | +| failsafe | `bool` | | | true if system is in failsafe state (e.g.:RTL, Hover, Terminate, ...) | +| failsafe_and_user_took_over | `bool` | | | true if system is in failsafe state but the user took over control | +| failsafe_defer_state | `uint8` | | | one of FAILSAFE_DEFER_STATE_\* | +| gcs_connection_lost | `bool` | | | datalink to GCS lost | +| gcs_connection_lost_counter | `uint8` | | | counts unique GCS connection lost events | +| high_latency_data_link_lost | `bool` | | | Set to true if the high latency data link (eg. RockBlock Iridium 9603 telemetry module) is lost | +| is_vtol | `bool` | | | True if the system is VTOL capable | +| is_vtol_tailsitter | `bool` | | | True if the system performs a 90° pitch down rotation during transition from MC to FW | +| in_transition_mode | `bool` | | | True if VTOL is doing a transition | +| in_transition_to_fw | `bool` | | | True if VTOL is doing a transition from MC to FW | +| system_type | `uint8` | | | system type, contains mavlink MAV_TYPE | +| system_id | `uint8` | | | system id, contains MAVLink's system ID field | +| component_id | `uint8` | | | subsystem / component id, contains MAVLink's component ID field | +| safety_button_available | `bool` | | | Set to true if a safety button is connected | +| safety_off | `bool` | | | Set to true if safety is off | +| power_input_valid | `bool` | | | set if input power is valid | +| usb_connected | `bool` | | | set to true (never cleared) once telemetry received from usb link | +| open_drone_id_system_present | `bool` | | | | +| open_drone_id_system_healthy | `bool` | | | | +| parachute_system_present | `bool` | | | | +| parachute_system_healthy | `bool` | | | | +| avoidance_system_required | `bool` | | | Set to true if avoidance system is enabled via COM_OBS_AVOID parameter | +| avoidance_system_valid | `bool` | | | Status of the obstacle avoidance system | +| rc_calibration_in_progress | `bool` | | | | +| calibration_enabled | `bool` | | | | +| pre_flight_checks_pass | `bool` | | | true if all checks necessary to arm pass | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | ----------------------------------------------------------------------------- | +| MESSAGE_VERSION | `uint32` | 0 | | +| ARMING_STATE_DISARMED | `uint8` | 1 | | +| ARMING_STATE_ARMED | `uint8` | 2 | | +| ARM_DISARM_REASON_TRANSITION_TO_STANDBY | `uint8` | 0 | | +| ARM_DISARM_REASON_STICK_GESTURE | `uint8` | 1 | | +| ARM_DISARM_REASON_RC_SWITCH | `uint8` | 2 | | +| ARM_DISARM_REASON_COMMAND_INTERNAL | `uint8` | 3 | | +| ARM_DISARM_REASON_COMMAND_EXTERNAL | `uint8` | 4 | | +| ARM_DISARM_REASON_MISSION_START | `uint8` | 5 | | +| ARM_DISARM_REASON_SAFETY_BUTTON | `uint8` | 6 | | +| ARM_DISARM_REASON_AUTO_DISARM_LAND | `uint8` | 7 | | +| ARM_DISARM_REASON_AUTO_DISARM_PREFLIGHT | `uint8` | 8 | | +| ARM_DISARM_REASON_KILL_SWITCH | `uint8` | 9 | | +| ARM_DISARM_REASON_LOCKDOWN | `uint8` | 10 | | +| ARM_DISARM_REASON_FAILURE_DETECTOR | `uint8` | 11 | | +| ARM_DISARM_REASON_SHUTDOWN | `uint8` | 12 | | +| ARM_DISARM_REASON_UNIT_TEST | `uint8` | 13 | | +| NAVIGATION_STATE_MANUAL | `uint8` | 0 | Manual mode | +| NAVIGATION_STATE_ALTCTL | `uint8` | 1 | Altitude control mode | +| NAVIGATION_STATE_POSCTL | `uint8` | 2 | Position control mode | +| NAVIGATION_STATE_AUTO_MISSION | `uint8` | 3 | Auto mission mode | +| NAVIGATION_STATE_AUTO_LOITER | `uint8` | 4 | Auto loiter mode | +| NAVIGATION_STATE_AUTO_RTL | `uint8` | 5 | Auto return to launch mode | +| NAVIGATION_STATE_POSITION_SLOW | `uint8` | 6 | | +| NAVIGATION_STATE_FREE5 | `uint8` | 7 | | +| NAVIGATION_STATE_FREE4 | `uint8` | 8 | | +| NAVIGATION_STATE_FREE3 | `uint8` | 9 | | +| NAVIGATION_STATE_ACRO | `uint8` | 10 | Acro mode | +| NAVIGATION_STATE_FREE2 | `uint8` | 11 | | +| NAVIGATION_STATE_DESCEND | `uint8` | 12 | Descend mode (no position control) | +| NAVIGATION_STATE_TERMINATION | `uint8` | 13 | Termination mode | +| NAVIGATION_STATE_OFFBOARD | `uint8` | 14 | | +| NAVIGATION_STATE_STAB | `uint8` | 15 | Stabilized mode | +| NAVIGATION_STATE_FREE1 | `uint8` | 16 | | +| NAVIGATION_STATE_AUTO_TAKEOFF | `uint8` | 17 | Takeoff | +| NAVIGATION_STATE_AUTO_LAND | `uint8` | 18 | Land | +| NAVIGATION_STATE_AUTO_FOLLOW_TARGET | `uint8` | 19 | Auto Follow | +| NAVIGATION_STATE_AUTO_PRECLAND | `uint8` | 20 | Precision land with landing target | +| NAVIGATION_STATE_ORBIT | `uint8` | 21 | Orbit in a circle | +| NAVIGATION_STATE_AUTO_VTOL_TAKEOFF | `uint8` | 22 | Takeoff, transition, establish loiter | +| NAVIGATION_STATE_EXTERNAL1 | `uint8` | 23 | | +| NAVIGATION_STATE_EXTERNAL2 | `uint8` | 24 | | +| NAVIGATION_STATE_EXTERNAL3 | `uint8` | 25 | | +| NAVIGATION_STATE_EXTERNAL4 | `uint8` | 26 | | +| NAVIGATION_STATE_EXTERNAL5 | `uint8` | 27 | | +| NAVIGATION_STATE_EXTERNAL6 | `uint8` | 28 | | +| NAVIGATION_STATE_EXTERNAL7 | `uint8` | 29 | | +| NAVIGATION_STATE_EXTERNAL8 | `uint8` | 30 | | +| NAVIGATION_STATE_MAX | `uint8` | 31 | | +| FAILURE_NONE | `uint16` | 0 | | +| FAILURE_ROLL | `uint16` | 1 | (1 << 0) | +| FAILURE_PITCH | `uint16` | 2 | (1 << 1) | +| FAILURE_ALT | `uint16` | 4 | (1 << 2) | +| FAILURE_EXT | `uint16` | 8 | (1 << 3) | +| FAILURE_ARM_ESC | `uint16` | 16 | (1 << 4) | +| FAILURE_BATTERY | `uint16` | 32 | (1 << 5) | +| FAILURE_IMBALANCED_PROP | `uint16` | 64 | (1 << 6) | +| FAILURE_MOTOR | `uint16` | 128 | (1 << 7) | +| HIL_STATE_OFF | `uint8` | 0 | | +| HIL_STATE_ON | `uint8` | 1 | | +| VEHICLE_TYPE_UNKNOWN | `uint8` | 0 | | +| VEHICLE_TYPE_ROTARY_WING | `uint8` | 1 | | +| VEHICLE_TYPE_FIXED_WING | `uint8` | 2 | | +| VEHICLE_TYPE_ROVER | `uint8` | 3 | | +| VEHICLE_TYPE_AIRSHIP | `uint8` | 4 | | +| FAILSAFE_DEFER_STATE_DISABLED | `uint8` | 0 | | +| FAILSAFE_DEFER_STATE_ENABLED | `uint8` | 1 | | +| FAILSAFE_DEFER_STATE_WOULD_FAILSAFE | `uint8` | 2 | Failsafes deferred, but would trigger a failsafe | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleStatusV0.msg) + +:::details +Click here to see original file ```c # Encodes the system state of the vehicle published by commander @@ -145,5 +275,6 @@ bool rc_calibration_in_progress bool calibration_enabled bool pre_flight_checks_pass # true if all checks necessary to arm pass - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleThrustSetpoint.md b/docs/ko/msg_docs/VehicleThrustSetpoint.md index d256e77145..f5b5396431 100644 --- a/docs/ko/msg_docs/VehicleThrustSetpoint.md +++ b/docs/ko/msg_docs/VehicleThrustSetpoint.md @@ -1,9 +1,27 @@ +--- +pageClass: is-wide-page +--- + # VehicleThrustSetpoint (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleThrustSetpoint.msg) +**TOPICS:** vehicle_thrust_setpoint vehicle_thrust_setpoint_virtual_fw vehicle_thrust_setpoint_virtual_mc + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | timestamp of the data sample on which this message is based (microseconds) | +| xyz | `float32[3]` | | | thrust setpoint along X, Y, Z body axis [-1, 1] | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleThrustSetpoint.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint64 timestamp_sample # timestamp of the data sample on which this message is based (microseconds) @@ -11,5 +29,6 @@ float32[3] xyz # thrust setpoint along X, Y, Z body axis [-1, 1] # TOPICS vehicle_thrust_setpoint # TOPICS vehicle_thrust_setpoint_virtual_fw vehicle_thrust_setpoint_virtual_mc - ``` + +::: diff --git a/docs/ko/msg_docs/VehicleTorqueSetpoint.md b/docs/ko/msg_docs/VehicleTorqueSetpoint.md index 2fccc89f42..8cb6b6f237 100644 --- a/docs/ko/msg_docs/VehicleTorqueSetpoint.md +++ b/docs/ko/msg_docs/VehicleTorqueSetpoint.md @@ -1,9 +1,27 @@ +--- +pageClass: is-wide-page +--- + # VehicleTorqueSetpoint (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleTorqueSetpoint.msg) +**TOPICS:** vehicle_torque_setpoint vehicle_torque_setpoint_virtual_fw vehicle_torque_setpoint_virtual_mc + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | timestamp of the data sample on which this message is based (microseconds) | +| xyz | `float32[3]` | | | torque setpoint about X, Y, Z body axis (normalized) | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleTorqueSetpoint.msg) + +:::details +Click here to see original file ```c - uint64 timestamp # time since system start (microseconds) uint64 timestamp_sample # timestamp of the data sample on which this message is based (microseconds) @@ -11,5 +29,6 @@ float32[3] xyz # torque setpoint about X, Y, Z body axis (normalized) # TOPICS vehicle_torque_setpoint # TOPICS vehicle_torque_setpoint_virtual_fw vehicle_torque_setpoint_virtual_mc - ``` + +::: diff --git a/docs/ko/msg_docs/VelocityLimits.md b/docs/ko/msg_docs/VelocityLimits.md index 6a86fdc977..e8b93b3431 100644 --- a/docs/ko/msg_docs/VelocityLimits.md +++ b/docs/ko/msg_docs/VelocityLimits.md @@ -1,8 +1,28 @@ +--- +pageClass: is-wide-page +--- + # VelocityLimits (UORB message) -Velocity and yaw rate limits for a multicopter position slow mode only +Velocity and yaw rate limits for a multicopter position slow mode only. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VelocityLimits.msg) +**TOPICS:** velocity_limits + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| horizontal_velocity | `float32` | m/s | | | +| vertical_velocity | `float32` | m/s | | | +| yaw_rate | `float32` | rad/s | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VelocityLimits.msg) + +:::details +Click here to see original file ```c # Velocity and yaw rate limits for a multicopter position slow mode only @@ -13,5 +33,6 @@ uint64 timestamp # time since system start (microseconds) float32 horizontal_velocity # [m/s] float32 vertical_velocity # [m/s] float32 yaw_rate # [rad/s] - ``` + +::: diff --git a/docs/ko/msg_docs/VtolVehicleStatus.md b/docs/ko/msg_docs/VtolVehicleStatus.md index a271005673..b725e0ccdd 100644 --- a/docs/ko/msg_docs/VtolVehicleStatus.md +++ b/docs/ko/msg_docs/VtolVehicleStatus.md @@ -1,8 +1,38 @@ +--- +pageClass: is-wide-page +--- + # VtolVehicleStatus (UORB message) -VEHICLE_VTOL_STATE, should match 1:1 MAVLinks's MAV_VTOL_STATE +VEHICLE_VTOL_STATE, should match 1:1 MAVLinks's MAV_VTOL_STATE. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VtolVehicleStatus.msg) +**TOPICS:** vtol_vehiclestatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ---------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| vehicle_vtol_state | `uint8` | | | current state of the vtol, see VEHICLE_VTOL_STATE | +| fixed_wing_system_failure | `bool` | | | vehicle in fixed-wing system failure failsafe mode (after quad-chute) | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | +| VEHICLE_VTOL_STATE_UNDEFINED | `uint8` | 0 | | +| VEHICLE_VTOL_STATE_TRANSITION_TO_FW | `uint8` | 1 | | +| VEHICLE_VTOL_STATE_TRANSITION_TO_MC | `uint8` | 2 | | +| VEHICLE_VTOL_STATE_MC | `uint8` | 3 | | +| VEHICLE_VTOL_STATE_FW | `uint8` | 4 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VtolVehicleStatus.msg) + +:::details +Click here to see original file ```c # VEHICLE_VTOL_STATE, should match 1:1 MAVLinks's MAV_VTOL_STATE @@ -20,5 +50,6 @@ uint64 timestamp # time since system start (microseconds) uint8 vehicle_vtol_state # current state of the vtol, see VEHICLE_VTOL_STATE bool fixed_wing_system_failure # vehicle in fixed-wing system failure failsafe mode (after quad-chute) - ``` + +::: diff --git a/docs/ko/msg_docs/Vtx.md b/docs/ko/msg_docs/Vtx.md new file mode 100644 index 0000000000..2ab56882dd --- /dev/null +++ b/docs/ko/msg_docs/Vtx.md @@ -0,0 +1,84 @@ +--- +pageClass: is-wide-page +--- + +# Vtx (UORB message) + +**TOPICS:** vtx + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| protocol | `uint8` | | | | +| device | `uint8` | | | | +| mode | `uint8` | | | | +| band | `int8` | | | Band number (0-23), negative values indicate frequency mode | +| channel | `int8` | | | Channel number (0-15), negative values indicate frequency mode | +| frequency | `uint16` | | | Frequency in MHz, zero indicates unknown | +| band_letter | `uint8` | | | Band letter as ASCII | +| band_name | `uint8[12]` | | | Band name in ASCII without null termination | +| power_level | `int8` | | | Current power level (0-15), negative values indicate unknown | +| power_label | `uint8[4]` | | | Current power label in ASCII without null termination | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- | ----------------------------------------- | +| BAND_NAME_LENGTH | `uint8` | 12 | | +| POWER_LABEL_LENGTH | `uint8` | 4 | | +| PROTOCOL_NONE | `uint8` | 0 | No protocol is detected, usually an error | +| PROTOCOL_SMART_AUDIO_V1 | `uint8` | 10 | | +| PROTOCOL_SMART_AUDIO_V2 | `uint8` | 20 | | +| PROTOCOL_SMART_AUDIO_V2_1 | `uint8` | 21 | | +| PROTOCOL_TRAMP | `uint8` | 100 | | +| DEVICE_UNKNOWN | `uint8` | 0 | | +| DEVICE_PEAK_THOR_T67 | `uint8` | 20 | | +| DEVICE_RUSH_MAX_SOLO | `uint8` | 40 | | +| MODE_NORMAL | `uint8` | 0 | | +| MODE_PIT | `uint8` | 1 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Vtx.msg) + +:::details +Click here to see original file + +```c +uint64 timestamp # time since system start (microseconds) + +uint8 BAND_NAME_LENGTH = 12 +uint8 POWER_LABEL_LENGTH = 4 + +uint8 PROTOCOL_NONE = 0 # No protocol is detected, usually an error +uint8 PROTOCOL_SMART_AUDIO_V1 = 10 +uint8 PROTOCOL_SMART_AUDIO_V2 = 20 +uint8 PROTOCOL_SMART_AUDIO_V2_1 = 21 +uint8 PROTOCOL_TRAMP = 100 +uint8 protocol + +uint8 DEVICE_UNKNOWN = 0 +uint8 DEVICE_PEAK_THOR_T67 = 20 +uint8 DEVICE_RUSH_MAX_SOLO = 40 +uint8 device + +uint8 MODE_NORMAL = 0 +uint8 MODE_PIT = 1 +uint8 mode + +# Band and Channel are 0-indexed! But the user expects a 1-indexed display! +int8 band # Band number (0-23), negative values indicate frequency mode +int8 channel # Channel number (0-15), negative values indicate frequency mode +uint16 frequency # Frequency in MHz, zero indicates unknown + +uint8 band_letter # Band letter as ASCII +uint8[12] band_name # Band name in ASCII without null termination + +# Also 0-indexed, but the user expects a 1-indexed display! +int8 power_level # Current power level (0-15), negative values indicate unknown +uint8[4] power_label # Current power label in ASCII without null termination +``` + +::: diff --git a/docs/ko/msg_docs/WheelEncoders.md b/docs/ko/msg_docs/WheelEncoders.md index d91ba67255..a640109f3f 100644 --- a/docs/ko/msg_docs/WheelEncoders.md +++ b/docs/ko/msg_docs/WheelEncoders.md @@ -1,6 +1,25 @@ +--- +pageClass: is-wide-page +--- + # WheelEncoders (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/WheelEncoders.msg) +**TOPICS:** wheel_encoders + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| wheel_speed | `float32[2]` | rad/s | | | +| wheel_angle | `float32[2]` | rad | | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/WheelEncoders.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -8,5 +27,6 @@ uint64 timestamp # time since system start (microseconds) # Two wheels: 0 right, 1 left float32[2] wheel_speed # [rad/s] float32[2] wheel_angle # [rad] - ``` + +::: diff --git a/docs/ko/msg_docs/Wind.md b/docs/ko/msg_docs/Wind.md index 7ddb2e62eb..30f6c498e4 100644 --- a/docs/ko/msg_docs/Wind.md +++ b/docs/ko/msg_docs/Wind.md @@ -1,11 +1,43 @@ +--- +pageClass: is-wide-page +--- + # Wind (UORB message) -Wind estimate (from EKF2) +Wind estimate (from EKF2). Contains the system-wide estimate of horizontal wind velocity and its variance. Published by the navigation filter (EKF2) for use by other flight modules and libraries. -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/Wind.msg) +**TOPICS:** wind estimator_wind + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| -------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start | +| timestamp_sample | `uint64` | us | | Timestamp of the raw data | +| windspeed_north | `float32` | m/s | | Wind component in north / X direction | +| windspeed_east | `float32` | m/s | | Wind component in east / Y direction | +| variance_north | `float32` | (m/s)^2 | | Wind estimate error variance in north / X direction (Invalid: 0 if not estimated) | +| variance_east | `float32` | (m/s)^2 | | Wind estimate error variance in east / Y direction (Invalid: 0 if not estimated) | +| tas_innov | `float32` | m/s | | True airspeed innovation | +| tas_innov_var | `float32` | (m/s)^2 | | True airspeed innovation variance | +| beta_innov | `float32` | rad | | Sideslip measurement innovation | +| beta_innov_var | `float32` | rad^2 | | Sideslip measurement innovation variance | + +## Constants + +| 명칭 | 형식 | Value | 설명 | +| -------------------------------------------------------------------- | -------- | ----- | -- | +| MESSAGE_VERSION | `uint32` | 0 | | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/Wind.msg) + +:::details +Click here to see original file ```c # Wind estimate (from EKF2) @@ -31,5 +63,6 @@ float32 beta_innov # [rad] Sideslip measurement innovation float32 beta_innov_var # [rad^2] Sideslip measurement innovation variance # TOPICS wind estimator_wind - ``` + +::: diff --git a/docs/ko/msg_docs/YawEstimatorStatus.md b/docs/ko/msg_docs/YawEstimatorStatus.md index 88bc5614ec..3bd44fc563 100644 --- a/docs/ko/msg_docs/YawEstimatorStatus.md +++ b/docs/ko/msg_docs/YawEstimatorStatus.md @@ -1,6 +1,31 @@ +--- +pageClass: is-wide-page +--- + # YawEstimatorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/YawEstimatorStatus.msg) +**TOPICS:** yaw_estimatorstatus + +## Fields + +| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 | +| ------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) | +| yaw_composite | `float32` | | | composite yaw from GSF (rad) | +| yaw_variance | `float32` | | | composite yaw variance from GSF (rad^2) | +| yaw_composite_valid | `bool` | | | | +| yaw | `float32[5]` | | | yaw estimate for each model in the filter bank (rad) | +| innov_vn | `float32[5]` | | | North velocity innovation for each model in the filter bank (m/s) | +| innov_ve | `float32[5]` | | | East velocity innovation for each model in the filter bank (m/s) | +| weight | `float32[5]` | | | weighting for each model in the filter bank | + +## Source Message + +[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/YawEstimatorStatus.msg) + +:::details +Click here to see original file ```c uint64 timestamp # time since system start (microseconds) @@ -14,5 +39,6 @@ float32[5] yaw # yaw estimate for each model in the filter bank (rad) float32[5] innov_vn # North velocity innovation for each model in the filter bank (m/s) float32[5] innov_ve # East velocity innovation for each model in the filter bank (m/s) float32[5] weight # weighting for each model in the filter bank - ``` + +::: diff --git a/docs/ko/msg_docs/index.md b/docs/ko/msg_docs/index.md index 7458c79a24..603270ff7a 100644 --- a/docs/ko/msg_docs/index.md +++ b/docs/ko/msg_docs/index.md @@ -13,90 +13,63 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m ## Versioned Messages -- [ActuatorMotors](ActuatorMotors.md) — Motor control message -- [ActuatorServos](ActuatorServos.md) — Servo control message -- [AirspeedValidated](AirspeedValidated.md) — Validated airspeed -- [ArmingCheckReply](ArmingCheckReply.md) — Arming check reply -- [ArmingCheckRequest](ArmingCheckRequest.md) — Arming check request -- [BatteryStatus](BatteryStatus.md) — Battery status -- [ConfigOverrides](ConfigOverrides.md) — Configurable overrides by (external) modes or mode executors -- [Event](Event.md) — Events interface -- [FixedWingLateralSetpoint](FixedWingLateralSetpoint.md) — Fixed Wing Lateral Setpoint message - Used by the fw_lateral_longitudinal_control module - At least one of course, airspeed_direction, or lateral_acceleration must be finite. -- [FixedWingLongitudinalSetpoint](FixedWingLongitudinalSetpoint.md) — Fixed Wing Longitudinal Setpoint message - Used by the fw_lateral_longitudinal_control module - If pitch_direct and throttle_direct are not both finite, then the controller relies on altitude/height_rate and equivalent_airspeed to control vertical motion. - If both altitude and height_rate are NAN, the controller maintains the current altitude. -- [GotoSetpoint](GotoSetpoint.md) — Position and (optional) heading setpoints with corresponding speed constraints - Setpoints are intended as inputs to position and heading smoothers, respectively - Setpoints do not need to be kinematically consistent - Optional heading setpoints may be specified as controlled by the respective flag - Unset optional setpoints are not controlled - Unset optional constraints default to vehicle specifications +- [ActuatorMotors](ActuatorMotors.md) — Motor control message. +- [ActuatorServos](ActuatorServos.md) — Servo control message. +- [AirspeedValidated](AirspeedValidated.md) — Validated airspeed. +- [ArmingCheckReply](ArmingCheckReply.md) — Arming check reply. +- [ArmingCheckRequest](ArmingCheckRequest.md) — Arming check request. +- [BatteryStatus](BatteryStatus.md) — Battery status. +- [ConfigOverrides](ConfigOverrides.md) — Configurable overrides by (external) modes or mode executors. +- [Event](Event.md) — Events interface. +- [FixedWingLateralSetpoint](FixedWingLateralSetpoint.md) — Fixed Wing Lateral Setpoint message. Used by the fw_lateral_longitudinal_control module. At least one of course, airspeed_direction, or lateral_acceleration must be finite. +- [FixedWingLongitudinalSetpoint](FixedWingLongitudinalSetpoint.md) — Fixed Wing Longitudinal Setpoint message. Used by the fw_lateral_longitudinal_control module. If pitch_direct and throttle_direct are not both finite, then the controller relies on altitude/height_rate and equivalent_airspeed to control vertical motion. If both altitude and height_rate are NAN, the controller maintains the current altitude. +- [GotoSetpoint](GotoSetpoint.md) — Position and (optional) heading setpoints with corresponding speed constraints. Setpoints are intended as inputs to position and heading smoothers, respectively. Setpoints do not need to be kinematically consistent. Optional heading setpoints may be specified as controlled by the respective flag. Unset optional setpoints are not controlled. Unset optional constraints default to vehicle specifications. - [HomePosition](HomePosition.md) — GPS home position in WGS84 coordinates. -- [LateralControlConfiguration](LateralControlConfiguration.md) — Fixed Wing Lateral Control Configuration message - Used by the fw_lateral_longitudinal_control module to constrain FixedWingLateralSetpoint messages. -- [LongitudinalControlConfiguration](LongitudinalControlConfiguration.md) — Fixed Wing Longitudinal Control Configuration message - Used by the fw_lateral_longitudinal_control module and TECS to constrain FixedWingLongitudinalSetpoint messages - and configure the resultant setpoints. +- [LateralControlConfiguration](LateralControlConfiguration.md) — Fixed Wing Lateral Control Configuration message. Used by the fw_lateral_longitudinal_control module to constrain FixedWingLateralSetpoint messages. +- [LongitudinalControlConfiguration](LongitudinalControlConfiguration.md) — Fixed Wing Longitudinal Control Configuration message. Used by the fw_lateral_longitudinal_control module and TECS to constrain FixedWingLongitudinalSetpoint messages. and configure the resultant setpoints. - [ManualControlSetpoint](ManualControlSetpoint.md) -- [ModeCompleted](ModeCompleted.md) — Mode completion result, published by an active mode. - The possible values of nav_state are defined in the VehicleStatus msg. - Note that this is not always published (e.g. when a user switches modes or on - failsafe activation) +- [ModeCompleted](ModeCompleted.md) — Mode completion result, published by an active mode. The possible values of nav_state are defined in the VehicleStatus msg. Note that this is not always published (e.g. when a user switches modes or on. failsafe activation). +- [RaptorInput](RaptorInput.md) — Raptor Input. +- [RaptorStatus](RaptorStatus.md) — Raptor Status. - [RegisterExtComponentReply](RegisterExtComponentReply.md) -- [RegisterExtComponentRequest](RegisterExtComponentRequest.md) — Request to register an external component -- [TrajectorySetpoint](TrajectorySetpoint.md) — Trajectory setpoint in NED frame - Input to PID position controller. - Needs to be kinematically consistent and feasible for smooth flight. - setting a value to NaN means the state should not be controlled +- [RegisterExtComponentRequest](RegisterExtComponentRequest.md) — Request to register an external component. +- [TrajectorySetpoint](TrajectorySetpoint.md) — Trajectory setpoint in NED frame. Input to PID position controller. Needs to be kinematically consistent and feasible for smooth flight. setting a value to NaN means the state should not be controlled. - [UnregisterExtComponent](UnregisterExtComponent.md) - [VehicleAngularVelocity](VehicleAngularVelocity.md) -- [VehicleAttitude](VehicleAttitude.md) — This is similar to the mavlink message ATTITUDE_QUATERNION, but for onboard use - The quaternion uses the Hamilton convention, and the order is q(w, x, y, z) +- [VehicleAttitude](VehicleAttitude.md) — This is similar to the mavlink message ATTITUDE_QUATERNION, but for onboard use. The quaternion uses the Hamilton convention, and the order is q(w, x, y, z). - [VehicleAttitudeSetpoint](VehicleAttitudeSetpoint.md) -- [VehicleCommand](VehicleCommand.md) — Vehicle Command uORB message. Used for commanding a mission / action / etc. - Follows the MAVLink COMMAND_INT / COMMAND_LONG definition -- [VehicleCommandAck](VehicleCommandAck.md) — Vehicle Command Ackonwledgement uORB message. - Used for acknowledging the vehicle command being received. - Follows the MAVLink COMMAND_ACK message definition +- [VehicleCommand](VehicleCommand.md) — Vehicle Command uORB message. Used for commanding a mission / action / etc. Follows the MAVLink COMMAND_INT / COMMAND_LONG definition. +- [VehicleCommandAck](VehicleCommandAck.md) — Vehicle Command Ackonwledgement uORB message. Used for acknowledging the vehicle command being received. Follows the MAVLink COMMAND_ACK message definition. - [VehicleControlMode](VehicleControlMode.md) -- [VehicleGlobalPosition](VehicleGlobalPosition.md) — Fused global position in WGS84. - This struct contains global position estimation. It is not the raw GPS - measurement (@see vehicle_gps_position). This topic is usually published by the position - estimator, which will take more sources of information into account than just GPS, - e.g. control inputs of the vehicle in a Kalman-filter implementation. +- [VehicleGlobalPosition](VehicleGlobalPosition.md) — Fused global position in WGS84. This struct contains global position estimation. It is not the raw GPS. measurement (@see vehicle_gps_position). This topic is usually published by the position. estimator, which will take more sources of information into account than just GPS,. e.g. control inputs of the vehicle in a Kalman-filter implementation. - [VehicleLandDetected](VehicleLandDetected.md) -- [VehicleLocalPosition](VehicleLocalPosition.md) — Fused local position in NED. - The coordinate system origin is the vehicle position at the time when the EKF2-module was started. -- [VehicleOdometry](VehicleOdometry.md) — Vehicle odometry data +- [VehicleLocalPosition](VehicleLocalPosition.md) — Fused local position in NED. The coordinate system origin is the vehicle position at the time when the EKF2-module was started. +- [VehicleOdometry](VehicleOdometry.md) — Vehicle odometry data. - [VehicleRatesSetpoint](VehicleRatesSetpoint.md) -- [VehicleStatus](VehicleStatus.md) — Encodes the system state of the vehicle published by commander -- [VtolVehicleStatus](VtolVehicleStatus.md) — VEHICLE_VTOL_STATE, should match 1:1 MAVLinks's MAV_VTOL_STATE -- [Wind](Wind.md) — Wind estimate (from EKF2) +- [VehicleStatus](VehicleStatus.md) — Encodes the system state of the vehicle published by commander. +- [VtolVehicleStatus](VtolVehicleStatus.md) — VEHICLE_VTOL_STATE, should match 1:1 MAVLinks's MAV_VTOL_STATE. +- [Wind](Wind.md) — Wind estimate (from EKF2). ## Unversioned Messages -- [ActionRequest](ActionRequest.md) — Action request for the vehicle's main state +- [ActionRequest](ActionRequest.md) — Action request for the vehicle's main state. - [ActuatorArmed](ActuatorArmed.md) - [ActuatorControlsStatus](ActuatorControlsStatus.md) - [ActuatorOutputs](ActuatorOutputs.md) -- [ActuatorServosTrim](ActuatorServosTrim.md) — Servo trims, added as offset to servo outputs +- [ActuatorServosTrim](ActuatorServosTrim.md) — Servo trims, added as offset to servo outputs. - [ActuatorTest](ActuatorTest.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 -- [BatteryInfo](BatteryInfo.md) — Battery information +- [Airspeed](Airspeed.md) — Airspeed data from sensors. +- [AirspeedWind](AirspeedWind.md) — Wind estimate (from airspeed_selector). +- [AutotuneAttitudeControlStatus](AutotuneAttitudeControlStatus.md) — Autotune attitude control status. +- [BatteryInfo](BatteryInfo.md) — Battery information. - [ButtonEvent](ButtonEvent.md) - [CameraCapture](CameraCapture.md) - [CameraStatus](CameraStatus.md) - [CameraTrigger](CameraTrigger.md) - [CanInterfaceStatus](CanInterfaceStatus.md) -- [CellularStatus](CellularStatus.md) — Cellular status -- [CollisionConstraints](CollisionConstraints.md) — Local setpoint constraints in NED frame - setting something to NaN means that no limit is provided +- [CellularStatus](CellularStatus.md) — Cellular status. +- [CollisionConstraints](CollisionConstraints.md) — Local setpoint constraints in NED frame. setting something to NaN means that no limit is provided. - [ControlAllocatorStatus](ControlAllocatorStatus.md) - [Cpuload](Cpuload.md) - [DatamanRequest](DatamanRequest.md) @@ -105,13 +78,12 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [DebugKeyValue](DebugKeyValue.md) - [DebugValue](DebugValue.md) - [DebugVect](DebugVect.md) -- [DeviceInformation](DeviceInformation.md) — Device information -- [DifferentialPressure](DifferentialPressure.md) — Differential-pressure (airspeed) sensor -- [DistanceSensor](DistanceSensor.md) — DISTANCE_SENSOR message data +- [DeviceInformation](DeviceInformation.md) — Device information. +- [DifferentialPressure](DifferentialPressure.md) — Differential-pressure (airspeed) sensor. +- [DistanceSensor](DistanceSensor.md) — DISTANCE_SENSOR message data. - [DistanceSensorModeChangeRequest](DistanceSensorModeChangeRequest.md) - [DronecanNodeStatus](DronecanNodeStatus.md) -- [Ekf2Timestamps](Ekf2Timestamps.md) — this message contains the (relative) timestamps of the sensor inputs used by EKF2. - It can be used for reproducible replay. +- [Ekf2Timestamps](Ekf2Timestamps.md) — this message contains the (relative) timestamps of the sensor inputs used by EKF2. It can be used for reproducible replay. - [EscReport](EscReport.md) - [EscStatus](EscStatus.md) - [EstimatorAidSource1d](EstimatorAidSource1d.md) @@ -123,19 +95,16 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [EstimatorGpsStatus](EstimatorGpsStatus.md) - [EstimatorInnovations](EstimatorInnovations.md) - [EstimatorSelectorStatus](EstimatorSelectorStatus.md) -- [EstimatorSensorBias](EstimatorSensorBias.md) — Sensor readings and in-run biases in SI-unit form. Sensor readings are compensated for static offsets, - scale errors, in-run bias and thermal drift (if thermal compensation is enabled and available). +- [EstimatorSensorBias](EstimatorSensorBias.md) — Sensor readings and in-run biases in SI-unit form. Sensor readings are compensated for static offsets,. scale errors, in-run bias and thermal drift (if thermal compensation is enabled and available). - [EstimatorStates](EstimatorStates.md) - [EstimatorStatus](EstimatorStatus.md) - [EstimatorStatusFlags](EstimatorStatusFlags.md) - [FailsafeFlags](FailsafeFlags.md) — Input flags for the failsafe state machine set by the arming & health checks. - [FailureDetectorStatus](FailureDetectorStatus.md) - [FigureEightStatus](FigureEightStatus.md) -- [FixedWingLateralGuidanceStatus](FixedWingLateralGuidanceStatus.md) — Fixed Wing Lateral Guidance Status message - Published by fw_pos_control module to report the resultant lateral setpoints and NPFG debug outputs -- [FixedWingLateralStatus](FixedWingLateralStatus.md) — Fixed Wing Lateral Status message - Published by the fw_lateral_longitudinal_control module to report the resultant lateral setpoint -- [FixedWingRunwayControl](FixedWingRunwayControl.md) — Auxiliary control fields for fixed-wing runway takeoff/landing +- [FixedWingLateralGuidanceStatus](FixedWingLateralGuidanceStatus.md) — Fixed Wing Lateral Guidance Status message. Published by fw_pos_control module to report the resultant lateral setpoints and NPFG debug outputs. +- [FixedWingLateralStatus](FixedWingLateralStatus.md) — Fixed Wing Lateral Status message. Published by the fw_lateral_longitudinal_control module to report the resultant lateral setpoint. +- [FixedWingRunwayControl](FixedWingRunwayControl.md) — Auxiliary control fields for fixed-wing runway takeoff/landing. - [FlightPhaseEstimation](FlightPhaseEstimation.md) - [FollowTarget](FollowTarget.md) - [FollowTargetEstimator](FollowTargetEstimator.md) @@ -153,13 +122,13 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [GimbalManagerSetAttitude](GimbalManagerSetAttitude.md) - [GimbalManagerSetManualControl](GimbalManagerSetManualControl.md) - [GimbalManagerStatus](GimbalManagerStatus.md) -- [GpioConfig](GpioConfig.md) — GPIO configuration -- [GpioIn](GpioIn.md) — GPIO mask and state -- [GpioOut](GpioOut.md) — GPIO mask and state -- [GpioRequest](GpioRequest.md) — Request GPIO mask to be read +- [GpioConfig](GpioConfig.md) — GPIO configuration. +- [GpioIn](GpioIn.md) — GPIO mask and state. +- [GpioOut](GpioOut.md) — GPIO mask and state. +- [GpioRequest](GpioRequest.md) — Request GPIO mask to be read. - [GpsDump](GpsDump.md) — This message is used to dump the raw gps communication to the log. - [GpsInjectData](GpsInjectData.md) -- [Gripper](Gripper.md) — # Used to command an actuation in the gripper, which is mapped to a specific output in the control allocation module +- [Gripper](Gripper.md) — # Used to command an actuation in the gripper, which is mapped to a specific output in the control allocation module. - [HealthReport](HealthReport.md) - [HeaterStatus](HeaterStatus.md) - [HoverThrustEstimate](HoverThrustEstimate.md) @@ -167,34 +136,32 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [InternalCombustionEngineControl](InternalCombustionEngineControl.md) - [InternalCombustionEngineStatus](InternalCombustionEngineStatus.md) - [IridiumsbdStatus](IridiumsbdStatus.md) -- [IrlockReport](IrlockReport.md) — IRLOCK_REPORT message data +- [IrlockReport](IrlockReport.md) — IRLOCK_REPORT message data. - [LandingGear](LandingGear.md) - [LandingGearWheel](LandingGearWheel.md) - [LandingTargetInnovations](LandingTargetInnovations.md) -- [LandingTargetPose](LandingTargetPose.md) — Relative position of precision land target in navigation (body fixed, north aligned, NED) and inertial (world fixed, north aligned, NED) frames -- [LaunchDetectionStatus](LaunchDetectionStatus.md) — Status of the launch detection state machine (fixed-wing only) -- [LedControl](LedControl.md) — LED control: control a single or multiple LED's. - These are the externally visible LED's, not the board LED's -- [LogMessage](LogMessage.md) — A logging message, output with PX4_WARN, PX4_ERR, PX4_INFO +- [LandingTargetPose](LandingTargetPose.md) — Relative position of precision land target in navigation (body fixed, north aligned, NED) and inertial (world fixed, north aligned, NED) frames. +- [LaunchDetectionStatus](LaunchDetectionStatus.md) — Status of the launch detection state machine (fixed-wing only). +- [LedControl](LedControl.md) — LED control: control a single or multiple LED's. These are the externally visible LED's, not the board LED's. +- [LogMessage](LogMessage.md) — A logging message, output with PX4_WARN, PX4_ERR, PX4_INFO. - [LoggerStatus](LoggerStatus.md) - [MagWorkerData](MagWorkerData.md) - [MagnetometerBiasEstimate](MagnetometerBiasEstimate.md) - [ManualControlSwitches](ManualControlSwitches.md) - [MavlinkLog](MavlinkLog.md) -- [MavlinkTunnel](MavlinkTunnel.md) — MAV_TUNNEL_PAYLOAD_TYPE enum +- [MavlinkTunnel](MavlinkTunnel.md) — MAV_TUNNEL_PAYLOAD_TYPE enum. - [MessageFormatRequest](MessageFormatRequest.md) - [MessageFormatResponse](MessageFormatResponse.md) - [Mission](Mission.md) - [MissionResult](MissionResult.md) - [MountOrientation](MountOrientation.md) - [NavigatorMissionItem](NavigatorMissionItem.md) -- [NavigatorStatus](NavigatorStatus.md) — Current status of a Navigator mode - The possible values of nav_state are defined in the VehicleStatus msg. -- [NeuralControl](NeuralControl.md) — Neural control +- [NavigatorStatus](NavigatorStatus.md) — Current status of a Navigator mode. The possible values of nav_state are defined in the VehicleStatus msg. +- [NeuralControl](NeuralControl.md) — Neural control. - [NormalizedUnsignedSetpoint](NormalizedUnsignedSetpoint.md) - [ObstacleDistance](ObstacleDistance.md) — Obstacle distances in front of the sensor. -- [OffboardControlMode](OffboardControlMode.md) — Off-board control mode -- [OnboardComputerStatus](OnboardComputerStatus.md) — ONBOARD_COMPUTER_STATUS message data +- [OffboardControlMode](OffboardControlMode.md) — Off-board control mode. +- [OnboardComputerStatus](OnboardComputerStatus.md) — ONBOARD_COMPUTER_STATUS message data. - [OpenDroneIdArmStatus](OpenDroneIdArmStatus.md) - [OpenDroneIdOperatorId](OpenDroneIdOperatorId.md) - [OpenDroneIdSelfId](OpenDroneIdSelfId.md) @@ -202,22 +169,21 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [OrbTest](OrbTest.md) - [OrbTestLarge](OrbTestLarge.md) - [OrbTestMedium](OrbTestMedium.md) -- [OrbitStatus](OrbitStatus.md) — ORBIT_YAW_BEHAVIOUR -- [ParameterResetRequest](ParameterResetRequest.md) — ParameterResetRequest : Used by the primary to reset one or all parameter value(s) on the remote -- [ParameterSetUsedRequest](ParameterSetUsedRequest.md) — ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary -- [ParameterSetValueRequest](ParameterSetValueRequest.md) — ParameterSetValueRequest : Used by a remote or primary to update the value for a parameter at the other end -- [ParameterSetValueResponse](ParameterSetValueResponse.md) — ParameterSetValueResponse : Response to a set value request by either primary or secondary -- [ParameterUpdate](ParameterUpdate.md) — This message is used to notify the system about one or more parameter changes +- [OrbitStatus](OrbitStatus.md) — ORBIT_YAW_BEHAVIOUR. +- [ParameterResetRequest](ParameterResetRequest.md) — ParameterResetRequest : Used by the primary to reset one or all parameter value(s) on the remote. +- [ParameterSetUsedRequest](ParameterSetUsedRequest.md) — ParameterSetUsedRequest : Used by a remote to update the used flag for a parameter on the primary. +- [ParameterSetValueRequest](ParameterSetValueRequest.md) — ParameterSetValueRequest : Used by a remote or primary to update the value for a parameter at the other end. +- [ParameterSetValueResponse](ParameterSetValueResponse.md) — ParameterSetValueResponse : Response to a set value request by either primary or secondary. +- [ParameterUpdate](ParameterUpdate.md) — This message is used to notify the system about one or more parameter changes. - [Ping](Ping.md) - [PositionControllerLandingStatus](PositionControllerLandingStatus.md) - [PositionControllerStatus](PositionControllerStatus.md) -- [PositionSetpoint](PositionSetpoint.md) — this file is only used in the position_setpoint triple as a dependency -- [PositionSetpointTriplet](PositionSetpointTriplet.md) — Global position setpoint triplet in WGS84 coordinates. - This are the three next waypoints (or just the next two or one). -- [PowerButtonState](PowerButtonState.md) — power button state notification message -- [PowerMonitor](PowerMonitor.md) — power monitor message +- [PositionSetpoint](PositionSetpoint.md) — this file is only used in the position_setpoint triple as a dependency. +- [PositionSetpointTriplet](PositionSetpointTriplet.md) — Global position setpoint triplet in WGS84 coordinates. This are the three next waypoints (or just the next two or one). +- [PowerButtonState](PowerButtonState.md) — power button state notification message. +- [PowerMonitor](PowerMonitor.md) — power monitor message. - [PpsCapture](PpsCapture.md) -- [PurePursuitStatus](PurePursuitStatus.md) — Pure pursuit status +- [PurePursuitStatus](PurePursuitStatus.md) — Pure pursuit status. - [PwmInput](PwmInput.md) - [Px4ioStatus](Px4ioStatus.md) - [QshellReq](QshellReq.md) @@ -226,15 +192,15 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [RateCtrlStatus](RateCtrlStatus.md) - [RcChannels](RcChannels.md) - [RcParameterMap](RcParameterMap.md) -- [RoverAttitudeSetpoint](RoverAttitudeSetpoint.md) — Rover Attitude Setpoint -- [RoverAttitudeStatus](RoverAttitudeStatus.md) — Rover Attitude Status -- [RoverPositionSetpoint](RoverPositionSetpoint.md) — Rover Position Setpoint -- [RoverRateSetpoint](RoverRateSetpoint.md) — Rover Rate setpoint -- [RoverRateStatus](RoverRateStatus.md) — Rover Rate Status -- [RoverSpeedSetpoint](RoverSpeedSetpoint.md) — Rover Speed Setpoint -- [RoverSpeedStatus](RoverSpeedStatus.md) — Rover Velocity Status -- [RoverSteeringSetpoint](RoverSteeringSetpoint.md) — Rover Steering setpoint -- [RoverThrottleSetpoint](RoverThrottleSetpoint.md) — Rover Throttle setpoint +- [RoverAttitudeSetpoint](RoverAttitudeSetpoint.md) — Rover Attitude Setpoint. +- [RoverAttitudeStatus](RoverAttitudeStatus.md) — Rover Attitude Status. +- [RoverPositionSetpoint](RoverPositionSetpoint.md) — Rover Position Setpoint. +- [RoverRateSetpoint](RoverRateSetpoint.md) — Rover Rate setpoint. +- [RoverRateStatus](RoverRateStatus.md) — Rover Rate Status. +- [RoverSpeedSetpoint](RoverSpeedSetpoint.md) — Rover Speed Setpoint. +- [RoverSpeedStatus](RoverSpeedStatus.md) — Rover Velocity Status. +- [RoverSteeringSetpoint](RoverSteeringSetpoint.md) — Rover Steering setpoint. +- [RoverThrottleSetpoint](RoverThrottleSetpoint.md) — Rover Throttle setpoint. - [Rpm](Rpm.md) - [RtlStatus](RtlStatus.md) - [RtlTimeEstimate](RtlTimeEstimate.md) @@ -242,78 +208,64 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m - [SensorAccel](SensorAccel.md) - [SensorAccelFifo](SensorAccelFifo.md) - [SensorAirflow](SensorAirflow.md) -- [SensorBaro](SensorBaro.md) — Barometer sensor -- [SensorCombined](SensorCombined.md) — Sensor readings in SI-unit form. - These fields are scaled and offset-compensated where possible and do not - change with board revisions and sensor updates. -- [SensorCorrection](SensorCorrection.md) — Sensor corrections in SI-unit form for the voted sensor +- [SensorBaro](SensorBaro.md) — Barometer sensor. +- [SensorCombined](SensorCombined.md) — Sensor readings in SI-unit form. These fields are scaled and offset-compensated where possible and do not. change with board revisions and sensor updates. +- [SensorCorrection](SensorCorrection.md) — Sensor corrections in SI-unit form for the voted sensor. - [SensorGnssRelative](SensorGnssRelative.md) — GNSS relative positioning information in NED frame. The NED frame is defined as the local topological system at the reference station. -- [SensorGnssStatus](SensorGnssStatus.md) — Gnss quality indicators -- [SensorGps](SensorGps.md) — GPS position in WGS84 coordinates. - the field 'timestamp' is for the position & velocity (microseconds) +- [SensorGnssStatus](SensorGnssStatus.md) — Gnss quality indicators. +- [SensorGps](SensorGps.md) — GPS position in WGS84 coordinates. the field 'timestamp' is for the position & velocity (microseconds). - [SensorGyro](SensorGyro.md) - [SensorGyroFft](SensorGyroFft.md) - [SensorGyroFifo](SensorGyroFifo.md) - [SensorHygrometer](SensorHygrometer.md) - [SensorMag](SensorMag.md) - [SensorOpticalFlow](SensorOpticalFlow.md) -- [SensorPreflightMag](SensorPreflightMag.md) — Pre-flight sensor check metrics. - 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 +- [SensorPreflightMag](SensorPreflightMag.md) — Pre-flight sensor check metrics. 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. +- [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. This will be zero for a sensor that's primary or unpopulated. - [SensorsStatusImu](SensorsStatusImu.md) — Sensor check metrics. This will be zero for a sensor that's primary or unpopulated. - [SystemPower](SystemPower.md) -- [TakeoffStatus](TakeoffStatus.md) — Status of the takeoff state machine currently just available for multicopters -- [TaskStackInfo](TaskStackInfo.md) — stack information for a single running process +- [TakeoffStatus](TakeoffStatus.md) — Status of the takeoff state machine currently just available for multicopters. +- [TaskStackInfo](TaskStackInfo.md) — stack information for a single running process. - [TecsStatus](TecsStatus.md) - [TelemetryStatus](TelemetryStatus.md) - [TiltrotorExtraControls](TiltrotorExtraControls.md) - [TimesyncStatus](TimesyncStatus.md) -- [TrajectorySetpoint6dof](TrajectorySetpoint6dof.md) — Trajectory setpoint in NED frame - Input to position controller. +- [TrajectorySetpoint6dof](TrajectorySetpoint6dof.md) — Trajectory setpoint in NED frame. Input to position controller. - [TransponderReport](TransponderReport.md) -- [TuneControl](TuneControl.md) — This message is used to control the tunes, when the tune_id is set to CUSTOM - then the frequency, duration are used otherwise those values are ignored. -- [UavcanParameterRequest](UavcanParameterRequest.md) — UAVCAN-MAVLink parameter bridge request type -- [UavcanParameterValue](UavcanParameterValue.md) — UAVCAN-MAVLink parameter bridge response type -- [UlogStream](UlogStream.md) — Message to stream ULog data from the logger. Corresponds to the LOGGING_DATA - mavlink message -- [UlogStreamAck](UlogStreamAck.md) — Ack a previously sent ulog_stream message that had - the NEED_ACK flag set +- [TuneControl](TuneControl.md) — This message is used to control the tunes, when the tune_id is set to CUSTOM. then the frequency, duration are used otherwise those values are ignored. +- [UavcanParameterRequest](UavcanParameterRequest.md) — UAVCAN-MAVLink parameter bridge request type. +- [UavcanParameterValue](UavcanParameterValue.md) — UAVCAN-MAVLink parameter bridge response type. +- [UlogStream](UlogStream.md) — Message to stream ULog data from the logger. Corresponds to the LOGGING_DATA. mavlink message. +- [UlogStreamAck](UlogStreamAck.md) — Ack a previously sent ulog_stream message that had. the NEED_ACK flag set. - [VehicleAcceleration](VehicleAcceleration.md) -- [VehicleAirData](VehicleAirData.md) — Vehicle air data +- [VehicleAirData](VehicleAirData.md) — Vehicle air data. - [VehicleAngularAccelerationSetpoint](VehicleAngularAccelerationSetpoint.md) -- [VehicleConstraints](VehicleConstraints.md) — Local setpoint constraints in NED frame - setting something to NaN means that no limit is provided +- [VehicleConstraints](VehicleConstraints.md) — Local setpoint constraints in NED frame. setting something to NaN means that no limit is provided. - [VehicleImu](VehicleImu.md) — IMU readings in SI-unit form. - [VehicleImuStatus](VehicleImuStatus.md) -- [VehicleLocalPositionSetpoint](VehicleLocalPositionSetpoint.md) — Local position setpoint in NED frame - Telemetry of PID position controller to monitor tracking. - NaN means the state was not controlled +- [VehicleLocalPositionSetpoint](VehicleLocalPositionSetpoint.md) — Local position setpoint in NED frame. Telemetry of PID position controller to monitor tracking. NaN means the state was not controlled. - [VehicleMagnetometer](VehicleMagnetometer.md) - [VehicleOpticalFlow](VehicleOpticalFlow.md) — Optical flow in XYZ body frame in SI units. - [VehicleOpticalFlowVel](VehicleOpticalFlowVel.md) -- [VehicleRoi](VehicleRoi.md) — Vehicle Region Of Interest (ROI) +- [VehicleRoi](VehicleRoi.md) — Vehicle Region Of Interest (ROI). - [VehicleThrustSetpoint](VehicleThrustSetpoint.md) - [VehicleTorqueSetpoint](VehicleTorqueSetpoint.md) -- [VelocityLimits](VelocityLimits.md) — Velocity and yaw rate limits for a multicopter position slow mode only +- [VelocityLimits](VelocityLimits.md) — Velocity and yaw rate limits for a multicopter position slow mode only. +- [Vtx](Vtx.md) - [WheelEncoders](WheelEncoders.md) - [YawEstimatorStatus](YawEstimatorStatus.md) - [AirspeedValidatedV0](AirspeedValidatedV0.md) - [ArmingCheckReplyV0](ArmingCheckReplyV0.md) - [ArmingCheckRequestV0](ArmingCheckRequestV0.md) — Arming check request. -- [BatteryStatusV0](BatteryStatusV0.md) — Battery status -- [ConfigOverridesV0](ConfigOverridesV0.md) — Configurable overrides by (external) modes or mode executors -- [EventV0](EventV0.md) — this message is required here in the msg_old folder because other msg are depending on it - Events interface +- [BatteryStatusV0](BatteryStatusV0.md) — Battery status. +- [ConfigOverridesV0](ConfigOverridesV0.md) — Configurable overrides by (external) modes or mode executors. +- [EventV0](EventV0.md) — this message is required here in the msg_old folder because other msg are depending on it. Events interface. - [HomePositionV0](HomePositionV0.md) — GPS home position in WGS84 coordinates. - [RegisterExtComponentReplyV0](RegisterExtComponentReplyV0.md) -- [RegisterExtComponentRequestV0](RegisterExtComponentRequestV0.md) — Request to register an external component +- [RegisterExtComponentRequestV0](RegisterExtComponentRequestV0.md) — Request to register an external component. - [VehicleAttitudeSetpointV0](VehicleAttitudeSetpointV0.md) -- [VehicleLocalPositionV0](VehicleLocalPositionV0.md) — Fused local position in NED. - The coordinate system origin is the vehicle position at the time when the EKF2-module was started. -- [VehicleStatusV0](VehicleStatusV0.md) — Encodes the system state of the vehicle published by commander +- [VehicleLocalPositionV0](VehicleLocalPositionV0.md) — Fused local position in NED. The coordinate system origin is the vehicle position at the time when the EKF2-module was started. +- [VehicleStatusV0](VehicleStatusV0.md) — Encodes the system state of the vehicle published by commander. diff --git a/docs/ko/peripherals/remote_id.md b/docs/ko/peripherals/remote_id.md index 9e9d1f2e5e..fb9e2083be 100644 --- a/docs/ko/peripherals/remote_id.md +++ b/docs/ko/peripherals/remote_id.md @@ -166,7 +166,6 @@ PX4 v1.14 streams these messages by default (in streaming modes: normal, onboard - [OPEN_DRONE_ID_LOCATION](https://mavlink.io/en/messages/common.html#OPEN_DRONE_ID_LOCATION) (1 Hz) - UAV location, altitude, direction, and speed. - [OPEN_DRONE_ID_SYSTEM](https://mavlink.io/en/messages/common.html#OPEN_DRONE_ID_SYSTEM) (1 Hz) Operator location/altitude, multiple aircraft information (group/swarm, if applicable), full timestamp and possible category/class information. - - Implementation assumes operator is located at vehicle home position (does not yet support getting operator position from GCS). This is believed to be compliant for broadcast-only Remote IDs. diff --git a/docs/ko/power_module/ark_12s_pab_power_module.md b/docs/ko/power_module/ark_12s_pab_power_module.md index fd3a4e94a9..50056e0122 100644 --- a/docs/ko/power_module/ark_12s_pab_power_module.md +++ b/docs/ko/power_module/ark_12s_pab_power_module.md @@ -13,25 +13,21 @@ Order this module from: ## Hardware Specifications - **TI INA238 Digital Power Monitor** - - 0.0001 Ohm Shunt - I2C Interface - **5.2V 6A Step-Down Regulator** - - 66V Maximum Input Voltage - 10V Minimum Input Voltage at 6A Out - Output Over-Current Protection - **Connections** - - Solder Pads Battery Input - Solder Pads Battery Output - 6 Pin Molex CLIK-Mate Output - [Matches ARK PAB Carrier Power Pinout](https://arkelectron.gitbook.io/ark-documentation/flight-controllers/ark-pixhawk-autopilot-bus-carrier/pinout) - **Other** - - USA Built - Includes 6 Pin Molex CLIK-Mate Cable diff --git a/docs/ko/releases/1.13.md b/docs/ko/releases/1.13.md index 0121c6cb2b..28a30b0b9d 100644 --- a/docs/ko/releases/1.13.md +++ b/docs/ko/releases/1.13.md @@ -24,7 +24,6 @@ ### 공통 - **Explicit Joystick source selection ([PR#17404](https://github.com/PX4/PX4-Autopilot/pull/17404))** - - Possibility to: - Explicitly allow just one source - Fall back to other source in air diff --git a/docs/ko/releases/index.md b/docs/ko/releases/index.md index 67c9428937..b691d2eb48 100644 --- a/docs/ko/releases/index.md +++ b/docs/ko/releases/index.md @@ -10,4 +10,8 @@ PX4 릴리스 노트는 각 릴리스의 변경 사항들을 설명합니다. - [v1.13](../releases/1.13.md) - [v1.12](../releases/1.12.md) -The full archive of releases for the PX4 autopilot project can be found on [GitHub](https://github.com/PX4/PX4-Autopilot/releases) +The full archive of releases for the PX4 autopilot project can be found on [GitHub](https://github.com/PX4/PX4-Autopilot/releases). + +:::info +For maintainers, see [Release Process](../releases/release_process.md) for the tagging and publishing workflow. +::: diff --git a/docs/ko/releases/release_process.md b/docs/ko/releases/release_process.md new file mode 100644 index 0000000000..95ed7a0bd4 --- /dev/null +++ b/docs/ko/releases/release_process.md @@ -0,0 +1,301 @@ +# 릴리스 프로세스 + +This page documents the PX4 release process for maintainers. It covers the steps from preparing a release candidate through to the final announcement. + +## 개요 + +PX4 uses a branch-based release workflow: + +- **`release/X.Y`** (e.g., `release/1.17`, `release/2.0`) - The active development branch for a specific release where changes are merged and tested +- **`stable`** - Points to the latest stable release tag; reset after each release +- **`beta`** - For flight testers to validate release candidates + +The target release cycle is approximately 6 months, best effort. The actual cadence depends on testing results and maintainer availability, with an ongoing goal to shorten the cycle. + +Releases are tracked on the [PX4 Release Project Board](https://github.com/orgs/PX4/projects/45), which is reused and renamed for each release cycle. + +### Release Tag Progression + +Release branches go through the following tag stages: + +| Stage | Example | Branch Status | What Gets Merged | +| ---------- | ---------------- | -------------- | ---------------------------------------------------------------------- | +| **Alpha** | `v1.18.0-alpha1` | Open for fixes | Bug fixes and regression fixes only | +| **Beta** | `v1.18.0-beta1` | Open for fixes | Bug fixes and regression fixes only | +| **RC** | `v1.18.0-rc1` | Frozen | Nothing (unless veto vote passes) | +| **Stable** | `v1.18.0` | Open for fixes | Bug fixes and regression fixes (for point releases) | + +:::info +New features are never merged to release branches. Once a release branch is created from `main`, only bug fixes and regression fixes are accepted. New features must target `main` and will be included in the next release cycle. +::: + +## Starting a New Release Cycle + +A new release cycle begins immediately after a stable release is published. This involves two votes during the [Weekly Community Q&A Call](../contribute/dev_call.md) when approving a stable release: + +1. **Vote to publish the current release** - Approve the stable release for publication +2. **Vote on the next release name/number** - Decide the version number for the next release (e.g., v1.18 or v2.0) + +### Prepare Release Notes Before Branching + +Release notes are built incrementally in [`main.md`](../releases/main.md), which accumulates changes as they land on `main`. Before creating the release branch: + +1. Rename `main.md` to the version-specific file (e.g., `docs/en/releases/1.18.md`) +2. Add the new file to `SUMMARY.md` and `releases/index.md` +3. Reset `main.md` to a clean template for the next release cycle +4. Verify that documentation for all included contributions is complete +5. Search for instances of `main (planned for:` and replace with the release version now that it is known. + So, for example `` is replaced with `` + +:::tip +Community members are encouraged to document changes as they are merged into `main`. This distributes the documentation workload and ensures changes are captured while they're fresh. +::: + +### Create the Release Branch + +Once the next release version is decided, create the new release branch from `main` in PX4-Autopilot and the companion repositories: + +```sh +# PX4-Autopilot +git checkout main && git pull +git checkout -b release/1.18 +git push origin release/1.18 +``` + +Matching release branches must also be created in: + +- [PX4/px4_msgs](https://github.com/PX4/px4_msgs) +- [Auterion/px4-ros2-interface-lib](https://github.com/Auterion/px4-ros2-interface-lib) + +After creating the companion branches, update the [ROS integration test workflow](https://github.com/PX4/PX4-Autopilot/blob/main/.github/workflows/ros_integration_tests.yml) on the release branch to clone `px4-ros2-interface-lib` from the matching release branch: + +```diff +- git clone --recursive https://github.com/Auterion/px4-ros2-interface-lib.git ++ git clone --recursive --branch release/1.18 https://github.com/Auterion/px4-ros2-interface-lib.git +``` + +:::warning +Once the release branches are created, they only accept bug fixes and regression fixes. All new feature development continues on `main`. +::: + +### Create the Alpha Tag + +Immediately after creating the release branch, create the first alpha tag to mark the beginning of the release cycle: + +```sh +# On the new release branch +git checkout release/1.18 + +# Create the signed alpha tag +git tag -s v1.18.0-alpha1 -m "v1.18.0-alpha1" +git push origin v1.18.0-alpha1 +``` + +Subsequent alpha tags can be created as fixes are merged (e.g., `v1.18.0-alpha2`, `v1.18.0-alpha3`). + +## Release Steps + +### 1. Review and Merge PRs (Alpha Phase) + +During the alpha phase, review pull requests targeting the release branch: + +- Review PRs according to the project's [contribution guidelines](../contribute/code.md) +- Merge **bug fixes and regression fixes only** +- New features must target `main`, not the release branch +- Create additional alpha tags as fixes are merged (e.g., `v1.18.0-alpha2`) + +### 2. Alpha Testing + +The _Dronecode Test Team_ (provided by [Ascend Engineering](https://www.ascendengineer.com) — Dronecode Silver member) conducts initial flight testing of alpha builds using: + +- The [test cards](../test_and_ci/test_flights.md) documented in the PX4 guide +- A hardware matrix covering supported flight controllers and airframes + +Alpha testing focuses on identifying regressions and blockers early. The alpha phase is complete when: + +- All test cards pass across the core hardware matrix (no critical or high-severity failures) +- All identified regressions have fixes merged or have been triaged as non-blocking +- Release notes and documentation for included changes are complete + +### 3. Create Beta Tag + +Once the alpha exit criteria above are met, create the first beta tag: + +```sh +# On the release branch +git checkout release/1.18 +git pull + +# Create the signed beta tag +git tag -s v1.18.0-beta1 -m "v1.18.0-beta1" +git push origin v1.18.0-beta1 +``` + +### 4. Beta Testing + +Beta builds are published for wider community validation. Unlike alpha testing (which is conducted by the Dronecode Test Team on the core hardware matrix), beta testing focuses on: + +- **Community testing** — beta builds are made available for community members to test on their own hardware and airframe configurations +- **Extended hardware coverage** — testing on hardware and configurations beyond the core test matrix +- **Real-world flight scenarios** — longer flights, mission testing, and edge cases not covered by standard test cards + +During beta, continue to: + +- Review and merge **bug fixes and regression fixes only** +- Create additional beta tags as fixes are merged (e.g., `v1.18.0-beta2`, `v1.18.0-beta3`) + +### 5. Create Release Candidate Tag + +The beta phase is complete when: + +- No new critical or high-severity issues are reported for at least one beta tag cycle +- All beta-reported regressions have fixes merged or have been triaged as non-blocking + +Once the beta exit criteria are met, create the first release candidate: + +```sh +# On the release branch +git checkout release/1.18 +git pull + +# Create the signed RC tag +git tag -s v1.18.0-rc1 -m "v1.18.0-rc1" +git push origin v1.18.0-rc1 +``` + +:::warning +The branch is now frozen. No PRs will be merged unless a veto vote passes (see below). +::: + +:::tip +Tags must be GPG-signed. Ensure your GitHub account is [configured for GPG signing](https://docs.github.com/en/authentication/managing-commit-signature-verification). Only maintainers with registered GPG keys can create release tags. +::: + +### 6. RC Testing and Branch Freeze + +During RC testing, the release branch is frozen: + +- No PRs are merged by default +- Testing focuses on final validation before stable release +- Any issues found are documented and evaluated + +#### Veto Vote for Critical Fixes + +If a critical issue is discovered during RC testing that must be fixed before release: + +1. Raise the issue during the [Weekly Community Q&A Call](../contribute/dev_call.md) +2. Present the case for why the fix is critical +3. Maintainers vote on whether to merge the fix +4. If approved, merge the fix and create a new RC tag (e.g., `v1.18.0-rc2`) + +### 7) Release Vote + +The release vote takes place during the [Weekly Community Q&A Call](../contribute/dev_call.md): + +- Present the release status and test results +- **Vote 1:** Core maintainers vote on whether to publish the release +- **Vote 2:** Decide the name/number of the next release version +- The call happens Wednesdays at 17:00 CET on [Discord](https://discord.gg/BDYmr6FA6Q) + +### 8. Create and Push Release Tag + +After a successful vote, create the final release tag: + +```sh +# On the release branch +git checkout release/1.18 +git pull + +# Create the signed release tag +git tag -s v1.18.0 -m "v1.18.0" +git push origin v1.18.0 +``` + +### 9. Update the Stable Branch + +Reset the `stable` branch to point to the new release tag: + +```sh +git checkout stable +git reset --hard v1.18.0 +git push --force origin stable +``` + +:::warning +This is a force push that rewrites the stable branch history. Ensure you have the correct tag before executing. +::: + +### 10. GitHub Release (Automated) + +When a version tag is pushed, the [build_all_targets.yml](https://github.com/PX4/PX4-Autopilot/blob/main/.github/workflows/build_all_targets.yml) GitHub Actions workflow automatically: + +1. Builds firmware for all supported targets +2. Uploads firmware artifacts to AWS S3 (`Firmware/vX.Y.Z/` and updates `Firmware/stable/`) +3. Creates a **draft release** on GitHub with all `.px4` firmware files attached + +### 11) Publish GitHub Release + +Edit the draft release on GitHub: + +- Add a brief description of major changes +- Link to the full release notes in the documentation (e.g., `releases/1.18.md`) +- Publish the release + +### 12. Finalize Documentation + +Review and finalize the release notes that have been developed throughout the release cycle: + +- Ensure all noteworthy changes, new features, and upgrade guides are documented +- Review for completeness and accuracy +- See existing [release notes](../releases/index.md) for the expected format + +### 13. Announce the Release + +Announce the release through official channels: + +- [PX4 Discuss Forum](https://discuss.px4.io/) +- [PX4 Discord](https://discord.gg/dronecode) +- Social media (Twitter/X, LinkedIn) +- Dronecode newsletter + +### 14. Start Next Release Cycle + +Immediately after publishing, start the next release cycle: + +- Create the new release branch from `main` (see [Create the Release Branch](#create-the-release-branch)) +- Create the alpha tag for the new release +- Create the initial documentation for the next release +- Rename and prepare the project board (see [Project Board Management](#project-board-management)) + +## Point Releases + +After a stable release is published, the release branch reopens for bug fixes and regression fixes to support point releases (e.g., `v1.18.1`). + +For patch releases: + +1. Merge bug fixes and regression fixes to the release branch +2. Create beta tags for testing if needed (e.g., `v1.18.1-beta1`) +3. Create RC tags for final validation (e.g., `v1.18.1-rc1`) +4. After testing and vote, tag the point release +5. Update stable branch and publish + +## Project Board Management + +The [PX4 Release Project Board](https://github.com/orgs/PX4/projects/45) is reused across release cycles to track issues and PRs for the current release. + +### After a Release + +Once a release is published: + +1. **Rename the project board** to reflect the next release version (e.g., "v1.17 Release" → "v1.18 Release") +2. **Review remaining items**: + - Close items that are no longer relevant + - Move incomplete items that should carry over to the next release + - Remove items that were descoped or deferred indefinitely +3. **Update the board description** if needed to reflect the new release target + +## See Also + +- [Source Code Management](../contribute/code.md) - Branching model and contribution guidelines +- [Test Flights](../test_and_ci/test_flights.md) - Flight test procedures and test cards +- [Weekly Community Q&A Call](../contribute/dev_call.md) - Where release votes happen diff --git a/docs/ko/ros/mavros_custom_messages.md b/docs/ko/ros/mavros_custom_messages.md index ecc129c4bd..c879bb41b2 100644 --- a/docs/ko/ros/mavros_custom_messages.md +++ b/docs/ko/ros/mavros_custom_messages.md @@ -68,6 +68,7 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c ``` 2. Edit **mavros_plugins.xml** (in **workspace/src/mavros/mavros_extras**) and add the following lines: + ```xml Accepts keyboard command. @@ -75,10 +76,11 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c ``` 3. Edit **CMakeLists.txt** (in **workspace/src/mavros/mavros_extras**) and add the following line in `add_library`. + ```cmake - add_library( + add_library( ... - src/plugins/keyboard_command.cpp + src/plugins/keyboard_command.cpp ) ``` @@ -148,6 +150,7 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c 4. Edit **mavlink_receiver.cpp** (in **PX4-Autopilot/src/modules/mavlink**). 여기에서 PX4는 ROS에서 보낸 MAVLink 메시지를 수신하고, 이를 uORB 주제로 게시합니다. + ```cpp ... void MavlinkReceiver::handle_message(mavlink_message_t *msg) @@ -227,7 +230,7 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c int error_counter = 0; - for (int i = 0; i < 10; i++) + for (int i = 0; i < 10; i++) { int poll_ret = px4_poll(fds, 1, 1000); @@ -264,10 +267,10 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c ``` menuconfig MODULES_KEY_RECEIVER - bool "key_receiver" - default n - ---help--- - Enable support for key_receiver + bool "key_receiver" + default n + ---help--- + Enable support for key_receiver ``` @@ -309,6 +312,7 @@ MODULES ### ROS 빌드 1. Clean the previously built PX4-Autopilot directory. In the root of **PX4-Autopilot** directory: + ```sh make clean ``` @@ -349,6 +353,7 @@ MODULES 1. Enter the Pixhawk nutshell through UDP. Replace xxx.xx.xxx.xxx with your IP. + ```sh cd PX4-Autopilot/Tools ./mavlink_shell.py xxx.xx.xxx.xxx:14557 --baudrate 57600 diff --git a/docs/ko/ros/mavros_installation.md b/docs/ko/ros/mavros_installation.md index 5d7dd2eb68..8a32a140a7 100644 --- a/docs/ko/ros/mavros_installation.md +++ b/docs/ko/ros/mavros_installation.md @@ -26,7 +26,7 @@ They cover the _ROS Melodic and Noetic_ releases. :::tab ROS Noetic (Ubuntu 20.04) -If you're working with [ROS Noetic](https://wiki.ros.org/noetic) on Ubuntu 20.04: +If you're working with [ROS "Noetic"](https://wiki.ros.org/noetic) on Ubuntu 20.04: 1. Install PX4 without the simulator toolchain: 1. [Download PX4 Source Code](../dev_setup/building_px4.md): @@ -57,7 +57,7 @@ If you're working with [ROS Noetic](https://wiki.ros.org/noetic) on Ubuntu 20.04 :::tab ROS Melodic (Ubuntu 18.04) -If you're working with ROS "Melodic on Ubuntu 18.04: +If you're working with ROS "Melodic" on Ubuntu 18.04: 1. Download the [ubuntu_sim_ros_melodic.sh](https://raw.githubusercontent.com/PX4/Devguide/master/build_scripts/ubuntu_sim_ros_melodic.sh) script in a bash shell: diff --git a/docs/ko/ros2/px4_ros2_control_interface.md b/docs/ko/ros2/px4_ros2_control_interface.md index 63ccc917cb..15ee7967c3 100644 --- a/docs/ko/ros2/px4_ros2_control_interface.md +++ b/docs/ko/ros2/px4_ros2_control_interface.md @@ -28,7 +28,7 @@ Unless the mode is safety-critical, requires strict timing or very high update r :::tip If you want to use Python, check out the [examples in the repository](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/examples/python). -Not all classes have Python bindings yet — the [supported bindings are here](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/px4_ros2_py/src/px4_ros2). +Not all classes have Python bindings yet — the [supported bindings are here](https://auterion.github.io/px4-ros2-interface-lib/python/index.html). You are welcome to add and contribute missing classes. ::: diff --git a/docs/ko/sensor/microstrain.md b/docs/ko/sensor/microstrain.md index 1cb0e1b8d5..0c5bf0061d 100644 --- a/docs/ko/sensor/microstrain.md +++ b/docs/ko/sensor/microstrain.md @@ -41,9 +41,7 @@ To use the MicroStrain driver: 1. Include the module in firmware in the [kconfig board configuration](../hardware/porting_guide_config.md#px4-board-configuration-kconfig) by setting the kconfig variables: `CONFIG_DRIVERS_INS_MICROSTRAIN` or `CONFIG_COMMON_INS`. 2. Configure the driver mode by setting [MS_MODE](../advanced_config/parameter_reference.md#MS_MODE) - - To use the MicroStrain sensor to provide raw IMU data to EKF2 - 1. Set [MS_MODE](../advanced_config/parameter_reference.md#MS_MODE) to 0 2. Update the [EKF2_MULTI_IMU](../advanced_config/parameter_reference.md#EKF2_MULTI_IMU) parameter to account for the added MicroStrain sensor. 3. Enable EKF2 by setting [EKF2_EN](../advanced_config/parameter_reference.md#EKF2_EN) to 1 @@ -78,22 +76,18 @@ To use the MicroStrain driver: ## MicroStrain Configuration 1. Rates: - - By default, accel and gyro data are published at 500 Hz, magnetometer at 50 Hz, and barometric pressure at 50 Hz. This can be changed by adjusting the following parameters: - - [MS_IMU_RATE_HZ](../advanced_config/parameter_reference.md#MS_IMU_RATE_HZ) - [MS_MAG_RATE_HZ](../advanced_config/parameter_reference.md#MS_MAG_RATE_HZ) - [MS_BARO_RATE_HZ](../advanced_config/parameter_reference.md#MS_BARO_RATE_HZ) - Global position, local position, attitude and odometry will be published at 250 Hz by default. This can be configured via: - - [MS_FILT_RATE_HZ](../advanced_config/parameter_reference.md#MS_FILT_RATE_HZ) - For the CV7-GNSS/INS, the GNSS receiver 1 and 2 will publish data at 5Hz by default. This can be changed using: - - [MS_GNSS_RATE_HZ](../advanced_config/parameter_reference.md#MS_GNSS_RATE_HZ) - The driver will automatically configure data outputs based on the specific sensor model and available data streams. @@ -105,7 +99,6 @@ To use the MicroStrain driver: - If supported, GNSS position and velocity aiding are always enabled. - Internal/external magnetometer and heading aiding, as well as optical flow aiding, are disabled by default. They can be enabled using the following parameters: - - [MS_INT_MAG_EN](../advanced_config/parameter_reference.md#MS_INT_MAG_EN) - [MS_INT_HEAD_EN](../advanced_config/parameter_reference.md#MS_INT_HEAD_EN) - [MS_EXT_HEAD_EN](../advanced_config/parameter_reference.md#MS_EXT_HEAD_EN) @@ -113,7 +106,6 @@ To use the MicroStrain driver: - [MS_OPT_FLOW_EN](../advanced_config/parameter_reference.md#MS_OPT_FLOW_EN) - The aiding frames for external sources can be configured using the following parameters: - - [MS_EHEAD_YAW](../advanced_config/parameter_reference.md#MS_EHEAD_YAW) - [MS_EMAG_ROLL](../advanced_config/parameter_reference.md#MS_EMAG_ROLL) - [MS_EMAG_PTCH](../advanced_config/parameter_reference.md#MS_EMAG_PTCH) @@ -124,7 +116,6 @@ To use the MicroStrain driver: - [SENS_FLOW_ROT](../advanced_config/parameter_reference.md#SENS_FLOW_ROT) - The uncertainty for optical flow and external magnetometer aiding must be specified using the following parameters: - - [MS_EMAG_UNCERT](../advanced_config/parameter_reference.md#MS_EMAG_UNCERT) - [MS_OFLW_UNCERT](../advanced_config/parameter_reference.md#MS_OFLW_UNCERT) @@ -137,25 +128,18 @@ To use the MicroStrain driver: ::: 3. Initial heading alignment: - - Initial heading alignment is set to kinematic by default. This can be changed by adjusting - - [MS_ALIGNMENT](../advanced_config/parameter_reference.md#MS_ALIGNMENT) 4. GNSS Aiding Source Control (GNSS/INS only) - - The Source of the GNSS aiding data can be configured using: - - [MS_GNSS_AID_SRC](../advanced_config/parameter_reference.md#MS_GNSS_AID_SRC) 5. Sensor to vehicle transform: - - If the sensor is mounted in an orientation different from the vehicle frame. A sensor to vehicle transform can be enabled using - - [MS_SVT_EN](../advanced_config/parameter_reference.md#MS_SVT_EN) - The transform is defined using the following parameters - - [MS_SENSOR_ROLL](../advanced_config/parameter_reference.md#MS_SENSOR_ROLL) - [MS_SENSOR_PTCH](../advanced_config/parameter_reference.md#MS_SENSOR_PTCH) - [MS_SENSOR_YAW](../advanced_config/parameter_reference.md#MS_SENSOR_YAW) @@ -163,7 +147,6 @@ To use the MicroStrain driver: 6. IMU ranges: - The accelerometer and gyroscope ranges on the device are configurable using: - - [MS_ACCEL_RANGE](../advanced_config/parameter_reference.md#MS_ACCEL_RANGE) - [MS_GYRO_RANGE](../advanced_config/parameter_reference.md#MS_GYRO_RANGE) @@ -175,15 +158,12 @@ To use the MicroStrain driver: ::: 7. GNSS Lever arm offsets: - - The lever arm offset for the external GNSS receiver can be configured using: - - [MS_GNSS_OFF1_X](../advanced_config/parameter_reference.md#MS_GNSS_OFF1_X) - [MS_GNSS_OFF1_Y](../advanced_config/parameter_reference.md#MS_GNSS_OFF1_Y) - [MS_GNSS_OFF1_Z](../advanced_config/parameter_reference.md#MS_GNSS_OFF1_Z) - For dual-antenna configurations, the second GNSS receiver’s offset is configured using: - - [MS_GNSS_OFF2_X](../advanced_config/parameter_reference.md#MS_GNSS_OFF2_X) - [MS_GNSS_OFF2_Y](../advanced_config/parameter_reference.md#MS_GNSS_OFF2_Y) - [MS_GNSS_OFF2_Z](../advanced_config/parameter_reference.md#MS_GNSS_OFF2_Z) diff --git a/docs/ko/sensor/optical_flow.md b/docs/ko/sensor/optical_flow.md index da70368eea..779386fe14 100644 --- a/docs/ko/sensor/optical_flow.md +++ b/docs/ko/sensor/optical_flow.md @@ -55,7 +55,7 @@ Reducing the optical flow scale factor can improve the situation. It has a PAW3902 optical flow sensor, Broadcom AFBR-S50LV85D 30 meter distance sensor, and Invensense ICM-42688-P 6-Axis IMU. [ARK Flow MR](../dronecan/ark_flow_mr.md) is a [DroneCAN](../dronecan/index.md) optical flow sensor, [distance sensor](../sensor/rangefinders.md), and IMU, for mid-range applications. -It has a PixArt PAA3905 optical flow sensor, Broadcom AFBR-S50LX85D 50 meter distance sensor, and Invensense IIM-42653 6-Axis IMU. +It has a PixArt PAA3905 optical flow sensor, Broadcom AFBR-S50LX85D 50 meter distance sensor, and Invensense IIM-42653 6-Axis IMU. ### Holybro H-Flow diff --git a/docs/ko/sensor/sbgecom.md b/docs/ko/sensor/sbgecom.md index 8c721b5ecb..c9f0777c00 100644 --- a/docs/ko/sensor/sbgecom.md +++ b/docs/ko/sensor/sbgecom.md @@ -82,9 +82,7 @@ To use the sbgECom driver: In this case, MAVLink messages will be updated with the newly selected sensor. If you don't want to have this fallback mechanism, you must disable unwanted sensors. - -::: - 4. If using the sbgECom as an INS, disable EKF2 using [EKF2_EN](../advanced_config/parameter_reference.md#EKF2_EN). + ::: 4. If using the sbgECom as an INS, disable EKF2 using [EKF2_EN](../advanced_config/parameter_reference.md#EKF2_EN). 6. Restart PX4. diff --git a/docs/ko/sensor/sfxx_lidar.md b/docs/ko/sensor/sfxx_lidar.md index ee0cb5e9d6..30daec9f04 100644 --- a/docs/ko/sensor/sfxx_lidar.md +++ b/docs/ko/sensor/sfxx_lidar.md @@ -1,4 +1,4 @@ -# LightWare Lidar (SF1X/SF02/LW20/SF45) +# LightWare Lidar (SF1X/SF02/LW20/SF45/GRF250/GRF500) LightWare는 UAV에 장착에 적합한 경량의 범용 레이저 고도계( "라이다")를 개발합니다. 지형 추적, 정밀 호버링 (예 : 사진 촬영), 규제 높이 제한 경고, 충돌 방지 감지 등에 사용됩니다. diff --git a/docs/ko/sensor/vectornav.md b/docs/ko/sensor/vectornav.md index dc8941aebc..e38e66dca5 100644 --- a/docs/ko/sensor/vectornav.md +++ b/docs/ko/sensor/vectornav.md @@ -59,7 +59,6 @@ To use the VectorNav driver: 4. Allow the VectorNav driver to initialize by restarting PX4. 5. Configure driver as either an external INS or to provide raw data: - - If using the VectorNav as an external INS, set [VN_MODE](../advanced_config/parameter_reference.md#VN_MODE) to `INS`. This disables EKF2. - If using the VectorNav as external inertial sensors: diff --git a/docs/ko/sensor_bus/i2c_development.md b/docs/ko/sensor_bus/i2c_development.md index 3520633706..68b33426ea 100644 --- a/docs/ko/sensor_bus/i2c_development.md +++ b/docs/ko/sensor_bus/i2c_development.md @@ -23,7 +23,7 @@ The bus is not fast enough even with a single device attached to allow vibration Drivers should `#include ` and then provide an implementation of the abstract base class `I2C` defined in **I2C.hpp** for the target hardware (i.e. for NuttX [here](https://github.com/PX4/PX4-Autopilot/blob/main/src/lib/drivers/device/nuttx/I2C.hpp)). -A small number of drivers will also need to include headers for their type of device (**drv_\*.h**) in [/src/drivers/](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers) - e.g. [drv_led.h](https://github.com/PX4/PX4-Autopilot/blob/main/src/drivers/drv_led.h). +A small number of drivers will also need to include headers for their type of device (**drv\_\*.h**) in [/src/drivers/](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers) - e.g. [drv_led.h](https://github.com/PX4/PX4-Autopilot/blob/main/src/drivers/drv_led.h). To include a driver in firmware you must add the driver to the board-specific cmake file that corresponds to the target you want to build for. You can do this for a single driver: diff --git a/docs/ko/sim_gazebo_gz/index.md b/docs/ko/sim_gazebo_gz/index.md index d93011de4c..e46d72b927 100644 --- a/docs/ko/sim_gazebo_gz/index.md +++ b/docs/ko/sim_gazebo_gz/index.md @@ -254,7 +254,6 @@ where `ARGS` is a list of environment variables including: - `PX4_GZ_MODEL_NAME`: Sets the name of an _existing_ model in the gazebo simulation. If provided, the startup script tries to bind a new PX4 instance to the Gazebo resource matching exactly that name. - - The setting is mutually exclusive with `PX4_SIM_MODEL`. - `PX4_SIM_MODEL`: @@ -271,7 +270,6 @@ where `ARGS` is a list of environment variables including: - `PX4_GZ_MODEL_POSE`: Sets the spawning position and orientation of the model when `PX4_SIM_MODEL` is adopted. If provided, the startup script spawns the model at a pose following the syntax `"x,y,z,roll,pitch,yaw"`, where the positions are given in metres and the angles are in radians. - - If omitted, the zero pose `[0,0,0,0,0,0]` is used. - If less then 6 values are provided, the missing ones are fixed to zero. - This can only be used with `PX4_SIM_MODEL` (not `PX4_GZ_MODEL_NAME`). @@ -279,7 +277,6 @@ where `ARGS` is a list of environment variables including: - `PX4_GZ_WORLD`: Sets the Gazebo world file for a new simulation. If it is not given, then [default](https://github.com/PX4/PX4-gazebo-models/blob/main/worlds/default.sdf) is used. - - This variable is ignored if an existing simulation is already running. - This value should be [specified for the selected airframe](#adding-new-worlds-and-models) but may be overridden using this argument. - If the [moving platform world](../sim_gazebo_gz/worlds.md#moving-platform) is selected using `PX4_GZ_WORLD=moving_platform` (or any world using the moving platform plugin), the platform can be configured using environment variables: @@ -288,7 +285,6 @@ where `ARGS` is a list of environment variables including: - `PX4_SIMULATOR=GZ`: Sets the simulator, which for Gazebo must be `gz`. - - This value should be [set for the selected airframe](#adding-new-worlds-and-models), in which case it does not need to be set as an argument. - `PX4_GZ_STANDALONE`: @@ -390,7 +386,6 @@ To add a new world: 1. Add your world to the list of worlds found in the [`CMakeLists.txt` here](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/simulation/gz_bridge/CMakeLists.txt). This is required in order to allow `CMake` to generate correct targets. - - If you plan to use "normal" mode, add your world sdf to `Tools/simulation/gz/worlds/`. - If you plan to use _standalone_ mode, add your world SDF to `~/.simulation-gazebo/worlds/` diff --git a/docs/ko/simulation/community_supported_simulators.md b/docs/ko/simulation/community_supported_simulators.md index 707e9db855..3cd3f56150 100644 --- a/docs/ko/simulation/community_supported_simulators.md +++ b/docs/ko/simulation/community_supported_simulators.md @@ -12,10 +12,10 @@ See [Toolchain Installation](../dev_setup/dev_env.md) for information about the The tools have variable levels of support from their communities (some are well supported and others are not). Questions about these tools should be raised on the [discussion forums](../contribute/support.md#forums-and-chat) -| 시뮬레이터 | 설명 | -| ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Simulation-In-Hardware](../sim_sih/index.md) (SIH) |

A simulator implemented in C++ as a PX4 module directly in the Firmware [code](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/simulation/simulator_sih). It can be ran in SITL directly on the computer or as an alternative to HITL offering a hard real-time simulation directly on the hardware autopilot.

Supported Vehicles: Quad, Hexa, Plane, Tailsitter, Standard VTOL, Ackermann Rover

| -| [FlightGear](../sim_flightgear/index.md) |

A simulator that provides physically and visually realistic simulations. In particular it can simulate many weather conditions, including thunderstorms, snow, rain and hail, and can also simulate thermals and different types of atmospheric flows. [Multi-vehicle simulation](../sim_flightgear/multi_vehicle.md) is also supported.

Supported Vehicles: Plane, Autogyro, Rover

| -| [JMAVSim](../sim_jmavsim/index.md) |

A simple multirotor/quad simulator. This was previously part of the PX4 development toolchain but was removed in favour of [Gazebo](../sim_gazebo_gz/index.md).

Supported Vehicles: Quad

| -| [JSBSim](../sim_jsbsim/index.md) |

A simulator that provides advanced flight dynamics models. This can be used to model realistic flight dynamics based on wind tunnel data.

Supported Vehicles: Plane, Quad, Hex

| -| [AirSim](../sim_airsim/index.md) |

A cross platform simulator that provides physically and visually realistic simulations. This simulator is resource intensive, and requires a significantly more powerful computer than the other simulators described here.

Supported Vehicles: Iris (MultiRotor model and a configuration for PX4 QuadRotor in the X configuration).

| +| 시뮬레이터 | 설명 | +| ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [Simulation-In-Hardware](../sim_sih/index.md) (SIH) |

A simulator implemented in C++ as a PX4 module directly in the Firmware [code](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/simulation/simulator_sih). It can be ran in SITL directly on the computer or as an alternative to HITL offering a hard real-time simulation directly on the hardware autopilot.

Supported Vehicles: Quad, Hexa, Plane, Tailsitter, Standard VTOL, Ackermann Rover

| +| [FlightGear](../sim_flightgear/index.md) |

A simulator that provides physically and visually realistic simulations. In particular it can simulate many weather conditions, including thunderstorms, snow, rain and hail, and can also simulate thermals and different types of atmospheric flows. [Multi-vehicle simulation](../sim_flightgear/multi_vehicle.md) is also supported.

Supported Vehicles: Plane, Autogyro, Rover

| +| [JMAVSim](../sim_jmavsim/index.md) |

A simple multirotor/quad simulator. This was previously part of the PX4 development toolchain but was removed in favour of [Gazebo](../sim_gazebo_gz/index.md).

Supported Vehicles: Quad

| +| [JSBSim](../sim_jsbsim/index.md) |

A simulator that provides advanced flight dynamics models. This can be used to model realistic flight dynamics based on wind tunnel data.

Supported Vehicles: Plane, Quad, Hex

| +| [AirSim](../sim_airsim/index.md) |

A cross platform simulator that provides physically and visually realistic simulations. This simulator is resource intensive, and requires a significantly more powerful computer than the other simulators described here.

Supported Vehicles: Iris (MultiRotor model and a configuration for PX4 QuadRotor in the X configuration).

| diff --git a/docs/ko/smart_batteries/rotoye_batmon.md b/docs/ko/smart_batteries/rotoye_batmon.md index 896ef46e27..b4ba96fd30 100644 --- a/docs/ko/smart_batteries/rotoye_batmon.md +++ b/docs/ko/smart_batteries/rotoye_batmon.md @@ -47,7 +47,7 @@ In _QGroundControl_: 3. Start the [batt_smbus driver](../modules/modules_driver.md) in the console. 예를 들어 동일한 버스에서 두 개의 BatMon을 실행하려면: ```sh - batt_smbus start -X -b 1 -a 11 # External bus 1, address 0x0b + batt_smbus start -X -b 1 -a 11 # External bus 1, address 0x0b batt_smbus start -X -b 1 -a 12 # External bus 1, address 0x0c ``` diff --git a/docs/ko/test_and_ci/continous_integration.md b/docs/ko/test_and_ci/continous_integration.md index 92a888659c..e2a8d03076 100644 --- a/docs/ko/test_and_ci/continous_integration.md +++ b/docs/ko/test_and_ci/continous_integration.md @@ -1,3 +1,194 @@ # PX4 지속 통합 -PX4 빌드 및 테스트는 GitHub 작업과 Jenkins 서버를 사용합니다. +PX4 uses GitHub Actions for continuous integration, with different workflows handling code builds, testing, and documentation. + +## Documentation CI + +The documentation pipeline handles building, deploying, and translating the PX4 User Guide. +All documentation CI is consolidated into a single orchestrator workflow organized in tiers. + +### Docs Orchestrator + +**Workflow file:** [`docs-orchestrator.yml`](https://github.com/PX4/PX4-Autopilot/blob/main/.github/workflows/docs-orchestrator.yml) + +This is the main documentation workflow. It runs on pull requests, pushes to `main` and `release/**` branches, and manual `workflow_dispatch` triggers, performing different jobs depending on the trigger event. +Jobs are organized in tiers, where each tier depends on the previous one completing successfully. + +#### Tier Structure + +| Tier | Job | PR | Push / Dispatch | 설명 | +| ---- | -------------- | ----------------------------------------------- | --------------------------------- | -------------------------------------------------------------------------------- | +| T1 | Detect Changes | Yes | — | Checks if source code files changed (triggers metadata regen) | +| T2 | PR Metadata | Yes (conditional) | — | Builds PX4 SITL and regenerates all auto-generated docs | +| T2 | Metadata Sync | — | Yes | Builds PX4 SITL, regenerates metadata, auto-commits | +| T2 | Link Check | Yes | — | Checks for broken links in changed files, posts PR comment | +| T3 | Build Site | Yes (if docs/source changed) | Yes (after T2) | Builds the VitePress documentation site | +| T4 | Deploy | — | Yes | Deploys to AWS S3 | + +#### Pull Request Flow + +When a PR modifies files in `docs/**` or the orchestrator workflow file itself, the workflow validates the changes: + +```txt +PR Event + │ + ▼ +┌─────────────────────────────────────┐ +│ T1: Detect Changes │ +│ • Checks if src/msg/ROMFS changed │ +└─────────────────┬───────────────────┘ + │ + ┌───────┴───────┐ + ▼ ▼ +┌──────────────────┐ ┌─────────────────────────┐ +│ T2: PR Metadata │ │ T2: Link Check (~30s) │ +│ (conditional) │ │ • Detects changed .md │ +│ • Builds SITL │ │ • Runs filtered check │ +│ • Generates │ │ • Posts PR comment │ +│ metadata │ │ • Runs full check │ +│ • Builds │ └────────────┬────────────┘ +│ failsafe web │ │ +└────────┬─────────┘ │ + └───────────┬────────────┘ + ▼ +┌─────────────────────────────────────┐ +│ T3: Build Site (~7-10 min) │ +│ (skipped if only workflow YAML │ +│ changed — no docs/source changes) │ +│ • Builds VitePress site │ +│ • Verifies no build errors │ +└─────────────────┬───────────────────┘ + │ + ▼ + DONE +``` + +| Job | Duration | 설명 | +| -------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **T1: Detect Changes** | ~10s | Determines if metadata regeneration is needed | +| **T2: PR Metadata** | ~10-15m | Rebuilds PX4 SITL and regenerates all metadata (only if source files changed) | +| **T2: Link Check** | ~30s | Checks for broken links in changed markdown files and posts a sticky comment to the PR (skipped on fork PRs) | +| **T3: Build Site** | ~7-10m | Builds the VitePress site to verify there are no build errors. Skipped when only the workflow YAML changed (no docs or source changes). | + +#### Push / Dispatch Flow (main/release branches) + +When changes are pushed to `main` or `release/**` branches (or a `workflow_dispatch` is triggered), the workflow regenerates metadata, builds, and deploys. +Only `main` and `release/*` branches are accepted for deploy — other branches will fail with a clear error. + +```txt +Push / Dispatch Event + │ + ▼ +┌─────────────────────────────────────┐ +│ T2: Metadata Sync (~10-15 min) │ +│ • Builds px4_sitl_default │ +│ • Generates parameter/airframe/ │ +│ module documentation │ +│ • Builds failsafe web simulator │ +│ • Formats with Prettier │ +│ • Auto-commits if changes detected │ +│ (with [skip ci]) │ +└─────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────┐ +│ T3: Build Site (~7-10 min) │ +│ • Builds VitePress site │ +│ • Uploads build artifact │ +└─────────────────┬───────────────────┘ + │ + ▼ +┌─────────────────────────────────────┐ +│ T4: Deploy (~3 min) │ +│ • Syncs to AWS S3 │ +│ • HTML: 60s cache │ +│ • Assets: 24h immutable cache │ +└─────────────────────────────────────┘ +``` + +| Job | Duration | 설명 | +| ------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------ | +| **T2: Metadata Sync** | ~10-15m | Rebuilds PX4 SITL, regenerates all metadata, formats with Prettier, auto-commits with `[skip ci]` | +| **T3: Build Site** | ~7-10m | Builds the VitePress documentation site | +| **T4: Deploy** | ~3m | Syncs built site to AWS S3 (HTML: 60s cache, assets: 24h cache) | + +Crowdin upload is handled by a separate workflow (see below). + +#### Generated Metadata + +The metadata regeneration job creates the following auto-generated documentation: + +| 형식 | 출력 | 설명 | +| ------------------ | ------------------------------------------------ | --------------------------------------------------------------- | +| 매개변수 | `docs/en/advanced_config/parameter_reference.md` | Complete parameter reference | +| 기체 | `docs/en/airframes/airframe_reference.md` | Airframe configurations | +| 모듈 | `docs/en/modules/*.md` | Module documentation | +| Messages | `docs/en/msg_docs/*.md` | uORB message documentation | +| uORB Graphs | `docs/public/middleware/*.json` | Topic dependency graphs | +| Failsafe Simulator | `docs/public/config/failsafe/*` | Interactive failsafe simulator (WebAssembly) | + +:::warning +Do not manually edit the auto-generated files listed above. They are overwritten on every push to main. +::: + +#### Path Triggers + +The workflow triggers on different paths depending on the event: + +**Push** (main/release branches): + +| Path | Reason | +| ------------------------ | ------------------------------------- | +| `docs/**` | Documentation source files | +| `src/**` | Source code changes affect metadata | +| `msg/**` | Message definitions affect metadata | +| `ROMFS/**` | ROMFS files affect metadata | +| `Tools/module_config/**` | Module configuration affects metadata | + +**Pull Request:** + +| Path | Reason | +| ----------------------------------------- | ------------------------------ | +| `docs/**` | Documentation source files | +| `.github/workflows/docs-orchestrator.yml` | Changes to the workflow itself | + +Source-only changes on PRs are detected at runtime by the T1: Detect Changes job using [dorny/paths-filter](https://github.com/dorny/paths-filter), which conditionally triggers the T2: PR Metadata job. + +### Crowdin Download Workflow + +**Workflow file:** [`docs_crowdin_download.yml`](https://github.com/PX4/PX4-Autopilot/blob/main/.github/workflows/docs_crowdin_download.yml) + +This scheduled workflow downloads completed translations from Crowdin and creates pull requests. + +| 설정 | Value | +| -------------------- | ---------------------------------------------------------------------------------------------------------------- | +| **Schedule** | Every Sunday at 00:00 UTC | +| **Target Languages** | Korean (ko), Ukrainian (uk), Chinese Simplified (zh-CN) | + +**Process:** + +1. Downloads translations for each target language from Crowdin +2. Creates a separate PR for each language with new translations +3. PRs are labeled "Documentation" and assigned for review + +### Caching Strategy + +The workflows use caching to speed up builds: + +| Cache | Size | Purpose | +| --------------------------------- | --------------------- | -------------------------------------------------- | +| ccache | 1GB | C++ compilation cache for SITL builds | +| node_modules | ~26MB | Node.js dependencies for VitePress | + +### Infrastructure + +Jobs run on [runs-on](https://runs-on.com/) self-hosted runners with S3 cache: + +| Job | Runner | +| ---------------------------------- | ------------------------------------------------- | +| T1: Detect Changes | ubuntu-latest | +| T2: PR Metadata | 4 CPU (with px4-dev container) | +| T2: Metadata Sync | 4 CPU (with px4-dev container) | +| T2: Link Check | ubuntu-latest | +| T3: Build Site | 4 CPU | +| T4: Deploy | ubuntu-latest | diff --git a/docs/ko/test_and_ci/docker.md b/docs/ko/test_and_ci/docker.md index 8d650a97a0..453366512b 100644 --- a/docs/ko/test_and_ci/docker.md +++ b/docs/ko/test_and_ci/docker.md @@ -1,12 +1,11 @@ # PX4 도커 컨테이너 -Docker containers are provided for the complete [PX4 development toolchain](../dev_setup/dev_env.md#supported-targets) including NuttX and Linux based hardware, [Gazebo Classic](../sim_gazebo_classic/index.md) simulation, and [ROS](../simulation/ros_interface.md). +Docker containers are provided for the complete [PX4 development toolchain](../dev_setup/dev_env.md#supported-targets) including NuttX and Linux based hardware, [Gazebo](../sim_gazebo_gz/index.md) simulation, and [ROS 2](../ros2/user_guide.md). This topic shows how to use the [available docker containers](#px4_containers) to access the build environment in a local Linux computer. :::info -Dockerfiles and README can be found on [Github here](https://github.com/PX4/PX4-containers/tree/master?tab=readme-ov-file#container-hierarchy). -They are built automatically on [Docker Hub](https://hub.docker.com/u/px4io/). +The recommended `px4-dev` container is built from the [Dockerfile in the PX4-Autopilot source tree](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/setup/Dockerfile) by the [Container build workflow](https://github.com/PX4/PX4-Autopilot/actions/workflows/dev_container.yml). ::: ## 준비 사항 @@ -35,33 +34,36 @@ sudo usermod -aG docker $USER # Log in/out again before using docker! ``` -## Container Hierarchy {#px4_containers} +## px4-dev Container (Recommended) {#px4_containers} -The available containers are on [GitHub here](https://github.com/PX4/PX4-containers/tree/master?tab=readme-ov-file#container-hierarchy). +The **`px4-dev`** container is the recommended container for building PX4 firmware. +It is a single, multi-architecture container (linux/amd64 and linux/arm64) based on Ubuntu 24.04 that includes everything needed to build PX4 for NuttX hardware targets. -이를 통하여 다양한 빌드 대상 및 구성을 테스트할 수 있습니다(포함된 도구는 이름에서 유추할 수 있음). -The containers are hierarchical, such that containers have the functionality of their parents. -For example, the partial hierarchy below shows that the docker container with NuttX build tools (`px4-dev-nuttx-focal`) does not include ROS 2, while the simulation containers do: +It is published to both registries simultaneously: -```plain -- px4io/px4-dev-base-focal - - px4io/px4-dev-nuttx-focal - - px4io/px4-dev-simulation-focal - - px4io/px4-dev-ros-noetic - - px4io/px4-dev-ros2-foxy - - px4io/px4-dev-ros2-rolling -- px4io/px4-dev-base-jammy - - px4io/px4-dev-nuttx-jammy -``` +- **GitHub Container Registry:** [ghcr.io/px4/px4-dev](https://github.com/PX4/PX4-Autopilot/pkgs/container/px4-dev) +- **Docker Hub:** [px4io/px4-dev](https://hub.docker.com/r/px4io/px4-dev) -The most recent version can be accessed using the `latest` tag: `px4io/px4-dev-nuttx-focal:latest` -(available tags are listed for each container on _hub.docker.com_. -For example, the `px4io/px4-dev-nuttx-focal` tags can be found on [hub.docker.com here](https://hub.docker.com/r/px4io/px4-dev-nuttx-focal/tags?page=1&ordering=last_updated)). +The container includes: + +- Ubuntu 24.04 base +- ARM cross-compiler (`gcc-arm-none-eabi`) and Xtensa compiler (for ESP32 targets) +- Build tools: `cmake`, `ninja`, `ccache`, `make` +- Python 3 with PX4 build dependencies +- NuttX toolchain libraries (`libnewlib-arm-none-eabi`, etc.) + +The container is built from the [Dockerfile](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/setup/Dockerfile) in the PX4 source tree using the [Container build workflow](https://github.com/PX4/PX4-Autopilot/actions/workflows/dev_container.yml). +Images are tagged with the PX4 version (e.g. `px4io/px4-dev:v1.16.0`). :::tip -Typically you should use a recent container, but not necessarily the `latest` (as this changes too often). +A `px4-sim` container with simulation tools (Gazebo Harmonic) is planned to complement `px4-dev` for simulation workflows. ::: +### Legacy Containers + +The older per-distro containers from [PX4/PX4-containers](https://github.com/PX4/PX4-containers) (e.g. `px4-dev-nuttx-jammy`, `px4-dev-ros2-humble`, etc.) are no longer recommended. +They will be replaced by `px4-dev` (for builds) and the upcoming `px4-sim` (for simulation). + ## 도커 컨테이너 활용 도커 컨테이너에서 실행되는 툴체인을 사용하여 호스트 컴퓨터에서 PX4 빌드 방법을 설명합니다. @@ -121,7 +123,7 @@ docker run -it --privileged \ - ``: The host computer directory to be mapped to `` in the container. This should normally be the **PX4-Autopilot** directory. - ``: The location of the shared (source) directory when inside the container. - ``: A name for the docker container being created. 나중에 컨테이너를 다시 참조해야 하는 경우에 사용할 수 있습니다. -- `:`: The container with version tag to start - e.g.: `px4io/px4-dev-ros:2017-10-23`. +- `:`: The container with version tag to start - e.g.: `px4io/px4-dev:v1.16.0`. - ``: The command to invoke on the new container. 예: `bash` is used to open a bash shell in the container. The concrete example below shows how to open a bash shell and share the directory **~/src/PX4-Autopilot** on the host computer. @@ -137,7 +139,7 @@ docker run -it --privileged \ -v /tmp/.X11-unix:/tmp/.X11-unix:ro \ -e DISPLAY=:0 \ --network host \ ---name=px4-ros px4io/px4-dev-ros2-foxy:2022-07-31 bash +--name=px4-dev px4io/px4-dev:v1.16.0 bash ``` :::info @@ -155,7 +157,7 @@ On other hosts you might iterate the value of `0` in `-e DISPLAY=:0` until the " ```sh cd src/PX4-Autopilot #This is -make px4_sitl_default gazebo-classic +make px4_sitl gz_x500 ``` ### 컨테이너 재진입 @@ -219,7 +221,7 @@ The example above uses the line `--env=LOCAL_USER_ID="$(id -u)"` to create a use #### 그래픽 드라이버 문제 -It's possible that running Gazebo Classic will result in a similar error message like the following: +It's possible that running Gazebo will result in a similar error message like the following: ```sh libGL error: failed to load driver: swrast @@ -239,7 +241,7 @@ Nvidia 드라이버의 경우 다음 명령어를 사용합니다(그렇지 않 다음 설정은 테스트 되었습니다. -- VMWare Fusion 및 Ubuntu 14.04가 포함된 OS X(Parallels에서 GUI를 지원하는 Docker 컨테이너로 인해 X-Server가 충돌함). +- OS X with VMWare Fusion and Ubuntu 22.04 (Docker container with GUI support on Parallels make the X-Server crash). **Memory** diff --git a/docs/ko/uart/user_configurable_serial_driver.md b/docs/ko/uart/user_configurable_serial_driver.md index 3a5b9b65cf..85fa4b6b4d 100644 --- a/docs/ko/uart/user_configurable_serial_driver.md +++ b/docs/ko/uart/user_configurable_serial_driver.md @@ -25,7 +25,6 @@ 드라이버를 설정 가능하게 하려면: 1. Create a YAML module configuration file: - - Add a new file in the driver's source directory named **module.yaml** - Insert the following text and adjust as needed: From 2e651117e809eec5611b0bd9b35370ff8a1ebcd2 Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Wed, 18 Feb 2026 05:52:51 +0000 Subject: [PATCH 83/83] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/middleware/dds_topics.md | 366 +++++++++++++++---------------- 1 file changed, 183 insertions(+), 183 deletions(-) diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index 725fe7579e..e97b458b4d 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,199 +94,199 @@ They are not build into the module, and hence are neither published or subscribe ::: details See messages -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [EventV0](../msg_docs/EventV0.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [DebugValue](../msg_docs/DebugValue.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) -- [PwmInput](../msg_docs/PwmInput.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [InputRc](../msg_docs/InputRc.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) - [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [SensorBaro](../msg_docs/SensorBaro.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [PpsCapture](../msg_docs/PpsCapture.md) -- [Cpuload](../msg_docs/Cpuload.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [LedControl](../msg_docs/LedControl.md) - [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [NeuralControl](../msg_docs/NeuralControl.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) - [EstimatorStates](../msg_docs/EstimatorStates.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [InputRc](../msg_docs/InputRc.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [Rpm](../msg_docs/Rpm.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) - [EstimatorBias](../msg_docs/EstimatorBias.md) - [DebugArray](../msg_docs/DebugArray.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [Rpm](../msg_docs/Rpm.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) -- [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) - [Mission](../msg_docs/Mission.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [Ping](../msg_docs/Ping.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) - [LogMessage](../msg_docs/LogMessage.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [Event](../msg_docs/Event.md) -- [LedControl](../msg_docs/LedControl.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) - [FigureEightStatus](../msg_docs/FigureEightStatus.md) - [SensorsStatus](../msg_docs/SensorsStatus.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [EscReport](../msg_docs/EscReport.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [GpioConfig](../msg_docs/GpioConfig.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [Gripper](../msg_docs/Gripper.md) -- [Vtx](../msg_docs/Vtx.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) - [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [SystemPower](../msg_docs/SystemPower.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [UlogStream](../msg_docs/UlogStream.md) - [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [Ping](../msg_docs/Ping.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [EscReport](../msg_docs/EscReport.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) - [HeaterStatus](../msg_docs/HeaterStatus.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [IrlockReport](../msg_docs/IrlockReport.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [Vtx](../msg_docs/Vtx.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [Gripper](../msg_docs/Gripper.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [Event](../msg_docs/Event.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [EventV0](../msg_docs/EventV0.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [DebugVect](../msg_docs/DebugVect.md) :::