From 36b5e1e1bb19b9aac20ce98d0d5710e692b5fa06 Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Wed, 11 Feb 2026 22:43:01 +0000 Subject: [PATCH] docs: auto-sync metadata [skip ci] Co-Authored-By: PX4 BuildBot --- docs/en/advanced/px4_metadata.md | 2 + ..._flight_controller_orientation_leveling.md | 1 - .../bootloader_update_v6xrt.md | 1 - docs/en/advanced_config/esc_calibration.md | 1 - .../en/advanced_config/parameter_reference.md | 1008 ++++++++++- .../ark_jetson_pab_carrier.md | 3 - .../holybro_pixhawk_rpi_cm4_baseboard.md | 3 - docs/en/companion_computer/pixhawk_rpi.md | 4 +- .../computer_vision/collision_prevention.md | 3 +- docs/en/concept/flight_tasks.md | 2 - docs/en/concept/sd_card_layout.md | 2 +- docs/en/config/_autotune.md | 4 - docs/en/config/flight_mode.md | 50 +- docs/en/config/level_horizon_calibration.md | 1 - docs/en/config/safety.md | 14 +- docs/en/config/safety_intro.md | 2 +- docs/en/config_heli/index.md | 6 - docs/en/config_mc/index.md | 6 +- .../pid_tuning_guide_multicopter_basic.md | 3 - docs/en/config_rover/rate_tuning.md | 3 - docs/en/config_vtol/vtol_ice_shedding.md | 9 +- .../vtol_without_airspeed_sensor.md | 2 +- docs/en/dev_airframes/adding_a_new_frame.md | 1 - docs/en/dev_log/logging.md | 10 +- docs/en/dev_setup/building_px4.md | 4 +- docs/en/dev_setup/config_initial.md | 1 - docs/en/dev_setup/dev_env.md | 14 +- docs/en/dev_setup/dev_env_mac.md | 1 - docs/en/dev_setup/vscode.md | 3 - docs/en/dronecan/ark_cannode.md | 8 +- docs/en/dronecan/ark_flow.md | 9 +- docs/en/dronecan/ark_flow_mr.md | 14 +- docs/en/dronecan/ark_gps.md | 8 +- docs/en/dronecan/ark_rtk_gps.md | 8 +- docs/en/dronecan/holybro_h_rtk_zed_f9p_gps.md | 1 - docs/en/esc/ark_4in1_esc.md | 2 - docs/en/flight_controller/airlink.md | 12 +- docs/en/flight_controller/cuav_x25-evo.md | 24 +- .../flight_controller/gearup_airbrainh743.md | 20 +- docs/en/flight_controller/kakuteh7-wing.md | 22 +- docs/en/flight_controller/pixhawk_series.md | 30 +- docs/en/flight_controller/svehicle_e2.md | 1 + docs/en/flight_modes_fw/index.md | 3 +- docs/en/flight_modes_fw/land.md | 13 +- docs/en/flight_modes_fw/mission.md | 7 +- docs/en/flight_modes_mc/altitude.md | 10 +- docs/en/flight_modes_mc/follow_me.md | 2 - docs/en/flight_modes_mc/mission.md | 5 +- docs/en/flight_modes_vtol/return.md | 1 - docs/en/flight_stack/controller_diagrams.md | 77 +- docs/en/flying/first_flight_guidelines.md | 10 +- docs/en/flying/missions.md | 4 +- docs/en/flying/package_delivery_mission.md | 2 - docs/en/flying/plan_safety_points.md | 12 +- docs/en/flying/terrain_following_holding.md | 21 +- docs/en/frames_plane/index.md | 1 - docs/en/frames_rover/index.md | 9 +- docs/en/frames_vtol/standardvtol.md | 4 +- docs/en/frames_vtol/tailsitter.md | 1 - docs/en/frames_vtol/tiltrotor.md | 1 - ..._tiltrotor_eflite_convergence_pixfalcon.md | 13 +- .../flight_controller_selection.md | 1 - docs/en/getting_started/led_meanings.md | 77 +- docs/en/getting_started/tunes.md | 35 +- docs/en/getting_started/vehicle_status.md | 6 +- docs/en/gps_compass/rtk_gps.md | 79 +- docs/en/log/flight_review.md | 69 +- docs/en/log/plotjuggler_log_analysis.md | 7 +- docs/en/middleware/dds_topics.md | 356 ++-- docs/en/middleware/drivers.md | 16 +- docs/en/middleware/index.md | 2 +- docs/en/middleware/uorb_graph.md | 5 +- docs/en/modules/module_template.md | 14 +- docs/en/modules/modules_autotune.md | 6 - docs/en/modules/modules_command.md | 50 +- docs/en/modules/modules_driver.md | 140 +- .../modules/modules_driver_airspeed_sensor.md | 2 +- docs/en/modules/modules_driver_camera.md | 1 - .../en/modules/modules_driver_optical_flow.md | 4 +- docs/en/modules/modules_estimator.md | 16 +- docs/en/modules/modules_main.md | 3 +- docs/en/modules/modules_simulation.md | 7 +- docs/en/modules/modules_template.md | 38 +- docs/en/msg_docs/ActionRequest.md | 51 +- docs/en/msg_docs/ActuatorArmed.md | 28 +- docs/en/msg_docs/ActuatorControlsStatus.md | 20 +- docs/en/msg_docs/ActuatorMotors.md | 34 +- docs/en/msg_docs/ActuatorOutputs.md | 28 +- docs/en/msg_docs/ActuatorServos.md | 32 +- docs/en/msg_docs/ActuatorServosTrim.md | 30 +- docs/en/msg_docs/ActuatorTest.md | 35 +- docs/en/msg_docs/AdcReport.md | 26 +- docs/en/msg_docs/Airspeed.md | 27 +- docs/en/msg_docs/AirspeedValidated.md | 51 +- docs/en/msg_docs/AirspeedValidatedV0.md | 35 +- docs/en/msg_docs/AirspeedWind.md | 45 +- docs/en/msg_docs/ArmingCheckReply.md | 58 +- docs/en/msg_docs/ArmingCheckReplyV0.md | 48 +- docs/en/msg_docs/ArmingCheckRequest.md | 31 +- docs/en/msg_docs/ArmingCheckRequestV0.md | 28 +- .../msg_docs/AutotuneAttitudeControlStatus.md | 61 +- docs/en/msg_docs/BatteryInfo.md | 25 +- docs/en/msg_docs/BatteryStatus.md | 111 +- docs/en/msg_docs/BatteryStatusV0.md | 112 +- docs/en/msg_docs/ButtonEvent.md | 26 +- docs/en/msg_docs/CameraCapture.md | 27 +- docs/en/msg_docs/CameraStatus.md | 21 +- docs/en/msg_docs/CameraTrigger.md | 28 +- docs/en/msg_docs/CanInterfaceStatus.md | 23 +- docs/en/msg_docs/CellularStatus.md | 69 +- docs/en/msg_docs/CollisionConstraints.md | 26 +- docs/en/msg_docs/ConfigOverrides.md | 38 +- docs/en/msg_docs/ConfigOverridesV0.md | 37 +- docs/en/msg_docs/ControlAllocatorStatus.md | 38 +- docs/en/msg_docs/Cpuload.md | 21 +- docs/en/msg_docs/DatamanRequest.md | 25 +- docs/en/msg_docs/DatamanResponse.md | 36 +- docs/en/msg_docs/DebugArray.md | 28 +- docs/en/msg_docs/DebugKeyValue.md | 21 +- docs/en/msg_docs/DebugValue.md | 21 +- docs/en/msg_docs/DebugVect.md | 23 +- docs/en/msg_docs/DeviceInformation.md | 53 +- docs/en/msg_docs/DifferentialPressure.md | 28 +- docs/en/msg_docs/DistanceSensor.md | 62 +- .../DistanceSensorModeChangeRequest.md | 27 +- docs/en/msg_docs/DronecanNodeStatus.md | 41 +- docs/en/msg_docs/Ekf2Timestamps.md | 38 +- docs/en/msg_docs/EscReport.md | 60 +- docs/en/msg_docs/EscStatus.md | 37 +- docs/en/msg_docs/EstimatorAidSource1d.md | 32 +- docs/en/msg_docs/EstimatorAidSource2d.md | 32 +- docs/en/msg_docs/EstimatorAidSource3d.md | 32 +- docs/en/msg_docs/EstimatorBias.md | 26 +- docs/en/msg_docs/EstimatorBias3d.md | 26 +- docs/en/msg_docs/EstimatorEventFlags.md | 38 +- docs/en/msg_docs/EstimatorGpsStatus.md | 35 +- docs/en/msg_docs/EstimatorInnovations.md | 40 +- docs/en/msg_docs/EstimatorSelectorStatus.md | 34 +- docs/en/msg_docs/EstimatorSensorBias.md | 43 +- docs/en/msg_docs/EstimatorStates.md | 23 +- docs/en/msg_docs/EstimatorStatus.md | 107 +- docs/en/msg_docs/EstimatorStatusFlags.md | 97 +- docs/en/msg_docs/Event.md | 34 +- docs/en/msg_docs/EventV0.md | 35 +- docs/en/msg_docs/FailsafeFlags.md | 62 +- docs/en/msg_docs/FailureDetectorStatus.md | 32 +- docs/en/msg_docs/FigureEightStatus.md | 26 +- .../FixedWingLateralGuidanceStatus.md | 32 +- docs/en/msg_docs/FixedWingLateralSetpoint.md | 34 +- docs/en/msg_docs/FixedWingLateralStatus.md | 26 +- .../msg_docs/FixedWingLongitudinalSetpoint.md | 37 +- docs/en/msg_docs/FixedWingRunwayControl.md | 44 +- docs/en/msg_docs/FlightPhaseEstimation.md | 29 +- docs/en/msg_docs/FollowTarget.md | 26 +- docs/en/msg_docs/FollowTargetEstimator.md | 30 +- docs/en/msg_docs/FollowTargetStatus.md | 26 +- docs/en/msg_docs/FuelTankStatus.md | 35 +- docs/en/msg_docs/GainCompression.md | 24 +- docs/en/msg_docs/GeneratorStatus.md | 58 +- docs/en/msg_docs/GeofenceResult.md | 34 +- docs/en/msg_docs/GeofenceStatus.md | 28 +- docs/en/msg_docs/GimbalControls.md | 31 +- .../en/msg_docs/GimbalDeviceAttitudeStatus.md | 45 +- docs/en/msg_docs/GimbalDeviceInformation.md | 51 +- docs/en/msg_docs/GimbalDeviceSetAttitude.md | 36 +- docs/en/msg_docs/GimbalManagerInformation.md | 46 +- docs/en/msg_docs/GimbalManagerSetAttitude.md | 40 +- .../msg_docs/GimbalManagerSetManualControl.md | 39 +- docs/en/msg_docs/GimbalManagerStatus.md | 25 +- docs/en/msg_docs/GotoSetpoint.md | 43 +- docs/en/msg_docs/GpioConfig.md | 43 +- docs/en/msg_docs/GpioIn.md | 31 +- docs/en/msg_docs/GpioOut.md | 26 +- docs/en/msg_docs/GpioRequest.md | 24 +- docs/en/msg_docs/GpsDump.md | 33 +- docs/en/msg_docs/GpsInjectData.md | 30 +- docs/en/msg_docs/Gripper.md | 31 +- docs/en/msg_docs/HealthReport.md | 26 +- docs/en/msg_docs/HeaterStatus.md | 37 +- docs/en/msg_docs/HomePosition.md | 41 +- docs/en/msg_docs/HomePositionV0.md | 39 +- docs/en/msg_docs/HoverThrustEstimate.md | 27 +- docs/en/msg_docs/InputRc.md | 58 +- .../InternalCombustionEngineControl.md | 26 +- .../InternalCombustionEngineStatus.md | 74 +- docs/en/msg_docs/IridiumsbdStatus.md | 33 +- docs/en/msg_docs/IrlockReport.md | 28 +- docs/en/msg_docs/LandingGear.md | 28 +- docs/en/msg_docs/LandingGearWheel.md | 20 +- docs/en/msg_docs/LandingTargetInnovations.md | 23 +- docs/en/msg_docs/LandingTargetPose.md | 39 +- .../msg_docs/LateralControlConfiguration.md | 31 +- docs/en/msg_docs/LaunchDetectionStatus.md | 32 +- docs/en/msg_docs/LedControl.md | 53 +- docs/en/msg_docs/LogMessage.md | 31 +- docs/en/msg_docs/LoggerStatus.md | 39 +- .../LongitudinalControlConfiguration.md | 40 +- docs/en/msg_docs/MagWorkerData.md | 34 +- docs/en/msg_docs/MagnetometerBiasEstimate.md | 24 +- docs/en/msg_docs/ManualControlSetpoint.md | 49 +- docs/en/msg_docs/ManualControlSwitches.md | 53 +- docs/en/msg_docs/MavlinkLog.md | 27 +- docs/en/msg_docs/MavlinkTunnel.md | 46 +- docs/en/msg_docs/MessageFormatRequest.md | 27 +- docs/en/msg_docs/MessageFormatResponse.md | 23 +- docs/en/msg_docs/Mission.md | 29 +- docs/en/msg_docs/MissionResult.md | 33 +- docs/en/msg_docs/ModeCompleted.md | 36 +- docs/en/msg_docs/MountOrientation.md | 20 +- docs/en/msg_docs/NavigatorMissionItem.md | 35 +- docs/en/msg_docs/NavigatorStatus.md | 33 +- docs/en/msg_docs/NeuralControl.md | 27 +- .../en/msg_docs/NormalizedUnsignedSetpoint.md | 20 +- docs/en/msg_docs/ObstacleDistance.md | 40 +- docs/en/msg_docs/OffboardControlMode.md | 30 +- docs/en/msg_docs/OnboardComputerStatus.md | 42 +- docs/en/msg_docs/OpenDroneIdArmStatus.md | 21 +- docs/en/msg_docs/OpenDroneIdOperatorId.md | 22 +- docs/en/msg_docs/OpenDroneIdSelfId.md | 22 +- docs/en/msg_docs/OpenDroneIdSystem.md | 31 +- docs/en/msg_docs/OrbTest.md | 20 +- docs/en/msg_docs/OrbTestLarge.md | 21 +- docs/en/msg_docs/OrbTestMedium.md | 27 +- docs/en/msg_docs/OrbitStatus.md | 40 +- docs/en/msg_docs/ParameterResetRequest.md | 31 +- docs/en/msg_docs/ParameterSetUsedRequest.md | 30 +- docs/en/msg_docs/ParameterSetValueRequest.md | 32 +- docs/en/msg_docs/ParameterSetValueResponse.md | 31 +- docs/en/msg_docs/ParameterUpdate.md | 31 +- docs/en/msg_docs/Ping.md | 25 +- .../PositionControllerLandingStatus.md | 32 +- docs/en/msg_docs/PositionControllerStatus.md | 27 +- docs/en/msg_docs/PositionSetpoint.md | 55 +- docs/en/msg_docs/PositionSetpointTriplet.md | 27 +- docs/en/msg_docs/PowerButtonState.md | 33 +- docs/en/msg_docs/PowerMonitor.md | 34 +- docs/en/msg_docs/PpsCapture.md | 21 +- docs/en/msg_docs/PurePursuitStatus.md | 28 +- docs/en/msg_docs/PwmInput.md | 22 +- docs/en/msg_docs/Px4ioStatus.md | 52 +- docs/en/msg_docs/QshellReq.md | 28 +- docs/en/msg_docs/QshellRetval.md | 21 +- docs/en/msg_docs/RadioStatus.md | 27 +- docs/en/msg_docs/RaptorInput.md | 58 + docs/en/msg_docs/RaptorStatus.md | 108 ++ docs/en/msg_docs/RateCtrlStatus.md | 22 +- docs/en/msg_docs/RcChannels.md | 64 +- docs/en/msg_docs/RcParameterMap.md | 33 +- docs/en/msg_docs/RegisterExtComponentReply.md | 36 +- .../msg_docs/RegisterExtComponentReplyV0.md | 35 +- .../msg_docs/RegisterExtComponentRequest.md | 41 +- .../msg_docs/RegisterExtComponentRequestV0.md | 40 +- docs/en/msg_docs/RoverAttitudeSetpoint.md | 24 +- docs/en/msg_docs/RoverAttitudeStatus.md | 25 +- docs/en/msg_docs/RoverPositionSetpoint.md | 28 +- docs/en/msg_docs/RoverRateSetpoint.md | 24 +- docs/en/msg_docs/RoverRateStatus.md | 26 +- docs/en/msg_docs/RoverSpeedSetpoint.md | 25 +- docs/en/msg_docs/RoverSpeedStatus.md | 29 +- docs/en/msg_docs/RoverSteeringSetpoint.md | 24 +- docs/en/msg_docs/RoverThrottleSetpoint.md | 25 +- docs/en/msg_docs/Rpm.md | 21 +- docs/en/msg_docs/RtlStatus.md | 34 +- docs/en/msg_docs/RtlTimeEstimate.md | 22 +- docs/en/msg_docs/SatelliteInfo.md | 34 +- docs/en/msg_docs/SensorAccel.md | 34 +- docs/en/msg_docs/SensorAccelFifo.md | 27 +- docs/en/msg_docs/SensorAirflow.md | 23 +- docs/en/msg_docs/SensorBaro.md | 34 +- docs/en/msg_docs/SensorCombined.md | 43 +- docs/en/msg_docs/SensorCorrection.md | 47 +- docs/en/msg_docs/SensorGnssRelative.md | 41 +- docs/en/msg_docs/SensorGnssStatus.md | 29 +- docs/en/msg_docs/SensorGps.md | 96 +- docs/en/msg_docs/SensorGyro.md | 34 +- docs/en/msg_docs/SensorGyroFft.md | 29 +- docs/en/msg_docs/SensorGyroFifo.md | 33 +- docs/en/msg_docs/SensorHygrometer.md | 23 +- docs/en/msg_docs/SensorMag.md | 32 +- docs/en/msg_docs/SensorOpticalFlow.md | 42 +- docs/en/msg_docs/SensorPreflightMag.md | 25 +- docs/en/msg_docs/SensorSelection.md | 26 +- docs/en/msg_docs/SensorTemp.md | 23 +- docs/en/msg_docs/SensorUwb.md | 44 +- docs/en/msg_docs/SensorsStatus.md | 28 +- docs/en/msg_docs/SensorsStatusImu.md | 31 +- docs/en/msg_docs/SystemPower.md | 45 +- docs/en/msg_docs/TakeoffStatus.md | 36 +- docs/en/msg_docs/TaskStackInfo.md | 31 +- docs/en/msg_docs/TecsStatus.md | 43 +- docs/en/msg_docs/TelemetryStatus.md | 67 +- docs/en/msg_docs/TiltrotorExtraControls.md | 21 +- docs/en/msg_docs/TimesyncStatus.md | 32 +- docs/en/msg_docs/TrajectorySetpoint.md | 38 +- docs/en/msg_docs/TrajectorySetpoint6dof.md | 30 +- docs/en/msg_docs/TransponderReport.md | 69 +- docs/en/msg_docs/TuneControl.md | 60 +- docs/en/msg_docs/UavcanParameterRequest.md | 43 +- docs/en/msg_docs/UavcanParameterValue.md | 30 +- docs/en/msg_docs/UlogStream.md | 36 +- docs/en/msg_docs/UlogStreamAck.md | 32 +- docs/en/msg_docs/UnregisterExtComponent.md | 29 +- docs/en/msg_docs/VehicleAcceleration.md | 22 +- docs/en/msg_docs/VehicleAirData.md | 31 +- .../VehicleAngularAccelerationSetpoint.md | 22 +- docs/en/msg_docs/VehicleAngularVelocity.md | 28 +- docs/en/msg_docs/VehicleAttitude.md | 34 +- docs/en/msg_docs/VehicleAttitudeSetpoint.md | 28 +- docs/en/msg_docs/VehicleAttitudeSetpointV0.md | 30 +- docs/en/msg_docs/VehicleCommand.md | 1581 ++++++++++++++++- docs/en/msg_docs/VehicleCommandAck.md | 54 +- docs/en/msg_docs/VehicleConstraints.md | 27 +- docs/en/msg_docs/VehicleControlMode.md | 40 +- docs/en/msg_docs/VehicleGlobalPosition.md | 50 +- docs/en/msg_docs/VehicleImu.md | 40 +- docs/en/msg_docs/VehicleImuStatus.md | 38 +- docs/en/msg_docs/VehicleLandDetected.md | 37 +- docs/en/msg_docs/VehicleLocalPosition.md | 85 +- .../msg_docs/VehicleLocalPositionSetpoint.md | 35 +- docs/en/msg_docs/VehicleLocalPositionV0.md | 84 +- docs/en/msg_docs/VehicleMagnetometer.md | 24 +- docs/en/msg_docs/VehicleOdometry.md | 60 +- docs/en/msg_docs/VehicleOpticalFlow.md | 31 +- docs/en/msg_docs/VehicleOpticalFlowVel.md | 29 +- docs/en/msg_docs/VehicleRatesSetpoint.md | 30 +- docs/en/msg_docs/VehicleRoi.md | 41 +- docs/en/msg_docs/VehicleStatus.md | 129 +- docs/en/msg_docs/VehicleStatusV0.md | 136 +- docs/en/msg_docs/VehicleThrustSetpoint.md | 22 +- docs/en/msg_docs/VehicleTorqueSetpoint.md | 22 +- docs/en/msg_docs/VelocityLimits.md | 26 +- docs/en/msg_docs/VtolVehicleStatus.md | 36 +- docs/en/msg_docs/Vtx.md | 83 + docs/en/msg_docs/WheelEncoders.md | 21 +- docs/en/msg_docs/Wind.md | 38 +- docs/en/msg_docs/YawEstimatorStatus.md | 27 +- docs/en/msg_docs/index.md | 260 ++- docs/en/payloads/generic_actuator_control.md | 1 - docs/en/peripherals/gripper.md | 1 - docs/en/peripherals/mavlink_peripherals.md | 1 - docs/en/peripherals/remote_id.md | 3 +- docs/en/peripherals/serial_configuration.md | 1 - .../power_module/ark_12s_pab_power_module.md | 4 - docs/en/power_module/cuav_hv_pm.md | 7 +- docs/en/power_module/holybro_pm02.md | 1 - docs/en/power_module/holybro_pm03d.md | 18 +- .../holybro_pm06_pixhawk4mini_power_module.md | 3 +- .../holybro_pm07_pixhawk4_power_module.md | 2 - .../en/power_module/sky-drones_smartap-pdb.md | 4 - docs/en/releases/1.13.md | 1 - docs/en/ros/mavros_custom_messages.md | 61 +- docs/en/ros2/multi_vehicle.md | 12 +- docs/en/ros2/px4_ros2_msg_translation_node.md | 4 +- docs/en/sensor/inertiallabs.md | 1 - docs/en/sensor/microstrain.md | 24 - docs/en/sensor/optical_flow.md | 2 +- docs/en/sensor/sbgecom.md | 3 +- docs/en/sensor/sfxx_lidar.md | 4 +- docs/en/sensor/vectornav.md | 2 - docs/en/sensor_bus/i2c_development.md | 24 +- docs/en/sensor_bus/i2c_general.md | 31 +- docs/en/sensor_bus/translator_tfi2cadt.md | 6 +- docs/en/sim_gazebo_gz/index.md | 9 +- docs/en/sim_gazebo_gz/worlds.md | 4 +- .../community_supported_simulators.md | 14 +- docs/en/smart_batteries/index.md | 3 +- docs/en/smart_batteries/rotoye_batmon.md | 14 +- docs/en/test_and_ci/continous_integration.md | 24 +- docs/en/test_and_ci/index.md | 6 +- docs/en/test_cards/mc_04_failsafe_testing.md | 9 +- .../uart/user_configurable_serial_driver.md | 1 - docs/public/config/failsafe/index.js | 2 +- docs/public/config/failsafe/index.wasm | Bin 94322 -> 96677 bytes docs/public/config/failsafe/parameters.json | 2 +- 374 files changed, 12147 insertions(+), 1765 deletions(-) create mode 100644 docs/en/msg_docs/RaptorInput.md create mode 100644 docs/en/msg_docs/RaptorStatus.md create mode 100644 docs/en/msg_docs/Vtx.md diff --git a/docs/en/advanced/px4_metadata.md b/docs/en/advanced/px4_metadata.md index bc0c61dca7..065b5fcf10 100644 --- a/docs/en/advanced/px4_metadata.md +++ b/docs/en/advanced/px4_metadata.md @@ -31,6 +31,7 @@ For more information see the topics for each data type: - [Parameters & Configurations > Creating/Defining Parameters](../advanced/parameters_and_configurations.md#creating-defining-parameters) - [Events Interface](../concept/events_interface.md) - [Actuator Metadata](#actuator-metadata) (below) + ## Metadata Toolchain The process for handling metadata is the same for all metadata types. @@ -69,6 +70,7 @@ The parameter XML file of the main branch is copied into the QGC source tree via The following diagram shows how actuator metadata is assembled from the source code and used by QGroundControl: ![Actuators Metadata](../../assets/diagrams/actuator_metadata_processing.svg) + - **Left**: the metadata is defined in `module.yml` files in different modules. diff --git a/docs/en/advanced_config/advanced_flight_controller_orientation_leveling.md b/docs/en/advanced_config/advanced_flight_controller_orientation_leveling.md index c960ab5eb7..28007b730f 100644 --- a/docs/en/advanced_config/advanced_flight_controller_orientation_leveling.md +++ b/docs/en/advanced_config/advanced_flight_controller_orientation_leveling.md @@ -34,4 +34,3 @@ You can locate the parameters in QGroundControl as shown below: Positive angles increase in CCW direction, negative angles increase in CW direction. - [SENS_BOARD_Z_OFF](../advanced_config/parameter_reference.md#SENS_BOARD_Z_OFF): Rotation, in degrees, around PX4FMU's Z axis Yaw axis. Positive angles increase in CCW direction, negative angles increase in CW direction. - diff --git a/docs/en/advanced_config/bootloader_update_v6xrt.md b/docs/en/advanced_config/bootloader_update_v6xrt.md index a868f8e9db..9d7f92a4aa 100644 --- a/docs/en/advanced_config/bootloader_update_v6xrt.md +++ b/docs/en/advanced_config/bootloader_update_v6xrt.md @@ -63,7 +63,6 @@ The tool is available for Windows, Linux and macOS. ![Flash bootloader through Secure provisioning - Step 6](../../assets/advanced_config/bootloader_6xrt/bootloader_update_v6xrt_step6.png) To get the Pixhawk V6X-RT into "ISP bootloader mode" there are 2 options: - 1. Launch QGC connect the Pixhawk select **Analayze Tools** and then **MAVLINK Console**. On the console type `reboot -i`. This will put the Pixhawk V6X-RT into "ISP bootloader mode" diff --git a/docs/en/advanced_config/esc_calibration.md b/docs/en/advanced_config/esc_calibration.md index 45409b9937..c8133ec870 100644 --- a/docs/en/advanced_config/esc_calibration.md +++ b/docs/en/advanced_config/esc_calibration.md @@ -89,7 +89,6 @@ To calibrate the ESCs: ::: Verify the following values: - - The minimum value for a motor (default: `1100us`) should make the motor spin slowly but reliably, and also spin up reliably after it was stopped. You can confirm that a motor spins at minimum (still without propellers) in [Actuator Testing](../config/actuators.md#actuator-testing), by enabling the sliders, and then moving the test output slider for the motor to the first snap position from the bottom. diff --git a/docs/en/advanced_config/parameter_reference.md b/docs/en/advanced_config/parameter_reference.md index add34aacc0..501a113ee0 100644 --- a/docs/en/advanced_config/parameter_reference.md +++ b/docs/en/advanced_config/parameter_reference.md @@ -4957,6 +4957,50 @@ Note that non-motor outputs might already be active in prearm state if COM_PREAR | ------ | -------- | -------- | --------- | ------- | ---- | |   | 0 | 1000 | | 0 | +### SIM_GZ_EC_DIS13 (`INT32`) {#SIM_GZ_EC_DIS13} + +SIM_GZ ESC 13 Disarmed Value. + +This is the output value that is set when not armed. +Note that non-motor outputs might already be active in prearm state if COM_PREARM_MODE is set. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1000 | | 0 | + +### SIM_GZ_EC_DIS14 (`INT32`) {#SIM_GZ_EC_DIS14} + +SIM_GZ ESC 14 Disarmed Value. + +This is the output value that is set when not armed. +Note that non-motor outputs might already be active in prearm state if COM_PREARM_MODE is set. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1000 | | 0 | + +### SIM_GZ_EC_DIS15 (`INT32`) {#SIM_GZ_EC_DIS15} + +SIM_GZ ESC 15 Disarmed Value. + +This is the output value that is set when not armed. +Note that non-motor outputs might already be active in prearm state if COM_PREARM_MODE is set. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1000 | | 0 | + +### SIM_GZ_EC_DIS16 (`INT32`) {#SIM_GZ_EC_DIS16} + +SIM_GZ ESC 16 Disarmed Value. + +This is the output value that is set when not armed. +Note that non-motor outputs might already be active in prearm state if COM_PREARM_MODE is set. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1000 | | 0 | + ### SIM_GZ_EC_DIS2 (`INT32`) {#SIM_GZ_EC_DIS2} SIM_GZ ESC 2 Disarmed Value. @@ -5089,6 +5133,50 @@ When set to -1 (default), the value depends on the function (see SIM_GZ_EC_FUNC1 | ------ | -------- | -------- | --------- | ------- | ---- | |   | -1 | 1000 | | -1 | +### SIM_GZ_EC_FAIL13 (`INT32`) {#SIM_GZ_EC_FAIL13} + +SIM_GZ ESC 13 Failsafe Value. + +This is the output value that is set when in failsafe mode. +When set to -1 (default), the value depends on the function (see SIM_GZ_EC_FUNC13). + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | -1 | 1000 | | -1 | + +### SIM_GZ_EC_FAIL14 (`INT32`) {#SIM_GZ_EC_FAIL14} + +SIM_GZ ESC 14 Failsafe Value. + +This is the output value that is set when in failsafe mode. +When set to -1 (default), the value depends on the function (see SIM_GZ_EC_FUNC14). + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | -1 | 1000 | | -1 | + +### SIM_GZ_EC_FAIL15 (`INT32`) {#SIM_GZ_EC_FAIL15} + +SIM_GZ ESC 15 Failsafe Value. + +This is the output value that is set when in failsafe mode. +When set to -1 (default), the value depends on the function (see SIM_GZ_EC_FUNC15). + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | -1 | 1000 | | -1 | + +### SIM_GZ_EC_FAIL16 (`INT32`) {#SIM_GZ_EC_FAIL16} + +SIM_GZ ESC 16 Failsafe Value. + +This is the output value that is set when in failsafe mode. +When set to -1 (default), the value depends on the function (see SIM_GZ_EC_FUNC16). + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | -1 | 1000 | | -1 | + ### SIM_GZ_EC_FAIL2 (`INT32`) {#SIM_GZ_EC_FAIL2} SIM_GZ ESC 2 Failsafe Value. @@ -5461,6 +5549,290 @@ The default failsafe value is set according to the selected function: | ------ | -------- | -------- | --------- | ------- | ---- | |   | | | | 0 | +### SIM_GZ_EC_FUNC13 (`INT32`) {#SIM_GZ_EC_FUNC13} + +SIM_GZ ESC 13 Output Function. + +Select what should be output on SIM_GZ ESC 13. +The default failsafe value is set according to the selected function: + +- 'Min' for ConstantMin +- 'Max' for ConstantMax +- 'Max' for Parachute +- ('Max'+'Min')/2 for Servos +- 'Disarmed' for the rest + +**Values:** + +- `0`: Disabled +- `1`: Constant Min +- `2`: Constant Max +- `101`: Motor 1 +- `102`: Motor 2 +- `103`: Motor 3 +- `104`: Motor 4 +- `105`: Motor 5 +- `106`: Motor 6 +- `107`: Motor 7 +- `108`: Motor 8 +- `109`: Motor 9 +- `110`: Motor 10 +- `111`: Motor 11 +- `112`: Motor 12 +- `201`: Servo 1 +- `202`: Servo 2 +- `203`: Servo 3 +- `204`: Servo 4 +- `205`: Servo 5 +- `206`: Servo 6 +- `207`: Servo 7 +- `208`: Servo 8 +- `301`: Peripheral via Actuator Set 1 +- `302`: Peripheral via Actuator Set 2 +- `303`: Peripheral via Actuator Set 3 +- `304`: Peripheral via Actuator Set 4 +- `305`: Peripheral via Actuator Set 5 +- `306`: Peripheral via Actuator Set 6 +- `400`: Landing Gear +- `401`: Parachute +- `402`: RC Roll +- `403`: RC Pitch +- `404`: RC Throttle +- `405`: RC Yaw +- `406`: RC Flaps +- `407`: RC AUX 1 +- `408`: RC AUX 2 +- `409`: RC AUX 3 +- `410`: RC AUX 4 +- `411`: RC AUX 5 +- `412`: RC AUX 6 +- `420`: Gimbal Roll +- `421`: Gimbal Pitch +- `422`: Gimbal Yaw +- `430`: Gripper +- `440`: Landing Gear Wheel +- `450`: IC Engine Ignition +- `451`: IC Engine Throttle +- `452`: IC Engine Choke +- `453`: IC Engine Starter + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | | | | 0 | + +### SIM_GZ_EC_FUNC14 (`INT32`) {#SIM_GZ_EC_FUNC14} + +SIM_GZ ESC 14 Output Function. + +Select what should be output on SIM_GZ ESC 14. +The default failsafe value is set according to the selected function: + +- 'Min' for ConstantMin +- 'Max' for ConstantMax +- 'Max' for Parachute +- ('Max'+'Min')/2 for Servos +- 'Disarmed' for the rest + +**Values:** + +- `0`: Disabled +- `1`: Constant Min +- `2`: Constant Max +- `101`: Motor 1 +- `102`: Motor 2 +- `103`: Motor 3 +- `104`: Motor 4 +- `105`: Motor 5 +- `106`: Motor 6 +- `107`: Motor 7 +- `108`: Motor 8 +- `109`: Motor 9 +- `110`: Motor 10 +- `111`: Motor 11 +- `112`: Motor 12 +- `201`: Servo 1 +- `202`: Servo 2 +- `203`: Servo 3 +- `204`: Servo 4 +- `205`: Servo 5 +- `206`: Servo 6 +- `207`: Servo 7 +- `208`: Servo 8 +- `301`: Peripheral via Actuator Set 1 +- `302`: Peripheral via Actuator Set 2 +- `303`: Peripheral via Actuator Set 3 +- `304`: Peripheral via Actuator Set 4 +- `305`: Peripheral via Actuator Set 5 +- `306`: Peripheral via Actuator Set 6 +- `400`: Landing Gear +- `401`: Parachute +- `402`: RC Roll +- `403`: RC Pitch +- `404`: RC Throttle +- `405`: RC Yaw +- `406`: RC Flaps +- `407`: RC AUX 1 +- `408`: RC AUX 2 +- `409`: RC AUX 3 +- `410`: RC AUX 4 +- `411`: RC AUX 5 +- `412`: RC AUX 6 +- `420`: Gimbal Roll +- `421`: Gimbal Pitch +- `422`: Gimbal Yaw +- `430`: Gripper +- `440`: Landing Gear Wheel +- `450`: IC Engine Ignition +- `451`: IC Engine Throttle +- `452`: IC Engine Choke +- `453`: IC Engine Starter + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | | | | 0 | + +### SIM_GZ_EC_FUNC15 (`INT32`) {#SIM_GZ_EC_FUNC15} + +SIM_GZ ESC 15 Output Function. + +Select what should be output on SIM_GZ ESC 15. +The default failsafe value is set according to the selected function: + +- 'Min' for ConstantMin +- 'Max' for ConstantMax +- 'Max' for Parachute +- ('Max'+'Min')/2 for Servos +- 'Disarmed' for the rest + +**Values:** + +- `0`: Disabled +- `1`: Constant Min +- `2`: Constant Max +- `101`: Motor 1 +- `102`: Motor 2 +- `103`: Motor 3 +- `104`: Motor 4 +- `105`: Motor 5 +- `106`: Motor 6 +- `107`: Motor 7 +- `108`: Motor 8 +- `109`: Motor 9 +- `110`: Motor 10 +- `111`: Motor 11 +- `112`: Motor 12 +- `201`: Servo 1 +- `202`: Servo 2 +- `203`: Servo 3 +- `204`: Servo 4 +- `205`: Servo 5 +- `206`: Servo 6 +- `207`: Servo 7 +- `208`: Servo 8 +- `301`: Peripheral via Actuator Set 1 +- `302`: Peripheral via Actuator Set 2 +- `303`: Peripheral via Actuator Set 3 +- `304`: Peripheral via Actuator Set 4 +- `305`: Peripheral via Actuator Set 5 +- `306`: Peripheral via Actuator Set 6 +- `400`: Landing Gear +- `401`: Parachute +- `402`: RC Roll +- `403`: RC Pitch +- `404`: RC Throttle +- `405`: RC Yaw +- `406`: RC Flaps +- `407`: RC AUX 1 +- `408`: RC AUX 2 +- `409`: RC AUX 3 +- `410`: RC AUX 4 +- `411`: RC AUX 5 +- `412`: RC AUX 6 +- `420`: Gimbal Roll +- `421`: Gimbal Pitch +- `422`: Gimbal Yaw +- `430`: Gripper +- `440`: Landing Gear Wheel +- `450`: IC Engine Ignition +- `451`: IC Engine Throttle +- `452`: IC Engine Choke +- `453`: IC Engine Starter + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | | | | 0 | + +### SIM_GZ_EC_FUNC16 (`INT32`) {#SIM_GZ_EC_FUNC16} + +SIM_GZ ESC 16 Output Function. + +Select what should be output on SIM_GZ ESC 16. +The default failsafe value is set according to the selected function: + +- 'Min' for ConstantMin +- 'Max' for ConstantMax +- 'Max' for Parachute +- ('Max'+'Min')/2 for Servos +- 'Disarmed' for the rest + +**Values:** + +- `0`: Disabled +- `1`: Constant Min +- `2`: Constant Max +- `101`: Motor 1 +- `102`: Motor 2 +- `103`: Motor 3 +- `104`: Motor 4 +- `105`: Motor 5 +- `106`: Motor 6 +- `107`: Motor 7 +- `108`: Motor 8 +- `109`: Motor 9 +- `110`: Motor 10 +- `111`: Motor 11 +- `112`: Motor 12 +- `201`: Servo 1 +- `202`: Servo 2 +- `203`: Servo 3 +- `204`: Servo 4 +- `205`: Servo 5 +- `206`: Servo 6 +- `207`: Servo 7 +- `208`: Servo 8 +- `301`: Peripheral via Actuator Set 1 +- `302`: Peripheral via Actuator Set 2 +- `303`: Peripheral via Actuator Set 3 +- `304`: Peripheral via Actuator Set 4 +- `305`: Peripheral via Actuator Set 5 +- `306`: Peripheral via Actuator Set 6 +- `400`: Landing Gear +- `401`: Parachute +- `402`: RC Roll +- `403`: RC Pitch +- `404`: RC Throttle +- `405`: RC Yaw +- `406`: RC Flaps +- `407`: RC AUX 1 +- `408`: RC AUX 2 +- `409`: RC AUX 3 +- `410`: RC AUX 4 +- `411`: RC AUX 5 +- `412`: RC AUX 6 +- `420`: Gimbal Roll +- `421`: Gimbal Pitch +- `422`: Gimbal Yaw +- `430`: Gripper +- `440`: Landing Gear Wheel +- `450`: IC Engine Ignition +- `451`: IC Engine Throttle +- `452`: IC Engine Choke +- `453`: IC Engine Starter + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | | | | 0 | + ### SIM_GZ_EC_FUNC2 (`INT32`) {#SIM_GZ_EC_FUNC2} SIM_GZ ESC 2 Output Function. @@ -6069,6 +6441,46 @@ Maxmimum output value (when not disarmed). | ------ | -------- | -------- | --------- | ------- | ---- | |   | 0 | 1000 | | 1000 | +### SIM_GZ_EC_MAX13 (`INT32`) {#SIM_GZ_EC_MAX13} + +SIM_GZ ESC 13 Maximum Value. + +Maxmimum output value (when not disarmed). + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1000 | | 1000 | + +### SIM_GZ_EC_MAX14 (`INT32`) {#SIM_GZ_EC_MAX14} + +SIM_GZ ESC 14 Maximum Value. + +Maxmimum output value (when not disarmed). + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1000 | | 1000 | + +### SIM_GZ_EC_MAX15 (`INT32`) {#SIM_GZ_EC_MAX15} + +SIM_GZ ESC 15 Maximum Value. + +Maxmimum output value (when not disarmed). + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1000 | | 1000 | + +### SIM_GZ_EC_MAX16 (`INT32`) {#SIM_GZ_EC_MAX16} + +SIM_GZ ESC 16 Maximum Value. + +Maxmimum output value (when not disarmed). + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1000 | | 1000 | + ### SIM_GZ_EC_MAX2 (`INT32`) {#SIM_GZ_EC_MAX2} SIM_GZ ESC 2 Maximum Value. @@ -6189,6 +6601,46 @@ Minimum output value (when not disarmed). | ------ | -------- | -------- | --------- | ------- | ---- | |   | 0 | 1000 | | 0 | +### SIM_GZ_EC_MIN13 (`INT32`) {#SIM_GZ_EC_MIN13} + +SIM_GZ ESC 13 Minimum Value. + +Minimum output value (when not disarmed). + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1000 | | 0 | + +### SIM_GZ_EC_MIN14 (`INT32`) {#SIM_GZ_EC_MIN14} + +SIM_GZ ESC 14 Minimum Value. + +Minimum output value (when not disarmed). + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1000 | | 0 | + +### SIM_GZ_EC_MIN15 (`INT32`) {#SIM_GZ_EC_MIN15} + +SIM_GZ ESC 15 Minimum Value. + +Minimum output value (when not disarmed). + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1000 | | 0 | + +### SIM_GZ_EC_MIN16 (`INT32`) {#SIM_GZ_EC_MIN16} + +SIM_GZ ESC 16 Minimum Value. + +Minimum output value (when not disarmed). + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 1000 | | 0 | + ### SIM_GZ_EC_MIN2 (`INT32`) {#SIM_GZ_EC_MIN2} SIM_GZ ESC 2 Minimum Value. @@ -6290,10 +6742,14 @@ Note: this is only useful for servos. - `9`: SIM_GZ ESC 10 - `10`: SIM_GZ ESC 11 - `11`: SIM_GZ ESC 12 +- `12`: SIM_GZ ESC 13 +- `13`: SIM_GZ ESC 14 +- `14`: SIM_GZ ESC 15 +- `15`: SIM_GZ ESC 16 | Reboot | minValue | maxValue | increment | default | unit | | ------ | -------- | -------- | --------- | ------- | ---- | -|   | 0 | 4095 | | 0 | +|   | 0 | 65535 | | 0 | ### SIM_GZ_SV_DIS1 (`INT32`) {#SIM_GZ_SV_DIS1} @@ -15980,17 +16436,20 @@ A negative value disables autmoatic disarming triggered by a pre-takeoff timeout Datalink loss exceptions. -Specify modes in which datalink loss is ignored and the failsafe action not triggered. +Specify modes in which ground control station connection loss is ignored and no failsafe action is triggered. +See also COM_RCL_EXCEPT. **Bitmask:** - `0`: Mission -- `1`: Hold +- `1`: Auto modes - `2`: Offboard +- `3`: External Mode +- `4`: Altitude Cruise | Reboot | minValue | maxValue | increment | default | unit | | ------ | -------- | -------- | --------- | ------- | ---- | -|   | 0 | 7 | | 0 | +|   | 0 | 31 | | 0 | ### COM_DL_LOSS_T (`INT32`) {#COM_DL_LOSS_T} @@ -16695,13 +17154,14 @@ A negative value disables the check. Manual control loss exceptions. -Specify modes where manual control loss is ignored and no failsafe is triggered. +Specify modes in which stick input is ignored and no failsafe action is triggered. External modes requiring stick input will still failsafe. +Auto modes are: Hold, Takeoff, Land, RTL, Descend, Follow Target, Precland, Orbit. **Bitmask:** - `0`: Mission -- `1`: Hold +- `1`: Auto modes - `2`: Offboard - `3`: External Mode - `4`: Altitude Cruise @@ -20138,25 +20598,48 @@ If enabled, failure detector will verify that for motors, a minimum amount of ES level is being consumed. Otherwise this indicates an motor failure. -| Reboot | minValue | maxValue | increment | default | unit | -| ------- | -------- | -------- | --------- | ----------- | ---- | -| ✓ | | | | Enabled (1) | +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ------------ | ---- | +| ✓ | | | | Disabled (0) | -### FD_ACT_MOT_C2T (`FLOAT`) {#FD_ACT_MOT_C2T} +### FD_ACT_HIGH_OFF (`FLOAT`) {#FD_ACT_HIGH_OFF} -Motor Failure Current/Throttle Threshold. +Overcurrent motor failure limit offset. -Motor failure triggers only below this current value +threshold = FD_ACT_MOT_C2T \* thrust + FD_ACT_HIGH_OFF | Reboot | minValue | maxValue | increment | default | unit | | ------ | -------- | -------- | --------- | ------- | ---- | -|   | 0.0 | 50.0 | 1 | 2.0 | A/% | +|   | 0 | 30 | 1 | 10. | A | + +### FD_ACT_LOW_OFF (`FLOAT`) {#FD_ACT_LOW_OFF} + +Undercurrent motor failure limit offset. + +threshold = FD_ACT_MOT_C2T \* thrust - FD_ACT_LOW_OFF + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 30 | 1 | 10. | A | + +### FD_ACT_MOT_C2T (`FLOAT`) {#FD_ACT_MOT_C2T} + +Motor Failure Current/Throttle Scale. + +Determines the slope between expected steady state current and linearized, normalized thrust command. +E.g. FD_ACT_MOT_C2T A represents the expected steady state current at 100%. +FD_ACT_LOW_OFF and FD_ACT_HIGH_OFF offset the threshold from that slope. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0.0 | 50.0 | 1 | 35. | A/% | ### FD_ACT_MOT_THR (`FLOAT`) {#FD_ACT_MOT_THR} -Motor Failure Throttle Threshold. +Motor Failure Thrust Threshold. -Motor failure triggers only above this throttle value. +Failure detection per motor only triggers above this thrust value. +Set to 1 to disable the detection. | Reboot | minValue | maxValue | increment | default | unit | | ------ | -------- | -------- | --------- | ------- | ---- | @@ -20164,14 +20647,13 @@ Motor failure triggers only above this throttle value. ### FD_ACT_MOT_TOUT (`INT32`) {#FD_ACT_MOT_TOUT} -Motor Failure Time Threshold. +Motor Failure Hysteresis Time. -Motor failure triggers only if the throttle threshold and the -current to throttle threshold are violated for this time. +Motor failure only triggers after current thresholds are exceeded for this time. | Reboot | minValue | maxValue | increment | default | unit | | ------ | -------- | -------- | --------- | ------- | ---- | -|   | 10 | 10000 | 100 | 100 | ms | +|   | 10 | 10000 | 100 | 1000 | ms | ### FD_ESCS_EN (`INT32`) {#FD_ESCS_EN} @@ -20594,6 +21076,16 @@ u-blox protocol configuration for interfaces. | ------- | -------- | -------- | --------- | ------- | ---- | | ✓ | 0 | 32 | | 0 | +### GPS_UBX_DGNSS_TO (`INT32`) {#GPS_UBX_DGNSS_TO} + +u-blox GPS DGNSS timeout. + +When set to 0 (default), default DGNSS timeout set by u-blox will be used. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ------- | ---- | +| ✓ | 0 | 255 | | 0 | s | + ### GPS_UBX_DYNMODEL (`INT32`) {#GPS_UBX_DYNMODEL} u-blox GPS dynamic platform model. @@ -20613,6 +21105,39 @@ the expected application environment. | ------- | -------- | -------- | --------- | ------- | ---- | | ✓ | 0 | 9 | | 7 | +### GPS_UBX_JAM_DET (`INT32`) {#GPS_UBX_JAM_DET} + +u-blox GPS jamming detection high sensitivity mode. + +Enables or disables the high sensitivity mode for the u-blox jamming detection +(CFG-SEC-JAMDET_SENSITIVITY_HI). When enabled, the receiver uses a +more sensitive algorithm to detect jamming. Disabling this may reduce false +positives in electrically noisy environments. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ----------- | ---- | +| ✓ | | | | Enabled (1) | + +### GPS_UBX_MIN_CNO (`INT32`) {#GPS_UBX_MIN_CNO} + +u-blox GPS minimum satellite signal level for navigation. + +When set to 0 (default), default minimum satellite signal level set by u-blox wll be used. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ------- | ---- | +| ✓ | 0 | 255 | | 0 | dBHz | + +### GPS_UBX_MIN_ELEV (`INT32`) {#GPS_UBX_MIN_ELEV} + +u-blox GPS minimum elevation for a GNSS satellite to be used in navigation. + +When set to 0 (default), default minimum elevation set by u-blox will be used. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ------- | ---- | +| ✓ | 0 | 127 | | 0 | deg | + ### GPS_UBX_MODE (`INT32`) {#GPS_UBX_MODE} u-blox GPS Mode. @@ -20650,6 +21175,21 @@ Enable MSM7 message output for PPK workflow. | ------- | -------- | -------- | --------- | ------------ | ---- | | ✓ | | | | Disabled (0) | +### GPS_UBX_RATE (`INT32`) {#GPS_UBX_RATE} + +u-blox GPS output rate. + +Configure the output rate of u-blox GPS receivers (protocol v27+). +When set to 0, automatic rate selection is used based on the receiver model. +Default rates: M9N=8Hz, F9P L1L2=5Hz, F9P L1L5=5Hz, Others=10Hz. +Note: Higher rates reduce satellite count (e.g., >8Hz limits to 16 SVs on M9N). +Max rates vary by model and RTK mode: F9P L1L2=5-7Hz, F9P L1L5=7-8Hz, X20=25Hz. +High rates at 115200 baud may cause dropouts. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ------- | ---- | +| ✓ | 0 | 25 | | 0 | Hz | + ### GPS_YAW_OFFSET (`FLOAT`) {#GPS_YAW_OFFSET} Heading/Yaw offset for dual antenna GPS. @@ -20989,6 +21529,21 @@ tail_output += CA_HELI_YAW_TH_S \* throttle | ------ | -------- | -------- | --------- | ------- | ---- | |   | -2 | 2 | 0.1 | 0.0 | +### CA_ICE_PERIOD (`FLOAT`) {#CA_ICE_PERIOD} + +Ice shedding cycle period. + +Ice shedding prevents ice buildup in VTOL aircraft motors by +periodically spinning inactive rotors. When enabled (period + +> 0), every cycle lasts for the defined period and includes +> a 2‑second spin at 0.01 motor output. If period <= 0, the +> feature is disabled. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0.0 | | 0.1 | 0.0 | s | + ### CA_MAX_SVO_THROW (`FLOAT`) {#CA_MAX_SVO_THROW} Throw angle of swashplate servo at maximum commands for linearization. @@ -23229,6 +23784,14 @@ Total number of Control Surfaces. | ------ | -------- | -------- | --------- | ------- | ---- | |   | | | | 0 | +### CA_SV_FLAP_SLEW (`FLOAT`) {#CA_SV_FLAP_SLEW} + +Control Surface slew rate for normalized flaps setpoint. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0.0 | 5.0 | | 0.5 | + ### CA_SV_TL0_CT (`INT32`) {#CA_SV_TL0_CT} Tilt 0 is used for control. @@ -25579,10 +26142,11 @@ and relies on the IMU's attitude estimation. - `0`: Disable - `1`: Stabilize all axis - `2`: Stabilize yaw for absolute/lock mode. +- `3`: Stabilize pitch for absolute/lock mode. | Reboot | minValue | maxValue | increment | default | unit | | ------ | -------- | -------- | --------- | ------- | ---- | -|   | 0 | 2 | | 0 | +|   | | | | 0 | ### MNT_LND_P_MAX (`FLOAT`) {#MNT_LND_P_MAX} @@ -25674,6 +26238,26 @@ If MNT_MODE_OUT is MAVLink gimbal protocol v1, mount configure/control commands | ------ | -------- | -------- | --------- | ------- | ---- | |   | | | | 1 | +### MNT_MAX_PITCH (`FLOAT`) {#MNT_MAX_PITCH} + +Max positive angle of pitch setpoint (only in MNT_MODE_OUT=AUX). + +Use output driver settings to calibrate (e.g. PWM_CENT/\_MIN/\_MAX). + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | | | | 45.0 | deg | + +### MNT_MIN_PITCH (`FLOAT`) {#MNT_MIN_PITCH} + +Min negative angle of pitch setpoint (only in MNT_MODE_OUT=AUX). + +Use output driver settings to calibrate (e.g. PWM_CENT/\_MIN/\_MAX). + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | | | | -45.0 | deg | + ### MNT_MODE_IN (`INT32`) {#MNT_MODE_IN} Mount input mode. @@ -25712,41 +26296,11 @@ Recommended is the MAVLink gimbal protocol v2 if the gimbal supports it. | ------- | -------- | -------- | --------- | ------- | ---- | | ✓ | 0 | 2 | | 0 | -### MNT_OFF_PITCH (`FLOAT`) {#MNT_OFF_PITCH} - -Offset for pitch channel output in degrees. - -| Reboot | minValue | maxValue | increment | default | unit | -| ------ | -------- | -------- | --------- | ------- | ---- | -|   | -360.0 | 360.0 | | 0.0 | deg | - -### MNT_OFF_ROLL (`FLOAT`) {#MNT_OFF_ROLL} - -Offset for roll channel output in degrees. - -| Reboot | minValue | maxValue | increment | default | unit | -| ------ | -------- | -------- | --------- | ------- | ---- | -|   | -360.0 | 360.0 | | 0.0 | deg | - -### MNT_OFF_YAW (`FLOAT`) {#MNT_OFF_YAW} - -Offset for yaw channel output in degrees. - -| Reboot | minValue | maxValue | increment | default | unit | -| ------ | -------- | -------- | --------- | ------- | ---- | -|   | -360.0 | 360.0 | | 0.0 | deg | - -### MNT_RANGE_PITCH (`FLOAT`) {#MNT_RANGE_PITCH} - -Range of pitch channel output in degrees (only in AUX output mode). - -| Reboot | minValue | maxValue | increment | default | unit | -| ------ | -------- | -------- | --------- | ------- | ---- | -|   | 1.0 | 720.0 | | 90.0 | deg | - ### MNT_RANGE_ROLL (`FLOAT`) {#MNT_RANGE_ROLL} -Range of roll channel output in degrees (only in AUX output mode). +Range of roll channel output (only in MNT_MODE_OUT=AUX). + +Use output driver settings to calibrate (e.g. PWM_CENT/\_MIN/\_MAX). Note that only symmetric angular ranges are supported. | Reboot | minValue | maxValue | increment | default | unit | | ------ | -------- | -------- | --------- | ------- | ---- | @@ -25754,7 +26308,9 @@ Range of roll channel output in degrees (only in AUX output mode). ### MNT_RANGE_YAW (`FLOAT`) {#MNT_RANGE_YAW} -Range of yaw channel output in degrees (only in AUX output mode). +Range of yaw channel output (only in MNT_MODE_OUT=AUX). + +Use output driver settings to calibrate (e.g. PWM_CENT/\_MIN/\_MAX). Note that only symmetric angular ranges are supported. | Reboot | minValue | maxValue | increment | default | unit | | ------ | -------- | -------- | --------- | ------- | ---- | @@ -25793,6 +26349,18 @@ Input mode for RC gimbal input. | ------ | -------- | -------- | --------- | ------- | ---- | |   | 0 | 1 | | 1 | +### MNT_TAU (`FLOAT`) {#MNT_TAU} + +Alpha filter time constant defining the convergence rate (in seconds) for open-loop AUX mount control. + +Use when no angular position feedback is available. +With MNT_MODE_OUT set to AUX, the mount operates in open-loop and directly commands the servo output. +Parameters must be tuned for the specific servo to approximate its speed and response. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0.0 | | | 0.3 | + ## Multicopter Acro Mode ### MC_ACRO_EXPO (`FLOAT`) {#MC_ACRO_EXPO} @@ -26871,6 +27439,55 @@ The lowest input maps and is clamped to this rate. | ------ | -------- | -------- | --------- | ------- | ----- | |   | 1 | | 0.1 | 3. | deg/s | +## Multicopter Raptor + +### MC_RAPTOR_ENABLE (`INT32`) {#MC_RAPTOR_ENABLE} + +Enable Raptor flight mode. + +When enabled, the Raptor flight mode will be available. Please set MC_RAPTOR_OFFB according to your use case. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------------ | ---- | +|   | | | | Disabled (0) | + +### MC_RAPTOR_INTREF (`INT32`) {#MC_RAPTOR_INTREF} + +Use internal reference instead of trajectory_setpoint. + +When enabled, instead of using the trajectory_setpoint, the position and yaw of the vehicle at the point when the Raptor mode is activated will be used as reference. +Use `mc_raptor intref lissajous ` to configure the trajectory. + +**Values:** + +- `0`: None +- `1`: Lissajous + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | | | | 0 | + +### MC_RAPTOR_OFFB (`INT32`) {#MC_RAPTOR_OFFB} + +Enable Offboard mode replacement. + +When enabled, the Raptor mode will replace the Offboard mode. +If disabled, the Raptor mode will be available as a separate external mode. In the latter case, Raptor will just hold the position, without requiring external setpoints. When Raptor replaces the Offboard mode, it requires external setpoints to be activated. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------------ | ---- | +|   | | | | Disabled (0) | + +### MC_RAPTOR_VERBOS (`INT32`) {#MC_RAPTOR_VERBOS} + +Enable verbose output. + +When enabled, the Raptor flight mode will print verbose output to the console. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------------ | ---- | +|   | | | | Disabled (0) | + ## Multicopter Rate Control ### MC_BAT_SCALE_EN (`INT32`) {#MC_BAT_SCALE_EN} @@ -26923,7 +27540,7 @@ Pitch rate controller gain. Global gain of the controller. This gain scales the P, I and D terms of the controller: -output = MC*PITCHRATE_K * (MC*PITCHRATE_P * error +output = MC_PITCHRATE_K _ (MC_PITCHRATE_P _ error - MC_PITCHRATE_I \* error_integral - MC_PITCHRATE_D \* error_derivative) @@ -26990,7 +27607,7 @@ Roll rate controller gain. Global gain of the controller. This gain scales the P, I and D terms of the controller: -output = MC*ROLLRATE_K * (MC*ROLLRATE_P * error +output = MC_ROLLRATE_K _ (MC_ROLLRATE_P _ error - MC_ROLLRATE_I \* error_integral - MC_ROLLRATE_D \* error_derivative) @@ -27057,7 +27674,7 @@ Yaw rate controller gain. Global gain of the controller. This gain scales the P, I and D terms of the controller: -output = MC*YAWRATE_K * (MC*YAWRATE_P * error +output = MC_YAWRATE_K _ (MC_YAWRATE_P _ error - MC_YAWRATE_I \* error_integral - MC_YAWRATE_D \* error_derivative) @@ -27291,7 +27908,7 @@ Thrust to motor control signal model parameter. Parameter used to model the nonlinear relationship between motor control signal (e.g. PWM) and static thrust. -The model is: rel*thrust = factor * rel*signal^2 + (1-factor) * rel_signal, +The model is: rel_thrust = factor _ rel_signal^2 + (1-factor) _ rel_signal, where rel_thrust is the normalized thrust between 0 and 1, and rel_signal is the relative motor control signal between 0 and 1. @@ -29540,10 +30157,11 @@ Return mode destination and flight path (home location, rally point, mission lan **Values:** - `0`: Return to closest safe point (home or rally point) via direct path. -- `1`: Return to closest safe point other than home (mission landing pattern or rally point), via direct path. If no mission landing or rally points are defined return home via direct path. Always chose closest safe landing point if vehicle is a VTOL in hover mode. +- `1`: Return to closest safe point other than home (mission landing pattern or rally point), via direct path. If no mission landing or rally points are defined return home via direct path. Always choose closest safe landing point if vehicle is a VTOL in hover mode. - `2`: Return to a planned mission landing, if available, using the mission path, else return to home via the reverse mission path. Do not consider rally points. - `3`: Return via direct path to closest destination: home, start of mission landing pattern or safe point. If the destination is a mission landing pattern, follow the pattern to land. - `4`: Return to the planned mission landing, or to home via the reverse mission path, whichever is closer by counting waypoints. Do not consider rally points. +- `5`: Return directly to safe landing point (do not consider mission landing and Home) | Reboot | minValue | maxValue | increment | default | unit | | ------ | -------- | -------- | --------- | ------- | ---- | @@ -29975,7 +30593,7 @@ Proportional gain for ground speed controller. Tuning parameter for the speed reduction based on the course error. -Reduced*speed = RO_MAX_THR_SPEED * (1 - normalized*course_error * RO_SPEED_RED) +Reduced_speed = RO_MAX_THR_SPEED _ (1 - normalized_course_error _ RO_SPEED_RED) The normalized course error is the angle between the current course and the bearing setpoint interpolated from [0, 180] -> [0, 1]. Higher value -> More speed reduction. @@ -33905,10 +34523,12 @@ Lightware SF1xx/SF20/LW20 laser rangefinder (i2c). - `5`: SF/LW20/b - `6`: SF/LW20/c - `7`: SF/LW30/d +- `8`: GRF250 +- `9`: GRF500 | Reboot | minValue | maxValue | increment | default | unit | | ------- | -------- | -------- | --------- | ------- | ---- | -| ✓ | 0 | 7 | | 0 | +| ✓ | 0 | 9 | | 0 | ### SENS_EN_SF45_CFG (`INT32`) {#SENS_EN_SF45_CFG} @@ -33989,6 +34609,16 @@ Thermal control of sensor temperature. | ------ | -------- | -------- | --------- | ------- | ---- | |   | | | | -1 | +### SENS_EN_TMP102 (`INT32`) {#SENS_EN_TMP102} + +Enable TMP102. + +Enable the driver for the TMP102 temperature sensor + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ------------ | ---- | +| ✓ | | | | Disabled (0) | + ### SENS_EN_TRANGER (`INT32`) {#SENS_EN_TRANGER} TeraRanger Rangefinder (i2c). @@ -34125,13 +34755,16 @@ When no blending is active, this defines the preferred GPS receiver instance. The GPS selection logic waits until the primary receiver is available to send data to the EKF even if a secondary instance is already available. The secondary instance is then only used if the primary one times out. -To have an equal priority of all the instances, set this parameter to -1 and -the best receiver will be used. +Accepted values: +-1 : Auto (equal priority for all instances) +0 : Main serial GPS instance +1 : Secondary serial GPS instance +2-127 : UAVCAN module node ID This parameter has no effect if blending is active. | Reboot | minValue | maxValue | increment | default | unit | | ------ | -------- | -------- | --------- | ------- | ---- | -|   | -1 | 1 | | 0 | +|   | -1 | 127 | | 0 | ### SENS_GPS_TAU (`FLOAT`) {#SENS_GPS_TAU} @@ -36828,7 +37461,7 @@ Pitch rate controller gain. Global gain of the controller. This gain scales the P, I and D terms of the controller: -output = SC*PITCHRATE_K * (SC*PITCHRATE_P * error +output = SC_PITCHRATE_K _ (SC_PITCHRATE_P _ error - SC_PITCHRATE_I \* error_integral - SC_PITCHRATE_D \* error_derivative) @@ -36895,7 +37528,7 @@ Roll rate controller gain. Global gain of the controller. This gain scales the P, I and D terms of the controller: -output = SC*ROLLRATE_K * (SC*ROLLRATE_P * error +output = SC_ROLLRATE_K _ (SC_ROLLRATE_P _ error - SC_ROLLRATE_I \* error_integral - SC_ROLLRATE_D \* error_derivative) @@ -36962,7 +37595,7 @@ Yaw rate controller gain. Global gain of the controller. This gain scales the P, I and D terms of the controller: -output = SC*YAWRATE_K * (SC*YAWRATE_P * error +output = SC_YAWRATE_K _ (SC_YAWRATE_P _ error - SC_YAWRATE_I \* error_integral - SC_YAWRATE_D \* error_derivative) @@ -39499,6 +40132,17 @@ UAVCAN CAN node ID (0 for dynamic allocation). | ------ | -------- | -------- | --------- | ------- | ---- | |   | 0 | 127 | | 0 | +### CANNODE_PUB_BAR (`INT32`) {#CANNODE_PUB_BAR} + +Enable barometer publication. + +Enables publication of static pressure and static temperature +from the barometer sensor over UAVCAN. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ----------- | ---- | +| ✓ | | 1 | | Enabled (1) | + ### CANNODE_PUB_IMU (`INT32`) {#CANNODE_PUB_IMU} Enable RawIMU pub. @@ -39507,6 +40151,17 @@ Enable RawIMU pub. | ------ | -------- | -------- | --------- | ------------ | ---- | |   | | 1 | | Disabled (0) | +### CANNODE_PUB_MAG (`INT32`) {#CANNODE_PUB_MAG} + +Enable magnetometer publication. + +Enables publication of magnetic field strength +from the magnetometer sensor over UAVCAN. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ----------- | ---- | +| ✓ | | 1 | | Enabled (1) | + ### CANNODE_PUB_MBD (`INT32`) {#CANNODE_PUB_MBD} Enable MovingBaselineData publication. @@ -40392,6 +41047,17 @@ uXRCE-DDS domain ID | ------- | -------- | -------- | --------- | ------- | ---- | | ✓ | | | | 0 | +### UXRCE_DDS_FLCTRL (`INT32`) {#UXRCE_DDS_FLCTRL} + +Enable serial flow control for UXRCE interface. + +This is used to enable flow control for the serial uXRCE instance. +Used for reliable high bandwidth communication. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ------------ | ---- | +| ✓ | | | | Disabled (0) | + ### UXRCE_DDS_KEY (`INT32`) {#UXRCE_DDS_KEY} uXRCE-DDS session key. @@ -40500,6 +41166,21 @@ Default rate is 250Kbps, which is used in off-the-shelf MoadalAI ESC products. | ------ | -------- | -------- | --------- | ------- | ----- | |   | | | | 250000 | bit/s | +### VOXL_ESC_CMD (`INT32`) {#VOXL_ESC_CMD} + +UART ESC command type. + +Selects between RPM or PWM commands + +**Values:** + +- `0`: - RPM +- `1`: - PWM + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ------- | ---- | +| ✓ | 0 | 1 | | 0 | + ### VOXL_ESC_CONFIG (`INT32`) {#VOXL_ESC_CONFIG} UART ESC configuration. @@ -40559,6 +41240,18 @@ Only applicable to ESCs that report total battery voltage and current | ------- | -------- | -------- | --------- | ------- | ---- | | ✓ | 0 | 1 | | 1 | +### VOXL_ESC_PWR_MIN (`FLOAT`) {#VOXL_ESC_PWR_MIN} + +UART ESC Minimum motor power. + +Minimum motor power for ESC when VOXL_ESC_CMD is set for PWM. +Make sure to set this high enough so that the motors are always spinning +while armed. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0.0 | 1.0 | | 0.05 | + ### VOXL_ESC_RPM_MAX (`INT32`) {#VOXL_ESC_RPM_MAX} UART ESC RPM Max. @@ -41178,6 +41871,187 @@ Altitude relative to home at which vehicle will loiter after front transition. | ------ | -------- | -------- | --------- | ------- | ---- | |   | 20 | 300 | 1 | 80 | m | +## VTX + +### VTX_BAND (`INT32`) {#VTX_BAND} + +VTX band. + +VTX table band 1-24 + +**Values:** + +- `0`: Band 1 +- `1`: Band 2 +- `2`: Band 3 +- `3`: Band 4 +- `4`: Band 5 +- `5`: Band 6 +- `6`: Band 7 +- `7`: Band 8 +- `8`: Band 9 +- `9`: Band 10 +- `10`: Band 11 +- `11`: Band 12 +- `12`: Band 13 +- `13`: Band 14 +- `14`: Band 15 +- `15`: Band 16 +- `16`: Band 17 +- `17`: Band 18 +- `18`: Band 19 +- `19`: Band 20 +- `20`: Band 21 +- `21`: Band 22 +- `22`: Band 23 +- `23`: Band 24 + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | | | | 0 | + +### VTX_CHANNEL (`INT32`) {#VTX_CHANNEL} + +VTX channel. + +VTX table channel 1-16 + +**Values:** + +- `0`: Channel 1 +- `1`: Channel 2 +- `2`: Channel 3 +- `3`: Channel 4 +- `4`: Channel 5 +- `5`: Channel 6 +- `6`: Channel 7 +- `7`: Channel 8 +- `8`: Channel 9 +- `9`: Channel 10 +- `10`: Channel 11 +- `11`: Channel 12 +- `12`: Channel 13 +- `13`: Channel 14 +- `14`: Channel 15 +- `15`: Channel 16 + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | | | | 0 | + +### VTX_DEVICE (`INT32`) {#VTX_DEVICE} + +VTX device. + +Specific VTX device useful for workarounds and optimizations + +**Values:** + +- `0`: SmartAudio v1, v2, v2.1 Protocol +- `100`: Tramp Protocol +- `5120`: Peak THOR T67 +- `10240`: Rush MAX SOLO + +| Reboot | minValue | maxValue | increment | default | unit | +| ------- | -------- | -------- | --------- | ------- | ---- | +| ✓ | | | | 0 | + +### VTX_FREQUENCY (`INT32`) {#VTX_FREQUENCY} + +VTX frequency in MHz. + +If the VTX frequency is set, it will overwrite the band and channel +settings. Set to 0 to use band and channel settings. + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | 0 | 32000 | | 0 | + +### VTX_MAP_CONFIG (`INT32`) {#VTX_MAP_CONFIG} + +VTX mapping configuration. + +Configure how VTX settings are controlled. Options include using +MSP commands, AUX channels or a combination of both. To use MSP +commands, you must use a CRSF receiver with MSP support enabled in +the PX4 build. + +**Values:** + +- `0`: Disabled +- `1`: MSP for Power, Band and Channel +- `2`: MSP for Band and Channel, AUX for Power +- `3`: MSP for Power, AUX for Band and Channel +- `4`: AUX for Power, Band and Channel + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | | | | 0 | + +### VTX_PIT_MODE (`INT32`) {#VTX_PIT_MODE} + +VTX pit mode. + +VTX pit mode reduces power to the minimum + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------------ | ---- | +|   | | | | Disabled (0) | + +### VTX_POWER (`INT32`) {#VTX_POWER} + +VTX power level. + +VTX transmission power level 1-16 + +**Values:** + +- `0`: Level 1 +- `1`: Level 2 +- `2`: Level 3 +- `3`: Level 4 +- `4`: Level 5 +- `5`: Level 6 +- `6`: Level 7 +- `7`: Level 8 +- `8`: Level 9 +- `9`: Level 10 +- `10`: Level 11 +- `11`: Level 12 +- `12`: Level 13 +- `13`: Level 14 +- `14`: Level 15 +- `15`: Level 16 + +| Reboot | minValue | maxValue | increment | default | unit | +| ------ | -------- | -------- | --------- | ------- | ---- | +|   | | | | 0 | + +### VTX_SER_CFG (`INT32`) {#VTX_SER_CFG} + +Serial Configuration for VTX Serial Port. + +Configure on which serial port to run VTX Serial Port. + +**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 | + ## Vertiq IO ### VERTIQ_IO_CFG (`INT32`) {#VERTIQ_IO_CFG} diff --git a/docs/en/companion_computer/ark_jetson_pab_carrier.md b/docs/en/companion_computer/ark_jetson_pab_carrier.md index ffb7931a7b..33463f5ca0 100644 --- a/docs/en/companion_computer/ark_jetson_pab_carrier.md +++ b/docs/en/companion_computer/ark_jetson_pab_carrier.md @@ -12,19 +12,16 @@ The [ARK Jetson Pixhawk Autopilot Bus (PAB) Carrier](https://arkelectron.gitbook ## Specifications - **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/en/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md b/docs/en/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md index 3cdab57030..565b68eebb 100644 --- a/docs/en/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md +++ b/docs/en/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md @@ -18,7 +18,6 @@ The board follows the [Pixhawk Connector Standard](https://github.com/pixhawk/Pi - [Holybro Pixhawk RPi CM4 Baseboard](https://holybro.com/products/pixhawk-rpi-cm4-baseboard) (www.holybro.com) The baseboard can be purchased with or without an RPi CM4 and/or flight controller: - - The Raspberry Pi CM4 (CM4008032) supplied by Holybro has the following specification: - RAM: 8GB - eMMC: 32GB @@ -167,7 +166,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) 1. [Set the parameters](../advanced_config/parameters.md): - - `MAV_1_CONFIG` = `102` - `MAV_1_MODE = 2` - `SER_TEL2_BAUD` = `921600` @@ -180,7 +178,6 @@ On the RPi side: 1. Connect to the RPi (using WiFi, a router, or a WiFi Dongle). 1. 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/en/companion_computer/pixhawk_rpi.md b/docs/en/companion_computer/pixhawk_rpi.md index 218a48c3a2..b998f897a1 100644 --- a/docs/en/companion_computer/pixhawk_rpi.md +++ b/docs/en/companion_computer/pixhawk_rpi.md @@ -91,7 +91,7 @@ During PX4 setup and configuration the USB connection with your ground station l These instructions work on PX4 v1.14 and later. -If you need to update the firmware then connect the Pixhawk to your laptop/desktop via the `USB` port and use QGroundControl to update the firmware as described [Firmware > Install Stable PX4](../config/firmware.md#install-stable-px4). +If you need to update the firmware then connect the Pixhawk to your laptop/desktop via the `USB` port and use QGroundControl to update the firmware as described [Firmware > Install Stable PX4](../config/firmware.md#install-stable-px4). If you want the latest developer version then update the firmware to the "main" as described in [Firmware > Installing PX4 Master, Beta or Custom Firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware). ::: info @@ -143,7 +143,6 @@ Enter the following commands (in sequence) a terminal to configure Ubuntu for RP ``` 1. 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. @@ -162,7 +161,6 @@ Enter the following commands (in sequence) a terminal to configure Ubuntu for RP ``` 1. 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**. 1. Check that the serial port is available. diff --git a/docs/en/computer_vision/collision_prevention.md b/docs/en/computer_vision/collision_prevention.md index d2ebb4597a..1fad93be3d 100644 --- a/docs/en/computer_vision/collision_prevention.md +++ b/docs/en/computer_vision/collision_prevention.md @@ -60,7 +60,7 @@ Configure collision prevention by [setting the following parameters](../advanced | [CP_DELAY](../advanced_config/parameter_reference.md#CP_DELAY) | Set the sensor and velocity setpoint tracking delay. See [Delay Tuning](#delay_tuning) below. | | [CP_GUIDE_ANG](../advanced_config/parameter_reference.md#CP_GUIDE_ANG) | Set the angle (to both sides of the commanded direction) within which the vehicle may deviate if it finds fewer obstacles in that direction. See [Guidance Tuning](#angle_change_tuning) below. | | [CP_GO_NO_DATA](../advanced_config/parameter_reference.md#CP_GO_NO_DATA) | Set to 1 to allow the vehicle to move in directions where there is no sensor coverage (default is 0/`False`). | -| [MPC_POS_MODE](../advanced_config/parameter_reference.md#MPC_POS_MODE) | Must be set to `Acceleration based`. | +| [MPC_POS_MODE](../advanced_config/parameter_reference.md#MPC_POS_MODE) | Must be set to `Acceleration based`. | ## Algorithm Description @@ -213,7 +213,6 @@ The steps are: 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/en/concept/flight_tasks.md b/docs/en/concept/flight_tasks.md index fad2dca6fe..242a1e96fe 100644 --- a/docs/en/concept/flight_tasks.md +++ b/docs/en/concept/flight_tasks.md @@ -32,7 +32,6 @@ The instructions below might be used to create a task named _MyTask_: - FlightTaskMyTask.hpp - 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 @@ -135,7 +134,6 @@ The instructions below might be used to create a task named _MyTask_: Usually a parameter is used to select when a particular flight task should be used. For example, to enable our new `MyTask` in multicopter Position mode: - - Update `MPC_POS_MODE` ([multicopter_position_mode_params.c](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mc_pos_control/multicopter_position_mode_params.c)) to add an option for selecting "MyTask" if the parameter has a previously unused value like 5: ```c diff --git a/docs/en/concept/sd_card_layout.md b/docs/en/concept/sd_card_layout.md index 648614e1ea..e379dee52a 100644 --- a/docs/en/concept/sd_card_layout.md +++ b/docs/en/concept/sd_card_layout.md @@ -14,7 +14,7 @@ The directory structure/layout is shown below. | `/etc/` | Extra config. See [System Startup > Replacing the System Startup][replace system start]. | | `/log/` | Full [flight logs](../dev_log/logging.md) | | `/mission_log/` | Reduced flight logs | -| `/fw/` | [DroneCAN](../dronecan/index.md) firmware | +| `/fw/` | [DroneCAN](../dronecan/index.md) firmware | | `/uavcan.db/` | DroneCAN DNA server DB + logs | | `/params` | Parameters (if not in FRAM/FLASH) | | `/dataman` | Mission storage file | diff --git a/docs/en/config/_autotune.md b/docs/en/config/_autotune.md index b6b8dedd69..38eb200e95 100644 --- a/docs/en/config/_autotune.md +++ b/docs/en/config/_autotune.md @@ -82,7 +82,6 @@ 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) @@ -197,11 +196,8 @@ By default, the autotune maneuvers ensure that a sufficient angular rate is reac If the signal-to-noise ratio of the vehicle is low, the system identification algorithm might have issues finding the correct coefficients. Ensure that there is no excessive noise and/or platform vibration. - - - ### The drone oscillates after auto-tuning Due to effects not included in the mathematical model such as delays, saturation, slew-rate, airframe flexibility, the loop gain can be too high. diff --git a/docs/en/config/flight_mode.md b/docs/en/config/flight_mode.md index 545f1a2acc..71be6f1990 100644 --- a/docs/en/config/flight_mode.md +++ b/docs/en/config/flight_mode.md @@ -4,15 +4,15 @@ This topic explains how to map [flight modes](../getting_started/px4_basic_conce :::tip In order to set up flight modes you must already have: + - [Configured your radio](../config/radio.md) - [Setup your transmitter](#rc-transmitter-setup) to encode the physical positions of your mode switch(es) into a single channel. - We provide examples for the popular *Taranis* transmitter [below](#taranis-setup-3-way-switch-configuration-for-single-channel-mode) (check your documentation if you use a different transmitter). -::: - + We provide examples for the popular _Taranis_ transmitter [below](#taranis-setup-3-way-switch-configuration-for-single-channel-mode) (check your documentation if you use a different transmitter). + ::: ## What Flight Modes and Switches Should I Set? -Flight Modes provide different types of *autopilot-assisted flight*, and *fully autonomous flight*. +Flight Modes provide different types of _autopilot-assisted flight_, and _fully autonomous flight_. You can set any (or none) of the flight modes [available to your vehicle](../flight_modes/index.md#flight-modes). Most users should set the following modes and functions, as these make the vehicle easier and safer to fly: @@ -33,26 +33,25 @@ You can also separately specify channels for mapping a kill switch, return to la To configure single-channel flight mode selection: -1. Start *QGroundControl* and connect the vehicle. +1. Start _QGroundControl_ and connect the vehicle. 1. Turn on your RC transmitter. 1. Select **"Q" icon > Vehicle Setup > Flight Modes** (sidebar) to open _Flight Modes Setup_. ![Flight modes single-channel](../../assets/qgc/setup/flight_modes/flight_modes_single_channel.jpg) -1. Specify *Flight Mode Settings*: - * Select the **Mode channel** (above this shown as Channel 5, but this will depend on your transmitter configuration). - * Move the transmitter switch (or switches) that you have set up for mode selection through the available positions. - The mode slot matching your current switch position will be highlighted (above this is *Flight Mode 1*). +1. Specify _Flight Mode Settings_: + - Select the **Mode channel** (above this shown as Channel 5, but this will depend on your transmitter configuration). + - Move the transmitter switch (or switches) that you have set up for mode selection through the available positions. + The mode slot matching your current switch position will be highlighted (above this is _Flight Mode 1_). ::: info While you can set flight modes in any of the 6 slots, only the channels that are mapped to switch positions will be highlighted/used. ::: - * Select the flight mode that you want triggered for each switch position. -1. Specify *Switch Settings*: - * Select the channels that you want to map to specific actions - e.g.: *Return* mode, *Kill switch*, *offboard* mode, etc. (if you have spare switches and channels on your transmitter). - + - Select the flight mode that you want triggered for each switch position. +1. Specify _Switch Settings_: + - Select the channels that you want to map to specific actions - e.g.: _Return_ mode, _Kill switch_, _offboard_ mode, etc. (if you have spare switches and channels on your transmitter). 1. Test that the modes are mapped to the right transmitter switches: - * Check the *Channel Monitor* to confirm that the expected channel is changed by each switch. - * Select each mode switch on your transmitter in turn, and check that the desired flight mode is activated (the text turns yellow on *QGroundControl* for the active mode). + - Check the _Channel Monitor_ to confirm that the expected channel is changed by each switch. + - Select each mode switch on your transmitter in turn, and check that the desired flight mode is activated (the text turns yellow on _QGroundControl_ for the active mode). All values are automatically saved as they are changed. @@ -61,7 +60,6 @@ All values are automatically saved as they are changed. This section contains a small number of possible setup configurations for taranis. QGroundControl _may_ have [setup information for other transmitters here](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/flight_modes.html#transmitter-setup). - ### Taranis Setup: 3-way Switch Configuration for Single-Channel Mode @@ -70,7 +68,7 @@ If you only need to support selecting between two or three modes then you can ma Below we show how to map the Taranis 3-way "SD" switch to channel 5. ::: info -This example shows how to set up the popular *FrSky Taranis* transmitter. +This example shows how to set up the popular _FrSky Taranis_ transmitter. Transmitter setup will be different on other transmitters. ::: @@ -78,15 +76,14 @@ Open the Taranis UI **MIXER** page and scroll down to **CH5**, as shown below: ![Taranis - Map channel to switch](../../assets/qgc/setup/flight_modes/single_channel_mode_selection_1.png) -Press **ENT(ER)** to edit the **CH5** configuration then change the **Source** to be the *SD* button. +Press **ENT(ER)** to edit the **CH5** configuration then change the **Source** to be the _SD_ button. ![Taranis - Configure channel](../../assets/qgc/setup/flight_modes/single_channel_mode_selection_2.png) That's it! Channel 5 will now output 3 different PWM values for the three different **SD** switch positions. -The *QGroundControl* configuration is then as described in the previous section. - +The _QGroundControl_ configuration is then as described in the previous section. ### Taranis Setup: Multi-Switch Configuration for Single-Channel Mode @@ -96,19 +93,18 @@ Commonly this is done by encoding the positions of a 2- and a 3-position switch On the FrSky Taranis this process involves assigning a "logical switch" to each combination of positions of the two real switches. Each logical switch is then assigned to a different PWM value on the same channel. -The video below shows how this is done with the *FrSky Taranis* transmitter. +The video below shows how this is done with the _FrSky Taranis_ transmitter. -The *QGroundControl* configuration is then [as described above](#flight-mode-selection). - +The _QGroundControl_ configuration is then [as described above](#flight-mode-selection). ## Further Information -* [Flight Modes Overview](../flight_modes/index.md) -* [QGroundControl > Flight Modes](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/flight_modes.html#px4-pro-flight-mode-setup) -* [PX4 Setup Video - @6m53s](https://youtu.be/91VGmdSlbo4?t=6m53s) (Youtube) -* [Radio switch parameters](../advanced_config/parameter_reference.md#radio-switches) - Can be used to set mappings via parameters +- [Flight Modes Overview](../flight_modes/index.md) +- [QGroundControl > Flight Modes](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/flight_modes.html#px4-pro-flight-mode-setup) +- [PX4 Setup Video - @6m53s](https://youtu.be/91VGmdSlbo4?t=6m53s) (Youtube) +- [Radio switch parameters](../advanced_config/parameter_reference.md#radio-switches) - Can be used to set mappings via parameters diff --git a/docs/en/config/level_horizon_calibration.md b/docs/en/config/level_horizon_calibration.md index 6eb708b16a..30c2fc0a71 100644 --- a/docs/en/config/level_horizon_calibration.md +++ b/docs/en/config/level_horizon_calibration.md @@ -18,7 +18,6 @@ To level the horizon: You should already have set the [Autopilot Orientation](../config/flight_controller_orientation.md). If not, you can also set it here. ::: 1. 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/en/config/safety.md b/docs/en/config/safety.md index 9f72f4589f..f8a224f945 100644 --- a/docs/en/config/safety.md +++ b/docs/en/config/safety.md @@ -128,10 +128,10 @@ Additional (and underlying) parameter settings are shown below. | Parameter | Setting | Description | | ----------------------------------------------------------------------------------------------------- | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [COM_RC_LOSS_T](../advanced_config/parameter_reference.md#COM_RC_LOSS_T) | Manual Control Loss Timeout | Time after last setpoint received from the selected manual control source after which manual control is considered lost. This must be kept short because the vehicle will continue to fly using the last known stick position until the timeout triggers. | +| [COM_RC_LOSS_T](../advanced_config/parameter_reference.md#COM_RC_LOSS_T) | Manual Control Loss Timeout | Time after last setpoint received from the selected manual control source after which manual control is considered lost. This must be kept short because the vehicle will continue to fly using the last known stick position until the timeout triggers. | | [COM_FAIL_ACT_T](../advanced_config/parameter_reference.md#COM_FAIL_ACT_T) | Failsafe Reaction Delay | Delay in seconds between failsafe condition being triggered (`COM_RC_LOSS_T`) and failsafe action (RTL, Land, Hold). In this state the vehicle waits in hold mode for the manual control source to reconnect. This might be set longer for long-range flights so that intermittent connection loss doesn't immediately invoke the failsafe. It can be to zero so that the failsafe triggers immediately. | | [NAV_RCL_ACT](../advanced_config/parameter_reference.md#NAV_RCL_ACT) | Failsafe Action | Disabled, Loiter, Return, Land, Disarm, Terminate. | -| [COM_RCL_EXCEPT](../advanced_config/parameter_reference.md#COM_RCL_EXCEPT) | RC Loss Exceptions | Set modes in which manual control loss is ignored. | +| [COM_RCL_EXCEPT](../advanced_config/parameter_reference.md#COM_RCL_EXCEPT) | RC Loss Exceptions | Set modes in which manual control loss is ignored. | ## Data Link Loss Failsafe @@ -142,11 +142,11 @@ Users that want to disable this failsafe in specific modes can do so using the p The settings and underlying parameters are shown below. -| Setting | Parameter | Description | -| ---------------------- | ------------------------------------------------------------------------ | --------------------------------------------------------------------------------- | -| Data Link Loss Timeout | [COM_DL_LOSS_T](../advanced_config/parameter_reference.md#COM_DL_LOSS_T) | Amount of time after losing the data connection before the failsafe will trigger. | -| Failsafe Action | [NAV_DLL_ACT](../advanced_config/parameter_reference.md#NAV_DLL_ACT) | Disabled, Hold mode, Return mode, Land mode, Disarm, Terminate. | -| Mode exceptions for DLL failsafe | [COM_DLL_EXCEPT](../advanced_config/parameter_reference.md#COM_DLL_EXCEPT) | Set modes in which data link loss is ignored. | +| Setting | Parameter | Description | +| ----------------------------------------------------------- | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| Data Link Loss Timeout | [COM_DL_LOSS_T](../advanced_config/parameter_reference.md#COM_DL_LOSS_T) | Amount of time after losing the data connection before the failsafe will trigger. | +| Failsafe Action | [NAV_DLL_ACT](../advanced_config/parameter_reference.md#NAV_DLL_ACT) | Disabled, Hold mode, Return mode, Land mode, Disarm, Terminate. | +| Mode exceptions for DLL failsafe | [COM_DLL_EXCEPT](../advanced_config/parameter_reference.md#COM_DLL_EXCEPT) | Set modes in which data link loss is ignored. | ## Geofence Failsafe diff --git a/docs/en/config/safety_intro.md b/docs/en/config/safety_intro.md index 771f113d73..2c4fdeec33 100644 --- a/docs/en/config/safety_intro.md +++ b/docs/en/config/safety_intro.md @@ -13,7 +13,7 @@ These are covered in the following topics: - [Safe Points (Rally)](../flying/plan_safety_points.md) - [Prearm/Arm/Disarm Configuration](../advanced_config/prearm_arm_disarm.md) - [Flight Termination Configuration](../advanced_config/flight_termination.md) -- [First Flight Guidelines](../flying/first_flight_guidelines.md) +- [First Flight Guidelines](../flying/first_flight_guidelines.md) ::: tip Note that the [First Flight Guidelines](../flying/first_flight_guidelines.md) are listed _last_. diff --git a/docs/en/config_heli/index.md b/docs/en/config_heli/index.md index 131f1c7e70..d74e4c8d79 100644 --- a/docs/en/config_heli/index.md +++ b/docs/en/config_heli/index.md @@ -42,14 +42,12 @@ To setup and configure a helicopter: ![Geometry: helicopter](../../assets/config/actuators/qgc_geometry_helicopter.png) The motors have no configurable geometry: - - `Rotor (Motor 1)`: The main rotor - `Yaw tail motor (Motor 2)`: The tail rotor Swash plate servos: `3` | `4` For each servo set: - - `Angle`: Clockwise angle in degree on the swash plate circle at which the servo arm is attached starting from `0` pointing forwards. Example for a typical setup where three servos are controlling the swash plate equally distributed over the circle (360° / 3 =) 120° apart each which results in the angles: @@ -65,7 +63,6 @@ To setup and configure a helicopter: - `Trim`: Offset individual servo positions. This is only needed in rare case when the swash plate is not level even though all servos are centered. Additional settings: - - `Yaw compensation scale based on collective pitch`: How much yaw is feed forward compensated based on the current collective pitch. - `Main rotor turns counter-clockwise`: `Disabled` (clockwise rotation) | `Enabled` - `Throttle spoolup time`: Set value (in seconds) greater than the achievable minimum motor spool up time. @@ -73,12 +70,10 @@ To setup and configure a helicopter: 1. Remove the rotor blades and propellers 1. 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). 1. 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. 1. Using an RC in [Acro mode](../flight_modes_mc/acro.md), verify the correct movement of the swash-plate. With most airframes you need to see the following: - - Moving the roll stick to the right should tilt the swash-plate to the right. - Moving the pitch stick forward should tilt the swash-plate forward. @@ -144,7 +139,6 @@ The rate controller should be tuned in [Acro mode](../flight_modes_mc/acro.md), 3. Then enable the PID gains. Start off with following values: - - [MC_ROLLRATE_P](../advanced_config/parameter_reference.md#MC_ROLLRATE_P), [MC_PITCHRATE_P](../advanced_config/parameter_reference.md#MC_PITCHRATE_P) a quarter of the value you found to work well as the corresponding feed forward value in the previous step. `P = FF / 4` ```sh diff --git a/docs/en/config_mc/index.md b/docs/en/config_mc/index.md index 9d15f9924e..db4fd6809a 100644 --- a/docs/en/config_mc/index.md +++ b/docs/en/config_mc/index.md @@ -123,14 +123,12 @@ Tuning is the final step, carried out only after most other setup and configurat ::: info Automatic tuning works on frames that have reasonable authority and dynamics around all the body axes. It has primarily been tested on racing quads and X500, and is expected to be less effective on tricopters with a tiltable rotor. - + Manual tuning using these guides are only needed if there is a problem with autotune: - - [MC PID Tuning (Manual/Basic)](../config_mc/pid_tuning_guide_multicopter_basic.md) — Manual tuning basic how to. - [MC PID Tuning Guide (Manual/Detailed)](../config_mc/pid_tuning_guide_multicopter.md) — Manual tuning with detailed explanation. - - ::: + ::: - [MC Filter/Control Latency Tuning](../config_mc/filter_tuning.md) — Trade off control latency and noise filtering. - [MC Setpoint Tuning (Trajectory Generator)](../config_mc/mc_trajectory_tuning.md) diff --git a/docs/en/config_mc/pid_tuning_guide_multicopter_basic.md b/docs/en/config_mc/pid_tuning_guide_multicopter_basic.md index 1faf538b8f..dcadf60b94 100644 --- a/docs/en/config_mc/pid_tuning_guide_multicopter_basic.md +++ b/docs/en/config_mc/pid_tuning_guide_multicopter_basic.md @@ -46,7 +46,6 @@ Then adjust the sliders (as discussed below) to improve the tracking of the resp These need to be set low, but such that the **motors never stop** when the vehicle is armed. This can be tested in [Acro mode](../flight_modes_mc/acro.md) or in [Stabilized mode](../flight_modes_mc/manual_stabilized.md): - - Remove propellers - Arm the vehicle and lower the throttle to the minimum - Tilt the vehicle to all directions, about 60 degrees @@ -77,7 +76,6 @@ The tuning procedure is: As a result, the optimal tuning at hover thrust may not be ideal when the vehicle is operating at higher thrust. The thrust curve value can be used to compensate for this non-linearity: - - For PWM controllers, 0.3 is a good default (which may benefit from [further tuning](../config_mc/pid_tuning_guide_multicopter.md#thrust-curve)). - For RPM-based controllers, use 1 (no further tuning is required as these have a quadratic thrust curve). @@ -120,7 +118,6 @@ The tuning procedure is: ::: 1. Repeat the tuning process for the attitude controller on all the axes. 1. 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/en/config_rover/rate_tuning.md b/docs/en/config_rover/rate_tuning.md index 92d4ea5d98..fd327d34ef 100644 --- a/docs/en/config_rover/rate_tuning.md +++ b/docs/en/config_rover/rate_tuning.md @@ -15,13 +15,11 @@ Configure the following [parameters](../advanced_config/parameters.md) in QGroun Small rovers especially can be prone to rolling over when steering aggressively at high speeds. If this is the case: - 1. In [Acro mode](../flight_modes_rover/manual.md#acro-mode), set [RO_YAW_RATE_LIM](#RO_YAW_RATE_LIM) to a small value, drive the rover at full throttle and steer all the way to the left or right. 2. Increase [RO_YAW_RATE_LIM](#RO_YAW_RATE_LIM) until the wheels of the rover start to lift up. 3. Set [RO_YAW_RATE_LIM](#RO_YAW_RATE_LIM) to the highest value that does not cause the rover to lift up. If you see no need to limit the yaw rate, set this parameter to the maximum yaw rate the rover can achieve: - 1. In [Manual mode](../flight_modes_rover/manual.md#manual-mode) drive the rover at full throttle and with the maximum steering angle. 2. Plot the `measured_yaw_rate` from [RoverRateStatus](../msg_docs/RoverRateStatus.md) and enter the highest observed value for [RO_YAW_RATE_LIM](#RO_YAW_RATE_LIM). @@ -51,7 +49,6 @@ Configure the following [parameters](../advanced_config/parameters.md) in QGroun :::tip To tune this parameter: - 1. Put the rover in [Acro mode](../flight_modes_rover/manual.md#acro-mode) and hold the throttle stick and the right stick at a few different levels for a couple of seconds each. 1. Disarm the rover and from the flight log plot the `adjusted_yaw_rate_setpoint` and the `measured_yaw_rate` from [RoverRateStatus](../msg_docs/RoverRateStatus.md) over each other. 1. Increase [RO_YAW_RATE_P](#RO_YAW_RATE_P) if the measured value does not track the setpoint fast enough or decrease it if the measurement overshoots the setpoint by too much. diff --git a/docs/en/config_vtol/vtol_ice_shedding.md b/docs/en/config_vtol/vtol_ice_shedding.md index 629a599f93..bf9ccc80af 100644 --- a/docs/en/config_vtol/vtol_ice_shedding.md +++ b/docs/en/config_vtol/vtol_ice_shedding.md @@ -14,7 +14,8 @@ seconds. In each cycle, the rotors are spun for two seconds at a motor output of :::warning When enabling the feature on a new airframe, there is the risk of producing torques that disturb the fixed-wing rate controller. To mitigate this risk: - - Set your `PWM_MIN` values correctly, so that the motor output 0.01 actually - produces 1% thrust - - Be prepared to take control and switch back to multicopter -::: + +- Set your `PWM_MIN` values correctly, so that the motor output 0.01 actually + produces 1% thrust +- Be prepared to take control and switch back to multicopter + ::: diff --git a/docs/en/config_vtol/vtol_without_airspeed_sensor.md b/docs/en/config_vtol/vtol_without_airspeed_sensor.md index 758543c354..dbcfc56ec2 100644 --- a/docs/en/config_vtol/vtol_without_airspeed_sensor.md +++ b/docs/en/config_vtol/vtol_without_airspeed_sensor.md @@ -66,7 +66,7 @@ Set the minimum front transition time ([VT_TRANS_MIN_TM](../advanced_config/para Because the risk of stalling is real, it is recommended to set the 'fixed-wing minimum altitude' (a.k.a. 'quad-chute') threshold ([VT_FW_MIN_ALT](../advanced_config/parameter_reference.md#VT_FW_MIN_ALT)). -This will cause the VTOL to transition back to multicopter mode and initiate the [Return mode](../flight_modes_vtol/return.md) below a certain altitude. +This will cause the VTOL to transition back to multicopter mode and initiate the [Return mode](../flight_modes_vtol/return.md) below a certain altitude. You could set this to 15 or 20 meters to give the multicopter time to recover from a stall. The position estimator tested for this mode is EKF2, which is enabled by default (for more information see [Switching State Estimators](../advanced/switching_state_estimators.md#how-to-enable-different-estimators) and [EKF2_EN ](../advanced_config/parameter_reference.md#EKF2_EN)). diff --git a/docs/en/dev_airframes/adding_a_new_frame.md b/docs/en/dev_airframes/adding_a_new_frame.md index addec0b132..f34ec3ea30 100644 --- a/docs/en/dev_airframes/adding_a_new_frame.md +++ b/docs/en/dev_airframes/adding_a_new_frame.md @@ -306,7 +306,6 @@ If the airframe is for a **new group** you additionally need to: ``` 1. 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/en/dev_log/logging.md b/docs/en/dev_log/logging.md index 47d4d6f385..daa0d6d9e7 100644 --- a/docs/en/dev_log/logging.md +++ b/docs/en/dev_log/logging.md @@ -33,12 +33,12 @@ The logging system is configured by default to collect sensible logs for [flight Logging may further be configured using the [SD Logging](../advanced_config/parameter_reference.md#sd-logging) parameters. The parameters you are most likely to change are listed below. -| Parameter | Description | -| ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Parameter | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [SDLOG_MODE](../advanced_config/parameter_reference.md#SDLOG_MODE) | Logging Mode. Defines when logging starts and stops.
- `0`: Log when armed until disarm (default).
- `1`: Log from boot until disarm.
- `2`: Log from boot until shutdown.
- `3`: Log based on the [AUX1 RC channel](../advanced_config/parameter_reference.md#RC_MAP_AUX1).
- `4`: Log from first armed until shutdown. | -| [SDLOG_BACKEND](../advanced_config/parameter_reference.md#SDLOG_BACKEND) | Logging Backend (bitmask). Setting a bit enables the corresponding backend. If no backend is selected, the logger is disabled.
- bit `0`: SD card logging.
- bit `1`: Mavlink logging. -| [SDLOG_PROFILE](../advanced_config/parameter_reference.md#SDLOG_PROFILE) | Logging profile. Use this to enable less common logging/analysis (e.g. for EKF2 replay, high rate logging for PID & filter tuning, thermal temperature calibration). | -| [SDLOG_MISSION](../advanced_config/parameter_reference.md#SDLOG_MISSION) | Create very small additional "Mission Log".
This log can _not_ be used with [Flight Review](../log/flight_log_analysis.md#flight-review-online-tool), but is useful when you need a small log for geotagging or regulatory compliance. | +| [SDLOG_BACKEND](../advanced_config/parameter_reference.md#SDLOG_BACKEND) | Logging Backend (bitmask). Setting a bit enables the corresponding backend. If no backend is selected, the logger is disabled.
- bit `0`: SD card logging.
- bit `1`: Mavlink logging. | +| [SDLOG_PROFILE](../advanced_config/parameter_reference.md#SDLOG_PROFILE) | Logging profile. Use this to enable less common logging/analysis (e.g. for EKF2 replay, high rate logging for PID & filter tuning, thermal temperature calibration). | +| [SDLOG_MISSION](../advanced_config/parameter_reference.md#SDLOG_MISSION) | Create very small additional "Mission Log".
This log can _not_ be used with [Flight Review](../log/flight_log_analysis.md#flight-review-online-tool), but is useful when you need a small log for geotagging or regulatory compliance. | Useful settings for specific cases: diff --git a/docs/en/dev_setup/building_px4.md b/docs/en/dev_setup/building_px4.md index d9ac63b279..b5ab7ccdc3 100644 --- a/docs/en/dev_setup/building_px4.md +++ b/docs/en/dev_setup/building_px4.md @@ -39,8 +39,8 @@ 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: +::: 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 diff --git a/docs/en/dev_setup/config_initial.md b/docs/en/dev_setup/config_initial.md index 1e29ed30c6..f636aef195 100644 --- a/docs/en/dev_setup/config_initial.md +++ b/docs/en/dev_setup/config_initial.md @@ -18,7 +18,6 @@ The equipment below is highly recommended: ::: info The listed computers have acceptable performance, but a more recent and powerful computer is 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 diff --git a/docs/en/dev_setup/dev_env.md b/docs/en/dev_setup/dev_env.md index 33069072c6..b57ab037c0 100644 --- a/docs/en/dev_setup/dev_env.md +++ b/docs/en/dev_setup/dev_env.md @@ -11,13 +11,13 @@ The _supported platforms_ for PX4 development are: The table below shows what PX4 targets you can build on each OS. | Target | Linux (Ubuntu) | macOS | Windows | -| -------------------------------------------------------------------------------------------------------------------------------------- | :------------: | :-: | :-----: | -| **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 | ✓ | | ✓ | +| -------------------------------------------------------------------------------------------------------------------------------------- | :------------: | :---: | :-----: | +| **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 | ✓ | | ✓ | 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_mac.md b/docs/en/dev_setup/dev_env_mac.md index fee66f554e..25757f8657 100644 --- a/docs/en/dev_setup/dev_env_mac.md +++ b/docs/en/dev_setup/dev_env_mac.md @@ -107,7 +107,6 @@ To setup the environment for [Gazebo Classic](../sim_gazebo_classic/index.md) si sh macos.sh ``` - ## Next Steps Once you have finished setting up the command-line toolchain: diff --git a/docs/en/dev_setup/vscode.md b/docs/en/dev_setup/vscode.md index fb4d9e79e3..302e68b250 100644 --- a/docs/en/dev_setup/vscode.md +++ b/docs/en/dev_setup/vscode.md @@ -23,7 +23,6 @@ You must already have installed the command line [PX4 developer environment](../ 1. [Download and install VSCode](https://code.visualstudio.com/) (you will be offered the correct version for your OS). 1. Open VSCode and add the PX4 source code: - - Select _Open folder ..._ option on the welcome page (or using the menu: **File > Open Folder**): ![Open Folder](../../assets/toolchain/vscode/welcome_open_folder.jpg) @@ -45,7 +44,6 @@ You must already have installed the command line [PX4 developer environment](../ :::tip If the prompts disappear, click the little "alarm" icon on the right of the bottom blue bar. ::: - - If prompted to install a new version of _cmake_: - Say **No** (the right version is installed with the [PX4 developer environment](../dev_setup/dev_env.md)). - If prompted to sign into _github.com_ and add your credentials: @@ -59,7 +57,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) diff --git a/docs/en/dronecan/ark_cannode.md b/docs/en/dronecan/ark_cannode.md index e1fca0c6d7..fdb403f717 100644 --- a/docs/en/dronecan/ark_cannode.md +++ b/docs/en/dronecan/ark_cannode.md @@ -83,10 +83,10 @@ This is done using the the parameters named like `UAVCAN_SUB_*` in the parameter On the ARK CANnode, you may need to configure the following parameters: -| Parameter | Description | -| ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -| [CANNODE_NODE_ID](../advanced_config/parameter_reference.md#CANNODE_NODE_ID) | CAN node ID (0 for dynamic allocation). If set to 0 (default), dynamic node allocation is used. Set to 1-127 to use a static node ID. | -| [CANNODE_TERM](../advanced_config/parameter_reference.md#CANNODE_TERM) | CAN built-in bus termination. | +| Parameter | Description | +| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| [CANNODE_NODE_ID](../advanced_config/parameter_reference.md#CANNODE_NODE_ID) | CAN node ID (0 for dynamic allocation). If set to 0 (default), dynamic node allocation is used. Set to 1-127 to use a static node ID. | +| [CANNODE_TERM](../advanced_config/parameter_reference.md#CANNODE_TERM) | CAN built-in bus termination. | ## LED Meanings diff --git a/docs/en/dronecan/ark_flow.md b/docs/en/dronecan/ark_flow.md index 8b43846bd3..c3c7906c87 100644 --- a/docs/en/dronecan/ark_flow.md +++ b/docs/en/dronecan/ark_flow.md @@ -72,7 +72,6 @@ The Ark Flow will not boot if there is no SD card in the flight controller when ### Enable DroneCAN - The steps are: - In _QGroundControl_ set the parameter [UAVCAN_ENABLE](../advanced_config/parameter_reference.md#UAVCAN_ENABLE) to `2` for dynamic node allocation (or `3` if using [DroneCAN ESCs](../dronecan/escs.md)) and reboot (see [Finding/Updating Parameters](../advanced_config/parameters.md)). @@ -111,10 +110,10 @@ When optical flow is the only source of horizontal position/velocity, then lower On the ARK Flow, you may need to configure the following parameters: -| Parameter | Description | -| ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -| [CANNODE_NODE_ID](../advanced_config/parameter_reference.md#CANNODE_NODE_ID) | CAN node ID (0 for dynamic allocation). If set to 0 (default), dynamic node allocation is used. Set to 1-127 to use a static node ID. | -| [CANNODE_TERM](../advanced_config/parameter_reference.md#CANNODE_TERM) | CAN built-in bus termination. | +| Parameter | Description | +| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| [CANNODE_NODE_ID](../advanced_config/parameter_reference.md#CANNODE_NODE_ID) | CAN node ID (0 for dynamic allocation). If set to 0 (default), dynamic node allocation is used. Set to 1-127 to use a static node ID. | +| [CANNODE_TERM](../advanced_config/parameter_reference.md#CANNODE_TERM) | CAN built-in bus termination. | ## LED Meanings diff --git a/docs/en/dronecan/ark_flow_mr.md b/docs/en/dronecan/ark_flow_mr.md index dae831b467..f6207cae73 100644 --- a/docs/en/dronecan/ark_flow_mr.md +++ b/docs/en/dronecan/ark_flow_mr.md @@ -1,6 +1,6 @@ # ARK Flow MR -ARK Flow MR ("Mid Range") is an open source [DroneCAN](index.md) [optical flow](../sensor/optical_flow.md), [distance sensor](../sensor/rangefinders.md), and IMU module. +ARK Flow MR ("Mid Range") is an open source [DroneCAN](index.md) [optical flow](../sensor/optical_flow.md), [distance sensor](../sensor/rangefinders.md), and IMU module. It is the next generation of the [Ark Flow](ark_flow.md), designed for mid-range applications. ![ARK Flow MR](../../assets/hardware/sensors/optical_flow/ark_flow_mr.jpg) @@ -28,7 +28,7 @@ Order this module from: - Invensense IIM-42653 6-Axis IMU - Two Pixhawk Standard CAN Connectors (4 Pin JST GH) - Pixhawk Standard Debug Connector (6 Pin JST SH) -- Software controlled built-in CAN termination resistor via node parameter (CANNODE_TERM) +- Software controlled built-in CAN termination resistor via node parameter (CANNODE_TERM) - Small Form Factor - 3cm x 3cm x 1.4cm - LED Indicators @@ -70,7 +70,6 @@ The Ark Flow MR will not boot if there is no SD card in the flight controller wh ### Enable DroneCAN - The steps are: - In _QGroundControl_ set the parameter [UAVCAN_ENABLE](../advanced_config/parameter_reference.md#UAVCAN_ENABLE) to `2` for dynamic node allocation (or `3` if using [DroneCAN ESCs](../dronecan/escs.md)) and reboot (see [Finding/Updating Parameters](../advanced_config/parameters.md)). @@ -106,17 +105,16 @@ Set the following parameters in _QGroundControl_: You may need to [configure the following parameters](../dronecan/index.md#qgc-cannode-parameter-configuration) on the ARK Flow MR itself: -| Parameter | Description | -| ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -| [CANNODE_NODE_ID](../advanced_config/parameter_reference.md#CANNODE_NODE_ID) | CAN node ID (0 for dynamic allocation). If set to 0 (default), dynamic node allocation is used. Set to 1-127 to use a static node ID. | -| [CANNODE_TERM](../advanced_config/parameter_reference.md#CANNODE_TERM) | CAN built-in bus termination. | +| Parameter | Description | +| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| [CANNODE_NODE_ID](../advanced_config/parameter_reference.md#CANNODE_NODE_ID) | CAN node ID (0 for dynamic allocation). If set to 0 (default), dynamic node allocation is used. Set to 1-127 to use a static node ID. | +| [CANNODE_TERM](../advanced_config/parameter_reference.md#CANNODE_TERM) | CAN built-in bus termination. | ## LED Meanings - Blinking green is normal operation - Rapid blinking blue and red is firmware update - If you see a solid red LED there is an error and you should check the following: - Make sure the flight controller has an SD card installed. diff --git a/docs/en/dronecan/ark_gps.md b/docs/en/dronecan/ark_gps.md index 51f07f92c1..9b91601ca6 100644 --- a/docs/en/dronecan/ark_gps.md +++ b/docs/en/dronecan/ark_gps.md @@ -97,10 +97,10 @@ If the sensor is not centred within the vehicle you will also need to define sen You may need to [configure the following parameters](../dronecan/index.md#qgc-cannode-parameter-configuration) on the ARK GPS itself: -| Parameter | Description | -| ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -| [CANNODE_NODE_ID](../advanced_config/parameter_reference.md#CANNODE_NODE_ID) | CAN node ID (0 for dynamic allocation). If set to 0 (default), dynamic node allocation is used. Set to 1-127 to use a static node ID. | -| [CANNODE_TERM](../advanced_config/parameter_reference.md#CANNODE_TERM) | CAN built-in bus termination. Set to `1` if this is the last node on the CAN bus. | +| Parameter | Description | +| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| [CANNODE_NODE_ID](../advanced_config/parameter_reference.md#CANNODE_NODE_ID) | CAN node ID (0 for dynamic allocation). If set to 0 (default), dynamic node allocation is used. Set to 1-127 to use a static node ID. | +| [CANNODE_TERM](../advanced_config/parameter_reference.md#CANNODE_TERM) | CAN built-in bus termination. Set to `1` if this is the last node on the CAN bus. | ## LED Meanings diff --git a/docs/en/dronecan/ark_rtk_gps.md b/docs/en/dronecan/ark_rtk_gps.md index bbb8940fec..e3114685fa 100644 --- a/docs/en/dronecan/ark_rtk_gps.md +++ b/docs/en/dronecan/ark_rtk_gps.md @@ -91,10 +91,10 @@ You need to set necessary [DroneCAN](index.md) parameters and define offsets if You may need to [configure the following parameters](../dronecan/index.md#qgc-cannode-parameter-configuration) on the ARK RTK GPS itself: -| Parameter | Description | -| ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -| [CANNODE_NODE_ID](../advanced_config/parameter_reference.md#CANNODE_NODE_ID) | CAN node ID (0 for dynamic allocation). If set to 0 (default), dynamic node allocation is used. Set to 1-127 to use a static node ID. | -| [CANNODE_TERM](../advanced_config/parameter_reference.md#CANNODE_TERM) | CAN built-in bus termination. Set to `1` if this is the last node on the CAN bus. | +| Parameter | Description | +| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| [CANNODE_NODE_ID](../advanced_config/parameter_reference.md#CANNODE_NODE_ID) | CAN node ID (0 for dynamic allocation). If set to 0 (default), dynamic node allocation is used. Set to 1-127 to use a static node ID. | +| [CANNODE_TERM](../advanced_config/parameter_reference.md#CANNODE_TERM) | CAN built-in bus termination. Set to `1` if this is the last node on the CAN bus. | ### Setting Up Rover and Fixed Base diff --git a/docs/en/dronecan/holybro_h_rtk_zed_f9p_gps.md b/docs/en/dronecan/holybro_h_rtk_zed_f9p_gps.md index 12879ef265..de1de36510 100644 --- a/docs/en/dronecan/holybro_h_rtk_zed_f9p_gps.md +++ b/docs/en/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: 1. 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_). 1. 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/en/esc/ark_4in1_esc.md b/docs/en/esc/ark_4in1_esc.md index 5d094198ce..40fb8d607f 100644 --- a/docs/en/esc/ark_4in1_esc.md +++ b/docs/en/esc/ark_4in1_esc.md @@ -32,12 +32,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/en/flight_controller/airlink.md b/docs/en/flight_controller/airlink.md index 0d4fb1ec2b..30218fc14c 100644 --- a/docs/en/flight_controller/airlink.md +++ b/docs/en/flight_controller/airlink.md @@ -26,7 +26,6 @@ AIRLink has two computers and integrated LTE Module: ## Specifications - **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 @@ -169,12 +164,12 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production - **RC Connector - JST GH SM06B-GHS-TB** | 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 | + | 5 | SBUS_OUT | OUT | +3.3V | SBUS output | 6 | GND | Ground | * **FMU SD card - microSD** @@ -183,7 +178,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 @@ -247,7 +241,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 @@ -305,7 +298,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/en/flight_controller/cuav_x25-evo.md b/docs/en/flight_controller/cuav_x25-evo.md index 2d53c32fbd..881290e9c8 100644 --- a/docs/en/flight_controller/cuav_x25-evo.md +++ b/docs/en/flight_controller/cuav_x25-evo.md @@ -83,7 +83,7 @@ These flight controllers are [manufacturer supported](../flight_controller/autop ### Mechanical Data - - Not provided. +- Not provided. ## Purchase Channels @@ -91,11 +91,11 @@ Order from [CUAV](https://store.cuav.net/). ## Assembly/Setup - - Not provided. +- Not provided. ## Pin Definitions - - Not provided. +- Not provided. ## Serial Port Mapping @@ -112,11 +112,13 @@ Order from [CUAV](https://store.cuav.net/). ## Voltage Ratings The _X25-EVO_ achieves triple redundancy on power supplies if three power sources are provided. The three power rails are POWERC1, POWERC2, and USB. + - **POWER C1** and **POWER C2** are DroneCAN/UAVCAN battery interfaces. **Normal Operation Maximum Ratings** Under these conditions, all power sources will be used to power the system in the following order: + 1. **POWER C1** and **POWER C2** Inputs (10V to 18V) 2. USB Input (4.75V to 5.25V) @@ -143,14 +145,14 @@ make cuav_x25-evo_default The [PX4 System Console](../debug/system_console.md) and [SWD Interface](../debug/swd_debug.md) operate on the **FMU Debug** port. -| Pin | Signal | Volt | -| -------- | ---------------- | ----- | -| 1 (red) | 5V+ | +5V | -| 2 (blk) | DEBUG TX (OUT) | +3.3V | -| 3 (blk) | DEBUG RX (IN) | +3.3V | -| 4 (blk) | FMU_SWDIO | +3.3V | -| 5 (blk) | FMU_SWCLK | +3.3V | -| 6 (blk) | GND | GND | +| Pin | Signal | Volt | +| ------- | -------------- | ----- | +| 1 (red) | 5V+ | +5V | +| 2 (blk) | DEBUG TX (OUT) | +3.3V | +| 3 (blk) | DEBUG RX (IN) | +3.3V | +| 4 (blk) | FMU_SWDIO | +3.3V | +| 5 (blk) | FMU_SWCLK | +3.3V | +| 6 (blk) | GND | GND | ## Supported Platforms / Airframes diff --git a/docs/en/flight_controller/gearup_airbrainh743.md b/docs/en/flight_controller/gearup_airbrainh743.md index 8fe379f606..98c14710d7 100644 --- a/docs/en/flight_controller/gearup_airbrainh743.md +++ b/docs/en/flight_controller/gearup_airbrainh743.md @@ -39,20 +39,20 @@ The pin order is different from the Pixhawk standard (compatible to the Betaflig Current UART configuration: -| UART | Device | Function | -| ------ | ---------- | ---------------------------- | -| 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 | +| UART | Device | Function | +| ------ | ---------- | -------------------- | +| 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 | Pin | Function | -| ----------| ------------------ | +| --------- | --- | ------------ | | ESC | M1 | Motor 1 | | ESC | M2 | Motor 2 | | ESC | M3 | Motor 3 | diff --git a/docs/en/flight_controller/kakuteh7-wing.md b/docs/en/flight_controller/kakuteh7-wing.md index 775eca078b..2546a5cc01 100644 --- a/docs/en/flight_controller/kakuteh7-wing.md +++ b/docs/en/flight_controller/kakuteh7-wing.md @@ -1,4 +1,4 @@ -# Holybro Kakute H743-Wing +# Holybro Kakute H743-Wing @@ -9,7 +9,6 @@ Contact the [manufacturer](https://holybro.com/) for hardware support or complia The [Holybro Kakute H743 Wing](https://holybro.com/products/kakute-h743-wing) is a fully featured flight controller specifically aimed at fixed-wing and VTOL applications. It has the STM32 H743 Processor running at 480 MHz and CAN Bus support, along with dual camera support & switch, ON/OFF Pit Switch, 5V, 6V/8V, 9V/12 BEC, and plug-and-play GPS, CAN, I2C ports. - ::: info This flight controller is [manufacturer supported](../flight_controller/autopilot_manufacturer_supported.md). ::: @@ -20,7 +19,6 @@ The board can be bought from one of the following shops (for example): - [Holybro](https://holybro.com/products/kakute-h743-wing) - ## Connectors and Pins | Pin | Function | PX4 default | @@ -69,15 +67,15 @@ Firmware can be manually installed in any of the normal ways: ## Serial Port Mapping -| UART | Device | Port | Default function | -| ------ | ---------- | --------------------- | ---------------- | -| USART1 | /dev/ttyS0 | GPS 1 | GPS1 | -| USART2 | /dev/ttyS1 | R2, T2 | GPS2 | -| USART3 | /dev/ttyS2 | R3, T3 | TELEM1 | -| UART5 | /dev/ttyS3 | R5, T5 | TELEM2 | -| USART6 | /dev/ttyS4 | R6, (T6) | RC input | -| UART7 | /dev/ttyS5 | R7, T7, RTS, CTS | TELEM3 | -| UART8 | /dev/ttyS6 | R8, T8 | Console | +| UART | Device | Port | Default function | +| ------ | ---------- | ---------------- | ---------------- | +| USART1 | /dev/ttyS0 | GPS 1 | GPS1 | +| USART2 | /dev/ttyS1 | R2, T2 | GPS2 | +| USART3 | /dev/ttyS2 | R3, T3 | TELEM1 | +| UART5 | /dev/ttyS3 | R5, T5 | TELEM2 | +| USART6 | /dev/ttyS4 | R6, (T6) | RC input | +| UART7 | /dev/ttyS5 | R7, T7, RTS, CTS | TELEM3 | +| UART8 | /dev/ttyS6 | R8, T8 | Console | ## Debug Port diff --git a/docs/en/flight_controller/pixhawk_series.md b/docs/en/flight_controller/pixhawk_series.md index cc92192d48..cf1fd037d3 100644 --- a/docs/en/flight_controller/pixhawk_series.md +++ b/docs/en/flight_controller/pixhawk_series.md @@ -102,21 +102,21 @@ At very high level, the main differences are: ### FMUv6 Comparison -| Feature | **FMUv6X-RT** | **FMUv6X** | **FMUv6C** | -| ------------------ | --------------------- | ----------------- | ------------------ | -| **FMU MCU** | NXP i.MX RT1176 | STM32H753 | STM32H743V | -| **RAM** | 2 MB | 1 MB | 1 MB | -| **Flash** | 64 MB Octal SPI | 2 MB internal | 2 MB internal | -| **IO MCU** | STM32F103 | STM32F103 | STM32F103 | -| **Secure Element** | NXP SE051 | NXP SE051 | Not supported | -| **PAB Standard** | Supported | Supported | Not supported | -| **Ethernet** | Supported | Supported | Not supported | -| **IMUs** | 3× | 3× | 2× | -| **Barometers** | 2× | 2× | 1× | -| **Magnetometer** | 1× | 1× | 1× | -| **FMU PWM** | 12× | 8× | 8× | -| **IO PWM** | 8× | 8× | 8× | -| **CAN Bus** | 3× | 2× | 2× | +| Feature | **FMUv6X-RT** | **FMUv6X** | **FMUv6C** | +| ------------------ | --------------- | ------------- | ------------- | +| **FMU MCU** | NXP i.MX RT1176 | STM32H753 | STM32H743V | +| **RAM** | 2 MB | 1 MB | 1 MB | +| **Flash** | 64 MB Octal SPI | 2 MB internal | 2 MB internal | +| **IO MCU** | STM32F103 | STM32F103 | STM32F103 | +| **Secure Element** | NXP SE051 | NXP SE051 | Not supported | +| **PAB Standard** | Supported | Supported | Not supported | +| **Ethernet** | Supported | Supported | Not supported | +| **IMUs** | 3× | 3× | 2× | +| **Barometers** | 2× | 2× | 1× | +| **Magnetometer** | 1× | 1× | 1× | +| **FMU PWM** | 12× | 8× | 8× | +| **IO PWM** | 8× | 8× | 8× | +| **CAN Bus** | 3× | 2× | 2× | ### Licensing and Trademarks diff --git a/docs/en/flight_controller/svehicle_e2.md b/docs/en/flight_controller/svehicle_e2.md index bbddcba59e..61629c8b6a 100644 --- a/docs/en/flight_controller/svehicle_e2.md +++ b/docs/en/flight_controller/svehicle_e2.md @@ -63,6 +63,7 @@ These flight controllers are [manufacturer supported](../flight_controller/autop Order from [S-Vehicle](https://svehicle.cn/). ## Radio Control + A Radio Control (RC) system is required if you want to manually control your vehicle (PX4 does not require a radio system for autonomous flight modes). You will need to select a compatible transmitter/receiver and then bind them so that they communicate (read the instructions that come with your specific transmitter/receiver). diff --git a/docs/en/flight_modes_fw/index.md b/docs/en/flight_modes_fw/index.md index 052bfe7dd3..74a7fe66f0 100644 --- a/docs/en/flight_modes_fw/index.md +++ b/docs/en/flight_modes_fw/index.md @@ -18,7 +18,7 @@ Manual-Easy: - [Altitude](../flight_modes_fw/altitude.md) — Easiest and safest _non-GPS_ manual mode. The only difference compared to _Position mode_ is that the pilot always directly controls the roll angle of the plane and there is no automatic course holding. - Altitude Cruise mode — It behaves exactly like _Altitude mode_, with the only difference being that the manual control failsafe can be disabled. This is done by setting the corresponding flag in [COM_RCL_EXCEPT](../advanced_config/parameter_reference.md#COM_RCL_EXCEPT). In that case the current altitude, airspeed and heading (by leveling out the roll angle) are kept until the manual control link is regained or the mode is exited. -It is highly recommended to only disable the manual control loss failsafe for this mode if there is a stable data link connection to the vehicle at all times, or to enable the data link loss failsafe through [NAV_DLL_ACT](../advanced_config/parameter_reference.md#NAV_DLL_ACT). + It is highly recommended to only disable the manual control loss failsafe for this mode if there is a stable data link connection to the vehicle at all times, or to enable the data link loss failsafe through [NAV_DLL_ACT](../advanced_config/parameter_reference.md#NAV_DLL_ACT). - [Stabilized mode](../flight_modes_fw/stabilized.md) — The pilot directly commands the roll and pitch angle and the vehicle keeps the setpoint until the sticks are moved again. Thrust is directly set by the pilot. Turn coordination is still handled by the controller. @@ -35,6 +35,7 @@ Manual-Acrobatic Autonomous: All autonomous flight modes require a valid position estimate (GPS). Airspeed is actively controlled if an airspeed sensor is installed in any autonomous flight mode. + - [Hold](../flight_modes_fw/hold.md) — Vehicle circles around the GPS hold position at the current altitude. The mode can be used to pause a mission or to help regain control of a vehicle in an emergency. It can be activated with a pre-programmed RC switch or the QGroundControl Pause button. diff --git a/docs/en/flight_modes_fw/land.md b/docs/en/flight_modes_fw/land.md index 43d8ff9294..77a26d0666 100644 --- a/docs/en/flight_modes_fw/land.md +++ b/docs/en/flight_modes_fw/land.md @@ -24,6 +24,7 @@ Where possible, instead use [Return mode](../flight_modes_fw/return.md) with a p - The mode can be triggered using the [MAV_CMD_NAV_LAND](https://mavlink.io/en/messages/common.html#MAV_CMD_NAV_LAND) MAVLink command, or by explicitly switching to Land mode. + ::: ## Technical Summary @@ -40,12 +41,12 @@ The vehicle will flare if configured to do so (see [Flaring](../flight_modes_fw/ Land mode behaviour can be configured using the parameters below. -| Parameter | Description | -| ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| [NAV_LOITER_RAD](../advanced_config/parameter_reference.md#NAV_LOITER_RAD) | The loiter radius that the controller tracks for the whole landing sequence. | -| [FW_LND_ANG](../advanced_config/parameter_reference.md#FW_LND_ANG) | The flight path angle setpoint. | -| [FW_LND_AIRSPD](../advanced_config/parameter_reference.md#FW_LND_AIRSPD) | The airspeed setpoint. | -| [FW_AIRSPD_FLP_SC](../advanced_config/parameter_reference.md#FW_AIRSPD_FLP_SC) | Factor applied to the minimum airspeed when flaps are fully deployed. Necessary if FW_LND_AIRSPD is below FW_AIRSPD_MIN. +| Parameter | Description | +| ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | +| [NAV_LOITER_RAD](../advanced_config/parameter_reference.md#NAV_LOITER_RAD) | The loiter radius that the controller tracks for the whole landing sequence. | +| [FW_LND_ANG](../advanced_config/parameter_reference.md#FW_LND_ANG) | The flight path angle setpoint. | +| [FW_LND_AIRSPD](../advanced_config/parameter_reference.md#FW_LND_AIRSPD) | The airspeed setpoint. | +| [FW_AIRSPD_FLP_SC](../advanced_config/parameter_reference.md#FW_AIRSPD_FLP_SC) | Factor applied to the minimum airspeed when flaps are fully deployed. Necessary if FW_LND_AIRSPD is below FW_AIRSPD_MIN. | ## See Also diff --git a/docs/en/flight_modes_fw/mission.md b/docs/en/flight_modes_fw/mission.md index 91f48a8300..f3ee6ee95f 100644 --- a/docs/en/flight_modes_fw/mission.md +++ b/docs/en/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". @@ -163,9 +162,9 @@ Mission Items: - [MAV_CMD_DO_SET_CAMERA_ZOOM](https://mavlink.io/en/messages/common.html#MAV_CMD_DO_SET_CAMERA_ZOOM) - [MAV_CMD_DO_SET_CAMERA_FOCUS](https://mavlink.io/en/messages/common.html#MAV_CMD_DO_SET_CAMERA_FOCUS) - [MAV_CMD_DO_AUTOTUNE_ENABLE](https://mavlink.io/en/messages/common.html#MAV_CMD_DO_AUTOTUNE_ENABLE) - - Disabling autotune by setting `param1` to zero is currently not supported. To abort autotune during a mission, switch to another flight mode. - - Axis selection specified in the MAVLink message is ignored (`param2` must be set to 0). - Instead, the axis bitmask defined by [`FW_AT_AXES`](../advanced_config/parameter_reference.md#FW_AT_AXES) is used. + - Disabling autotune by setting `param1` to zero is currently not supported. To abort autotune during a mission, switch to another flight mode. + - Axis selection specified in the MAVLink message is ignored (`param2` must be set to 0). + Instead, the axis bitmask defined by [`FW_AT_AXES`](../advanced_config/parameter_reference.md#FW_AT_AXES) is used. GeoFence Definitions diff --git a/docs/en/flight_modes_mc/altitude.md b/docs/en/flight_modes_mc/altitude.md index 7d35590443..b08688caa0 100644 --- a/docs/en/flight_modes_mc/altitude.md +++ b/docs/en/flight_modes_mc/altitude.md @@ -43,8 +43,8 @@ The horizontal position of the vehicle can move due to wind (or pre-existing mom The mode is affected by the following parameters: -| Parameter | Description | -| ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [MPC_Z_VEL_MAX_UP](../advanced_config/parameter_reference.md#MPC_Z_VEL_MAX_UP) | Maximum vertical ascent velocity. Default: 3 m/s. | -| [MPC_Z_VEL_MAX_DN](../advanced_config/parameter_reference.md#MPC_Z_VEL_MAX_DN) | Maximum vertical descent velocity. Default: 1 m/s. | -| `MPC_XXXX` | Most of the MPC_xxx parameters affect flight behaviour in this mode (at least to some extent). For example, [MPC_THR_HOVER](../advanced_config/parameter_reference.md#MPC_THR_HOVER) defines the thrust at which a vehicle will hover. | +| Parameter | Description | +| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [MPC_Z_VEL_MAX_UP](../advanced_config/parameter_reference.md#MPC_Z_VEL_MAX_UP) | Maximum vertical ascent velocity. Default: 3 m/s. | +| [MPC_Z_VEL_MAX_DN](../advanced_config/parameter_reference.md#MPC_Z_VEL_MAX_DN) | Maximum vertical descent velocity. Default: 1 m/s. | +| `MPC_XXXX` | Most of the MPC_xxx parameters affect flight behaviour in this mode (at least to some extent). For example, [MPC_THR_HOVER](../advanced_config/parameter_reference.md#MPC_THR_HOVER) defines the thrust at which a vehicle will hover. | diff --git a/docs/en/flight_modes_mc/follow_me.md b/docs/en/flight_modes_mc/follow_me.md index 08ff63687d..33b02a896e 100644 --- a/docs/en/flight_modes_mc/follow_me.md +++ b/docs/en/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. @@ -163,7 +162,6 @@ The follow-me behavior can be configured using the following parameters: - This video demonstrates a Google-Earth view perspective, by adjusting the height to around 50 meters (high), distance to 1 meter (close). Which allows a perspective as shot from a satellite. ## Known Issues diff --git a/docs/en/flight_modes_mc/mission.md b/docs/en/flight_modes_mc/mission.md index 61e2358929..04e7ccf433 100644 --- a/docs/en/flight_modes_mc/mission.md +++ b/docs/en/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". @@ -167,8 +166,8 @@ Mission Items: - `MAV_CMD_NAV_VTOL_TAKEOFF.param2` (transition heading) is ignored. Instead the heading to the next waypoint is used for the transition heading. - [MAV_CMD_DO_AUTOTUNE_ENABLE](https://mavlink.io/en/messages/common.html#MAV_CMD_DO_AUTOTUNE_ENABLE) - - Disabling autotune by setting `param1` to zero is currently not supported. To abort autotune during a mission, switch to another flight mode. - - Axis selection specified in the MAVLink message is ignored (`param2` must be set to 0) . + - Disabling autotune by setting `param1` to zero is currently not supported. To abort autotune during a mission, switch to another flight mode. + - Axis selection specified in the MAVLink message is ignored (`param2` must be set to 0) . GeoFence Definitions diff --git a/docs/en/flight_modes_vtol/return.md b/docs/en/flight_modes_vtol/return.md index cfcccf68ae..46ec8ec1e4 100644 --- a/docs/en/flight_modes_vtol/return.md +++ b/docs/en/flight_modes_vtol/return.md @@ -47,7 +47,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/en/flight_stack/controller_diagrams.md b/docs/en/flight_stack/controller_diagrams.md index b5465d5072..26453c1361 100644 --- a/docs/en/flight_stack/controller_diagrams.md +++ b/docs/en/flight_stack/controller_diagrams.md @@ -13,24 +13,24 @@ The diagrams use the standard [PX4 notation](../contribute/notation.md) (and eac ![MC Controller Diagram](../../assets/diagrams/mc_control_arch.jpg) -* This is a standard cascaded control architecture. -* The controllers are a mix of P and PID controllers. -* Estimates come from [EKF2](../advanced_config/tuning_the_ecl_ekf.md). -* Depending on the mode, the outer (position) loop is bypassed (shown as a multiplexer after the outer loop). +- This is a standard cascaded control architecture. +- The controllers are a mix of P and PID controllers. +- Estimates come from [EKF2](../advanced_config/tuning_the_ecl_ekf.md). +- Depending on the mode, the outer (position) loop is bypassed (shown as a multiplexer after the outer loop). The position loop is only used when holding position or when the requested velocity in an axis is null. ### Multicopter Angular Rate Controller ![MC Rate Control Diagram](../../assets/diagrams/mc_angular_rate_diagram.jpg) -* K-PID controller. See [Rate Controller](../config_mc/pid_tuning_guide_multicopter.md#rate-controller) for more information. -* The integral authority is limited to prevent wind up. -* The outputs are limited (in the control allocation module), usually at -1 and 1. -* A Low Pass Filter (LPF) is used on the derivative path to reduce noise (the gyro driver provides a filtered derivative to the controller). +- K-PID controller. See [Rate Controller](../config_mc/pid_tuning_guide_multicopter.md#rate-controller) for more information. +- The integral authority is limited to prevent wind up. +- The outputs are limited (in the control allocation module), usually at -1 and 1. +- A Low Pass Filter (LPF) is used on the derivative path to reduce noise (the gyro driver provides a filtered derivative to the controller). ::: 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) ::: @@ -41,51 +41,51 @@ The diagrams use the standard [PX4 notation](../contribute/notation.md) (and eac ![MC Angle Control Diagram](../../assets/diagrams/mc_angle_diagram.jpg) -* The attitude controller makes use of [quaternions](https://en.wikipedia.org/wiki/Quaternion). -* The controller is implemented from this [article](https://www.research-collection.ethz.ch/bitstream/handle/20.500.11850/154099/eth-7387-01.pdf). -* When tuning this controller, the only parameter of concern is the P gain. -* The rate command is saturated. +- The attitude controller makes use of [quaternions](https://en.wikipedia.org/wiki/Quaternion). +- The controller is implemented from this [article](https://www.research-collection.ethz.ch/bitstream/handle/20.500.11850/154099/eth-7387-01.pdf). +- When tuning this controller, the only parameter of concern is the P gain. +- The rate command is saturated. ### Multicopter Acceleration to Thrust and Attitude Setpoint Conversion -* The acceleration setpoints generated by the velocity controller will be converted to thrust and attitude setpoints. -* Converted acceleration setpoints will be saturated and prioritized in vertical and horizontal thrust. -* Thrust saturation is done after computing the corresponding thrust: - 1. Compute required vertical thrust (`thrust_z`) - 1. Saturate `thrust_z` with `MPC_THR_MAX` - 1. Saturate `thrust_xy` with `(MPC_THR_MAX^2 - thrust_z^2)^0.5` - -Implementation details can be found in `PositionControl.cpp` and `ControlMath.cpp`. +- The acceleration setpoints generated by the velocity controller will be converted to thrust and attitude setpoints. +- Converted acceleration setpoints will be saturated and prioritized in vertical and horizontal thrust. +- Thrust saturation is done after computing the corresponding thrust: + 1. Compute required vertical thrust (`thrust_z`) + 1. Saturate `thrust_z` with `MPC_THR_MAX` + 1. Saturate `thrust_xy` with `(MPC_THR_MAX^2 - thrust_z^2)^0.5` + +Implementation details can be found in `PositionControl.cpp` and `ControlMath.cpp`. ### Multicopter Velocity Controller ![MC Velocity Control Diagram](../../assets/diagrams/mc_velocity_diagram.png) -* PID controller to stabilise velocity. Commands an acceleration. -* The integrator includes an anti-reset windup (ARW) using a clamping method. -* The commanded acceleration is NOT saturated - a saturation will be applied to the converted thrust setpoints in combination with the maximum tilt angle. -* Horizontal gains set via parameter `MPC_XY_VEL_P_ACC`, `MPC_XY_VEL_I_ACC` and `MPC_XY_VEL_D_ACC`. -* Vertical gains set via parameter `MPC_Z_VEL_P_ACC`, `MPC_Z_VEL_I_ACC` and `MPC_Z_VEL_D_ACC`. +- PID controller to stabilise velocity. Commands an acceleration. +- The integrator includes an anti-reset windup (ARW) using a clamping method. +- The commanded acceleration is NOT saturated - a saturation will be applied to the converted thrust setpoints in combination with the maximum tilt angle. +- Horizontal gains set via parameter `MPC_XY_VEL_P_ACC`, `MPC_XY_VEL_I_ACC` and `MPC_XY_VEL_D_ACC`. +- Vertical gains set via parameter `MPC_Z_VEL_P_ACC`, `MPC_Z_VEL_I_ACC` and `MPC_Z_VEL_D_ACC`. ### Multicopter Position Controller ![MC Position Control Diagram](../../assets/diagrams/mc_position_diagram.png) -* Simple P controller that commands a velocity. -* The commanded velocity is saturated to keep the velocity in certain limits. See parameter `MPC_XY_VEL_MAX`. This parameter sets the maximum possible horizontal velocity. This differs from the maximum **desired** speed `MPC_XY_CRUISE` (autonomous modes) and `MPC_VEL_MANUAL` (manual position control mode). -* Horizontal P gain set via parameter `MPC_XY_P`. -* Vertical P gain set via parameter `MPC_Z_P`. - +- Simple P controller that commands a velocity. +- The commanded velocity is saturated to keep the velocity in certain limits. See parameter `MPC_XY_VEL_MAX`. This parameter sets the maximum possible horizontal velocity. This differs from the maximum **desired** speed `MPC_XY_CRUISE` (autonomous modes) and `MPC_VEL_MANUAL` (manual position control mode). +- Horizontal P gain set via parameter `MPC_XY_P`. +- Vertical P gain set via parameter `MPC_Z_P`. #### Combined Position and Velocity Controller Diagram ![MC Position Controller Diagram](../../assets/diagrams/px4_mc_position_controller_diagram.png) -* Mode dependent feedforwards (ff) - e.g. Mission mode trajectory generator (jerk-limited trajectory) computes position, velocity and acceleration setpoints. -* Acceleration setpoints (inertial frame) will be transformed (with yaw setpoint) into attitude setpoints (quaternion) and collective thrust setpoint. +- Mode dependent feedforwards (ff) - e.g. Mission mode trajectory generator (jerk-limited trajectory) computes position, velocity and acceleration setpoints. +- Acceleration setpoints (inertial frame) will be transformed (with yaw setpoint) into attitude setpoints (quaternion) and collective thrust setpoint. + ## Fixed-Wing Position Controller ### Total Energy Control System (TECS) @@ -117,7 +117,6 @@ An increase in pitch angle transfers kinetic to potential energy and a negative The control problem was therefore decoupled by transforming the initial setpoints into energy quantities which can be controlled independently. We use thrust to regulate the specific total energy of the vehicle and pitch maintain a specific balance between potential (height) and kinetic (speed) energy. - #### Total energy control loop ![Energy loop](../../assets/diagrams/TECS_throttle.png) @@ -130,7 +129,6 @@ We use thrust to regulate the specific total energy of the vehicle and pitch mai - The total energy of an aircraft is the sum of kinetic and potential energy: $$E_T = \frac{1}{2} m V_T^2 + m g h$$ @@ -178,7 +176,7 @@ The angular position of the control effectors (ailerons, elevators, rudders, ... Furthermore, since the control surfaces are more effective at high speed and less effective at low speed, the controller - tuned for cruise speed - is scaled using the airspeed measurements (if such a sensor is used). ::: 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. @@ -188,14 +186,12 @@ In order to keep a constant rate, this damping can be compensated using feedforw ### Turn coordination The roll and pitch controllers have the same structure and the longitudinal and lateral dynamics are assumed to be uncoupled enough to work independently. -The yaw controller, however, generates its yaw rate setpoint using the turn coordination constraint in order to minimize lateral acceleration, generated when the aircraft is slipping. The turn coordination algorithm is based solely on coordinated turn geometry calculation. +The yaw controller, however, generates its yaw rate setpoint using the turn coordination constraint in order to minimize lateral acceleration, generated when the aircraft is slipping. 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}}$$ The yaw rate controller also helps to counteract [adverse yaw effects](https://youtu.be/sNV_SDDxuWk) and to damp the [Dutch roll mode](https://en.wikipedia.org/wiki/Dutch_roll) by providing extra directional damping. - - ## VTOL Flight Controller ![VTOL Attitude Controller Diagram](../../assets/diagrams/VTOL_controller_diagram.png) @@ -212,12 +208,11 @@ The inputs into this block are called "virtual" as, depending on the current VTO For a standard and tilt-rotor VTOL, during transition the fixed-wing attitude controller produces the rate setpoints, which are then fed into the separate rate controllers, resulting in torque commands for the multicopter and fixed-wing actuators. For tailsitters, during transition the multicopter attitude controller is running. -The outputs of the VTOL attitude block are separate torque and force commands for the multicopter and fixed-wing actuators (two instances for `vehicle_torque_setpoint` and `vehicle_thrust_setpoint`). +The outputs of the VTOL attitude block are separate torque and force commands for the multicopter and fixed-wing actuators (two instances for `vehicle_torque_setpoint` and `vehicle_thrust_setpoint`). These are handled in an airframe-specific control allocation class. For more information on the tuning of the transition logic inside the VTOL block, see [VTOL Configuration](../config_vtol/index.md). - ### Airspeed Scaling The objective of this section is to explain with the help of equations why and how the output of the rate PI and feedforward (FF) controllers can be scaled with airspeed to improve the control performance. diff --git a/docs/en/flying/first_flight_guidelines.md b/docs/en/flying/first_flight_guidelines.md index 2aa3fd4bac..7facee2cb7 100644 --- a/docs/en/flying/first_flight_guidelines.md +++ b/docs/en/flying/first_flight_guidelines.md @@ -1,6 +1,6 @@ # First Flight Guidelines -Learning to fly is a lot of fun! +Learning to fly is a lot of fun! These guidelines are designed to ensure that your first flight experience is enjoyable, educational, and safe. ## Know the Law @@ -10,10 +10,10 @@ Familiarise yourself with the flight regulations in your area. ## Select a Good Location -Selecting the right location for your first flight is critical. +Selecting the right location for your first flight is critical. The main things to look for are: -- Make sure the space is open. +- Make sure the space is open. There should be no high trees, hills or buildings nearby, because those will impair the GNSS reception. - Make sure no people are within 100 m (300 feet). - Make sure there is nothing that you shouldn't crash onto within 100 m - no houses, structures, cars, water, corn fields (hard to find drones in). @@ -24,12 +24,12 @@ The main things to look for are: ## Bring a Pro -Bring someone with experience for your first flight. +Bring someone with experience for your first flight. Get them to help you to run through the pre-flight checks and let them intervene if something goes wrong! ## Plan the Flight -Plan the flight before taking off. +Plan the flight before taking off. Make sure you know the whole route and where/how the vehicle will land. ## Limit the Damage diff --git a/docs/en/flying/missions.md b/docs/en/flying/missions.md index 607ca605f7..7817fa9a2a 100644 --- a/docs/en/flying/missions.md +++ b/docs/en/flying/missions.md @@ -5,9 +5,7 @@ A mission is a predefined flight plan, which can be planned in QGroundControl an Missions typically include items for controlling taking off, flying a sequence of waypoints, capturing images and/or video, deploying cargo, and landing. QGroundControl allows you to plan missions using a fully manual approach, or you can use its more advanced features to plan ground area surveys, corridor surveys, or structure surveys. -This topic provides an overview of how to plan and fly missions. - - +This topic provides an overview of how to plan and fly missions. ## Planning Missions diff --git a/docs/en/flying/package_delivery_mission.md b/docs/en/flying/package_delivery_mission.md index 3ff6f87874..9ad16c403c 100644 --- a/docs/en/flying/package_delivery_mission.md +++ b/docs/en/flying/package_delivery_mission.md @@ -32,7 +32,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. 1. 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. @@ -48,7 +47,6 @@ To create a package delivery mission (with a Gripper): 1. Configure the action for the gripper in the editor. ![Gripper action setting](../../assets/flying/qgc_mission_plan_gripper_action_setting.png) - - Set it to "Release" in order to release the package. - The gripper ID does not need to be set for now. diff --git a/docs/en/flying/plan_safety_points.md b/docs/en/flying/plan_safety_points.md index dfca1f4087..311517c2c7 100644 --- a/docs/en/flying/plan_safety_points.md +++ b/docs/en/flying/plan_safety_points.md @@ -1,25 +1,26 @@ # Safety Points (Rally Points) Safety points are alternative [Return Mode](../flight_modes/return.md) destinations/landing points. -When enabled, the vehicle will choose the *closest return destination* of: home location, mission landing pattern or a *safety point*. +When enabled, the vehicle will choose the _closest return destination_ of: home location, mission landing pattern or a _safety point_. ![Safety Points](../../assets/qgc/plan/rally_point/rally_points.jpg) ## Creating/Defining Safety Points -Safety points are created in *QGroundControl* (which calls them "Rally Points"). +Safety points are created in _QGroundControl_ (which calls them "Rally Points"). At high level: + 1. Open **QGroundControl > Plan View** -1. Select the **Rally** tab/button on the *Plan Editor* (right of screen). +1. Select the **Rally** tab/button on the _Plan Editor_ (right of screen). 1. Select the **Rally Point** button on the toolbar (left of screen). 1. Click anywhere on the map to add a rally/safety point. - - The *Plan Editor* displays and lets you edit the current rally point (shown as a green **R** on the map). + - The _Plan Editor_ displays and lets you edit the current rally point (shown as a green **R** on the map). - You can select another rally point (shown as a more orange/yellow **R** on the map) to edit it instead. 1. Select the **Upload Required** button to upload the rally points (along with any [mission](../flying/missions.md) and [geofence](../flying/geofence.md)) to the vehicle. :::tip -More complete documentation can be found in the *QGroundControl User Guide*: [Plan View - Rally Points](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/plan_view/plan_rally_points.html). +More complete documentation can be found in the _QGroundControl User Guide_: [Plan View - Rally Points](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/plan_view/plan_rally_points.html). ::: ## Using Safety Points @@ -27,4 +28,5 @@ More complete documentation can be found in the *QGroundControl User Guide*: [Pl Safety points are not enabled by default (there are a number of different [Return Mode Types](../flight_modes/return.md#return_types)). To enable safety points: + 1. [Use the QGroundControl Parameter Editor](../advanced_config/parameters.md) to set parameter: [RTL_TYPE=3](../advanced_config/parameter_reference.md#RTL_TYPE). diff --git a/docs/en/flying/terrain_following_holding.md b/docs/en/flying/terrain_following_holding.md index fb4cc842f6..6ce0f46bdc 100644 --- a/docs/en/flying/terrain_following_holding.md +++ b/docs/en/flying/terrain_following_holding.md @@ -1,27 +1,27 @@ # Terrain Following/Holding -PX4 supports [Terrain Following](#terrain_following) and [Terrain Hold](#terrain_hold) in [Position](../flight_modes_mc/position.md) and [Altitude modes](../flight_modes_mc/altitude.md), on *multicopters* and *VTOL vehicles in MC mode* that have a [distance sensor](../sensor/rangefinders.md). +PX4 supports [Terrain Following](#terrain_following) and [Terrain Hold](#terrain_hold) in [Position](../flight_modes_mc/position.md) and [Altitude modes](../flight_modes_mc/altitude.md), on _multicopters_ and _VTOL vehicles in MC mode_ that have a [distance sensor](../sensor/rangefinders.md). ::: info PX4 does not "natively" support terrain following in missions. -*QGroundControl* can be used to define missions that *approximately* follow terrain (this just sets waypoint altitudes based on height above terrain, where terrain height at waypoints is obtained from a map database). +_QGroundControl_ can be used to define missions that _approximately_ follow terrain (this just sets waypoint altitudes based on height above terrain, where terrain height at waypoints is obtained from a map database). ::: ## Terrain Following -*Terrain following* enables a vehicle to automatically maintain a relatively constant height above ground level when traveling at low altitudes. +_Terrain following_ enables a vehicle to automatically maintain a relatively constant height above ground level when traveling at low altitudes. This is useful for avoiding obstacles and for maintaining constant height when flying over varied terrain (e.g. for aerial photography). :::tip -This feature can be enabled in [Position](../flight_modes_mc/position.md) and [Altitude modes](../flight_modes_mc/altitude.md), on *multicopters* and *VTOL vehicles in MC mode* that have a [distance sensor](../sensor/rangefinders.md). +This feature can be enabled in [Position](../flight_modes_mc/position.md) and [Altitude modes](../flight_modes_mc/altitude.md), on _multicopters_ and _VTOL vehicles in MC mode_ that have a [distance sensor](../sensor/rangefinders.md). ::: -When *terrain following* is enabled, PX4 uses the output of the EKF estimator to provide the altitude estimate, and the estimated terrain altitude (calculated from distance sensor measurements using another estimator) to provide the altitude setpoint. +When _terrain following_ is enabled, PX4 uses the output of the EKF estimator to provide the altitude estimate, and the estimated terrain altitude (calculated from distance sensor measurements using another estimator) to provide the altitude setpoint. As the distance to ground changes, the altitude setpoint adjusts to keep the height above ground constant. -At higher altitudes (when the estimator reports that the distance sensor data is invalid) the vehicle switches to *altitude following*, and will typically fly at a near-constant height above mean sea level (AMSL) using an absolute height sensor for altitude data. +At higher altitudes (when the estimator reports that the distance sensor data is invalid) the vehicle switches to _altitude following_, and will typically fly at a near-constant height above mean sea level (AMSL) using an absolute height sensor for altitude data. ::: info More precisely, the vehicle will use the available selected sources of altitude data as defined in [Using PX4's Navigation Filter (EKF2) > Height](../advanced_config/tuning_the_ecl_ekf.md#height). @@ -29,24 +29,23 @@ More precisely, the vehicle will use the available selected sources of altitude Terrain following is enabled by setting [MPC_ALT_MODE](../advanced_config/parameter_reference.md#MPC_ALT_MODE) to `1`. - ## Terrain Hold -*Terrain hold* uses a distance sensor to help a vehicle to better maintain a constant height above ground in altitude control modes, when horizontally stationary at low altitude. +_Terrain hold_ uses a distance sensor to help a vehicle to better maintain a constant height above ground in altitude control modes, when horizontally stationary at low altitude. This allows a vehicle to avoid altitude changes due to barometer drift or excessive barometer interference from rotor wash. ::: info -This feature can be enabled in [Position](../flight_modes_mc/position.md) and [Altitude modes](../flight_modes_mc/altitude.md), on *multicopters* and *VTOL vehicles in MC mode* that have a [distance sensor](../sensor/rangefinders.md). +This feature can be enabled in [Position](../flight_modes_mc/position.md) and [Altitude modes](../flight_modes_mc/altitude.md), on _multicopters_ and _VTOL vehicles in MC mode_ that have a [distance sensor](../sensor/rangefinders.md). ::: -When moving horizontally (`speed >` [MPC_HOLD_MAX_XY](../advanced_config/parameter_reference.md#MPC_HOLD_MAX_XY)), or above the altitude where the distance sensor is providing valid data, the vehicle will switch into *altitude following*. +When moving horizontally (`speed >` [MPC_HOLD_MAX_XY](../advanced_config/parameter_reference.md#MPC_HOLD_MAX_XY)), or above the altitude where the distance sensor is providing valid data, the vehicle will switch into _altitude following_. Terrain holding is enabled by setting [MPC_ALT_MODE](../advanced_config/parameter_reference.md#MPC_ALT_MODE) to `2`. ::: info -*Terrain hold* is implemented similarly to [terrain following](#terrain_following). +_Terrain hold_ is implemented similarly to [terrain following](#terrain_following). It uses the output of the EKF estimator to provide the altitude estimate, and the estimated terrain altitude (calculated from distance sensor measurements using a separate, single state terrain estimator) to provide the altitude setpoint. If the distance to ground changes due to external forces, the altitude setpoint adjusts to keep the height above ground constant. ::: diff --git a/docs/en/frames_plane/index.md b/docs/en/frames_plane/index.md index ccbdc9547a..6108b190f3 100644 --- a/docs/en/frames_plane/index.md +++ b/docs/en/frames_plane/index.md @@ -22,7 +22,6 @@ The linked sections instructions for assembling and configuring fixed-wing frame ## Videos - --- diff --git a/docs/en/frames_rover/index.md b/docs/en/frames_rover/index.md index 09492e324c..b3a705ed31 100644 --- a/docs/en/frames_rover/index.md +++ b/docs/en/frames_rover/index.md @@ -9,13 +9,12 @@ Maintainer volunteers, [contribution](../contribute/index.md) of new features, n ![Rovers](../../assets/airframes/rover/rovers.png) - PX4 provides support for the three most common types of rovers: -| Rover Type | Steering | +| Rover Type | Steering | | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [**Ackermann**](#ackermann) | Direction is controlled by pointing wheels in the direction of travel. This kind of steering is used on most commercial vehicles, including cars, trucks etc. | -| [**Differential**](#differential) | Direction is controlled by moving the left- and right-side wheels at different speeds. | -| [**Mecanum**](#mecanum) | Direction is controlled by moving each mecanum wheel individually at different speeds and in different directions. | +| [**Ackermann**](#ackermann) | Direction is controlled by pointing wheels in the direction of travel. This kind of steering is used on most commercial vehicles, including cars, trucks etc. | +| [**Differential**](#differential) | Direction is controlled by moving the left- and right-side wheels at different speeds. | +| [**Mecanum**](#mecanum) | Direction is controlled by moving each mecanum wheel individually at different speeds and in different directions. | The supported frames can be seen in [Airframes Reference > Rover](../airframes/airframe_reference.md#rover). diff --git a/docs/en/frames_vtol/standardvtol.md b/docs/en/frames_vtol/standardvtol.md index f6fab32ad4..d244912c52 100644 --- a/docs/en/frames_vtol/standardvtol.md +++ b/docs/en/frames_vtol/standardvtol.md @@ -4,9 +4,7 @@ A **Standard VTOL** is a [VTOL](../frames_vtol/index.md) that has _completely se ![Vertical Technologies: Deltaquad QuadPlane VTOL](../../assets/airframes/vtol/vertical_technologies_deltaquad/hero_small.png) -*Vertical Technologies: Deltaquad QuadPlane VTOL* - - +_Vertical Technologies: Deltaquad QuadPlane VTOL_ ## Videos diff --git a/docs/en/frames_vtol/tailsitter.md b/docs/en/frames_vtol/tailsitter.md index 7a393f3720..cddc2bfb1e 100644 --- a/docs/en/frames_vtol/tailsitter.md +++ b/docs/en/frames_vtol/tailsitter.md @@ -86,7 +86,6 @@ This section contains videos that are specific to Tailsitter VTOL (videos that a - ## Gallery
diff --git a/docs/en/frames_vtol/tiltrotor.md b/docs/en/frames_vtol/tiltrotor.md index 320e23a598..c3ba16af08 100644 --- a/docs/en/frames_vtol/tiltrotor.md +++ b/docs/en/frames_vtol/tiltrotor.md @@ -4,7 +4,6 @@ A **Tiltrotor VTOL** is a [VTOL](../frames_vtol/index.md) vehicle that has rotor ![Horizon Hobby E-flite Convergence](../../assets/airframes/vtol/eflite_convergence_pixfalcon/hero.jpg) - ## Builds - [Convergence Tiltrotor](../frames_vtol/vtol_tiltrotor_eflite_convergence_pixfalcon.md) diff --git a/docs/en/frames_vtol/vtol_tiltrotor_eflite_convergence_pixfalcon.md b/docs/en/frames_vtol/vtol_tiltrotor_eflite_convergence_pixfalcon.md index 4d81aa8625..36ea66ad45 100644 --- a/docs/en/frames_vtol/vtol_tiltrotor_eflite_convergence_pixfalcon.md +++ b/docs/en/frames_vtol/vtol_tiltrotor_eflite_convergence_pixfalcon.md @@ -4,20 +4,21 @@ The [E-Flite Convergence](https://youtu.be/HNedXQ_jhYo) can easily be converted There is not much space but it's enough for a [Pixfalcon](../flight_controller/pixfalcon.md) flight controller with GPS and telemetry. ::: info -The original Horizon Hobby *E-Flite Convergence* frame and [Pixfalcon](../flight_controller/pixfalcon.md) have been discontinued. +The original Horizon Hobby _E-Flite Convergence_ frame and [Pixfalcon](../flight_controller/pixfalcon.md) have been discontinued. Alternatives are provided in the [Purchase](#where-to-buy) section. ::: - ## Where to Buy Vehicle frame options: + - **WL Tech XK X450** - [AliExpress](https://www.aliexpress.com/item/1005001946025611.html) - **JJRC M02** - [Banggood (AU)](https://au.banggood.com/JJRC-M02-2_4G-6CH-450mm-Wingspan-EPO-Brushless-6-axis-Gyro-Aerobatic-RC-Airplane-RTF-3D-or-6G-Mode-Aircraft-p-1588201.html), [AliExpress](https://www.aliexpress.com/item/4001031497018.html) Flight controller options (): + - [Pixhawk 4 Mini](../flight_controller/pixhawk4_mini.md) - [Holybro Pixhawk Mini](../flight_controller/pixhawk_mini.md). - Any other compatible flight controller with small enough form-factor. @@ -25,6 +26,7 @@ Flight controller options (): ## Hardware Setup The vehicle needs 7 PWM signals for the motors and control surfaces: + - Motor (left/right/back) - Tilt servos (right/left) - Elevons (left/right) @@ -38,7 +40,6 @@ Note that left and right in the configuration screen and frame reference are def - ### Flight Controller The flight controller can be mounted at the same place the original autopilot was. @@ -58,14 +59,14 @@ That way the GPS can be put inside the body and is nicely stowed away without co ![Mount GPS](../../assets/airframes/vtol/eflite_convergence_pixfalcon/eflight_convergence_gps_mounting.jpg) - ## PX4 Configuration -Follow the [Standard Configuration](../config/index.md) in *QGroundControl* (radio, sensors, flight modes, etc.). +Follow the [Standard Configuration](../config/index.md) in _QGroundControl_ (radio, sensors, flight modes, etc.). The particular settings that are relevant to this vehicle are: + - [Airframe](../config/airframe.md) - - Select the airframe configuration **E-flite Convergence** under **VTOL Tiltrotor** and restart *QGroundControl*. + - Select the airframe configuration **E-flite Convergence** under **VTOL Tiltrotor** and restart _QGroundControl_. ![QGroundControl Vehicle Setting - Airframe selection E-Flight](../../assets/airframes/vtol/eflite_convergence_pixfalcon/qgc_setup_airframe.jpg) - [Flight Modes/Switches](../config/flight_mode.md) - As this is a VTOL vehicle, you must [assign an RC controller switch](../config/flight_mode.md#what-flight-modes-and-switches-should-i-set) for transitioning between multicopter and fixed-wing modes. diff --git a/docs/en/getting_started/flight_controller_selection.md b/docs/en/getting_started/flight_controller_selection.md index 92c300957d..04a27a42f2 100644 --- a/docs/en/getting_started/flight_controller_selection.md +++ b/docs/en/getting_started/flight_controller_selection.md @@ -33,7 +33,6 @@ Similarly, PX4 can also run natively Raspberry Pi (this approach is not generall - [Raspberry Pi 2/3 Navio2](../flight_controller/raspberry_pi_navio2.md) - [Raspberry Pi 2/3/4 PilotPi Shield](../flight_controller/raspberry_pi_pilotpi.md) - ## Commercial UAVs that can run PX4 PX4 is available on many popular commercial drone products, including some that ship with PX4 and others that can be updated with PX4 (allowing you to add mission planning and other PX4 Flight modes to your vehicle). diff --git a/docs/en/getting_started/led_meanings.md b/docs/en/getting_started/led_meanings.md index cdc86d5cbb..2e6e57e5e4 100644 --- a/docs/en/getting_started/led_meanings.md +++ b/docs/en/getting_started/led_meanings.md @@ -1,7 +1,8 @@ # LED Meanings (Pixhawk Series) [Pixhawk-series flight controllers](../flight_controller/pixhawk_series.md) use LEDs to indicate the current status of the vehicle. -- The [UI LED](#ui_led) provides user-facing status information related to *readiness for flight*. + +- The [UI LED](#ui_led) provides user-facing status information related to _readiness for flight_. - The [Status LEDs](#status_led) provide status for the PX4IO and FMU SoC. They indicate power, bootloader mode and activity, and errors. @@ -9,7 +10,7 @@ ## UI LED -The RGB *UI LED* indicates the current *readiness for flight* status of the vehicle. +The RGB _UI LED_ indicates the current _readiness for flight_ status of the vehicle. This is typically a superbright I2C peripheral, which may or may not be mounted on the flight controller board (i.e. FMUv4 does not have one on board, and typically uses an LED mounted on the GPS). The image below shows the relationship between LED and vehicle status. @@ -19,47 +20,45 @@ 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). Also check that the GPS module is properly attached, Pixhawk is reading your GPS properly, and that the GPS is sending a proper GPS position. ::: ![LED meanings](../../assets/flight_controller/pixhawk_led_meanings.gif) +- **[Solid Blue] Armed, No GPS Lock:** Indicates vehicle has been armed and has no position lock from a GPS unit. + When vehicle is armed, PX4 will unlock control of the motors, allowing you to fly your drone. + As always, exercise caution when arming, as large propellers can be dangerous at high revolutions. + Vehicle cannot perform guided missions in this mode. -* **[Solid Blue] Armed, No GPS Lock:** Indicates vehicle has been armed and has no position lock from a GPS unit. -When vehicle is armed, PX4 will unlock control of the motors, allowing you to fly your drone. -As always, exercise caution when arming, as large propellers can be dangerous at high revolutions. -Vehicle cannot perform guided missions in this mode. +- **[Pulsing Blue] Disarmed, No GPS Lock:** Similar to above, but your vehicle is disarmed. + This means you will not be able to control motors, but all other subsystems are working. -* **[Pulsing Blue] Disarmed, No GPS Lock:** Similar to above, but your vehicle is disarmed. -This means you will not be able to control motors, but all other subsystems are working. +- **[Solid Green] Armed, GPS Lock:** Indicates vehicle has been armed and has a valid position lock from a GPS unit. + When vehicle is armed, PX4 will unlock control of the motors, allowing you to fly your drone. + As always, exercise caution when arming, as large propellers can be dangerous at high revolutions. + In this mode, vehicle can perform guided missions. -* **[Solid Green] Armed, GPS Lock:** Indicates vehicle has been armed and has a valid position lock from a GPS unit. -When vehicle is armed, PX4 will unlock control of the motors, allowing you to fly your drone. -As always, exercise caution when arming, as large propellers can be dangerous at high revolutions. -In this mode, vehicle can perform guided missions. - -* **[Pulsing Green] Disarmed, GPS Lock:** Similar to above, but your vehicle is disarmed. +- **[Pulsing Green] Disarmed, GPS Lock:** Similar to above, but your vehicle is disarmed. This means you will not be able to control motors, but all other subsystems including GPS position lock are working. -* **[Solid Purple] Failsafe Mode:** This mode will activate whenever vehicle encounters an issue during flight, -such as losing manual control, a critically low battery, or an internal error. -During failsafe mode, vehicle will attempt to return to its takeoff location, or may simply descend where it currently is. +- **[Solid Purple] Failsafe Mode:** This mode will activate whenever vehicle encounters an issue during flight, + such as losing manual control, a critically low battery, or an internal error. + During failsafe mode, vehicle will attempt to return to its takeoff location, or may simply descend where it currently is. -* **[Solid Amber] Low Battery Warning:** Indicates your vehicle's battery is running dangerously low. -After a certain point, vehicle will go into failsafe mode. 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. -Attach your autopilot to a Ground Control Station to verify what the problem is. -If you have completed the setup process and autopilot still appears as red and flashing, there may be another error. +- **[Solid Amber] Low Battery Warning:** Indicates your vehicle's battery is running dangerously low. + After a certain point, vehicle will go into failsafe mode. 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. + Attach your autopilot to a Ground Control Station to verify what the problem is. + If you have completed the setup process and autopilot still appears as red and flashing, there may be another error. ## Status LED -Three *Status LEDs* provide status for the FMU SoC, and three more provide status for the PX4IO (if present). +Three _Status LEDs_ provide status for the FMU SoC, and three more provide status for the PX4IO (if present). They indicate power, bootloader mode and activity, and errors. ![Pixhawk 4](../../assets/flight_controller/pixhawk4/pixhawk4_status_leds.jpg) @@ -67,11 +66,11 @@ They indicate power, bootloader mode and activity, and errors. From power on, the FMU and PX4IO CPUs first run the bootloader (BL) and then the application (APP). The table below shows how the Bootloader and then APP use the LEDs to indicate condition. -Color | Label | Bootloader usage | APP usage ---- | --- | --- | --- -Blue | ACT (Activity) | Flutters when the bootloader is receiving data | Indication of ARM state -Red/Amber | B/E (In Bootloader / Error) | Flutters when in the bootloader | Indication of an ERROR -Green |PWR (Power) | Not used by bootloader | Indication of ARM state +| Color | Label | Bootloader usage | APP usage | +| --------- | --------------------------- | ---------------------------------------------- | ----------------------- | +| Blue | ACT (Activity) | Flutters when the bootloader is receiving data | Indication of ARM state | +| Red/Amber | B/E (In Bootloader / Error) | Flutters when in the bootloader | Indication of an ERROR | +| Green | PWR (Power) | Not used by bootloader | Indication of ARM state | ::: info The LED labels shown above are commonly used, but might differ on some boards. @@ -79,11 +78,11 @@ The LED labels shown above are commonly used, but might differ on some boards. More detailed information for how to interpret the LEDs is given below (where "x" means "any state") -Red/Amber | Blue | Green | Meaning ---- | --- | --- | --- -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 +| Red/Amber | Blue | Green | Meaning | +| --------- | ---- | ----- | ------------------------------------------------------- | +| 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/en/getting_started/tunes.md b/docs/en/getting_started/tunes.md index 15bc693b53..4615c101b1 100644 --- a/docs/en/getting_started/tunes.md +++ b/docs/en/getting_started/tunes.md @@ -9,16 +9,16 @@ The set of standard sounds are listed below. You can search for tune use using the string `TUNE_ID_name`(e.g. `TUNE_ID_PARACHUTE_RELEASE) ::: - ## Boot/Startup These tunes are played during the boot sequence. - + #### Startup Tone + - microSD card successfully mounted (during boot). @@ -26,36 +26,37 @@ These tunes are played during the boot sequence. #### Error Tune + - Hard fault has caused a system reboot. - System set to use PX4IO but no IO present. - UAVCAN is enabled but driver can't start. -- SITL/HITL enabled but *pwm_out_sim* driver can't start. +- SITL/HITL enabled but _pwm_out_sim_ driver can't start. - FMU startup failed. - #### Make File System + -- Formatting microSD card. +- Formatting microSD card. - Mounting failed (if formatting succeeds boot sequence will try to mount again). - No microSD card. - #### Format Failed + - Formatting microSD card failed (following previous attempt to mount card). - -#### Program PX4IO +#### Program PX4IO + - Starting to program PX4IO. @@ -63,6 +64,7 @@ These tunes are played during the boot sequence. #### Program PX4IO Success + - PX4IO programming succeeded. @@ -70,21 +72,23 @@ These tunes are played during the boot sequence. #### Program PX4IO Fail + - PX4IO programming failed. - PX4IO couldn't start. - AUX Mixer not found. - ## Operational These tones/tunes are emitted during normal operation. + #### Error Tune + - RC Loss @@ -92,6 +96,7 @@ These tones/tunes are emitted during normal operation. #### Notify Positive Tone + - Calibration succeeded. @@ -102,6 +107,7 @@ These tones/tunes are emitted during normal operation. #### Notify Neutral Tone + - Mission is valid and has no warnings. @@ -111,6 +117,7 @@ These tones/tunes are emitted during normal operation. #### Notify Negative Tone + - Calibration failed. @@ -123,6 +130,7 @@ These tones/tunes are emitted during normal operation. #### Arming Warning + - Vehicle is now armed. @@ -130,6 +138,7 @@ These tones/tunes are emitted during normal operation. #### Arming Failure Tune + - Arming failed @@ -137,6 +146,7 @@ These tones/tunes are emitted during normal operation. #### Battery Warning Slow + - Low battery warning ([failsafe](../config/safety.md#battery-level-failsafe)). @@ -144,27 +154,29 @@ These tones/tunes are emitted during normal operation. #### Battery Warning Fast + - Critical low battery warning ([failsafe](../config/safety.md#battery-level-failsafe)). - #### GPS Warning Slow + #### Parachute Release + - Parachute release triggered. - #### Single Beep + - Magnetometer/Compass calibration: Notify user to start rotating vehicle. @@ -172,6 +184,7 @@ These tones/tunes are emitted during normal operation. #### Home Set Tune + - Home position initialised (first time only). diff --git a/docs/en/getting_started/vehicle_status.md b/docs/en/getting_started/vehicle_status.md index 9fed271f74..b77083e876 100644 --- a/docs/en/getting_started/vehicle_status.md +++ b/docs/en/getting_started/vehicle_status.md @@ -7,6 +7,6 @@ In addition, PX4 provides more fine-grained information about readiness to fly i The LED, tune, and GCS notifications are linked below: -* [LED Meanings](../getting_started/led_meanings.md) -* [Tune/Sound Meanings](../getting_started/tunes.md) -* [QGroundControl Flight-Readiness Status](../flying/pre_flight_checks.md) +- [LED Meanings](../getting_started/led_meanings.md) +- [Tune/Sound Meanings](../getting_started/tunes.md) +- [QGroundControl Flight-Readiness Status](../flying/pre_flight_checks.md) diff --git a/docs/en/gps_compass/rtk_gps.md b/docs/en/gps_compass/rtk_gps.md index 29e2fe5358..9b12190bdc 100644 --- a/docs/en/gps_compass/rtk_gps.md +++ b/docs/en/gps_compass/rtk_gps.md @@ -20,45 +20,45 @@ The RTK compatible devices below that are expected to work with PX4 (it omits di The table indicates devices that also output yaw, and that can provide yaw when two on-vehicle units are used. It also highlights devices that connect via the CAN bus, and those which support PPK (Post-Processing Kinematic). -| Device | GPS | Compass | [DroneCAN] | [GPS Yaw] | PPK | -| :-------------------------------------------------------------------------------------------------------- | :------------------: | :------: | :--------: | :-----------------------: | :-: | -| [ARK G5 RTK GPS](../dronecan/ark_g5_rtk_gps.md) | [mosaic-G5 P3] | IIS2MDC | ✓ | | | -| [ARK G5 RTK HEADING GPS](../dronecan/ark_g5_rtk_heading_gps.md) | [mosaic-G5 P3H] | IIS2MDC | ✓ | [Heading Capability][mosaic-G5 P3H] | | -| [ARK RTK GPS](../dronecan/ark_rtk_gps.md) | F9P | BMM150 | ✓ | [Dual F9P] | | -| [ARK RTK GPS L1 L5](../dronecan/ark_rtk_gps_l1_l2.md) | F9P | BMM150 | ✓ | | | -| [ARK MOSAIC-X5 RTK GPS](../dronecan/ark_mosaic__rtk_gps.md) | Mosaic-X5 | IIS2MDC | ✓ | [Septentrio Dual Antenna] | | -| [ARK X20 RTK GPS](../dronecan/ark_x20_rtk_gps.md) | X20P | IIS2MDC | ✓ | | | -| [CUAV C-RTK GPS](../gps_compass/rtk_gps_cuav_c-rtk.md) | M8P/M8N | ✓ | | | | -| [CUAV C-RTK2](../gps_compass/rtk_gps_cuav_c-rtk2.md) | F9P | ✓ | | [Dual F9P] | | -| [CUAV C-RTK 9Ps GPS](../gps_compass/rtk_gps_cuav_c-rtk-9ps.md) | F9P | RM3100 | | [Dual F9P] | | -| [CUAV C-RTK2 PPK/RTK GNSS](../gps_compass/rtk_gps_cuav_c-rtk.md) | F9P | RM3100 | | | ✓ | -| [CubePilot Here+ RTK GPS](../gps_compass/rtk_gps_hex_hereplus.md) | M8P | HMC5983 | | | | -| [CubePilot Here3 CAN GNSS GPS (M8N)](https://www.cubepilot.org/#/here/here3) | M8P | ICM20948 | ✓ | | | -| [Drotek SIRIUS RTK GNSS ROVER (F9P)](https://store-drotek.com/911-sirius-rtk-gnss-rover-f9p.html) | F9P | RM3100 | | [Dual F9P] | | -| [DATAGNSS NANO HRTK Receiver](../gps_compass/rtk_gps_datagnss_nano_hrtk.md) | [D10P] | IST8310 | | ✘ | | -| [DATAGNSS GEM1305 RTK Receiver](../gps_compass/rtk_gps_gem1305.md) | TAU951M | IST8310 | | ✘ | | -| [Femtones MINI2 Receiver](../gps_compass/rtk_gps_fem_mini2.md) | FB672, FB6A0 | ✓ | | | | -| [Freefly RTK GPS](../gps_compass/rtk_gps_freefly.md) | F9P | IST8310 | | | | -| [Holybro H-RTK ZED-F9P RTK Rover (DroneCAN variant)](../dronecan/holybro_h_rtk_zed_f9p_gps.md) | F9P | RM3100 | ✓ | [Dual F9P] | | -| [Holybro H-RTK ZED-F9P RTK Rover](https://holybro.com/collections/h-rtk-gps/products/h-rtk-zed-f9p-rover) | F9P | RM3100 | | [Dual F9P] | | -| [Holybro H-RTK F9P Ultralight](https://holybro.com/products/h-rtk-f9p-ultralight) | F9P | IST8310 | | [Dual F9P] | | -| [Holybro H-RTK F9P Helical or Base](../gps_compass/rtk_gps_holybro_h-rtk-f9p.md) | F9P | IST8310 | | [Dual F9P] | | -| [Holybro DroneCAN H-RTK F9P Helical](https://holybro.com/products/dronecan-h-rtk-f9p-helical) | F9P | BMM150 | ✓ | [Dual F9P] | | -| [Holybro H-RTK F9P Rover Lite](../gps_compass/rtk_gps_holybro_h-rtk-f9p.md) | F9P | IST8310 | | | | -| [Holybro DroneCAN H-RTK F9P Rover](https://holybro.com/products/dronecan-h-rtk-f9p-rover) | F9P | BMM150 | | [Dual F9P] | | -| [Holybro H-RTK M8P GNSS](../gps_compass/rtk_gps_holybro_h-rtk-m8p.md) | M8P | IST8310 | | | | -| [Holybro H-RTK Unicore UM982 GPS](../gps_compass/rtk_gps_holybro_unicore_um982.md) | UM982 | IST8310 | | [Unicore Dual Antenna] | | -| [LOCOSYS Hawk R1](../gps_compass/rtk_gps_locosys_r1.md) | MC-1612-V2b | | | | | -| [LOCOSYS Hawk R2](../gps_compass/rtk_gps_locosys_r2.md) | MC-1612-V2b | IST8310 | | | | -| [mRo u-blox ZED-F9 RTK L1/L2 GPS](https://store.mrobotics.io/product-p/m10020d.htm) | F9P | ✓ | | [Dual F9P] | | -| [Navisys L1/L2 ZED-F9P RTK - Base only](https://www.navisys.com.tw/productdetail?name=GR901&class=RTK) | F9P | | | | | -| [RaccoonLab L1/L2 ZED-F9P][RaccoonLab L1/L2 ZED-F9P] | F9P | RM3100 | ✓ | | | -| [RaccoonLab L1/L2 ZED-F9P with external antenna][RaccnLabL1L2ZED-F9P ext_ant] | F9P | RM3100 | ✓ | | | -| [Septentrio AsteRx-m3 Pro](../gps_compass/septentrio_asterx-rib.md) | AsteRx | ✓ | | [Septentrio Dual Antenna] | ✓ | -| [Septentrio mosaic-go](../gps_compass/septentrio_mosaic-go.md) | mosaic X5 / mosaic H | ✓ | | [Septentrio Dual Antenna] | ✓ | -| [SIRIUS RTK GNSS ROVER (F9P)](https://store-drotek.com/911-sirius-rtk-gnss-rover-f9p.html) | F9P | ✓ | | [Dual F9P] | | -| [SparkFun GPS-RTK2 Board - ZED-F9P](https://www.sparkfun.com/products/15136) | F9P | ✓ | | [Dual F9P] | | -| [Trimble MB-Two](../gps_compass/rtk_gps_trimble_mb_two.md) | F9P | ✓ | | ✓ | | +| Device | GPS | Compass | [DroneCAN] | [GPS Yaw] | PPK | +| :-------------------------------------------------------------------------------------------------------- | :------------------: | :------: | :--------: | :---------------------------------: | :-: | +| [ARK G5 RTK GPS](../dronecan/ark_g5_rtk_gps.md) | [mosaic-G5 P3] | IIS2MDC | ✓ | | | +| [ARK G5 RTK HEADING GPS](../dronecan/ark_g5_rtk_heading_gps.md) | [mosaic-G5 P3H] | IIS2MDC | ✓ | [Heading Capability][mosaic-G5 P3H] | | +| [ARK RTK GPS](../dronecan/ark_rtk_gps.md) | F9P | BMM150 | ✓ | [Dual F9P] | | +| [ARK RTK GPS L1 L5](../dronecan/ark_rtk_gps_l1_l2.md) | F9P | BMM150 | ✓ | | | +| [ARK MOSAIC-X5 RTK GPS](../dronecan/ark_mosaic__rtk_gps.md) | Mosaic-X5 | IIS2MDC | ✓ | [Septentrio Dual Antenna] | | +| [ARK X20 RTK GPS](../dronecan/ark_x20_rtk_gps.md) | X20P | IIS2MDC | ✓ | | | +| [CUAV C-RTK GPS](../gps_compass/rtk_gps_cuav_c-rtk.md) | M8P/M8N | ✓ | | | | +| [CUAV C-RTK2](../gps_compass/rtk_gps_cuav_c-rtk2.md) | F9P | ✓ | | [Dual F9P] | | +| [CUAV C-RTK 9Ps GPS](../gps_compass/rtk_gps_cuav_c-rtk-9ps.md) | F9P | RM3100 | | [Dual F9P] | | +| [CUAV C-RTK2 PPK/RTK GNSS](../gps_compass/rtk_gps_cuav_c-rtk.md) | F9P | RM3100 | | | ✓ | +| [CubePilot Here+ RTK GPS](../gps_compass/rtk_gps_hex_hereplus.md) | M8P | HMC5983 | | | | +| [CubePilot Here3 CAN GNSS GPS (M8N)](https://www.cubepilot.org/#/here/here3) | M8P | ICM20948 | ✓ | | | +| [Drotek SIRIUS RTK GNSS ROVER (F9P)](https://store-drotek.com/911-sirius-rtk-gnss-rover-f9p.html) | F9P | RM3100 | | [Dual F9P] | | +| [DATAGNSS NANO HRTK Receiver](../gps_compass/rtk_gps_datagnss_nano_hrtk.md) | [D10P] | IST8310 | | ✘ | | +| [DATAGNSS GEM1305 RTK Receiver](../gps_compass/rtk_gps_gem1305.md) | TAU951M | IST8310 | | ✘ | | +| [Femtones MINI2 Receiver](../gps_compass/rtk_gps_fem_mini2.md) | FB672, FB6A0 | ✓ | | | | +| [Freefly RTK GPS](../gps_compass/rtk_gps_freefly.md) | F9P | IST8310 | | | | +| [Holybro H-RTK ZED-F9P RTK Rover (DroneCAN variant)](../dronecan/holybro_h_rtk_zed_f9p_gps.md) | F9P | RM3100 | ✓ | [Dual F9P] | | +| [Holybro H-RTK ZED-F9P RTK Rover](https://holybro.com/collections/h-rtk-gps/products/h-rtk-zed-f9p-rover) | F9P | RM3100 | | [Dual F9P] | | +| [Holybro H-RTK F9P Ultralight](https://holybro.com/products/h-rtk-f9p-ultralight) | F9P | IST8310 | | [Dual F9P] | | +| [Holybro H-RTK F9P Helical or Base](../gps_compass/rtk_gps_holybro_h-rtk-f9p.md) | F9P | IST8310 | | [Dual F9P] | | +| [Holybro DroneCAN H-RTK F9P Helical](https://holybro.com/products/dronecan-h-rtk-f9p-helical) | F9P | BMM150 | ✓ | [Dual F9P] | | +| [Holybro H-RTK F9P Rover Lite](../gps_compass/rtk_gps_holybro_h-rtk-f9p.md) | F9P | IST8310 | | | | +| [Holybro DroneCAN H-RTK F9P Rover](https://holybro.com/products/dronecan-h-rtk-f9p-rover) | F9P | BMM150 | | [Dual F9P] | | +| [Holybro H-RTK M8P GNSS](../gps_compass/rtk_gps_holybro_h-rtk-m8p.md) | M8P | IST8310 | | | | +| [Holybro H-RTK Unicore UM982 GPS](../gps_compass/rtk_gps_holybro_unicore_um982.md) | UM982 | IST8310 | | [Unicore Dual Antenna] | | +| [LOCOSYS Hawk R1](../gps_compass/rtk_gps_locosys_r1.md) | MC-1612-V2b | | | | | +| [LOCOSYS Hawk R2](../gps_compass/rtk_gps_locosys_r2.md) | MC-1612-V2b | IST8310 | | | | +| [mRo u-blox ZED-F9 RTK L1/L2 GPS](https://store.mrobotics.io/product-p/m10020d.htm) | F9P | ✓ | | [Dual F9P] | | +| [Navisys L1/L2 ZED-F9P RTK - Base only](https://www.navisys.com.tw/productdetail?name=GR901&class=RTK) | F9P | | | | | +| [RaccoonLab L1/L2 ZED-F9P][RaccoonLab L1/L2 ZED-F9P] | F9P | RM3100 | ✓ | | | +| [RaccoonLab L1/L2 ZED-F9P with external antenna][RaccnLabL1L2ZED-F9P ext_ant] | F9P | RM3100 | ✓ | | | +| [Septentrio AsteRx-m3 Pro](../gps_compass/septentrio_asterx-rib.md) | AsteRx | ✓ | | [Septentrio Dual Antenna] | ✓ | +| [Septentrio mosaic-go](../gps_compass/septentrio_mosaic-go.md) | mosaic X5 / mosaic H | ✓ | | [Septentrio Dual Antenna] | ✓ | +| [SIRIUS RTK GNSS ROVER (F9P)](https://store-drotek.com/911-sirius-rtk-gnss-rover-f9p.html) | F9P | ✓ | | [Dual F9P] | | +| [SparkFun GPS-RTK2 Board - ZED-F9P](https://www.sparkfun.com/products/15136) | F9P | ✓ | | [Dual F9P] | | +| [Trimble MB-Two](../gps_compass/rtk_gps_trimble_mb_two.md) | F9P | ✓ | | ✓ | | @@ -150,7 +150,6 @@ The RTK GPS connection is essentially plug and play: ![survey-in](../../assets/qgc/setup/rtk/qgc_rtk_survey-in.png) 1. Once Survey-in completes: - - 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/en/log/flight_review.md b/docs/en/log/flight_review.md index a9e8ccd318..49d2d5c240 100644 --- a/docs/en/log/flight_review.md +++ b/docs/en/log/flight_review.md @@ -36,6 +36,7 @@ For the rate controller in particular, it is useful to enable the high-rate logg Vibration is one of the most common problems for multirotor vehicles. High vibration levels can lead to: + - less efficient flight and reduced flight time - the motors can heat up - increased material wearout @@ -45,7 +46,7 @@ High vibration levels can lead to: It is therefore important to keep an eye on the vibration levels and improve the setup if needed. -There is a point where vibration levels are clearly too high, and generally lower vibration levels are better. +There is a point where vibration levels are clearly too high, and generally lower vibration levels are better. However there is a broad range between 'everything is ok' and 'the levels are too high'. This range depends on a number of factors, including vehicle size - as larger vehicles have higher inertia, allowing for more software filtering (at the same time the vibrations on larger vehicles are of lower frequency). @@ -61,7 +62,7 @@ It is worth looking at multiple charts when analyzing vibration (different chart You need to enable the high-rate logging profile ([SDLOG_PROFILE](../advanced_config/parameter_reference.md#SDLOG_PROFILE)) to see this plot. ::: -This graph shows a frequency plot for the roll, pitch and yaw axis based on the actuator controls signal (the PID output from the rate controller). +This graph shows a frequency plot for the roll, pitch and yaw axis based on the actuator controls signal (the PID output from the rate controller). It helps to identify frequency peaks and configuring the software filters. There should only be a single peak at the lowest end (below around 20 Hz), the rest should be low and flat. @@ -96,7 +97,6 @@ This example shows a peak in frequency close to 50 Hz (in this case due to "loos ![Vibrations in landing gear - FFT plot](../../assets/flight_log_analysis/flight_review/vibrations_landing_gear_actuator_controls_fft.png) - ### Acceleration Power Spectral Density This is a 2D frequency plot showing the frequency response of the raw accelerometer data over time (it displays the sum for the x, y and z axis). @@ -104,12 +104,12 @@ The more yellow an area is, the higher the frequency response at that time and f Ideally only the lowest part up to a few Hz is yellow, and the rest is mostly green or blue. - #### Examples: Good Vibration [QAV-R 5" Racer](../frames_multicopter/qav_r_5_kiss_esc_racer.md) frame (excellent vibration). ![Low vibration QAV-R 5 Racer - spectral density plot](../../assets/flight_log_analysis/flight_review/vibrations_good_spectral.png) + DJI F450 frame (good vibration). @@ -122,7 +122,6 @@ Above you can see the blade passing frequency of the propellers at around 100 Hz S500 frame: ![Vibration S500 - spectral density plot](../../assets/flight_log_analysis/flight_review/vibrations_s500_spectral.png) - #### Examples: Bad Vibration The strong yellow lines at around 100Hz indicate a potential issue that requires further investigation (starting with a review of the other charts). @@ -138,7 +137,6 @@ With the default filter settings of 80 Hz vibrations at 50 Hz will not be filter ![Vibrations in landing gear - spectral density plot](../../assets/flight_log_analysis/flight_review/vibrations_landing_gear_spectral.png) - Extremely high (unsafe) vibration! Note that the graph is almost completely yellow. :::warning @@ -147,13 +145,12 @@ You should not fly with such high vibration levels. ![Exceedingly high vibration in spectral density plot](../../assets/flight_log_analysis/flight_review/vibrations_exceedingly_high_spectral.png) - ### Raw Acceleration -This graph shows the raw accelerometer measurements for the x, y and z axis. +This graph shows the raw accelerometer measurements for the x, y and z axis. Ideally each line is thin and clearly shows the vehicle's accelerations. -As a rule of thumb if the z-axis graph is touching the x/y-axis graph during hover or slow flight, the vibration levels are too high. +As a rule of thumb if the z-axis graph is touching the x/y-axis graph during hover or slow flight, the vibration levels are too high. :::tip The best way to use this graph is to zoom in a bit to a part where the vehicle is hovering. @@ -170,7 +167,6 @@ DJI F450 frame (good vibration). - #### Examples: Bad Vibration @@ -179,18 +175,15 @@ This is at the limit where it starts to negatively affect flight performance. ![Borderline vibration S500 x, y - raw accel. plot](../../assets/flight_log_analysis/flight_review/vibrations_s500_accel.png) - Vibration too high. Note how the graph of the z-axis overlaps with the x/y-axis graph: ![Vibrations in landing gear - raw accel. plot](../../assets/flight_log_analysis/flight_review/vibrations_landing_gear_accel.png) - Vibration levels are too high. Note how the graph of the z-axis overlaps with the x/y-axis graph: ![High vibration in raw accel. plot](../../assets/flight_log_analysis/flight_review/vibrations_too_high_accel.png) - -Very high (unsafe) vibration levels. +Very high (unsafe) vibration levels. :::warning You should not fly with such high vibration levels. @@ -198,7 +191,6 @@ You should not fly with such high vibration levels. ![Exceedingly high vibration in raw accel. plot](../../assets/flight_log_analysis/flight_review/vibrations_exceedingly_high_accel.png) - ### Raw High-rate IMU Data Plots @@ -207,16 +199,17 @@ For an in-depth analysis there is an option to log the raw IMU data at full rate This allows inspection of much higher frequencies than with normal logging, which can help when selecting vibration mounts or configuring low-pass and notch filters appropriately. To use it, some parameters need to be changed: + - Set [IMU_GYRO_RATEMAX](../advanced_config/parameter_reference.md#IMU_GYRO_RATEMAX) to 400. - This ensures that the raw sensor data is more efficiently packed when sent from the sensor to the rest of the system, and reduces the log size (without reducing useful data). + This ensures that the raw sensor data is more efficiently packed when sent from the sensor to the rest of the system, and reduces the log size (without reducing useful data). - Use a good SD card, as the IMU data requires a high logging bandwidth (Flight Review will show dropouts if the logging rate gets too high). - + :::tip See [Logging > SD Cards](../dev_log/logging.md#sd-cards) for a comparison of popular SD card. ::: - + - Enable either the gyro or accel high-rate FIFO profile in [SDLOG_PROFILE](../advanced_config/parameter_reference.md#SDLOG_PROFILE) and disable the rest of the entries. If you are using a really good SD card (seeing few/no dropouts), you can: - either enable both accel and gyro profiles @@ -244,17 +237,16 @@ Often a source of vibration (or combination of multiple sources) cannot be ident In this case the vehicle should be inspected. [Vibration Isolation](../assembly/vibration_isolation.md) explains some basic things you can check (and do) to reduce vibration levels. - - ## Actuator Outputs -The *Actuator Outputs* graph shows the signals that are sent to the individual actuators (motors/servos). +The _Actuator Outputs_ graph shows the signals that are sent to the individual actuators (motors/servos). Generally it is in the range between the minimum and maximum configured PWM values (e.g. from 1000 to 2000). This is an example for a quadrotor where everything is OK (all of the signals are within the range, approximately overlap each other, and are not too noisy): ![Good actuator outputs](../../assets/flight_log_analysis/flight_review/actuator_outputs_good.png) The plot can help to identify different problems: + - If one or more of the signals is at the maximum over a longer time, it means the controller runs into **saturation**. It is not necessarily a problem, for example when flying at full throttle this is expected. But if it happens for example during a mission, it's an indication that the vehicle is overweight for the amount of thrust that it can provide. @@ -270,20 +262,20 @@ The plot can help to identify different problems: This is an example from a hexarotor: motors 1, 3 and 6 run at higher thrust: ![Hexrotor imbalanced actuator outputs](../../assets/flight_log_analysis/flight_review/actuator_outputs_hex_imbalanced.png) + - If the signals look very **noisy** (with high amplitudes), it can have two causes: sensor noise or vibrations passing through the controller (this shows up in other plots as well, see previous section) or too high PID gains. This is an extreme example: ![Noisy actuator outputs - extreme case](../../assets/flight_log_analysis/flight_review/actuator_outputs_noisy.png) - ## GPS Uncertainty -The *GPS Uncertainty* plot shows information from the GPS device: +The _GPS Uncertainty_ plot shows information from the GPS device: + - Number of used satellites (should be around 12 or higher) - Horizontal position accuracy (should be below 1 meter) - Vertical position accuracy (should be below 2 meters) - GPS fix: this is 3 for a 3D GPS fix, 4 for GPS + Dead Reckoning, 5 for RTK float and 6 for RTK fixed type - ## GPS Noise & Jamming The GPS Noise & Jamming plot is useful to check for GPS signal interferences and jamming. @@ -301,21 +293,21 @@ This is an example without any interference: ![GPS jamming - good plot](../../assets/flight_log_analysis/flight_review/gps_jamming_good.png) - ## Thrust and Magnetic Field -The *Thrust and Magnetic Field* plot shows the thrust and the norm of the magnetic sensor measurement vector. +The _Thrust and Magnetic Field_ plot shows the thrust and the norm of the magnetic sensor measurement vector. The norm should be constant over the whole flight and uncorrelated with the thrust. This is a good example where the norm is very close to constant: ![Thrust and mag close to constant](../../assets/flight_log_analysis/flight_review/thrust_and_mag_good.png) -*If it is correlated*, it means that the current drawn by the motors (or other consumers) is influencing the magnetic field. +_If it is correlated_, it means that the current drawn by the motors (or other consumers) is influencing the magnetic field. This must be avoided as it leads to incorrect yaw estimation. The following plot shows a strong correlation between the thrust and the norm of the magnetometer: ![Correlated thrust and mag](../../assets/flight_log_analysis/flight_review/thrust_and_mag_correlated.png) Solutions to this are: + - Use an external magnetometer (avoid using the internal magnetometer) - If using an external magnetometer, move it further away from strong currents (i.e. by using a (longer) GPS mast). @@ -325,10 +317,9 @@ However it could also be due to external disturbances (for example when flying c This example shows that the norm is non-constant, but it does not correlate with the thrust: ![Uncorrelated thrust and mag](../../assets/flight_log_analysis/flight_review/thrust_and_mag_uncorrelated_problem.png) - ## Estimator Watchdog -The *Estimator Watchdog* plot shows the health report of the estimator. +The _Estimator Watchdog_ plot shows the health report of the estimator. It should be constant zero. This is what it should look like if there are no problems: @@ -337,12 +328,12 @@ This is what it should look like if there are no problems: If one of the flags is non-zero, the estimator detected a problem that needs to be further investigated. Most of the time it is an issue with a sensor, for example magnetometer interferences. It usually helps to look at the plots of the corresponding sensor. + Here is an example with magnetometer problems: ![Estimator watchdog with magnetometer problems](../../assets/flight_log_analysis/flight_review/estimator_watchdog_mag_problem.png) - ## Sampling Regularity of Sensor Data The sampling regularity plot provides insights into problems with the logging system and scheduling. @@ -373,14 +364,13 @@ The following example contains too many dropouts, the quality of the used SD car ## Logged Messages -This is a table with system error and warning messages. +This is a table with system error and warning messages. For example they show when a task becomes low on stack size. The messages need to be examined individually, and not all of them indicate a problem. For example the following shows a kill-switch test: ![Logged Messages](../../assets/flight_log_analysis/flight_review/logged_messages.png) - ## Flight/Frame Log Review Examples It is often worth looking at multiple charts for a particular flight when analyzing vehicle condition (different charts can better highlight some issues). @@ -391,9 +381,11 @@ The section below groups a few (previously presented) charts by flight/vehicle. ### QAV-R 5" Racer These charts are all from the same flight of a [QAV-R 5" Racer](../frames_multicopter/qav_r_5_kiss_esc_racer.md). + They show a vehicle that has very low vibration: + - Actuator Controls FFT shows only a single peak at the lowest end, with the rest low and flat. - Spectral density is mostly green, with only a little yellow at the low frequencies. - Raw Acceleration has z-axis trace well separated from the x/y-axis traces. @@ -404,14 +396,15 @@ They show a vehicle that has very low vibration: ![Low vibration QAV-R 5 Racer - raw accel. plot](../../assets/flight_log_analysis/flight_review/vibrations_good_accel.png) - ### DJI F450 -These charts are all from the same flight of a *DJI F450*. +These charts are all from the same flight of a _DJI F450_. + They show a vehicle that has low vibration (but not as low as the QAV-R above!): -- Actuator Controls FFT shows a peak at the lowest end. + +- Actuator Controls FFT shows a peak at the lowest end. Most of the rest is flat, except for a bump at around 100Hz (this is the blade passing frequency of the propellers). - Spectral density is mostly green. The blade passing frequency is again visible. - Raw Acceleration has z-axis trace well separated from the x/y-axis traces. @@ -422,16 +415,16 @@ They show a vehicle that has low vibration (but not as low as the QAV-R above!): ![Low vibration DJI F450 - raw accel. plot](../../assets/flight_log_analysis/flight_review/vibrations_f450_accel.png) - ### S500 These charts are all from the same flight of an S500. They show a vehicle that has borderline-acceptable vibration: -- Actuator Controls FFT shows a peak at the lowest end. + +- Actuator Controls FFT shows a peak at the lowest end. Most of the rest is flat, except for a bump at around 100Hz. - Spectral density is mostly green, but more yellow than for the DJI F450 at 100Hz. -- Raw Acceleration has z-axis trace fairly close to the x/y-axis traces. +- Raw Acceleration has z-axis trace fairly close to the x/y-axis traces. This is at the limit where it starts to negatively affect flight performance. ![Low vibration S500 actuator controls - FFT plot](../../assets/flight_log_analysis/flight_review/vibrations_s500_actuator_controls_fft.png) diff --git a/docs/en/log/plotjuggler_log_analysis.md b/docs/en/log/plotjuggler_log_analysis.md index be9b0be76f..25cd7ce6eb 100644 --- a/docs/en/log/plotjuggler_log_analysis.md +++ b/docs/en/log/plotjuggler_log_analysis.md @@ -66,17 +66,17 @@ This shows the position / velocity relationship described above in detail. ::: info Try out the boat testing log analysis yourself by downloading the ULog and Layout file used above! + - [Boat testing ULog](https://github.com/PX4/PX4-Autopilot/raw/main/docs/assets/flight_log_analysis/plot_juggler/sample_log_boat_testing_2022-7-28-13-31-16.ulg) - [Boat testing Analysis Layout](https://raw.githubusercontent.com/PX4/PX4-user_guide/main/assets/flight_log_analysis/plot_juggler/sample_log_boat_testing_layout.xml) -::: + ::: ### Layout Templates There are a number of PlotJuggler layout files shared by PX4 Developers. Each can be used for a specific purpose (Multicopter tuning, VTOL tuning, Boat debugging, etc.): -* [Sample View layout](https://github.com/PX4/PX4-user_guide/blob/main/assets/flight_log_analysis/plot_juggler/plotjuggler_sample_view.xml) : Template used in the [Multi-panel example](#splitting-horizontally-vertically-multi-panel) above. - +- [Sample View layout](https://github.com/PX4/PX4-user_guide/blob/main/assets/flight_log_analysis/plot_juggler/plotjuggler_sample_view.xml) : Template used in the [Multi-panel example](#splitting-horizontally-vertically-multi-panel) above. ## Advanced Usage @@ -105,6 +105,7 @@ Here the custom series `Roll` is displayed along with other timeseries, includin ![Quaternion Roll plotted](../../assets/flight_log_analysis/plot_juggler/plotjuggler_quaternion_roll_plotted.png) The `quat_to_roll` function looks like this: + ```lua w = value x = v1 diff --git a/docs/en/middleware/dds_topics.md b/docs/en/middleware/dds_topics.md index 07ec63404c..8dc46fa490 100644 --- a/docs/en/middleware/dds_topics.md +++ b/docs/en/middleware/dds_topics.md @@ -94,191 +94,199 @@ 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) +- [EventV0](../msg_docs/EventV0.md) +- [IrlockReport](../msg_docs/IrlockReport.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) +- [OrbTestLarge](../msg_docs/OrbTestLarge.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [CameraStatus](../msg_docs/CameraStatus.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) +- [Mission](../msg_docs/Mission.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) +- [Airspeed](../msg_docs/Airspeed.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [Rpm](../msg_docs/Rpm.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) - [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) - [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [Gripper](../msg_docs/Gripper.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [PwmInput](../msg_docs/PwmInput.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [Vtx](../msg_docs/Vtx.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [GimbalControls](../msg_docs/GimbalControls.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [Ping](../msg_docs/Ping.md) +- [LedControl](../msg_docs/LedControl.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [SystemPower](../msg_docs/SystemPower.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [DebugValue](../msg_docs/DebugValue.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) - [RcChannels](../msg_docs/RcChannels.md) -- [TecsStatus](../msg_docs/TecsStatus.md) +- [VehicleImu](../msg_docs/VehicleImu.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) +- [TuneControl](../msg_docs/TuneControl.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [GpsInjectData](../msg_docs/GpsInjectData.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) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) - [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [EventV0](../msg_docs/EventV0.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [SensorGyro](../msg_docs/SensorGyro.md) +- [SensorBaro](../msg_docs/SensorBaro.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) - [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [IrlockReport](../msg_docs/IrlockReport.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [AirspeedWind](../msg_docs/AirspeedWind.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [Cpuload](../msg_docs/Cpuload.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [Event](../msg_docs/Event.md) ::: diff --git a/docs/en/middleware/drivers.md b/docs/en/middleware/drivers.md index 6b29331d21..e64a3bfefb 100644 --- a/docs/en/middleware/drivers.md +++ b/docs/en/middleware/drivers.md @@ -1,27 +1,27 @@ # Driver Development -PX4 device drivers are based on the [Device](https://github.com/PX4/PX4-Autopilot/tree/main/src/lib/drivers/device) framework. +PX4 device drivers are based on the [Device](https://github.com/PX4/PX4-Autopilot/tree/main/src/lib/drivers/device) framework. ## Creating a Driver PX4 almost exclusively consumes data from [uORB](../middleware/uorb.md). Drivers for common peripheral types must publish the correct uORB messages (for example: gyro, accelerometer, pressure sensors, etc.). -The best approach for creating a new driver is to start with a similar driver as a template (see [src/drivers](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers)). +The best approach for creating a new driver is to start with a similar driver as a template (see [src/drivers](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers)). ::: info More detailed information about working with specific I/O buses and sensors may be available in [Sensor and Actuator Buses](../sensor_bus/index.md) section. ::: ::: info -Publishing the correct uORB topics is the only pattern that drivers *must* follow. +Publishing the correct uORB topics is the only pattern that drivers _must_ follow. ::: ## Core Architecture PX4 is a [reactive system](../concept/architecture.md) and uses [uORB](../middleware/uorb.md) publish/subscribe to transport messages. File handles are not required or used for the core operation of the system. Two main APIs are used: -* The publish / subscribe system which has a file, network or shared memory backend depending on the system PX4 runs on. -* The global device registry, which can be used to enumerate devices and get/set their configuration. This can be as simple as a linked list or map to the file system. +- The publish / subscribe system which has a file, network or shared memory backend depending on the system PX4 runs on. +- The global device registry, which can be used to enumerate devices and get/set their configuration. This can be as simple as a linked list or map to the file system. ## Device IDs @@ -33,7 +33,6 @@ The order of sensors (e.g. if there is a `/dev/mag0` and an alternate `/dev/mag1 For the example of three magnetometers on a system, use the flight log (.px4log) to dump the parameters. The three parameters encode the sensor IDs and `MAG_PRIME` identifies which magnetometer is selected as the primary sensor. Each MAGx_ID is a 24bit number and should be padded left with zeros for manual decoding. - ``` CAL_MAG0_ID = 73225.0 CAL_MAG1_ID = 66826.0 @@ -83,6 +82,7 @@ struct DeviceStructure { uint8_t devtype; // device class specific device type }; ``` + The `bus_type` is decoded according to: ```C @@ -126,17 +126,19 @@ Drivers (and other modules) output minimally verbose logs strings by default (e. Log verbosity is defined at build time using the `RELEASE_BUILD` (default), `DEBUG_BUILD` (verbose) or `TRACE_BUILD` (extremely verbose) macros. Change the logging level using `COMPILE_FLAGS` in the driver `px4_add_module` function (**CMakeLists.txt**). -The code fragment below shows the required change to enable DEBUG_BUILD level debugging for a single module or driver. +The code fragment below shows the required change to enable DEBUG_BUILD level debugging for a single module or driver. ``` px4_add_module( MODULE templates__module MAIN module ``` + ``` COMPILE_FLAGS -DDEBUG_BUILD ``` + ``` SRCS module.cpp diff --git a/docs/en/middleware/index.md b/docs/en/middleware/index.md index dc9d0464b7..3c35eeb96c 100644 --- a/docs/en/middleware/index.md +++ b/docs/en/middleware/index.md @@ -1,6 +1,6 @@ # Middleware -This section contains topics about PX4 middleware, including PX4 internal communication mechanisms ([uORB](../middleware/uorb.md)), and between PX4 and offboard systems like companion computers and GCS (e.g. [MAVLink](../middleware/mavlink.md), [uXRCE-DDS](../middleware/uxrce_dds.md)). +This section contains topics about PX4 middleware, including PX4 internal communication mechanisms ([uORB](../middleware/uorb.md)), and between PX4 and offboard systems like companion computers and GCS (e.g. [MAVLink](../middleware/mavlink.md), [uXRCE-DDS](../middleware/uxrce_dds.md)). :::tip For a detailed overview of the platform architecture see the [Architectural Overview](../concept/architecture.md). diff --git a/docs/en/middleware/uorb_graph.md b/docs/en/middleware/uorb_graph.md index 7376e951b6..9dbdb57c2d 100644 --- a/docs/en/middleware/uorb_graph.md +++ b/docs/en/middleware/uorb_graph.md @@ -10,7 +10,6 @@ Usage instructions are provided [below](#graph-properties). import { withBase } from 'vitepress'; - ## Graph Properties The graph has the following properties: @@ -27,5 +26,5 @@ The graph has the following properties: - Double-clicking on a topic opens its message definition. - Make sure your browser window is wide enough to display the full graph (the sidebar menu can be hidden with the icon in the top-left corner). You can also zoom the image. -- The *Preset* selection list allows you to refine the list of modules that are shown. -- The *Search* box can be used to find particular modules/topics (topics that are not selected by the search are greyed-out). +- The _Preset_ selection list allows you to refine the list of modules that are shown. +- The _Search_ box can be used to find particular modules/topics (topics that are not selected by the search are greyed-out). diff --git a/docs/en/modules/module_template.md b/docs/en/modules/module_template.md index 5d9fa26c6a..291c6ff0cf 100644 --- a/docs/en/modules/module_template.md +++ b/docs/en/modules/module_template.md @@ -1,6 +1,6 @@ # Module Template for Full Applications -An application can be written to run as either a *task* (a module with its own stack and process priority) or as a *work queue task* (a module that runs on a work queue thread, sharing the stack and thread priority with other tasks on the work queue). +An application can be written to run as either a _task_ (a module with its own stack and process priority) or as a _work queue task_ (a module that runs on a work queue thread, sharing the stack and thread priority with other tasks on the work queue). In most cases a work queue task can be used, as this minimizes resource usage. ::: info @@ -13,26 +13,28 @@ All the things learned in the [First Application Tutorial](../modules/hello_sky. ## Work Queue Task -PX4-Autopilot contains a template for writing a new application (module) that runs as a *work queue task*: +PX4-Autopilot contains a template for writing a new application (module) that runs as a _work queue task_: [src/examples/work_item](https://github.com/PX4/PX4-Autopilot/tree/main/src/examples/work_item). A work queue task application is just the same as an ordinary (task) application, except that it needs to specify that it is a work queue task, and schedule itself to run during initialisation. The example shows how. In summary: + 1. Specify the dependency on the work queue library in the cmake definition file ([CMakeLists.txt](https://github.com/PX4/PX4-Autopilot/blob/main/src/examples/work_item/CMakeLists.txt)): ``` ... DEPENDS px4_work_queue ``` -1. In addition to `ModuleBase`, the task should also derive from `ScheduledWorkItem` (included from [ScheduledWorkItem.hpp]( https://github.com/PX4/PX4-Autopilot/blob/main/platforms/common/include/px4_platform_common/px4_work_queue/ScheduledWorkItem.hpp)) +1. In addition to `ModuleBase`, the task should also derive from `ScheduledWorkItem` (included from [ScheduledWorkItem.hpp](https://github.com/PX4/PX4-Autopilot/blob/main/platforms/common/include/px4_platform_common/px4_work_queue/ScheduledWorkItem.hpp)) 1. Specify the queue to add the task to in the constructor initialisation. The [work_item](https://github.com/PX4/PX4-Autopilot/blob/main/src/examples/work_item/WorkItemExample.cpp#L42) example adds itself to the `wq_configurations::test1` work queue as shown below: + ```cpp WorkItemExample::WorkItemExample() : - ModuleParams(nullptr), - ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::test1) + ModuleParams(nullptr), + ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::test1) { } ``` @@ -45,8 +47,6 @@ In summary: 1. Implement the `task_spawn` method, specifying that the task is a work queue (using the `task_id_is_work_queue` id. 1. Schedule the work queue task using one of the scheduling methods (in the example we use `ScheduleOnInterval` from within the `init` method). - - ## Tasks PX4/PX4-Autopilot contains a template for writing a new application (module) that runs as a task on its own stack: diff --git a/docs/en/modules/modules_autotune.md b/docs/en/modules/modules_autotune.md index 2292dd7494..f0570f8925 100644 --- a/docs/en/modules/modules_autotune.md +++ b/docs/en/modules/modules_autotune.md @@ -1,15 +1,11 @@ # Modules Reference: Autotune - - ## fw_autotune_attitude_control Source: [modules/fw_autotune_attitude_control](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/fw_autotune_attitude_control) - ### Description - ### Usage {#fw_autotune_attitude_control_usage} ``` @@ -27,10 +23,8 @@ fw_autotune_attitude_control [arguments...] Source: [modules/mc_autotune_attitude_control](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/mc_autotune_attitude_control) - ### Description - ### Usage {#mc_autotune_attitude_control_usage} ``` diff --git a/docs/en/modules/modules_command.md b/docs/en/modules/modules_command.md index 4bba93f042..499d7f1fdb 100644 --- a/docs/en/modules/modules_command.md +++ b/docs/en/modules/modules_command.md @@ -1,12 +1,9 @@ # Modules Reference: Command - - ## actuator_test Source: [systemcmds/actuator_test](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/actuator_test) - Utility to test actuators. WARNING: remove all props before using this command. @@ -36,6 +33,7 @@ actuator_test [arguments...] Source: [systemcmds/bl_update](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/bl_update) Utility to flash the bootloader from a file + ### Usage {#bl_update_usage} ``` @@ -51,6 +49,7 @@ bl_update [arguments...] Source: [systemcmds/bsondump](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/bsondump) Utility to read BSON from a file and print or output document size. + ### Usage {#bsondump_usage} ``` @@ -63,6 +62,7 @@ bsondump [arguments...] Source: [systemcmds/dumpfile](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/dumpfile) Dump file utility. Prints file size and contents in binary mode (don't replace LF with CR LF) to stdout. + ### Usage {#dumpfile_usage} ``` @@ -74,16 +74,16 @@ dumpfile [arguments...] Source: [systemcmds/dyn](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/dyn) - ### Description + Load and run a dynamic PX4 module, which was not compiled into the PX4 binary. ### Example + ``` dyn ./hello.px4mod start ``` - ### Usage {#dyn_usage} ``` @@ -96,14 +96,16 @@ dyn [arguments...] Source: [systemcmds/failure](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/failure) - ### Description + Inject failures into system. ### Implementation + This system command sends a vehicle command over uORB to trigger failure. ### Examples + Test the GPS failsafe by stopping GPS: failure gps off @@ -125,32 +127,37 @@ failure [arguments...] Source: [systemcmds/gpio](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/gpio) - ### Description + This command is used to read and write GPIOs + ``` gpio read / [PULLDOWN|PULLUP] [--force] gpio write / [PUSHPULL|OPENDRAIN] [--force] ``` ### Examples + Read the value on port H pin 4 configured as pullup, and it is high + ``` gpio read H4 PULLUP ``` + 1 OK Set the output value on Port E pin 7 to high + ``` gpio write E7 1 --force ``` Set the output value on device /dev/gpio1 to high + ``` gpio write /dev/gpio1 1 ``` - ### Usage {#gpio_usage} ``` @@ -203,6 +210,7 @@ hardfault_log [arguments...] Source: [systemcmds/hist](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/hist) Command-line tool to show the px4 message history. There are no arguments. + ### Usage {#hist_usage} ``` @@ -214,6 +222,7 @@ hist [arguments...] Source: [systemcmds/i2cdetect](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/i2cdetect) Utility to scan for I2C devices on a particular bus. + ### Usage {#i2cdetect_usage} ``` @@ -226,8 +235,8 @@ i2cdetect [arguments...] Source: [systemcmds/led_control](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/led_control) - ### Description + Command-line tool to control & test the (external) LED's. To use it make sure there's a driver running, which handles the led_control uorb topic. @@ -237,12 +246,13 @@ module can blink N times with high priority, and the LED's automatically return after the blinking. The `reset` command can also be used to return to a lower priority. ### Examples + Blink the first LED 5 times in blue: + ``` led_control blink -c blue -l 0 -n 5 ``` - ### Usage {#led_control_usage} ``` @@ -279,7 +289,6 @@ led_control [arguments...] Source: [systemcmds/topic_listener](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/topic_listener) - Utility to listen on uORB topics and print the data to the console. The listener can be exited any time by pressing Ctrl+C, Esc, or Q. @@ -303,6 +312,7 @@ listener [arguments...] Source: [systemcmds/mft](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/mft) Utility interact with the manifest + ### Usage {#mfd_usage} ``` @@ -316,6 +326,7 @@ mfd [arguments...] Source: [systemcmds/mft_cfg](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/mft_cfg) Tool to set and get manifest configuration + ### Usage {#mft_cfg_usage} ``` @@ -336,6 +347,7 @@ mft_cfg [arguments...] Source: [systemcmds/mtd](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/mtd) Utility to mount and test partitions (based on FRAM/EEPROM storage as defined by the board) + ### Usage {#mtd_usage} ``` @@ -378,8 +390,8 @@ nshterm [arguments...] Source: [systemcmds/param](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/param) - ### Description + Command to access and manipulate parameters via shell or script. This is used for example in the startup script to set airframe-specific parameters. @@ -396,7 +408,9 @@ Each parameter has a 'used' flag, which is set when it's read during boot. It is parameters to a ground control station. ### Examples + Change the airframe and make sure the airframe's default parameters are loaded: + ``` param set SYS_AUTOSTART 4001 param set SYS_AUTOCONFIG 1 @@ -476,12 +490,11 @@ param [arguments...] Source: [modules/payload_deliverer](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/payload_deliverer) - ### Description + Handles payload delivery with either Gripper or a Winch with an appropriate timeout / feedback sensor setting, and communicates back the delivery result as an acknowledgement internally - ### Usage {#payload_deliverer_usage} ``` @@ -505,6 +518,7 @@ payload_deliverer [arguments...] Source: [systemcmds/perf](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/perf) Tool to print performance counters + ### Usage {#perf_usage} ``` @@ -521,6 +535,7 @@ perf [arguments...] Source: [systemcmds/reboot](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/reboot) Reboot the system + ### Usage {#reboot_usage} ``` @@ -535,6 +550,7 @@ reboot [arguments...] Source: [systemcmds/sd_bench](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/sd_bench) Test the speed of an SD Card + ### Usage {#sd_bench_usage} ``` @@ -557,6 +573,7 @@ sd_bench [arguments...] Source: [systemcmds/sd_stress](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/sd_stress) Test operations on an SD Card + ### Usage {#sd_stress_usage} ``` @@ -592,7 +609,6 @@ serial_passthru [arguments...] Source: [systemcmds/system_time](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/system_time) - ### Description Command-line tool to set and get system time. @@ -600,6 +616,7 @@ Command-line tool to set and get system time. ### Examples Set the system time and read it back + ``` system_time set 1600775044 system_time get @@ -620,6 +637,7 @@ system_time [arguments...] Source: [systemcmds/top](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/top) Monitor running processes and their CPU, stack usage, priority and state + ### Usage {#top_usage} ``` @@ -633,6 +651,7 @@ Source: [systemcmds/usb_connected](https://github.com/PX4/PX4-Autopilot/tree/mai Utility to check if USB is connected. Was previously used in startup scripts. A return value of 0 means USB is connected, 1 otherwise. + ### Usage {#usb_connected_usage} ``` @@ -644,6 +663,7 @@ usb_connected [arguments...] Source: [systemcmds/ver](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/ver) Tool to print various version information + ### Usage {#ver_usage} ``` diff --git a/docs/en/modules/modules_driver.md b/docs/en/modules/modules_driver.md index f4ebd987eb..349b98659d 100644 --- a/docs/en/modules/modules_driver.md +++ b/docs/en/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) + +### Description + +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) - -### Description - -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) + +### Description + +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) + +### Description + +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/en/modules/modules_driver_airspeed_sensor.md b/docs/en/modules/modules_driver_airspeed_sensor.md index a1545bfe53..efab35a02a 100644 --- a/docs/en/modules/modules_driver_airspeed_sensor.md +++ b/docs/en/modules/modules_driver_airspeed_sensor.md @@ -4,8 +4,8 @@ Source: [drivers/differential_pressure/asp5033](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/differential_pressure/asp5033) - ### Description + Driver to enable an external [ASP5033] (https://www.qio-tek.com/index.php/product/qiotek-asp5033-dronecan-airspeed-and-compass-module/) TE connected via I2C. diff --git a/docs/en/modules/modules_driver_camera.md b/docs/en/modules/modules_driver_camera.md index 58f3cfb45d..c63df4619f 100644 --- a/docs/en/modules/modules_driver_camera.md +++ b/docs/en/modules/modules_driver_camera.md @@ -4,7 +4,6 @@ Source: [drivers/camera_trigger](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/camera_trigger) - ### Description Camera trigger driver. diff --git a/docs/en/modules/modules_driver_optical_flow.md b/docs/en/modules/modules_driver_optical_flow.md index 2c734b5c3f..d69b6d28cc 100644 --- a/docs/en/modules/modules_driver_optical_flow.md +++ b/docs/en/modules/modules_driver_optical_flow.md @@ -4,7 +4,6 @@ Source: [drivers/optical_flow/thoneflow](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/optical_flow/thoneflow) - ### Description Serial bus driver for the ThoneFlow-3901U optical flow sensor. @@ -16,10 +15,13 @@ Setup/usage information: https://docs.px4.io/main/en/sensor/pmw3901.html#thone-t ### Examples Attempt to start driver on a specified serial device. + ``` thoneflow start -d /dev/ttyS1 ``` + Stop driver + ``` thoneflow stop ``` diff --git a/docs/en/modules/modules_estimator.md b/docs/en/modules/modules_estimator.md index 71041bcd50..8186889dd4 100644 --- a/docs/en/modules/modules_estimator.md +++ b/docs/en/modules/modules_estimator.md @@ -1,15 +1,12 @@ # Modules Reference: Estimator - - ## AttitudeEstimatorQ Source: [modules/attitude_estimator_q](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/attitude_estimator_q) - ### Description -Attitude estimator q. +Attitude estimator q. ### Usage {#AttitudeEstimatorQ_usage} @@ -27,8 +24,8 @@ AttitudeEstimatorQ [arguments...] Source: [modules/airspeed_selector](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/airspeed_selector) - ### Description + This module provides a single airspeed_validated topic, containing indicated (IAS), calibrated (CAS), true airspeed (TAS) and the information if the estimation currently is invalid and if based sensor readings or on groundspeed minus windspeed. @@ -37,7 +34,6 @@ to a valid sensor in case of failure detection. For failure detection as well as the estimation of a scale factor from IAS to CAS, it runs several wind estimators and also publishes those. - ### Usage {#airspeed_estimator_usage} ``` @@ -54,8 +50,8 @@ airspeed_estimator [arguments...] Source: [modules/ekf2](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/ekf2) - ### Description + Attitude and position estimator using an Extended Kalman Filter. It is used for Multirotors and Fixed-Wing. The documentation can be found on the [ECL/EKF Overview & Tuning](https://docs.px4.io/main/en/advanced_config/tuning_the_ecl_ekf.html) page. @@ -63,7 +59,6 @@ The documentation can be found on the [ECL/EKF Overview & Tuning](https://docs.p ekf2 can be started in replay mode (`-r`): in this mode, it does not access the system time, but only uses the timestamps from the sensor topics. - ### Usage {#ekf2_usage} ``` @@ -85,10 +80,9 @@ ekf2 [arguments...] Source: [modules/local_position_estimator](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/local_position_estimator) - ### Description -Attitude and position estimator using an Extended Kalman Filter. +Attitude and position estimator using an Extended Kalman Filter. ### Usage {#local_position_estimator_usage} @@ -106,10 +100,8 @@ local_position_estimator [arguments...] Source: [modules/mc_hover_thrust_estimator](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/mc_hover_thrust_estimator) - ### Description - ### Usage {#mc_hover_thrust_estimator_usage} ``` diff --git a/docs/en/modules/modules_main.md b/docs/en/modules/modules_main.md index 34e325dcd2..4403a1ffa5 100644 --- a/docs/en/modules/modules_main.md +++ b/docs/en/modules/modules_main.md @@ -1,4 +1,3 @@ - # Modules & Commands Reference The following pages document the PX4 modules, drivers and commands. @@ -21,9 +20,11 @@ the root of the PX4-Autopilot directory: ``` make module_documentation ``` + The generated files will be written to the `modules` directory. ## Categories + - [Autotune](modules_autotune.md) - [Command](modules_command.md) - [Communication](modules_communication.md) diff --git a/docs/en/modules/modules_simulation.md b/docs/en/modules/modules_simulation.md index 18c267517b..f0a12f6604 100644 --- a/docs/en/modules/modules_simulation.md +++ b/docs/en/modules/modules_simulation.md @@ -1,13 +1,11 @@ # Modules Reference: Simulation - - ## simulator_sih Source: [modules/simulation/simulator_sih](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/simulation/simulator_sih) - ### Description + This module provides a simulator for quadrotors and fixed-wings running fully inside the hardware autopilot. @@ -18,13 +16,12 @@ This simulator publishes the sensors signals corrupted with realistic noise in order to incorporate the state estimator in the loop. ### Implementation + The simulator implements the equations of motion using matrix algebra. Quaternion representation is used for the attitude. Forward Euler is used for integration. Most of the variables are declared global in the .hpp file to avoid stack overflow. - - ### Usage {#simulator_sih_usage} ``` diff --git a/docs/en/modules/modules_template.md b/docs/en/modules/modules_template.md index 523d9ff02b..10e0e16f05 100644 --- a/docs/en/modules/modules_template.md +++ b/docs/en/modules/modules_template.md @@ -1,27 +1,58 @@ # Modules Reference: Template +## mc_raptor +Source: [modules/mc_raptor](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/mc_raptor) + +### Description + +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) - ### Description + Section that describes the provided module functionality. This is a template for a module running as a task in the background with start/stop/status functionality. ### Implementation + Section describing the high-level implementation of this module. ### Examples + CLI usage example: + ``` module start -f -p 42 ``` - ### Usage {#module_usage} ``` @@ -41,10 +72,9 @@ module [arguments...] Source: [examples/work_item](https://github.com/PX4/PX4-Autopilot/tree/main/src/examples/work_item) - ### Description -Example of a simple module running out of a work queue. +Example of a simple module running out of a work queue. ### Usage {#work_item_example_usage} diff --git a/docs/en/msg_docs/ActionRequest.md b/docs/en/msg_docs/ActionRequest.md index 1c724dabb7..9d3bad8a5f 100644 --- a/docs/en/msg_docs/ActionRequest.md +++ b/docs/en/msg_docs/ActionRequest.md @@ -1,12 +1,56 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | -------- | ------------ | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| ------------------------------------------------------------------------------------------- | ------- | ----- | --------------------------------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| --------------------------------------------------------- | ------- | ----- | --------------------------------------------------------------- | +| 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 +79,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/en/msg_docs/ActuatorArmed.md b/docs/en/msg_docs/ActuatorArmed.md index adee89cb21..e859fec479 100644 --- a/docs/en/msg_docs/ActuatorArmed.md +++ b/docs/en/msg_docs/ActuatorArmed.md @@ -1,6 +1,29 @@ +--- +pageClass: is-wide-page +--- + # ActuatorArmed (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorArmed.msg) +**TOPICS:** actuator_armed + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------- | -------- | ------------ | ---------- | ------------------------------------------------------------------------------- | +| 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 +35,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/en/msg_docs/ActuatorControlsStatus.md b/docs/en/msg_docs/ActuatorControlsStatus.md index 2eb1d53f22..f15aff69ee 100644 --- a/docs/en/msg_docs/ActuatorControlsStatus.md +++ b/docs/en/msg_docs/ActuatorControlsStatus.md @@ -1,8 +1,23 @@ +--- +pageClass: is-wide-page +--- + # ActuatorControlsStatus (UORB message) +**TOPICS:** actuator_controls_status_0 actuator_controls_status_1 +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorControlsStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------- | ------------ | ------------ | ---------- | -------------------------------------- | +| 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) @@ -10,5 +25,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/en/msg_docs/ActuatorMotors.md b/docs/en/msg_docs/ActuatorMotors.md index 701465d6ea..e50477ebb2 100644 --- a/docs/en/msg_docs/ActuatorMotors.md +++ b/docs/en/msg_docs/ActuatorMotors.md @@ -1,11 +1,38 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------- | ------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------- | -------- | ----- | ----------- | +| 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 +51,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/en/msg_docs/ActuatorOutputs.md b/docs/en/msg_docs/ActuatorOutputs.md index 3fc4a94c9d..fa8b313c4c 100644 --- a/docs/en/msg_docs/ActuatorOutputs.md +++ b/docs/en/msg_docs/ActuatorOutputs.md @@ -1,8 +1,31 @@ +--- +pageClass: is-wide-page +--- + # ActuatorOutputs (UORB message) +**TOPICS:** actuator_outputs actuator_outputs_sim actuator_outputs_debug +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorOutputs.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ------------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| noutputs | `uint32` | | | valid outputs | +| output | `float32[16]` | | | output data, in natural output units | + +## Constants + +| Name | Type | Value | Description | +| --------------------------------------------------------------------- | ------- | ----- | ------------------- | +| 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) @@ -13,5 +36,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/en/msg_docs/ActuatorServos.md b/docs/en/msg_docs/ActuatorServos.md index ea053f67a3..de537fcca6 100644 --- a/docs/en/msg_docs/ActuatorServos.md +++ b/docs/en/msg_docs/ActuatorServos.md @@ -1,11 +1,36 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------ | ------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +45,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/en/msg_docs/ActuatorServosTrim.md b/docs/en/msg_docs/ActuatorServosTrim.md index 07f42a43ce..380f53832b 100644 --- a/docs/en/msg_docs/ActuatorServosTrim.md +++ b/docs/en/msg_docs/ActuatorServosTrim.md @@ -1,8 +1,31 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ------------ | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| trim | `float32[8]` | | | range: [-1, 1] | + +## Constants + +| Name | Type | Value | Description | +| ----------------------------------------- | ------- | ----- | ----------- | +| 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 +33,6 @@ uint64 timestamp # time since system start (microseconds) uint8 NUM_CONTROLS = 8 float32[8] trim # range: [-1, 1] - ``` + +::: diff --git a/docs/en/msg_docs/ActuatorTest.md b/docs/en/msg_docs/ActuatorTest.md index 923d829774..820c6214fa 100644 --- a/docs/en/msg_docs/ActuatorTest.md +++ b/docs/en/msg_docs/ActuatorTest.md @@ -1,8 +1,38 @@ +--- +pageClass: is-wide-page +--- + # ActuatorTest (UORB message) +**TOPICS:** actuator_test +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorTest.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------- | --------- | ------------ | ---------- | ------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------------- | ------- | ----- | ---------------------------------------------------- | +| 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) @@ -26,5 +56,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/en/msg_docs/AdcReport.md b/docs/en/msg_docs/AdcReport.md index 50fde63ff5..9cb57dc674 100644 --- a/docs/en/msg_docs/AdcReport.md +++ b/docs/en/msg_docs/AdcReport.md @@ -1,10 +1,31 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------- | ----------- | ------------ | ---------- | ------------------------------------------------------------------------------------ | +| 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 +38,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/en/msg_docs/Airspeed.md b/docs/en/msg_docs/Airspeed.md index 949af8d5e7..d769925620 100644 --- a/docs/en/msg_docs/Airspeed.md +++ b/docs/en/msg_docs/Airspeed.md @@ -1,11 +1,31 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------- | --------- | ------------ | ---------- | -------------------------------- | +| 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 +38,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/en/msg_docs/AirspeedValidated.md b/docs/en/msg_docs/AirspeedValidated.md index 61f607e7fa..92b2f35f1d 100644 --- a/docs/en/msg_docs/AirspeedValidated.md +++ b/docs/en/msg_docs/AirspeedValidated.md @@ -1,11 +1,55 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------------------- | --------- | ------------ | ----------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| ----------------------------------------------------------------- | ------ | ----- | ----------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +79,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/en/msg_docs/AirspeedValidatedV0.md b/docs/en/msg_docs/AirspeedValidatedV0.md index 9cd392a955..8650ee3116 100644 --- a/docs/en/msg_docs/AirspeedValidatedV0.md +++ b/docs/en/msg_docs/AirspeedValidatedV0.md @@ -1,8 +1,38 @@ +--- +pageClass: is-wide-page +--- + # AirspeedValidatedV0 (UORB message) +**TOPICS:** airspeed_validatedv0 +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/AirspeedValidatedV0.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 @@ -23,5 +53,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/en/msg_docs/AirspeedWind.md b/docs/en/msg_docs/AirspeedWind.md index 23e91399b0..3be13ac999 100644 --- a/docs/en/msg_docs/AirspeedWind.md +++ b/docs/en/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,41 @@ 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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------- | --------- | ------------ | ---------- | --------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------- | ------- | ----- | ---------------------------------------------------------------------------------- | +| 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 +83,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/en/msg_docs/ArmingCheckReply.md b/docs/en/msg_docs/ArmingCheckReply.md index 14af54f0d1..b6119357d7 100644 --- a/docs/en/msg_docs/ArmingCheckReply.md +++ b/docs/en/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,54 @@ 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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------------------- | ---------- | ------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------- | ------- | ----- | --------------------------------------------------------- | +| HEALTH_COMPONENT_INDEX_NONE | `uint8` | 0 | Index of health component for which this response applies | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------------------- | -------- | ----- | ----------- | +| 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 +106,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/en/msg_docs/ArmingCheckReplyV0.md b/docs/en/msg_docs/ArmingCheckReplyV0.md index 48917da802..d93dd9a1b6 100644 --- a/docs/en/msg_docs/ArmingCheckReplyV0.md +++ b/docs/en/msg_docs/ArmingCheckReplyV0.md @@ -1,6 +1,49 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------------- | ------------ | ------------ | ---------- | ------------------------------------------------------------------------ | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------- | -------- | ----- | ----------- | +| 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 +80,6 @@ bool mode_req_manual_control uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/en/msg_docs/ArmingCheckRequest.md b/docs/en/msg_docs/ArmingCheckRequest.md index d093dfb5e1..083c8743e1 100644 --- a/docs/en/msg_docs/ArmingCheckRequest.md +++ b/docs/en/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,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/versioned/ArmingCheckRequest.msg) +**TOPICS:** arming_checkrequest + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------ | -------- | ------------ | ---------- | --------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +52,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/en/msg_docs/ArmingCheckRequestV0.md b/docs/en/msg_docs/ArmingCheckRequestV0.md index f5680c11f2..986bb893b3 100644 --- a/docs/en/msg_docs/ArmingCheckRequestV0.md +++ b/docs/en/msg_docs/ArmingCheckRequestV0.md @@ -1,3 +1,7 @@ +--- +pageClass: is-wide-page +--- + # ArmingCheckRequestV0 (UORB message) Arming check request. @@ -9,7 +13,26 @@ 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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------- | -------- | ------------ | ---------- | --------------------------------------------------------------------------------- | +| timestamp | `uint64` | us | | Time since system start. | +| request_id | `uint8` | | | Id of this request. Allows correlation with associated ArmingCheckReply messages. | + +## Constants + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +49,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/en/msg_docs/AutotuneAttitudeControlStatus.md b/docs/en/msg_docs/AutotuneAttitudeControlStatus.md index 31a47ef204..e4bbd32fa9 100644 --- a/docs/en/msg_docs/AutotuneAttitudeControlStatus.md +++ b/docs/en/msg_docs/AutotuneAttitudeControlStatus.md @@ -1,13 +1,67 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ------------ | ------------ | --------------- | --------------------------------------------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| ------------------------------------------------------------------------------- | ------- | ----- | -------------------------------------------------------- | +| 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 +109,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/en/msg_docs/BatteryInfo.md b/docs/en/msg_docs/BatteryInfo.md index 4b0c2823ce..ca105f0d26 100644 --- a/docs/en/msg_docs/BatteryInfo.md +++ b/docs/en/msg_docs/BatteryInfo.md @@ -1,11 +1,29 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------- | ---------- | ------------ | ---------- | ------------------------------------------------------------------------------------------ | +| 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 +35,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/en/msg_docs/BatteryStatus.md b/docs/en/msg_docs/BatteryStatus.md index ec2c19c59e..b9ba00d63a 100644 --- a/docs/en/msg_docs/BatteryStatus.md +++ b/docs/en/msg_docs/BatteryStatus.md @@ -1,12 +1,116 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------------- | ------------- | ------------ | ---------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| ------------------------------------------------------- | ------- | ----- | ---------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| --------------------------------------------------- | ------- | ----- | -------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| ----------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------- | ------- | ----- | -------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +192,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/en/msg_docs/BatteryStatusV0.md b/docs/en/msg_docs/BatteryStatusV0.md index cd900a1f17..4dfdd4e530 100644 --- a/docs/en/msg_docs/BatteryStatusV0.md +++ b/docs/en/msg_docs/BatteryStatusV0.md @@ -1,12 +1,117 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------------- | ------------- | ------------ | ---------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| ------------------------------------------------------- | ------- | ----- | ---------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| --------------------------------------------------- | ------- | ----- | -------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| ----------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------- | ------- | ----- | -------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +193,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/en/msg_docs/ButtonEvent.md b/docs/en/msg_docs/ButtonEvent.md index 967f694fa6..34cf6e40e4 100644 --- a/docs/en/msg_docs/ButtonEvent.md +++ b/docs/en/msg_docs/ButtonEvent.md @@ -1,8 +1,29 @@ +--- +pageClass: is-wide-page +--- + # ButtonEvent (UORB message) +**TOPICS:** button_event safety_button +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ButtonEvent.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | -------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| triggered | `bool` | | | Set to true if the event is triggered | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -11,5 +32,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/en/msg_docs/CameraCapture.md b/docs/en/msg_docs/CameraCapture.md index fb73e30458..cc5fa015d5 100644 --- a/docs/en/msg_docs/CameraCapture.md +++ b/docs/en/msg_docs/CameraCapture.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # CameraCapture (UORB message) +**TOPICS:** camera_capture +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraCapture.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------- | ------------ | ------------ | ---------- | -------------------------------------------------------------------------------------------------------- | +| 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) @@ -14,5 +36,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/en/msg_docs/CameraStatus.md b/docs/en/msg_docs/CameraStatus.md index 1bf6d3b33c..47b724a6bd 100644 --- a/docs/en/msg_docs/CameraStatus.md +++ b/docs/en/msg_docs/CameraStatus.md @@ -1,13 +1,30 @@ +--- +pageClass: is-wide-page +--- + # CameraStatus (UORB message) +**TOPICS:** camera_status +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------- | -------- | ------------ | ---------- | ------------------------------------------------ | +| 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/en/msg_docs/CameraTrigger.md b/docs/en/msg_docs/CameraTrigger.md index a1949a7569..fee6698518 100644 --- a/docs/en/msg_docs/CameraTrigger.md +++ b/docs/en/msg_docs/CameraTrigger.md @@ -1,8 +1,31 @@ +--- +pageClass: is-wide-page +--- + # CameraTrigger (UORB message) +**TOPICS:** camera_trigger +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CameraTrigger.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------- | -------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| timestamp_utc | `uint64` | | | UTC timestamp | +| seq | `uint32` | | | Image sequence number | +| feedback | `bool` | | | Trigger feedback from camera | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------------------- | -------- | ----- | ----------- | +| 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) @@ -12,5 +35,6 @@ uint32 seq # Image sequence number bool feedback # Trigger feedback from camera uint32 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/en/msg_docs/CanInterfaceStatus.md b/docs/en/msg_docs/CanInterfaceStatus.md index 234ade997d..0d063764e1 100644 --- a/docs/en/msg_docs/CanInterfaceStatus.md +++ b/docs/en/msg_docs/CanInterfaceStatus.md @@ -1,8 +1,26 @@ +--- +pageClass: is-wide-page +--- + # CanInterfaceStatus (UORB message) +**TOPICS:** can_interfacestatus +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/CanInterfaceStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | -------- | ------------ | ---------- | -------------------------------------- | +| 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) @@ -11,5 +29,6 @@ uint8 interface uint64 io_errors uint64 frames_tx uint64 frames_rx - ``` + +::: diff --git a/docs/en/msg_docs/CellularStatus.md b/docs/en/msg_docs/CellularStatus.md index 04ca0a65dc..10214361e7 100644 --- a/docs/en/msg_docs/CellularStatus.md +++ b/docs/en/msg_docs/CellularStatus.md @@ -1,10 +1,72 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------- | -------- | ------------ | ----------------------------------------------------------- | ------------------------------------------ | +| 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} + +| Name | Type | Value | Description | +| ------------------------------------------------------------------- | -------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| --------------------------------------------------------------------- | ------- | ----- | ----------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------------- | ------- | ----- | ----------- | +| 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 +107,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/en/msg_docs/CollisionConstraints.md b/docs/en/msg_docs/CollisionConstraints.md index fd0f562886..cca3930fdf 100644 --- a/docs/en/msg_docs/CollisionConstraints.md +++ b/docs/en/msg_docs/CollisionConstraints.md @@ -1,9 +1,26 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------- | ------------ | ------------ | ---------- | -------------------------------------- | +| 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 +30,6 @@ uint64 timestamp # time since system start (microseconds) float32[2] original_setpoint # velocities demanded float32[2] adapted_setpoint # velocities allowed - ``` + +::: diff --git a/docs/en/msg_docs/ConfigOverrides.md b/docs/en/msg_docs/ConfigOverrides.md index caa4d0816b..62f79f7498 100644 --- a/docs/en/msg_docs/ConfigOverrides.md +++ b/docs/en/msg_docs/ConfigOverrides.md @@ -1,8 +1,39 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------- | -------- | ------------ | ---------- | -------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------------------- | -------- | ----- | ----------- | +| 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 +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/en/msg_docs/ConfigOverridesV0.md b/docs/en/msg_docs/ConfigOverridesV0.md index 91e2cf5b48..1b882bb4b8 100644 --- a/docs/en/msg_docs/ConfigOverridesV0.md +++ b/docs/en/msg_docs/ConfigOverridesV0.md @@ -1,8 +1,38 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------- | -------- | ------------ | ---------- | ---------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------------------- | -------- | ----- | ----------- | +| 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 +56,6 @@ uint8 source_id # ID depending on source_type uint8 ORB_QUEUE_LENGTH = 4 # TOPICS config_overrides config_overrides_request - ``` + +::: diff --git a/docs/en/msg_docs/ControlAllocatorStatus.md b/docs/en/msg_docs/ControlAllocatorStatus.md index 4068e7b4f4..2bc894471c 100644 --- a/docs/en/msg_docs/ControlAllocatorStatus.md +++ b/docs/en/msg_docs/ControlAllocatorStatus.md @@ -1,6 +1,39 @@ +--- +pageClass: is-wide-page +--- + # ControlAllocatorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ControlAllocatorStatus.msg) +**TOPICS:** control_allocatorstatus + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------------- | ------------ | ------------ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------------------- | ------ | ----- | --------------------------------------------------------------------------------------------------------- | +| 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 +58,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/en/msg_docs/Cpuload.md b/docs/en/msg_docs/Cpuload.md index 84f8447c39..850bc582ce 100644 --- a/docs/en/msg_docs/Cpuload.md +++ b/docs/en/msg_docs/Cpuload.md @@ -1,12 +1,29 @@ +--- +pageClass: is-wide-page +--- + # Cpuload (UORB message) +**TOPICS:** cpuload +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Cpuload.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | --------- | ------------ | ---------- | -------------------------------------- | +| 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/en/msg_docs/DatamanRequest.md b/docs/en/msg_docs/DatamanRequest.md index 06d1c5d8b7..cb9692ba34 100644 --- a/docs/en/msg_docs/DatamanRequest.md +++ b/docs/en/msg_docs/DatamanRequest.md @@ -1,8 +1,28 @@ +--- +pageClass: is-wide-page +--- + # DatamanRequest (UORB message) +**TOPICS:** dataman_request +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DatamanRequest.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | ----------- | ------------ | ---------- | -------------------------------------- | +| 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) @@ -13,5 +33,6 @@ uint8 item # dm_item_t uint32 index uint8[56] data uint32 data_length - ``` + +::: diff --git a/docs/en/msg_docs/DatamanResponse.md b/docs/en/msg_docs/DatamanResponse.md index 3857d85c69..62ea93d6d5 100644 --- a/docs/en/msg_docs/DatamanResponse.md +++ b/docs/en/msg_docs/DatamanResponse.md @@ -1,8 +1,39 @@ +--- +pageClass: is-wide-page +--- + # DatamanResponse (UORB message) +**TOPICS:** dataman_response +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DatamanResponse.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | ----------- | ------------ | ---------- | -------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -20,5 +51,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/en/msg_docs/DebugArray.md b/docs/en/msg_docs/DebugArray.md index 7dc20d00e3..b7fd0c81f9 100644 --- a/docs/en/msg_docs/DebugArray.md +++ b/docs/en/msg_docs/DebugArray.md @@ -1,8 +1,31 @@ +--- +pageClass: is-wide-page +--- + # DebugArray (UORB message) +**TOPICS:** debug_array +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugArray.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ------------- | ------------ | ---------- | ------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------- | ------- | ----- | ----------- | +| 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 @@ -10,5 +33,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/en/msg_docs/DebugKeyValue.md b/docs/en/msg_docs/DebugKeyValue.md index ea5709c88e..31883af75f 100644 --- a/docs/en/msg_docs/DebugKeyValue.md +++ b/docs/en/msg_docs/DebugKeyValue.md @@ -1,12 +1,29 @@ +--- +pageClass: is-wide-page +--- + # DebugKeyValue (UORB message) +**TOPICS:** debug_keyvalue +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugKeyValue.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ---------- | ------------ | ---------- | -------------------------------------- | +| 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/en/msg_docs/DebugValue.md b/docs/en/msg_docs/DebugValue.md index 8c86a763a4..9739f056be 100644 --- a/docs/en/msg_docs/DebugValue.md +++ b/docs/en/msg_docs/DebugValue.md @@ -1,12 +1,29 @@ +--- +pageClass: is-wide-page +--- + # DebugValue (UORB message) +**TOPICS:** debug_value +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugValue.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | --------- | ------------ | ---------- | -------------------------------------- | +| 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/en/msg_docs/DebugVect.md b/docs/en/msg_docs/DebugVect.md index 31e1c8d044..941c894409 100644 --- a/docs/en/msg_docs/DebugVect.md +++ b/docs/en/msg_docs/DebugVect.md @@ -1,8 +1,26 @@ +--- +pageClass: is-wide-page +--- + # DebugVect (UORB message) +**TOPICS:** debug_vect +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DebugVect.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ---------- | ------------ | ---------- | -------------------------------------- | +| 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) @@ -10,5 +28,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/en/msg_docs/DeviceInformation.md b/docs/en/msg_docs/DeviceInformation.md index d415461f94..0f68dc8d80 100644 --- a/docs/en/msg_docs/DeviceInformation.md +++ b/docs/en/msg_docs/DeviceInformation.md @@ -1,11 +1,57 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ---------- | ------------ | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------------- | ------- | ----- | ---------------------- | +| DEVICE_TYPE_GENERIC | `uint8` | 0 | Generic/unknown sensor | +| DEVICE_TYPE_AIRSPEED | `uint8` | 1 | Airspeed sensor | +| DEVICE_TYPE_ESC | `uint8` | 2 | ESC | +| DEVICE_TYPE_SERVO | `uint8` | 3 | Servo | +| DEVICE_TYPE_GPS | `uint8` | 4 | GPS | +| DEVICE_TYPE_MAGNETOMETER | `uint8` | 5 | Magnetometer | +| DEVICE_TYPE_PARACHUTE | `uint8` | 6 | Parachute | +| 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 +87,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/en/msg_docs/DifferentialPressure.md b/docs/en/msg_docs/DifferentialPressure.md index 83adb2d03e..e9c7410ce7 100644 --- a/docs/en/msg_docs/DifferentialPressure.md +++ b/docs/en/msg_docs/DifferentialPressure.md @@ -1,11 +1,32 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------ | --------- | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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 +41,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/en/msg_docs/DistanceSensor.md b/docs/en/msg_docs/DistanceSensor.md index c4d5bbc2c0..6bf1ea75b6 100644 --- a/docs/en/msg_docs/DistanceSensor.md +++ b/docs/en/msg_docs/DistanceSensor.md @@ -1,8 +1,63 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------ | ------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------- | ------- | ----- | ----------------------------- | +| 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 +107,6 @@ uint8 mode uint8 MODE_UNKNOWN = 0 uint8 MODE_ENABLED = 1 uint8 MODE_DISABLED = 2 - ``` + +::: diff --git a/docs/en/msg_docs/DistanceSensorModeChangeRequest.md b/docs/en/msg_docs/DistanceSensorModeChangeRequest.md index 56ed7e1bba..1c4f596106 100644 --- a/docs/en/msg_docs/DistanceSensorModeChangeRequest.md +++ b/docs/en/msg_docs/DistanceSensorModeChangeRequest.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # DistanceSensorModeChangeRequest (UORB message) +**TOPICS:** distance_sensormode_changerequest +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DistanceSensorModeChangeRequest.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------- | -------- | ------------ | ---------- | --------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| request_on_off | `uint8` | | | request to disable/enable the distance sensor | + +## Constants + +| Name | Type | Value | Description | +| --------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -10,5 +32,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/en/msg_docs/DronecanNodeStatus.md b/docs/en/msg_docs/DronecanNodeStatus.md index 5c8a8d7862..e25f221092 100644 --- a/docs/en/msg_docs/DronecanNodeStatus.md +++ b/docs/en/msg_docs/DronecanNodeStatus.md @@ -1,6 +1,42 @@ +--- +pageClass: is-wide-page +--- + # DronecanNodeStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/DronecanNodeStatus.msg) +**TOPICS:** dronecan_nodestatus + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------------- | -------- | ------------ | ---------- | -------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------- | +| 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 +80,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/en/msg_docs/Ekf2Timestamps.md b/docs/en/msg_docs/Ekf2Timestamps.md index 8de695f523..970bd52edf 100644 --- a/docs/en/msg_docs/Ekf2Timestamps.md +++ b/docs/en/msg_docs/Ekf2Timestamps.md @@ -1,12 +1,37 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------------------- | -------- | ------------ | ---------- | -------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------------- | ------- | ----- | ------------------------------------------ | +| 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 +58,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/en/msg_docs/EscReport.md b/docs/en/msg_docs/EscReport.md index 277402ae69..2887d96454 100644 --- a/docs/en/msg_docs/EscReport.md +++ b/docs/en/msg_docs/EscReport.md @@ -1,6 +1,61 @@ +--- +pageClass: is-wide-page +--- + # EscReport (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscReport.msg) +**TOPICS:** esc_report + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------ | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------- | ------- | ----- | ---------------------------------------------------------------------------- | +| 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 +98,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/en/msg_docs/EscStatus.md b/docs/en/msg_docs/EscStatus.md index 07bd468cee..9f8b0a409a 100644 --- a/docs/en/msg_docs/EscStatus.md +++ b/docs/en/msg_docs/EscStatus.md @@ -1,8 +1,40 @@ +--- +pageClass: is-wide-page +--- + # EscStatus (UORB message) +**TOPICS:** esc_status +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------ | -------------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------- | ------- | ----- | ----------------------------------------------------------------- | +| 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) @@ -33,5 +65,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/en/msg_docs/EstimatorAidSource1d.md b/docs/en/msg_docs/EstimatorAidSource1d.md index 45d0659de2..908495b407 100644 --- a/docs/en/msg_docs/EstimatorAidSource1d.md +++ b/docs/en/msg_docs/EstimatorAidSource1d.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # EstimatorAidSource1d (UORB message) +**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 -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource1d.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------- | --------- | ------------ | ---------- | -------------------------------------------- | +| 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) @@ -32,5 +59,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/en/msg_docs/EstimatorAidSource2d.md b/docs/en/msg_docs/EstimatorAidSource2d.md index 70cc2948e5..cb21f508cb 100644 --- a/docs/en/msg_docs/EstimatorAidSource2d.md +++ b/docs/en/msg_docs/EstimatorAidSource2d.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # EstimatorAidSource2d (UORB message) +**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 -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource2d.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------- | ------------ | ------------ | ---------- | -------------------------------------------- | +| 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) @@ -31,5 +58,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/en/msg_docs/EstimatorAidSource3d.md b/docs/en/msg_docs/EstimatorAidSource3d.md index 457deec9c9..38ed296214 100644 --- a/docs/en/msg_docs/EstimatorAidSource3d.md +++ b/docs/en/msg_docs/EstimatorAidSource3d.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # EstimatorAidSource3d (UORB message) +**TOPICS:** estimator_aid_src_ev_vel estimator_aid_src_gnss_vel estimator_aid_src_gravity estimator_aid_src_mag +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorAidSource3d.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------- | ------------ | ------------ | ---------- | -------------------------------------------- | +| 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) @@ -29,5 +56,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/en/msg_docs/EstimatorBias.md b/docs/en/msg_docs/EstimatorBias.md index 3b7408be15..4e19c7590b 100644 --- a/docs/en/msg_docs/EstimatorBias.md +++ b/docs/en/msg_docs/EstimatorBias.md @@ -1,8 +1,29 @@ +--- +pageClass: is-wide-page +--- + # EstimatorBias (UORB message) +**TOPICS:** estimator_baro_bias estimator_gnss_hgt_bias +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorBias.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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) @@ -17,5 +38,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/en/msg_docs/EstimatorBias3d.md b/docs/en/msg_docs/EstimatorBias3d.md index af89bab69f..42b7c0ac7e 100644 --- a/docs/en/msg_docs/EstimatorBias3d.md +++ b/docs/en/msg_docs/EstimatorBias3d.md @@ -1,8 +1,29 @@ +--- +pageClass: is-wide-page +--- + # EstimatorBias3d (UORB message) +**TOPICS:** estimator_bias3d estimator_ev_pos_bias +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorBias3d.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------ | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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) @@ -19,5 +40,6 @@ float32[3] innov_test_ratio # normalized innovation squared test ratio # TOPICS estimator_bias3d # TOPICS estimator_ev_pos_bias - ``` + +::: diff --git a/docs/en/msg_docs/EstimatorEventFlags.md b/docs/en/msg_docs/EstimatorEventFlags.md index c56f29a842..639c3b6db0 100644 --- a/docs/en/msg_docs/EstimatorEventFlags.md +++ b/docs/en/msg_docs/EstimatorEventFlags.md @@ -1,8 +1,41 @@ +--- +pageClass: is-wide-page +--- + # EstimatorEventFlags (UORB message) +**TOPICS:** estimator_eventflags +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorEventFlags.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------------- | -------- | ------------ | ---------- | --------------------------------------------------------------------------------------------------------- | +| 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) @@ -27,5 +60,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/en/msg_docs/EstimatorGpsStatus.md b/docs/en/msg_docs/EstimatorGpsStatus.md index e25be3e558..a7c5927b41 100644 --- a/docs/en/msg_docs/EstimatorGpsStatus.md +++ b/docs/en/msg_docs/EstimatorGpsStatus.md @@ -1,8 +1,38 @@ +--- +pageClass: is-wide-page +--- + # EstimatorGpsStatus (UORB message) +**TOPICS:** estimator_gpsstatus +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorGpsStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------------------- | --------- | ------------ | ---------- | -------------------------------------------------------------------------------- | +| 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) @@ -25,5 +55,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/en/msg_docs/EstimatorInnovations.md b/docs/en/msg_docs/EstimatorInnovations.md index 478fe79831..87b559ecf8 100644 --- a/docs/en/msg_docs/EstimatorInnovations.md +++ b/docs/en/msg_docs/EstimatorInnovations.md @@ -1,8 +1,43 @@ +--- +pageClass: is-wide-page +--- + # EstimatorInnovations (UORB message) +**TOPICS:** estimator_innovations estimator_innovation_variances estimator_innovation_test_ratios +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorInnovations.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------ | ------------ | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | +| 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) @@ -44,5 +79,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/en/msg_docs/EstimatorSelectorStatus.md b/docs/en/msg_docs/EstimatorSelectorStatus.md index 3e64205a8f..71ed593ee3 100644 --- a/docs/en/msg_docs/EstimatorSelectorStatus.md +++ b/docs/en/msg_docs/EstimatorSelectorStatus.md @@ -1,8 +1,37 @@ +--- +pageClass: is-wide-page +--- + # EstimatorSelectorStatus (UORB message) +**TOPICS:** estimator_selectorstatus +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorSelectorStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------- | ------------ | ------------ | ---------- | -------------------------------------- | +| 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) @@ -27,5 +56,6 @@ float32[4] accumulated_gyro_error float32[4] accumulated_accel_error bool gyro_fault_detected bool accel_fault_detected - ``` + +::: diff --git a/docs/en/msg_docs/EstimatorSensorBias.md b/docs/en/msg_docs/EstimatorSensorBias.md index 9b4a1d66c2..b41736370c 100644 --- a/docs/en/msg_docs/EstimatorSensorBias.md +++ b/docs/en/msg_docs/EstimatorSensorBias.md @@ -1,9 +1,43 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------- | ------------ | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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 +70,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/en/msg_docs/EstimatorStates.md b/docs/en/msg_docs/EstimatorStates.md index b3a343217b..f4f5f2f149 100644 --- a/docs/en/msg_docs/EstimatorStates.md +++ b/docs/en/msg_docs/EstimatorStates.md @@ -1,8 +1,26 @@ +--- +pageClass: is-wide-page +--- + # EstimatorStates (UORB message) +**TOPICS:** estimator_states +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStates.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------- | ------------ | ---------- | -------------------------------------------- | +| 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) @@ -12,5 +30,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/en/msg_docs/EstimatorStatus.md b/docs/en/msg_docs/EstimatorStatus.md index aca77484b9..b07b023f3e 100644 --- a/docs/en/msg_docs/EstimatorStatus.md +++ b/docs/en/msg_docs/EstimatorStatus.md @@ -1,6 +1,108 @@ +--- +pageClass: is-wide-page +--- + # EstimatorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatus.msg) +**TOPICS:** estimator_status + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------------------- | ------------ | ------------ | ---------- | -------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------------------------------- | ------- | ----- | --------------------------------------------------------------------------------------------- | +| 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 +232,6 @@ float32 mag_inclination_deg float32 mag_inclination_ref_deg float32 mag_strength_gs float32 mag_strength_ref_gs - ``` + +::: diff --git a/docs/en/msg_docs/EstimatorStatusFlags.md b/docs/en/msg_docs/EstimatorStatusFlags.md index aa7250fe1e..f5cd630a8c 100644 --- a/docs/en/msg_docs/EstimatorStatusFlags.md +++ b/docs/en/msg_docs/EstimatorStatusFlags.md @@ -1,6 +1,84 @@ +--- +pageClass: is-wide-page +--- + # EstimatorStatusFlags (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatusFlags.msg) +**TOPICS:** estimator_statusflags + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------------- | -------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------ | +| 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 +149,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/en/msg_docs/Event.md b/docs/en/msg_docs/Event.md index 5d22f337f5..b32143749d 100644 --- a/docs/en/msg_docs/Event.md +++ b/docs/en/msg_docs/Event.md @@ -1,8 +1,35 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------- | ----------- | ------------ | ---------- | ------------------------------------------------------ | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------- | -------- | ----- | ----------- | +| 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 +44,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/en/msg_docs/EventV0.md b/docs/en/msg_docs/EventV0.md index 19cfa7b70c..e0d8cf8619 100644 --- a/docs/en/msg_docs/EventV0.md +++ b/docs/en/msg_docs/EventV0.md @@ -1,9 +1,35 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------- | ----------- | ------------ | ---------- | ------------------------------------------------------ | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------- | -------- | ----- | ----------- | +| 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 +46,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/en/msg_docs/FailsafeFlags.md b/docs/en/msg_docs/FailsafeFlags.md index a9e0079ae8..4d55acf155 100644 --- a/docs/en/msg_docs/FailsafeFlags.md +++ b/docs/en/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,60 @@ 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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------------------------- | -------- | ------------ | ---------- | ----------------------------------------------------------------------------------------- | +| 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 +125,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/en/msg_docs/FailureDetectorStatus.md b/docs/en/msg_docs/FailureDetectorStatus.md index a112a1e642..66474a28c0 100644 --- a/docs/en/msg_docs/FailureDetectorStatus.md +++ b/docs/en/msg_docs/FailureDetectorStatus.md @@ -1,6 +1,33 @@ +--- +pageClass: is-wide-page +--- + # FailureDetectorStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FailureDetectorStatus.msg) +**TOPICS:** failure_detectorstatus + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------- | --------- | ------------ | ---------- | --------------------------------------------------------------- | +| 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 +45,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/en/msg_docs/FigureEightStatus.md b/docs/en/msg_docs/FigureEightStatus.md index 5487490804..2f1e197a89 100644 --- a/docs/en/msg_docs/FigureEightStatus.md +++ b/docs/en/msg_docs/FigureEightStatus.md @@ -1,8 +1,29 @@ +--- +pageClass: is-wide-page +--- + # FigureEightStatus (UORB message) +**TOPICS:** figure_eightstatus +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FigureEightStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | --------- | ------------ | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| 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) @@ -13,5 +34,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/en/msg_docs/FixedWingLateralGuidanceStatus.md b/docs/en/msg_docs/FixedWingLateralGuidanceStatus.md index 02dc50b410..648e02d748 100644 --- a/docs/en/msg_docs/FixedWingLateralGuidanceStatus.md +++ b/docs/en/msg_docs/FixedWingLateralGuidanceStatus.md @@ -1,9 +1,32 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| 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 +42,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/en/msg_docs/FixedWingLateralSetpoint.md b/docs/en/msg_docs/FixedWingLateralSetpoint.md index 153167bb62..3b1cc74836 100644 --- a/docs/en/msg_docs/FixedWingLateralSetpoint.md +++ b/docs/en/msg_docs/FixedWingLateralSetpoint.md @@ -1,10 +1,33 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------- | --------- | ------------ | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +41,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/en/msg_docs/FixedWingLateralStatus.md b/docs/en/msg_docs/FixedWingLateralStatus.md index 9214d1e9e0..5956a00dfb 100644 --- a/docs/en/msg_docs/FixedWingLateralStatus.md +++ b/docs/en/msg_docs/FixedWingLateralStatus.md @@ -1,9 +1,26 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------------- | --------- | ------------ | ---------- | ---------------------------------------------------------------------------- | +| 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 +30,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/en/msg_docs/FixedWingLongitudinalSetpoint.md b/docs/en/msg_docs/FixedWingLongitudinalSetpoint.md index 6b8fb29e5b..f58d892f8f 100644 --- a/docs/en/msg_docs/FixedWingLongitudinalSetpoint.md +++ b/docs/en/msg_docs/FixedWingLongitudinalSetpoint.md @@ -1,11 +1,35 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------- | --------- | ------------ | ---------- | ---------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +46,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/en/msg_docs/FixedWingRunwayControl.md b/docs/en/msg_docs/FixedWingRunwayControl.md index 9e9f5ff428..a51a543a72 100644 --- a/docs/en/msg_docs/FixedWingRunwayControl.md +++ b/docs/en/msg_docs/FixedWingRunwayControl.md @@ -1,19 +1,53 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------------- | --------- | ------------ | ---------- | -------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------- | +| 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/en/msg_docs/FlightPhaseEstimation.md b/docs/en/msg_docs/FlightPhaseEstimation.md index b3d9147e28..de23fd4f1b 100644 --- a/docs/en/msg_docs/FlightPhaseEstimation.md +++ b/docs/en/msg_docs/FlightPhaseEstimation.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # FlightPhaseEstimation (UORB message) +**TOPICS:** flight_phaseestimation +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FlightPhaseEstimation.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | -------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| flight_phase | `uint8` | | | Estimate of current flight phase | + +## Constants + +| Name | Type | Value | Description | +| --------------------------------------------------------- | ------- | ----- | ------------------------------- | +| 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) @@ -13,5 +37,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/en/msg_docs/FollowTarget.md b/docs/en/msg_docs/FollowTarget.md index e9086f27d6..1aab86e642 100644 --- a/docs/en/msg_docs/FollowTarget.md +++ b/docs/en/msg_docs/FollowTarget.md @@ -1,8 +1,29 @@ +--- +pageClass: is-wide-page +--- + # FollowTarget (UORB message) +**TOPICS:** follow_target +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTarget.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | --------- | ------------ | ---------- | -------------------------------------- | +| 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) @@ -16,5 +37,6 @@ float32 vx # target vel in x float32 vz # target vel in z uint8 est_cap # target reporting capabilities - ``` + +::: diff --git a/docs/en/msg_docs/FollowTargetEstimator.md b/docs/en/msg_docs/FollowTargetEstimator.md index e118475f41..a9a18b8796 100644 --- a/docs/en/msg_docs/FollowTargetEstimator.md +++ b/docs/en/msg_docs/FollowTargetEstimator.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # FollowTargetEstimator (UORB message) +**TOPICS:** follow_targetestimator +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTargetEstimator.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------------- | ------------ | ------------ | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| 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) @@ -21,5 +46,6 @@ float32[3] acc_est # Estimated target NED acceleration (m^2/s) uint64 prediction_count uint64 fusion_count - ``` + +::: diff --git a/docs/en/msg_docs/FollowTargetStatus.md b/docs/en/msg_docs/FollowTargetStatus.md index 7f24cc1dd5..a40cc3c215 100644 --- a/docs/en/msg_docs/FollowTargetStatus.md +++ b/docs/en/msg_docs/FollowTargetStatus.md @@ -1,8 +1,29 @@ +--- +pageClass: is-wide-page +--- + # FollowTargetStatus (UORB message) +**TOPICS:** follow_targetstatus +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FollowTargetStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------- | ------------ | ------------ | ---------- | -------------------------------------------------------------------------------------- | +| 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 @@ -17,5 +38,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/en/msg_docs/FuelTankStatus.md b/docs/en/msg_docs/FuelTankStatus.md index 608999e84c..762ad98bfe 100644 --- a/docs/en/msg_docs/FuelTankStatus.md +++ b/docs/en/msg_docs/FuelTankStatus.md @@ -1,8 +1,38 @@ +--- +pageClass: is-wide-page +--- + # FuelTankStatus (UORB message) +**TOPICS:** fuel_tankstatus +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/FuelTankStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------- | ------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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) @@ -22,5 +52,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/en/msg_docs/GainCompression.md b/docs/en/msg_docs/GainCompression.md index e26c1e8fcc..c19a34c34b 100644 --- a/docs/en/msg_docs/GainCompression.md +++ b/docs/en/msg_docs/GainCompression.md @@ -1,6 +1,25 @@ +--- +pageClass: is-wide-page +--- + # GainCompression (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GainCompression.msg) +**TOPICS:** gain_compression + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------- | ------------ | ------------ | ---------- | ------------------------------------------------------------------- | +| 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 +27,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/en/msg_docs/GeneratorStatus.md b/docs/en/msg_docs/GeneratorStatus.md index 159221547f..41092269e5 100644 --- a/docs/en/msg_docs/GeneratorStatus.md +++ b/docs/en/msg_docs/GeneratorStatus.md @@ -1,8 +1,61 @@ +--- +pageClass: is-wide-page +--- + # GeneratorStatus (UORB message) +**TOPICS:** generator_status +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeneratorStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------- | --------- | ------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------------------------------------------------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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) @@ -49,5 +102,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/en/msg_docs/GeofenceResult.md b/docs/en/msg_docs/GeofenceResult.md index f54a2f9942..66fb6f97bd 100644 --- a/docs/en/msg_docs/GeofenceResult.md +++ b/docs/en/msg_docs/GeofenceResult.md @@ -1,8 +1,37 @@ +--- +pageClass: is-wide-page +--- + # GeofenceResult (UORB message) +**TOPICS:** geofence_result +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeofenceResult.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------------- | -------- | ------------ | ---------- | ---------------------------------------------------------------------- | +| 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) @@ -18,5 +47,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/en/msg_docs/GeofenceStatus.md b/docs/en/msg_docs/GeofenceStatus.md index 298fd31ba6..6bde8a6566 100644 --- a/docs/en/msg_docs/GeofenceStatus.md +++ b/docs/en/msg_docs/GeofenceStatus.md @@ -1,8 +1,31 @@ +--- +pageClass: is-wide-page +--- + # GeofenceStatus (UORB message) +**TOPICS:** geofence_status +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GeofenceStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------- | -------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| geofence_id | `uint32` | | | loaded geofence id | +| status | `uint8` | | | Current geofence status | + +## Constants + +| Name | Type | Value | Description | +| --------------------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -12,5 +35,6 @@ uint8 status # Current geofence status uint8 GF_STATUS_LOADING = 0 uint8 GF_STATUS_READY = 1 - ``` + +::: diff --git a/docs/en/msg_docs/GimbalControls.md b/docs/en/msg_docs/GimbalControls.md index cde183d443..0f7c46bdc6 100644 --- a/docs/en/msg_docs/GimbalControls.md +++ b/docs/en/msg_docs/GimbalControls.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # GimbalControls (UORB message) +**TOPICS:** gimbal_controls +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalControls.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------ | ------------ | ---------- | -------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -11,6 +35,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/en/msg_docs/GimbalDeviceAttitudeStatus.md b/docs/en/msg_docs/GimbalDeviceAttitudeStatus.md index 0935029087..8d155b1cdd 100644 --- a/docs/en/msg_docs/GimbalDeviceAttitudeStatus.md +++ b/docs/en/msg_docs/GimbalDeviceAttitudeStatus.md @@ -1,6 +1,46 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------- | ------------ | ------------ | ---------- | -------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------------- | -------- | ----- | ----------- | +| 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 +69,6 @@ float32 delta_yaw_velocity uint8 gimbal_device_id bool received_from_mavlink - ``` + +::: diff --git a/docs/en/msg_docs/GimbalDeviceInformation.md b/docs/en/msg_docs/GimbalDeviceInformation.md index fd727f4b86..e886ad892a 100644 --- a/docs/en/msg_docs/GimbalDeviceInformation.md +++ b/docs/en/msg_docs/GimbalDeviceInformation.md @@ -1,8 +1,54 @@ +--- +pageClass: is-wide-page +--- + # GimbalDeviceInformation (UORB message) +**TOPICS:** gimbal_deviceinformation +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceInformation.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ----------- | ------------ | ---------- | -------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------------------------------------- | -------- | ----- | ----------- | +| 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) @@ -41,5 +87,6 @@ float32 yaw_min # [rad] float32 yaw_max # [rad] uint8 gimbal_device_id - ``` + +::: diff --git a/docs/en/msg_docs/GimbalDeviceSetAttitude.md b/docs/en/msg_docs/GimbalDeviceSetAttitude.md index 9921536084..9b7ee4b8e5 100644 --- a/docs/en/msg_docs/GimbalDeviceSetAttitude.md +++ b/docs/en/msg_docs/GimbalDeviceSetAttitude.md @@ -1,8 +1,39 @@ +--- +pageClass: is-wide-page +--- + # GimbalDeviceSetAttitude (UORB message) +**TOPICS:** gimbal_deviceset_attitude +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalDeviceSetAttitude.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------ | ------------ | ------------ | ---------- | -------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------- | -------- | ----- | ----------- | +| 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) @@ -22,5 +53,6 @@ float32[4] q float32 angular_velocity_x float32 angular_velocity_y float32 angular_velocity_z - ``` + +::: diff --git a/docs/en/msg_docs/GimbalManagerInformation.md b/docs/en/msg_docs/GimbalManagerInformation.md index ce60d2c5e0..6f0dafc790 100644 --- a/docs/en/msg_docs/GimbalManagerInformation.md +++ b/docs/en/msg_docs/GimbalManagerInformation.md @@ -1,8 +1,49 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerInformation (UORB message) +**TOPICS:** gimbal_managerinformation +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerInformation.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | --------- | ------------ | ---------- | -------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------------------------------------------------------------- | -------- | ------ | ----------- | +| 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) @@ -34,5 +75,6 @@ float32 pitch_max # [rad] float32 yaw_min # [rad] float32 yaw_max # [rad] - ``` + +::: diff --git a/docs/en/msg_docs/GimbalManagerSetAttitude.md b/docs/en/msg_docs/GimbalManagerSetAttitude.md index 22c97eb74e..90690c07ee 100644 --- a/docs/en/msg_docs/GimbalManagerSetAttitude.md +++ b/docs/en/msg_docs/GimbalManagerSetAttitude.md @@ -1,8 +1,43 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerSetAttitude (UORB message) +**TOPICS:** gimbal_managerset_attitude +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerSetAttitude.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------ | ------------ | ------------ | ---------- | -------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------------------------------- | -------- | ----- | ----------- | +| 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) @@ -29,5 +64,6 @@ float32 angular_velocity_y float32 angular_velocity_z uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/en/msg_docs/GimbalManagerSetManualControl.md b/docs/en/msg_docs/GimbalManagerSetManualControl.md index c419917ba6..23efa6c4f4 100644 --- a/docs/en/msg_docs/GimbalManagerSetManualControl.md +++ b/docs/en/msg_docs/GimbalManagerSetManualControl.md @@ -1,8 +1,42 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerSetManualControl (UORB message) +**TOPICS:** gimbal_managerset_manualcontrol +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerSetManualControl.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | --------- | ------------ | ---------- | -------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------------------------------- | -------- | ----- | ----------- | +| 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) @@ -26,5 +60,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/en/msg_docs/GimbalManagerStatus.md b/docs/en/msg_docs/GimbalManagerStatus.md index d0f741ad39..4773e15b50 100644 --- a/docs/en/msg_docs/GimbalManagerStatus.md +++ b/docs/en/msg_docs/GimbalManagerStatus.md @@ -1,8 +1,28 @@ +--- +pageClass: is-wide-page +--- + # GimbalManagerStatus (UORB message) +**TOPICS:** gimbal_managerstatus +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GimbalManagerStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------ | -------- | ------------ | ---------- | -------------------------------------- | +| 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) @@ -13,5 +33,6 @@ uint8 primary_control_sysid uint8 primary_control_compid uint8 secondary_control_sysid uint8 secondary_control_compid - ``` + +::: diff --git a/docs/en/msg_docs/GotoSetpoint.md b/docs/en/msg_docs/GotoSetpoint.md index 746d15eb00..a656ab2dfc 100644 --- a/docs/en/msg_docs/GotoSetpoint.md +++ b/docs/en/msg_docs/GotoSetpoint.md @@ -1,13 +1,39 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------------- | ------------ | ------------ | ---------- | --------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +62,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/en/msg_docs/GpioConfig.md b/docs/en/msg_docs/GpioConfig.md index 0d21b3ce66..f8b54041c1 100644 --- a/docs/en/msg_docs/GpioConfig.md +++ b/docs/en/msg_docs/GpioConfig.md @@ -1,8 +1,44 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | -------- | ------------ | ---------- | -------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------- | -------- | ----- | ----------- | +| 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 +69,6 @@ uint32 OUTPUT_OPENDRAIN = 256 # 0x0100 uint32 OUTPUT_OPENDRAIN_PULLUP = 272 # 0x0110 uint32 config - ``` + +::: diff --git a/docs/en/msg_docs/GpioIn.md b/docs/en/msg_docs/GpioIn.md index 589e7d7841..f3af80cd4e 100644 --- a/docs/en/msg_docs/GpioIn.md +++ b/docs/en/msg_docs/GpioIn.md @@ -1,8 +1,32 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | -------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| device_id | `uint32` | | | Device id | +| state | `uint32` | | | pin state mask | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------------- | ------- | ----- | ----------- | +| 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 +36,6 @@ uint64 timestamp # time since system start (microseconds) uint32 device_id # Device id uint32 state # pin state mask - ``` + +::: diff --git a/docs/en/msg_docs/GpioOut.md b/docs/en/msg_docs/GpioOut.md index fd77f0be3b..fa554844be 100644 --- a/docs/en/msg_docs/GpioOut.md +++ b/docs/en/msg_docs/GpioOut.md @@ -1,8 +1,27 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | -------- | ------------ | ---------- | -------------------------------------- | +| 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 +31,6 @@ uint32 device_id # Device id uint32 mask # pin mask uint32 state # pin state mask - ``` + +::: diff --git a/docs/en/msg_docs/GpioRequest.md b/docs/en/msg_docs/GpioRequest.md index 027b84c685..676b46f79e 100644 --- a/docs/en/msg_docs/GpioRequest.md +++ b/docs/en/msg_docs/GpioRequest.md @@ -1,13 +1,31 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | -------- | ------------ | ---------- | -------------------------------------- | +| 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/en/msg_docs/GpsDump.md b/docs/en/msg_docs/GpsDump.md index 03910da906..888a0a825f 100644 --- a/docs/en/msg_docs/GpsDump.md +++ b/docs/en/msg_docs/GpsDump.md @@ -1,8 +1,36 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ----------- | ------------ | ---------- | -------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------- | ------- | ----- | ----------- | +| 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 +47,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/en/msg_docs/GpsInjectData.md b/docs/en/msg_docs/GpsInjectData.md index 0eefd1da40..62d3d356d0 100644 --- a/docs/en/msg_docs/GpsInjectData.md +++ b/docs/en/msg_docs/GpsInjectData.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # GpsInjectData (UORB message) +**TOPICS:** gps_injectdata +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/GpsInjectData.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ------------ | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -16,5 +41,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/en/msg_docs/Gripper.md b/docs/en/msg_docs/Gripper.md index eb888e2017..8fcda0cacc 100644 --- a/docs/en/msg_docs/Gripper.md +++ b/docs/en/msg_docs/Gripper.md @@ -1,8 +1,32 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | -------- | ------------ | ---------- | ------------------------------- | +| timestamp | `uint64` | | | +| command | `int8` | | | Commanded state for the gripper | + +## Constants + +| Name | Type | Value | Description | +| ----------------------------------------------- | ------ | ----- | ----------- | +| 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 +36,6 @@ uint64 timestamp int8 command # Commanded state for the gripper int8 COMMAND_GRAB = 0 int8 COMMAND_RELEASE = 1 - ``` + +::: diff --git a/docs/en/msg_docs/HealthReport.md b/docs/en/msg_docs/HealthReport.md index 447d9da621..608fbecfc1 100644 --- a/docs/en/msg_docs/HealthReport.md +++ b/docs/en/msg_docs/HealthReport.md @@ -1,8 +1,29 @@ +--- +pageClass: is-wide-page +--- + # HealthReport (UORB message) +**TOPICS:** health_report +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HealthReport.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------------- | -------- | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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) @@ -17,5 +38,6 @@ uint64 health_error_flags uint64 arming_check_warning_flags uint64 arming_check_error_flags - ``` + +::: diff --git a/docs/en/msg_docs/HeaterStatus.md b/docs/en/msg_docs/HeaterStatus.md index 3917f02428..431b621226 100644 --- a/docs/en/msg_docs/HeaterStatus.md +++ b/docs/en/msg_docs/HeaterStatus.md @@ -1,8 +1,40 @@ +--- +pageClass: is-wide-page +--- + # HeaterStatus (UORB message) +**TOPICS:** heater_status +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HeaterStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------- | --------- | ------------ | ---------- | -------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -25,5 +57,6 @@ float32 feed_forward_value uint8 MODE_GPIO = 1 uint8 MODE_PX4IO = 2 uint8 mode - ``` + +::: diff --git a/docs/en/msg_docs/HomePosition.md b/docs/en/msg_docs/HomePosition.md index b48528de7e..ed5b43dc3c 100644 --- a/docs/en/msg_docs/HomePosition.md +++ b/docs/en/msg_docs/HomePosition.md @@ -1,8 +1,44 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | --------- | ------------ | ---------- | -------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +66,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/en/msg_docs/HomePositionV0.md b/docs/en/msg_docs/HomePositionV0.md index 270d752337..c95ba3d44a 100644 --- a/docs/en/msg_docs/HomePositionV0.md +++ b/docs/en/msg_docs/HomePositionV0.md @@ -1,8 +1,42 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | --------- | ------------ | ---------- | -------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +62,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/en/msg_docs/HoverThrustEstimate.md b/docs/en/msg_docs/HoverThrustEstimate.md index 8c0aa1eb83..c892718d22 100644 --- a/docs/en/msg_docs/HoverThrustEstimate.md +++ b/docs/en/msg_docs/HoverThrustEstimate.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # HoverThrustEstimate (UORB message) +**TOPICS:** hover_thrustestimate +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/HoverThrustEstimate.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------- | --------- | ------------ | ---------- | ----------------------------------------------------------------------- | +| 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) @@ -18,5 +40,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/en/msg_docs/InputRc.md b/docs/en/msg_docs/InputRc.md index fbae6e0254..9ad672ebc8 100644 --- a/docs/en/msg_docs/InputRc.md +++ b/docs/en/msg_docs/InputRc.md @@ -1,6 +1,59 @@ +--- +pageClass: is-wide-page +--- + # InputRc (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InputRc.msg) +**TOPICS:** input_rc + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------- | ------------ | ------------ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------------------------------- | ------- | ----- | -------------------------------------------------------------------------------- | +| 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 +98,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/en/msg_docs/InternalCombustionEngineControl.md b/docs/en/msg_docs/InternalCombustionEngineControl.md index aacacd8973..02af18d879 100644 --- a/docs/en/msg_docs/InternalCombustionEngineControl.md +++ b/docs/en/msg_docs/InternalCombustionEngineControl.md @@ -1,6 +1,27 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------- | --------- | ------------ | ---------- | ----------------------------------------------------------------------------------------------------------------------------- | +| 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 +32,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/en/msg_docs/InternalCombustionEngineStatus.md b/docs/en/msg_docs/InternalCombustionEngineStatus.md index 32642ea23e..33f25cfb7a 100644 --- a/docs/en/msg_docs/InternalCombustionEngineStatus.md +++ b/docs/en/msg_docs/InternalCombustionEngineStatus.md @@ -1,8 +1,77 @@ +--- +pageClass: is-wide-page +--- + # InternalCombustionEngineStatus (UORB message) +**TOPICS:** internal_combustionengine_status +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InternalCombustionEngineStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------------------------------------- | -------- | ------ | ------------------------------------------------------ | +| 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) @@ -69,5 +138,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/en/msg_docs/IridiumsbdStatus.md b/docs/en/msg_docs/IridiumsbdStatus.md index f2b76adc24..02263b6922 100644 --- a/docs/en/msg_docs/IridiumsbdStatus.md +++ b/docs/en/msg_docs/IridiumsbdStatus.md @@ -1,8 +1,36 @@ +--- +pageClass: is-wide-page +--- + # IridiumsbdStatus (UORB message) +**TOPICS:** iridiumsbd_status +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/IridiumsbdStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------- | -------- | ------------ | ---------- | ------------------------------------------------------------------------------------ | +| 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) @@ -20,5 +48,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/en/msg_docs/IrlockReport.md b/docs/en/msg_docs/IrlockReport.md index d850a0bb1e..fbe26d9649 100644 --- a/docs/en/msg_docs/IrlockReport.md +++ b/docs/en/msg_docs/IrlockReport.md @@ -1,8 +1,29 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------------------ | +| 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 +37,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/en/msg_docs/LandingGear.md b/docs/en/msg_docs/LandingGear.md index 89b79a8b2c..0abcc5b2b2 100644 --- a/docs/en/msg_docs/LandingGear.md +++ b/docs/en/msg_docs/LandingGear.md @@ -1,8 +1,31 @@ +--- +pageClass: is-wide-page +--- + # LandingGear (UORB message) +**TOPICS:** landing_gear +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingGear.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | -------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| landing_gear | `int8` | | | + +## Constants + +| Name | Type | Value | Description | +| ----------------------------------- | ------ | ----- | ---------------------- | +| 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) @@ -12,5 +35,6 @@ int8 GEAR_DOWN = -1 # landing gear down int8 GEAR_KEEP = 0 # keep the current state int8 landing_gear - ``` + +::: diff --git a/docs/en/msg_docs/LandingGearWheel.md b/docs/en/msg_docs/LandingGearWheel.md index 1c04a448bd..d220ba4101 100644 --- a/docs/en/msg_docs/LandingGearWheel.md +++ b/docs/en/msg_docs/LandingGearWheel.md @@ -1,12 +1,28 @@ +--- +pageClass: is-wide-page +--- + # LandingGearWheel (UORB message) +**TOPICS:** landing_gearwheel +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingGearWheel.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------- | --------- | ------------ | ---------- | -------------------------------------------------------- | +| 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/en/msg_docs/LandingTargetInnovations.md b/docs/en/msg_docs/LandingTargetInnovations.md index 29bc06bbc2..0bf0dc7bc4 100644 --- a/docs/en/msg_docs/LandingTargetInnovations.md +++ b/docs/en/msg_docs/LandingTargetInnovations.md @@ -1,8 +1,26 @@ +--- +pageClass: is-wide-page +--- + # LandingTargetInnovations (UORB message) +**TOPICS:** landing_targetinnovations +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LandingTargetInnovations.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------- | --------- | ------------ | ---------- | -------------------------------------- | +| 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) @@ -13,5 +31,6 @@ float32 innov_y # Innovation covariance of landing target position estimator float32 innov_cov_x float32 innov_cov_y - ``` + +::: diff --git a/docs/en/msg_docs/LandingTargetPose.md b/docs/en/msg_docs/LandingTargetPose.md index b4a76aeda7..e06e7157a3 100644 --- a/docs/en/msg_docs/LandingTargetPose.md +++ b/docs/en/msg_docs/LandingTargetPose.md @@ -1,8 +1,40 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------- | --------- | ------------ | ---------- | ----------------------------------------------------------------------------------------- | +| 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 +63,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/en/msg_docs/LateralControlConfiguration.md b/docs/en/msg_docs/LateralControlConfiguration.md index b0a03a6378..36f7724a09 100644 --- a/docs/en/msg_docs/LateralControlConfiguration.md +++ b/docs/en/msg_docs/LateralControlConfiguration.md @@ -1,9 +1,31 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------- | --------- | ------------ | ---------- | ---------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +36,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/en/msg_docs/LaunchDetectionStatus.md b/docs/en/msg_docs/LaunchDetectionStatus.md index a85c63e4e8..49067ef229 100644 --- a/docs/en/msg_docs/LaunchDetectionStatus.md +++ b/docs/en/msg_docs/LaunchDetectionStatus.md @@ -1,8 +1,33 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------- | -------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| launch_detection_state | `uint8` | | | + +## Constants + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------------- | +| 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 +39,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/en/msg_docs/LedControl.md b/docs/en/msg_docs/LedControl.md index 69590eb8a5..0b066b2b90 100644 --- a/docs/en/msg_docs/LedControl.md +++ b/docs/en/msg_docs/LedControl.md @@ -1,9 +1,53 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------- | -------- | ------------ | ---------- | --------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------- | ------- | ----- | --------------------------------------------------------------------------------------- | +| 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 +87,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/en/msg_docs/LogMessage.md b/docs/en/msg_docs/LogMessage.md index 5f640bae18..c9cd50cdb3 100644 --- a/docs/en/msg_docs/LogMessage.md +++ b/docs/en/msg_docs/LogMessage.md @@ -1,8 +1,32 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ----------- | ------------ | ---------- | -------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| severity | `uint8` | | | log level (same as in the linux kernel, starting with 0) | +| text | `char[127]` | | | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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 +37,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/en/msg_docs/LoggerStatus.md b/docs/en/msg_docs/LoggerStatus.md index 63ca114851..48d3a54b2e 100644 --- a/docs/en/msg_docs/LoggerStatus.md +++ b/docs/en/msg_docs/LoggerStatus.md @@ -1,8 +1,42 @@ +--- +pageClass: is-wide-page +--- + # LoggerStatus (UORB message) +**TOPICS:** logger_status +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/LoggerStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------- | --------- | ------------ | ---------- | ----------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------- | ------- | ----- | ----------------------------------------- | +| 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) @@ -28,5 +62,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/en/msg_docs/LongitudinalControlConfiguration.md b/docs/en/msg_docs/LongitudinalControlConfiguration.md index 901d5c23bc..92d81b624c 100644 --- a/docs/en/msg_docs/LongitudinalControlConfiguration.md +++ b/docs/en/msg_docs/LongitudinalControlConfiguration.md @@ -1,10 +1,39 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +53,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/en/msg_docs/MagWorkerData.md b/docs/en/msg_docs/MagWorkerData.md index cb7103aaea..cd6d8964d9 100644 --- a/docs/en/msg_docs/MagWorkerData.md +++ b/docs/en/msg_docs/MagWorkerData.md @@ -1,8 +1,37 @@ +--- +pageClass: is-wide-page +--- + # MagWorkerData (UORB message) +**TOPICS:** mag_workerdata +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MagWorkerData.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------------- | ------------ | ------------ | ---------- | -------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------- | ------- | ----- | ----------- | +| 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) @@ -18,5 +47,6 @@ bool[4] side_data_collected float32[4] x float32[4] y float32[4] z - ``` + +::: diff --git a/docs/en/msg_docs/MagnetometerBiasEstimate.md b/docs/en/msg_docs/MagnetometerBiasEstimate.md index 08f4011497..fafb6dc4df 100644 --- a/docs/en/msg_docs/MagnetometerBiasEstimate.md +++ b/docs/en/msg_docs/MagnetometerBiasEstimate.md @@ -1,8 +1,27 @@ +--- +pageClass: is-wide-page +--- + # MagnetometerBiasEstimate (UORB message) +**TOPICS:** magnetometer_biasestimate +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MagnetometerBiasEstimate.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ------------ | ------------ | ---------- | -------------------------------------- | +| 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) @@ -13,5 +32,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/en/msg_docs/ManualControlSetpoint.md b/docs/en/msg_docs/ManualControlSetpoint.md index a4f70d6738..5d85d3d27f 100644 --- a/docs/en/msg_docs/ManualControlSetpoint.md +++ b/docs/en/msg_docs/ManualControlSetpoint.md @@ -1,8 +1,52 @@ +--- +pageClass: is-wide-page +--- + # ManualControlSetpoint (UORB message) +**TOPICS:** manual_control_setpoint manual_control_input +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ManualControlSetpoint.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------- | -------- | ----- | ------------------------ | +| 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 @@ -53,5 +97,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/en/msg_docs/ManualControlSwitches.md b/docs/en/msg_docs/ManualControlSwitches.md index 189682730f..9d2b661535 100644 --- a/docs/en/msg_docs/ManualControlSwitches.md +++ b/docs/en/msg_docs/ManualControlSwitches.md @@ -1,6 +1,54 @@ +--- +pageClass: is-wide-page +--- + # ManualControlSwitches (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ManualControlSwitches.msg) +**TOPICS:** manual_controlswitches + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------ | -------- | ------------ | ---------- | ------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------- | ------- | ----- | --------------------------------- | +| 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 +88,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/en/msg_docs/MavlinkLog.md b/docs/en/msg_docs/MavlinkLog.md index 91900aea1b..b95bdc65ff 100644 --- a/docs/en/msg_docs/MavlinkLog.md +++ b/docs/en/msg_docs/MavlinkLog.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # MavlinkLog (UORB message) +**TOPICS:** mavlink_log +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MavlinkLog.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ----------- | ------------ | ---------- | -------------------------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| text | `char[127]` | | | +| severity | `uint8` | | | log level (same as in the linux kernel, starting with 0) | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -11,5 +33,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/en/msg_docs/MavlinkTunnel.md b/docs/en/msg_docs/MavlinkTunnel.md index 8775e82ae4..ca6556b13b 100644 --- a/docs/en/msg_docs/MavlinkTunnel.md +++ b/docs/en/msg_docs/MavlinkTunnel.md @@ -1,8 +1,45 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------ | ------------ | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------------------------------------------- | ------- | ----- | ---------------------------------------- | +| 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 +64,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/en/msg_docs/MessageFormatRequest.md b/docs/en/msg_docs/MessageFormatRequest.md index 7c4675e3f6..0f6acac371 100644 --- a/docs/en/msg_docs/MessageFormatRequest.md +++ b/docs/en/msg_docs/MessageFormatRequest.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # MessageFormatRequest (UORB message) +**TOPICS:** message_formatrequest +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MessageFormatRequest.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ---------- | ------------ | ---------- | ---------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------- | -------- | ----- | ------------------------------------------------------------------------------------------------------------------- | +| 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) @@ -14,5 +36,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/en/msg_docs/MessageFormatResponse.md b/docs/en/msg_docs/MessageFormatResponse.md index 3a537289a0..5e11481d34 100644 --- a/docs/en/msg_docs/MessageFormatResponse.md +++ b/docs/en/msg_docs/MessageFormatResponse.md @@ -1,8 +1,26 @@ +--- +pageClass: is-wide-page +--- + # MessageFormatResponse (UORB message) +**TOPICS:** message_formatresponse +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MessageFormatResponse.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ---------- | ------------ | ---------- | ---------------------------------------------------------------------------------------------------------------- | +| 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) @@ -15,5 +33,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/en/msg_docs/Mission.md b/docs/en/msg_docs/Mission.md index 139b2e8914..69771d01c0 100644 --- a/docs/en/msg_docs/Mission.md +++ b/docs/en/msg_docs/Mission.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # Mission (UORB message) +**TOPICS:** mission +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Mission.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------- | -------- | ------------ | ---------- | ----------------------------------------------------------------------------------- | +| 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) @@ -19,5 +43,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/en/msg_docs/MissionResult.md b/docs/en/msg_docs/MissionResult.md index 325dc0e438..05be6aea8a 100644 --- a/docs/en/msg_docs/MissionResult.md +++ b/docs/en/msg_docs/MissionResult.md @@ -1,8 +1,36 @@ +--- +pageClass: is-wide-page +--- + # MissionResult (UORB message) +**TOPICS:** mission_result +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MissionResult.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------- | -------- | ------------ | ---------- | --------------------------------------------------------------------------------------------------- | +| 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) @@ -25,5 +53,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/en/msg_docs/ModeCompleted.md b/docs/en/msg_docs/ModeCompleted.md index 76c0c297e6..2b223136fc 100644 --- a/docs/en/msg_docs/ModeCompleted.md +++ b/docs/en/msg_docs/ModeCompleted.md @@ -1,11 +1,34 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | -------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| result | `uint8` | | | One of RESULT\_\* | +| nav_state | `uint8` | | | Source mode (values in VehicleStatus) | + +## Constants + +| Name | Type | Value | Description | +| --------------------------------------------------------- | -------- | ----- | --------------------------- | +| 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 +48,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/en/msg_docs/MountOrientation.md b/docs/en/msg_docs/MountOrientation.md index dc676cb94b..1928e141cc 100644 --- a/docs/en/msg_docs/MountOrientation.md +++ b/docs/en/msg_docs/MountOrientation.md @@ -1,11 +1,27 @@ +--- +pageClass: is-wide-page +--- + # MountOrientation (UORB message) +**TOPICS:** mount_orientation +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/MountOrientation.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------- | ------------ | ------------ | ---------- | ------------------------------------------------------ | +| 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/en/msg_docs/NavigatorMissionItem.md b/docs/en/msg_docs/NavigatorMissionItem.md index 3c3bc3f58c..92fab1ba15 100644 --- a/docs/en/msg_docs/NavigatorMissionItem.md +++ b/docs/en/msg_docs/NavigatorMissionItem.md @@ -1,8 +1,38 @@ +--- +pageClass: is-wide-page +--- + # NavigatorMissionItem (UORB message) +**TOPICS:** navigator_missionitem +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NavigatorMissionItem.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------------ | +| 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) @@ -28,5 +58,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/en/msg_docs/NavigatorStatus.md b/docs/en/msg_docs/NavigatorStatus.md index 4eb53a56c8..18fe9235d4 100644 --- a/docs/en/msg_docs/NavigatorStatus.md +++ b/docs/en/msg_docs/NavigatorStatus.md @@ -1,9 +1,33 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | -------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| nav_state | `uint8` | | | Source mode (values in VehicleStatus) | +| failure | `uint8` | | | Navigator failure enum | + +## Constants + +| Name | Type | Value | Description | +| ----------------------------------------- | ------- | ----- | --------------------------------------------------- | +| 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 +39,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/en/msg_docs/NeuralControl.md b/docs/en/msg_docs/NeuralControl.md index 3e99004fbc..bb62fdb33b 100644 --- a/docs/en/msg_docs/NeuralControl.md +++ b/docs/en/msg_docs/NeuralControl.md @@ -1,12 +1,32 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------- | ------------- | ------------ | ---------- | ---------------------------------------------------------------------- | +| 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 +42,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/en/msg_docs/NormalizedUnsignedSetpoint.md b/docs/en/msg_docs/NormalizedUnsignedSetpoint.md index 025a5fae76..521881a0a9 100644 --- a/docs/en/msg_docs/NormalizedUnsignedSetpoint.md +++ b/docs/en/msg_docs/NormalizedUnsignedSetpoint.md @@ -1,8 +1,23 @@ +--- +pageClass: is-wide-page +--- + # NormalizedUnsignedSetpoint (UORB message) +**TOPICS:** flaps_setpoint spoilers_setpoint +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/NormalizedUnsignedSetpoint.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------- | --------- | ------------ | ---------- | -------------------------------------- | +| 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) @@ -10,5 +25,6 @@ uint64 timestamp # time since system start (microseconds) float32 normalized_setpoint # [0, 1] # TOPICS flaps_setpoint spoilers_setpoint - ``` + +::: diff --git a/docs/en/msg_docs/ObstacleDistance.md b/docs/en/msg_docs/ObstacleDistance.md index 622ba0a2ba..59b6eef1e6 100644 --- a/docs/en/msg_docs/ObstacleDistance.md +++ b/docs/en/msg_docs/ObstacleDistance.md @@ -1,8 +1,43 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | ------------ | ------------ | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------- | ------- | ----- | ----------- | +| 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 +64,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/en/msg_docs/OffboardControlMode.md b/docs/en/msg_docs/OffboardControlMode.md index 4499912d95..16bcb63ebf 100644 --- a/docs/en/msg_docs/OffboardControlMode.md +++ b/docs/en/msg_docs/OffboardControlMode.md @@ -1,8 +1,31 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------- | -------- | ------------ | ---------- | -------------------------------------- | +| 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 +39,6 @@ bool attitude bool body_rate bool thrust_and_torque bool direct_actuator - ``` + +::: diff --git a/docs/en/msg_docs/OnboardComputerStatus.md b/docs/en/msg_docs/OnboardComputerStatus.md index fc60e6f789..73aa9f30cf 100644 --- a/docs/en/msg_docs/OnboardComputerStatus.md +++ b/docs/en/msg_docs/OnboardComputerStatus.md @@ -1,8 +1,43 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------- | ----------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 +63,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/en/msg_docs/OpenDroneIdArmStatus.md b/docs/en/msg_docs/OpenDroneIdArmStatus.md index 78c7992a11..ba5fceb5b6 100644 --- a/docs/en/msg_docs/OpenDroneIdArmStatus.md +++ b/docs/en/msg_docs/OpenDroneIdArmStatus.md @@ -1,12 +1,29 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdArmStatus (UORB message) +**TOPICS:** open_droneid_armstatus +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdArmStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ---------- | ------------ | ---------- | ----------- | +| 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/en/msg_docs/OpenDroneIdOperatorId.md b/docs/en/msg_docs/OpenDroneIdOperatorId.md index e30192ea97..2e3b5fb3e1 100644 --- a/docs/en/msg_docs/OpenDroneIdOperatorId.md +++ b/docs/en/msg_docs/OpenDroneIdOperatorId.md @@ -1,13 +1,31 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdOperatorId (UORB message) +**TOPICS:** open_droneid_operatorid +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdOperatorId.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ----------- | ------------ | ---------- | ----------- | +| 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/en/msg_docs/OpenDroneIdSelfId.md b/docs/en/msg_docs/OpenDroneIdSelfId.md index e14e7746f4..d6fa45edce 100644 --- a/docs/en/msg_docs/OpenDroneIdSelfId.md +++ b/docs/en/msg_docs/OpenDroneIdSelfId.md @@ -1,13 +1,31 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdSelfId (UORB message) +**TOPICS:** open_droneid_selfid +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdSelfId.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ----------- | ------------ | ---------- | ----------- | +| 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/en/msg_docs/OpenDroneIdSystem.md b/docs/en/msg_docs/OpenDroneIdSystem.md index 2fb1943c79..702221d403 100644 --- a/docs/en/msg_docs/OpenDroneIdSystem.md +++ b/docs/en/msg_docs/OpenDroneIdSystem.md @@ -1,8 +1,34 @@ +--- +pageClass: is-wide-page +--- + # OpenDroneIdSystem (UORB message) +**TOPICS:** open_droneid_system +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OpenDroneIdSystem.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------- | ----------- | ------------ | ---------- | ----------- | +| 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 @@ -18,5 +44,6 @@ float32 area_floor uint8 category_eu uint8 class_eu float32 operator_altitude_geo - ``` + +::: diff --git a/docs/en/msg_docs/OrbTest.md b/docs/en/msg_docs/OrbTest.md index d833eb9ba3..5e6ea41cc9 100644 --- a/docs/en/msg_docs/OrbTest.md +++ b/docs/en/msg_docs/OrbTest.md @@ -1,8 +1,23 @@ +--- +pageClass: is-wide-page +--- + # OrbTest (UORB message) +**TOPICS:** orb_test orb_multitest +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTest.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | -------- | ------------ | ---------- | -------------------------------------- | +| 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) @@ -10,5 +25,6 @@ uint64 timestamp # time since system start (microseconds) int32 val # TOPICS orb_test orb_multitest - ``` + +::: diff --git a/docs/en/msg_docs/OrbTestLarge.md b/docs/en/msg_docs/OrbTestLarge.md index 8fb96f757f..b78f964662 100644 --- a/docs/en/msg_docs/OrbTestLarge.md +++ b/docs/en/msg_docs/OrbTestLarge.md @@ -1,8 +1,24 @@ +--- +pageClass: is-wide-page +--- + # OrbTestLarge (UORB message) +**TOPICS:** orb_testlarge +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTestLarge.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ------------ | ------------ | ---------- | -------------------------------------- | +| 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) @@ -10,5 +26,6 @@ uint64 timestamp # time since system start (microseconds) int32 val uint8[512] junk - ``` + +::: diff --git a/docs/en/msg_docs/OrbTestMedium.md b/docs/en/msg_docs/OrbTestMedium.md index a5484401c7..52d8736a09 100644 --- a/docs/en/msg_docs/OrbTestMedium.md +++ b/docs/en/msg_docs/OrbTestMedium.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # OrbTestMedium (UORB message) +**TOPICS:** orb_test_medium orb_test_medium_multi orb_test_medium_wrap_around orb_test_medium_queue orb_test_medium_queue_poll +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/OrbTestMedium.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ----------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| val | `int32` | | | +| junk | `uint8[64]` | | | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -14,5 +36,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/en/msg_docs/OrbitStatus.md b/docs/en/msg_docs/OrbitStatus.md index 2cbeeec36b..79f8cdd6f4 100644 --- a/docs/en/msg_docs/OrbitStatus.md +++ b/docs/en/msg_docs/OrbitStatus.md @@ -1,8 +1,41 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------- | --------- | ------------ | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------------------------------------------- | ------- | ----- | ----------- | +| 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 +53,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/en/msg_docs/ParameterResetRequest.md b/docs/en/msg_docs/ParameterResetRequest.md index 3c776a0faf..b0c92c37db 100644 --- a/docs/en/msg_docs/ParameterResetRequest.md +++ b/docs/en/msg_docs/ParameterResetRequest.md @@ -1,8 +1,32 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------- | -------- | ------------ | ---------- | ------------------------------------------- | +| timestamp | `uint64` | | | +| parameter_index | `uint16` | | | +| reset_all | `bool` | | | If this is true then ignore parameter_index | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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 +37,6 @@ uint16 parameter_index bool reset_all # If this is true then ignore parameter_index uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/en/msg_docs/ParameterSetUsedRequest.md b/docs/en/msg_docs/ParameterSetUsedRequest.md index 14684c0eed..c2afd68aa0 100644 --- a/docs/en/msg_docs/ParameterSetUsedRequest.md +++ b/docs/en/msg_docs/ParameterSetUsedRequest.md @@ -1,8 +1,31 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------- | -------- | ------------ | ---------- | ----------- | +| timestamp | `uint64` | | | +| parameter_index | `uint16` | | | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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 +34,6 @@ uint64 timestamp uint16 parameter_index uint8 ORB_QUEUE_LENGTH = 64 - ``` + +::: diff --git a/docs/en/msg_docs/ParameterSetValueRequest.md b/docs/en/msg_docs/ParameterSetValueRequest.md index b8322a952e..f229c6076e 100644 --- a/docs/en/msg_docs/ParameterSetValueRequest.md +++ b/docs/en/msg_docs/ParameterSetValueRequest.md @@ -1,8 +1,33 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------- | --------- | ------------ | ---------- | --------------------------------------- | +| timestamp | `uint64` | | | +| parameter_index | `uint16` | | | +| int_value | `int32` | | | Optional value for an integer parameter | +| float_value | `float32` | | | Optional value for a float parameter | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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 +41,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/en/msg_docs/ParameterSetValueResponse.md b/docs/en/msg_docs/ParameterSetValueResponse.md index dbb44d46ea..f0a0bf4051 100644 --- a/docs/en/msg_docs/ParameterSetValueResponse.md +++ b/docs/en/msg_docs/ParameterSetValueResponse.md @@ -1,8 +1,32 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------- | -------- | ------------ | ---------- | ----------- | +| timestamp | `uint64` | | | +| request_timestamp | `uint64` | | | +| parameter_index | `uint16` | | | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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 +38,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/en/msg_docs/ParameterUpdate.md b/docs/en/msg_docs/ParameterUpdate.md index 29148e2b5b..47df977aa4 100644 --- a/docs/en/msg_docs/ParameterUpdate.md +++ b/docs/en/msg_docs/ParameterUpdate.md @@ -1,8 +1,32 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------- | -------- | ------------ | ---------- | ---------------------------------------- | +| 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 +43,6 @@ uint32 export_count uint16 active uint16 changed uint16 custom_default - ``` + +::: diff --git a/docs/en/msg_docs/Ping.md b/docs/en/msg_docs/Ping.md index 1d68cebad1..c27bfbac41 100644 --- a/docs/en/msg_docs/Ping.md +++ b/docs/en/msg_docs/Ping.md @@ -1,8 +1,28 @@ +--- +pageClass: is-wide-page +--- + # Ping (UORB message) +**TOPICS:** ping +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Ping.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------- | --------- | ------------ | ---------- | -------------------------------------- | +| 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) @@ -12,5 +32,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/en/msg_docs/PositionControllerLandingStatus.md b/docs/en/msg_docs/PositionControllerLandingStatus.md index 0e7ce90a2e..a2265e80ae 100644 --- a/docs/en/msg_docs/PositionControllerLandingStatus.md +++ b/docs/en/msg_docs/PositionControllerLandingStatus.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # PositionControllerLandingStatus (UORB message) +**TOPICS:** position_controllerlanding_status +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionControllerLandingStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------ | --------- | ------------ | ---------- | ------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------- | ------- | ----- | --------------------- | +| 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 @@ -21,5 +48,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/en/msg_docs/PositionControllerStatus.md b/docs/en/msg_docs/PositionControllerStatus.md index 95f0ec0926..40b2d40a82 100644 --- a/docs/en/msg_docs/PositionControllerStatus.md +++ b/docs/en/msg_docs/PositionControllerStatus.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # PositionControllerStatus (UORB message) +**TOPICS:** position_controllerstatus +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PositionControllerStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------- | +| 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) @@ -15,5 +37,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/en/msg_docs/PositionSetpoint.md b/docs/en/msg_docs/PositionSetpoint.md index b4e16681b7..2ed4747470 100644 --- a/docs/en/msg_docs/PositionSetpoint.md +++ b/docs/en/msg_docs/PositionSetpoint.md @@ -1,8 +1,56 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------- | ------- | ----- | -------------------------------------------------------------- | +| 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 +91,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/en/msg_docs/PositionSetpointTriplet.md b/docs/en/msg_docs/PositionSetpointTriplet.md index d4de724bdd..4aea2917fe 100644 --- a/docs/en/msg_docs/PositionSetpointTriplet.md +++ b/docs/en/msg_docs/PositionSetpointTriplet.md @@ -1,9 +1,27 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ------------------ | ------------ | ---------- | -------------------------------------- | +| 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 +32,6 @@ uint64 timestamp # time since system start (microseconds) PositionSetpoint previous PositionSetpoint current PositionSetpoint next - ``` + +::: diff --git a/docs/en/msg_docs/PowerButtonState.md b/docs/en/msg_docs/PowerButtonState.md index 8d6f38461e..f43ec7dce6 100644 --- a/docs/en/msg_docs/PowerButtonState.md +++ b/docs/en/msg_docs/PowerButtonState.md @@ -1,8 +1,34 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | -------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| event | `uint8` | | | one of PWR*BUTTON_STATE*\* | + +## Constants + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------------- | ------- | ----- | ----------------------------------------------------------------------- | +| 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 +41,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/en/msg_docs/PowerMonitor.md b/docs/en/msg_docs/PowerMonitor.md index 5f38bb3d56..082a23b3d8 100644 --- a/docs/en/msg_docs/PowerMonitor.md +++ b/docs/en/msg_docs/PowerMonitor.md @@ -1,8 +1,35 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | --------- | ------------ | ---------- | -------------------------------------- | +| 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 +47,6 @@ int16 rc int16 rcal int16 me int16 al - ``` + +::: diff --git a/docs/en/msg_docs/PpsCapture.md b/docs/en/msg_docs/PpsCapture.md index ffe87fd2dc..5d1a14348d 100644 --- a/docs/en/msg_docs/PpsCapture.md +++ b/docs/en/msg_docs/PpsCapture.md @@ -1,12 +1,29 @@ +--- +pageClass: is-wide-page +--- + # PpsCapture (UORB message) +**TOPICS:** pps_capture +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PpsCapture.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------- | -------- | ------------ | ----------------------------- | ----------------------------------------------------------- | +| 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/en/msg_docs/PurePursuitStatus.md b/docs/en/msg_docs/PurePursuitStatus.md index 8d54ba473e..fa442729b1 100644 --- a/docs/en/msg_docs/PurePursuitStatus.md +++ b/docs/en/msg_docs/PurePursuitStatus.md @@ -1,8 +1,29 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------- | --------- | ------------ | --------------------------------------------------- | -------------------------------------------------------- | +| 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 +34,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/en/msg_docs/PwmInput.md b/docs/en/msg_docs/PwmInput.md index dbf078955b..ca4d9ed41f 100644 --- a/docs/en/msg_docs/PwmInput.md +++ b/docs/en/msg_docs/PwmInput.md @@ -1,13 +1,31 @@ +--- +pageClass: is-wide-page +--- + # PwmInput (UORB message) +**TOPICS:** pwm_input +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/PwmInput.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------- | -------- | ------------ | ---------- | -------------------------------------------- | +| 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/en/msg_docs/Px4ioStatus.md b/docs/en/msg_docs/Px4ioStatus.md index 4b1fbb1314..cbc5e0f339 100644 --- a/docs/en/msg_docs/Px4ioStatus.md +++ b/docs/en/msg_docs/Px4ioStatus.md @@ -1,6 +1,53 @@ +--- +pageClass: is-wide-page +--- + # Px4ioStatus (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Px4ioStatus.msg) +**TOPICS:** px4io_status + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------------- | ------------ | ------------ | ---------- | -------------------------------------------------------- | +| 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 +93,6 @@ uint16[8] pwm_failsafe uint16[8] pwm_rate_hz uint16[18] raw_inputs - ``` + +::: diff --git a/docs/en/msg_docs/QshellReq.md b/docs/en/msg_docs/QshellReq.md index 99cb82472b..346717a999 100644 --- a/docs/en/msg_docs/QshellReq.md +++ b/docs/en/msg_docs/QshellReq.md @@ -1,8 +1,31 @@ +--- +pageClass: is-wide-page +--- + # QshellReq (UORB message) +**TOPICS:** qshell_req +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/QshellReq.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ----------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| cmd | `char[100]` | | | +| strlen | `uint32` | | | +| request_sequence | `uint32` | | | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------- | -------- | ----- | ----------- | +| 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) @@ -10,5 +33,6 @@ char[100] cmd uint32 MAX_STRLEN = 100 uint32 strlen uint32 request_sequence - ``` + +::: diff --git a/docs/en/msg_docs/QshellRetval.md b/docs/en/msg_docs/QshellRetval.md index 53cf5063f9..c37afd652e 100644 --- a/docs/en/msg_docs/QshellRetval.md +++ b/docs/en/msg_docs/QshellRetval.md @@ -1,12 +1,29 @@ +--- +pageClass: is-wide-page +--- + # QshellRetval (UORB message) +**TOPICS:** qshell_retval +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/QshellRetval.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------- | -------- | ------------ | ---------- | -------------------------------------- | +| 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/en/msg_docs/RadioStatus.md b/docs/en/msg_docs/RadioStatus.md index 64e69beba4..2712fdea13 100644 --- a/docs/en/msg_docs/RadioStatus.md +++ b/docs/en/msg_docs/RadioStatus.md @@ -1,11 +1,31 @@ +--- +pageClass: is-wide-page +--- + # RadioStatus (UORB message) +**TOPICS:** radio_status +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RadioStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | -------- | ------------ | ---------- | ----------------------------------------- | +| 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 @@ -18,5 +38,6 @@ uint8 remote_noise # remote background noise level uint16 rxerrors # receive errors uint16 fix # count of error corrected packets - ``` + +::: diff --git a/docs/en/msg_docs/RaptorInput.md b/docs/en/msg_docs/RaptorInput.md new file mode 100644 index 0000000000..e18b7531ef --- /dev/null +++ b/docs/en/msg_docs/RaptorInput.md @@ -0,0 +1,58 @@ +--- +pageClass: is-wide-page +--- + +# RaptorInput (UORB message) + +Raptor Input. + +**TOPICS:** raptor_input + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------ | ------------ | ---------- | -------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | --------------------------------------------- | +| 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/en/msg_docs/RaptorStatus.md b/docs/en/msg_docs/RaptorStatus.md new file mode 100644 index 0000000000..945dbd521b --- /dev/null +++ b/docs/en/msg_docs/RaptorStatus.md @@ -0,0 +1,108 @@ +--- +pageClass: is-wide-page +--- + +# RaptorStatus (UORB message) + +Raptor Status. + +**TOPICS:** raptor_status + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------------------------- | ------------ | ------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------------------------------------------------------------- | -------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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/en/msg_docs/RateCtrlStatus.md b/docs/en/msg_docs/RateCtrlStatus.md index 28adaafbbd..e6caf8764a 100644 --- a/docs/en/msg_docs/RateCtrlStatus.md +++ b/docs/en/msg_docs/RateCtrlStatus.md @@ -1,8 +1,25 @@ +--- +pageClass: is-wide-page +--- + # RateCtrlStatus (UORB message) +**TOPICS:** rate_ctrlstatus +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RateCtrlStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | --------- | ------------ | ---------- | -------------------------------------- | +| 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) @@ -11,5 +28,6 @@ uint64 timestamp # time since system start (microseconds) float32 rollspeed_integ float32 pitchspeed_integ float32 yawspeed_integ - ``` + +::: diff --git a/docs/en/msg_docs/RcChannels.md b/docs/en/msg_docs/RcChannels.md index 7abb87c0bc..04894fd4c3 100644 --- a/docs/en/msg_docs/RcChannels.md +++ b/docs/en/msg_docs/RcChannels.md @@ -1,6 +1,65 @@ +--- +pageClass: is-wide-page +--- + # RcChannels (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RcChannels.msg) +**TOPICS:** rc_channels + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------- | ------------- | ------------ | ---------- | ------------------------------------------------------------------ | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------------- | ------- | ----- | ----------- | +| 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 +104,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/en/msg_docs/RcParameterMap.md b/docs/en/msg_docs/RcParameterMap.md index a371149b15..6aff36b48e 100644 --- a/docs/en/msg_docs/RcParameterMap.md +++ b/docs/en/msg_docs/RcParameterMap.md @@ -1,8 +1,36 @@ +--- +pageClass: is-wide-page +--- + # RcParameterMap (UORB message) +**TOPICS:** rc_parametermap +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RcParameterMap.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------- | ------------ | ------------ | ---------- | ------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------ | +| 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) @@ -16,5 +44,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/en/msg_docs/RegisterExtComponentReply.md b/docs/en/msg_docs/RegisterExtComponentReply.md index 119703472a..09fc14ab9e 100644 --- a/docs/en/msg_docs/RegisterExtComponentReply.md +++ b/docs/en/msg_docs/RegisterExtComponentReply.md @@ -1,6 +1,37 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------- | ---------- | ------------ | ---------- | -------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------- | -------- | ----- | ----------- | +| 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 +51,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/en/msg_docs/RegisterExtComponentReplyV0.md b/docs/en/msg_docs/RegisterExtComponentReplyV0.md index cceec88d5c..c1b28811df 100644 --- a/docs/en/msg_docs/RegisterExtComponentReplyV0.md +++ b/docs/en/msg_docs/RegisterExtComponentReplyV0.md @@ -1,6 +1,36 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------- | ---------- | ------------ | ---------- | -------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------- | -------- | ----- | ----------- | +| 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 +48,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/en/msg_docs/RegisterExtComponentRequest.md b/docs/en/msg_docs/RegisterExtComponentRequest.md index 814ea6e51b..4ac2f32e57 100644 --- a/docs/en/msg_docs/RegisterExtComponentRequest.md +++ b/docs/en/msg_docs/RegisterExtComponentRequest.md @@ -1,8 +1,42 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------------- | ---------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------- | -------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 +63,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/en/msg_docs/RegisterExtComponentRequestV0.md b/docs/en/msg_docs/RegisterExtComponentRequestV0.md index 58e99a484e..469bfdd70b 100644 --- a/docs/en/msg_docs/RegisterExtComponentRequestV0.md +++ b/docs/en/msg_docs/RegisterExtComponentRequestV0.md @@ -1,8 +1,41 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------------- | ---------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------- | -------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 +62,6 @@ bool activate_mode_immediately # switch to the registered mode (can only be uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/en/msg_docs/RoverAttitudeSetpoint.md b/docs/en/msg_docs/RoverAttitudeSetpoint.md index ca75a6e3e2..8049e8bfe3 100644 --- a/docs/en/msg_docs/RoverAttitudeSetpoint.md +++ b/docs/en/msg_docs/RoverAttitudeSetpoint.md @@ -1,13 +1,31 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | --------- | ------------ | ------------ | ----------------------- | +| 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/en/msg_docs/RoverAttitudeStatus.md b/docs/en/msg_docs/RoverAttitudeStatus.md index f5a9ce1f02..a012cd2e17 100644 --- a/docs/en/msg_docs/RoverAttitudeStatus.md +++ b/docs/en/msg_docs/RoverAttitudeStatus.md @@ -1,8 +1,26 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------- | --------- | ------------ | ---------- | ------------------------------------------------------- | +| 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 +28,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/en/msg_docs/RoverPositionSetpoint.md b/docs/en/msg_docs/RoverPositionSetpoint.md index 751536e7f9..2a3835c984 100644 --- a/docs/en/msg_docs/RoverPositionSetpoint.md +++ b/docs/en/msg_docs/RoverPositionSetpoint.md @@ -1,8 +1,29 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------- | ------------ | ------------ | ------------ | -------------------------------------------------------------------------------------------------------- | +| 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 +34,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/en/msg_docs/RoverRateSetpoint.md b/docs/en/msg_docs/RoverRateSetpoint.md index 9bb844e802..79a2746bcc 100644 --- a/docs/en/msg_docs/RoverRateSetpoint.md +++ b/docs/en/msg_docs/RoverRateSetpoint.md @@ -1,13 +1,31 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------- | --------- | ------------ | ------------ | ----------------------- | +| 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/en/msg_docs/RoverRateStatus.md b/docs/en/msg_docs/RoverRateStatus.md index 70345fe315..27cb672a32 100644 --- a/docs/en/msg_docs/RoverRateStatus.md +++ b/docs/en/msg_docs/RoverRateStatus.md @@ -1,8 +1,27 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------------- | --------- | ------------ | ------------ | ------------------------------------------------------------ | +| 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 +30,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/en/msg_docs/RoverSpeedSetpoint.md b/docs/en/msg_docs/RoverSpeedSetpoint.md index 84176cd1c3..63c9e6aeba 100644 --- a/docs/en/msg_docs/RoverSpeedSetpoint.md +++ b/docs/en/msg_docs/RoverSpeedSetpoint.md @@ -1,8 +1,26 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | --------- | ------------ | ----------------------------------- | ------------------------------------------------------------------------------ | +| 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 +28,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/en/msg_docs/RoverSpeedStatus.md b/docs/en/msg_docs/RoverSpeedStatus.md index 4213e1e5df..c0790eb03d 100644 --- a/docs/en/msg_docs/RoverSpeedStatus.md +++ b/docs/en/msg_docs/RoverSpeedStatus.md @@ -1,8 +1,30 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------------ | --------- | ------------ | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| 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 +36,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/en/msg_docs/RoverSteeringSetpoint.md b/docs/en/msg_docs/RoverSteeringSetpoint.md index 974f3fc4c9..b87ea4c311 100644 --- a/docs/en/msg_docs/RoverSteeringSetpoint.md +++ b/docs/en/msg_docs/RoverSteeringSetpoint.md @@ -1,13 +1,31 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------------- | --------- | ------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| 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/en/msg_docs/RoverThrottleSetpoint.md b/docs/en/msg_docs/RoverThrottleSetpoint.md index bd5ee93d55..22a459eb82 100644 --- a/docs/en/msg_docs/RoverThrottleSetpoint.md +++ b/docs/en/msg_docs/RoverThrottleSetpoint.md @@ -1,8 +1,26 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------- | --------- | ------------ | ------------------------------- | ------------------------------------------------------------------------------- | +| 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 +28,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/en/msg_docs/Rpm.md b/docs/en/msg_docs/Rpm.md index edf6c37e19..a2ad43c153 100644 --- a/docs/en/msg_docs/Rpm.md +++ b/docs/en/msg_docs/Rpm.md @@ -1,8 +1,24 @@ +--- +pageClass: is-wide-page +--- + # Rpm (UORB message) +**TOPICS:** rpm +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/Rpm.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | --------- | ------------ | ---------- | -------------------------------------- | +| 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) @@ -10,5 +26,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/en/msg_docs/RtlStatus.md b/docs/en/msg_docs/RtlStatus.md index 299b6f4b16..ea1da9648c 100644 --- a/docs/en/msg_docs/RtlStatus.md +++ b/docs/en/msg_docs/RtlStatus.md @@ -1,8 +1,37 @@ +--- +pageClass: is-wide-page +--- + # RtlStatus (UORB message) +**TOPICS:** rtl_status +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RtlStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------- | -------- | ------------ | ---------- | -------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------------------------------------- | ------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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) @@ -20,5 +49,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/en/msg_docs/RtlTimeEstimate.md b/docs/en/msg_docs/RtlTimeEstimate.md index 14dbe31594..894fe4589c 100644 --- a/docs/en/msg_docs/RtlTimeEstimate.md +++ b/docs/en/msg_docs/RtlTimeEstimate.md @@ -1,8 +1,25 @@ +--- +pageClass: is-wide-page +--- + # RtlTimeEstimate (UORB message) +**TOPICS:** rtl_timeestimate +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RtlTimeEstimate.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------ | --------- | ------------ | ---------- | --------------------------------------------------------------------------------------------- | +| 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) @@ -10,5 +27,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/en/msg_docs/SatelliteInfo.md b/docs/en/msg_docs/SatelliteInfo.md index c040856148..af1587d7a6 100644 --- a/docs/en/msg_docs/SatelliteInfo.md +++ b/docs/en/msg_docs/SatelliteInfo.md @@ -1,6 +1,35 @@ +--- +pageClass: is-wide-page +--- + # SatelliteInfo (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SatelliteInfo.msg) +**TOPICS:** satellite_info + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | ----------- | ------------ | ---------- | -------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------- | ------- | ----- | ----------- | +| 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 +42,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/en/msg_docs/SensorAccel.md b/docs/en/msg_docs/SensorAccel.md index 50e0c9f240..5c34986404 100644 --- a/docs/en/msg_docs/SensorAccel.md +++ b/docs/en/msg_docs/SensorAccel.md @@ -1,8 +1,37 @@ +--- +pageClass: is-wide-page +--- + # SensorAccel (UORB message) +**TOPICS:** sensor_accel +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAccel.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ---------- | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -23,5 +52,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/en/msg_docs/SensorAccelFifo.md b/docs/en/msg_docs/SensorAccelFifo.md index b624951f07..beebee2315 100644 --- a/docs/en/msg_docs/SensorAccelFifo.md +++ b/docs/en/msg_docs/SensorAccelFifo.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # SensorAccelFifo (UORB message) +**TOPICS:** sensor_accelfifo +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAccelFifo.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ----------- | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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) @@ -18,5 +40,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/en/msg_docs/SensorAirflow.md b/docs/en/msg_docs/SensorAirflow.md index 72bdd43e2c..05b066c70e 100644 --- a/docs/en/msg_docs/SensorAirflow.md +++ b/docs/en/msg_docs/SensorAirflow.md @@ -1,8 +1,26 @@ +--- +pageClass: is-wide-page +--- + # SensorAirflow (UORB message) +**TOPICS:** sensor_airflow +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorAirflow.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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) @@ -10,5 +28,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/en/msg_docs/SensorBaro.md b/docs/en/msg_docs/SensorBaro.md index ef4d7a8f28..22038554af 100644 --- a/docs/en/msg_docs/SensorBaro.md +++ b/docs/en/msg_docs/SensorBaro.md @@ -1,11 +1,38 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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 +49,6 @@ float32 temperature # [degC] Temperature. uint32 error_count # [-] Number of errors detected by driver. uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/en/msg_docs/SensorCombined.md b/docs/en/msg_docs/SensorCombined.md index 29a22b6326..e04c3fcab4 100644 --- a/docs/en/msg_docs/SensorCombined.md +++ b/docs/en/msg_docs/SensorCombined.md @@ -1,10 +1,42 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------------------- | ------------ | ------------ | ---------- | ----------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------------- | ------- | ---------- | ---------------------------------------------------------------------------------------------------------------------- | +| 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 +64,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/en/msg_docs/SensorCorrection.md b/docs/en/msg_docs/SensorCorrection.md index 8c9cfbb9d2..649fbf5714 100644 --- a/docs/en/msg_docs/SensorCorrection.md +++ b/docs/en/msg_docs/SensorCorrection.md @@ -1,8 +1,48 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------- | ------------ | ------------ | ---------- | ---------------------------------------------------------------- | +| 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 +86,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/en/msg_docs/SensorGnssRelative.md b/docs/en/msg_docs/SensorGnssRelative.md index 639e7897f5..e00e872113 100644 --- a/docs/en/msg_docs/SensorGnssRelative.md +++ b/docs/en/msg_docs/SensorGnssRelative.md @@ -1,8 +1,44 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------------- | ------------ | ------------ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 +71,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/en/msg_docs/SensorGnssStatus.md b/docs/en/msg_docs/SensorGnssStatus.md index 70602b85fc..e4e40b948d 100644 --- a/docs/en/msg_docs/SensorGnssStatus.md +++ b/docs/en/msg_docs/SensorGnssStatus.md @@ -1,8 +1,30 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------- | -------- | ------------ | ----------------------------------------------- | ------------------------------------------------------------------------- | +| 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 +37,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/en/msg_docs/SensorGps.md b/docs/en/msg_docs/SensorGps.md index 1b5fb3cf41..4c8b3c58ab 100644 --- a/docs/en/msg_docs/SensorGps.md +++ b/docs/en/msg_docs/SensorGps.md @@ -1,9 +1,96 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------- | --------- | ------------ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------------- | -------- | ----- | ------------------------------------------ | +| 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 +183,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/en/msg_docs/SensorGyro.md b/docs/en/msg_docs/SensorGyro.md index d55d2f44c2..aea82546dd 100644 --- a/docs/en/msg_docs/SensorGyro.md +++ b/docs/en/msg_docs/SensorGyro.md @@ -1,8 +1,37 @@ +--- +pageClass: is-wide-page +--- + # SensorGyro (UORB message) +**TOPICS:** sensor_gyro +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyro.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ---------- | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -23,5 +52,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/en/msg_docs/SensorGyroFft.md b/docs/en/msg_docs/SensorGyroFft.md index 279c2428ae..b3edd2e04c 100644 --- a/docs/en/msg_docs/SensorGyroFft.md +++ b/docs/en/msg_docs/SensorGyroFft.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # SensorGyroFft (UORB message) +**TOPICS:** sensor_gyrofft +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyroFft.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------- | ------------ | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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) @@ -20,5 +44,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/en/msg_docs/SensorGyroFifo.md b/docs/en/msg_docs/SensorGyroFifo.md index 3de5eff4d8..34bf270e90 100644 --- a/docs/en/msg_docs/SensorGyroFifo.md +++ b/docs/en/msg_docs/SensorGyroFifo.md @@ -1,8 +1,36 @@ +--- +pageClass: is-wide-page +--- + # SensorGyroFifo (UORB message) +**TOPICS:** sensor_gyrofifo +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorGyroFifo.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ----------- | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -20,5 +48,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/en/msg_docs/SensorHygrometer.md b/docs/en/msg_docs/SensorHygrometer.md index 34bedf9ae9..0d86c2d9ba 100644 --- a/docs/en/msg_docs/SensorHygrometer.md +++ b/docs/en/msg_docs/SensorHygrometer.md @@ -1,8 +1,26 @@ +--- +pageClass: is-wide-page +--- + # SensorHygrometer (UORB message) +**TOPICS:** sensor_hygrometer +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorHygrometer.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | --------- | ------------ | ---------------------------------------- | ------------------------------------------------------------------------- | +| 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) @@ -13,5 +31,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/en/msg_docs/SensorMag.md b/docs/en/msg_docs/SensorMag.md index d574b95e1f..06f95d0fab 100644 --- a/docs/en/msg_docs/SensorMag.md +++ b/docs/en/msg_docs/SensorMag.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # SensorMag (UORB message) +**TOPICS:** sensor_mag +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorMag.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -19,5 +46,6 @@ float32 temperature # temperature in degrees Celsius uint32 error_count uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/en/msg_docs/SensorOpticalFlow.md b/docs/en/msg_docs/SensorOpticalFlow.md index d4ea32da34..bc0b36ddc4 100644 --- a/docs/en/msg_docs/SensorOpticalFlow.md +++ b/docs/en/msg_docs/SensorOpticalFlow.md @@ -1,8 +1,45 @@ +--- +pageClass: is-wide-page +--- + # SensorOpticalFlow (UORB message) +**TOPICS:** sensor_opticalflow +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorOpticalFlow.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------- | ------------ | ------------ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -35,5 +72,6 @@ uint8 MODE_LOWLIGHT = 2 uint8 MODE_SUPER_LOWLIGHT = 3 uint8 mode - ``` + +::: diff --git a/docs/en/msg_docs/SensorPreflightMag.md b/docs/en/msg_docs/SensorPreflightMag.md index 7d5a933bc7..a5eba92824 100644 --- a/docs/en/msg_docs/SensorPreflightMag.md +++ b/docs/en/msg_docs/SensorPreflightMag.md @@ -1,9 +1,25 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------- | --------- | ------------ | ---------- | --------------------------------------------------------------------- | +| 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 +29,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/en/msg_docs/SensorSelection.md b/docs/en/msg_docs/SensorSelection.md index 58fb6be289..d2f0ee5546 100644 --- a/docs/en/msg_docs/SensorSelection.md +++ b/docs/en/msg_docs/SensorSelection.md @@ -1,9 +1,26 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------- | -------- | ------------ | ---------- | ------------------------------------------------ | +| 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 +30,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/en/msg_docs/SensorTemp.md b/docs/en/msg_docs/SensorTemp.md index 5ed50541fe..8c68e73dd9 100644 --- a/docs/en/msg_docs/SensorTemp.md +++ b/docs/en/msg_docs/SensorTemp.md @@ -1,11 +1,30 @@ +--- +pageClass: is-wide-page +--- + # SensorTemp (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorTemp.msg) +**TOPICS:** sensor_temp + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------- | -------- | ------------ | ---------------------------------------- | ------------------------------------------------------------------------- | +| 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/en/msg_docs/SensorUwb.md b/docs/en/msg_docs/SensorUwb.md index 544bc60e7a..afd888517a 100644 --- a/docs/en/msg_docs/SensorUwb.md +++ b/docs/en/msg_docs/SensorUwb.md @@ -1,9 +1,44 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------- | --------- | ------------ | ---------- | ----------------------------------------------------------- | +| 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 +75,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/en/msg_docs/SensorsStatus.md b/docs/en/msg_docs/SensorsStatus.md index 996d7107fb..cdac839723 100644 --- a/docs/en/msg_docs/SensorsStatus.md +++ b/docs/en/msg_docs/SensorsStatus.md @@ -1,8 +1,31 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------- | ------------ | ------------ | ---------- | -------------------------------------------------------- | +| 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 +43,6 @@ bool[4] enabled bool[4] external # TOPICS sensors_status_baro sensors_status_mag - ``` + +::: diff --git a/docs/en/msg_docs/SensorsStatusImu.md b/docs/en/msg_docs/SensorsStatusImu.md index a25b5d1c01..13b2b2420b 100644 --- a/docs/en/msg_docs/SensorsStatusImu.md +++ b/docs/en/msg_docs/SensorsStatusImu.md @@ -1,8 +1,34 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------- | ------------ | ------------ | ---------- | ------------------------------------------------------------------------------ | +| 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 +49,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/en/msg_docs/SystemPower.md b/docs/en/msg_docs/SystemPower.md index c33cffca77..2fe83124d2 100644 --- a/docs/en/msg_docs/SystemPower.md +++ b/docs/en/msg_docs/SystemPower.md @@ -1,8 +1,48 @@ +--- +pageClass: is-wide-page +--- + # SystemPower (UORB message) +**TOPICS:** system_power +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SystemPower.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------ | ------------ | ------------ | ---------- | --------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -28,5 +68,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/en/msg_docs/TakeoffStatus.md b/docs/en/msg_docs/TakeoffStatus.md index 45540a74b4..8567effe40 100644 --- a/docs/en/msg_docs/TakeoffStatus.md +++ b/docs/en/msg_docs/TakeoffStatus.md @@ -1,8 +1,37 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------ | +| timestamp | `uint64` | | | time since system start (microseconds) | +| takeoff_state | `uint8` | | | +| tilt_limit | `float32` | | | limited tilt feasibility during takeoff, contains maximum tilt otherwise | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------------------------------------------------- | ------- | ----- | ----------- | +| 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 +48,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/en/msg_docs/TaskStackInfo.md b/docs/en/msg_docs/TaskStackInfo.md index fde6ed7585..3ffa39b3bb 100644 --- a/docs/en/msg_docs/TaskStackInfo.md +++ b/docs/en/msg_docs/TaskStackInfo.md @@ -1,8 +1,32 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------- | ---------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| stack_free | `uint16` | | | +| task_name | `char[24]` | | | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | ----------- | +| 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 +37,6 @@ uint16 stack_free char[24] task_name uint8 ORB_QUEUE_LENGTH = 2 - ``` + +::: diff --git a/docs/en/msg_docs/TecsStatus.md b/docs/en/msg_docs/TecsStatus.md index 96643b3d44..a225729f52 100644 --- a/docs/en/msg_docs/TecsStatus.md +++ b/docs/en/msg_docs/TecsStatus.md @@ -1,8 +1,46 @@ +--- +pageClass: is-wide-page +--- + # TecsStatus (UORB message) +**TOPICS:** tecs_status +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TecsStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------------- | --------- | ------------ | ---------- | -------------------------------------------------------------------------------------------------------------------- | +| 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) @@ -36,5 +74,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/en/msg_docs/TelemetryStatus.md b/docs/en/msg_docs/TelemetryStatus.md index 87ca267be6..011293bf23 100644 --- a/docs/en/msg_docs/TelemetryStatus.md +++ b/docs/en/msg_docs/TelemetryStatus.md @@ -1,8 +1,70 @@ +--- +pageClass: is-wide-page +--- + # TelemetryStatus (UORB message) +**TOPICS:** telemetry_status +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TelemetryStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------------------- | --------- | ------------ | ---------- | ----------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------------------- | -------- | ------- | ----------------------------------------------- | +| 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 @@ -66,5 +128,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/en/msg_docs/TiltrotorExtraControls.md b/docs/en/msg_docs/TiltrotorExtraControls.md index 80a1bd7ac1..d5be191d3c 100644 --- a/docs/en/msg_docs/TiltrotorExtraControls.md +++ b/docs/en/msg_docs/TiltrotorExtraControls.md @@ -1,13 +1,30 @@ +--- +pageClass: is-wide-page +--- + # TiltrotorExtraControls (UORB message) +**TOPICS:** tiltrotor_extracontrols +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TiltrotorExtraControls.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------------- | +| 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/en/msg_docs/TimesyncStatus.md b/docs/en/msg_docs/TimesyncStatus.md index 2488b8c577..7344f7c5b8 100644 --- a/docs/en/msg_docs/TimesyncStatus.md +++ b/docs/en/msg_docs/TimesyncStatus.md @@ -1,8 +1,35 @@ +--- +pageClass: is-wide-page +--- + # TimesyncStatus (UORB message) +**TOPICS:** timesync_status +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TimesyncStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | -------- | ------------ | ---------- | -------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------- | ------- | ----- | ----------- | +| 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) @@ -16,5 +43,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/en/msg_docs/TrajectorySetpoint.md b/docs/en/msg_docs/TrajectorySetpoint.md index 06e44bcf11..a778ddcf0b 100644 --- a/docs/en/msg_docs/TrajectorySetpoint.md +++ b/docs/en/msg_docs/TrajectorySetpoint.md @@ -1,11 +1,36 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | ------------ | ------------ | ---------- | ---------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +50,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/en/msg_docs/TrajectorySetpoint6dof.md b/docs/en/msg_docs/TrajectorySetpoint6dof.md index f2629e19c4..4b6b4e820c 100644 --- a/docs/en/msg_docs/TrajectorySetpoint6dof.md +++ b/docs/en/msg_docs/TrajectorySetpoint6dof.md @@ -1,9 +1,30 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------ | ------------ | ---------- | -------------------------------------- | +| 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 +40,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/en/msg_docs/TransponderReport.md b/docs/en/msg_docs/TransponderReport.md index 9bab882b02..6d1aba922f 100644 --- a/docs/en/msg_docs/TransponderReport.md +++ b/docs/en/msg_docs/TransponderReport.md @@ -1,6 +1,70 @@ +--- +pageClass: is-wide-page +--- + # TransponderReport (UORB message) -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TransponderReport.msg) +**TOPICS:** transponder_report + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------- | ----------- | ------------ | ---------- | -------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------------------------------- | -------- | ----- | ----------- | +| 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 +117,6 @@ uint16 ADSB_EMITTER_TYPE_POINT_OBSTACLE=19 uint16 ADSB_EMITTER_TYPE_ENUM_END=20 uint8 ORB_QUEUE_LENGTH = 16 - ``` + +::: diff --git a/docs/en/msg_docs/TuneControl.md b/docs/en/msg_docs/TuneControl.md index b6e96771ad..25a79645d4 100644 --- a/docs/en/msg_docs/TuneControl.md +++ b/docs/en/msg_docs/TuneControl.md @@ -1,9 +1,60 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------- | -------- | ------------ | ---------- | --------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------------------------- | ------- | ----- | ----------- | +| 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 +96,6 @@ uint8 VOLUME_LEVEL_DEFAULT = 20 uint8 VOLUME_LEVEL_MAX = 100 uint8 ORB_QUEUE_LENGTH = 4 - ``` + +::: diff --git a/docs/en/msg_docs/UavcanParameterRequest.md b/docs/en/msg_docs/UavcanParameterRequest.md index 681c8aa8c9..1abc63360e 100644 --- a/docs/en/msg_docs/UavcanParameterRequest.md +++ b/docs/en/msg_docs/UavcanParameterRequest.md @@ -1,8 +1,44 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | ---------- | ------------ | ---------- | ----------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------------------------------- | ------- | ----- | --------------------------------- | +| 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 +64,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/en/msg_docs/UavcanParameterValue.md b/docs/en/msg_docs/UavcanParameterValue.md index f77444727a..fec16df590 100644 --- a/docs/en/msg_docs/UavcanParameterValue.md +++ b/docs/en/msg_docs/UavcanParameterValue.md @@ -1,8 +1,31 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------- | ---------- | ------------ | ---------- | ----------------------------------------------- | +| 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 +37,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/en/msg_docs/UlogStream.md b/docs/en/msg_docs/UlogStream.md index 8aba8063c8..f52c44da41 100644 --- a/docs/en/msg_docs/UlogStream.md +++ b/docs/en/msg_docs/UlogStream.md @@ -1,9 +1,36 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------- | ------------ | ------------ | ---------- | ------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------- | ------- | ----- | -------------------------------------------------------------------- | +| 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 +52,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/en/msg_docs/UlogStreamAck.md b/docs/en/msg_docs/UlogStreamAck.md index 4bef62c4f5..ea874882fd 100644 --- a/docs/en/msg_docs/UlogStreamAck.md +++ b/docs/en/msg_docs/UlogStreamAck.md @@ -1,9 +1,32 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | -------- | ------------ | ---------- | -------------------------------------- | +| timestamp | `uint64` | | | time since system start (microseconds) | +| msg_sequence | `uint16` | | | + +## Constants + +| Name | Type | Value | Description | +| ------------------------------------------- | ------- | ----- | -------------------------------------------------------------------------------- | +| 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 +37,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/en/msg_docs/UnregisterExtComponent.md b/docs/en/msg_docs/UnregisterExtComponent.md index 5a36c85613..a3e7a4d6da 100644 --- a/docs/en/msg_docs/UnregisterExtComponent.md +++ b/docs/en/msg_docs/UnregisterExtComponent.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # UnregisterExtComponent (UORB message) +**TOPICS:** unregister_extcomponent +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/UnregisterExtComponent.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ---------- | ------------ | ---------- | --------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 @@ -14,5 +38,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/en/msg_docs/VehicleAcceleration.md b/docs/en/msg_docs/VehicleAcceleration.md index 1fb3d0880c..e463dedd18 100644 --- a/docs/en/msg_docs/VehicleAcceleration.md +++ b/docs/en/msg_docs/VehicleAcceleration.md @@ -1,15 +1,31 @@ +--- +pageClass: is-wide-page +--- + # VehicleAcceleration (UORB message) +**TOPICS:** vehicle_acceleration +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAcceleration.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------ | ------------ | ---------- | --------------------------------------------------------------------------------------- | +| 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/en/msg_docs/VehicleAirData.md b/docs/en/msg_docs/VehicleAirData.md index dccfefc095..020b706c27 100644 --- a/docs/en/msg_docs/VehicleAirData.md +++ b/docs/en/msg_docs/VehicleAirData.md @@ -1,11 +1,35 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------- | --------- | ------------ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------- | +| 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 +46,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/en/msg_docs/VehicleAngularAccelerationSetpoint.md b/docs/en/msg_docs/VehicleAngularAccelerationSetpoint.md index d10cabdb55..f098855945 100644 --- a/docs/en/msg_docs/VehicleAngularAccelerationSetpoint.md +++ b/docs/en/msg_docs/VehicleAngularAccelerationSetpoint.md @@ -1,14 +1,30 @@ +--- +pageClass: is-wide-page +--- + # VehicleAngularAccelerationSetpoint (UORB message) +**TOPICS:** vehicle_angularacceleration_setpoint +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAngularAccelerationSetpoint.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------ | ------------ | ---------- | -------------------------------------------------------------------------- | +| 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/en/msg_docs/VehicleAngularVelocity.md b/docs/en/msg_docs/VehicleAngularVelocity.md index 2c94cb706a..81fa680129 100644 --- a/docs/en/msg_docs/VehicleAngularVelocity.md +++ b/docs/en/msg_docs/VehicleAngularVelocity.md @@ -1,8 +1,31 @@ +--- +pageClass: is-wide-page +--- + # VehicleAngularVelocity (UORB message) +**TOPICS:** vehicle_angular_velocity vehicle_angular_velocity_groundtruth +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAngularVelocity.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------ | ------------ | ---------- | -------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 @@ -15,5 +38,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/en/msg_docs/VehicleAttitude.md b/docs/en/msg_docs/VehicleAttitude.md index 856fe6d5a6..526e299db5 100644 --- a/docs/en/msg_docs/VehicleAttitude.md +++ b/docs/en/msg_docs/VehicleAttitude.md @@ -1,9 +1,34 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------ | ------------ | ------------ | ---------- | ------------------------------------------------------------------ | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +46,6 @@ uint8 quat_reset_counter # Quaternion reset counter # TOPICS vehicle_attitude vehicle_attitude_groundtruth external_ins_attitude # TOPICS estimator_attitude - ``` + +::: diff --git a/docs/en/msg_docs/VehicleAttitudeSetpoint.md b/docs/en/msg_docs/VehicleAttitudeSetpoint.md index 69552e23ef..7bc0940ba3 100644 --- a/docs/en/msg_docs/VehicleAttitudeSetpoint.md +++ b/docs/en/msg_docs/VehicleAttitudeSetpoint.md @@ -1,8 +1,31 @@ +--- +pageClass: is-wide-page +--- + # VehicleAttitudeSetpoint (UORB message) +**TOPICS:** vehicle_attitude_setpoint mc_virtual_attitude_setpoint fw_virtual_attitude_setpoint +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitudeSetpoint.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------ | ------------ | ---------- | -------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 @@ -19,5 +42,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/en/msg_docs/VehicleAttitudeSetpointV0.md b/docs/en/msg_docs/VehicleAttitudeSetpointV0.md index 9b3a8c655e..9a53c593f9 100644 --- a/docs/en/msg_docs/VehicleAttitudeSetpointV0.md +++ b/docs/en/msg_docs/VehicleAttitudeSetpointV0.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # VehicleAttitudeSetpointV0 (UORB message) +**TOPICS:** vehicle_attitude_setpoint mc_virtual_attitude_setpoint fw_virtual_attitude_setpoint +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleAttitudeSetpointV0.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------- | ------------ | ------------ | ---------- | --------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 @@ -23,5 +48,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/en/msg_docs/VehicleCommand.md b/docs/en/msg_docs/VehicleCommand.md index 225f680857..32b719e7b7 100644 --- a/docs/en/msg_docs/VehicleCommand.md +++ b/docs/en/msg_docs/VehicleCommand.md @@ -1,9 +1,1581 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | --------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_CUSTOM_1 (1) + +Test command. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_CUSTOM_2 (2) + +Test command. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_NAV_WAYPOINT (16) + +Navigate to MISSION. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | --------------------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------ | +| 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 | Description | +| ----- | ----- | ---------- | ----------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ------------------------------------------- | ------------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------ | +| 1 | m | | Major radius | +| 2 | m | | Minor radius | +| 3 | m/s | | Velocity | +| 4 | | | Orientation | +| 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 | Description | +| ----- | ----- | --------------------------- | ----------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------------------------------------------------ | +| 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 | Description | +| ----- | ----- | ---------- | ------------------ | +| 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 | Description | +| ----- | ----- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------ | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------------------------ | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------------------- | +| 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 | Description | +| ----- | ----- | ---------- | --------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------ | +| 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 | Description | +| ----- | ----- | ---------- | ----------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | --------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | --------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | --------------- | +| 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 | Description | +| ----- | ----- | ------------------------- | ------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | -------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ---------------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ---------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | --------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------ | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | --------------------------------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | --------------------------- | ----------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | --------------------------------- | ---------------------------------- | +| 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 | Description | +| ----- | ----- | --------------------------------- | --------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------ | +| 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 | Description | +| ----- | ----- | ---------- | ----------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | --------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_AUTOTUNE_ENABLE (212) + +Enable autotune module. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------------------------ | +| 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 | Description | +| ----- | ----- | ---------- | ------------ | +| 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 | Description | +| ----- | ----- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------------------------------------------------------------------------------------ | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------------------------------------------------------ | +| 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 | Description | +| ----- | ----- | ---------- | --------------------------------------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_MISSION_START (300) + +Start running a mission. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ---------------------------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | --------------- | +| 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 | Description | +| ----- | ----- | ---------- | --------------- | +| 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 | Description | +| ----- | ----- | ---------- | ---------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_INJECT_FAILURE (420) + +Inject artificial failure for testing purposes. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_START_RX_PAIR (500) + +Starts receiver pairing. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | -------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_REQUEST_CAMERA_INFORMATION (521) + +Request camera information (CAMERA_INFORMATION). + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_SET_CAMERA_ZOOM (531) + +Set camera zoom. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_SET_CAMERA_FOCUS (532) + +None + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_IMAGE_START_CAPTURE (2000) + +Start image capture sequence. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_VIDEO_START_CAPTURE (2500) + +Start a video capture. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_VIDEO_STOP_CAPTURE (2501) + +Stop the current video capture. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_LOGGING_START (2510) + +Start streaming ULog data. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_LOGGING_STOP (2511) + +Stop streaming ULog data. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_VTOL_TRANSITION (3000) + +Command VTOL transition. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_SET_SAFETY_SWITCH_STATE (5300) + +Command safety on/off. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | -------------------------------------------------------------------------------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_PAYLOAD_CONTROL_DEPLOY (30002) + +Control a pre-programmed payload deployment. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_DO_WINCH (42600) + +Command to operate winch. + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | ? | +| 2 | | | ? | +| 3 | | | ? | +| 4 | | | ? | +| 5 | | | ? | +| 6 | | | ? | +| 7 | | | ? | + +### VEHICLE_CMD_EXTERNAL_WIND_ESTIMATE (43004) + +None + +| Param | Units | Range/Enum | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 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 | Description | +| ----- | ----- | ---------- | ------------------------------------------------ | +| 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 | Description | +| ----- | ----- | ---------- | ----------- | +| 1 | | | nav_state | +| 2 | | | Unused | +| 3 | | | Unused | +| 4 | | | Unused | +| 5 | | | Unused | +| 6 | | | Unused | +| 7 | | | Unused | + +## Enums + +### ORBIT_YAW_BEHAVIOUR {#ORBIT_YAW_BEHAVIOUR} + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------------------------------------------- | ------- | ----- | ----------- | +| 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} + +| Name | Type | Value | Description | +| --------------------------------------------------------- | ------- | ----- | ---------------------------- | +| 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} + +| Name | Type | Value | Description | +| ----------------------------------------------------------------- | ------- | ----- | ----------- | +| 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} + +| Name | Type | Value | Description | +| ---- | ---- | ----- | ----------- | + +## Constants + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------------------------------------- | -------- | ----- | ------------------------------------------------------------------------------------------ | +| 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 +1784,6 @@ bool from_external uint16 COMPONENT_MODE_EXECUTOR_START = 1000 # TOPICS vehicle_command gimbal_v1_command vehicle_command_mode_executor - ``` + +::: diff --git a/docs/en/msg_docs/VehicleCommandAck.md b/docs/en/msg_docs/VehicleCommandAck.md index e40b7bc87c..a06d896283 100644 --- a/docs/en/msg_docs/VehicleCommandAck.md +++ b/docs/en/msg_docs/VehicleCommandAck.md @@ -1,10 +1,51 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | -------- | ------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------------------------- | -------- | ----- | --------------------------------- | +| 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 +73,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 +83,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/en/msg_docs/VehicleConstraints.md b/docs/en/msg_docs/VehicleConstraints.md index 266ac8911f..ecca9d3576 100644 --- a/docs/en/msg_docs/VehicleConstraints.md +++ b/docs/en/msg_docs/VehicleConstraints.md @@ -1,9 +1,27 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | --------- | ------------ | ---------- | --------------------------------------------------------------------------- | +| 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 +33,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/en/msg_docs/VehicleControlMode.md b/docs/en/msg_docs/VehicleControlMode.md index 0c6d062938..e122049c8c 100644 --- a/docs/en/msg_docs/VehicleControlMode.md +++ b/docs/en/msg_docs/VehicleControlMode.md @@ -1,8 +1,43 @@ +--- +pageClass: is-wide-page +--- + # VehicleControlMode (UORB message) +**TOPICS:** vehicle_control_mode config_control_setpoints +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleControlMode.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------------------------- | -------- | ------------ | ---------- | ------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 @@ -29,5 +64,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/en/msg_docs/VehicleGlobalPosition.md b/docs/en/msg_docs/VehicleGlobalPosition.md index c3e4147201..67ed199cd2 100644 --- a/docs/en/msg_docs/VehicleGlobalPosition.md +++ b/docs/en/msg_docs/VehicleGlobalPosition.md @@ -1,12 +1,47 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------- | --------- | ------------ | ---------- | ----------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +81,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/en/msg_docs/VehicleImu.md b/docs/en/msg_docs/VehicleImu.md index 5c3856f190..005cf34ae6 100644 --- a/docs/en/msg_docs/VehicleImu.md +++ b/docs/en/msg_docs/VehicleImu.md @@ -1,8 +1,43 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------- | ------------ | ------------ | ---------- | -------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------- | ------- | ----- | ----------- | +| 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 +63,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/en/msg_docs/VehicleImuStatus.md b/docs/en/msg_docs/VehicleImuStatus.md index 1d26a7af36..bd7f1c89ec 100644 --- a/docs/en/msg_docs/VehicleImuStatus.md +++ b/docs/en/msg_docs/VehicleImuStatus.md @@ -1,8 +1,41 @@ +--- +pageClass: is-wide-page +--- + # VehicleImuStatus (UORB message) +**TOPICS:** vehicle_imustatus +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleImuStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------- | ------------ | ------------ | ---------- | ------------------------------------------------------------------------- | +| 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) @@ -33,5 +66,6 @@ float32[3] var_gyro # gyroscope variance since last publication float32 temperature_accel float32 temperature_gyro - ``` + +::: diff --git a/docs/en/msg_docs/VehicleLandDetected.md b/docs/en/msg_docs/VehicleLandDetected.md index bd53ce680f..1756a382f1 100644 --- a/docs/en/msg_docs/VehicleLandDetected.md +++ b/docs/en/msg_docs/VehicleLandDetected.md @@ -1,8 +1,40 @@ +--- +pageClass: is-wide-page +--- + # VehicleLandDetected (UORB message) +**TOPICS:** vehicle_landdetected +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleLandDetected.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------------------- | -------- | ------------ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 @@ -26,5 +58,6 @@ bool rotational_movement bool close_to_ground_or_skipped_check bool at_rest - ``` + +::: diff --git a/docs/en/msg_docs/VehicleLocalPosition.md b/docs/en/msg_docs/VehicleLocalPosition.md index af84dc1ddb..855cb89910 100644 --- a/docs/en/msg_docs/VehicleLocalPosition.md +++ b/docs/en/msg_docs/VehicleLocalPosition.md @@ -1,9 +1,85 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------------- | ------------ | ------------ | ---------- | ----------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------- | -------- | ----- | ----------------------------------------------------------------------------------------- | +| 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 +170,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/en/msg_docs/VehicleLocalPositionSetpoint.md b/docs/en/msg_docs/VehicleLocalPositionSetpoint.md index 15f66292b3..e4fa76c086 100644 --- a/docs/en/msg_docs/VehicleLocalPositionSetpoint.md +++ b/docs/en/msg_docs/VehicleLocalPositionSetpoint.md @@ -1,10 +1,34 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | ------------ | ------------ | ---------- | -------------------------------------- | +| 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 +50,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/en/msg_docs/VehicleLocalPositionV0.md b/docs/en/msg_docs/VehicleLocalPositionV0.md index 05d9361dc1..1596c85b1b 100644 --- a/docs/en/msg_docs/VehicleLocalPositionV0.md +++ b/docs/en/msg_docs/VehicleLocalPositionV0.md @@ -1,9 +1,84 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| --------------------------- | ------------ | ------------ | ---------- | ----------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------- | -------- | ----- | ----------------------------------------------------------------------------------------- | +| 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 +167,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/en/msg_docs/VehicleMagnetometer.md b/docs/en/msg_docs/VehicleMagnetometer.md index 3d8f504fd4..23be7d6896 100644 --- a/docs/en/msg_docs/VehicleMagnetometer.md +++ b/docs/en/msg_docs/VehicleMagnetometer.md @@ -1,11 +1,28 @@ +--- +pageClass: is-wide-page +--- + # VehicleMagnetometer (UORB message) +**TOPICS:** vehicle_magnetometer +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleMagnetometer.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------- | ------------ | ------------ | ---------- | ---------------------------------------------------------------------------------- | +| 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) @@ -15,5 +32,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/en/msg_docs/VehicleOdometry.md b/docs/en/msg_docs/VehicleOdometry.md index 4213c23337..a89f94d675 100644 --- a/docs/en/msg_docs/VehicleOdometry.md +++ b/docs/en/msg_docs/VehicleOdometry.md @@ -1,10 +1,63 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------------- | ------------ | -------------------------------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| ----------------------------------------------------- | ------- | ----- | --------------------------------------------------------------------------------------------- | +| 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} + +| Name | Type | Value | Description | +| --------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +95,6 @@ int8 quality # [-] [@invalid 0] Quality. Unused. # TOPICS vehicle_odometry vehicle_mocap_odometry vehicle_visual_odometry # TOPICS estimator_odometry - ``` + +::: diff --git a/docs/en/msg_docs/VehicleOpticalFlow.md b/docs/en/msg_docs/VehicleOpticalFlow.md index 21bd5ab438..298502f826 100644 --- a/docs/en/msg_docs/VehicleOpticalFlow.md +++ b/docs/en/msg_docs/VehicleOpticalFlow.md @@ -1,8 +1,34 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------- | ------------ | ------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| 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 +52,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/en/msg_docs/VehicleOpticalFlowVel.md b/docs/en/msg_docs/VehicleOpticalFlowVel.md index eec61e9ba9..7431dafc15 100644 --- a/docs/en/msg_docs/VehicleOpticalFlowVel.md +++ b/docs/en/msg_docs/VehicleOpticalFlowVel.md @@ -1,8 +1,32 @@ +--- +pageClass: is-wide-page +--- + # VehicleOpticalFlowVel (UORB message) +**TOPICS:** estimator_optical_flow_vel vehicle_optical_flow_vel +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleOpticalFlowVel.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------------------- | ------------ | ------------ | ---------- | --------------------------------------------------------------------------------------------------------------------- | +| 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) @@ -23,5 +47,6 @@ float32[3] gyro_bias float32[3] ref_gyro # TOPICS estimator_optical_flow_vel vehicle_optical_flow_vel - ``` + +::: diff --git a/docs/en/msg_docs/VehicleRatesSetpoint.md b/docs/en/msg_docs/VehicleRatesSetpoint.md index ebc5827d68..89184ec42d 100644 --- a/docs/en/msg_docs/VehicleRatesSetpoint.md +++ b/docs/en/msg_docs/VehicleRatesSetpoint.md @@ -1,8 +1,33 @@ +--- +pageClass: is-wide-page +--- + # VehicleRatesSetpoint (UORB message) +**TOPICS:** vehicle_ratessetpoint +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleRatesSetpoint.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| -------------- | ------------ | ------------ | ---------- | -------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 @@ -19,5 +44,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/en/msg_docs/VehicleRoi.md b/docs/en/msg_docs/VehicleRoi.md index 9f3533e29f..3ddf7ad10b 100644 --- a/docs/en/msg_docs/VehicleRoi.md +++ b/docs/en/msg_docs/VehicleRoi.md @@ -1,8 +1,42 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------ | --------- | ------------ | ---------- | -------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------- | ------- | ----- | ---------------------------------------------- | +| 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 +60,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/en/msg_docs/VehicleStatus.md b/docs/en/msg_docs/VehicleStatus.md index 05e3f98bbb..e9ea5416ff 100644 --- a/docs/en/msg_docs/VehicleStatus.md +++ b/docs/en/msg_docs/VehicleStatus.md @@ -1,8 +1,130 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------------- | -------- | ------------ | ---------- | ----------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------------------- | -------- | ----- | ------------------------------------------------ | +| 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 +259,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/en/msg_docs/VehicleStatusV0.md b/docs/en/msg_docs/VehicleStatusV0.md index 9a91186524..5c9b8c0ae5 100644 --- a/docs/en/msg_docs/VehicleStatusV0.md +++ b/docs/en/msg_docs/VehicleStatusV0.md @@ -1,8 +1,137 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------------------- | -------- | ------------ | ---------- | ----------------------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------------------------------------------------------- | -------- | ----- | ------------------------------------------------ | +| 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 +274,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/en/msg_docs/VehicleThrustSetpoint.md b/docs/en/msg_docs/VehicleThrustSetpoint.md index 6bcf6e9d13..2b5324b098 100644 --- a/docs/en/msg_docs/VehicleThrustSetpoint.md +++ b/docs/en/msg_docs/VehicleThrustSetpoint.md @@ -1,11 +1,26 @@ +--- +pageClass: is-wide-page +--- + # VehicleThrustSetpoint (UORB message) +**TOPICS:** vehicle_thrust_setpoint vehicle_thrust_setpoint_virtual_fw vehicle_thrust_setpoint_virtual_mc +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleThrustSetpoint.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------ | ------------ | ---------- | -------------------------------------------------------------------------- | +| 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) @@ -13,5 +28,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/en/msg_docs/VehicleTorqueSetpoint.md b/docs/en/msg_docs/VehicleTorqueSetpoint.md index d67e37b3a3..a0449a4711 100644 --- a/docs/en/msg_docs/VehicleTorqueSetpoint.md +++ b/docs/en/msg_docs/VehicleTorqueSetpoint.md @@ -1,11 +1,26 @@ +--- +pageClass: is-wide-page +--- + # VehicleTorqueSetpoint (UORB message) +**TOPICS:** vehicle_torque_setpoint vehicle_torque_setpoint_virtual_fw vehicle_torque_setpoint_virtual_mc +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleTorqueSetpoint.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | ------------ | ------------ | ---------- | -------------------------------------------------------------------------- | +| 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) @@ -13,5 +28,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/en/msg_docs/VelocityLimits.md b/docs/en/msg_docs/VelocityLimits.md index 6a86fdc977..007088412a 100644 --- a/docs/en/msg_docs/VelocityLimits.md +++ b/docs/en/msg_docs/VelocityLimits.md @@ -1,8 +1,27 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------- | --------- | ------------ | ---------- | -------------------------------------- | +| 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 +32,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/en/msg_docs/VtolVehicleStatus.md b/docs/en/msg_docs/VtolVehicleStatus.md index a271005673..0e6a351aac 100644 --- a/docs/en/msg_docs/VtolVehicleStatus.md +++ b/docs/en/msg_docs/VtolVehicleStatus.md @@ -1,8 +1,37 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------------- | -------- | ------------ | ---------- | --------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| --------------------------------------------------------------------------------------- | -------- | ----- | ----------- | +| 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 +49,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/en/msg_docs/Vtx.md b/docs/en/msg_docs/Vtx.md new file mode 100644 index 0000000000..7cf2657bf0 --- /dev/null +++ b/docs/en/msg_docs/Vtx.md @@ -0,0 +1,83 @@ +--- +pageClass: is-wide-page +--- + +# Vtx (UORB message) + +**TOPICS:** vtx + +## Fields + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------- | ----------- | ------------ | ---------- | -------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ------------------------------------------------------------------- | ------- | ----- | ----------------------------------------- | +| 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/en/msg_docs/WheelEncoders.md b/docs/en/msg_docs/WheelEncoders.md index 8a10dc11ad..d5ae526c7a 100644 --- a/docs/en/msg_docs/WheelEncoders.md +++ b/docs/en/msg_docs/WheelEncoders.md @@ -1,8 +1,24 @@ +--- +pageClass: is-wide-page +--- + # WheelEncoders (UORB message) +**TOPICS:** wheel_encoders +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/WheelEncoders.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ----------- | ------------ | ------------ | ---------- | -------------------------------------- | +| 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) @@ -10,5 +26,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/en/msg_docs/Wind.md b/docs/en/msg_docs/Wind.md index 7ddb2e62eb..c30a092752 100644 --- a/docs/en/msg_docs/Wind.md +++ b/docs/en/msg_docs/Wind.md @@ -1,11 +1,42 @@ +--- +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 + +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ---------------- | --------- | ------------ | ---------- | --------------------------------------------------------------------------------- | +| 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 + +| Name | Type | Value | Description | +| ----------------------------------------------- | -------- | ----- | ----------- | +| 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 +62,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/en/msg_docs/YawEstimatorStatus.md b/docs/en/msg_docs/YawEstimatorStatus.md index 888f7628ba..d167a6f0be 100644 --- a/docs/en/msg_docs/YawEstimatorStatus.md +++ b/docs/en/msg_docs/YawEstimatorStatus.md @@ -1,8 +1,30 @@ +--- +pageClass: is-wide-page +--- + # YawEstimatorStatus (UORB message) +**TOPICS:** yaw_estimatorstatus +## Fields -[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/YawEstimatorStatus.msg) +| Name | Type | Unit [Frame] | Range/Enum | Description | +| ------------------- | ------------ | ------------ | ---------- | ----------------------------------------------------------------- | +| 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) @@ -16,5 +38,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/en/msg_docs/index.md b/docs/en/msg_docs/index.md index 359abfc67f..e9c41e150c 100644 --- a/docs/en/msg_docs/index.md +++ b/docs/en/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/en/payloads/generic_actuator_control.md b/docs/en/payloads/generic_actuator_control.md index 46b0248bf1..82bd1f4df9 100644 --- a/docs/en/payloads/generic_actuator_control.md +++ b/docs/en/payloads/generic_actuator_control.md @@ -56,7 +56,6 @@ To use a generic actuator in a mission: 1. Change the waypoint mission item to a "Set actuator" mission item: ![Set actuator mission item](../../assets/qgc/plan/mission_item_editors/mission_item_select_set_actuator.png) - - Select the header on the waypoint mission editor to open the **Select Mission Command** editor. - Select the category **Advanced**, and then the **Set actuator** item (if the item is not present, try a more recent version of _QGroundControl_ or a daily build). This will change the mission item type to "Set actuator". diff --git a/docs/en/peripherals/gripper.md b/docs/en/peripherals/gripper.md index 07886d70ca..da62f315d2 100644 --- a/docs/en/peripherals/gripper.md +++ b/docs/en/peripherals/gripper.md @@ -72,7 +72,6 @@ To set the actuation timeout: There are two easy ways to open and close the gripper. While the drone is on a bench and the propellers are removed: - - Run the `payload_deliverer` test in the QGC [MAVLink Shell](../debug/mavlink_shell.md): ```sh diff --git a/docs/en/peripherals/mavlink_peripherals.md b/docs/en/peripherals/mavlink_peripherals.md index 111d723ffd..9a790a9218 100644 --- a/docs/en/peripherals/mavlink_peripherals.md +++ b/docs/en/peripherals/mavlink_peripherals.md @@ -28,7 +28,6 @@ The parameters for each instance are: For more information see [Serial Port Configuration](../peripherals/serial_configuration.md). - [MAV_X_MODE](../advanced_config/parameter_reference.md#MAV_0_MODE) - Specify the telemetry mode/target (the set of messages to stream for the current instance and their rate). The default values are: - - _Normal_: Standard set of messages for a GCS. - _Custom_ or _Magic_: Nothing (in the default PX4 implementation). Modes may be used for testing when developing a new mode. diff --git a/docs/en/peripherals/remote_id.md b/docs/en/peripherals/remote_id.md index 399b2cf973..60d3413661 100644 --- a/docs/en/peripherals/remote_id.md +++ b/docs/en/peripherals/remote_id.md @@ -165,7 +165,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. @@ -243,7 +242,7 @@ If the Remote ID CAN node is present and the messages are not being received, th 2. Navigate to the [Application settings](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/settings_view/general.html): **Application Settings > General > Miscellaneous**. 3. Select `Enable Remote ID`. The Remote ID tab should appear. - + ::: info If this option is not present you may be in a very recent version of QGC. In that case, open the view at: **Application Settings > Remote ID**. diff --git a/docs/en/peripherals/serial_configuration.md b/docs/en/peripherals/serial_configuration.md index 9228a0ad5a..65650feef5 100644 --- a/docs/en/peripherals/serial_configuration.md +++ b/docs/en/peripherals/serial_configuration.md @@ -106,7 +106,6 @@ The following ports are commonly mapped to specific functions on all boards: This is configured by default as a MAVLink port the onboard profile (for companion computers). The configuration for MAVLink is unique to this port (it doesn't use the `MAV_X_CONFIG` parameters). - - [SYS_USB_AUTO](../advanced_config/parameter_reference.md#SYS_USB_AUTO) sets whether the port is set to no partiular protocol, autodetects the protocol, or sets the comms link to MAVLink. - [USB_MAV_MODE](../advanced_config/parameter_reference.md#USB_MAV_MODE) sets the MAVLink profile that is used if MAVLink is set or detected. diff --git a/docs/en/power_module/ark_12s_pab_power_module.md b/docs/en/power_module/ark_12s_pab_power_module.md index 77c33cf32e..63c6223758 100644 --- a/docs/en/power_module/ark_12s_pab_power_module.md +++ b/docs/en/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/en/power_module/cuav_hv_pm.md b/docs/en/power_module/cuav_hv_pm.md index 7093c588ed..48e169a7f8 100644 --- a/docs/en/power_module/cuav_hv_pm.md +++ b/docs/en/power_module/cuav_hv_pm.md @@ -1,9 +1,9 @@ # CUAV HV PM (High-Voltage Power Module) -The CUAV® *HV_PM* power module is a "high voltage" power module independently developed by CUAV. +The CUAV® _HV_PM_ power module is a "high voltage" power module independently developed by CUAV. :::tip -The *HV_PM* is included in the CUAV V5+/V5 nano kit, but is also be sold separately. +The _HV_PM_ is included in the CUAV V5+/V5 nano kit, but is also be sold separately. There are different cables depending on the flight controller (Pixhack v3, V5+/V5 nano, Pixhawk). It can be used with other flight controllers, but you may need to modify the cable pin. ::: @@ -12,7 +12,7 @@ It can be used with other flight controllers, but you may need to modify the cab - **Higher voltage input:** 10V-60V (3s~14s battery) - **Accurate battery monitor:** - - **Voltage detection accuracy:** +-0.1v; + - **Voltage detection accuracy:** +-0.1v; - **Current detection accuracy:** +-0.2A - **BEC (5v) max current:** 5A - **Max (detection) current:** 60A @@ -31,5 +31,6 @@ It can be used with other flight controllers, but you may need to modify the cab [Battery Estimation Tuning](../config/battery.md) describes how to configure the battery and power module. The key configuration settings for `HV_PM` are: + - **Voltage divider:** 18 - **Amps per volt:** 24 A/V diff --git a/docs/en/power_module/holybro_pm02.md b/docs/en/power_module/holybro_pm02.md index 0f88cabf20..adb6447710 100644 --- a/docs/en/power_module/holybro_pm02.md +++ b/docs/en/power_module/holybro_pm02.md @@ -9,7 +9,6 @@ The module can be used with other flight controllers that require an analog powe ![Holybro PM02](../../assets/hardware/power_module/holybro_pm02/pm02.jpg) - ## Specifications - **Rated current**: 60A diff --git a/docs/en/power_module/holybro_pm03d.md b/docs/en/power_module/holybro_pm03d.md index 7f6825a0c2..526beebf69 100644 --- a/docs/en/power_module/holybro_pm03d.md +++ b/docs/en/power_module/holybro_pm03d.md @@ -31,13 +31,13 @@ The PM is **NOT** compatible with flight controllers that require an analog powe - **Mounting**: 45 x 45mm - **Weight**: 59g - **Connections**: - - XT-60 for battery - - XT-30 for motor & peripheral device (battery voltage) - - Solder pads in each corner (battery voltage) - - CLIK-Mate 2.0mm for flight controller (5.2V/3A standalone BEC) - - JST GH 4pin (5.2V/3A, BEC shared with 5.2V triple row pin header) - - 2x Triple row pin header (5.2V/3A, BEC shared with JST GH 4pin) - - 2x Triple row pin header (8V or 12V selectable by moving header jumper, 3A) +- XT-60 for battery +- XT-30 for motor & peripheral device (battery voltage) +- Solder pads in each corner (battery voltage) +- CLIK-Mate 2.0mm for flight controller (5.2V/3A standalone BEC) +- JST GH 4pin (5.2V/3A, BEC shared with 5.2V triple row pin header) +- 2x Triple row pin header (5.2V/3A, BEC shared with JST GH 4pin) +- 2x Triple row pin header (8V or 12V selectable by moving header jumper, 3A) ## Package Contents @@ -46,8 +46,8 @@ The PM is **NOT** compatible with flight controllers that require an analog powe - 1x Electrolytic capacitor: 220uF 63V (pre-soldered) - 1x 2.0mm pitch CLIK-Mate 6pin cable (To power flight controller) - 4pin JST GH to USB Type C -- 4pin JST GH to barrel plug (2.1*5.5mm) -- 4pin JST GH to barrel plug (2.5*5.5mm) +- 4pin JST GH to barrel plug (2.1\*5.5mm) +- 4pin JST GH to barrel plug (2.5\*5.5mm) - 4pin Pin Dupont Cable (2pc) - Nylon standoffs & nuts diff --git a/docs/en/power_module/holybro_pm06_pixhawk4mini_power_module.md b/docs/en/power_module/holybro_pm06_pixhawk4mini_power_module.md index ea8ac4f99a..9821c35cea 100644 --- a/docs/en/power_module/holybro_pm06_pixhawk4mini_power_module.md +++ b/docs/en/power_module/holybro_pm06_pixhawk4mini_power_module.md @@ -4,7 +4,6 @@ This power module has integrated power distribution board and provides regulated ![PM06](../../assets/hardware/power_module/holybro_pm06_14s/pm06v2_pm06v2-14s.jpg) - ## Specifications - **PCB Current:** 120A continued @@ -18,7 +17,7 @@ This power module has integrated power distribution board and provides regulated ## Mechanical Specifications - **Dimensions:** 35x35x5mm -- **Mounting hole:** 30.5mm*30.5mm +- **Mounting hole:** 30.5mm\*30.5mm - **Weight:** 24g ## Where to Buy diff --git a/docs/en/power_module/holybro_pm07_pixhawk4_power_module.md b/docs/en/power_module/holybro_pm07_pixhawk4_power_module.md index a1791ff177..0e7f7414fe 100644 --- a/docs/en/power_module/holybro_pm07_pixhawk4_power_module.md +++ b/docs/en/power_module/holybro_pm07_pixhawk4_power_module.md @@ -33,14 +33,12 @@ This module can be purchased as bundle with [Pixhawk 4](../assembly/quick_start_ [Pixhawk 4 Power Module (PM07)](https://holybro.com/collections/power-modules-pdbs/products/pixhawk-4-power-module-pm07) - ## Wiring/Connections Wiring and connection information can be found in: [Pixhawk 4 > Power](../assembly/quick_start_pixhawk4.md#power). ![Pixhawk 4 - Power Management Board](../../assets/hardware/power_module/holybro_pm07/pixhawk4_power_management_board.png) - ## Further Information [Quick Start Guide](https://docs.holybro.com/power-module-and-pdb/power-module/pm07-quick-start-guide) (Holybro) diff --git a/docs/en/power_module/sky-drones_smartap-pdb.md b/docs/en/power_module/sky-drones_smartap-pdb.md index 6447feff24..3ea985b7b4 100644 --- a/docs/en/power_module/sky-drones_smartap-pdb.md +++ b/docs/en/power_module/sky-drones_smartap-pdb.md @@ -21,7 +21,6 @@ SmartAP PDB makes connecting high-power lines easier and much more reliable. - Integrated electromagnetic sounder (buzzer) - Power output for the flight controller (both 5V regulated and battery voltage level output) - ## Size and Weight - Length: 65mm @@ -38,12 +37,10 @@ The key configuration settings are: - Voltage divider: 15.51 - Amps per volt: 36.00 - ## Where to buy [SmartAP PDB](https://sky-drones.com/parts/smartap-pdb.html) - ## Wiring / Pinout SmartAP Power Distribution Board pinout diagram is shown below. @@ -61,7 +58,6 @@ The current sensor is located on the bottom side of the PDB. ![SmartAP PDB](../../assets/hardware/power_module/sky-drones_smartap-pdb/smartap-pdb-current-sensor.png) - ## Further Information - [Buy SmartAP PDB](https://sky-drones.com/power/smartap-pdb.html) diff --git a/docs/en/releases/1.13.md b/docs/en/releases/1.13.md index fdda97c87f..7357fe68cd 100644 --- a/docs/en/releases/1.13.md +++ b/docs/en/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/en/ros/mavros_custom_messages.md b/docs/en/ros/mavros_custom_messages.md index 5f18636ad6..3549abea35 100644 --- a/docs/en/ros/mavros_custom_messages.md +++ b/docs/en/ros/mavros_custom_messages.md @@ -2,6 +2,7 @@ :::warning This article has been tested against: + - **Ubuntu:** 20.04 - **ROS:** Noetic - **PX4 Firmware:** v1.13 @@ -13,13 +14,14 @@ However these steps are fairly general and so it should work with other distros/ ## MAVROS Installation -Follow *Source Installation* instructions from [mavlink/mavros](https://github.com/mavlink/mavros/blob/master/mavros/index.md) to install "ROS Kinetic". +Follow _Source Installation_ instructions from [mavlink/mavros](https://github.com/mavlink/mavros/blob/master/mavros/index.md) to install "ROS Kinetic". ## MAVROS 1. We start by creating a new MAVROS plugin, in this example named **keyboard_command.cpp** (in **workspace/src/mavros/mavros_extras/src/plugins**) by using the code below: The code subscribes a 'char' message from ROS topic `/mavros/keyboard_command/keyboard_sub` and sends it as a MAVLink message. + ```c #include #include @@ -66,6 +68,7 @@ Follow *Source Installation* instructions from [mavlink/mavros](https://github.c ``` 1. Edit **mavros_plugins.xml** (in **workspace/src/mavros/mavros_extras**) and add the following lines: + ```xml Accepts keyboard command. @@ -73,10 +76,11 @@ Follow *Source Installation* instructions from [mavlink/mavros](https://github.c ``` 1. 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 ) ``` @@ -93,6 +97,7 @@ Follow *Source Installation* instructions from [mavlink/mavros](https://github.c ## PX4 Changes 1. Inside **common.xml** (in **PX4-Autopilot/src/modules/mavlink/mavlink/message_definitions/v1.0**), add your MAVLink message as following (same procedure as for MAVROS section above): + ```xml ... @@ -106,10 +111,11 @@ Follow *Source Installation* instructions from [mavlink/mavros](https://github.c Make sure that the **common.xml** files in the following directories are exactly the same: - `PX4-Autopilot/src/modules/mavlink/mavlink/message_definitions/v1.0` - `workspace/src/mavlink/message_definitions/v1.0` - are exactly the same. - ::: + are exactly the same. + ::: 1. Make your own uORB message file **key_command.msg** in (PX4-Autopilot/msg). For this example the "key_command.msg" has only the code: + ``` uint64 timestamp # time since system start (microseconds) char cmd @@ -142,6 +148,7 @@ Follow *Source Installation* instructions from [mavlink/mavros](https://github.c 1. Edit **mavlink_receiver.cpp** (in **PX4-Autopilot/src/modules/mavlink**). This is where PX4 receives the MAVLink message sent from ROS, and publishes it as a uORB topic. + ```cpp ... void MavlinkReceiver::handle_message(mavlink_message_t *msg) @@ -221,7 +228,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); @@ -258,10 +265,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 ``` @@ -283,7 +290,7 @@ Now you are ready to build all your work! ### Build for ROS 1. In your workspace enter: `catkin build`. -1. Beforehand, you have to set your "px4.launch" in (/workspace/src/mavros/mavros/launch). +1. Beforehand, you have to set your "px4.launch" in (/workspace/src/mavros/mavros/launch). Edit "px4.launch" as below. If you are using USB to connect your computer with Pixhawk, you have to set "fcu_url" as shown below. But, if you are using CP2102 to connect your computer with Pixhawk, you have to replace "ttyACM0" with "ttyUSB0". @@ -301,22 +308,25 @@ Now you are ready to build all your work! ### Build for PX4 1. Clean the previously built PX4-Autopilot directory. In the root of **PX4-Autopilot** directory: - ```sh - make clean - ``` -1. Build PX4-Autopilot and upload [in the normal way](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards). + ```sh + make clean + ``` - For example: - - - to build for Pixhawk 4/FMUv5 execute the following command in the root of the PX4-Autopilot directory: - ```sh - make px4_fmu-v5_default upload - ``` - - to build for SITL execute the following command in the root of the PX4-Autopilot directory (using jmavsim simulation): - ```sh - make px4_sitl jmavsim - ``` +1. Build PX4-Autopilot and upload [in the normal way](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards). + + For example: + - to build for Pixhawk 4/FMUv5 execute the following command in the root of the PX4-Autopilot directory: + + ```sh + make px4_fmu-v5_default upload + ``` + + - to build for SITL execute the following command in the root of the PX4-Autopilot directory (using jmavsim simulation): + + ```sh + make px4_sitl jmavsim + ``` ## Running the Code @@ -338,6 +348,7 @@ Next test if the MAVROS message is sent to PX4. 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/en/ros2/multi_vehicle.md b/docs/en/ros2/multi_vehicle.md index e295d49932..abed4ee206 100644 --- a/docs/en/ros2/multi_vehicle.md +++ b/docs/en/ros2/multi_vehicle.md @@ -38,12 +38,12 @@ This mismatch can be fixed by manually using `PX4_UXRCE_DDS_NS` on the first ins The default client configuration in simulation is summarized as follows: -| `PX4_UXRCE_DDS_NS` | `px4_instance` | `UXRCE_DDS_KEY` | client namespace | -|-------------------|----------------|------------------|-----------------------| -| not provided | 0 | `px4_instance+1` | none | -| provided | 0 | `px4_instance+1` | `PX4_UXRCE_DDS_NS` | -| not provided | >0 | `px4_instance+1` | `px4_${px4_instance}` | -| provided | >0 | `px4_instance+1` | `PX4_UXRCE_DDS_NS` | +| `PX4_UXRCE_DDS_NS` | `px4_instance` | `UXRCE_DDS_KEY` | client namespace | +| ------------------ | -------------- | ---------------- | --------------------- | +| not provided | 0 | `px4_instance+1` | none | +| provided | 0 | `px4_instance+1` | `PX4_UXRCE_DDS_NS` | +| not provided | >0 | `px4_instance+1` | `px4_${px4_instance}` | +| provided | >0 | `px4_instance+1` | `PX4_UXRCE_DDS_NS` | ## Adjusting the `target_system` value diff --git a/docs/en/ros2/px4_ros2_msg_translation_node.md b/docs/en/ros2/px4_ros2_msg_translation_node.md index f9dab8a42a..5587c4fdbb 100644 --- a/docs/en/ros2/px4_ros2_msg_translation_node.md +++ b/docs/en/ros2/px4_ros2_msg_translation_node.md @@ -305,7 +305,6 @@ The example describes the process of updating the `VehicleAttitude` message defi Update the existing translations header files `msg/translation_node/translations/*.h` to reference the newly archived message definition. For example, update references in those files:
- - Replace `px4_msgs::msg::VehicleAttitude` → `px4_msgs_old::msg::VehicleAttitudeV3` - Replace `#include ` → `#include ` @@ -386,7 +385,6 @@ The example describes the process of updating the `VehicleAttitude` message defi ``` Version translation templates are provided here: - - [Direct Topic Message Translation Template](https://github.com/PX4/PX4-Autopilot/blob/main/msg/translation_node/translations/example_translation_direct_v1.h) - [Generic Topic Message Translation Template](https://github.com/PX4/PX4-Autopilot/blob/main/msg/translation_node/translations/example_translation_multi_v2.h) - [Direct Service Message Translation Template](https://github.com/PX4/PX4-Autopilot/blob/main/msg/translation_node/translations/example_translation_service_v1.h) @@ -440,7 +438,7 @@ For translations with multiple input topics, the translation continues once all - Services messages only support a linear history, i.e. no message splitting or merging. - Having both publishers and subscribers for two different versions of the same topic is currently not handled by the translation node and would trigger infinite circular publications. This refers to the following problematic configuration: - + ``` app 1: pub topic_v1, sub topic_v1 app 2: pub topic_v2, sub topic_v2 diff --git a/docs/en/sensor/inertiallabs.md b/docs/en/sensor/inertiallabs.md index c86ab79e64..2d677e0d53 100644 --- a/docs/en/sensor/inertiallabs.md +++ b/docs/en/sensor/inertiallabs.md @@ -5,7 +5,6 @@ A universal protocol is used for [all Inertial Labs sensors](https://inertiallab ![INS-U](../../assets/hardware/sensors/inertial/ilabs-ins-u.png) - Benefits to PX4 users: - Higher accuracy heading, pitch, and roll estimates diff --git a/docs/en/sensor/microstrain.md b/docs/en/sensor/microstrain.md index c4aad808eb..9a6964180d 100644 --- a/docs/en/sensor/microstrain.md +++ b/docs/en/sensor/microstrain.md @@ -40,14 +40,11 @@ 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 4. To prioritize MicroStrain sensor output, adjust the priority level of individual sensors from 0-100 using the following parameters: - - [CAL_ACCn_PRIO](../advanced_config/parameter_reference.md#CAL_ACC0_PRIO) - [CAL_GYROn_PRIO](../advanced_config/parameter_reference.md#CAL_GYRO0_PRIO) - [CAL_MAGn_PRIO](../advanced_config/parameter_reference.md#CAL_MAG0_PRIO) @@ -57,7 +54,6 @@ To use the MicroStrain driver: ::: tip Sensors can be identified by their device id, which can be found by checking the parameters: - - [CAL_ACCn_ID](../advanced_config/parameter_reference.md#CAL_ACC0_ID) - [CAL_GYROn_ID](../advanced_config/parameter_reference.md#CAL_GYRO0_ID) - [CAL_MAGn_ID](../advanced_config/parameter_reference.md#CAL_MAG0_ID) @@ -76,32 +72,26 @@ 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. - The driver is scheduled to run at twice the fastest configured data rate. 2. Aiding measurements: - - 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) @@ -109,7 +99,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) @@ -120,7 +109,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) @@ -131,33 +119,24 @@ 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) 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) @@ -168,15 +147,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/en/sensor/optical_flow.md b/docs/en/sensor/optical_flow.md index f4fa4fcf0c..f76a40b4bb 100644 --- a/docs/en/sensor/optical_flow.md +++ b/docs/en/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/en/sensor/sbgecom.md b/docs/en/sensor/sbgecom.md index 508024bbd0..2115f1f4c1 100644 --- a/docs/en/sensor/sbgecom.md +++ b/docs/en/sensor/sbgecom.md @@ -76,8 +76,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/en/sensor/sfxx_lidar.md b/docs/en/sensor/sfxx_lidar.md index d9838ee45e..40d21ada31 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](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/en/sensor/vectornav.md b/docs/en/sensor/vectornav.md index b6291f4e4e..cbe8f7b53a 100644 --- a/docs/en/sensor/vectornav.md +++ b/docs/en/sensor/vectornav.md @@ -55,11 +55,9 @@ To use the VectorNav driver: 1. Disable magnetometer preflight checks by setting [SYS_HAS_MAG](../advanced_config/parameter_reference.md#SYS_HAS_MAG) to `0`. 1. Allow the VectorNav driver to initialize by restarting PX4. 1. 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: - 1. Set [VN_MODE](../advanced_config/parameter_reference.md#VN_MODE) to `Sensors Only` 1. If internal sensors are enabled, prioritize VectorNav sensors using [CAL_GYROn_PRIO](../advanced_config/parameter_reference.md#CAL_GYRO0_PRIO), [CAL_ACCn_PRIO](../advanced_config/parameter_reference.md#CAL_ACC0_PRIO), [CAL_BAROn_PRIO](../advanced_config/parameter_reference.md#CAL_BARO0_PRIO), [CAL_MAGn_PRIO](../advanced_config/parameter_reference.md#CAL_MAG0_PRIO), where _n_ is the instance number of the IMU component (0, 1, etc.). diff --git a/docs/en/sensor_bus/i2c_development.md b/docs/en/sensor_bus/i2c_development.md index b1ddfa21bf..0a0ccf07e7 100644 --- a/docs/en/sensor_bus/i2c_development.md +++ b/docs/en/sensor_bus/i2c_development.md @@ -4,9 +4,10 @@ I2C is a packet-switched serial communication protocol that allows multiple mast It is intended for attaching lower-speed peripheral ICs to processors and microcontrollers in short-distance, intra-board communication. Pixhawk/PX4 support it for: -* Connecting off board components that require higher data rates than provided by a strict serial UART, such as rangefinders. -* Compatibility with peripheral devices that only support I2C. -* Allowing multiple devices to attach to a single bus (useful for conserving ports). + +- Connecting off board components that require higher data rates than provided by a strict serial UART, such as rangefinders. +- Compatibility with peripheral devices that only support I2C. +- Allowing multiple devices to attach to a single bus (useful for conserving ports). For example, LEDs, Compass, rangefinders etc. ::: info @@ -22,15 +23,17 @@ 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: + ``` CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_LASER_I2C=y ``` You can also include all drivers of a particular type. + ``` CONFIG_COMMON_DISTANCE_SENSOR=y ``` @@ -44,12 +47,13 @@ For example, you can see/search for `CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_LA To find I2C driver examples, search for **i2c.h** in [/src/drivers/](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers). Just a few examples are: -* [drivers/distance_sensor/lightware_laser_i2c](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/distance_sensor/lightware_laser_i2c) - I2C driver for [Lightware SF1XX LIDAR](../sensor/sfxx_lidar.md). -* [drivers/distance_sensor/lightware_laser_serial](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/distance_sensor/lightware_laser_serial) - Serial driver for [Lightware SF1XX LIDAR](../sensor/sfxx_lidar.md). -* [drivers/ms5611](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/barometer/ms5611) - I2C Driver for the MS5611 and MS6507 barometric pressure sensor connected via I2C (or SPI). + +- [drivers/distance_sensor/lightware_laser_i2c](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/distance_sensor/lightware_laser_i2c) - I2C driver for [Lightware SF1XX LIDAR](../sensor/sfxx_lidar.md). +- [drivers/distance_sensor/lightware_laser_serial](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/distance_sensor/lightware_laser_serial) - Serial driver for [Lightware SF1XX LIDAR](../sensor/sfxx_lidar.md). +- [drivers/ms5611](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/barometer/ms5611) - I2C Driver for the MS5611 and MS6507 barometric pressure sensor connected via I2C (or SPI). ## Further Information -* [I2C](https://en.wikipedia.org/wiki/I%C2%B2C) (Wikipedia) -* [I2C Comparative Overview](https://learn.sparkfun.com/tutorials/i2c) (learn.sparkfun.com) -* [Driver Framework](../middleware/drivers.md) +- [I2C](https://en.wikipedia.org/wiki/I%C2%B2C) (Wikipedia) +- [I2C Comparative Overview](https://learn.sparkfun.com/tutorials/i2c) (learn.sparkfun.com) +- [Driver Framework](../middleware/drivers.md) diff --git a/docs/en/sensor_bus/i2c_general.md b/docs/en/sensor_bus/i2c_general.md index 2715b604e3..9242b7c70b 100644 --- a/docs/en/sensor_bus/i2c_general.md +++ b/docs/en/sensor_bus/i2c_general.md @@ -4,9 +4,9 @@ It is recommended for: -* Connecting offboard components that require low bandwidth and low latency communication, e.g. [rangefinders](../sensor/rangefinders.md), [magnetometers](../gps_compass/magnetometer.md), [airspeed sensors](../sensor/airspeed.md) and [tachometers](../sensor/tachometers.md). -* Compatibility with peripheral devices that only support I2C. -* Allowing multiple devices to attach to a single bus, which is useful for conserving ports. +- Connecting offboard components that require low bandwidth and low latency communication, e.g. [rangefinders](../sensor/rangefinders.md), [magnetometers](../gps_compass/magnetometer.md), [airspeed sensors](../sensor/airspeed.md) and [tachometers](../sensor/tachometers.md). +- Compatibility with peripheral devices that only support I2C. +- Allowing multiple devices to attach to a single bus, which is useful for conserving ports. I2C allows multiple master devices to connect to multiple slave devices using only 2 wires per connection (SDA, SCL). in theory, a bus can support 128 devices, each accessed via its unique address. @@ -15,7 +15,6 @@ in theory, a bus can support 128 devices, each accessed via its unique address. UAVCAN would normally be preferred where higher data rates are required, and on larger vehicles where sensors are mounted further from the flight controller. ::: - ## Wiring I2C uses a pair of wires: SDA (serial data) and SCL (serial clock). @@ -29,7 +28,6 @@ To ensure reliable communication and to reduce crosstalk it is advised to apply ![Cable twisting](../../assets/hardware/cables/i2c_jst-gh_cable.jpg) - ## Checking the Bus and Device Status A useful tool for bus analysis is [i2cdetect](../modules/modules_command.md#i2cdetect). @@ -41,8 +39,8 @@ The tool can be run in the PX4 terminal with the following command: ``` i2cdetect -b 1 ``` -where the bus number is specified after `-b` parameter +where the bus number is specified after `-b` parameter ## Common problems @@ -62,8 +60,9 @@ The bandwidth available for each device generally decreases as more devices are If too many devices are added, it can cause transmission errors and network unreliability. There are several ways to reduce the problem: -* Dividing the devices into groups, each with approximately the same number of devices, and connecting each group to one autopilot port -* Increase bus speed limit (usually set to 100kHz for external I2C bus) + +- Dividing the devices into groups, each with approximately the same number of devices, and connecting each group to one autopilot port +- Increase bus speed limit (usually set to 100kHz for external I2C bus) ### Excessive Wiring Capacitance @@ -71,9 +70,10 @@ The electrical capacity of bus wiring increases as more devices/wires are added. The problem can be analyzed using an oscilloscope, where we see that the edges of SDA/SCL signals are no longer sharp. There are several ways to reduce the problem: -* Dividing the devices into groups, each with approximately the same number of devices, and connecting each group to one autopilot port -* Using the shorter and higher quality I2C cables, see the [cable wiring page](../assembly/cable_wiring.md#i2c-cables) for details -* Separating the devices with a weak open-drain driver to smaller buses with lower capacitance by using [I2C Bus Accelerators](#i2c-bus-accelerators) + +- Dividing the devices into groups, each with approximately the same number of devices, and connecting each group to one autopilot port +- Using the shorter and higher quality I2C cables, see the [cable wiring page](../assembly/cable_wiring.md#i2c-cables) for details +- Separating the devices with a weak open-drain driver to smaller buses with lower capacitance by using [I2C Bus Accelerators](#i2c-bus-accelerators) ## I2C Bus Accelerators @@ -81,6 +81,7 @@ I2C bus accelerators are separate circuits that can be used to support longer wi They work by physically dividing an I2C network into 2 parts and using their own transistors to amplify I2C signals. Available accelerators include: + - [Thunderfly TFI2CEXT01](https://docs.thunderfly.cz/avionics/TFI2CEXT01/): ![I2C bus extender](../../assets/peripherals/i2c_tfi2cext/tfi2cext01a_bottom.jpg) - This has Dronecode connectors and is hence very easy to add to a Pixhawk I2C setup. @@ -89,7 +90,7 @@ Available accelerators include: ### I2C Level Converter function Some I2C devices have 5V on the data lines, while the Pixhawk connector standard port expects these lines to be 3.3 V. -You can use the TFI2CEXT01 as a level converter to connect 5V devices to a Pixhawk I2C port. This feature is possible because the SCL and SDA lines of TFI2CEXT01 are 5V tolerant. +You can use the TFI2CEXT01 as a level converter to connect 5V devices to a Pixhawk I2C port. This feature is possible because the SCL and SDA lines of TFI2CEXT01 are 5V tolerant. ## I2C Address Translators @@ -112,6 +113,6 @@ Software development for I2C devices is described in [I2C Bus (Development Overv ## Further Information -* [I2C](https://en.wikipedia.org/wiki/I%C2%B2C) (Wikipedia) -* [I2C Comparative Overview](https://learn.sparkfun.com/tutorials/i2c) (learn.sparkfun.com) -* [Driver Framework](../middleware/drivers.md) +- [I2C](https://en.wikipedia.org/wiki/I%C2%B2C) (Wikipedia) +- [I2C Comparative Overview](https://learn.sparkfun.com/tutorials/i2c) (learn.sparkfun.com) +- [Driver Framework](../middleware/drivers.md) diff --git a/docs/en/sensor_bus/translator_tfi2cadt.md b/docs/en/sensor_bus/translator_tfi2cadt.md index 0f00b6a610..0c12106d78 100644 --- a/docs/en/sensor_bus/translator_tfi2cadt.md +++ b/docs/en/sensor_bus/translator_tfi2cadt.md @@ -28,7 +28,7 @@ If you need your own value for address translation, changing the configuration r ## Example of Use The tachometer sensor [TFRPM01](../sensor/thunderfly_tachometer.md) can be set to two different addresses using a solder jumper. -If the autopilot has three buses, only 6 sensors can be connected and no bus remains free (2 available addresses * 3 I2C ports). +If the autopilot has three buses, only 6 sensors can be connected and no bus remains free (2 available addresses \* 3 I2C ports). In some multicopters or VTOL solutions, there is a need to measure the RPM of 8 or more elements. The [TFI2CADT01](https://www.tindie.com/products/26353/) is highly recommended in this case. @@ -39,7 +39,6 @@ By adding another TFI2CADT01, 4 more devices can be connected to the same bus. [![Connection of multiple sensors](https://mermaid.ink/img/pako:eNptkd9rwjAQx_-VcE8dtJB2ukEfBLEWfJCJy8CHvgRznQH7gzSBDfF_33VZB2oCyf3I576XcBc4dgohh08j-xMTRdUyWuX2I6LNErY7zJh0tuv1ubNP_7csSRZsudlHS22GHlGxAduhM3fEfrdNI1GS4emK8a85fwSyGyC9A0S5yVbrg_DZKfLtCxH9JsjhaU7VvI7pfK3_NCg_NXmO3pwl5uYt9D0yAXoWoFNP4yM9H-kspJ0FtF8CdObpURtiaNA0UisaymWsrsCesMEKcnIV1tKdbQVVeyXU9UpaXCttOwO5NQ5jGKf1_t0ep9gzhZY04sYnrz9BI4mU)](https://mermaid-js.github.io/mermaid-live-editor/edit#pako:eNptkd9rwjAQx_-VcE8dtJB2ukEfBLEWfJCJy8CHvgRznQH7gzSBDfF_33VZB2oCyf3I576XcBc4dgohh08j-xMTRdUyWuX2I6LNErY7zJh0tuv1ubNP_7csSRZsudlHS22GHlGxAduhM3fEfrdNI1GS4emK8a85fwSyGyC9A0S5yVbrg_DZKfLtCxH9JsjhaU7VvI7pfK3_NCg_NXmO3pwl5uYt9D0yAXoWoFNP4yM9H-kspJ0FtF8CdObpURtiaNA0UisaymWsrsCesMEKcnIV1tKdbQVVeyXU9UpaXCttOwO5NQ5jGKf1_t0ep9gzhZY04sYnrz9BI4mU) - - ::: info TFI2CADT01 does not contain any I2C buffer or accelerator. As it adds additional capacitance on the bus, we advise combining it with some bus booster, e.g. [TFI2CEXT01](https://docs.thunderfly.cz/avionics/TFI2CEXT01/). @@ -62,4 +60,4 @@ As it adds additional capacitance on the bus, we advise combining it with some b ### Other Resources -* Datasheet of [LTC4317](https://www.analog.com/media/en/technical-documentation/data-sheets/4317fa.pdf) +- Datasheet of [LTC4317](https://www.analog.com/media/en/technical-documentation/data-sheets/4317fa.pdf) diff --git a/docs/en/sim_gazebo_gz/index.md b/docs/en/sim_gazebo_gz/index.md index 6f5dead778..8f4ed2fee8 100644 --- a/docs/en/sim_gazebo_gz/index.md +++ b/docs/en/sim_gazebo_gz/index.md @@ -68,7 +68,6 @@ Note that all gazebo make targets have the prefix `gz_`. | [Ackermann Rover](../sim_gazebo_gz/vehicles.md#ackermann-rover) | `make px4_sitl gz_rover_ackermann` | 51000 | | [Mecanum Rover](../sim_gazebo_gz/vehicles.md#mecanum-rover) | `make px4_sitl gz_rover_mecanum` | 52000 | - All [vehicle models](../sim_gazebo_gz/vehicles.md) (and [worlds](#specify-world)) are included as a submodule from the [Gazebo Models Repository](../sim_gazebo_gz/gazebo_models.md) repository. The commands above launch a single vehicle with the full UI. @@ -136,6 +135,7 @@ HEADLESS=1 make px4_sitl gz_x500 ``` ### Set Custom Takeoff Location + The takeoff location in Gazebo Classic can be set using environment variables. The variables to set are: PX4_HOME_LAT, PX4_HOME_LON, and PX4_HOME_ALT. @@ -254,13 +254,11 @@ 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`: Sets the name of a new Gazebo model to be spawned in the simulator. If provided, the startup script looks for a model in the Gazebo resource path that matches the given variable, spawns it and binds a new PX4 instance to it. - - The setting is mutually exclusive with `PX4_GZ_MODEL_NAME`. ::: info @@ -270,7 +268,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`). @@ -278,7 +275,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: @@ -287,7 +283,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`: @@ -375,7 +370,6 @@ To add a new model: ``` 1. Add CMake Target for the [airframe](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d-posix/airframes/CMakeLists.txt). - - If you plan to use "regular" mode, add your model SDF to `Tools/simulation/gz/models/`. - If you plan to use _standalone_ mode, add your model SDF to `~/.simulation-gazebo/models/` @@ -387,7 +381,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/en/sim_gazebo_gz/worlds.md b/docs/en/sim_gazebo_gz/worlds.md index 5f72e222b2..8d10d50754 100644 --- a/docs/en/sim_gazebo_gz/worlds.md +++ b/docs/en/sim_gazebo_gz/worlds.md @@ -85,8 +85,8 @@ PX4_GZ_MODEL_POSE=0,0,2.2 PX4_GZ_WORLD=moving_platform make px4_sitl gz_standard The plugin can be configured with the following environment variables: - - `PX4_GZ_PLATFORM_VEL`: Platform speed (m/s). - - `PX4_GZ_PLATFORM_HEADING_DEG`: Platform heading and direction of velocity (degrees). 0 = east, positive direction is counterclockwise. +- `PX4_GZ_PLATFORM_VEL`: Platform speed (m/s). +- `PX4_GZ_PLATFORM_HEADING_DEG`: Platform heading and direction of velocity (degrees). 0 = east, positive direction is counterclockwise. [PX4-gazebo-models/main/worlds/moving_platform.sdf](https://github.com/PX4/PX4-gazebo-models/blob/main/worlds/moving_platform.sdf) diff --git a/docs/en/simulation/community_supported_simulators.md b/docs/en/simulation/community_supported_simulators.md index 6e201601c2..a7bbda97c0 100644 --- a/docs/en/simulation/community_supported_simulators.md +++ b/docs/en/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) -| Simulator | Description | -| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [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).

| +| Simulator | Description | +| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [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/en/smart_batteries/index.md b/docs/en/smart_batteries/index.md index 6ddc032842..805ad60619 100644 --- a/docs/en/smart_batteries/index.md +++ b/docs/en/smart_batteries/index.md @@ -5,7 +5,8 @@ This allows for more more reliable flight planning notification of failure condi The information may include some of: remaining charge, time-to-empty (estimated), cell voltages (rated max/min, current voltage, etc.), temperature, currents, fault information, battery vendor, chemistry, etc. PX4 supports (at least) following smart batteries: -* [Rotoye Batmon](../smart_batteries/rotoye_batmon.md) + +- [Rotoye Batmon](../smart_batteries/rotoye_batmon.md) ### Further Information diff --git a/docs/en/smart_batteries/rotoye_batmon.md b/docs/en/smart_batteries/rotoye_batmon.md index 64120b5da8..a50eba58e2 100644 --- a/docs/en/smart_batteries/rotoye_batmon.md +++ b/docs/en/smart_batteries/rotoye_batmon.md @@ -7,12 +7,10 @@ It can be purchased as a standalone unit or as part of a factory-assembled smart ![Pre-assembled Rotoye smart battery](../../assets/hardware/smart_batteries/rotoye_batmon/smart-battery-rotoye-pack.jpg) - ## Where to Buy [Rotoye Store](https://rotoye.com/batmon/): Batmon kits, custom smart-batteries, and accessories - ## Wiring/Connections The Rotoye Batmon system uses an XT-90 battery connector with I2C pins, and an opti-isolator board to transmit data. @@ -21,7 +19,6 @@ The Rotoye Batmon system uses an XT-90 battery connector with I2C pins, and an o More details can be found [here](https://github.com/rotoye/batmon_reader) - ## Software Setup ### Build PX4 Firmware @@ -31,7 +28,7 @@ More details can be found [here](https://github.com/rotoye/batmon_reader) git clone https://github.com/rotoye/PX4-Autopilot.git cd PX4-Autopilot ``` -1. Checkout the *batmon_4.03* branch +1. Checkout the _batmon_4.03_ branch ```sh git fetch origin batmon_4.03 git checkout batmon_4.03 @@ -40,16 +37,17 @@ More details can be found [here](https://github.com/rotoye/batmon_reader) ### Configure Parameters -In *QGroundControl*: +In _QGroundControl_: + 1. Set the following [parameters](../advanced_config/parameters.md): - `BATx_SOURCE` to `External`, - - `SENS_EN_BAT` to `true`, + - `SENS_EN_BAT` to `true`, - `BAT_SMBUS_MODEL` to `3:Rotoye` 1. Open the [MAVLink Console](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/mavlink_console.html) 1. 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 + ```sh + 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/en/test_and_ci/continous_integration.md b/docs/en/test_and_ci/continous_integration.md index a8409d2400..86033febbc 100644 --- a/docs/en/test_and_ci/continous_integration.md +++ b/docs/en/test_and_ci/continous_integration.md @@ -16,14 +16,14 @@ Jobs are organized in tiers, where each tier depends on the previous one complet #### Tier Structure -| Tier | Job | PR | Push / Dispatch | Description | -| ---- | -------------- | ----------------- | --------------- | ------------------------------------------------------------- | -| 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 | +| Tier | Job | PR | Push / Dispatch | Description | +| ---- | -------------- | ---------------------------- | --------------- | ------------------------------------------------------------- | +| 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 | +| T4 | Deploy | — | Yes | Deploys to AWS S3 | #### Pull Request Flow @@ -63,11 +63,11 @@ PR Event DONE ``` -| Job | Duration | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------------------- | -| **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) | +| Job | Duration | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | +| **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) diff --git a/docs/en/test_and_ci/index.md b/docs/en/test_and_ci/index.md index a906ed8f46..dbb1aa7c11 100644 --- a/docs/en/test_and_ci/index.md +++ b/docs/en/test_and_ci/index.md @@ -9,8 +9,8 @@ Test topics include: - [Unit Tests](../test_and_ci/unit_tests.md) - [Continuous Integration (CI)](../test_and_ci/continous_integration.md) - [Integration Testing](../test_and_ci/integration_testing.md) - - [MAVSDK Integration Testing](../test_and_ci/integration_testing_mavsdk.md) - - [PX4 ROS2 Interface Library Integration Testing](../test_and_ci/integration_testing_px4_ros2_interface.md) - - [ROS 1 Integration Testing](../test_and_ci/integration_testing_ros1_mavros.md) (Deprecated) + - [MAVSDK Integration Testing](../test_and_ci/integration_testing_mavsdk.md) + - [PX4 ROS2 Interface Library Integration Testing](../test_and_ci/integration_testing_px4_ros2_interface.md) + - [ROS 1 Integration Testing](../test_and_ci/integration_testing_ros1_mavros.md) (Deprecated) - [Docker](../test_and_ci/docker.md) - [Maintenance](../test_and_ci/maintenance.md) diff --git a/docs/en/test_cards/mc_04_failsafe_testing.md b/docs/en/test_cards/mc_04_failsafe_testing.md index 4042e094d2..3947be6b2e 100644 --- a/docs/en/test_cards/mc_04_failsafe_testing.md +++ b/docs/en/test_cards/mc_04_failsafe_testing.md @@ -9,10 +9,10 @@ Test RC loss, data link loss, and low battery failsafes. - Verify RC Loss action is Return to Land - Verify Data Link Loss action is Return to Land and the timeout is 10 seconds - Verify Battery failsafe - - Action is Return to Land - - Battery Warn Level is 25% - - Battery Failsafe Level is 20% - - Battery Emergency Level is 15% + - Action is Return to Land + - Battery Warn Level is 25% + - Battery Failsafe Level is 20% + - Battery Emergency Level is 15% ## Flight Tests @@ -28,7 +28,6 @@ Test RC loss, data link loss, and low battery failsafes.     ❏ Disconnect telemetry, vehicle should return to home position after 10 seconds, wait for the descent and reconnect the telemetry radio - ❏ Battery Failsafe     ❏ Confirm the warning message is received in QGC diff --git a/docs/en/uart/user_configurable_serial_driver.md b/docs/en/uart/user_configurable_serial_driver.md index 9fbe168a66..3809ad25a6 100644 --- a/docs/en/uart/user_configurable_serial_driver.md +++ b/docs/en/uart/user_configurable_serial_driver.md @@ -24,7 +24,6 @@ where, To make driver configurable: 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: diff --git a/docs/public/config/failsafe/index.js b/docs/public/config/failsafe/index.js index 58904fd091..1d4ce8cd21 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 WorkerGlobalScope!="undefined";var ENVIRONMENT_IS_NODE=typeof process=="object"&&process.versions?.node&&process.type!="renderer";var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=typeof document!="undefined"?document.currentScript?.src:undefined;if(typeof __filename!="undefined"){_scriptName=__filename}else if(ENVIRONMENT_IS_WORKER){_scriptName=self.location.href}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");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{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=async url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{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);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var isFileURI=filename=>filename.startsWith("file://");var wasmMemory;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var HEAP64,HEAPU64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports["v"]()}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var wasmBinaryFile;function findWasmBinary(){return locateFile("index.wasm")}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"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["u"];updateMemoryViews();wasmTable=wasmExports["A"];assignWasmExports(wasmExports);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(mod,inst)=>{resolve(receiveInstance(mod,inst))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var 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]}}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 AsciiToString=ptr=>{var str="";while(1){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch)}};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};var throwBindingError=message=>{throw new BindingError(message)};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={}){return sharedRegisterType(rawType,registeredInstance,options)}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];case 8:return signed?pointer=>HEAP64[pointer>>3]:pointer=>HEAPU64[pointer>>3];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{name=AsciiToString(name);const isUnsignedType=minRange===0n;let fromWireType=value=>value;if(isUnsignedType){const bitSize=size*8;fromWireType=value=>BigInt.asUintN(bitSize,value);maxRange=fromWireType(maxRange)}registerType(primitiveType,{name,fromWireType,toWireType:(destructors,value)=>{if(typeof value=="number"){value=BigInt(value)}return value},argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=AsciiToString(name);registerType(rawType,{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 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 deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;var init_ClassHandle=()=>{let proto=ClassHandle.prototype;Object.assign(proto,{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}});const symbolDispose=Symbol.dispose;if(symbolDispose){proto[symbolDispose]=proto["delete"]}};function ClassHandle(){}var createNamedFunction=(name,func)=>Object.defineProperty(func,"name",{value:name});var registeredPointers={};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[name].overloadTable.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;Module[name].argCount=numArguments}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{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};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}};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 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 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 InternalError=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};var throwInternalError=message=>{throw new InternalError(message)};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})}}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 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 wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var embind__requireFunction=(signature,rawFunction,isAsync=false)=>{signature=AsciiToString(signature);function makeDynCaller(){var rtn=getWasmTableEntry(rawFunction);return rtn}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};class UnboundTypeError extends Error{}var getTypeName=type=>{var ptr=___getTypeName(type);var rv=AsciiToString(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 whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(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)}};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=AsciiToString(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;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;return signature.slice(0,argsIndex)};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=AsciiToString(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker,isAsync);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=AsciiToString(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=[0,1,,1,null,1,true,1,false,1];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};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 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=AsciiToString(name);registerType(rawType,{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,isNonnullReturn)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=AsciiToString(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker,isAsync);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 __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=AsciiToString(name);const isUnsignedType=minRange===0;let fromWireType=value=>value;if(isUnsignedType){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift;maxRange=fromWireType(maxRange)}registerType(primitiveType,{name,fromWireType,toWireType:(destructors,value)=>value,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,BigInt64Array,BigUint64Array];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=AsciiToString(name);registerType(rawType,{name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=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;i++}}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=0,maxBytesToRead=NaN)=>{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=AsciiToString(name);var stdStringIsUTF8=true;registerType(rawType,{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(valueIsOfTypeString){if(stdStringIsUTF8){stringToUTF8(value,ptr,length+1)}else{for(var i=0;i255){_free(base);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}}else{HEAPU8.set(value,ptr)}if(destructors!==null){destructors.push(_free,base)}return base},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;var UTF16ToString=(ptr,maxBytesToRead)=>{var idx=ptr>>1;var maxIdx=idx+maxBytesToRead/2;var endIdx=idx;while(!(endIdx>=maxIdx)&&HEAPU16[endIdx])++endIdx;if(endIdx-idx>16&&UTF16Decoder)return UTF16Decoder.decode(HEAPU16.subarray(idx,endIdx));var str="";for(var i=idx;!(i>=maxIdx);++i){var codeUnit=HEAPU16[i];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 str="";for(var i=0;!(i>=maxBytesToRead/4);i++){var utf32=HEAP32[ptr+i*4>>2];if(!utf32)break;str+=String.fromCodePoint(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;i65535){i++}HEAP32[outPtr>>2]=codePoint;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i65535){i++}len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=AsciiToString(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,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=AsciiToString(name);registerType(rawType,{isVoid:true,name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};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));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};init_ClassHandle();init_RegisteredPointer();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"]}var _param_get,_param_set_used,__Znwm,__ZdlPvm,_malloc,__ZNSt12length_errorD1Ev,___cxa_allocate_exception,__ZNSt20bad_array_new_lengthD1Ev,__ZNSt20bad_array_new_lengthC1Ev,__ZNSt12out_of_rangeD1Ev,___cxa_pure_virtual,___getTypeName,__ZNSt9exceptionD2Ev,__emscripten_memcpy_bulkmem,_emscripten_stack_get_end,_emscripten_stack_get_base,_free,_emscripten_stack_init,_emscripten_stack_set_limits,_emscripten_stack_get_free,__ZSt15get_new_handlerv,__Znam,__ZdlPv,__ZdaPv,__ZdaPvm,__ZnwmSt11align_val_t,__ZnamSt11align_val_t,__ZdlPvSt11align_val_t,__ZdlPvmSt11align_val_t,__ZdaPvSt11align_val_t,__ZdaPvmSt11align_val_t,__ZSt14set_unexpectedPFvvE,__ZSt13set_terminatePFvvE,__ZSt15set_new_handlerPFvvE,__ZSt14get_unexpectedv,__ZSt10unexpectedv,__ZSt13get_terminatev,__ZSt9terminatev,___cxa_current_primary_exception,___cxa_rethrow_primary_exception,___cxa_uncaught_exception,___cxa_uncaught_exceptions,___cxa_free_exception,___cxa_init_primary_exception,___cxa_deleted_virtual,___dynamic_cast,__ZNSt9type_infoD2Ev,__ZNSt9exceptionD0Ev,__ZNSt9exceptionD1Ev,__ZNKSt9exception4whatEv,__ZNSt13bad_exceptionD0Ev,__ZNSt13bad_exceptionD1Ev,__ZNKSt13bad_exception4whatEv,__ZNSt9bad_allocC2Ev,__ZNSt9bad_allocD0Ev,__ZNSt9bad_allocD1Ev,__ZNKSt9bad_alloc4whatEv,__ZNSt20bad_array_new_lengthC2Ev,__ZNSt20bad_array_new_lengthD0Ev,__ZNKSt20bad_array_new_length4whatEv,__ZNSt13bad_exceptionD2Ev,__ZNSt9bad_allocC1Ev,__ZNSt9bad_allocD2Ev,__ZNSt20bad_array_new_lengthD2Ev,__ZNSt11logic_errorD2Ev,__ZNSt11logic_errorD0Ev,__ZNSt11logic_errorD1Ev,__ZNKSt11logic_error4whatEv,__ZNSt13runtime_errorD2Ev,__ZNSt13runtime_errorD0Ev,__ZNSt13runtime_errorD1Ev,__ZNKSt13runtime_error4whatEv,__ZNSt12domain_errorD0Ev,__ZNSt12domain_errorD1Ev,__ZNSt16invalid_argumentD0Ev,__ZNSt16invalid_argumentD1Ev,__ZNSt12length_errorD0Ev,__ZNSt12out_of_rangeD0Ev,__ZNSt11range_errorD0Ev,__ZNSt11range_errorD1Ev,__ZNSt14overflow_errorD0Ev,__ZNSt14overflow_errorD1Ev,__ZNSt15underflow_errorD0Ev,__ZNSt15underflow_errorD1Ev,__ZNSt12domain_errorD2Ev,__ZNSt16invalid_argumentD2Ev,__ZNSt12length_errorD2Ev,__ZNSt12out_of_rangeD2Ev,__ZNSt11range_errorD2Ev,__ZNSt14overflow_errorD2Ev,__ZNSt15underflow_errorD2Ev,__ZNSt9type_infoD0Ev,__ZNSt9type_infoD1Ev,__ZNSt8bad_castC2Ev,__ZNSt8bad_castD2Ev,__ZNSt8bad_castD0Ev,__ZNSt8bad_castD1Ev,__ZNKSt8bad_cast4whatEv,__ZNSt10bad_typeidC2Ev,__ZNSt10bad_typeidD2Ev,__ZNSt10bad_typeidD0Ev,__ZNSt10bad_typeidD1Ev,__ZNKSt10bad_typeid4whatEv,__ZNSt8bad_castC1Ev,__ZNSt10bad_typeidC1Ev;function assignWasmExports(wasmExports){Module["_param_get"]=_param_get=wasmExports["w"];Module["_param_set_used"]=_param_set_used=wasmExports["x"];Module["__Znwm"]=__Znwm=wasmExports["y"];Module["__ZdlPvm"]=__ZdlPvm=wasmExports["z"];_malloc=wasmExports["B"];Module["__ZNSt12length_errorD1Ev"]=__ZNSt12length_errorD1Ev=wasmExports["C"];Module["___cxa_allocate_exception"]=___cxa_allocate_exception=wasmExports["D"];Module["__ZNSt20bad_array_new_lengthD1Ev"]=__ZNSt20bad_array_new_lengthD1Ev=wasmExports["E"];Module["__ZNSt20bad_array_new_lengthC1Ev"]=__ZNSt20bad_array_new_lengthC1Ev=wasmExports["F"];Module["__ZNSt12out_of_rangeD1Ev"]=__ZNSt12out_of_rangeD1Ev=wasmExports["G"];Module["___cxa_pure_virtual"]=___cxa_pure_virtual=wasmExports["H"];___getTypeName=wasmExports["I"];Module["__ZNSt9exceptionD2Ev"]=__ZNSt9exceptionD2Ev=wasmExports["J"];Module["__emscripten_memcpy_bulkmem"]=__emscripten_memcpy_bulkmem=wasmExports["K"];Module["_emscripten_stack_get_end"]=_emscripten_stack_get_end=wasmExports["L"];Module["_emscripten_stack_get_base"]=_emscripten_stack_get_base=wasmExports["M"];_free=wasmExports["N"];Module["_emscripten_stack_init"]=_emscripten_stack_init=wasmExports["O"];Module["_emscripten_stack_set_limits"]=_emscripten_stack_set_limits=wasmExports["P"];Module["_emscripten_stack_get_free"]=_emscripten_stack_get_free=wasmExports["Q"];Module["__ZSt15get_new_handlerv"]=__ZSt15get_new_handlerv=wasmExports["R"];Module["__Znam"]=__Znam=wasmExports["S"];Module["__ZdlPv"]=__ZdlPv=wasmExports["T"];Module["__ZdaPv"]=__ZdaPv=wasmExports["U"];Module["__ZdaPvm"]=__ZdaPvm=wasmExports["V"];Module["__ZnwmSt11align_val_t"]=__ZnwmSt11align_val_t=wasmExports["W"];Module["__ZnamSt11align_val_t"]=__ZnamSt11align_val_t=wasmExports["X"];Module["__ZdlPvSt11align_val_t"]=__ZdlPvSt11align_val_t=wasmExports["Y"];Module["__ZdlPvmSt11align_val_t"]=__ZdlPvmSt11align_val_t=wasmExports["Z"];Module["__ZdaPvSt11align_val_t"]=__ZdaPvSt11align_val_t=wasmExports["_"];Module["__ZdaPvmSt11align_val_t"]=__ZdaPvmSt11align_val_t=wasmExports["$"];Module["__ZSt14set_unexpectedPFvvE"]=__ZSt14set_unexpectedPFvvE=wasmExports["aa"];Module["__ZSt13set_terminatePFvvE"]=__ZSt13set_terminatePFvvE=wasmExports["ba"];Module["__ZSt15set_new_handlerPFvvE"]=__ZSt15set_new_handlerPFvvE=wasmExports["ca"];Module["__ZSt14get_unexpectedv"]=__ZSt14get_unexpectedv=wasmExports["da"];Module["__ZSt10unexpectedv"]=__ZSt10unexpectedv=wasmExports["ea"];Module["__ZSt13get_terminatev"]=__ZSt13get_terminatev=wasmExports["fa"];Module["__ZSt9terminatev"]=__ZSt9terminatev=wasmExports["ga"];Module["___cxa_current_primary_exception"]=___cxa_current_primary_exception=wasmExports["ha"];Module["___cxa_rethrow_primary_exception"]=___cxa_rethrow_primary_exception=wasmExports["ia"];Module["___cxa_uncaught_exception"]=___cxa_uncaught_exception=wasmExports["ja"];Module["___cxa_uncaught_exceptions"]=___cxa_uncaught_exceptions=wasmExports["ka"];Module["___cxa_free_exception"]=___cxa_free_exception=wasmExports["la"];Module["___cxa_init_primary_exception"]=___cxa_init_primary_exception=wasmExports["ma"];Module["___cxa_deleted_virtual"]=___cxa_deleted_virtual=wasmExports["na"];Module["___dynamic_cast"]=___dynamic_cast=wasmExports["oa"];Module["__ZNSt9type_infoD2Ev"]=__ZNSt9type_infoD2Ev=wasmExports["pa"];Module["__ZNSt9exceptionD0Ev"]=__ZNSt9exceptionD0Ev=wasmExports["qa"];Module["__ZNSt9exceptionD1Ev"]=__ZNSt9exceptionD1Ev=wasmExports["ra"];Module["__ZNKSt9exception4whatEv"]=__ZNKSt9exception4whatEv=wasmExports["sa"];Module["__ZNSt13bad_exceptionD0Ev"]=__ZNSt13bad_exceptionD0Ev=wasmExports["ta"];Module["__ZNSt13bad_exceptionD1Ev"]=__ZNSt13bad_exceptionD1Ev=wasmExports["ua"];Module["__ZNKSt13bad_exception4whatEv"]=__ZNKSt13bad_exception4whatEv=wasmExports["va"];Module["__ZNSt9bad_allocC2Ev"]=__ZNSt9bad_allocC2Ev=wasmExports["wa"];Module["__ZNSt9bad_allocD0Ev"]=__ZNSt9bad_allocD0Ev=wasmExports["xa"];Module["__ZNSt9bad_allocD1Ev"]=__ZNSt9bad_allocD1Ev=wasmExports["ya"];Module["__ZNKSt9bad_alloc4whatEv"]=__ZNKSt9bad_alloc4whatEv=wasmExports["za"];Module["__ZNSt20bad_array_new_lengthC2Ev"]=__ZNSt20bad_array_new_lengthC2Ev=wasmExports["Aa"];Module["__ZNSt20bad_array_new_lengthD0Ev"]=__ZNSt20bad_array_new_lengthD0Ev=wasmExports["Ba"];Module["__ZNKSt20bad_array_new_length4whatEv"]=__ZNKSt20bad_array_new_length4whatEv=wasmExports["Ca"];Module["__ZNSt13bad_exceptionD2Ev"]=__ZNSt13bad_exceptionD2Ev=wasmExports["Da"];Module["__ZNSt9bad_allocC1Ev"]=__ZNSt9bad_allocC1Ev=wasmExports["Ea"];Module["__ZNSt9bad_allocD2Ev"]=__ZNSt9bad_allocD2Ev=wasmExports["Fa"];Module["__ZNSt20bad_array_new_lengthD2Ev"]=__ZNSt20bad_array_new_lengthD2Ev=wasmExports["Ga"];Module["__ZNSt11logic_errorD2Ev"]=__ZNSt11logic_errorD2Ev=wasmExports["Ha"];Module["__ZNSt11logic_errorD0Ev"]=__ZNSt11logic_errorD0Ev=wasmExports["Ia"];Module["__ZNSt11logic_errorD1Ev"]=__ZNSt11logic_errorD1Ev=wasmExports["Ja"];Module["__ZNKSt11logic_error4whatEv"]=__ZNKSt11logic_error4whatEv=wasmExports["Ka"];Module["__ZNSt13runtime_errorD2Ev"]=__ZNSt13runtime_errorD2Ev=wasmExports["La"];Module["__ZNSt13runtime_errorD0Ev"]=__ZNSt13runtime_errorD0Ev=wasmExports["Ma"];Module["__ZNSt13runtime_errorD1Ev"]=__ZNSt13runtime_errorD1Ev=wasmExports["Na"];Module["__ZNKSt13runtime_error4whatEv"]=__ZNKSt13runtime_error4whatEv=wasmExports["Oa"];Module["__ZNSt12domain_errorD0Ev"]=__ZNSt12domain_errorD0Ev=wasmExports["Pa"];Module["__ZNSt12domain_errorD1Ev"]=__ZNSt12domain_errorD1Ev=wasmExports["Qa"];Module["__ZNSt16invalid_argumentD0Ev"]=__ZNSt16invalid_argumentD0Ev=wasmExports["Ra"];Module["__ZNSt16invalid_argumentD1Ev"]=__ZNSt16invalid_argumentD1Ev=wasmExports["Sa"];Module["__ZNSt12length_errorD0Ev"]=__ZNSt12length_errorD0Ev=wasmExports["Ta"];Module["__ZNSt12out_of_rangeD0Ev"]=__ZNSt12out_of_rangeD0Ev=wasmExports["Ua"];Module["__ZNSt11range_errorD0Ev"]=__ZNSt11range_errorD0Ev=wasmExports["Va"];Module["__ZNSt11range_errorD1Ev"]=__ZNSt11range_errorD1Ev=wasmExports["Wa"];Module["__ZNSt14overflow_errorD0Ev"]=__ZNSt14overflow_errorD0Ev=wasmExports["Xa"];Module["__ZNSt14overflow_errorD1Ev"]=__ZNSt14overflow_errorD1Ev=wasmExports["Ya"];Module["__ZNSt15underflow_errorD0Ev"]=__ZNSt15underflow_errorD0Ev=wasmExports["Za"];Module["__ZNSt15underflow_errorD1Ev"]=__ZNSt15underflow_errorD1Ev=wasmExports["_a"];Module["__ZNSt12domain_errorD2Ev"]=__ZNSt12domain_errorD2Ev=wasmExports["$a"];Module["__ZNSt16invalid_argumentD2Ev"]=__ZNSt16invalid_argumentD2Ev=wasmExports["ab"];Module["__ZNSt12length_errorD2Ev"]=__ZNSt12length_errorD2Ev=wasmExports["bb"];Module["__ZNSt12out_of_rangeD2Ev"]=__ZNSt12out_of_rangeD2Ev=wasmExports["cb"];Module["__ZNSt11range_errorD2Ev"]=__ZNSt11range_errorD2Ev=wasmExports["db"];Module["__ZNSt14overflow_errorD2Ev"]=__ZNSt14overflow_errorD2Ev=wasmExports["eb"];Module["__ZNSt15underflow_errorD2Ev"]=__ZNSt15underflow_errorD2Ev=wasmExports["fb"];Module["__ZNSt9type_infoD0Ev"]=__ZNSt9type_infoD0Ev=wasmExports["gb"];Module["__ZNSt9type_infoD1Ev"]=__ZNSt9type_infoD1Ev=wasmExports["hb"];Module["__ZNSt8bad_castC2Ev"]=__ZNSt8bad_castC2Ev=wasmExports["ib"];Module["__ZNSt8bad_castD2Ev"]=__ZNSt8bad_castD2Ev=wasmExports["jb"];Module["__ZNSt8bad_castD0Ev"]=__ZNSt8bad_castD0Ev=wasmExports["kb"];Module["__ZNSt8bad_castD1Ev"]=__ZNSt8bad_castD1Ev=wasmExports["lb"];Module["__ZNKSt8bad_cast4whatEv"]=__ZNKSt8bad_cast4whatEv=wasmExports["mb"];Module["__ZNSt10bad_typeidC2Ev"]=__ZNSt10bad_typeidC2Ev=wasmExports["nb"];Module["__ZNSt10bad_typeidD2Ev"]=__ZNSt10bad_typeidD2Ev=wasmExports["ob"];Module["__ZNSt10bad_typeidD0Ev"]=__ZNSt10bad_typeidD0Ev=wasmExports["pb"];Module["__ZNSt10bad_typeidD1Ev"]=__ZNSt10bad_typeidD1Ev=wasmExports["qb"];Module["__ZNKSt10bad_typeid4whatEv"]=__ZNKSt10bad_typeid4whatEv=wasmExports["rb"];Module["__ZNSt8bad_castC1Ev"]=__ZNSt8bad_castC1Ev=wasmExports["sb"];Module["__ZNSt10bad_typeidC1Ev"]=__ZNSt10bad_typeidC1Ev=wasmExports["tb"]}var __ZTIPK16failsafe_flags_s=Module["__ZTIPK16failsafe_flags_s"]=47432;var __ZTIP16failsafe_flags_s=Module["__ZTIP16failsafe_flags_s"]=47416;var __ZTI16failsafe_flags_s=Module["__ZTI16failsafe_flags_s"]=47408;var __ZTIb=Module["__ZTIb"]=30292;var __ZTIh=Module["__ZTIh"]=30448;var __ZTIPKNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTIPKNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=47580;var __ZTIPNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTIPNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=47564;var __ZTINSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTINSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=47512;var __ZTISt12length_error=Module["__ZTISt12length_error"]=32392;var __ZTVSt12length_error=Module["__ZTVSt12length_error"]=32372;var __ZTISt20bad_array_new_length=Module["__ZTISt20bad_array_new_length"]=32156;var __ZTINSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE=Module["__ZTINSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE"]=47500;var __ZTISt12out_of_range=Module["__ZTISt12out_of_range"]=32444;var __ZTVSt12out_of_range=Module["__ZTVSt12out_of_range"]=32424;var __ZTVN10__cxxabiv120__si_class_type_infoE=Module["__ZTVN10__cxxabiv120__si_class_type_infoE"]=31724;var __ZTVN10__cxxabiv121__vmi_class_type_infoE=Module["__ZTVN10__cxxabiv121__vmi_class_type_infoE"]=31816;var __ZTVN10__cxxabiv117__class_type_infoE=Module["__ZTVN10__cxxabiv117__class_type_infoE"]=31684;var __ZTS16failsafe_flags_s=Module["__ZTS16failsafe_flags_s"]=28034;var __ZTVN10__cxxabiv119__pointer_type_infoE=Module["__ZTVN10__cxxabiv119__pointer_type_infoE"]=31936;var __ZTSP16failsafe_flags_s=Module["__ZTSP16failsafe_flags_s"]=28053;var __ZTSPK16failsafe_flags_s=Module["__ZTSPK16failsafe_flags_s"]=28073;var __ZTIi=Module["__ZTIi"]=30656;var __ZTSNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE=Module["__ZTSNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE"]=28122;var __ZTSNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTSNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=28189;var __ZTIv=Module["__ZTIv"]=30184;var __ZTIf=Module["__ZTIf"]=31128;var __ZTSPNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTSPNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=28287;var __ZTSPKNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE=Module["__ZTSPKNSt3__26vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEE"]=28374;var __ZTIm=Module["__ZTIm"]=30812;var __ZTIN10emscripten3valE=Module["__ZTIN10emscripten3valE"]=47652;var __ZTSN10emscripten3valE=Module["__ZTSN10emscripten3valE"]=28477;var __ZTIc=Module["__ZTIc"]=30396;var __ZTIa=Module["__ZTIa"]=30500;var __ZTIs=Module["__ZTIs"]=30552;var __ZTIt=Module["__ZTIt"]=30604;var __ZTIj=Module["__ZTIj"]=30708;var __ZTIl=Module["__ZTIl"]=30760;var __ZTIx=Module["__ZTIx"]=30864;var __ZTIy=Module["__ZTIy"]=30916;var __ZTId=Module["__ZTId"]=31180;var __ZTINSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE=Module["__ZTINSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE"]=28532;var __ZTINSt3__212basic_stringIDsNS_11char_traitsIDsEENS_9allocatorIDsEEEE=Module["__ZTINSt3__212basic_stringIDsNS_11char_traitsIDsEENS_9allocatorIDsEEEE"]=28604;var __ZTINSt3__212basic_stringIDiNS_11char_traitsIDiEENS_9allocatorIDiEEEE=Module["__ZTINSt3__212basic_stringIDiNS_11char_traitsIDiEENS_9allocatorIDiEEEE"]=28680;var __ZTIN10emscripten11memory_viewIcEE=Module["__ZTIN10emscripten11memory_viewIcEE"]=28756;var __ZTIN10emscripten11memory_viewIaEE=Module["__ZTIN10emscripten11memory_viewIaEE"]=28796;var __ZTIN10emscripten11memory_viewIhEE=Module["__ZTIN10emscripten11memory_viewIhEE"]=28836;var __ZTIN10emscripten11memory_viewIsEE=Module["__ZTIN10emscripten11memory_viewIsEE"]=28876;var __ZTIN10emscripten11memory_viewItEE=Module["__ZTIN10emscripten11memory_viewItEE"]=28916;var __ZTIN10emscripten11memory_viewIiEE=Module["__ZTIN10emscripten11memory_viewIiEE"]=28956;var __ZTIN10emscripten11memory_viewIjEE=Module["__ZTIN10emscripten11memory_viewIjEE"]=28996;var __ZTIN10emscripten11memory_viewIlEE=Module["__ZTIN10emscripten11memory_viewIlEE"]=29036;var __ZTIN10emscripten11memory_viewImEE=Module["__ZTIN10emscripten11memory_viewImEE"]=29076;var __ZTIN10emscripten11memory_viewIxEE=Module["__ZTIN10emscripten11memory_viewIxEE"]=29116;var __ZTIN10emscripten11memory_viewIyEE=Module["__ZTIN10emscripten11memory_viewIyEE"]=29156;var __ZTIN10emscripten11memory_viewIfEE=Module["__ZTIN10emscripten11memory_viewIfEE"]=29196;var __ZTIN10emscripten11memory_viewIdEE=Module["__ZTIN10emscripten11memory_viewIdEE"]=29236;var __ZTSNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE=Module["__ZTSNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE"]=28540;var __ZTSNSt3__212basic_stringIDsNS_11char_traitsIDsEENS_9allocatorIDsEEEE=Module["__ZTSNSt3__212basic_stringIDsNS_11char_traitsIDsEENS_9allocatorIDsEEEE"]=28612;var __ZTSNSt3__212basic_stringIDiNS_11char_traitsIDiEENS_9allocatorIDiEEEE=Module["__ZTSNSt3__212basic_stringIDiNS_11char_traitsIDiEENS_9allocatorIDiEEEE"]=28688;var __ZTSN10emscripten11memory_viewIcEE=Module["__ZTSN10emscripten11memory_viewIcEE"]=28764;var __ZTSN10emscripten11memory_viewIaEE=Module["__ZTSN10emscripten11memory_viewIaEE"]=28804;var __ZTSN10emscripten11memory_viewIhEE=Module["__ZTSN10emscripten11memory_viewIhEE"]=28844;var __ZTSN10emscripten11memory_viewIsEE=Module["__ZTSN10emscripten11memory_viewIsEE"]=28884;var __ZTSN10emscripten11memory_viewItEE=Module["__ZTSN10emscripten11memory_viewItEE"]=28924;var __ZTSN10emscripten11memory_viewIiEE=Module["__ZTSN10emscripten11memory_viewIiEE"]=28964;var __ZTSN10emscripten11memory_viewIjEE=Module["__ZTSN10emscripten11memory_viewIjEE"]=29004;var __ZTSN10emscripten11memory_viewIlEE=Module["__ZTSN10emscripten11memory_viewIlEE"]=29044;var __ZTSN10emscripten11memory_viewImEE=Module["__ZTSN10emscripten11memory_viewImEE"]=29084;var __ZTSN10emscripten11memory_viewIxEE=Module["__ZTSN10emscripten11memory_viewIxEE"]=29124;var __ZTSN10emscripten11memory_viewIyEE=Module["__ZTSN10emscripten11memory_viewIyEE"]=29164;var __ZTSN10emscripten11memory_viewIfEE=Module["__ZTSN10emscripten11memory_viewIfEE"]=29204;var __ZTSN10emscripten11memory_viewIdEE=Module["__ZTSN10emscripten11memory_viewIdEE"]=29244;var __ZTVSt11logic_error=Module["__ZTVSt11logic_error"]=32196;var __ZTVSt9exception=Module["__ZTVSt9exception"]=32032;var __ZTVSt13runtime_error=Module["__ZTVSt13runtime_error"]=32216;var __ZTISt9exception=Module["__ZTISt9exception"]=32052;var ___cxa_unexpected_handler=Module["___cxa_unexpected_handler"]=47880;var ___cxa_terminate_handler=Module["___cxa_terminate_handler"]=47876;var ___cxa_new_handler=Module["___cxa_new_handler"]=50124;var __ZTIN10__cxxabiv116__shim_type_infoE=Module["__ZTIN10__cxxabiv116__shim_type_infoE"]=29760;var __ZTIN10__cxxabiv117__class_type_infoE=Module["__ZTIN10__cxxabiv117__class_type_infoE"]=29808;var __ZTIN10__cxxabiv117__pbase_type_infoE=Module["__ZTIN10__cxxabiv117__pbase_type_infoE"]=29856;var __ZTIDn=Module["__ZTIDn"]=30236;var __ZTIN10__cxxabiv119__pointer_type_infoE=Module["__ZTIN10__cxxabiv119__pointer_type_infoE"]=29904;var __ZTIN10__cxxabiv120__function_type_infoE=Module["__ZTIN10__cxxabiv120__function_type_infoE"]=29952;var __ZTIN10__cxxabiv129__pointer_to_member_type_infoE=Module["__ZTIN10__cxxabiv129__pointer_to_member_type_infoE"]=30004;var __ZTISt9type_info=Module["__ZTISt9type_info"]=32716;var __ZTSN10__cxxabiv116__shim_type_infoE=Module["__ZTSN10__cxxabiv116__shim_type_infoE"]=29772;var __ZTSN10__cxxabiv117__class_type_infoE=Module["__ZTSN10__cxxabiv117__class_type_infoE"]=29820;var __ZTSN10__cxxabiv117__pbase_type_infoE=Module["__ZTSN10__cxxabiv117__pbase_type_infoE"]=29868;var __ZTSN10__cxxabiv119__pointer_type_infoE=Module["__ZTSN10__cxxabiv119__pointer_type_infoE"]=29916;var __ZTSN10__cxxabiv120__function_type_infoE=Module["__ZTSN10__cxxabiv120__function_type_infoE"]=29964;var __ZTSN10__cxxabiv129__pointer_to_member_type_infoE=Module["__ZTSN10__cxxabiv129__pointer_to_member_type_infoE"]=30016;var __ZTVN10__cxxabiv116__shim_type_infoE=Module["__ZTVN10__cxxabiv116__shim_type_infoE"]=30076;var __ZTVN10__cxxabiv123__fundamental_type_infoE=Module["__ZTVN10__cxxabiv123__fundamental_type_infoE"]=30104;var __ZTIN10__cxxabiv123__fundamental_type_infoE=Module["__ZTIN10__cxxabiv123__fundamental_type_infoE"]=30132;var __ZTSN10__cxxabiv123__fundamental_type_infoE=Module["__ZTSN10__cxxabiv123__fundamental_type_infoE"]=30144;var __ZTSv=Module["__ZTSv"]=30192;var __ZTIPv=Module["__ZTIPv"]=30196;var __ZTSPv=Module["__ZTSPv"]=30212;var __ZTIPKv=Module["__ZTIPKv"]=30216;var __ZTSPKv=Module["__ZTSPKv"]=30232;var __ZTSDn=Module["__ZTSDn"]=30244;var __ZTIPDn=Module["__ZTIPDn"]=30248;var __ZTSPDn=Module["__ZTSPDn"]=30264;var __ZTIPKDn=Module["__ZTIPKDn"]=30268;var __ZTSPKDn=Module["__ZTSPKDn"]=30284;var __ZTSb=Module["__ZTSb"]=30300;var __ZTIPb=Module["__ZTIPb"]=30304;var __ZTSPb=Module["__ZTSPb"]=30320;var __ZTIPKb=Module["__ZTIPKb"]=30324;var __ZTSPKb=Module["__ZTSPKb"]=30340;var __ZTIw=Module["__ZTIw"]=30344;var __ZTSw=Module["__ZTSw"]=30352;var __ZTIPw=Module["__ZTIPw"]=30356;var __ZTSPw=Module["__ZTSPw"]=30372;var __ZTIPKw=Module["__ZTIPKw"]=30376;var __ZTSPKw=Module["__ZTSPKw"]=30392;var __ZTSc=Module["__ZTSc"]=30404;var __ZTIPc=Module["__ZTIPc"]=30408;var __ZTSPc=Module["__ZTSPc"]=30424;var __ZTIPKc=Module["__ZTIPKc"]=30428;var __ZTSPKc=Module["__ZTSPKc"]=30444;var __ZTSh=Module["__ZTSh"]=30456;var __ZTIPh=Module["__ZTIPh"]=30460;var __ZTSPh=Module["__ZTSPh"]=30476;var __ZTIPKh=Module["__ZTIPKh"]=30480;var __ZTSPKh=Module["__ZTSPKh"]=30496;var __ZTSa=Module["__ZTSa"]=30508;var __ZTIPa=Module["__ZTIPa"]=30512;var __ZTSPa=Module["__ZTSPa"]=30528;var __ZTIPKa=Module["__ZTIPKa"]=30532;var __ZTSPKa=Module["__ZTSPKa"]=30548;var __ZTSs=Module["__ZTSs"]=30560;var __ZTIPs=Module["__ZTIPs"]=30564;var __ZTSPs=Module["__ZTSPs"]=30580;var __ZTIPKs=Module["__ZTIPKs"]=30584;var __ZTSPKs=Module["__ZTSPKs"]=30600;var __ZTSt=Module["__ZTSt"]=30612;var __ZTIPt=Module["__ZTIPt"]=30616;var __ZTSPt=Module["__ZTSPt"]=30632;var __ZTIPKt=Module["__ZTIPKt"]=30636;var __ZTSPKt=Module["__ZTSPKt"]=30652;var __ZTSi=Module["__ZTSi"]=30664;var __ZTIPi=Module["__ZTIPi"]=30668;var __ZTSPi=Module["__ZTSPi"]=30684;var __ZTIPKi=Module["__ZTIPKi"]=30688;var __ZTSPKi=Module["__ZTSPKi"]=30704;var __ZTSj=Module["__ZTSj"]=30716;var __ZTIPj=Module["__ZTIPj"]=30720;var __ZTSPj=Module["__ZTSPj"]=30736;var __ZTIPKj=Module["__ZTIPKj"]=30740;var __ZTSPKj=Module["__ZTSPKj"]=30756;var __ZTSl=Module["__ZTSl"]=30768;var __ZTIPl=Module["__ZTIPl"]=30772;var __ZTSPl=Module["__ZTSPl"]=30788;var __ZTIPKl=Module["__ZTIPKl"]=30792;var __ZTSPKl=Module["__ZTSPKl"]=30808;var __ZTSm=Module["__ZTSm"]=30820;var __ZTIPm=Module["__ZTIPm"]=30824;var __ZTSPm=Module["__ZTSPm"]=30840;var __ZTIPKm=Module["__ZTIPKm"]=30844;var __ZTSPKm=Module["__ZTSPKm"]=30860;var __ZTSx=Module["__ZTSx"]=30872;var __ZTIPx=Module["__ZTIPx"]=30876;var __ZTSPx=Module["__ZTSPx"]=30892;var __ZTIPKx=Module["__ZTIPKx"]=30896;var __ZTSPKx=Module["__ZTSPKx"]=30912;var __ZTSy=Module["__ZTSy"]=30924;var __ZTIPy=Module["__ZTIPy"]=30928;var __ZTSPy=Module["__ZTSPy"]=30944;var __ZTIPKy=Module["__ZTIPKy"]=30948;var __ZTSPKy=Module["__ZTSPKy"]=30964;var __ZTIn=Module["__ZTIn"]=30968;var __ZTSn=Module["__ZTSn"]=30976;var __ZTIPn=Module["__ZTIPn"]=30980;var __ZTSPn=Module["__ZTSPn"]=30996;var __ZTIPKn=Module["__ZTIPKn"]=31e3;var __ZTSPKn=Module["__ZTSPKn"]=31016;var __ZTIo=Module["__ZTIo"]=31020;var __ZTSo=Module["__ZTSo"]=31028;var __ZTIPo=Module["__ZTIPo"]=31032;var __ZTSPo=Module["__ZTSPo"]=31048;var __ZTIPKo=Module["__ZTIPKo"]=31052;var __ZTSPKo=Module["__ZTSPKo"]=31068;var __ZTIDh=Module["__ZTIDh"]=31072;var __ZTSDh=Module["__ZTSDh"]=31080;var __ZTIPDh=Module["__ZTIPDh"]=31084;var __ZTSPDh=Module["__ZTSPDh"]=31100;var __ZTIPKDh=Module["__ZTIPKDh"]=31104;var __ZTSPKDh=Module["__ZTSPKDh"]=31120;var __ZTSf=Module["__ZTSf"]=31136;var __ZTIPf=Module["__ZTIPf"]=31140;var __ZTSPf=Module["__ZTSPf"]=31156;var __ZTIPKf=Module["__ZTIPKf"]=31160;var __ZTSPKf=Module["__ZTSPKf"]=31176;var __ZTSd=Module["__ZTSd"]=31188;var __ZTIPd=Module["__ZTIPd"]=31192;var __ZTSPd=Module["__ZTSPd"]=31208;var __ZTIPKd=Module["__ZTIPKd"]=31212;var __ZTSPKd=Module["__ZTSPKd"]=31228;var __ZTIe=Module["__ZTIe"]=31232;var __ZTSe=Module["__ZTSe"]=31240;var __ZTIPe=Module["__ZTIPe"]=31244;var __ZTSPe=Module["__ZTSPe"]=31260;var __ZTIPKe=Module["__ZTIPKe"]=31264;var __ZTSPKe=Module["__ZTSPKe"]=31280;var __ZTIg=Module["__ZTIg"]=31284;var __ZTSg=Module["__ZTSg"]=31292;var __ZTIPg=Module["__ZTIPg"]=31296;var __ZTSPg=Module["__ZTSPg"]=31312;var __ZTIPKg=Module["__ZTIPKg"]=31316;var __ZTSPKg=Module["__ZTSPKg"]=31332;var __ZTIDu=Module["__ZTIDu"]=31336;var __ZTSDu=Module["__ZTSDu"]=31344;var __ZTIPDu=Module["__ZTIPDu"]=31348;var __ZTSPDu=Module["__ZTSPDu"]=31364;var __ZTIPKDu=Module["__ZTIPKDu"]=31368;var __ZTSPKDu=Module["__ZTSPKDu"]=31384;var __ZTIDs=Module["__ZTIDs"]=31392;var __ZTSDs=Module["__ZTSDs"]=31400;var __ZTIPDs=Module["__ZTIPDs"]=31404;var __ZTSPDs=Module["__ZTSPDs"]=31420;var __ZTIPKDs=Module["__ZTIPKDs"]=31424;var __ZTSPKDs=Module["__ZTSPKDs"]=31440;var __ZTIDi=Module["__ZTIDi"]=31448;var __ZTSDi=Module["__ZTSDi"]=31456;var __ZTIPDi=Module["__ZTIPDi"]=31460;var __ZTSPDi=Module["__ZTSPDi"]=31476;var __ZTIPKDi=Module["__ZTIPKDi"]=31480;var __ZTSPKDi=Module["__ZTSPKDi"]=31496;var __ZTVN10__cxxabiv117__array_type_infoE=Module["__ZTVN10__cxxabiv117__array_type_infoE"]=31504;var __ZTIN10__cxxabiv117__array_type_infoE=Module["__ZTIN10__cxxabiv117__array_type_infoE"]=31532;var __ZTSN10__cxxabiv117__array_type_infoE=Module["__ZTSN10__cxxabiv117__array_type_infoE"]=31544;var __ZTVN10__cxxabiv120__function_type_infoE=Module["__ZTVN10__cxxabiv120__function_type_infoE"]=31580;var __ZTVN10__cxxabiv116__enum_type_infoE=Module["__ZTVN10__cxxabiv116__enum_type_infoE"]=31608;var __ZTIN10__cxxabiv116__enum_type_infoE=Module["__ZTIN10__cxxabiv116__enum_type_infoE"]=31636;var __ZTSN10__cxxabiv116__enum_type_infoE=Module["__ZTSN10__cxxabiv116__enum_type_infoE"]=31648;var __ZTIN10__cxxabiv120__si_class_type_infoE=Module["__ZTIN10__cxxabiv120__si_class_type_infoE"]=31764;var __ZTSN10__cxxabiv120__si_class_type_infoE=Module["__ZTSN10__cxxabiv120__si_class_type_infoE"]=31776;var __ZTIN10__cxxabiv121__vmi_class_type_infoE=Module["__ZTIN10__cxxabiv121__vmi_class_type_infoE"]=31856;var __ZTSN10__cxxabiv121__vmi_class_type_infoE=Module["__ZTSN10__cxxabiv121__vmi_class_type_infoE"]=31868;var __ZTVN10__cxxabiv117__pbase_type_infoE=Module["__ZTVN10__cxxabiv117__pbase_type_infoE"]=31908;var __ZTVN10__cxxabiv129__pointer_to_member_type_infoE=Module["__ZTVN10__cxxabiv129__pointer_to_member_type_infoE"]=31964;var __ZTVSt9bad_alloc=Module["__ZTVSt9bad_alloc"]=31992;var __ZTVSt20bad_array_new_length=Module["__ZTVSt20bad_array_new_length"]=32012;var __ZTISt9bad_alloc=Module["__ZTISt9bad_alloc"]=32128;var __ZTSSt9exception=Module["__ZTSSt9exception"]=32060;var __ZTVSt13bad_exception=Module["__ZTVSt13bad_exception"]=32076;var __ZTISt13bad_exception=Module["__ZTISt13bad_exception"]=32096;var __ZTSSt13bad_exception=Module["__ZTSSt13bad_exception"]=32108;var __ZTSSt9bad_alloc=Module["__ZTSSt9bad_alloc"]=32140;var __ZTSSt20bad_array_new_length=Module["__ZTSSt20bad_array_new_length"]=32168;var __ZTISt11logic_error=Module["__ZTISt11logic_error"]=32288;var __ZTISt13runtime_error=Module["__ZTISt13runtime_error"]=32524;var __ZTVSt12domain_error=Module["__ZTVSt12domain_error"]=32236;var __ZTISt12domain_error=Module["__ZTISt12domain_error"]=32256;var __ZTSSt12domain_error=Module["__ZTSSt12domain_error"]=32268;var __ZTSSt11logic_error=Module["__ZTSSt11logic_error"]=32300;var __ZTVSt16invalid_argument=Module["__ZTVSt16invalid_argument"]=32316;var __ZTISt16invalid_argument=Module["__ZTISt16invalid_argument"]=32336;var __ZTSSt16invalid_argument=Module["__ZTSSt16invalid_argument"]=32348;var __ZTSSt12length_error=Module["__ZTSSt12length_error"]=32404;var __ZTSSt12out_of_range=Module["__ZTSSt12out_of_range"]=32456;var __ZTVSt11range_error=Module["__ZTVSt11range_error"]=32476;var __ZTISt11range_error=Module["__ZTISt11range_error"]=32496;var __ZTSSt11range_error=Module["__ZTSSt11range_error"]=32508;var __ZTSSt13runtime_error=Module["__ZTSSt13runtime_error"]=32536;var __ZTVSt14overflow_error=Module["__ZTVSt14overflow_error"]=32556;var __ZTISt14overflow_error=Module["__ZTISt14overflow_error"]=32576;var __ZTSSt14overflow_error=Module["__ZTSSt14overflow_error"]=32588;var __ZTVSt15underflow_error=Module["__ZTVSt15underflow_error"]=32608;var __ZTISt15underflow_error=Module["__ZTISt15underflow_error"]=32628;var __ZTSSt15underflow_error=Module["__ZTSSt15underflow_error"]=32640;var __ZTVSt8bad_cast=Module["__ZTVSt8bad_cast"]=32660;var __ZTVSt10bad_typeid=Module["__ZTVSt10bad_typeid"]=32680;var __ZTISt8bad_cast=Module["__ZTISt8bad_cast"]=32740;var __ZTISt10bad_typeid=Module["__ZTISt10bad_typeid"]=32764;var __ZTVSt9type_info=Module["__ZTVSt9type_info"]=32700;var __ZTSSt9type_info=Module["__ZTSSt9type_info"]=32724;var __ZTSSt8bad_cast=Module["__ZTSSt8bad_cast"]=32752;var __ZTSSt10bad_typeid=Module["__ZTSSt10bad_typeid"]=32776;var wasmImports={f:___cxa_throw,p:__abort_js,k:__embind_register_bigint,m:__embind_register_bool,l:__embind_register_class,h:__embind_register_class_constructor,e:__embind_register_class_function,a:__embind_register_class_property,r:__embind_register_emval,j:__embind_register_float,c:__embind_register_function,d:__embind_register_integer,b:__embind_register_memory_view,s:__embind_register_std_string,g:__embind_register_std_wstring,n:__embind_register_void,o:__emval_take_value,t:_emscripten_date_now,q:_emscripten_resize_heap,i:_fd_write};var wasmExports;createWasm();function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}function preInit(){if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}preInit();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"]=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(); diff --git a/docs/public/config/failsafe/index.wasm b/docs/public/config/failsafe/index.wasm index c76c7dbd3728ed155e216c03efa98567f71bbba1..6a5d0d87079bb2eb9b32eb9acf5c12b39e0bbb9d 100644 GIT binary patch literal 96677 zcmdSC4}4wMRp-0Ux%Wy}x>9_dx{3d#J@?ja(>5;7KPOEC^_DH!s%1-+WXH}c+$f2Y zSaR%GR@{V1V#N)`fj|u{Ov)>R84Bt2r8F=Z2=h{EN**ncDFND2`clR`GSdPXnuZJw z&?fKuTl<`I&y}58Vdj0_drhso|L?WeUTf{O*Is)cH+AUN$T=7NUbOPM=ty*gKkmBH zks}J~$6e>#b+LZS#Q5pbj{+o8#__L`rdSE$-4<7wkYi2Vb0oS)J={&jyWMrww2a#5 z&BChElSkZj{drgcK#A@W828*0dcRu`(pI}lbR_7nSCqY7zpf8^p?m6B!t-|J#mDn*q_*|}aZ-EMuf)y+mDq-}G{qwVg0jiOQa(I^^ok3`XX-2Q0Xt%xT0H%U`F z++eiR-5Om(c$eE0?dJDdep~K0qiBu$4^ccd!;kmkK!Aq+^; z5g$~1cFJ8JA5wHq(c7ooRD5^}N_(Hu?oisDQ?3>N@Ra+Z*eh*d%Kc!xQ5l<5Zcw2i z{ny78SmZXCPq;DN`Y^%v}X=Q~&2 zv|^P1Zd&nhbRznt=zoh={2~nXiD<>YjeaHichQP>t@wDf;-P3oYsC+)xPHad8!m0W z>C!jwzc;<h(8t0G-DEC zB|I4=u|E+_H=%2PVg0QuNscchd42r(DBj>*LP7ueXqvxIx#=XTZ}o0Vzw-~gL@`I$ zpZspDf5e&<-#WNHcJYyT19hLX#KE$Ks7;Q4n!*-%>bvoPyQ1X$vsS86QXq*b(-+k| zxwO|$=!n{`zoS1|SyN~MI0k!tYpvmuQrU_!4CkM*>Pus{Qb2?b)qJS~gfCjDmFg^j z;wp)&tt<>EsrcmJES36QO$dmlg-BoLr}oY$KH?+bfjYLWYD6W540_(!q_F?!@sjWn z5B7t;rDct&mN-yRe>1CPMfGUArUAi&`Y(iY-N@;A+Dt4mrYkxrQVDN`vDKs z)Eec|hNRr+PNHT^exodcqP$Q+euz^+IPJE%=_}Qe%7t;6v6l||(&qk>fAj$`0!T>( z@a_S)GNT96Oh%bBWi6>e(MW?u6aa3E$ITQAP=xs(_%d5pZ>|xbhFH0lhP1~ zuv!4qANfbX1OHMy1SF^hU-!$BF2+TTRnWd5VKO7AAn95kFHgs8ScO&UiQ#B@h8ml8 zvDdP8Mp79C1L-g$<`Wphe_?)MlPALDRRB`qK(3DgBL4)vn{FCT+L$P%6TZ2>ODGGJ z4h>jf2^>>sk#J~H1^IX87QxYUhF*~(oi+^YA}KKn2q}pL=qr;_=j=c?R136K5p7u` zhPRxy0v!a}su*oi$Y?8u75`v#%kEfB1X5`h8P36pF6NYm-*^tht z&qy{I(dPieWno%3BWN-{ff-!N=Z;zPUwoi6-H?O|T;44EhytamB4ywu^7!e4=OAMJKzCK>>GjAH`g!@~Zb=m9-^9P_;hUS$%wa?ogdEMy z_#c=S7nZ~|tCJF<75<1bK5TT`>To1wI~Wuam}`~|Dp(N!3@X2zuDTm#UlnxDub_$O z@QjxbdHv>9bIOH+gRp4=ec6b0sGmi|UvOAb24E!q5ZL8|(@;-S6`Ez_jx`>saa%c> zIR+qVjoVjM(O0J%-4u1`f{jYjZQLWtIGrGGz)(PrO-zLZ|0ImXKYH=VXy=b4ZWZaZ zS{J-qUtXJwq9ceAVGekO^74=-E{ViQ5kVz2vnOB)gjL=7g2 zALW2R&k_J&`q8{bLku!BT>FD_f*Nq5G}ElCaq))qKdnC{n?z(X6E3pv_D6t3g7gS$ zK$LWEMn*c~5`LAitcQ}IXLGa6P}ExD*1Dx?YOQ-e^s&}0KL|CLxP9YmD8-dtK15HFN`nJm?A)mhm2vLUs1=;#cD8vwIN2!fxS?`hJ?3dz)1U8AD@a-curaM0MA?0 zQAKMSC7z1Ykv*jn%mX8XyrP;B9&lf+!Nu7CPiF9(?11Ou4tTC?!}E>|9<{VSek6nE zkpevL2=IgwCo*_W7(9mQtAR%h83|`29q=5_;5ps_kMDqIOB^n{>VW5#HavR^@a$V3pUB`r!Or2?o5Mqi;~6~1+wklw z!gE&#Jo6bm^BwR=nP}59(m$i;I}7mKwLZQrMbC4t4bGi8I25=povl+U5cu@26dGvf zfk*-f($C0wES)Vj1~yxQ;a*$Ca^^Y~wV}BmS+C)szNxYGF*IL)>CHIBghhu(C zR3`otCfJgInCL3i$>$T#~R(1qt*ne?n4Xn!o8?wMy7Pu}8+?ECAqpho&^o8)Q zB~^MY&rQ>C`7Lqv3e*e>p&$TgSWM$|1ZeAJZ~7&ZtI2w6{CK?aKRx;6_x}*Yj=~m( z2tf%mZz-LK2i&-ViaZ!!K|-plgVQh?5g#kE2Ukbwmk~nBHI$}O?>Aqka;3mwVp!5yx0kzFeqVJ39i5qT~R*}p)jqWoo z)g#iDr>x@Af6G>CTR#Azna%m*_s5hfH!8FOKALK!84ptut$^9k^2aiVj!dr9FBBM~ z7}FWlbmYtVLRf52JvIRky{CRYsvry3G5~e&1WYpvRFksQG|hr(Hf404=WKiiHbW$) z38Dlk4f=8!0=g16)C8w}%n}0>@Y)?jYh7P|q%>14o6?G!noyDmqvbG<(q#H<4k1Z0 zoDEenLL)Vn4jPdv12r&{M=7bOd|W_NR>N6` zuVzRhs_C?;LhUO!(pE)(qaa}#afnSb;!canI@ZN^$W@T$oqHR`;q!ohhVPPXG zBNm1FQnLqpQ0?(8cbRy{Ld#_bu+VC4bS#vtkCPBuvp!xELKm)&FASlJ)}zN-xpnK~ zbs==w`uMUCx^jJdWe8opKE4{nZ=7ks^^9#k|xkZ!IJ(z$I|8pSa2igM{L%96Kq6N>@3^L87JIO9oAeK3;i7U>1Yg z)jm)`a0XjsHhQBB{9F`%mLdA#l6qJH z`uH&r=v`n{BsZ_7~HX6|UX4#E1C?p=4+c>nHgoWP0F>8N=7Bv1tNn3wPr)ATtQ}uS>@;n2+8qzPTzu@jd>3CJt^OL zolSYp@&!3VdCuwuIh*sGWI@hAo`Zq0qn|B#&YA@|Y|%_v1j7q*-ks;LnNC|1A0lcF z4r1GJwPg^ZfA%P}r9gSQ{$9klCC9@pELzw$+s2 zdzt|Btd$NKf!bhZtuiLLO5Ri$7*iCdvtjEd#;C+=unV zEUIe0x(y181dK-$RxS8^W|l_W+`(G}DOR-r75O<-pmqUN(fbZIrC*7dO{mE58Q_w* z2(S>sQU#zIYtn_$CbfD4^|VUErLaJ?ZRJbNfsHsm0@X)k$g{f zASSfT%vH3Xmt=^7r8L}(R+;GvNLFDyaSd(bQ0`I@~Q?DoSH|& z3Y}DD0}K^tyefKT$k2ES0Xvxu&l^nheJ=E#bc&UC^FEu3&Tnba`hod*Ra+v8$?12*l-B8I|*Ls1+VevNtCuitNr*L74 zWBxJMvfitzaat;2#d&=_f+d{#*cMP>5Gx>5oWr5?u&8O`!m1WQ%7uwBGR>uA^?lRL z5{Cl!+3_Spe82)CyW_`814q~b`eOvIZ);+U9fELWi&l|w)3RB|#x7<8VN%y|cwlEI>}blhbONY@ke(4R@yx+yTz^|Aj=Hb& zQYrD;=*nb+#X>meA4BqXRKluOf15~(zciq#U@84c;%$o2E)t{5UpP&)rh%n{)6i@t zPg#qYEf_ap$yYpW@;TtBAfJOULdjsp*sL&0O9|N5sKVhi2p3bt+g3@mkftRE>$qcS zd5#{m6sk>2w!;%y&;3&ncOX#3UQ7wBw1FYn@~>4N?lUdGmcz)OQj&$4W5(kXZ9I%= z%Kkzf#oPe`yr>ciP_sH-WolqdVuad@Y&`ARv6cPj0pr6)IFyi`g*n>BKv}G|hVgPt zbWkB?-!?ARXo;>$))fkiF>B!f*S2U5ctWQDYw8CrpRrRrnRFOLg|aqYlbCH>8=n9M zl~ls)#2Y|V$|I&Kr(6+XV1Y$sZmFXC(Q?XA@dikbLTFK9sVLAbY{Dod#$YO2mtF~* zrXMWCW_K7UUafbik+;QrY98E8Xz{8={Pr4WSYG{!S8bzoi<=QHt1Z3_Qr&SWs z1e6Gw>~gUgvN2*$46o{-AKjQ#h$&V)IQozved%=X463G%J~Hfyx>L>H&e*AjcLwbs zPtr}crYHC%ULZ>Sc4%-lqs;tvM3;uK05Q!h^xJV~^4lq&*#RR!3-XZLvh>*a@Y@N4l0Iq~ z%kqrwqz5kmsJzFB9?Q5$9=EB~Cn*zk?3AW$vxKoBOhfl8NsI1REiD4i$XE@JX&THC zgO1YuMmJKU`;1ZpwA%WbON}@~Y{SJHpyS~EgxFLt84+aHk3q!hV9oN1$OCM4P-IH>7c@C_fo0 zI8zE5ZY;{IGJpKgOVNV|dPC@oVQgw$f?uJA4aV?&V@s|jOh;l>^ZKd+BgOIhq8|#I z8-q)#>N~(M*3(4D>q{VIdl6BOWytHxG61IJmq^`XyxP~pfwtlU5D}9;VX+Z=v&l%a z2|;bt4f+A9(zMA6QUYzEWu!hn3s$1i;%E!i3pHFCSZdbOPn)*Dcurd-XsdKa+6tT? z+qao4Wy(pJHZ`xo8)h%bi3*>cbSaYV7rI=op_g89MKW=cn-*BJnMAEfv>a9>ZF{sL zVGPbT@EVs+wh&!n?QEDDv^p~b0=)6Aq}yWHib-62A3&Jit}t=DzYiU!=(}UtnBAcmgTjBi9u;{ ziJj+{KQblBARVENu@+H;#QH^+r(!Qh*mI-|iz(|DX`1I_%)_<2Ij53LWa*OiQAp?b zL$)i=X_b~WZ7xDqWLdNWK`DpDP6s4@{^)&n(&*3=lG3c7zxU{Uu&VvYDT}hPgsm(R zYTO`+*n-xckFnoH_t3qaA=0B~x&e4H0#o0=9x zs&bx^HNb|ObkDyT2H9jw!m0vN4thYX?h6|t)(rNe9H1$mp;22zQubCmEJM&8iDk`V znvF7-7hIuktb{~11($^%JZcp~@xV?TT18LDL(B8f>Z~b2f6yH`@6M_As+WAysUhx}OHPNQ4U%9eY`?H9? zf^pnVeyoF<9ns18doA15d92**1l+;dt6&Oi2loVbkeG=r|81@JY|EGjwllG>jiQB# zi3GJ~ncb~^YD23kz8A-x>H1z%58){NR-4A^v`pB`#Dle#^gapum%HWZo}P23xoHA& zl>M*JhXuM+zk>e7uuE$7H@n&cF)W&12Ur4GkBeWOr>Nw)Dq$Pl{A+6Jt zpL$fW-rmuV55GD6*RrPNKeDh(<8zUFl(nzgG`(b+N~r0CEC6#)UtbYQQ=W_xfIVppY6;yGulog-ApFYAr^TSJ&KRo{s68zEh597uy3 zN*2iPh?vMWNzR@~do_`V7AOm$1hLo$X^s79IkqW&RyQhP0wN{=P{rNs3y|1g0y%;g z&2}RnGn1%Ma6+Rd3ZO*E25hT3p@S3DBC5m;{Y%S3rn3YlvEppY6r*YyqAF$JZK~p} z-?x%=PVLk_8<{Kz8e3So8duR zQT9;x8mOCPZMlftWQyc6tO&VdCNb6&C7Qtmkp;zuaHv#ju<;9JRV&V`(4qMhz%pwj z-hpR*t+s_gu(i-8i+0s7M=X2R7bk^IXQGk653lEE_~+`c5AOMCLGL!#aAKjuxOUi> zn;x1a8;R{zvLVn(7#ASm6|^jsNyK1fk_;V^lG#!Ja<793s%yt1Nnqgeqqy*63+5U* zWWoMRSXgb5XNx%h>^DYBkACQ%_zK&2Bz=pRQf zFRmc|0SL?5xbNk(>O3hggsR^NnijSr2~*qD*?|pcFHcuI*(gCTTQ3hnV)!T0!+Z%4 zN?bThiO&C+vRL>1F#?gw+(*D_9nG@l6;M`2=>DGsm}j?r@>$6$bNd;8vaROHBKW15v5wKd160lmoo@G6vfNDKVz-oOW%lbG0tMxGgR_otp zStk@wt&bA0T0fU%JxIW6eVBmN`spm|xB{vrN`P!cGR&#}{Eu4j#5@z@pK)x^SaQ;- zeJ~3g&jQD?z+?APUTr**r97+@P2|T3{H5jn=Td#Or;+%c`0m);aZUQLaEnsY%>fLJ zL#_YMrQv4GbWj`@Wm|f zWEOZL3%r=2;Dszji2Z2bt(TRyK1BM&-2s7tTSy(4l&VR+ivVWs3 zTDWB4&s#XQ@JS1s#_gXYZ1ea`wZ2-4l8~mZq$L@$T?y7s5Q9SYGgU*j;yJP-A=}Cd z*)}K7RE6yOjshbh4p@X|4q{R7=3_&&_Vuh=oLVia-)9%s@3YqLv4#CUOTUP3O>oKE z#g&>rR$k0_kChiS-eYBr_ko4|9>Y*_D(m-@-SF^VgS5|%=dT5#J{z9DW<-5_VZUF4 zo}bG44OeIU{fip!{fis#{WjhYFYNbz#(OgB_hcCFr@Iz2-cNTe3eTVJ5}qGi*zc#g z!TU(oZ@Agxe_~PN{fWhm_a|(;A6?k*PcYsSS-&U3c)z)*`TgeN=J%U6zb6*<`%UKe zc-F67G^+V;EvnydEw0~hS-&4!*zdRKcRuSEJyHDo*+upH*~RtyS?l-X3;X>n{oa`^w`2)KL87@OMBH;s^&km zs9ry`xL!YGy*|FM*ALNalJ=_oSIvKYQ5gRE;xPPm!|=(4y?z}G*VA6LX{-68iyG_E z#f|l-jrECzy&h$(LAfc>B?}-|L)W0C9!>SI&lBJtgR4(k+82*X(@+&co=gS5LhxM* zJe}66k6Ey@Fr`%H#rLzgzu$t75PU0XnVsx-C8}bmkT&7Vys=U85xRx5_cppq8)ED) zoVsEf@oaJMo3e`qN%vOV?Y(P6!6;R=V}la5ZqyBoGPhx6#LVy4VQS-COZ&od{f%fG zesx0&epzp7SaJQtI3uganS&hctV4gJ&l&uGR$|?(HzL}pd)cw@UfH(Fit5)kk~3xj zj?H@pr6_9B436iFAjXD`y-1C@8N6=V#^i7qPK#xEMaw#CPSNa-r}4q#aS@#jU@^kv zuFefI9NNs(Y#ot>;f<3f3{a|1XDNd4a-){K)4&#c)fo;ZSLvt-lMWuc*y(iU0XB5t z9>6ru8L)49qjWM=bnM94(a(ChxX9YX0fo8el4>csekcI)LQ+f2WfDy>D@00tNN2Wc zjy-ueZovgZj)S_Th}#EkW3$VfQD2;ziX1Ak;%6tRI+HOgYuZ2d0-9!+)#)1MW%lGN zEUuy^job&c^KVK;v{6gainrZfM3$^Gzd$>g>NqV>?s(rM^Jr>~L{H7wc zECb&z+@j)gXcQ@p&8^BrDx*@^FPZ+}{vo>|Mfw`3(%EsY63+BA3!`j5%|aPHp8>6> zO;qUx#xXM~Hc>gLQ3kUn=1zINnpvgJHGMhoGRDj+mV>-zNzNI;xT-rJBH%Pm1*z!W zw(pYPA%~n{irP=JV4nz+6Wky`NQ!(+nq*;ufYSnG$dmMG7Me<3Jb-ew3^B#0S)6gA zY5~kb7mw7RAJa+UX%?rW)KK0I={W~AbBB&nV~}iH6j6LZO<72~Ru`lQq&wOkv^!F%?{_AtoI-{L6@m`4dMkBpUIP zjT35vN85A)Sf|lR`WDNppc8ZEIGs*t{ET!$IvaiofKECoPIU$_Y?U%KvLo~6hWfKN zmvmtuyv4%dZssvq^2jSDXRgV`n=oq$YmMyqiQRfdPMXIc!d6EeQ8-8^Qyc}dNVK;d{opMzwyq?juRwK6RhjZLnG17yGy9 zDB~mISm9jfJbD2|erzDoak2|0&_w`>|Jyp~=Z|o5{~3Hv^dNwWnJbSt{#|559Mb|7 zv981Zq+-}xC4(`FZy^6t7mNZzV1rR~gf2>xf@LuJ|#++4MJG5VLlA)+Lb)xo6C}^p&&LxmT=pac5R~ ze4n}p3n_0axp$~XY~E)A=(6|~o4&j=>-47IQc~U8fv939w)lHo1RmFMJm!1ko=vZ% z4LqYGf`9TO|Ng%^-6(<9i1zNoXP!_c9J?QqzG^&*mEOG56WYSK2-j2^_^qnVUa5?n z8+`D!@wrFhdr)n;@5&)Ax)$Q#YL>+}Pd8r6&xO;CrP=%eKyc}e8WOzeG5?`=OM)kT z(+#fdhyRkOSy}5`vqv5?N=ka<5rS1uYlB_If(qWKGloi|2OjTP>l7!qhg^wuV8E1=wee=9`bMu4i70eKs=7H1Co!>AJ6bU)AA8BxipG4q6 z(+EZnRZ1Dif(%RTUm2Wid0iLHTS?- z&EV8&zEFtHDqFMf74HS>CMhMeKGz!Opnx(QMlLaPZa;3uLP8Yk2D~t|bNP3U-2*XM z%RzKtI@T*PIM)FgDH4foM}>09IWx50i!5>sOs#kMtEcPlZc<=Nf3MEWuSNkDm4I&RKf;;_-ed{xvVt$*~GD6HtQmRivMSPoQ8(`C6W!Hm89Qa zwQt&g=5M2E(L2*R6)Plk5NhZ+2IW0{W|OT>N)dV=oSU34Gx>(ZvX)pV)Y zbZ8PE*kq|T-J;2a=YF;@7EwLsgcMm7=Mo2n7ky!8kW{m}GCaqaP;3Yhcm!YqgyhaV6G`4Nx{dHH?Jp z=HJqW=&8H!9QK;Y@-dK7o3X8YiV|2vRT}4W>ln#oE^0RW78+gEtTu6G*{rsW5=AH= z_2ick)vKDdW~JGmnic9n)c3=B+P&085uqyNi|`NSqNHxa=w&l0!nV?m(pZEXOR2eb z_9L3OM20U;hij*N2l|m-jeeC^>$2&w_R+Orzdvn{=jzm@l@k;ygy@DqE4)-8z@wz5 z_xL3An7$s?qX;A+aMGYw7uUbUZm5gi4WqnB4W76)+AZP%5fGG^H9^)S2>YbBexcEr z^yWTf*YY1QA1b^xOyyW7@t;&`EZWqP4qzsnCbzsD5)JqBT73&M&#JM6MVq1+!5m8< zL)I-$?nd)KB9=2o^ZmNMtCD@8ce3f7%f8Zz8hROvALJxZ23^ShefKPI@%PQBBog{R0`29S(YpTU1*~r4NuRq(4&M1EIKPhhgK-9nBkCVK_y_4M3;<+ z9XZ|F)}vJ5*tqpng zGG)byL{$kn!JQ{YfH@wwN_(o~OR<5Vp3P^007^HzMXNA3lkOOy+1IT^Kc<)-Skhxl zv4Jbc;}QVsHW_e~HY9)p9T^zfQfhSqa`nzWM6fW6vY~6+NE^I3U>4(mXI=-TZUEIB z%7KRQsG(qa2X+R|MA4H93K3fU^yHZ~jLOZ?5~qbU@K7jii;1jBj1`&^MXCN-Fdh08 zjs;VS+QJw`BapoLNBtasANc#o|N4@8pMR0Sao#9{YnJ&_FGT*Q@vFu%fX$%JfyaN3 z{ErtCK1{;>O3-CI3Vet7V{C}v!F%9jB|Y*Fk^hvE^pI|egl9!1Fo*nhXL-s7M9FOh%zGZCT3{wvt^f7Ms-^7nlm)!pCU zPw**%W&fap&wf3szs7&~8yfbve>5mdF`MH4II-oj`+7FOBcTw?V4aSChc7wtYwn7vIs6m}^3?TR6+ ziVxS%TJf`miXp6upFVrV-z`)OVO9M4*+G4xP%(s6@t@D$hajUh#8K_#cjbqn!klz!<#6@UEPv-bGMg&sp#6;GTU)ITXy3}ID#{$JBp<)QD;!mD^jDJ?B7{aRfM`y42 zl|sc3R>i+Md&NI5R19HN{MX2Egz)!buiMbXgWsV;{)OdnRmbx9xs#EtkE>Z9 zRTlk;#HM(NqMppQD*vk8- zD0~zZsCnkXZ^#P&Za>I4Md4!a_N+v9j2D*fz-SZ^-^xo8leV1S5_;+b;Y3ZDzu2=N^YJY6 z&FSR^-T*;OvK^N;F*>)TH@AhohagZRztC5EeMb+c-9u8TC(m8bRaQ!wpR$HNTjMq- zUqRcDUf8l*823F-cih4Vceub*faS;`_A!P9wPg9=s)1Zpu>zlPQz4)?E=^?SSZRZ*uCuu8Zqx zX86_~NPA*s*`sJHQ?1eF>q={?frj6RW#vb+qda(J_k=?X8!Y+m=o(FcVfE53SL+2L z;kv%E_ID9yRPly*L;9pMJJ8hAUF8Kjd-i5Y+i)I+v)1tz;E_0>KeD;eRibJV%bmNh z4KJ|`=SxBuhs;Q-^0o~(x`X+au}xDoA%Ul(Aj^{Od$7@M@5Swe5aJ~{Y`_gL3+gV2 zO5?^MiZ(2zShpr^x2Ed_`bWWlc`l@~J7?&^jH_Q!TdwJg>gQ_*tK%hYa7Dniuf^ab zSS|D(tv2esGHLf~r`bB|EMqOEj_$)ERod6=fO?tbFj4hT{O{RQ@%rr%Ob{sWbF!)t zVn0hSp<#VvOMXz)>6>o$5*o(J6Pq0Yt7uPBTSXeP(Q%EJvD${8pY}E0N&v0Kb>40; z%5eCpu1qR`2Pv`3zarQM%%dZ`-hu&5?xYY;)7}aV$vx!3iHX#Vw zTIT^2QGhP8+TB#bx@;Ni7%@&iN+Uw2&eedy*J4=t44yjfHQe#y2_bnKu+7G}Sp%1m z-RFcn=|KXyOWqD$LA)tXo&d~%Nr~##CJO*h-`gWX9>Q3~sb+#_gR_HkoB{B2?7<%| zG6|DZXXuKS@ys)hyc(A+&I*zq-qy>Y>Pn%)>nVi_DTXlOEDzIUDwHmI#fzZ9*TiWe zxG1ViR&v2${1_AMPO0WpH)3={RW2PfatGC2+u9nNU-33~y=5BGch6#&!T7BHI$@~x zTkYG%Wmv&(q*SgPrFf7I;dY1*`4q!>2NH>Ca%cuv@^bE zVo7iY1B|dv-#(0AVxL&n&Bz31FwY}lWu=D^?0quOCsBo+loMRJ9B7PKG{v(~TPjGl zU_j<-zrB7AZw7N64^h}hl+O4B08Mj@T)zduz^IlG<@ktOw@VnJi6_rVf$yDxz@c=+ zu@-z2HaRGaNXu{dE`fle9N#D?LMBK{F(Yb=16gTxiY{c}!9%}dOqihv4Gncd!))r9 zgo6U6^mLfe3u_O{j0#pV&ed6jKni$YT5>R^0~WMJ-aygniN`K;CijTfG{LpTg0)!I zRp>90YmlZ(kL3V90LH9|x?vqyUm7M9vV6MU4}GasMg}1A1h6)BR!ayCfGV^gvM3qF zBm6&E=`eKDxdfQ_MvgPt+FH@t3aLmeELbwjCjE^5NBd(Ve3Si5I%@Rh_ngc zKu;y45kAsP(=SS=uo;oT8DmW^*$1KzQz)6CnH0a#@LOU%>8TJ{H0VX#TCrr)}EXU`)=h$W-++`GLL^oG~~aefHj+h0x|0!QVGe$5fC2<@f7%y3o!mqtbB=+NUAO=!-zXDwt71r{AXmT(Vt9f+H zln;qAZjF(nF&lK4FEAwq!^Q_^sx^Vo0=7-24c9~jy$LamqDR0n06;>CcXacYD?LC z)QK}v{lQJ6@7CJaqWpOZEf`T~5b~ozEIn$F1yRjykp3e9Z)q?ozlecsZ86^B!Dc&} z>EJCrf!gLRgpFn$5SVCFz!MX#wy4m(EhzQ6?A?q6+GZvKo#T70a#|v!@1fBdN4U}kXa!kEuXqZ23dyC2EJnNzbDTR{?80b~>^ zRl^})8C1ULLIB3>>^OC1W+JOA;ev6Uxoh&= zi(rR!U`b!evr{pfkgk&%SDgl(tk<`e zJ+h(O6aolv*J}S~TSS!FA_7$d5n*eCL#Pv#h~OlfA)1I_$&r9Qi-@SC%P(qJu6O3k zZzdvO-NN#li3l)rx`@C-Ov&Y?6^JL-I+^;mw5LRRtc=KhvV?{a1ca$TTDD^dzrf;| zq|TSOz~Uxc`C~MtNwY;=;yXAwlOv`V3OFJbe``%IE#z+spfyOWs5OXuT3Dtfj|nRC}I&Q z6zQJmE71Mv>pM--mFS*%5Z!B>THgh{U2YQH7nF%b(fz_zUI+BqDlb}12RJsde9^nW6nywUfELaiXhhJ?oyKE`{@4@R92k#?ocuhDNyLIB1 z>wHp5$_1rF_KBiWf_*~xHDg1n@RxImgXzNXD}gG}V)#YkrT8^@1EViRw_1$E`Tr2a ziWtj7E=n61Ob={FxDrCltVkAJX;l6 zwe$)`wIt~)<7imXqr~Nlt|UlG{vT3!aY7;> zT-_TdHi2K8X{YzsZ8HrZl9Yjc+mdYg*-mQ!)P-#;g$_$*El0kb0?9qLIwK^g zhSF{d;3;%y;71fLT?#u>PPU|TRH1%8M;-jURlZf_!aIo=uCpgbbS2B47%3qlk^g3s zPTX*_qK}P8NTptTv2b3>jNB!*;fceyh*5*aWqKneSli8BU>B_Qj>{30C0mT`6;e$R zW5e7iCyd(f1e1O^f=NJDcnnGOVQ;O;f`EL&m`z^7()!8=GC?mBnoTK@Ns&5C;u^RVJZ_iR%Jxpq@i-t@*T_L~crAt-e(GLp#VhoyhhrAeuRR=-_j{jR(<&F=jlrkt zRrRZfV;0e`Jsgwwdo1m@@NP^wyc@IV@#^82Mf7VA$K?G!koH@6H>T`Q>79*5_p66v z7SXRg9FzBZJngseZVbnzuc}`?9J7di?ctcb-w&t#7T%31`;)J#Up*YNh<@$in7rQy z(|!x@#+1Fi8?$IU>*1J1^lJ~t=JETUg~I41A+V`;yIcVpn+S2bQe9J7di?ctcb-;byLw%?6`ef4h4qKB)8 zV;0e^JsgvF`*7NA``sA0_f>VPhhrAetvwu*cl$`%ZTsCAnD^fPg@OEMPypKJX{7W@mW5!2?kFBHVVc|mGOS<^* zZ;UdiTcG_|Cgc+_AKSebyY#}rqfC7Gay7cW10bvEeE4EJCMGsN)OVc6^Ga}egV{eJ z9GQG|d6VY&Vgv26o7FijyR)_KT>91l5oT3BOsf>0sbJ1gvpLol5PCF~&&R#H!Fi|h zlct>~bNwZ6q^SXP>tKh1NpITFg-I7*Z?v|q&fB`IqpfwPw{^)G+q$yd)=1vgrjE8Y zoZi;J8Qa>@ZtJ~yTaz7ajh)`s_!-;U)oyEF-qwvBZC!VITi2hlty|h{-IcdB*U{E( zr?`YxB|R%^ig_&d}a5<9K5F6K)MP+N<`{VE=yN-x# zL&mWITRq4r5T@vi5?8s3$Tl3hlfcDp|4V&b-dV{;AF|{!ahJGI|FPvSoruTS-5I&w z%eOIov~?CY1w6=nr6HQf4?(mGx3GN@9PmiAm7{&=UA)klNSjrC`dF`WtabOs&1%1@ zm1ptUGX@EXJO?6D#gCr{AowJ*5fMfulzsKk?Mb`#4^~Q{|HbFGlY__7LA6(5H8? zKEStn)tr&iL^INrEBIAIhx2Vam*FhM9LvbeIXy1oUNBEZbaRC)23;}t8WL`}2O*>7 zh21&Ol^T(*#I=)`STcvR`n+O0xopWGUhXyRSBYr{&jPr`4|uuhT*& zpSq&-V64LePLK%I-tHjMl7B7Yn{n!~GJxp`boin^p5nj#r>_2XkEaNB79I}4Vq?t0 zQZO7?5JSL)NqjiaD}2I*E&Qx{aAJfZe3uRh+W%=tkCw1|ozq=$T@Xw+Uu;`KxiU92 z33fM1{@n1nOudJ}L6&YM_7dzT$VJ!Ke7GQ=E}hS>bz1>KlM`4FQ(I?W$E>d|NV5WM z)&Nh>tq3Z$OK)nE=Ec7~jM2u1Uo{h@r^6YFENIX%GbzGS96C0iD~^Q088nS84FGYk z)*E9g#t)QirO(BqVFpJg38;aU*#9!lfs4@y z5ZPi}{L1)--C-iYhD#-gRRlEQzfD_;zyi1w9_0Exf)Ik_RSYDaE;|Cqham$CA}v!C z+0ade_*)5G3LOJlNlNo0(Rg}^@ocrkr;Zc(Au-Y*+W*lhgqRZtWqu^q8wL8vtN(xn z89>?ps09JP?0>9_0{n6yQq~ywN{-}Wn!q@$A05U@LNkN@4}&ZhYxBfkeHG^)0nY;a zc&WYqWN=XuBy(&hG?&WY7zBfA#~=G&KsNZ7?!Yw?B7?Kg)(@XNiN{5ji5RbJYo&RHLE!gd$FUDQu8sp?j0cw$-(N@{HuC7v7SC{LG_+$U$!&LS^Tc07Ba#)g~ zGJB?qPu1`lTn&_G;UFkcndZO_s&oj?D1vxN$CFahlX0NA&*Odz(2E`ygObm)v5m>K zC+QG0O>nIr0{#1lH$k)_;3>jtW7GI}saf^KILwpn+%iq zf@IUeHrv7|pFNsZM_j=`ROFMW8Ox-0DJ;m*HhD#^bvr`)|2>s`PkayAmlCedyxJsS zO?M;sDyFezLMzBUskjm-kd{KPAoVnSF`J1wIKcTYol(x=!e)AWjQoF&$_!;^ z7|K7K300?wZ(%Iwseei3oD09)# z5(Wym30SqBm7;aSup8EwS3qw*$_&3oexi}5PD3;BZx8VQT?+rnPWU?(!}-3`MVVyj z%sC|&M<%wU7l*Yiz-ZIV>S@#bg@yeaF|l=eF>dy0^CaaZzDKI)M@y+HTH6>@QT?W> zXf6FvLeh8FwL$WYhB18eOq9^cG(BMn7So6X8UOdHdqyhK2Q5Uje^j6Ygyth9Y!S4# zO&)J+(Y1K4Ef<|yPK6~VnyPEv7ZE&?v`}?F6dw zX<(&nc4qagtF4|%dWEIzjKa;tt>nR?902L$&J68AxN7LdMIwlf zvX%&VFk$_kfOp+q|bdhl7)?D)=;62f7hON z;bLL?+JpHs#%M6X3o1^%ptve4AZa)AGGkE-{wHXT0wZdKD=xbFfMvuqO9L!*%8rBo zQ*ayWasJ+WnIczPDHptX3*-9PqrLlY_SfGI>UeM~x(Bk4Kbe$1IgotdK9o4O^c=R{ zy8OC^ZNWnvGQ1(O>t<`B+8171=5Fad(OsDX9k0sQ^=K3RGjh)2n!r_#cN}FAQzBE? z&kur`$F{T?ulg$+tSbs)I@Zs+@PkoWu_XK~4?lH?Lzii(?BCDtm0U=~%*O!8e@s}4 ztcw2*v&2p71|PaI46)Tn=k9&(@41aPd5!L7%BaR&pU?u%Sn2pYEQdsyT67L0Bg;Um-N(ChN?0aN% z&zH>#fb)5?0C@PSWC8G#8Q>=~z{B?@+5Tsc^GUQ6a?&~)NPFSyK^aJo1du3YAZd|v zd8rfGNKe>EvyZRUeD?J<;O0AS1-SW`TY&qwEKq>^cm}umQHjvPS1t>1^8vUv+#L<1 zz1Y{Z0xIVN+>|Q79bmC2GU;a>r?@5^D?S=N)_M^u-Lbx0^GqTh~yM*z{}u%x&!X7W^n)c zLbxBv;5I)W!5u#7S%CX1MYuZ}(3b#>)=xw!>6+J0%~PrXcUI~+FN_(12Ok@fQ@8;y zgZtSIxc?@D`>z+mJ)gmCelvnQd`Ywb_cw}gcQl~y9va-YrC^&EOwCiM0CraBx)kc* zvqEYLHNa(1f2RZLf6Ac#$AwUjr9=|GUj)$M>!k&tUn~OMQD2{UG@v)6K!>jpQKkTM zR%Trav-yCKn1T#s8OZ6^P*VxWwr<8n zaXp1NeBFmK1&FgUEJ&ga+&HoiVAk?4U?vjX_|V!qk}jRRn2Daj%V0V?N)@4W?Foy7 zz3l3Lm(xI7I;4ECTB6{+Gg_@5DHK{MSSOO;4zheYUoe*QfmT~w(uL-3En+%ySy@I`nIt{ov?$A1eC)1fPkc}MCB<~p)0f%@^qblT`cnHq zQ;#R~PTHad=1~d+!3CO}dkQK7Mm|8Pu*PeI0Ze`VH6W^4(uF!(pj|jcI+`mQ+KsJs zD;p*M=)Ib$W`)r_X2GPQ7e3PU7K0Q*`vwOwNef!2SO;1&FJ7&?y}lL zQI5&7kPPsE#Id7H>V#GcI70TF4?cE4zNNFNvbSxBLsuw#+Q;+D$8YSovSgwGnArs+ z!mJ3`K0;2M7)3ASsu){@(Bm4@!?moudK?#vU6;fdq|Cg1F~kgrV7->A;t1 zPY2t^RvS%1jUmZ!mwuNyAnA0P4-~(AX)n|MnX+9AQ~gDwgE1NYY?jZ05adNCLe!I? zBMJ;-49F{4Faq9J`rduae+fQ({KdUxRP?1);xaQBfl;9>@YZ_e!C0aW6HJ$-sLR;K zM+j3pj0x<+qd{1_l^Pg|L++Bd19uK~d6R-CcP~o1!zpIKzYOG@G_@aX7W)IUcs=K} zISI!7Rtgp*o(IXnRn zLC9cad6VK7KCy1bEfr)Kogk+xRg;IRK&dK3!izAd@|=i^F4AG>87LbDl2pUMIIdy9 zI-)g5PNnU^Fd9?b9tsYqR*rxHlp>A?0i0z)g`0NaMXwl?ii@ZL)LufEF*Suv$IxG5 z+0|17yd2-L^r|tSl(=9hRRJzI73ouQfRb7epq3GpR$jnYXH&w6s+gHATjI01rf&eS z{Q3~~v6nzv5N}pp3*+p2gOu7s6glynJG%S1mO1>73 zbS|N7T;<*w%$K-ug;fQqEfXOI)b&`aWJT1)QxE~h`M+L6(?$2yu)eV$nl0-eI4$Xw zZw)pYGTH*&=H#(qW(_uu+CKAM4!8{y3|L$i+z{k=A5K3ed{XwW?}6+%5tKq93%rDn zN}y0UM2zTGwfAT`P%X$ozyO)8`L&CMVVlM?bk$aq+C!=>KXZ**?N_3(1j9^nCq5!f zNO0Fz@{$w77B}0kkzj^(O9gFhe1k$E8#a*b5B|^+j@%Qn$rG~0Bp_Q%MK6G#;Tu{i z;G38}>K#xmvJr;uMK4Y+XY^j1jxcAqZl@rhT0~{9Va5IEacVk+zG#oU)t2ySQ48^5 z#`>ErC&X*Z7;{=)KLR#2|Awk+fnJ`VeVg?)=1Uh8m5AxqtxYyrBT4jDMi~XI*UZPE z1NBS&-_7dtC>cOD1Ez7`>TCnT&)WE^W<$z+dYjMQtjjJB`Uk@PIDeiH8l`CQ?jX`i z5(V6Hg;kj-e5Qa**Zh6y#ur}J{#8TPGeqgFmHPKtUoY6_;o}Yd+3=!Xu`k}vd*!~! zEcEq^)usziDD+jU{lyFMa)7GVe&?C!`l-3OJ+pVVZr^{)o~eCvx7_IlXJ-%0UX^S= zklZx8XHRm|)ZTrErf%AkOx-ZI_rU&S?~Ql3wQoz3WZkZHcevXQ9NMeo*3=C*+&(*X z!=0^t2j1syzTr^oh6DTe@3AT*9h!5uPVK*aYM+wlW)JLZ9ol>IexjCj;HI0dKQJ|W z;~6s#&E0s_Ro73EIYleC?^ne=HztQ}IWSv@?%hA<4(*w9H}j9*)@@U>Q@6GbPwl&X zPwS?A2c|6N45_zMas6ejkbV21JvW9jhg=wK>(Jb+JIpW+%sS6t4o}VP-G6gJ!P#VP zYG%)Y!+U1k#(jIHW|e&7o_$kyUX*M(uM*#Qx_;lDi;}5*vwNm)yffLm zzm3oXp^g2CwUUqQhFhj)-Ay;P_TGB^)V`_xHwdQL1Gl+rre^oM92l|r+74(^S+i$y3IbiwL1I%qp8Mn{war>tZ@4b1dn34@9D{*)Z;=O6_ z9U%C9bl*C3=b^bhx8@Dd;tjKK#0}7PR)w@Zhi(9kpy}p3b^C$+d%#8*7EIHc-E-^I zUJb4_xA)dP?#2VRLpg2}Rrl<_(Tz;;N0j9bAJ}`No7#W#?fa%?TZi}TJ8;9^xjS2X z_e1Pt5T)x^NY1%6D}D360}xs3wDemJ+`8xVRDj((cl(Wd7IcQ#=uFOubnedE_5f3n z_9o`0uHUu1HZMdhgWa7g{n90+k5jZb2cBXeS2@+JJ%AQ?YWUGCjZ8TY5BO} zwF5V}ZDSi-TSiAVwYK?Pt!v%H@HRr5Tcblm6N8f^jEoJoHjhmZ8r(W`No#OtYiu-+ z4R6~~jH+D79hn@Qm~2f9ZqE{|^7!`6#p0twS!w#%IjmOI+r;+qG&Hg)3k`UMtdWV` z+b0dgP9*cuQ;e+VppK`n#(={+-vl zjlMNLIypN2j@DQ^a%C}cMKQ9z7`eO{xvUtuv>3Uh7`eD3(h*zNk!7)o!Liopj>)ms z7Jw%_GP+s8@zK_9e@$y*a(Ls`)}|DPn;HBdNF&}Jly66_Y!xC`6eH`4k;{vb%Ziap zi;+u;k&8Pb9kF#CSr%JBj=SB?$=1*{txdy2lUv4H6Rq7HRGG#ys!XF9Rql2Rs4~sZ zs4|VFRJmK2nb_IdIB`X5a{N8?l*QLCh+n=Se%XTfr3>PhEQnvcAige*Z`;`N8=1br zU1Q8)80dhJa6Xcaeq@j=qut%RJ9&8*rBdEagJQ8XD4H)6*qMfnD-^L7`5o|+m$r7c z2Dgn(TI7;qgdjeg8;Okgr{xkM#M_|8p1omr3V83<*_G?FAzjg%nYe!(eb_9ki zL^@(HTp`P1*=$Yh7}JF9c95x`Z27UV5hjMI%)&ON37ff)xnq|`ylK-!YwKXU)pxXf zI|4tpBk*H80zbAR@MAjyKei+AV><#rwj*$0A<_|p0}ELe%hrHRgCpc+^c7;3CuVDB zisA~H480?|Ig4)00@en?ezc?9&cTslTnt-iRm)W&3jc=K_~b~-2s%U;h>~3$k|T{} zk|T{~l4I9G$&uz~k|T|#k|T`;R?Vy0gzs{;E{?-|S?Cgif!lVaB(u$LZ}}a&3X*xO z9f9845$L@gf!^B@=)E0*-rEuAy&Zwx+YuSuS?FdxdjzGoj2vppTK*j9{RNRh0#q9`mTZnYTpxZ*0#l)JDtk+8EaU?6Wb?3g8Bt3gX8U}7M(4l zd2Nkd(5qw?Rx|Gjsp;xBR_r-MwxIwr$W|Jox?0}Rj-v34`yG>`R@LSN*4&uBAghp|VZD2h^(}1` zb$EDth}pyqhiW$GTP%Fd&era6KRIX-8na=vqvN9^BgO2o;mM6#@&sEunc~UeZJ~ic zoStcA4b5Nx<+lDPZivZas(;NeSXI`T)W^}SeoKe~%jo#P@Fchh3FF>So<&1fyLJn) zSx>EvBijZnHooy4>F<^4@5Nc*iYy@utj`j%z~xy&7Pu@+$O4yU30dHhEFlkM2^VL9 zbryh}H=(&~gPV7zV2Aklg7{d72a(6(<3oI6_XMiUNNZA+CmA}LUK-ro4i2<~z8&0# z7MPW72M5|g-wtj=L(Iyyg9GiLZwI%bJ!WOw!GU(rr$Gk4yEU$&gs#a$<9SFNHZ;;2 zON+qgs9~XWI|z4Ysbgs{Xz1^O)m6NJGmGcaM}(^a@ZUB+)*AD>TNBr0vB`1ILeh?p zj1Er@B02K{n+Mqtwxi>NlRL(@7ZNDFtq}Dcv8}@+BZbUuqnl7T^QPG_4k(Jc4}5F^ zMkSp_uW`mILt}_y@d*ix)THW=1;-|~2tFb$VO&|9O=BLsG7nDdydn>ew}TTq z*SC|~!HJ!hx0Bn!iJh0VliR_GotL(g+rf#Qm$Z}H!HJz0x08#(c6egvx^|I5@ZvNq z*}Zj>jeg7E$gpiYH*UPf`|ugz?ns3QJFfxNUBxuh7mxENVy5v|j#3*VG2MBO?o87kVrm3&y^)}qNj8m*4^Fhk2dRgd z!2)4P8fL*IRZ=wkUYY(PMMJ_BSwa?ApCx30%d>Vu#T~(4i*%4l4v75z;K#Z$V+P60#zx z7e&INHGt5~B2vQNGcvimHR;ro>jEi*6Ly(F*csn-m!`0B8^?#D#q4z z#6-9t4PMO)FGvsp=Or{7fb0iGDXvkCZ#Mm9fM^i?Pz~Jd(`+f2Atu#n6Z1W|YvbTp zAgu9?dDOUjXk?T%b`)AM?yxjPEif?ZktB*r8c8>Y3DcO#rYwSf)y`2lhS)CGj!>>0 zQ8`$)U9KIWTsxw2Af#Qc9id!^7`WPRYw#)>3_qyO6I(`!rowsc5-X_k?YMNA0MEy+qt%DLoOnz(u5Ze^Bt{EKOOpI<}$gxdnbaY}9 zgwWcOXQHNI0uNCWgAz&7>9%Z6D{I>+&QwC1Pbsn>VR*X|f-cMIzH`$!2IzKtONeWY z67hj1&Q4s|SMOkBkS0h@X!2klHhh%GmdO zHVvy4u#;^-wcv%-djxBQW++S0@lr9aunC8>!Z4f8vGLI{s~~oeV9qK_4H!!G0pk^k z=`1rR@U*2-lng{mmd%DnL8+Ti%?_Pz`7}B@{+=B&S*H{+fvzhp7mYKBDNVCjXM_Y( z`}hsSF@Vq%_{BAT<0XdCwhGNALX?pwKs*zH_EOZfc1)O3WyVfv2E=n(-40w6F0e>z z^EkSXIGxd$!~mCh0?ZqtobgRgY}Mc`SKwd5a!x@7FAhN(8GvZf)kv47x6KpCcy*k# zR575AO{FORno%iorUmSn7~C>EqFB0UXuI@(*Y+K7c2(8-CxwzCC835W6KVnhr==%z z&%IMJlbOs+rlb*^gv_Ks%8*8vt002#1SLcfg;A;sf)b<%Oo)OJk_T!K5JZqJ=nDu+ zeg401t?!f@G0)%s`Oa_d?ES5^_S$RrdhdaPS=iR$vXn=Io(jzL3~;`JZqX+#Ohgu2 z8$vd!HfJ#*YYo^Bw9c8HYielq^9u|O)eR0xu?-Z1k{Hr~pNVti`Lwgy>L z^I5(v$DYxu3G=c=-Ew^3)xxTfI+jW>h9?|TCD@Op5{v<=fR7QX0Aq+Mz!;MXFa{yR zn2uT-YGKk*el@X?s8onf>C`%}uv=|m58lc)%QZi;G(|uUQ9!7|S*;ORxj2!ut;MF9 zmL)mWg{pSXA=t)sm|(6DI1W|2EVm6&x7oZsf$7^72!Q!~vgju&)@3CWNnONI|jXaLV zz#JoI&Sl5rUTibc-!jYhI1R8DWX_V2UNQiZRf(fH@JHU*r z#gJu{H!{~5cdnGB((38eEmNzp^dX<4aZ5u(DS;jA<=W@Ytw!R|3!_VhsaQ!^w_pv` zP_kmeo*HGf7hKy!R1@9mTFA>wU7e$gR-d+X&B7(Peu8UXE0-79t|TuD`Lu>Ma6W{- z1sg!7OdAh1Ei;l_=T5^;gkmE^b(h7Aqm8&O+kj1iO@y%U^PZLjThG)sAh=LTM;aB! zhy#bsiRN}Rn`Lxk;v5lCuqi4!K@(x$(;U@Cg!Wlbv#+$9ckUvZnGM*kGk2C;6sciM z1)F#3LK5s*B_Q5WPgIDBS~-ZD0k7fx!p7C=(DEb z_eth38Q#;Q{$M}?A;q2z-Kb9Nz&c810icG*hX^>dhzPc%BIaOIiv=O>Y+zT@3JskE zj}EZAC}?}@2BV1qa}ZqC$C_DH)wA0Gtb1sNhePp947ZiIEr4C7=7RNXlg#B=UUL-? z$0Drwu=1K7C#|ewZW@*r!jeK*TnMqZRv5MbVt*~o#SU88K)Phd;ZcLCpy+i-`S3M5>}s#Mtj$0Cu^n!Az#L z7+C70sn%83aADm6kPO_M>cns?Mw=8IQwYloVOb$8ErjUS(yGv@3C43rY~eJetZkc( zO`;TTF^oaocJ!(^=c51)kfyfOH8*3a4uld&mNCH089V6WrhwJ8Xd5G*19HbrVo}D4^Y&E86hcTL zW(y|zm@m{IqtS!JAk`JkX)NfN8k3oK8}=pJ8sm~}omJOL9Pe*qZyWut3)mWMRu+h( zE%z_6bggXcXlmSPwF82!cHm-}hgngbC^hY^^!gGAoui?6%d-x_d^(S%UVCFD(j)@g zqzEQ}I*<(NcA5=BR6996p+Ldxkp#|Dc=8M{Yi`<)UDFt12bOgUhsqGNO!PBk*D$rx z2XitpgGx@2ovjmO0G#RCKo-TULtt>wEBT-mu`sVl2;f@uJmWPJ;yEMFO%#Ot8Fsqs zu|{XTj+hdg&rvvipbKb6vgYC>)?6ORng=JbPKZ1>iFHEc!AYzWB2Rflh&(unb&1G> zlUOIjo``@WS?AzL79JE%awMC^Jd#ag9?1f8WMdm|BZ!V*-D^j%?zJOW_u3JxWHDV) zu&IgHj$kF5Q0)lTsZ%klQ7}7#m25(_BUs5|#uLdVUOR$?K(x}BK@qEBSa>D?_00gA zne}owi-jP!?R3cBGBwhI%{d&=*AYisE>$hqf%Cqgt)<#7F#w}Jauym)&*At9hp5=6 zC&b#E-EnJMy>L|_PSqcmPc8r$hK=aVp%(Lx+8i(O8DwKbJ;bU6Jjhr#Z~eYm0wO0H zaJVR$g%b+jSpk6|?Zks8IlyuCXFCVh3I{$P?VW^q4~G6$32>PmE5{7X?uID0nJ?VQhy_4E{{l&`6R9|v_y($nooMYHZS6T6xj|*Yq_Qd|_@ojTDs4BkwK;2` zwYjOTq1tZzxUt$-Mh{rfpK)Vd_l&9;Qb#%5Dw^(Pha9i1!gfE4&{vhHq^R{)q@Z*( zv2{jCK?SYunAI}f7l=M^^Q_)7%#QBdkb)Fq({{RTJyo@1evPc1Zq+(Lm|5ALv!r$oL;0^P7n#GVrQA_*=uO-JI9FOuNW(OXRc$-B$Ew#6SRbz08^C3{<6Z^>{)&W zvqh+3?De4uB{*7^l4)8nUBu!hhExht0Y6tbQ^Ve-yEf-q91A;w+fC5yV61|u*6&hfF8h4X!FhR0Cb z*qrUfH&qO<;@KoH&SWEV?}vFD17@)SPFZpG5Gle|9WJXFWWR3B9X zrXMXn-iV%AK)~=-K;TAn0fBqhwL1qXATWp#qA%j$UJT;o$pr7(Izl>a`NU}s?hGe$ zSpwEI-m0mZ)5wb;Uc4OgD;-7?U+Yv@gk0)#v5skk6{%xR97*uw^2)6BAHeyr8VbiF-`2%Q-yJG6{Z*r5!i32`~-fEvODy z+0ay3Z)J|I!M=Z`E*nPJL6bu!%^?rSYO9gi$XSHM>N^eDhE)=nKZ5U}G27S6Xv>zH0Y2dqoVva+GM zv8fG_Mn^>*ZKyagYfJ;mYiPK%| zFxGlA!-O1@?W#h#=|=EXO;zzh+uSb zUft|$V&*NN4W`U_0&9^rUe0K&E$Ak>WvZbKClky#mV@2iHDFsf=slff2-k8P*&yg% z_QITMB#6Ucf;bL3@`2F(ZX?ERhtzIG<1ii=3m^t-Gb|n&3m~@6jLS+^xVoRSWy!Ju68h;U<1Pf2=j67DdXaa-#LnaormH64Zb0V0MZkU zQyAX^+^9DjcyR}i6@}f4^?PL7wJ5BejM>~VwH-&y1`sbB66t7e(E^zLwAs#X6*a%H zh8Qz9>t-D)BsKvW=2X^9O>G0Cpn<)A;eFM%>Qwq-sB`*8F#Y(Nkz*|=1k)`>UJj(+ z3eazX62>Jqx2dWw!8lncz&Khcz&Kkdz&Knez_`0xfN{J~fN{Q1fN{W3fN{c5fN{i7 zfN{p)I2xdlQ_P_nFK=v-*EM0tt%;M)dy!2w*8ifxaf5}WL5#Cfj@O(%*BAkN1l2hV zmX6Sky9fQad(e@)2R%7FsqWfQ++VvC3d356Gp(*i*xR^WJDkgF3~Ka7n6ooswh^@9 z!r3?jSZOj3Xnw50FEJA$eK>hahpa_U@7QZ>Ta_W!1NJs$1*o(Dl@y@j7;�CsT|s zRh@(|GfMF&%DR<^rVvC^h@z}^iD(KzG=(V28kvZu5JXeRZJm=6Wz|jF8Y8zghG;FU z)rn{dxveo1qO9Jf;;za1VAVYn(gv)V=y-nXc%ZEveK9&ShA!ew9f03bj-gEgjB8h_@Qq3I zScaL;HV!zn?gWM8DB1^Lbl4K$7J$55{lgpg9o&nKaP>?f8+LFfD#a^A>~$~#rb4C> zSBeSGl8`{I`?e4l0lXGc{M;mQ4vJki#vuW7?am;`q4u z!^M_dQ>zyRW*L<&?R7w@JZWr-3CxrfoZ5o?bgWym4&p3J$yOr=QxJ_H4Y9f_z@Dcm z`RbX?X?f;qifh@L!pz4Mv<;OMW>)S5tJ4JkdO}K~wi;9G6lRX6AQO{I6Bt1OfdL8# z)ibjSkQ7=_$D>zl5vH>;=fq7`BK z*qqo-Zs@VX=F;2cyzL?h7K)SJ=(2_pFqFpE8H^BZ$Y8sc+9HU(*)+sPY#L(MH4V{q zr6GE!G(-oKhUjAmSxGqEnNT<; z$F7{^9X3^Ja4iIO`C0~Z_@=hD25+FOM<}SK_GS>65^e%u%dZBfCpy565Y5E&zpjcL z`=SpIs<0tjZG%b5KQ;365H1nPrTp2*uZ4iAG25+=wxgo>{LoP{14=N=#~diZXeXHH zBpCbx3_fNz1^faGKBhDU`~nO}j$( z@<6K*XPoV=#MTwCH*KwnDm~Y7ncd>Rf|TObq@N9x)%4QHq&@p+uAn7 zdF`}?m}m3cBAtz!Pg!8xU}?qvQDwF7cqV@AYR7c!XuF?1y?yP*zR_o;%%R_rC6@OA zvyD(^h;ykH zPOTjc#7jp*$y%{Wqf1)@28;w?xJUp7iv(b(Fe9**#qfu3fnv#nB3q;C zXlxakZnEeME@aqLY6f z1-dSjnazYcrX!hia>!N%TR@0P3L91UK{i&b=qr%|zF7d^*L~cBVMlBm0^~>cY;;Is+2)d1w28}g zVQB=Y)d00d9t@U=*4S@@hAYEmA!&`d)LIe+qgDgd8hJ3pCR$^^4K>mlNn#-=Nop;Q z0JR#R*2sf_DbX7HZGe*2ND@m%O4?+`cHi5vnHYUrjb7imMML8a+8D7s0aG{jXEp&x z<%L}_D8amklPfeIRVMCna;%pf9!$#JFk5Y~IUDCgYxnT$%d#ng2v z5Re`+k^b1v3q_<`->C~m#NMr8A{z;?cSF{pG9iG?BzzkWU#O{!dlxRbutBbynA5qs z#8pf|CYs0+jRuHv!_T^b06Xm~Thl9(tr^~%ss%xdC47OTGSv(4Yk}a|*P);`u3ntn z5L*=S#yJQ`Q5)CPc4ytXPQP8xZva*r)=_stKu_&I4-`pwh`OCaBm@`0E_A4-}0K9=5?j`PC-k~&!=sd*nX@rXKfE( zOT$zlS8!z8kxh-usQL-Sd?*d=7jF_S=0)WCbPJOVn|I92damMHZgmG2!U1lHPi?{= zfU^uDJOAel07n-Iw5yy6w2PbxL`)QpE{xS=gRbSP@uRcdYr0lUoVdJe`AYnp^SY&7 zr%hhX-$<_br|kF_hyMpT{6zA;7>*Wa{;O-E8UgE|0u8!KmNRn2%=xVb}{|lZ1RK3lj9=YwI2P3_O6Ba2;$#gsX^y9p%9KQgyW*M27b72tj1Pbbc`*O+XR0+AQ9!^n&IVdTXGF!Exe7kRk{5k--BX+vpZgS@ms zUfK`|BwpGO2_UveAo0?MNC2@#0*M#%$%slDN)j97r491ZhDads(uPO?u|)!jmo`KK zh%FLGytE+_Ky1Z{4f4_kd1*r=ka%fBB!Ji=fy7H2A_2q}2_#1QIW8 zhy)U^w-3|H_Te6;jHQm_PkCr`s(q9cw2zo$?W3fieI%%HYKg6Mu%xmtf!2VPG#8Ug z8b|`wKuQW5$j;ErWkHs86ek_NdA&lLmzfv|Bwnx3E`S6_0*TivvKV>Wvzsf@Zu&q-fpJRcr9Jo1#T)SNL0V@KTOtU7aKFI*(;tcsa{I z7pSD*s-h#8PAsywmlR==zG5*#;HMbu4IiWNW{c%3*YSrM{0%PygMT5+DP3LN|7sAv zw}ih4v7oav9YpU1%C%3OSk$?;dl}wwvZf2>b>XEli|{TROX8}IrJXQ-VDuKDsl3G-Xr!y1a^%v{{&JxBwLC^zxB$u$CVZ<$4Gc<3qaWwUEm++JIDKX3+GSnMe529o zV0^>U)oU78c6QY@7jmkD@lm*xingxRYl4!o%%jzKi4)$1v|#b-j@3c)$Inx9mCKvqgDUENZG&Hp#;sk#3DMlaf_^(y#JA3oO6;D69J@J}DP{p8A!oqCBS z|Ip_w*}2aF0XZ2gJ2wb!TNOl2Y$rXZ{ezy$`W?awkV}FYa1yStK`j?Jm>1Jd!KlwcP2E z+`L`Ooe{~MziYWgk=)I@mg|hTdpik{fy8Rn4 zgx&!E@iz>6*v|y;AG}-s3o-`;*}LIB z-gkd;?B9R`ObGw+S6otBRz7CzxbYLRxk`LB5v{JHW8vwi;~jVFN^suLv3kkUEG`0W%&;4 ztM~sq9_9>F$SkVCXDU9m_>|zo=j=0_R|kK@n+AVDj+A0D0E;^pEbm&e2Jbc8DV1%| z!8q0-TnPV#_%s77$-^r6`CLL;{W_!F1V6_g(yCT?n0v_wV3;lN^VvjNJtbV%Gr$Z- z`blsZ*V~iX#ZV4?p7}?PR!2&wBC!7^Vk)K3^xT{$!(Vgr8wZ zTLzb5wvZ3NFx%nhvz4^^Wk!1yeug1!Ib4SMkbD4!+4F1=`M_R)2=k&WE32NMpsNZC@uJfMKqK zpU*c*tM~eT7yJxE+Df<#vz2@RhItZxK97-BztU)Lz|SzGRiTbCOmGhP01Pu2em?z4 ztEYtPDgtIW(ig#Hxbc($V7Myy`AjCQev#2;!_P3Jb;4zsW#j`e%<1s+=_akd(`c8# z&oHEQ!DW~p@&Op;X88GBM_PTC(Kf-)Fr+Pp%P`x?2Vj`z;OFxsY4wYZ_BQ+sLs}Ka zUWVE8v)}_T%zp6m8BAI|C0y4?V1^^T3T=nsLdpOzTm$@ksz|G+gom3C%y6Vvp)D}n z>68IrxbxxXb2e%9l<;t02WB|Z`RstpKDi#BsNZdXzo6eO!ARt92~PF6Xj2$jwjwHYsK1+8&S&H7?HM7lfR=d)hC`S3@)1!Umqk2=6S=9m=mIBxJM{#+0o z1DEZliv&EgMPvJ0Y?L5)G4FD0sH`-tYbGS`o(AUnYCB~3?5FVTV^6`SbxlbbUnrdp zz_bOBdogdi?0wVr_FRz3D~frg#UJ}JYROH89Miz(XK+WsU4{?)T|OH>@BJM6t!|^B zPm{T2_?%`F2)P19YcmT{Se_^%)7q_e#XaVPsG7^SK%Xl zW3?}g=COD!XC;)Qjvc9RlNFAQH?qTDwOttRNXSKTbt?=NMqyU2UDL60QO7E77)SBU zONH44Kl^%iF3bZa&xDiYmaSU5g0G*BBc`oA2=`*%?Y<0t<|UuErH}I|=_}{E%yHZ2 zv`7KNKbHzK60=^~z&Vb>jKPepAP~ds2e~Mo%iw3TLiLTNPQlHfVJPJ=8K6tGhcjw+ zTL_M{O^Evd1=ts5Jm-VK6mymDR@krt`8t`(ocg_x0KH z{2(|EnvTck)A$tQ!`Uf6rTCQLW4j9|jvdhaZ59ijKKQ%}O?~^j)~}Ke%xAK6mcvh- zWAGV^&p3Rjb38t@@)3k#{Cwuaod9z3he;x8%2K_? zZ%FD{e*v5EB*}U|9-aPr_c(hr&W5MRk$?@S1SCr!d)OeYlJV7o@=D%Sn0W4;qa^R zc=DM>sf)3DVOhTqZqT($i0RE>yU3>3K%sHY!}PaJg{5jHl}@s}Gwp`@m)S4^+PG zCi%ZAo{ft4Z&N+oy`q0c^w&iHyy$z1{

gjI{jwNc2~P=ga;#WPd1kz2d)7^0!ES zyyPE{-2QTxN`8jqS4(~$$#0O{A0<~I_XD(hJ`*JWD%vH>`4q|bN^Yp!QOX~D)4`tI zN?g8_JrJH1ito_l9iLa@?g!F$zRKrw)*l4H3&%OXQgTg_>o2(*#qTHnwX)-UmE*6K z-i+*dMCmv}_SDFpePqvS>3K}?bSj=TvS+*EE0f$2l6z6{eO>&&SU-m0O7?V$e~#=a zmOWpQJqO61PsyG>vS*>b)5dWIduK$js zf*=Dge(BwwcU#>(6!S;4!}~t7BnX~AbN!SlUEVJ1Fdi&gbVJ2?7!MXLdbwhn#+N6L z^>D)&Z~iA$`*8k=exwQE=^l^pbSG*&S)=jfmV-&hz{$}V&yFM9?Q^8NcX6$NXU#$G zz6i|m=gSIrrQCILPm$XucZ%Gj<(3ce_*U%g?z4mF=6k<#INis> z?~M0;{`7r`v9*P9k0IZJw8m!9uS&#lt)1?jm$dJd4Dze>+h(lcLr z9+RH)q-VYKoGd+OO3w!a-Hs=u=V0k+m7bqU&r<36qV$|7Jdd5i4a_Om*T&whKm!9uQ&s*Y;mY#1)&q(Q+ zFFj)=S0g>m7Y+NY5qG^Q8Dgr04U}vzPSLNY8M| zjh3EUq~{#zc|`o(q-U-4^pTzk(zCbZ4warB=~*E?_ly6o_)Dbc?ZW~*kA5!fuivPO!CrHmL(sQWvyt5DW;*3Lb7f4TYk&%Ok(EsxJllrrFPIi2>^%sLH z_pttAUgZeuFR*oB{CwtM^(XIjQa+yBjUg0Jw z+zSf#9}0Jw!mU)e(F%8k!i`qA?Fx5}!mUua4uu=8a9>ckPb%Dl3b$P08WgTc;RY+* zT7}z7;qFwuy4A}wb2Zut*A?N3O!vmz_sk7~?_hnxXPx*Z;$J2H72?km|1j|{5&uH* zbK(yb{~Ynp68|OH^TSad->)#gJ^QIX!IPiBnI6WnWueorhWljye!&BpA5>}_d>`X7 z?SCEfLpGs@tes&we~gFwk5ALhXO1m3xA&(Q&-t7kdbszoo+>LV%Y5JRD_`*@^m73_ zZ={c-i>2qPISds9S=hw*7MBo*I4z=^%ag5tJ*+UXA$+pPJ!r z=Qy}rXSPaj4(*on*`a9HbdN*3rMq~6yMyH3I^Xd-$X7lWXkK#o{!V`d`NpRW`cH>@ zm&JoEqOoqz4y23EQOdtRz)sq6OflUsJV5l4O5z|mOzu#*{pG%sbNZZ_a17R$TB&QuDnlRgd?oCfP6F<=g=Ywq%bmHw+&|KgVzbW!LD&Ah_YG zs!1PAxBY;M<0n%-2!09ue2!}1|1dm5={*~ASf^*+F#TJntW!H_H#>W>n=Ray+3&W6%1vKScro+@!Tj)68+W$k`ddBOlDk3td9dpnS6*51C|u^_O;(?4E9c0* z?^*bw@OZe~$M~D-(`Ktbn4cmX_aP3FzU7c3e%8u24F3W;@ov(0k?dRI?Imb8yMo}5 z!L$?mF$3Ivq1@g1%I|xX5A}mc&xg6gjGx&OqWyZd6vE)^PgsKPxuGWnIB)BYWjn|#?NQATmR9W-5=%4{fmJ}_sSvXO`HP$rJL7I zUVw0m79AD74$Saf)4V)}$gYL5W0dT;Tz32v;aF}}R&RpLA<)bHqbHCq(r-M0cJyTH z(SEu9|4fEB2o93IUm!l(u@ZV%f9?V1KFhPv!{;!hi}r4)LjUu`;gjz_#OXh?`Wpnl zg*Dqzvqn_a^ z=Q{P9w~c0e*f13Sig0$I(}$p6-3NVghxG$tc$2l`p78R0y?(xwrCd>V1InNEsuc3O zgVJ%F(Zg@eqZ?!{Fn&YDJqHr@gclq@H=n6j`urkCPk0gXh56QM>Ff#dTgfJOmF45s zDgBHe1YcD;XAdSn2sSI72M#C7XI^XZe7^(zy6w}L9r?^JEqr(OrXwi#TsW$NZV>LF z^uDip_b$=_Jrxs;pRf3l^-n>j!O92rqd!6alKY_D<5^+yD0_`-L(ney+-LQ+D0`mV z=PlmBx#Cf7*GI7TRW$T6wc{fd?x<>vxqAe`2gmw2_z?1$_4pE$1+px-Q}}%7Vb^=1 z+W&plFXDEJwbSy-k4DgnAbYT-qbK|>>|{CJY5mH^+=F9`A1oJcGPgWeXZ0(e8K?g3 z@G{C3Wlx+!_qlL{&2zf5zmwe?_wsT2Dx{zN)+;KXKBrJVpDDw*%J37K-Tesdp%1+G zDZT3sARX&c^)riv-?MmwV5abE!o}9^@|hyFzdu6{^?kY2^Jzbm>j}pcdH!rbzH$Ha zH^^_c$1AKI?8t6Vy?@;6LC}fJr2S{lqWWUq>F}_Tsh?o*miaME~MY;_}=G;q``hWcv$0 zsB+p|*f1x*oShin2P!{@QG`u{K)yiDT?nFC9&yuzcwWAM$v^54|4@53q49 zpSczJzWvZWHQzU&t@=ej->W_o>58P4M|PcQ3U15Cm7Cv!T7`2wxz4fz@-gmGLe=LhY!i z3;6tg!R4wyD?aV~x6r=!fcFWcm-+@4JN=u7xVw9+yE8&}+w0xE!Sg5hl8pml_{<0| zzai*{-~ZDoldfy={2FBCS(LSNR`lm}81LDx#+%!d?HKFvjx=19d*op9yR#RA&gZ8n z54QV$Rv))y`-=W|y2!8wtCt5<4zv2PBm1b;ucGYhrl%)66YZJL)56ul4BHAoITGWB9cpr1yj;nw!sDV{$=uuUVuA;c+J4lO5>&Nak9rubVRG zo13qAJZo~nFy-s?PuTo+@|=NQ4?h}UYQpa+UB9((VfeD*9jzv;-32cz1NZEi{q-=Pf8B}pL%SZe`n+|@)x#Zs8GN?u zBNhHNgs1*hZDvR2i)hCTw-NSHE@$y?o$`CLC&)Yuy=*rpBHhgYO~4$luC(@9l>HK1 zwBt#~w~`(N{{_3K=iYsY@|k^=zRwxP^$E>Ke(3sxhcTY8z46qR;V#g)cR9+P_-Ld9 zdU{_&J7l|fXOhd8&2)UnF+QIiZRrVu2f?S@Pf?$Ep4tlizd;*39PTr4pHh2%NqUZi z9zHip&j{$DJ$FdYU211Jgy*xr++Rq~-9ajUf~8P-WufpAn-RJ|M)zr{^$v`2kL3D`g>XS z*-slgct_>%7i%|La%aeWU;JzLa=Ejt{%^_EC_S4%r@rB^lg}{dA2o09isO&xdaEq6 zP4qt<;{0>1ot{~BmF!&B?(51> z@zH*P*$z78K5g_coB@0I>@Ry3nLS&ld?F+@pZUvvbZaZ8!XBn`FW7^83J;t{dJyi3 z{u}kYqE+@Cqk45e(;W`4IdFu}&#pi{;&U!=5EO+MqMq@&(E6J&JF18%-}|n$Puxkc zcsJ%&p$b_nSc9Nn;B)pIqzmo}xP9PWY;xtf8{FOe0@^e8cXn7i41)J8 z{Ki~^h2K~?1mii!k&NLT*)O6VQqM~$f9BU()xT+GPZ-|r_J*6SzV(E|jh+uDAROD> z(cb@MPC);_`OLShKIX%XCKqHsTFm&0vcK!3+Y|n60o{D24f(_P4zqfn@4XcDkx#{3 zua^sv51i*svUmsQF0y)kK;<^rN%}IxkM1HkPVMwHv^zYR-1906 zSvtydf3|uZW-qn;3BzK@2R+P(^URK(aE0tS)8^wv+5TC|<$GtexqF|Fi{V(6 z>-GlHd&1i-{vdn_^s=(mncY|~U{~W5Iz5ff<9@(D z30+Sf<#i75aTv${jxsve>s{u@jUeKwH+y@+@vxWU()FH>iW6ZE^{fJ&^>Vn$6=gp+ zhB%+;w*IUrn=Ny^atU2rf;z?B&kA3}c_E&qC%Jp=0(Xy=`^bF9jgp%yx%J{7B==s) zt(W@+x$ETqby#4}S7hI1W?#Pd4@d`}cPH|HzV~#cd-?&y?^iu%_McgGIob=;RYy6T z4_Ar*g!o?)zgYY-@gEZZ4Dt68|1k0I5PymIZ%lCg`-*>^__M@+SbTn&g!Wx7evSAy ziT_`gzW1v>Fa8+uFA)D(@lO^12=P0`-zNTi@rR0^6MwSee^mU>i+{AzcdYpLi+`&4 zyNN$c{9DAIFa8VC@86nvzv`RfH;Mm%`0vWTi^Z=H{~GaM5&ul_j}!kK@qZ)!Qt^k2 ze}ecAijSW`!gFTTAn_-Nf1mix;`bB3Sp3!;!-bho7STmp5kA5D*Wei8g^`@x2?x3S zo7UfB-?`KA>#FA`$o>0#r(Y}grb8Y7wZ+}vX&yAr`dM62#(2hOp!83b``&?0pDElW zcaYlW>xzH3lU(j;$zN&XB<}J_{yKJ2c#etmVEp6rn&dw?*zvcN&O6P`S6nJQM(*-) zE_VX@?Z@^Af^T8`;Xc^D;-7|e{QR!cimwf$`=crEgf4&T7`pjP4svJhcYMXmqAw7A zGwU7N_jPigk$dP|(yx_qxL0rgG|2?H4gG9l_u`vSapfJ!hJoJ-IKdpFLxi z)7wq1J9jPO-M00T%wVLKMfQ;Tu>-BXq2 zjTmb$=x6`_t0N2sCk}P@an+;8TODuEJm-$X94|zEF`i|tAI;}for>{=hDL^u8Xq2mHjtlU2hT6&-65ob@xN@FFe%o zAH~1M;_1%bfbkU~!B~{9<%8PkzOwrb)sJ4)gJRSVK6hih?hE$_V1~N{diWf#ayYZf z`4ds@J#em|J*wH6yb$%x!(S< z`nBuPei`nMCu1IR``eY9;c|WcC|s_`|AzABJpa$=2k7=#|AYN@*ui%5-$NKrPxv(S zfj{L9)z6Qnc>DvAPCmydAAUaE@n~zm-MQOT&+a~)^xE7_sAn)Ss6u-9yr=v+d4Oa5 zM!P+iseJEfa6E*CfagKAyYI_=3Gp8U`UZ?k)O&EbuRABHo!x=*Z^=CZ zJNO)E^=M1>a^yFk&5Par4jVh3y+yAO{Zpb}ywv&kEOPf73*FsA^s%BJAo|<0oj+Xh zU!(Y6pGNwY>?+0cZN>9B#q($B`=sa}N#Dt$U#WP`5dCG1FZ+xB&Pg8c)rx-y%7N)$ zt@wKt{|v>SS3L6-|2D<*q4YhYcP zhvLsD{+kug(~9ROif5$gvqT>!`gMx`*NXpk#s6pZJ6Y9(DOL^}a+}PKo^Y_$gQDEs zvg1|Ru|;y^Hzq^C~qpQP^!>3hlY zX+v&_^lg;B8>R0z()VNOdrW#lxi3mzM*8lSzRA*eq4ZrXecPn(7U}!B^o*1HwDkQ! z`BS4{{F@ceo6`47#Zw{ra?z)YevjgRP4)Q~ivLrJ{|Aa6KSyfMIg0;C#owm* z%N75(70+Xe=QhRjNzofbA1(ToihqmZze({wqIz(k>cP<}hwsUbzsintWXH|2;}Y5N zp5hxR`ktb%75zHdalY($Q+5=IZr`&;iXTuue4u>ztm1!I@y}EI7b~7q6wi~2XAjX| zQ9Ny;pQm^hivF15|GV^P_IYxAvq?}5kKJf~vBQJ5nxxHs6o4}Xdx2p-12J>d?TK=~l^eaut& z{J`elMY(NlL|d{?!=-)8Y`#*IYdVqieC9dLLwYoSy9oSeb_;?l5A}Nin=2`Y{d3I2 z_zcnfxj)ip^Rr_}&1e1w{lrfS|55m-!mmLO=V{OTd~V8TF@NDat_=D}pX&3qOf~f4 z35VLeEgyEkzCIwlf^<>-X|rcbZoApDCD(29prY*2X4jV7L<_$u^D^=ac7@yA{>;za z{>({=_YhA<=3$>VhkL?a#`BQ!<4Z?)d{@HdKIOi$>jO_u*n{$d{JFoK#dz?QM%N$w zZZFrN={>pQTyJ(L%A56O zuaR`~nX9sH*X2hN2jOU=7iBA~{)FN8L)Z8G7~==~ARg}XRg87~DbJV82c|cl893PW z;im!Zx!L+N>}PA<+;gnHhJ`X$iur_Un44>!ZzAAS~J_!C3@_cAN z@sX=MSBMX~-_t@D_GTaZu?4Pl~*Q$?nvMrRNy$9|ETYvEOSW&6Fg&&Ao$*H z_~{9JUd5+#&mg!3vEA;dUgY1iN_d=Bqa`=qgjDP)u g?1yCb39^^`ci%y~u`vyVh42q3+R`Vef=uQA13+UaE&u=k literal 94322 zcmd443!GioUEjMO=gjNONJoxr$(Bg=oCsnEDUn~Y;{?zeX-1l8q?yc&UT$uW$C7Mo zBumz4tk~4C#)-iWm|}>zHC*3TP~RIv12y1MxAi50n$}Raangha2(6*XZAhIWiXjeh zNx#4UTKjQEQZ&%s&#mP-d#$zCbTYCDm zf{_nJwj+^5XBGN)*aFW(SxVs2d(uF3sCCoEegb^llxc3Gx1E+&+qL~jo$;&3Vshpef%D> z^gAs5PW!zp>L&eg)Zlm4QjSEI5k4Bdh2OiQE`E9tw6!Ux1 z-p)rW)2HK~iR+{#198;TAWND?abHBO^;$iRqP{3i6W(`sCAHqP-cySPk|asvT2C5l z5F#51p7oxtB&}cGQ|qZmy}iBl^ol4+qDGR`dg7?7R;%~M(W;)+wW#OH-nfSv0iS*} zlCFAhZ*zIQySuxuuP;fux|Ve%NgTz!y=gD?rfE-{*1F?+;syTIyW;pG$w!i|%hJ=a zd*zYt29L=9bU#`<8s7`Br=oup#~+G*Fplqwu8QxEE|0%IS|2;=9E#o^Z;9R-Z;h^v zhod#|NHi61BfdSlE*_1J#qTF=M|5{Q79EOrMt8)!qATL@=x{s{-4%Zzx-*`PelCuu zqJ!~tv?|`s-ySO78{Ho7i+(wd_Y=7_nu*&y*F`hQ%uMuboZLPW{lhppFcbYkoE)5q zem+hP%|xG!lRIXje-I~k&P3mn+%*%uFF8CD{cN1fDtJUcM`xl>#L3+=(f=JM$7Z7I zlH)VccO>`BL~D{0GtsJKPN9=C(Y|C}(R&p=H52VkJ~R{UN$ykH{Yv}(nP@t3GtpEs zq_izF(PXk!FNT$GM4@f^**+7!H5r|WvgG{=?U;$)os7*yZ%cO0MC+1W3XLmmLRmhb zERzaNDKxFnZvE_0=Do_iPoez^-KtPqp>@hUb2~q`>*s)e4&Kg-L;ATxKX={^kayh< zK!{FDo?nQcj8Ffa_`zr55C8r6T~EaC`ib~~zxA%~zyH1u zox1nr+=+XRzxBEJ{XZ0s{b>AHeBIxUe>mRpvG~X1AB!K4eSXYyWh6%-5LL_Teoh_s_`|ecCJ~~A79@0&95du6aRh^*G|7Za?K;H+PWyKW$~t@ zpZF{Bkyb)NqJ)>@EOBSz*%qYlu70zj}2BL-#5YGycuF0eE-Z(k!V&H)|cCHzWQ@RX# z-rgd!d-;)6_(+BaK;Mc~eQIP8sA#r$HvU^9?g2-n@IG=qM_MV5+7T<`?mN+nW(VuM zPh5OLHMr!&@IaiUnble&yL;`U3XhTsM6-jDFb>YoS#p+ct8G^1{=pb{zZLH!O8Kjk zo>sDLAaP&(XsSPIa1W9pJ@p}tTYtTwJgW!0l{r*F38Ng67@eN}n&ny9N@}OG)UBMY zt4LE_1w2sG7_6n6v)W)+mOxZ1X9pp?s}u6mk(l>BP66Sx%f_ZZZDjSUlUgfr=?Rx^ z8%W)kJ_<$vDXY`_2LY}|@4+;KQ6o*SmNO(BkR=Tl4aSYE8?1snz*^g?xn$lw_Jiqc zO9YjrBOt;`0n9+`UIh>Q1w42pBn=hLy6Kg2gNsc`lL7Rhm5nTBEcng3Hzlh>=MBA} zr|BzSo#RO3Yj|5(zR2q1q*{M#jIROfM~{(Upy8L-{V3LHUtv$TUjbJB)QxDiWymQ} zl7^ArHqa&9d6I`1EU+Bbv4XAc%<3fO>r__$E?g(*n$0m?gDPou&;YMe75y*@5vUiZ zs?LFegebOpum{}KMP_*=2q=%Po zh!)SIAmMLG6jaZ80tL~{KtUF&P*9I3$oK1f3L>5EUyy=wMkpW`y>3J9#iBBDI5-V@pwq_n!Y7nv)KVo-Jvm*l# zpZktek~_ddt^^vWotSNPiJ)pGhE#b|m1oId%~{XWR)L6?HQpbPK{k2`98m)yhoGFz zYQkGUj*Ur|V0{zj;!nZ_l^eO!S+s`qMx!grqUIHi`8YnECGdL|0j#8CZA1f?#bTzI zppsh2h6u5SOj52^O04DeMiw*VDb%J%8#Hp-; zGwG35eO;7n_Wv?d+9*+LW^Jq6od$@0MCxhlB-BNRi39KeswtF;1=Lz{3cL-`3U#Kg zkzPpMFZ?##?H1D6=1NBEG^20hwjsLGse?Y>n{6)zKVc!PEj^z0c5|C3z3d=AfMoHE)QnEx~wC4u(o@N}kQZc(ww@d(i}O7lk- zHUDhh{If;#GiCFKE6pF>l$^<%$KEZPKU_3Vj>q%nA1|9fT50})Ma?hd%`X(qpD3HZ zzta2zo05A%=g&oD>-QI}li{|2`d5{~qy7PFT;u*&thTX+a=M!ch{q}qh<_;N9Ru(& zqO$Z8?H8wD%ikOLE=>S`(z^fOkyWC zJTQ?5Zp#Dr6v6Gnp9AcCzG2!>76uhPcny5cUIK|;7s|GDgTCL0z+n5>KD?0b{sP_j|Vk16*85P3ZoXbOf9SN&Kw3KDZVsw%LM5bS}E%|J8&t*EF0^GQQ5E6QN>Evl;#jrrOI2`_szyHQgDC=-2# ziq(`gVGImBHEIK0HY=r@kdmQ8L*$#}eQiXo)V7{5BXdeNKr7jLjELv5lk47wA;OlG3S57rSp*v5Fwx{*ZPMt{iF z9&^mpHT5AatAp4YA;hd+Kz?!-^uTqAi<+x3MTsI`K(GjiNdI6D!n8)!n`gb%jd+T7 z@e&6}#=9&%GO}h+>W&u=O4`;XDAxMNI{#SjA1e`^nyz>W3T1mLqjiB*m(+P5IUic^ z|HU^YH$Wa}o>@dS^D9~teK5OR(Jfs;TiEc(Z2*uM-h5=85bc4*b4WK*^ZC(rCJnt= z7yiGj=Hau)Iv-o_AK1K1CBC{Sksd|Ow_at_$)3o)IMCb{F}-a5QXDmY?`oXZU~W1z85QZNR&)waUW#Q4DPXyr)Z88y6yCadUdXqA zRE^zZ1Q5Y4TI`5osW4XKTBHpSwM+-G-N-U zc5TRhG3|=5HkL7Ip8FeQ0|-m1S3XDY&r2HCp2_`oWNY@eSH?v8@ zC!dEL(F(0JcLDVmIl;PMNk?0;tSZwhYc!!A6tw0RT0Phcny9?LWonZUR*0BR!)nU7 z&oZuTvHrlo%0*13W(&V5fSB*Do^H!bNP8U-HYer-t{eq&`{I$3G_@{6+`%!`<-SXlhGQ!7jwzI&cTDwQ1n3`w6#T?S z!1BRHW)7GD>B8646MRiQ-q)0*Dg_P$id)D$xpiY;$4O(xGnk|fvm*`J$iR$o#up{` zlVN0J4LHMq1<~?NG48=rQ=juN)S>Yn(KDEV#=BV>5Ei5ANSm1`pLDvpI+QqoMh9t6 zBkBhevv5s;TgE2#cyDOQg26RAvG50X9SLq~`DyFY5n;dyEgo<4D2OZAvd$`%*s|bZ z@fiZAVCZ_MaAAlO{;=BRJylWTG#HUOjPoEq@gq2?3+cYBUO9B zYwzelFFc`&Hbm$iNi8vm{^fmC;in!+2P02!NaRcdL}?twaK!BBfQVjXVuXcJ^o~}d z*{L|9rY?!gU_zv6mY`R%7zr-ni=KwgPvFi&H45T1hZyTPhZqi%NUrZ3K-Xv8qng>( zXaXjZWzQlO%KwOXMX5$w)GEN3A47#UtI}MVLEVV+R4rBMYk}S*^(;t^% zk~fTLYVK;e!tVnCPE-j6s9G&@F*GnHF+%l%o0D00HRhvx10H+Pa6%4E#~GuYa_wj7 z4&UE?*KCoGs1I)%|A8$63__rMn0Gccr_J7?;uNI#VEH`XQ|gSmFcC6 zVbkn`#n|lr_SmGAx_d`f7n)|>yTJ!Y)KV_?U+h@2Ky16GA4!7`DHg02?olf5dNk9# z01f5DLYCDSFh(-~2nSJwAFW$wbPR@M7&YsOy-Lkj=tyO+LVzCnpc#y+B&=*Dh0R53 zZo{Gn$RLZ$uOZ0pP%TlN5xX9{sK#hSjh$KH8a9X$%nNAGma?#5w3G!Vpn^d&lVneum5~@@ zYbi_e1arZ2ik7mNSu|U9A=1yi1RT`9+Tps%(pC(M_e%{@6=K1Tl zvG~wuqSF@QGwVTr9vSRTaslyV`ml#6D_haHbKr)e&#QIue-fZC@5p{JWO8KukzWNAZ;mLFb|B~IK-bLnY> zfCQlsgNDQ6!JhW@ucepyHVVHs$RtZPg|)ls%l_}&4Df5Eayc+s8p&N6|(e_+&KlUA2t$wfyl^O!Qt+N_C*gddOY zi;0cyzp~iy%%cVIFlva8L=Apc5`-0*F{F zvAe~K3VZlvcTdccnGA(V&{SljtUPj5G?*`G&g%Wm)$J6;%D>-`6Sh-`@G|y$nS|_y zH#9ewF7p*s_fnA6$Ov20mK{XvvhT~i6!->+Ga`5ml?gKPvlEe#y})hhUnHARbj!W* zilbDvN9Vg5tVmLc=Q@S)F!x)op z;t@PrdXz*4>I))EA+q#>MCMsS3qIzilXEAqvDZ=1CV0p-rQdDQ9h8&zf2+yW>Uw%n z9c2Qha5kXD;b2c>K}TsKBpsya-d&mjY78i#nwu+%%BBNbcj4 z#4;i?IoRvP6=m1LHMzKA;E@;-K#0I9ku^M#6(p8qy+Km-Dx;B@g|w(0NDNoy>fp*a zpTuaG3GlZgG4yFCiDB<9CNaceATdJtib1?LO0m%biFLZ0Y_e+14xPoYolGC(V&QJW z8@<^0(X>glOP;F|_taqCa%Sd5F4ABjyp5~&&TL9qAw|U3oD=B*c;|Fmy zE-lCKeIosPk6HMelK#ui4OqJ4`Cyy0h*WxJN-0*V1wtR5)ygejqq(huxH{}N0n zQBo@nuaTBTMkatEBN7#td|m-lS<)SUN6^tNkS#Z!79t<|$iqEHZQ_9!zeiTa158EK zJf*`N#!55E6q@V-wXzW4Ut=Z}8Lw0`mSeSltn`njf1s@Kz~;qP7NONeXl-5<>{vVD zR?lfxl(mI<;@2%ELgEdU#FW1^xl-RzM_Xj91qC~9t^9?OsTs}b-WE%8IGMA z6F$lb8w*MEY8wEJ#kXSrUg%4kSIf!4#t`Ea9M3-Jp8C9tKEm^FNy~-!P{ur{F}t2@3v?1v8+p}QmS5bY z4UGg{oY$|?RK0wbRgPj~bXW`95G}uo4jETB8s9-F-&uyO`A&5d{YM~Xw_1Z!2}!x1 zTu?F?4g3>Oi8$|D(TQ7(3J8B)7SImHh0S!@I^GyJS8$JwB-VsnKYBDq*3?}eyR2rL ze^a(zKgiUxrzN@L!~IU)ulo>U+J}hBsLAX_R3JTvwIGiPiaumiqc{5^#=>vVUf#eC z&bQjJHu7|z)<#(IidOXcCw*&-(kIjM`1O14WviPEC#15uAWi@@)+#Al*FfhZ2ob`# zWO2)$ScCXfZtQf{j2g={e%g%lcKtT$k(z&($g9@87Akn=FA%xPvyca#$OBJ(6Fz9x zqsFht#&}-Gu%SIm@sDZqyQP?7T-lO@6V@42zy!K=E3_Hf56IQYgkP&OO%xBNuo=if zlYnw@K%eFk9{+w7-0ETcd_66Uno(4^X5NEV`%1qo$z;?;gZTBBzd{dNuA&@eu%wu+ z$(~|^sr+z_{o2(?Kd(-iFr!bu>dA+BfAWSJd%BM;-s9QpYbYu7hJA8eS@( zkgtHjW@jD>ZAZc8tmfa#yb-eUY%YT<7Nd7-D}P{g)*hJWvo(sBVs!7pgW6d!Z~RmY zscQZB#>AKqF=9Iolyn10RIPpLqH_lsuY-&cW~)WbvU=e?ZEF=><2NuK6nV--C2cjs z7B;+Cp>&X$qR*>RNWD-57;H6pmKG$zX?#?5fReLc ziQSn$Vjn>BJG`eLWOUKC2HO{CFln4JE~bT6YCSPiJ?}!%FF?2%Mh(J;7(7c-*noj; z5<;t;Jo6Nn!7r9KaCs;${FqK$r%fvG`Eqopu>l8XBt)NS#N84pm?^lrI&;A!GIivuXr*$&P~7rMX~_j+@vsp+EOsJhnYb)I4+HsN z5dy#Wae$C8H}G5Oz^gg`GzYht6l)VEv4bNADA$U*!g(09EHostvr+)F*pU-f?Gve6 zOvErf!c+{?BMUJ-N^N>%`-~V&qkd`y(IR(47Bg_e5iTFv(F>i25rLc9vf&CHzVHDU zP2J>n430>K*{>9oI4B1C+aG{osfsS!0-x1cIRJBkI%!8tYe$XbLJ@V@N@#_QfEyyR zlSOjvmF~R`GU^-|6eYz(S4`_fS5}E(M5AYPTx{~=J*WO>9u3+s8(T`Zm z`sokA&~hLdz&ej)%ww|@lEGeD8p+TK0`q*5A$=u+^gNP*7<0-mASbN{VN)#O!VH@0 z$+M$f0^SuFxk#FA|GBFMrI$>VF z)O-CP9C+H3g;oU2>xaI8uH=x>gGB>`10tkw$Y49`WE;Jc(-pZPUd=nJu1l-(z2At)`nfn{1RO} zD7o4n+IznQbk;vR$WCqlFN<63OO9H-a>FPo>y;l0Z=poLZLNX|zEdVreXtj6p?5>1 zIB$D-E2$0aEaH%kpVHyViU)h$cQWJAwwfXwYzmP*^rFN6%SsP^$a#q2l8LNkKXoCs?JEXdgWl^+#O>9 z%;vS_;bI-$i`~aQga2_Lq9>FT+Huaa%{J?s8|+j0I4_@#)8`&FRTfmIXr|Y_6HRSW zq$j|su?M=I98OK$g+i@QC-bwePrPSKs*=j-yk_l?#dK&PUSO7jjDSR9yL22bTYiMv`;bKu9TUHIx%bUBU5gCc2l}M{ z-ZyB=X~K9nJ|#nPPi4c;PEdTSjIIc=!UiRuC-)l?wIvMoc(L65j=VR%_k9^{T!n7vG>MN zKT6$4B#Hmnud{0%!mjH@=G?SscY5Xm1M1e30!>( ztt*H69{lhp3UH;4{$9K%yE35SN{_`WKVkbkLJ!$#>H3bf8mO@&p=2Ggmo*0KIsO{i zTNt5e`-y=Sz$FTYzTX0A3oL&?s~a)7Vo;RS-M>us-RcQ2(l~4%XR5 zjA$}tX=87pah7MG`DmM}H5wEFfzf~ed8$~`YP9ODfv`5P%**-#I7PFQWugXO6oG*B z_xa*%nf0KL>7q#5a!2H@Asx`AwqP)TY-0Tbr(wr}fqWkWT2~lQe$~#dFDXBoHpCBv z`jV@xNy{fFlnL2Qx9dk(>H+XLYs@0VB=s1%UKCOcl8`nbDD@HzEVnJ^A{WuRggtm- z8)&yE2Sh+kO3EUaWk~z1ulb!uU^0vQ5nQXj7b986Em+k;cW#vY&*}}dHl<_)Xt^npjSxo-K!)>ix*s zoC~Dt?{0lzG_8aQxX6X4;09Ave;2A z`K$Z1nX@4S$Mvz%SFif}#AIa!j7w($)*sj?j*`;pR&0-3qIZy^JG&gI!}tobJu;Vi z3G}{S#Lz6Pw$!?@9R6quOWo=ySjU`V&ciS>0EXx&TbVUM7v`u>(>y}xQ3A_w_|*tA zioKR86wGnRuwWA~NTN%6#MVCs)aDM_!VqbjyHuY)>C)f$SdArtEO84pZFbfyIiiuo zuXM=T2XCD6Pb~eU7}AbuXj>AYjOie4W!@d>!(oOf^Mmtv)aI3UB2L9;fl#J?tpbR@ zQkF)!qk&;^XSr>L#&C=35ECTAP~dQbx@0CcI|3QZjRT*xCAcf-`1)X zN^Xg;y%b7siDZ*@w30)UQlW?DLL-uKAC91o8V|)-fhLNXzx%E4h{^PX^+nTa8w`oc z&`{W6Np39$2Z?Fhu4qnH5^Hdxf|j<;<#fPob#{>Pln`fc7g7x>U^ld#kTd`66a0SV zKgaF|S#x!tdo6aK>1Sy%YWBMqz81TWvzo`$o=Ja`Be?&CV?ot~bL99TC1`gX8NNV< z=b6#KLl447P#`&^IzN$mcTO}D1IrN0+W4@uwIe^Il~y-0>XQ-)~hG|?yjGm%{b}MpGtj)uz5ee(wfn~d%`W%Cf57T?zpvnnbiTmh3Q=Zoer|xGg{L~++vfr}si-ha$KUw%SOF#1|<$vNo zD*ab2?Cby6FDTvD|49q``hWEQDeM25rThAS!eH?A|EcA9fjWEKXD$3C!oBWU3qSTH zJTmS_tn71yyWQ(*xA9gs^)|0%{ronZ?r*+n&g#fL`rnx1XlZkKgxC_1vK)-mX&_2M z90F`S*Mzj)v;Q@5&-3>Zf06su-xET9jo&Ez{^BzC&xxkZhGmW27s#k=HCJ!4d4faN ztcOb+S(ud$3#-~6ZW^Wj3o>^hs71BEMVK8SO`n-IDg}L51s51SGJm^*zg{Wm!z%b= zmoE6vD+PU61^?NlL4C1O(1%s<)0b}XH!1~vSOuTHbc_F@QqYH0@UxdL_%AC3eOLwm z%cVhmsZ!8~Rq$uL#QAo^@tc)`KCFTd_g-=wf2&f^hgI;am+s@gsuc8L75t-~OSbrO zrJxV1;O8%0@LyL7`mhRqbHGWy3OVx7Dl8&r>rg@D|E5yVhgI;i%P$G)rz-`0SOpg@ z4XVHQPrS(`n^uVm{)fvh+2Us^E&8wuzP{{|1wUIU=))@b@TL3sZz~0TSOp(@%OzX< zT&187tKgqpx{sf)6!c*g{M4nf`rDO)KCFU&cxmMPyGlVHR>8l2Y22g z;O|rl`mhRqp>av9{%)n953As3zFi-GZ5ev%RdRhAy6&iNNl!gb zx)^VzyF8@-k!+Z=B)>uSE8MD({1nq;_eDT_ljPOz%8>lyvY}ogx00`N95FY@pCsjF z{=UecSBYyoRN|LE6`M}{4s@dO#_lzK)t|Szx1kezOeca!o5M&mD%WrK)01-qegXSs z5K&?OnrzmpW^d)$e}Xx;Ti}|{Uncw8FP0r+-PitimeKLY$^K8su4z$TyI0WPmFN4k z@cAV9ULoH*&dZ0%@9X&MBW^k*~$^iRAznMw!+}Q3|UxR(#32k7D=5QTPqq@L^N0I+ z=Sd3Gx@M=YRF-}@vE1T*v~9XV2ec<#p~DnDT&xqd*g~m0R&Z>Xe~(&f&8VQLT0BnJ6!^bIY%t}b?9JK^1M+M;%yVC5WY`W<5RZD=!&L{mepO`!dOulKs|*S3 zZQ(}=gZLGb#z(Ys&(H&A;uAPdjWwAhVXiL`x5bc`!>Jrm=nxqAm+v6N;=|(G@lNfJ_wDT-_L?hcd@?BZTbn zXa8HU$6v_p@ztWJxOq9NU=%X>pnV5yZ%QEv7Qk5F;Sv?XWFTihz7hSZp3PEV?Y^#sZC=Qy0 zWZw44MYD!9M!RF*C{t;hl=3L|jp|yEZmmgc_cccha466wHDx_)Db<++ddOqtRaxCU zBlY1{4`Zl5Z7i>wC&f>3Z9j$`wi1#DwNlO@BY8i%%0f!*3Wd-ywnzs%gGHf_hZ^&f z(6D9I4vUxw#_4!Vv|L#^lf>RzCPHA70-Ug_qSP*eQA*<~`jUYaznk?|FYpS16z&L# z*|VIwfmwuiA_t^AFKjlDD~1QHabVmp|8riB!GRI8GjCNJL?f#sRSbkpJ><#Yk#OONT0BD3ZFE$0BqK+16*I)jo`M|Zp6%}%& zc`u#hq6gD6BCcAkJxV^Ppkx9aV3*3U~6DKe@<66FNT9k%^S%_e$`p zItWFcKC05*dM%bWIf@=pw>Ah>+u|IQ$f0g7q|iQ|!r0VK*nkG5Q8nG{nQgEs-ozX; z5Ilb(3iNAZP$+=q`?&*EDLtOo(OUUk*_5LB{H|;*jq9%Lxba2|MS8lbAstvIMI5RZ zMp9?I7Vv6ILn2K2D+DD$SaPImXfIkthS72Q7p>7u)D~ z#0331=xJTdu5*34U>!EpBPr1uo2mJsvey$fO?ok&g0@tn&Sl27&4-?#QEZMDn;E5OxNzy)pL#$*+qH3jh$-C2Lpt>%6M7)Z?bYjMiPibP@8 zy7ZQeB(1D#pVblh$t9&5Z-Jq}f!Hs1(Kpta&=$>L7|F@5OX78Vx@q3#7U8Y&skq~^ zer-i&3FHmbX}7tXjjR*VYh6lFkM23hn1d6S4@$_|q0?`5gPm|Zu12CxFG+|HlHSoB zTV$3Q0y2!>0G!1quLJ>G7jW2`fO@7kU7Rh*YU`uregNq$M>N!Dsl0+%2cyQ<5?iMb zX6e1_KZ=}_ZcN0lvDuM+#SH_+7W}j18a4ru8I)mb0jXViEZa!CdT1h7Co&mKJ#xat zRyt6-`Iaqz=mfOH!!jS)#HtDrSYEv)xx!@~IPnVCgsNlJ&-ERF>LGvFubo>T1q>hn zNVm6AG@C&~KEiQn#n985UwDzJCx5hSqW~ z|AmzfVBKg2s35kz-1lnz#n7f26I7744yyjJCqHVeh@!@)YlSv2vhe1P9U+O5&G{?_ zzq{T2i4^KuG&!m1e3xgeaXvq@S%c#_3UBZnJZBt*Y-A8@OpT)odkXnz90hfVql6d6 zSu;v>l{l(0yc$MsBmBgv52P`|i{J6Z;YAtY?nj5)dC(r0D2Z2#R}@}gpaxXVU9N;gwNg5HaE zqahRRMne+qzFQ2S3Hw^}yQMrt9Kit-ffPvz@=+C227wev-Jh8*NZpgU2}j6WvrNdG zK{PUt3o`eoqzf|d@no(Y9J(<=dm%)$-8M)9oe?(IOzdrX9+pKu9I_tcwSAgI)C%tr zv7Kbv&p?+JYchl#GcG_9o3eqzlU;U++N_M&=LgJD(Mj|~PhXbp$g*zliiBQc7uq5ebzY%Y^<@ieZvKwx{M z7dVMkVXgv%YmhANwhId>B|XR(kyEa(3X`*efodfXIX~j1LQA(cgC&eiW?VetBij3G zqXYfx%2j+N{7P!X&~M;sAb^4zjXx+EIK^@RG)W8OAq)(qP>@w=WNkT?fxz@4{t4df9j4|pUP1{Ih>Km#IMSQ{o zlzBaqmU_lBA2`ItU;+aQ*L4H3qq+fd+W+5BM@xhHS4yZ&ehAmxKPUU%*bLIeMI^0W z6Rv|$(0sa6D413^*ObYict7p4(=ri zvu6_Ta1PGlKw>cp2@b4z1K;kiiNL%RA{vzk(`n5wk?6Y00!bBgJ+ht4ELd%p#*ybL zl_p9zQ&@``UOvLKLE;c9C5}a4^dKK)f5XgPHF8i-97~PjQ~`kX=!F3@0E3IHUJ6j~ zh^7TqDZn6mDIgUp4mZ(Zby{V1@<19ybxH0kPjHDNpk)=GIuB8xf<~n_1b{Im0?8(> zUHC?!AZBf*m@J2sxx|-|7L=BCv4G%(rONQew`~e1w4F9K`MKt+Ai5VeX78kX)k@Je zvILY+5y=S36`0e#yw$w(a!Juw@n8W*q!JA`jfqG z_ZMg~CNCX3@0g1U*{lb`H~wP}iAKdf_F&6a_OSxoapHfmSJEjc=pagH>VzVU5Xew8W zi(ba(S+uw)YF?)&>l0AfN?o$?KY#u5t1CRAJS!zGU;O{Pe;O21KKTHF=D~!X(@XD4 z{r%KNiTHV=#D+A#xEO0v{`=aHn3-B&Kj;g#PqjuWAL`+Vw#Lbw(PxS(P2x-tQJmN2 zYduSB^EGX4F4}z94j!^o54)T1DET(+J4#Dv^Yx{+`Fcm2kA^m1r_F`D&4nfQ^O4#T z`}s(%+Rw*An~y-K=Qw9+xU~;FEuo*kx76|cy^isGJhb_HjOVL)o3CO&FJ(MGw$y%p ztfQY#gf>4$KVQk)v~Nug9Nf?5ZQ2*Gme9{1St@RSqyx8SLYqGVZqMXxo>^i)zqVA|eyszyPlqC5wxi8YhBnXA<~=!k+9frmw7r<< z`;DbG`5PTgJ{y|+4Vt_yG>O_?5_g_kYLn+WntU!ad5$J0LX-XioJ;re&80T^W=E6H zhbG^o$<3ijyDsO_E&jk#+2jX0*yM%K;t#+k8$*kBxz43q{PCy4V0P<c%V=T2Qy6F8J0i(WVt4p=1ex?sfxr_!GzPhSsB7ZZ;9&5S;+AJa5bc7k_qxq_929TNLJ=t z7t7epj9H7AcW3%ftg%{Hs26QQqRets0w$=BKvFJz`7$KR*%Y793-N$HQ^iTbco5oE zBdmopf6991n2nmd-zSnFZzJEK^yl(TtOJd@K{e)%!r!hBJo!FxR0qEVPTpH0X8A6D zFTf$Cy{}kxvQ5YRgTCf9I`6djT@ z*K+rPmm<64?dW|_R)lKDQHz7$d>*DP5`M(&r%bxYPqMGX;>P^$YfOV+nU ziI%zhExCte(Cm|4pCp49I-xg)7{*{(Gfpf2MQK7CU9QXgTF68~`jU#Z=C6Iy03Zh! z1m&%Pm0%zBOoh(AI!jJ@ z3S{sg$3g1QF3j?ufPJ1f+@{cFbkNPM2~_HqbHtTk7r{C~J~hxy@G^pMhi-e}))z*M zF=4+XLG4bUdi+fJ&`|S}ssHL5aB-#vB+AnRC{Y%(ULY)s78HlZIBqF_4sJowoA#Nd zE_Uqk#L^KFgc=MZDh&?Ul}~Oc$mhPy^;>Q!dhHA&ligTTYkYZ4((Nx+#y1)qIoifz zH*2Uyi3ggqP0FmH=+2xs@EGe;;5+!rDxyNcoqUSbjHo(A^h)d4ENS?>NScS}4%Bc9 zm8p9B0VyMMip4B_UNOSQ+&4rlnw^v+f-e~h_Ht4e0)Xzr7PO|^+!Vn(`v-kV7Nkd( zt&HM&{$EnBrwXTVAMigW_&IZIrs@B)EDQ$s(UgtK_Hl3aNeS*g9`So)T```>vulZQ-iOc=4vHLE zCQ_>-b7Xw}K%#3kEck;K1pbw3DtCQBHb0YVz zBKVpw>%o<5LTz5jh6j(&fbR~hwt53zYx#dkt(GdBdQ3iUcr~d7=7MtEn5J*M!(_gGt`;9iiebq<~QF)A;`m zp=d23^yP~olnxqcin1k?kec)E$%RMR)$2KA(s%8@2AX*x#iF|i%|!2w->q(8RIAxnj4UIGPd*;r&A4c|Nsa0~n#75AIb-!epqGgQevPBasFVkmwFa_s9 zFn=1ebs}MZDVLKV+^vbTX$u2~ttCSXA9>>0Gk<{LB~zi*c=Qv4U7Xc^_|a#xOcCyH z;PMFf#eeU2-53K}M+*w%Ys1@9 z{C3uPfnL&{8p3;D;y2K?*jD>Ryx!vuLX(ucef@tHdi+v)aij*C(n3>7Qwn9>2%)+e zKDhw#GDudVL@0x=&_yJWrYsVrCUPLo$bJ5TG{-F;W}eAJ8HnQYzlg%1YLD;ApI-=7 z=ZR9$MM3U=ox%l!{C0_HK{4T>I2RE5R3}2;8%fOP0|%3KVlv>;+mHn=wLL-NI7oJD zSt*j?hF#CX7eQ~)%N)N(lcJGV&O5gwG*dB)49X z{JMzP4uGpUvakz6W|JllhzY4)l)^31=VU9Yy)Ony_ysQsJFSLL2dn$SK@c2PKecf) zpR%7c5rs(%b$<6DTurDFm=wpp4dH>t(2YX944>sLrVNUq(u9W z=(si~LcG+Q@A*RcgsqqUoL}sBw_@<|sgBI90@81QF5foC`8AEH-^A4$xnFz(lO}3h zr41d=T9_>zy_yvN@UrGLAh7YuWhqB$AB-RHd(=1p*nG<%r@Yh-_iqX#%d|g4t+MC) zmS}(n5|gXaG!eboKQjMV?H?Qc<7xyXlPIz{mdw{N?L?x|HgPU{%G{d^Y~ywd3tzD* zt|hK@FIwXBB+8x3XKfbH;nXyAMpyoPbYbO9$$G_JJ@?SLM+a}>_9*m(;`QSIy&|t6lLlCNF`$%E$gx$mp zth{gaN%sp3{MCIA>|-iKUTZ>obhBQ&`mW(#A(20o=nZ|aQXhVx)i-2iZ(XBayJz|0 zj*Ravg^Y2U989MF3n@q8*F^yHvfn?#Q7oqF?zbu*xX8cVp|OP@*{YDZpW<*F$JMnx zq7gpm;T;aX8kYIF!{E1-=M~#RL9%`ML0IdkFSN^E1a8T&0lpNSS$pP;d>wf z$lt91`8y$80C_eC@~p4Ve=vk`=*SsrWVt?Xp4BV$iCosGqHVSL;->c2+5I}MWKk2{I5+MA!3WPr!!UcpAVW4g8zv2A1U;wZq zqdo#-0B#NdYT3S_JQeuzJR1Xiw$M&u01qf~@LuQu@1It{%RebofR_dEw1(br{wp&; z*O5^wl%6bHfIcNc7 zyEY65DQx$~x))h?u@q@gR1T)ad*iiwpvX)VBZxCCzw7hMg+yM>H*8FL2TA^6X$d*t zuWV^+Xs>%I=mzY3g}INR_ro-RLQvEilXxW@vZ5!FM;|~ny!J-&&LqkW>J|mFzG>48 z$W&C4TKNv?p$CJ4GW}w})H%1TUU*RS6&#O^mVE|WhKl>8pvDXns_Lr2)P3m<4MeLB ztY5KUR$svkG9XHKQfOyA28h(Vb^~KeViE!JnO}eF14CyY{+@;J<&^s8(KGsTkZ%;r zj_P%@hZ?nklD0LRVixMoX~R zGBHLvK#Uxel(x=O+098m4|?0L{%Gxi^OgH~m<{>ei?iECVi`02=jFXh z=AQOOaPV$5Lk?0Pl3MdUjmAwEd!-X1S|AecEH{&#+%)E!NI&Wiq+GC8zixk{viCE~ zfIj(jl8|$Q58se!JFJ#w^O~DC+v^tB#WQjnq8nR{IUUskbGD|$bq7pnbu(_H4~uuD z^kGA^$*vWaV^4kJCJ=oq$yQ5o8FH6|ykabonv;_Wo?pGi$}zr?0l27rT4jNO0yydf zE%a=Q4ZvjA`m*KOE|s7ht{A?3N2eG+g>Gnk0>1*d5|V2|GQcy2Y!$YJAnjBDI3W}2 zT+8PZcyHM;-tCSV;^gM@Ihrq8$(43=J=Ka6v?`xeCd`VU?elBIiBafkCIXwF6RTle zv8ra@V4@8=S;CPt|M__+JSf^vUpN zBXg=a)@- z2eW9zO@Q4HP?xiUixHSH)NItR#SVQ3MX5f8b;OiUqafQ^9^kM$2Qt@Z-2-*GK0W>w zvTyF@H#>`^fm!@p@K2L#k;SLXy9iiUJfGsQ3qk~blo?+PQzPeK-9i!A(5lhx*;$v^ z%sg@8UOO9T>`o_boWhdfs>VNwixqA6)N72C30U?^nDmo^b?3esgARRzZNXnU#hp+M_r_Oa&>e1kfmoZj zn7)s7>#lv!%?_7eXqr=IIx--|hyhkJtST6kP6X zOU?AD(gPV4Od;)DsOVh~(iwSeOabeVBXUa2SqDeDH(QQg2js&0T|(Hgx_ZtDt_DQ>qBdsOR3*@pgfvx{_)lk4Suy?KXpX3oyX3cdcqFyJ&?E7?OyDG1Oj z9RDtSckes^RK#2~nhgrN{9-cN1^}zFc`JrVmgtNwPv40=TW2R2CUt@Wm8|EeHC%P( zUsqwtU;5!>oXp9^XImq8v(E1z7I0wQ61~^EzVr=mGcl0bGOzGK=_YP@pmcf=M2H~J zc6b4FYY00YJo{ny;8X*rsqVm0XX6p0Ee(vEc$<%4_0$_jZFi@~tsh|H)#iJ>9Pih8 zCJCRw!_B_|*|F-QjVJQnO86)TMnZ&$ff{9EH2;Q%19O2l2pAwUJ>Ixh7`9=&KvSjZ zQ+BDbE{ThCnK1zCz!*oH4rK8=p;GRS#FlHUzHqgT#-}ALu<>5e2{xMp@TEq9AhE&i zGN4B+WKSc8d~__;vysjbf@tjfFhU^xmS_h_r=?!tC|zQMq?DDwyG_YfkdV5S`n;vl zVm>^O-uiNQh^;F|MpVXZO~*P3{fB=_EgbE3{|OByf_PGrOCM_Np{MFiqb~$F!qzGb z(@q3ImpOuzo7)rKfxknPO>6{B$~JV1N!VZ9e5bXU-*D-kx=@=y zWh%`*kyl3DISAhB1O#%Ssnlkk4c$-Bx7qm3tJsNKy-P}Md8tn(W_^hr$n${`4>_!0 z9!fsL20$p;&s)$U!jZ4zxx5Y#R2+CK?r=n@D=aioQ4T$N!r$YVg*O1qlu70f!tv_@ zDy4}qsdo9C+C5K-7UkS?1XQ8>C6%&inF4y1dkI|bByi8CpN*9lmu|4P70ol`)iayMMzg>zrYOMNLX^@n+>SMyR|Bw%gj{zdl%Qmn1d5wNyC ztIUG%6$RAR%LJ@c?m2ZYkz%D@Bw(d}U71zttO6<}l6c(4**NQ&1m?8 zHu7f?M_b97LE?5cA@OGuBF``6wz*nyXi<(1DGI($Ni$jUtKwyUbg?+05S$^6+#3R^ zl0^!^J@pM>7fznY1CQl_hx5Rjd2e3N1J8UTbp7c(58T4)hoSEuDotly)p`D8VX@JW z8vuoeC%++CXIBck$1PlEhKLxouzlvtEm&A*rMUou?nQh;OyP4Dwolf(Gvu)fU+ZaJ zm26H5q)H(fQX`2S&}s)fbt)62N}<&pX!1yng;dLJd-a4=JC*6469gcYR)x>BdMq<_ z!FB!ml3Lc;%q6vKXEWXNi(9T7&P-kKfnY!SF|JaiHtkarHYS~U}x)&F>Tsf|Zo#Fe;hd-9k zXPwzxQp}cQe^Ic16StmD_)Uuu2bT2P%xpH(fbzwQ-N0x+bo!?wi z%XWU#y|TFF$^p*Qg_Vh~EeYE?#kr)G?G&f`+~Sri$2j3=6=ov&=T-&j(^I@h_RF59_I_v+$?%Y&V8 zvv2s^k{Z_O&LuT$r#s!37B^fT@3cvSdi>^+8rB)lB{ghkJl$6oH(Va_Oqo8a-5*#I zL+PaFlG?SCp6<29?UqM9Q|{qXyB}XtyE^Z=q;~DRr#rW}-SWU^%G!b2{qmCVtW%#$ zYS&JEy4M%CTORvNv1iooLrdzf&VMec-G_Ak)4j2{-SPlvI2Fm_IM&p|e<9NcOJ#w; zdIHV&TiT<4AuC8P2(I>6`Md6qhUeyv&)t&k zI-cDzcj!=d$IRiQCuiM|bkavwhFZ+|1qWQ!_{J zJ=DJA=1zLwCRX=;7P- zci_JJW^O?hmYNH{9Om`xhJ~gVEgdhx6d4%Id(w3n>&6_ zw0CCiSX7|%(0vCE-J_xNNtNiKqx6?T9s|+V!zX9v?v6%gjvl>z=D?9`{&?n&&TpBY zJKB*par~sE-G2P|(deFgPu|s5?nomyGdDMLfBV>>54DdTI(Fy$UF9eqJr36N)0q@O zl6N0IX1I=K?wvp0zWeaWlOi*FlHI!TAqEGu)5gie2Q*TO*qdtj-fK5?M6bWDDCSB3 zL*PXveMc3VJ9P5!_aBNh%I$oV4IQTrQ9rnjrUQV7qMSe4_ug|*Z$SLr$03)tUfer( zC^|NC>hPU2)s(z5d5%-_FvJ~)?*r!_qWQKT>7oK^ga+mhAAn!-BBUKUc>v6UraOz& zUB{0d0vohn_~C=m%&|M~ zJvuYjK6U8m@dJnF?{6PI1_SYeC{14^xsU*P?mLejhwj?vrQdb@?nCFN0_@@Wdk-F3 z)EJ_uGr6E!qw<3tq&GDWD;#CSa!?ny4IYlpfZpgLuodrfx;xaq3)~!q$?rXO=)QZ5 zACBIi%^jM*cMj3j7{s-=&=p9E7-+9-(jYs?F;kysdx5avg z4)Th@Ke#xp=r`&c9vRy!U@K+In9BQ@m7LfzKAdM9bGx>NGH%NjLQ|vL+oQLJ z=l<~ASN4C;tJjoeg?Y^p|XtVV9AMy{_$uB%3_?TB>5Hg>$S z*yMP7zuViMnjYPq9g=uM5%q8KT#Q=SDqCgt{_vbGs6`sT$c-joes`+)#~NUyWQ>ja=Ii>4lekZTNJ-`QG8>F@7&UMTcD`neG`zC@92=RPtlVt zZfuxW#y9)-m*gcmvX5LrZiJxNI|RjVl?;1A*f>%VtC8oBo4&rir#-xLV%j3tRU_9H zk?F}%NtH1-IqLIW-`?UT+?Ei#t|NAB8QU^6xuZQg-kx$J!xY>yzOy|tKDhtY1c8{W1dUml2q~66uJ+?3Gs*%SUT! z_k;#)e*~Gj>9(7g7-L`<$~kZf~d&H^SAr$ZO+m@CN-`R2=6f2 z%2-*?KL6Ut)yT_g%In>i$0l~QQD0-jd-DWSXL(%gGd!`!-bp5Inb>V%k%R26eUaNb zHPjv(#lBO_Xs7HCQqq!viZ0|a*&c#;dUVXc7EN#44=zSVe1aD}TSq6Sd>hl#?V(ZU zBRMW6?G^n|RUMK2J|-Bq0@&29DW9Nr!OHMt8I|_gK3ncj z6QJ8iG$NDEhdqjKH4;+B&{JAt*MFOVIKps@yVglX)xmxCY=pH9`z0H+pj^%+ihj^af$Q^xJaAo}Pz3UXYxBTH3qa^wF>ZFk z^?L%?K0di9KH=krK1qM)<5T;muy)4U(<(eo*D(e|a9bH1Dub>J?!-{c^OnJ(GU&?S zPK?MrZy6jagRTtj#K6q+mcgMi=t7Xr?{7~kE1|tbXtD^2-$usT6Cn!{087p1E`#uW zo;neNCF$53Z_|GOnV`}Y6k5CxQ=)2RfH`-%iS~rs-=5l=$EGJ8^V~8%Ha_r*}{8swB9{ot4;*(Xp{gbm#b1Y|^4G=CebJVv+$6vxITUs`0&%G0w;Y zLRwry0$nqCJ7U3!sqKOZF>gBjJ!SCbA~?0@rXoC92B-FHDwE6L)Ses5kGYOoAX?b%pnsRXYLVM*>CTdlX-hsQ>3a=c~BUK5iN ziMvMHLwloQgtsn=?;5$boQ9^hPVNarJp2KvahujawB9Q) zz9&%0RC{#SE@G+#5xs?=`D(UKOb$=ACx=>8UhqrCS820ICm)oOphq$(&hO2E%4sRo> znT5?+M1RwgqGN71Haw<{mGyJoJ#<8bD;YDsn`~PR{+(EH(~9q;71SuxWQ$JVC!CsO zdgxy=kwQy@2}n@64Pm>+-Drp_`;fhnEb>H(HK43!$Y3WS`L^$$ny&B_(rh;g+eS>j z$yAd`m&f-Y#4N7anbI|(+6j4DL@IAPR^zVSJAHz%q_>j#z8V5!IH6QjuEXhV)9tN< z)zRzPLzClf>lPQ{2!M__0-%VO6X%J^y!7s^Xoe8Gwq1>F?1+h&!7%(=WL}gYqAqf1 z=z!V{jgwtHoZM!X%Mej7^dT`g+z}@)lYJkCwu`We$pH0lg#4`#4Kw}WiF_=Is7Zp6 zv2nESI0R>`Woe39U})SSbrhB4k{u7jhM38*Jc7klzEM89Ugj$!tCVcfv!c0IVV#JVXy- z0S=uQ*@l)EX|{I~FC8#a=|%Kr)9^(UZ(;Q<&cbRGUtu+RLuVA*ulg4At{TOH>xeFj zW3+X=&f}u9(J3+c#N-HYtGAw(Cqa+;8TfN-nt1?mNsJL(Q$Dtb8B;K(^ir%IY$rv% z=_c;ZOPXj>MD0ww9mA4+dC9HAQ(K0`N4yU#H8K_=)9umrHb+fNVZ0REX0y-HU3uJ< z@$GQ#_Gz0`R^Fq_Wo@cJE?2e#h)tT>dxuB25u;g{b7E_Vj!$ic5Zc>|ml$r_@~FvD zi7i=q+qZ?nnwE+)l~D32Sr#RX?oxs`XR!qKY@NhwUBYmZ6Wo8hnJRfUDI+(xE0LS3kxkXejn&8v)d&t-tIe1xj~L_Oye;445qpCpw|tXF z{F{y#{8;A8BR-$Syqbi`H27pKO;OZYf_D1RZJ`$1*{brP(~up3>MC36R5-Zz&+By?e@REOTwj zU?5&l->xY)Jr#MPZ*QB#BogleugL(gRV2WUKFTuV^wbV@&)y3B>rmokRPb6Kq>>@r zs+e%3%kbOj2;|&1Nm?)mC}V>qTHZS@`_AR;0?fUx6y)sFjZQ=#`E*ilrltCh3TyIxLPQ zYMd~s@nDQb3LqgInhX65^S4f6I4QY1CC<}i9SK)SfX_P;wz4E_2_hhwh2}gQ-(x5l z3gf+Xx5p5$X{sNhL!D9oZh{3*avSk$kTeie(jkrO%At=PXcT( z3eYHCXP6d~#xWge9<>peeVnYpeTbc0nG(RN#EZGDoUE*>TV~O(R0@7LL*n*v+;h^Q z#HHEx+$w*958^yjcyh1zTv|l3OqkV+>TH3iUTt9&&fdWs(44pVRmT<^PSi3Hqjl`4 zNsAe(JR|u!3lXWjs&shg@Z`2(W<7c@9XdHScAX-&hBvhP)?0_^9I_O_3aHExjP;Ef zEmlsJ@Qo=iSfe~xQfwsOkaj@Zt_~espPl^B;rRo1vCD-WYsc@-%)6*E0hQ|M%Ly1I*5%&D?eX>l#|%;ZQpp!)X;R1z-=UrD$c^Eb~x#J6o!OI1XWr zhPBenI4R|who@m#F)S^HCB+asXT`Eb5W8pTQ0$+jVR`4=G{n(o8kQEr5<%n``XwY9 zTOHV#VMQv!D8XoS;Kq&Ta0`w{I;#oU`OocaRMUdX4vBq8M8YOTOpN{B9bl`v27$>$ z6@yH@G}XE4S}u({0g^$SQ=1r0z{rz=e=&l(p@1 zu~(GBt%h+TG^4e?r3GtigrWeFbq6qW$4;)einpp3?K{L%JZ^QxAqFVK9*s95tbC&T zEUNz8!1FLLqQNJa6KUk1Zd34}7OCO_4kJ&aTi4iN=XLE3fbkXxE{iy1{5aB%Acp)D zLcLER-xP^iDOpw|nL?0EA>Sq`lEm?ND$W#wWD5DlNzBSPaeAJTOd&`LVGf3?F<2=# z)i$Sln|V!XG`A_4Ot)hPvb`xT&9*u9ZN%}0H8!i!%{qfEtmfo^(6nr)vbv_ds;RTN zX^RC62)2NMi?tahLG_~4cC^v!s~YrwhT_f5dWiW99qY4>rYa;u1U5Sni~%dbWDK|C zX%M0s$=L`QiYALBunXl;GQ3>0NB(G{K|1}YWN}b(XpBJXzWq=b2(zW+3>X;Nbp{N8 zQ&}6dqG)xDixBiWK0rl5m_sB4gt96pgm`|)vk!^*@fda;Jl5#6))7s&xf?^%N3wu+ zjA|}UPtD~qs(EmF>V(LH(^Drz9-N*!A@Wp2gvf)_Q|E|0I6ZYj?1>0CM)eRJqr!u{ zOO8>~n8&DT%wtqwj$~}p?F7-WseA3%)V+3W>RvlG6)&bH5}T2D?buYj3Du5GojLU`jsdy8r9h-_5vzv%F@!GK|7@}3hEV5Xg!a_0us9*-z#;jMv`6(E=v8H4C))|o& zY@gv+y`DJQB&lx29vSN&XPCjvJPwa=vWeYw!c=`QoH~Rzj5yI5Lk#nWx;*dN8Dz^s zy~2tDVc@Z@*ZOUX2}Dj7;MkIIhlYw7^=Oz~`g0lQ3_=P~9d5 zE|KXq<(M(q)lT5lcm!lC?s~LWc9lg@v7&&%(v)kfv(+92P>0&uaSs>%*etd(g>hxu z(Ta;UUSe>V7+Z?Lk6d6sX7GYeMa3Lwq*j=RCfwQHk*^_U7nIBd zt7C%C1c6yd+=Ogv$r)&CX|8Xqu}e8_qqcL=j}>)N+|Slkpc+c*WQF@VGra(j?RC}I zWoK6VvJf>7RoSv0l+I>0IbYHFXp6NKF!IHY**xN+6rq=zY5PId9hd}z6YTL7?S=$Q z>P&%&X)qxT#-~9=8kDC&SsIiUfg)5=6lBQi5!SI7O3|deS^?&OQ;?M`jWK;lLl%8C z2{u~ssF|h4t~v6n(>Cb+Id94sWG^ib&JHNsT7`bve92@{0TW{m`63Q3;7m03l*$)z za7kwzv8PnNh=YqfMvK_neV6ygS(|2m}-5l&oaz5{bBEZfK)2bvi0j4O2eO<}f zq*s25*_zTYcIVJ$5{&7p-G^eJX~859OOO~+DM&>a@y3|jQo=ri$~DeF@84dBEI_AW zOOLA7IgQpJu`gPMAp^TAjT}3C5?&7vmz|t)(N=J1-@*@&Ba8z)J5Y`=4(f_97Z?}~ zs@hv!o-2$r<`N^q-tpn0Jedu!w@nb|tcJJ)($-LqULxj1t4ks4*^@vX^d|`8UK(N) zwJ>VugdBTLID^;DbPSW5BAl(Ux8!D|`J=lc23Y-^%t*KVvwD> zEh*B7$ET1}7!OGk#G_E^j646F5LP{`wS*i~{AM1uoJ};^{z!Lyorf;kvKT>0B8ctVm zGdG!I60jO|k)`C zePZiIAEc~_5vm^c4w^8~&dz!LfU#VobO2f)Z~rvabYQ@4^n(oR{c2j99HZ8`yfErr zf}_!{9T(4Lg5PIRXrElgqoO(i4X>DBJ&`!r7xU^Y_N5!FD@Hv|P_mQO;Hhq#)sdUi z;Ch*>I1g&Dy!W{-ces3lfu%jZ8o}9`^=Ebq1?ST-!S2J5Y8?EcNC)mb6JYj&nG`OS z@MNm0!A^S6wC#SCI$lIJWP^P@ z6T`uYF1B3F@J1R~LTO1Z`q14rT&Tu!7rBr8Sz_iz5E zcJ}JL!eLI0`EoU&FGi|sCi4DK0w)y1@x`#B7?u~qvSNrG|FmXo`A0B1a;|Cdh>4k% zfHo#FqY115+CVp}sjjFW}TJHDQFmxs|9K;f2)h!J< zs5y>DwIYb&m8F)9Yef({Qx?iwBkcTn|HFnk&W3GEuXTp907lg|3vl6q0iKNpYZ0(= zPZp~lzjYG<&YXEuOksA^gbOM7o*Cq4Si`V$H25vu(SU=2I>6f3?BT5zKvoX+Cf2nv z81=HMxv9njTRLZS;3U@oOk!K15L#5UR%KUgV}|vd%}up{;>7y9ab8vJjMR=Q3KQ77 z4_@?auSq2}hC1SILZF`tGcv5ugkY*q>+CxiQO4PQN(RNHb$D}ieS)!RUxcx1Uxcx3 zUxcx5Uxab#wFqP9z6fLMz6fLQz6fLUz6fLYz6fLc-f=YMBBz)`wO;htey(rEC|VmQ zofiq4Ypr`lqiSn!V7VE_5hRCT&U9;yfCYO^9^;=Q^wRD@H|-wu)9yh>4Ns~!b`*EV z&V|CT*5ZLy&m-*Z*zVvR&RL=wwh`uSNtkN{tD#IZ?TtnJx-TJW6Haj~L=~&O+7Jtx zT}F8kDl0;zMW`f3+-JtA4)v$%ix6frsW7s#@+7P&1lANHE9+IlnnGYrA+oZ{C9Ej~ z))aDE=cQO#H`BJp$Zd@wnggqC!kR*EYa9qx*64&ah1}LS5Ui~132O?ut#hM5u(BN_ ztSRKS#(`#Qj4WSckoSYmD617@DmyvV1kkJtyxfs~bFRbxK z?bmQI|4j|v><0XX5l*Sl3mInCTHo%_x(JkuBfmaieDrb!&dA{9;v3$$d*Ie?gllFC z*-(P(L#eQ0#Eu1{SV}UDxNJ+pZ2plzF0>m`!Nf@@cMKE6^dtzYa09%wf;!{COwHG{ z=TeMYK*o^ktT$OMt*|lD(NZ1T&P5w8h2)#tyf`q8sA}z~2a3*h1XFp|)XZ=rFw;_S zMk_Mev966eh_f`sTZ0@rvQfSoP+^Z)Lc+IpFyU`xHuz@u0j|A zBWip(zzET13bs|LErQrXO+##$rXhAm(-56o8lwM7Lv>h+c@$dQ)sy*Txln>pl`!E+Fv5#4!ZFJ!3NOM4$JC}Mya*#4vzwyuB5d&&hhtKc@LT*T4Er#X zDGJAQCBXjuow_FnxSYkOLYDIR` zBsU-r@2pP1yfnZDtc9>JtNn1Tn%x{mE^{&bnv3O|Guq_Ky|z39Ikl)W5U=SBC5yP~ z)V^A^`v3Mubm<8|hn@g*=LtY(ZiZmNi2({$+0-UzS8j-` zvd73Li#(pkm%MC<#0g9a;rvBNonB`fzA^{acy#fD1m+!P?mAW=;>uow;M2KrowGHNRh3)j-IM(7`wl%A%Q|PhUD`B5P1pZIh~+Qw_yy zd&p);{LM^!N7Qnh`s>{b-7S&7tsY;Au){J0Cj0yV$!)-D*aAXSHg>0&80&bhw8||o zUeqJRuei7e!-9CNiu?5gbaaBX88qPp**UO7 zrT~qIEe3VczsctfD1zFmCu9Ri!9!Msug0@A}kq`xZFLtBQ#fxLG^M(Z$j z4~N)$Hq1OD26k`|MeTxs%?y0M4c{QCiaQw8NN!t4lLM{+aT!sNxj+=JFZgAWdJtf^ zeGh47RkEkT>qT`SXbppJOjM=11%8_iVfOtWsEz9zCo9AjMZAR#0#ek@g|J=Jw%*e( z4)Kd?RfctXoDk4i`>)(Y94=A6r9?t-2JCkit8{{y#IuVw2D1=m;v4iB&TZa+FTv-{ zgD*IAxDP)bXMW3TZfDn*;o^L2-r63%T7{`WzUVl#GnX2BQS}pu8BZG8FS8_}_WLY3 zO{g$cvw6nsoM$5Lq1JSAbsFI2^NeN;0ysk;vJ-TU@;E<8pj}@~pj}=}pj~0i#V6dg zxnSV}eKTc2X5rEWy}cQHRpr8X&W`pE6ey2=X*0pQ}evNr`ch`y2 zdifK_mH#q0{=MLT!-tECjMyhe-M+i`43o6^WQ!G*HZrTz?DJ# zBO)ryEx&r8~h;+LLy4?fa6)D{nY25%ilxG)Kl|WxKfKZe>TfkC8!27M`=_!19 zlvej3t?q$6?twk!DSOJTzqYX(!*v{D-;XP|jtRe8z(r+af|_Q)Z<8C#eG9Ow1(u2g zDi!6$sn`OR!Yrnu%tt3oMjPAeXEYIW4dV-wGNx)Ka=9FIczLQJFJ_yO7qiO9i+N?_ z#r}Qd#RM_(Vu~1fF$avinCnGeZWBaNBwpH3me?RKZIG8XL=1_SHbe}FEn-N#v>{?Z zY!O4^#gsCl(uUH+26<_NytE-=NW8QmVnA#WL*k_k5d&h27!ogSh!_xCNn(S%v_W3l z5HTcP+7K}ywum9|(uRluu|*7tmo|vX7HzcwYXo^9?G$j8rD}OuQ7w-{td^G*)$#;2 z&453t+QoC5OKticxi*E>?b0I#LIpn zVo1E+KHNxa39$_&i4F34`-p9b7+^!hfY{`v4G}})r4127;`R1ndf7hQ!<4bqaZ)J{ zjZU?X(xUbehgkb4EovVLYMN1MYa6VN?7NP&2uhlZ@g)r;fodS7#SLUjXy&pY%R5Vw z4&S_9q0P%oj2IHHS7>KIf+L2+>lNA=kP#6>;`Ivc3|5QH%SKh^=6Hp621G0>8&$-R zc)dcq2G|fWBwiL|q#^Or22s62$2OEEHpuH0+8GdW#E^KsLdP~l46q^6fY{{az!xzj zUfNKSl!d&^2YJ0h$2LR^upweVZ1Q@AHeT=W&FdA~H6Y?hL*iwHwqSPn?x9Yr+2q3J z2yRI?^GbSq3N$yB6jk9Qs4fX;no&|*n=L4*zzI|ZF4>|2mjq*%uUfkFz+kN2O>tn* zf;VzxR(GGU67QnPEMB$T-)V!_TP*Ebv=3g4v9t?sKKa)SRb)INGp2h=#@+*x!6be8 z5=h|J2JBrKaW=zQ} zTGg`@Zwp!31@pS_#+Jo+(TpYWgwF0oFn&<95rB zm+*9fK}nWuuLZBdyL<)(9eh0xUcl46nAw2$#!N|Gx)Y}$GuG8kAJaX~-`o?w^TtRE z7eHAO2w(4kgM!ks==Ue`3wpZ%XRcVZYH3#s-#647Ols`zUD>o^QCEFSaY#)tDUwU6 zXz%J>8I(?79`)iCOL$Y!f+fA3y+O<8(HcI7h!_2=4p#RB-SqVIbi>na54=rnE6Y1O z%Sy|RNxdGYeqmEvXK5+dmYpk4SkS$)w|-#_&zC0K`$hPg8WL)10&0_r3BG=;r|AEm zwx+g<&ib|qou(OvE)EvM;_jZH<^Lv%mWKZuy)fM}8vp5QDlJJiZ_3dDFxxC){2y!+ z_@|%TZRKt}H3&{y5k%R$MV_AcnG!m2%Mt|bT|;5> z=hvF*?$7G#{){eAVqNp8E1f;1rK!Cw)-jLsoUQXMi1=>aI^VGo-!oh1LvlUdPq)su zGU6Nk<*lXzNp^jWTjx72;#;|OzNHc0Ra@s<7V$l}b-t4#zBjkdcXGrx?1ZhRcX7lw zZR>oC$j4{*U~sVe?z_{wJ^uy4K>i!de|&Zi1`R^^wu5#E`UL~=GWuX(e*_K=`csCI zxm#c9H+Y|&jN1eT?@02FY+D0K9vI;NPC@Ps@bw!KSh28-F@wW$jd+f1Ckh|u!euH<4 zkTKx>@4p7I-!N!`JA5Rm_HW=YW59oeed90S84=_zhx-iP$A`!M4IE)i_>aGm(z5c3 z@e?Lanw-m5;oC~@qQy6^M2$PsN~yEcUjw(g6q}=+y~lPhvzNf(U0RD*SpJj$H1LP` zpf#rWC&JGS>0$x$-~6xmdoYmrTjt^j$iE5veV@@kxfAdD!rHkD;|$(QCkgToS@k*g zl)<)WI+hkdUQi~4%xB^#OUHp%#C0t@rZ~3Thp+b=eD&~u;$faL6PPQt_{_kk4xdtd z_^d?)46DZ{3OfvbM!x=Y4aV3CgBLAW*0p>kUU!yCWFPo9VPt%L91Tw;gck@C)^egDbpw!qcxBdnF6`_pdSN2d3q$*PB{=sJ4bRx zYdFSaE(GmF$y_Iy^C$x%W$u)W(Hc%PnFm2zD4FLaa}Q-eq|BR=FKx23)nbB}tKqReQGDd4yU@}L8)+?Enl9@{x5Giw> zWQ^9(YcdyuhALs0km$(Y?91+%793j&5|)%L$}F%3fgg! z8F~^tc;2N9h?E%(8uP$t4ab=bUac7{1&!g=k{JuP1w_*3O2%jnOHBqZ<_wle<|N6? zrwoXcStA*vH7qlk%RnP5!*8Ys&xLSX@F8tIT-s)|hLcQYBWNds#_*Tm=kp-k77$5$ zS29LxIN4+aZE^$9kJ3h?HIUPvaiFu`ZNMk$cN^hnzdH#Z_Sv5qxcq&hsUFvL1xN*T z%}nWPQqaYUr#ThY0zc#F``maipmr@^wdH_Hbv+tKW~Fqs!rz8ZJ3bxw@EL}DraiOq ziPA>CIrz-QXC6L`KLbAMEJ`N_#NO`D8>1lwe(63O{|ZM9Kuf!i!Y9(*2|u5w6m~THQP=_o;Hgmlb1aI&I9~86obKh%_R?jPAh=32w!0;w zRfxuh$x6Z{&NR^4R!&adP%GY}#mm0+czl@NrJzwq+se{%zIrw-#PBt7_+)!Ct-VxJ zvOh!^?QC0FR`R*8tyR34GlJkC_}M?RzvVLo6EgO1?60u0@JD=K1|lEh9|9WXVPDyz z70d8)*3K@zZ(n4h~wRkIa$2`H8*>+T_AZVVA7ptb{uGoF_Rp z)=2K+M6S$V%A1M^eD_F(N+OvJDH&X0=v=Y5^91gGfyJK92xlI!GhrSuJ)eTcyg_

w9rb)V0evX3W>~k%-B97 z^fJOR6mf`Rw`g6-=pkBuP5Sf^+&7ga_Cb1eVT!2j; z(gzeGda2bf3gYd$x$6qs48FHt9YVhZ4Ts=!C_W|laCXX189wFsP)iAlqrHHh9HwPi zGGjLQD+4{)HxoX3HVIJhdL+WL!I5=XZ(ED7lL3i+$s1>#b+8m zf#pz34uN5jRes#oWfT3v(LJ zg-Yl5=6k$XA%DPEc^mAb{8dN?-Sxs(z&_f05a@h9GWo)~BikLXLB3pZ`B~vY@GV}v zI9wzCFN*)K;-3Y6E`v@N|7`J}A^xG_e?k2C@p$83F8+G)_qX!t$$fla5F9xFg6Ykc z{>JHl0A@KnHP`KW6t$M|6*BIATJQ7=TIm+DEy6nsUstE_Sss3h^js)Cb2F~zY00gS z+!*1vC3mv)tPmb8J+q~!M0#$J9Da5gPa*rU_3J{Z|k?fG+$;`uszAUwSpmw)yUgTWZ^M{5%Vkf8>^WQZoGyDBGH%bq((@JR`Gw-a zPoi5qGiA@$#fLAP+A~soe^7kQ3g2Gg$IG5hh3_VNYGqHI>{%gu_RF|EcS_GH>A6ht zWMxk%drlMIc=5fd_|_@DP~q=czlx4l;aP=0pz@t4dv=mN3uMnHD(@Smr%UlHlRbOO zo^siZeI+*d14&pH1^%?m)SJm!99seNgT# za<7s5&s{veIYZt3@esO&b?1(z`&7u80LQTf;+u={kk66WqUH1EKJE^|IL&8~^xQ2y zebTd|^emU2F6lW=dOne!|513o^z=#3Nz(K8Np4S@_zshvX6e}^JufSKn)F;GJx58; zE7DUdzUk7Fm!8L^=Q)KRDm~{)Pqp+sFFljRS0X**rRP5Bc~s&1O3%sCbCC2rCOzZC zx1aQkm7bqS&%FvCE5!hsGOq6-^=CUEwS=Lb{VJ!PD`6UVyy-#fayrrF(B zCAYuiz9PBfBzJ)1u9w{Dl6y{aBP6#_a)(Q9q~tD<+;YinkX(Ps?c%f-`UO8kdl-x{ z?0ccppN9MVcH0KeRXd)f@$S7AxBpzs7X~5dF>7B~oF43aRV8!_+253zyY39-$4^3+ zyWt3~!^*RZtsWFAcg6TW4Xh&%^zn0F>6tK(@}Gy_!Sn^eclLMun2lfe<==tL zc)}MaI(_iIgqhs6n6L2Z|3$a+gFT7*!nfwq#Wwg7pI_a&$lb@#UODgHUha)YJDw@` zb>u7C@mWYep8+F0{0{Xa!w}C&pq~Vn&ji_X6Vk3(T1^JZg9RoOm+7R)6*AzqVz2{ zTv+#F#`VnCd~2oj966kF_vLR>{_ejQj>NXb7B2YU1ZAH7>?o{9S#IC7espv04r>R6 zY=`t53Oo7y$jZ4dEVpzNvUSK;&SzeLJ$%Ykj~*GydBn!bC5VsVgN~$&&6OJd-<*3I z<<524_bpu;a^EsH45z`R+@n_hLAI!&842`k`o|Dsp*stWwvclci`&%Ur1;lvLb z4#SV2pLnVCoFKclMZ4uwsd4a)A&y@d=OTzr zD)jFF(l<^2ru-4oJHXNz1n*1lTe9;QOHYtpEBqJO$@E_`!}JCNEWD7t!1|4z+}S8U z?o$j!dROf7UsI|Oe!&B)rpG)i{{u|Nmk9N!Y^j$7K@br_uClMd*=zt#9ll8!yZ@&XQe1;=kwD-H! zp8x0W>GWrq;km+>Nbav_kK9Z8Miu$O@T^gE`@+%I9y7Ts zQQoXa1JUpHN63gn7@i61=hF?cU$^ka%6oPr>y^I0tDRhkd|^D3 zjjt~}Q2gIVzA&Co%noejDxG7M&JnWrIm^#N_Lr@m?=9#*SWdTFeigFsnEsyJnbyy| z6rSz#knjk}zodHiB+>)>Dlf9|LgmcEiGwVD5*<%p_>Rp#Hso*X@OWyBA6F5qUIxMW z=)aiXcUn9__=f7sy(rg3p#MnWSHa~|hw@*#LlE3P&d0m$k-x0BGcXP!i-Px2|A?~( z1p&Lb?QEQY9_#P$txD_fDyp_Ye&fmEOKW)g!UF7KzFlbj#@hTe#WzWK4|6N>?^*f^ z**!;?T<%fSCzNCE_UUwA3eTKOwNd_VIW&(z`7}o>F<7u73X&s|SVb_l~1n zA^Y?ax_!Bd7P^_-E}Hk`p^s0u)d%baS2&(0+$UTwe4+3PYj=fgr`q4$W^Z3OWgpL< zSvG&@$z6*4X8S9dL%o}Gq2>w0BsUB8(*7~C8D3a79p%7$TVieyT!;P*Pj->j-=5rc z*8gR~3qz6%m9J{tx)b$n8&KBIAUzDnSUL;q`m5gk8Rf?M@aiyzZ_d4-{65-nMgAV) zWeWeE@YO1(XKG#l@7gJkG+I1Cb`|Oc%lBf~2e)z?)Sp4mT|521Jv?Z!{$Vq|rB12M z_g`n}>dD`4^|dGeHN-=?m!Y4}Z=`>?^e>bC^G$za<;Mqme!f11+;#cGEnn8;S4vN< zx0iK4u>1^yM<MYIyPe2?*5CImorUZTmM?wbGPfuE zndu3_QPzG6*~Q+jE6?K11dBcjPmk>~0gx4O%RpH|HK#`E09n9x1tAmCx%c zpIYOu%O8h)Wxbr?{X{TF?h~V3?^NmAVEtm4z1qSH*)uKQ`@(iBj}cX`A^fAA>$CeK zA2_}}fp}TZzi06jvWu)dGP#M$#|@U=LiU^1Z-n8}HqVC_(4VthZb!MZKkMiDADn^l zvGvZYD?6=TA});!?ZU4MubAX^Kd{~@bCncUsx2H~{BD7`s%u(^G?mr)KZ$5Dne`5*7W@SfaI z)$bK3?`=W(k)>xt?qrqQsSHN}jInw?qUu4b=bLk1Q+!XDp1#}{yu5?^gahG?$lnVQ z@#+R#{eY_7EuYtiA6mHt+4sC34SNjtg=5VvWWQ~ELGF&(5JExqxA^;V+k3y1J#RS4 z>$BbF7AlA3iG$$j5_iA2lg)#t-7?7Q^(?q7??aW|btV^v>lE)V#=G2^Xm6|^#~VM+ z^+3NAK{p@3@Rz~^EZr}KUzlb4u-TQ!k8dHQFx2*GE5{;U_Nz~te4%m&$Jr+bk{*T? z!0gYjLHGp^yf^LpV}jtY?@Z5sRq@Rb{TS%I|E>YKn@9QlZQ*>k>ucyAS^tj0xIjCX zAe{JQ$xnw%{RdmSC}f*ZpUL-K*hjuyEdGtt%bh>F8hTleM)TSMr57Hw%L+)Z#FQoqnBJx@RnpJSxw zMd+a&drHsM(8K3Y$n)7o?(NbuO?uW#PrLLyDSL)U&qdO+m*n4-e8U{K_a)>%?S6NH zyBWDB9c0l4kE0y7hj$M6`Gk_Y3Hik52K67mLcOP+zoI^(MddD0J^!Wh`*~|08}hAk z?^k&5&g93uZdd-_kpHLbzYuily9oC184mpi&fmH6e5K>PLwp~jRqf@LJ)Q4_5p++f zuAc39B=U#rP5e-{J!^AT|0xLIme?bp7P4Rj+Q1as?e}m-b zg~peCP4YWS{$|NPA^G~|kQy}*7?IOs5j2jPzBuhBj#*UP@w zQNDb>0{$S}vv$vYeSY`pR3iuH00&raR6!4)D(hdu+#&lA71muepKcJmW97OwKen7` z?E}v$UHeTZ4uTJ?-$nbwdf^J-fpGi5{RY|{_kDgUI|kV}iTePO8#0R0NUzb?=39-v zHb2JbYpZrM`sUnjhBxObQGcknNA>Yg%a1Tz?skV)nw@=NKcg4I(covhyKJ!c8z1aw z`Ih|&`a{l-+N_=y!pn_6$X&UF)?{+0E~48PUb28L=HJLKme)tredI9NWJXczJ zD)Qg4dLHJQE&sysF~rAlXBzY{9}ZK$IbQbsJj-y*BXV@HkJIjMpOsHv_&;j*kJ)(M z7p}4RgYZ`51M{N~^`N}GH@n{Id64~ql}G0ONvH>`ZzIj!Sb4JNd+wDZI1asu~WJ^Ayb@9kF7gWwwBuR}lc^K#Q0t{2fyp2aA~(}A};0PO@}znlPoXS~%*l(+if!De?~I30F#{0k8u%cB=| zQQwJ{o=k2N>}9@uIG!%{14lUi3+fl~j>pmsf+vo1cTeF1x*YFtjJvr7?*8&IV!McfTgpL{V%hxux`5=r*}=ITUhrErF*|2P7g=Y z{kZz86?9LjUb-jULiYA4bndPmCBBK`J41X6#rIwD4H4h|;#(%ZR`H!GzJCm+evC`v zn=ihc_~wc4E%9w9z6SA?h;O3!{vf`0EWICBPZ8hV;u|i$r^NRs@f|3>oy7OfWEh3? z-Y>qV#kZUI{$crx{z`neiEq95b`am2;`@pChFQL3a)&A%tHpPO;=Ne*Z7;sP#MdRh z!^C%j_};g8Gr1kb*Dk)v;%gD#YvTJ<_TlGb@SIXTR(ywu?|JdPA-*#4jTGMy@jW8G z7sa=a`1*_Qb*1+%@jW8Gq2hZ_`LaQLH;L~~@%_`<(J9q0i|+>UU1xll8;b7(@of^{ zcg6SZJku9u_uYqX5afkNs9)|DzDDkRx#MV@aZy;1R>ulTQ3{J#_bBbpbC6935QuIK0$ zci#}-n|nCkr1U)@cct9FPW12)HDF-V^kOKOT0PfU#mlZb2xEdeuee- zncT2B#6fVl@%7}7LVS;JT$BA7`gaz=Z`Du!N_O0Wa_$HE-;|CG7^1 zAv^OhVyy9C?>2C6#5l-j!Z3I5-r4m$3YXz$s-ApP_2yeBPsVfCe$M~Da~)s7@^3l4 z8n3a!)0aCaq#Fdk*S!9m8IF799wT?e5l+8B_>NJI51Q=mT)C6wj*?q1cVOuA%(Lga z9o=TvhWu)qR|mOMfH@DtE3oja$=@$~`pqIPWX}$L-=jwL^j_;PGP&JBXF6X&`O^JV z`TOe$j;AX88yUyfB7eyD6^o}Qx8MM5LIIy@`MM$hit_PJv#YRf1Ju0DRI}h!La_1d~dCAY-tvVVm*YV5Xa^3zm%7OEPDQJImPqcPl z$UXr(SP!4umGSh2*Fqn{r}y)E63njj_!r83MfLcrHm?YRU!&e(_MN{;<^SW+#C7?q zdB|V*zNB^dBST2XN#;Oz=W2YvMEQPmqtjuqd{j^aX!Wm>Rn&q>(rNL zJKyQ5hZ*$~%OS^n|2oo1_ff=0w_N+D*9rRJ|eY79s z(|xa?Uh|o1{nm#336_4?WaYadSBm`RbMz8-L-mWdbUWU(*xh>;x_hALb48yd`t_QJ zJ=5iUYmagF0>!_x;;&WwzdwxO8*)Pxe^&ADt@zg{p1T##m5OJ8=o3XBDf&5z|7VK- zBE>&h@&6g+!1encivKpn|F-n)rTG6>`i>X<3dM7Z=&vcB5u(4ZcovHOZN-0r=zpHW zc!S^$#s3!S0iSaf{}YPmAJX?b#dDbGCyPE$^oJDBdy3~biYG7nmqni?`d?Ac`D{`? zlvp`jnqOl1&=>yG?8xNjs2t8!J}g!_6c)Jr=A+%cSnj#fx1ID&mA+p~Uz7BmE`3Kz z--*)qn)G~KZi)0gZ~1g-erM_Xf%Mf#-%9Cgm%ioF_j~C%Tkea>_nW2f&zA3f;i=L$ zP5O?PK75_jk(2yJhDXOZSHSeATCSP49->{?gkaz2l|#8kOhMD$iS0 zo_mQtQ}i#1euc{O5tZkSD$g#(|B#ocUJt5EB@^i|5b|rWyQ0r;(tf_ju!m_#j`^6O^Ro*=x->VxuSnn z@h=hm=PK9lEB@!zo_ZAjFBH$;rSDgYCoB4L(VIlSTk*WEcpg zeAq+vV3zXXud-v5%Hc5O!$B&C@5qjaWXBD%V^`7hqVFsE1+wEl*>Sb(n6LQXQa+4P z{P!yUkEQQG#XnH-uNM7!#q$-#^LNFwkLdkGUoQH0760jqzrW&tK=FU1a`=|we?jpK zQ2c+9z7EmPQ9O%8e_HX_cXrVdUs60XML$jP&lmltst1=U{>K%6m*T%u@w}#Z9#%XR zqAwJ^O7x#9o@X4eT8W`gU+ntB-)-})!n$7_Z1bGT5BJA+n-<&?+>3e2 zP_XqW6mgXTnn!jy8_@?cH z;OdOuM|io4^0-H(b}L9|5xz+H65%t12g#1j zpyLUjuz6b{e8uqk?DvH)nP%a^{owBh?>*wb-Svb^kdL6Bxk~lpmYtpNRoHjuzSw7~ zarrSNKHpw*gyZ{0JKu27w*{#Iyj;gT>+`SN>&SPO-y>t`7P2p@{Ejnv5WZ&gOm2HC z$1wbT==$&*y7t_JbrJX9{#*D3rTg{+7z}-wZ*pGSZSe-dkF8(9ezw*@N0@$`pPSnk z?r@OHl}w_$KD@k~Zr}P-kBl%79Y|5L~=u=oqv$E;qj&GYNNXD>qyJS_+= zfy<}l=Z6oBr^pB={j8>1*JUkGfxkj>~}Q|Kf80`Hd)?KgB^m zzv55+$RCB%rZXYKhdPL#1*T1=6Ey1B2$wQ^B0T>jr_tSnu+ew93^8q)zQXxwFLg!y zkM9r!Z=iim?~n5$eC`~8`0#mqD%NHQdl#R5L7xaW$Z*Y&`}Eyy2KNht+{N#0Gk7Od syC9Fx^Y`N4c0ulD5c~BDa`(X9o(C0!f?VPKZ3Yi~>KFZjYVcJ3KMpBLPXGV_ diff --git a/docs/public/config/failsafe/parameters.json b/docs/public/config/failsafe/parameters.json index 4bf9a32275..193d313184 100644 --- a/docs/public/config/failsafe/parameters.json +++ b/docs/public/config/failsafe/parameters.json @@ -1 +1 @@ -{"parameters": [{"category": "Standard", "default": 75, "group": "UAVCAN Motor Parameters", "longDesc": "Speed controller bandwidth, in Hz. Higher values result in faster speed and current rise times, but may result in overshoot and higher current consumption. For fixed-wing aircraft, this value should be less than 50 Hz; for multirotors, values up to 100 Hz may provide improvements in responsiveness.", "max": 250, "min": 10, "name": "ctl_bw", "shortDesc": "Speed controller bandwidth", "type": "Int32", "units": "Hz"}, {"category": "Standard", "default": 1, "group": "UAVCAN Motor Parameters", "longDesc": "Motor spin direction as detected during initial enumeration. Use 0 or 1 to reverse direction.", "max": 1, "min": 0, "name": "ctl_dir", "shortDesc": "Reverse direction", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "UAVCAN Motor Parameters", "longDesc": "Speed (RPM) controller gain. Determines controller\n aggressiveness; units are amp-seconds per radian. Systems with\n higher rotational inertia (large props) will need gain increased;\n systems with low rotational inertia (small props) may need gain\n decreased. Higher values result in faster response, but may result\n in oscillation and excessive overshoot. Lower values result in a\n slower, smoother response.", "max": 1.0, "min": 0.0, "name": "ctl_gain", "shortDesc": "Speed (RPM) controller gain", "type": "Float", "units": "C/rad"}, {"category": "Standard", "decimalPlaces": 3, "default": 3.5, "group": "UAVCAN Motor Parameters", "longDesc": "Idle speed (e Hz)", "max": 100.0, "min": 0.0, "name": "ctl_hz_idle", "shortDesc": "Idle speed (e Hz)", "type": "Float", "units": "Hz"}, {"category": "Standard", "default": 25, "group": "UAVCAN Motor Parameters", "longDesc": "Spin-up rate (e Hz/s)", "max": 1000, "min": 5, "name": "ctl_start_rate", "shortDesc": "Spin-up rate (e Hz/s)", "type": "Int32", "units": "1/s^2"}, {"category": "Standard", "default": 0, "group": "UAVCAN Motor Parameters", "longDesc": "Index of this ESC in throttle command messages.", "max": 15, "min": 0, "name": "esc_index", "shortDesc": "Index of this ESC in throttle command messages.", "type": "Int32"}, {"category": "Standard", "default": 20034, "group": "UAVCAN Motor Parameters", "longDesc": "Extended status ID", "max": 1000000, "min": 1, "name": "id_ext_status", "shortDesc": "Extended status ID", "type": "Int32"}, {"category": "Standard", "default": 50000, "group": "UAVCAN Motor Parameters", "longDesc": "Extended status interval (\u00b5s)", "max": 1000000, "min": 0, "name": "int_ext_status", "shortDesc": "Extended status interval (\u00b5s)", "type": "Int32", "units": "us"}, {"category": "Standard", "default": 50000, "group": "UAVCAN Motor Parameters", "longDesc": "ESC status interval (\u00b5s)", "max": 1000000, "name": "int_status", "shortDesc": "ESC status interval (\u00b5s)", "type": "Int32", "units": "us"}, {"category": "Standard", "decimalPlaces": 3, "default": 12.0, "group": "UAVCAN Motor Parameters", "longDesc": "Motor current limit in amps. This determines the maximum\n current controller setpoint, as well as the maximum allowable\n current setpoint slew rate. This value should generally be set to\n the continuous current rating listed in the motor\u2019s specification\n sheet, or set equal to the motor\u2019s specified continuous power\n divided by the motor voltage limit.", "max": 80.0, "min": 1.0, "name": "mot_i_max", "shortDesc": "Motor current limit in amps", "type": "Float", "units": "A"}, {"category": "Standard", "default": 2300, "group": "UAVCAN Motor Parameters", "longDesc": "Motor Kv in RPM per volt. This can be taken from the motor\u2019s\n specification sheet; accuracy will help control performance but\n some deviation from the specified value is acceptable.", "max": 4000, "min": 0, "name": "mot_kv", "shortDesc": "Motor Kv in RPM per volt", "type": "Int32", "units": "rpm/V"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "UAVCAN Motor Parameters", "longDesc": "READ ONLY: Motor inductance in henries. This is measured on start-up.", "name": "mot_ls", "shortDesc": "READ ONLY: Motor inductance in henries.", "type": "Float", "units": "H"}, {"category": "Standard", "default": 14, "group": "UAVCAN Motor Parameters", "longDesc": "Number of motor poles. Used to convert mechanical speeds to\n electrical speeds. This number should be taken from the motor\u2019s\n specification sheet.", "max": 40, "min": 2, "name": "mot_num_poles", "shortDesc": "Number of motor poles.", "type": "Int32"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.0, "group": "UAVCAN Motor Parameters", "longDesc": "READ ONLY: Motor resistance in ohms. This is measured on start-up. When\n tuning a new motor, check that this value is approximately equal\n to the value shown in the motor\u2019s specification sheet.", "name": "mot_rs", "shortDesc": "READ ONLY: Motor resistance in ohms", "type": "Float", "units": "Ohm"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.5, "group": "UAVCAN Motor Parameters", "longDesc": "Acceleration limit (V)", "max": 1.0, "min": 0.01, "name": "mot_v_accel", "shortDesc": "Acceleration limit (V)", "type": "Float", "units": "V"}, {"category": "Standard", "decimalPlaces": 3, "default": 14.8, "group": "UAVCAN Motor Parameters", "longDesc": "Motor voltage limit in volts. The current controller\u2019s\n commanded voltage will never exceed this value. Note that this may\n safely be above the nominal voltage of the motor; to determine the\n actual motor voltage limit, divide the motor\u2019s rated power by the\n motor current limit.", "min": 0.0, "name": "mot_v_max", "shortDesc": "Motor voltage limit in volts", "type": "Float", "units": "V"}, {"category": "Standard", "default": 2, "group": "UAVCAN GNSS", "longDesc": "Dynamic model used in the GNSS positioning engine. 0 \u2013\n Automotive, 1 \u2013 Sea, 2 \u2013 Airborne.\n ", "max": 2, "min": 0, "name": "gnss.dyn_model", "shortDesc": "GNSS dynamic model", "type": "Int32", "values": [{"description": "Automotive", "value": 0}, {"description": "Sea", "value": 1}, {"description": "Airborne", "value": 2}]}, {"category": "Standard", "default": 1, "group": "UAVCAN GNSS", "longDesc": "Broadcast the old (deprecated) GNSS fix message\n uavcan.equipment.gnss.Fix alongside the new alternative\n uavcan.equipment.gnss.Fix2. It is recommended to\n disable this feature to reduce the CAN bus traffic.\n ", "max": 1, "min": 0, "name": "gnss.old_fix_msg", "shortDesc": "Broadcast old GNSS fix message", "type": "Int32", "values": [{"description": "Fix2", "value": 0}, {"description": "Fix and Fix2", "value": 1}]}, {"category": "Standard", "default": 0, "group": "UAVCAN GNSS", "longDesc": "Set the device health to Warning if the dimensionality of\n the GNSS solution is less than this value. 3 for the full (3D)\n solution, 2 for planar (2D) solution, 1 for time-only solution,\n 0 disables the feature.\n ", "max": 3, "min": 0, "name": "gnss.warn_dimens", "shortDesc": "device health warning", "type": "Int32", "values": [{"description": "disables the feature", "value": 0}, {"description": "time-only solution", "value": 1}, {"description": "planar (2D) solution", "value": 2}, {"description": "full (3D) solution", "value": 3}]}, {"category": "Standard", "default": 0, "group": "UAVCAN GNSS", "longDesc": "Set the device health to Warning if the number of satellites\n used in the GNSS solution is below this threshold. Zero\n disables the feature\n ", "name": "gnss.warn_sats", "shortDesc": "", "type": "Int32"}, {"category": "Standard", "default": 0, "group": "UAVCAN GNSS", "longDesc": "Set the device health to Warning if the number of satellites\n used in the GNSS solution is below this threshold. Zero\n disables the feature\n ", "max": 1000000, "min": 0, "name": "uavcan.pubp-pres", "shortDesc": "", "type": "Int32", "units": "us"}, {"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.", "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", "rebootRequired": true, "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", "rebootRequired": true, "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", "rebootRequired": true, "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": 3, "default": 0.55, "group": "Airspeed Validator", "longDesc": "The synthetic airspeed estimate (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.001, "name": "ASPD_WERR_THR", "shortDesc": "Horizontal wind uncertainty threshold for synthetic airspeed", "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 RC channel used to enable/disable auto tuning.", "max": 6, "min": 0, "name": "FW_AT_MAN_AUX", "shortDesc": "Enable/disable auto tuning using an RC 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", "default": 0, "group": "Autotune", "longDesc": "WARNING: this will inject steps to the rate controller\nand can be dangerous. Only activate if you know what you\nare doing, and in a safe environment.\nAny motion of the remote stick will abort the signal\ninjection and reset this parameter\nBest is to perform the identification in position or\nhold mode.\nIncrease the amplitude of the injected signal using\nFW_AT_SYSID_AMP for more signal/noise ratio", "name": "FW_AT_START", "shortDesc": "Start the autotuning sequence", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Autotune", "longDesc": "This parameter scales the signal sent to the\nrate controller during system identification.", "max": 6.0, "min": 0.1, "name": "FW_AT_SYSID_AMP", "shortDesc": "Amplitude of the injected signal", "type": "Float"}, {"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": 20.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": 0, "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", "default": 0, "group": "Autotune", "longDesc": "WARNING: this will inject steps to the rate controller\nand can be dangerous. Only activate if you know what you\nare doing, and in a safe environment.\nAny motion of the remote stick will abort the signal\ninjection and reset this parameter\nBest is to perform the identification in position or\nhold mode.\nIncrease the amplitude of the injected signal using\nMC_AT_SYSID_AMP for more signal/noise ratio", "name": "MC_AT_START", "shortDesc": "Start the autotuning sequence", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"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'\nmeans that measurements are expected to come from a power module. If the value is set to\n'External' then the system expects to receive mavlink battery status messages.\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.", "name": "BAT1_SOURCE", "rebootRequired": true, "shortDesc": "Battery 1 monitoring source", "type": "Int32", "values": [{"description": "Disabled", "value": -1}, {"description": "Power Module", "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'\nmeans that measurements are expected to come from a power module. If the value is set to\n'External' then the system expects to receive mavlink battery status messages.\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.", "name": "BAT2_SOURCE", "rebootRequired": true, "shortDesc": "Battery 2 monitoring source", "type": "Int32", "values": [{"description": "Disabled", "value": -1}, {"description": "Power Module", "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'\nmeans that measurements are expected to come from a power module. If the value is set to\n'External' then the system expects to receive mavlink battery status messages.\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.", "name": "BAT3_SOURCE", "rebootRequired": true, "shortDesc": "Battery 3 monitoring source", "type": "Int32", "values": [{"description": "Disabled", "value": -1}, {"description": "Power Module", "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\nfor COM_RC_ARM_HYST 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": "Measures taken when a check defined by EKF2_GPS_CHECK is failing.", "name": "COM_ARM_WO_GPS", "shortDesc": "GPS preflight check", "type": "Int32", "values": [{"description": "Deny arming", "value": 0}, {"description": "Warning only", "value": 1}, {"description": "Disabled", "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": "Hold", "index": 1}, {"description": "Offboard", "index": 2}], "category": "Standard", "default": 0, "group": "Commander", "longDesc": "Specify modes in which datalink loss is ignored and the failsafe action not triggered.", "max": 7, "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 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 and the user cannot take over via stick movements (switching modes is still allowed).", "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": "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": "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": "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": "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": "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": "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": 3, "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, "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", "default": 0, "group": "Commander", "longDesc": "This sets the flight mode that will be used if navigation accuracy is no longer adequate for position control in manual Position mode.", "name": "COM_POSCTL_NAVL", "shortDesc": "Position mode navigation loss response", "type": "Int32", "values": [{"description": "Altitude mode", "value": 0}, {"description": "Land mode (descend)", "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": "Hold", "index": 1}, {"description": "Offboard", "index": 2}], "category": "Standard", "default": 0, "group": "Commander", "longDesc": "Specify modes in which RC loss is ignored and the failsafe action not triggered.", "max": 7, "min": 0, "name": "COM_RCL_EXCEPT", "shortDesc": "RC loss exceptions", "type": "Int32"}, {"category": "Standard", "default": 1000, "group": "Commander", "longDesc": "The default value of 1000 requires the stick to be held in the arm or disarm position for 1 second.", "max": 1500, "min": 100, "name": "COM_RC_ARM_HYST", "shortDesc": "RC input arm/disarm command duration", "type": "Int32", "units": "ms"}, {"category": "Standard", "default": 3, "group": "Commander", "longDesc": "A value of 0 enables RC transmitter control (only). A valid RC transmitter calibration is required.\nA value of 1 allows joystick control only. RC input handling and the associated checks are disabled.\nA value of 2 allows either RC Transmitter or Joystick input. The first valid input is used, will fallback to other sources if the input stream becomes invalid.\nA value of 3 allows either input from RC or joystick. The first available source is selected and used until reboot.\nA value of 4 ignores any stick input.", "max": 4, "min": 0, "name": "COM_RC_IN_MODE", "shortDesc": "RC control input mode", "type": "Int32", "values": [{"description": "RC Transmitter only", "value": 0}, {"description": "Joystick only", "value": 1}, {"description": "RC and Joystick with fallback", "value": 2}, {"description": "RC or Joystick keep first", "value": 3}, {"description": "Stick input disabled", "value": 4}]}, {"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 RC stick override is enabled, moving the RC 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 RC stick override of auto and/or offboard modes", "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": "RC 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 RC loss failsafe will only be entered after a timeout,\nset by COM_RC_LOSS_T in seconds. If RC input checks have been disabled\nby setting the COM_RC_IN_MODE param it will not be triggered.", "max": 6, "min": 1, "name": "NAV_RCL_ACT", "shortDesc": "Set RC 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", "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", "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}], "category": "Standard", "default": 1023, "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": 1023, "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", "max": 300.0, "min": 0.0, "name": "EKF2_GPS_DELAY", "rebootRequired": true, "shortDesc": "GPS measurement delay relative to IMU measurements", "type": "Float", "units": "ms"}, {"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.1, "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", "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": "A lower value means HAGL needs to be more stable in order to use range finder for height estimation in range aid mode", "max": 5.0, "min": 0.1, "name": "EKF2_RNG_A_IGATE", "shortDesc": "Gate size used for innovation consistency checks for range aid fusion", "type": "Float", "units": "SD"}, {"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", "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": 1, "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": 2.0, "group": "Failure Detector", "increment": 1.0, "longDesc": "Motor failure triggers only below this current value", "max": 50.0, "min": 0.0, "name": "FD_ACT_MOT_C2T", "shortDesc": "Motor Failure Current/Throttle Threshold", "type": "Float", "units": "A/%"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.2, "group": "Failure Detector", "increment": 0.01, "longDesc": "Motor failure triggers only above this throttle value.", "max": 1.0, "min": 0.0, "name": "FD_ACT_MOT_THR", "shortDesc": "Motor Failure Throttle Threshold", "type": "Float", "units": "norm"}, {"category": "Standard", "default": 100, "group": "Failure Detector", "increment": 100, "longDesc": "Motor failure triggers only if the throttle threshold and the\ncurrent to throttle threshold are violated for this time.", "max": 10000, "min": 10, "name": "FD_ACT_MOT_TOUT", "shortDesc": "Motor Failure Time Threshold", "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": "RC 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": "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": 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": 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.", "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}]}, {"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": "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.", "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.", "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.", "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.", "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.", "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.", "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.", "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.", "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", "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": 0, "group": "MAVLink", "name": "MAV_PROTO_VER", "shortDesc": "MAVLink protocol version", "type": "Int32", "values": [{"description": "Default to 1, switch to 2 if GCS sends version 2", "value": 0}, {"description": "Always use version 1", "value": 1}, {"description": "Always use 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", "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": -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 FW mode (e.g. for Loiter mode).", "max": 1000.0, "min": 25.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.", "max": 2, "min": 0, "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}]}, {"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", "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": 0.0, "group": "Mount", "max": 360.0, "min": -360.0, "name": "MNT_OFF_PITCH", "shortDesc": "Offset for pitch channel output in degrees", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Mount", "max": 360.0, "min": -360.0, "name": "MNT_OFF_ROLL", "shortDesc": "Offset for roll channel output in degrees", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 0.0, "group": "Mount", "max": 360.0, "min": -360.0, "name": "MNT_OFF_YAW", "shortDesc": "Offset for yaw channel output in degrees", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 90.0, "group": "Mount", "max": 720.0, "min": 1.0, "name": "MNT_RANGE_PITCH", "shortDesc": "Range of pitch channel output in degrees (only in AUX output mode)", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 90.0, "group": "Mount", "max": 720.0, "min": 1.0, "name": "MNT_RANGE_ROLL", "shortDesc": "Range of roll channel output in degrees (only in AUX output mode)", "type": "Float", "units": "deg"}, {"category": "Standard", "decimalPlaces": 1, "default": 360.0, "group": "Mount", "max": 720.0, "min": 1.0, "name": "MNT_RANGE_YAW", "shortDesc": "Range of yaw channel output in degrees (only in AUX output mode)", "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", "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.1, "group": "Multicopter Position Control", "increment": 0.01, "longDesc": "Does not apply to manual throttle and direct attitude piloting by stick.", "max": 1.0, "min": 0.0, "name": "MPC_HOLD_DZ", "shortDesc": "Deadzone for sticks in manual piloted modes", "type": "Float"}, {"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": 1000.0, "group": "Multicopter Position Control", "increment": 1.0, "longDesc": "When nudging is enabled (see MPC_LAND_RC_HELP), this controls\nthe maximum allowed horizontal displacement from the original landing point.", "min": 0.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 or Altitude 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.6, "group": "Multicopter Position Control", "increment": 0.01, "longDesc": "The higher the value the less sensitivity the stick has around zero\nwhile still reaching the maximum value with full stick deflection.\n0 Purely linear input curve\n1 Purely cubic input curve", "max": 1.0, "min": 0.0, "name": "MPC_XY_MAN_EXPO", "shortDesc": "Manual position control stick exponential curve sensitivity", "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": 0.6, "group": "Multicopter Position Control", "increment": 0.01, "longDesc": "The higher the value the less sensitivity the stick has around zero\nwhile still reaching the maximum value with full stick deflection.\n0 Purely linear input curve\n1 Purely cubic input curve", "max": 1.0, "min": 0.0, "name": "MPC_YAW_EXPO", "shortDesc": "Manual control stick yaw rotation exponential curve", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.6, "group": "Multicopter Position Control", "increment": 0.01, "longDesc": "The higher the value the less sensitivity the stick has around zero\nwhile still reaching the maximum value with full stick deflection.\n0 Purely linear input curve\n1 Purely cubic input curve", "max": 1.0, "min": 0.0, "name": "MPC_Z_MAN_EXPO", "shortDesc": "Manual control stick vertical exponential curve", "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": 2, "default": 0.0, "group": "Multicopter Rate Control", "increment": 0.01, "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", "increment": 0.01, "longDesc": "Improves tracking performance.", "min": 0.0, "name": "MC_YAWRATE_FF", "shortDesc": "Yaw rate feedforward", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "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.0, "name": "MC_YAWRATE_K", "shortDesc": "Yaw rate controller gain", "type": "Float"}, {"category": "Standard", "decimalPlaces": 2, "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": 0, "group": "Payload Deliverer", "name": "PD_GRIPPER_EN", "rebootRequired": true, "shortDesc": "Enable Gripper actuation in Payload Deliverer", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "Enabled", "value": 1}]}, {"category": "Standard", "default": 3.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": 0.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC10_DZ", "shortDesc": "RC channel 10 dead zone", "type": "Float"}, {"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": 0.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC11_DZ", "shortDesc": "RC channel 11 dead zone", "type": "Float"}, {"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": 0.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC12_DZ", "shortDesc": "RC channel 12 dead zone", "type": "Float"}, {"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": 0.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC13_DZ", "shortDesc": "RC channel 13 dead zone", "type": "Float"}, {"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": 0.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC14_DZ", "shortDesc": "RC channel 14 dead zone", "type": "Float"}, {"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": 0.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC15_DZ", "shortDesc": "RC channel 15 dead zone", "type": "Float"}, {"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": 0.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC16_DZ", "shortDesc": "RC channel 16 dead zone", "type": "Float"}, {"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": 0.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC17_DZ", "shortDesc": "RC channel 17 dead zone", "type": "Float"}, {"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": 0.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC18_DZ", "shortDesc": "RC channel 18 dead zone", "type": "Float"}, {"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": 10.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC1_DZ", "shortDesc": "RC channel 1 dead zone", "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": 10.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC2_DZ", "shortDesc": "RC channel 2 dead zone", "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": 10.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC3_DZ", "shortDesc": "RC channel 3 dead zone", "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": 10.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC4_DZ", "shortDesc": "RC channel 4 dead zone", "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": 10.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC5_DZ", "shortDesc": "RC channel 5 dead zone", "type": "Float"}, {"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": 10.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC6_DZ", "shortDesc": "RC channel 6 dead zone", "type": "Float"}, {"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": 10.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC7_DZ", "shortDesc": "RC channel 7 dead zone", "type": "Float"}, {"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": 10.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC8_DZ", "shortDesc": "RC channel 8 dead zone", "type": "Float"}, {"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": 0.0, "group": "Radio Calibration", "longDesc": "The +- range of this value around the trim value will be considered as zero.", "max": 100.0, "min": 0.0, "name": "RC9_DZ", "shortDesc": "RC channel 9 dead zone", "type": "Float"}, {"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", "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 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": 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": 2, "default": 0.75, "group": "Rover Position Control (Deprecated)", "increment": 0.05, "longDesc": "Damping factor for L1 control.", "max": 0.9, "min": 0.6, "name": "GND_L1_DAMPING", "shortDesc": "L1 damping", "type": "Float"}, {"category": "Standard", "decimalPlaces": 1, "default": 1.0, "group": "Rover Position Control (Deprecated)", "increment": 0.1, "longDesc": "This is the distance at which the next waypoint is activated. This should be set\nto about 2-4x of GND_WHEEL_BASE and not smaller than one meter (due to GPS accuracy).", "max": 50.0, "min": 1.0, "name": "GND_L1_DIST", "shortDesc": "L1 distance", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 5.0, "group": "Rover Position Control (Deprecated)", "increment": 0.5, "longDesc": "This is the L1 distance and defines the tracking\npoint ahead of the rover it's following.\nUse values around 2-5m for a 0.3m wheel base. Tuning instructions: Shorten\nslowly during tuning until response is sharp without oscillation.", "max": 50.0, "min": 0.5, "name": "GND_L1_PERIOD", "shortDesc": "L1 period", "type": "Float", "units": "m"}, {"category": "Standard", "decimalPlaces": 1, "default": 150.0, "group": "Rover Position Control (Deprecated)", "max": 400.0, "min": 0.0, "name": "GND_MAN_Y_MAX", "shortDesc": "Max manual yaw rate", "type": "Float", "units": "deg/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.7854, "group": "Rover Position Control (Deprecated)", "increment": 0.01, "longDesc": "At a control output of 0, the steering wheels are at 0 radians.\nAt a control output of 1, the steering wheels are at GND_MAX_ANG radians.", "max": 3.14159, "min": 0.0, "name": "GND_MAX_ANG", "shortDesc": "Maximum turn angle for Ackerman steering", "type": "Float", "units": "rad"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.001, "group": "Rover Position Control (Deprecated)", "increment": 0.005, "longDesc": "This is the derivative gain for the speed closed loop controller", "max": 50.0, "min": 0.0, "name": "GND_SPEED_D", "shortDesc": "Speed proportional gain", "type": "Float", "units": "%m/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 3.0, "group": "Rover Position Control (Deprecated)", "increment": 0.005, "longDesc": "This is the integral gain for the speed closed loop controller", "max": 50.0, "min": 0.0, "name": "GND_SPEED_I", "shortDesc": "Speed Integral gain", "type": "Float", "units": "%m/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Rover Position Control (Deprecated)", "increment": 0.005, "longDesc": "This is the maxim value the integral can reach to prevent wind-up.", "max": 50.0, "min": 0.005, "name": "GND_SPEED_IMAX", "shortDesc": "Speed integral maximum value", "type": "Float", "units": "%m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 10.0, "group": "Rover Position Control (Deprecated)", "increment": 0.5, "max": 40.0, "min": 0.0, "name": "GND_SPEED_MAX", "shortDesc": "Maximum ground speed", "type": "Float", "units": "m/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 2.0, "group": "Rover Position Control (Deprecated)", "increment": 0.005, "longDesc": "This is the proportional gain for the speed closed loop controller", "max": 50.0, "min": 0.005, "name": "GND_SPEED_P", "shortDesc": "Speed proportional gain", "type": "Float", "units": "%m/s"}, {"category": "Standard", "decimalPlaces": 3, "default": 1.0, "group": "Rover Position Control (Deprecated)", "increment": 0.005, "longDesc": "This is a gain to map the speed control output to the throttle linearly.", "max": 50.0, "min": 0.005, "name": "GND_SPEED_THR_SC", "shortDesc": "Speed to throttle scaler", "type": "Float", "units": "%m/s"}, {"category": "Standard", "decimalPlaces": 1, "default": 3.0, "group": "Rover Position Control (Deprecated)", "increment": 0.5, "max": 40.0, "min": 0.0, "name": "GND_SPEED_TRIM", "shortDesc": "Trim ground speed", "type": "Float", "units": "m/s"}, {"category": "Standard", "default": 1, "group": "Rover Position Control (Deprecated)", "longDesc": "This allows the user to choose between closed loop gps speed or open loop cruise throttle speed", "max": 1, "min": 0, "name": "GND_SP_CTRL_MODE", "shortDesc": "Control mode for speed", "type": "Int32", "values": [{"description": "open loop control", "value": 0}, {"description": "close the loop with gps speed", "value": 1}]}, {"category": "Standard", "decimalPlaces": 2, "default": 0.1, "group": "Rover Position Control (Deprecated)", "increment": 0.01, "longDesc": "This is the throttle setting required to achieve the desired cruise speed.\n10% is ok for a traxxas stampede vxl with ESC set to training mode", "max": 1.0, "min": 0.0, "name": "GND_THR_CRUISE", "shortDesc": "Cruise throttle", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.3, "group": "Rover Position Control (Deprecated)", "increment": 0.01, "longDesc": "This is the maximum throttle % that can be used by the controller.\nFor a Traxxas stampede vxl with the ESC set to training, 30 % is enough", "max": 1.0, "min": 0.0, "name": "GND_THR_MAX", "shortDesc": "Throttle limit max", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 2, "default": 0.0, "group": "Rover Position Control (Deprecated)", "increment": 0.01, "longDesc": "This is the minimum throttle % that can be used by the controller.\nSet to 0 for rover", "max": 1.0, "min": 0.0, "name": "GND_THR_MIN", "shortDesc": "Throttle limit min", "type": "Float", "units": "norm"}, {"category": "Standard", "decimalPlaces": 3, "default": 0.31, "group": "Rover Position Control (Deprecated)", "increment": 0.01, "longDesc": "A value of 0.31 is typical for 1/10 RC cars.", "min": 0.0, "name": "GND_WHEEL_BASE", "shortDesc": "Distance from front axle to rear axle", "type": "Float", "units": "m"}, {"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": 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": -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}]}, {"category": "Standard", "default": 2, "group": "SD Logging", "longDesc": "Selects the algorithm used for logfile encryption", "name": "SDLOG_ALGORITHM", "shortDesc": "Logfile Encryption algorithm", "type": "Int32", "values": [{"description": "Disabled", "value": 0}, {"description": "XChaCha20", "value": 2}]}, {"category": "Standard", "default": 0, "group": "SD Logging", "longDesc": "When enabled, logging will not start from boot if battery power is not detected\n(e.g. powered via USB on a test bench). This prevents extraneous flight logs from\nbeing created during bench testing.\nNote that this only applies to log-from-boot modes. This has no effect on arm-based\nmodes.", "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,\nthe system will delete the oldest directories during startup.\nIn addition, the system will delete old logs if there is not enough free space left.\nThe minimum amount is 300 MB.\nIf this is set to 0, old directories will only be removed if the free space falls below\nthe minimum.\nNote: 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": 1, "group": "SD Logging", "longDesc": "If the logfile is encrypted using a symmetric key algorithm,\nthe used encryption key is generated at logging start and stored\non the sdcard RSA2048 encrypted using this key.", "max": 255, "min": 0, "name": "SDLOG_EXCH_KEY", "shortDesc": "Logfile Encryption key exchange key", "type": "Int32"}, {"category": "Standard", "default": 2, "group": "SD Logging", "longDesc": "Selects the key in keystore, used for encrypting the log. When using\na symmetric encryption algorithm, the key is generated at logging start\nand kept stored in this index. For symmetric algorithms, the key is\nvolatile and valid only for the duration of logging. The key is stored\nin encrypted format on the sdcard alongside the logfile, using an RSA2048\nkey defined by the SDLOG_EXCHANGE_KEY", "max": 255, "min": 0, "name": "SDLOG_KEY", "shortDesc": "Logfile Encryption key index", "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.\nThe log contains just those messages that are useful for tasks like\ngenerating flight statistics and geotagging.\nThe different modes can be used to further reduce the logged data\n(and thus the log file size). For example, choose geotagging mode to\nonly log data required for geotagging.\nNote that the normal/full log is still created, and contains all\nthe 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\nwhen arming the system, and stopped when disarming.", "name": "SDLOG_MODE", "rebootRequired": true, "shortDesc": "Logging Mode", "type": "Int32", "values": [{"description": "disabled", "value": -1}, {"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.\nThe default allows for general log analysis while keeping the\nlog file size reasonably small.\nEnabling multiple sets leads to higher bandwidth requirements and larger log\nfiles.\nSet bits true to enable:\n0 : Default set (used for general log analysis)\n1 : Full rate estimator (EKF2) replay topics\n2 : Topics for thermal calibration (high rate raw IMU and Baro sensor data)\n3 : Topics for system identification (high rate actuator control and IMU data)\n4 : Full rates for analysis of fast maneuvers (RC, attitude, rates and actuators)\n5 : Debugging topics (debug_*.msg topics, for custom code)\n6 : Topics for sensor comparison (low rate raw IMU, Baro and magnetometer data)\n7 : Topics for computer vision and collision prevention\n8 : Raw FIFO high-rate IMU (Gyro)\n9 : Raw FIFO high-rate IMU (Accel)\n10: 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\nUniversal Time (UTC) for a your place and date.\nfor example, In case of South Korea(UTC+09:00),\nUTC offset is 540 min (9*60)\nrefer 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": 0, "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.\nTo have an equal priority of all the instances, set this parameter to -1 and\nthe best receiver will be used.\nThis parameter has no effect if blending is active.", "max": 1, "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", "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}]}, {"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", "default": 0.0, "group": "UUV Attitude Control", "name": "UUV_DIRCT_PITCH", "shortDesc": "Direct pitch input", "type": "Float"}, {"category": "Standard", "default": 0.0, "group": "UUV Attitude Control", "name": "UUV_DIRCT_ROLL", "shortDesc": "Direct roll input", "type": "Float"}, {"category": "Standard", "default": 0.0, "group": "UUV Attitude Control", "name": "UUV_DIRCT_THRUST", "shortDesc": "Direct thrust input", "type": "Float"}, {"category": "Standard", "default": 0.0, "group": "UUV Attitude Control", "name": "UUV_DIRCT_YAW", "shortDesc": "Direct yaw input", "type": "Float"}, {"category": "Standard", "default": 0, "group": "UUV Attitude Control", "name": "UUV_INPUT_MODE", "shortDesc": "Select Input Mode", "type": "Int32", "values": [{"description": "use Attitude Setpoints", "value": 0}, {"description": "Direct Feedthrough", "value": 1}]}, {"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": 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": 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": 1, "group": "UUV Position Control", "name": "UUV_STAB_MODE", "shortDesc": "Stabilization mode(1) or Position Control(0)", "type": "Int32", "values": [{"description": "Position Control", "value": 0}, {"description": "Stabilization Mode", "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": 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": "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 pitch 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": -5.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": -5.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"}, {"category": "Standard", "default": 0, "group": "Miscellaneous", "name": "UUV_SKIP_CTRL", "shortDesc": "Skip the controller", "type": "Int32", "values": [{"description": "use the module's controller", "value": 0}, {"description": "skip the controller and feedthrough the setpoints", "value": 1}]}], "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", "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