Commit 5a039092 authored by Don Gagne's avatar Don Gagne

Fix APM parameter versioning

parent 4776d22d
......@@ -241,7 +241,11 @@
<file alias="APMAirframeFactMetaData.xml">src/AutoPilotPlugins/APM/APMAirframeFactMetaData.xml</file>
</qresource>
<qresource prefix="/FirmwarePlugin/APM">
<file alias="APMParameterFactMetaData.xml">src/FirmwarePlugin/APM/APMParameterFactMetaData.xml</file>
<file alias="APMParameterFactMetaData.Plane.3.3.xml">src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.3.xml</file>
<file alias="APMParameterFactMetaData.Plane.3.5.xml">src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.5.xml</file>
<file alias="APMParameterFactMetaData.Copter.3.3.xml">src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.3.xml</file>
<file alias="APMParameterFactMetaData.Copter.3.4.xml">src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.4.xml</file>
<file alias="APMParameterFactMetaData.Rover.3.0.xml">src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.0.xml</file>
</qresource>
<qresource prefix="/FirmwarePlugin/PX4">
<file alias="PX4ParameterFactMetaData.xml">src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml</file>
......
......@@ -30,6 +30,7 @@
#include "QGCApplication.h"
#include "UASMessageHandler.h"
#include "FirmwarePlugin.h"
#include "APMFirmwarePlugin.h"
#include "UAS.h"
#include <QEasingCurve>
......@@ -904,11 +905,20 @@ void ParameterLoader::_addMetaDataToDefaultComponent(void)
return;
}
// Load best parameter meta data set
QString metaDataFile;
int majorVersion, minorVersion;
QString metaDataFile = parameterMetaDataFile(_vehicle->firmwareType(), _parameterSetMajorVersion, majorVersion, minorVersion);
if (_vehicle->firmwareType() == MAV_AUTOPILOT_ARDUPILOTMEGA) {
// Parameter versioning is still not really figured out correctly. We need to handle ArduPilot specially based on vehicle version.
// The current three version are hardcoded in.
metaDataFile = ((APMFirmwarePlugin*)_vehicle->firmwarePlugin())->getParameterMetaDataFile(_vehicle);
qCDebug(ParameterLoaderLog) << "Adding meta data to Vehicle file:major:minor" << metaDataFile;
} else {
// Load best parameter meta data set
metaDataFile = parameterMetaDataFile(_vehicle->firmwareType(), _parameterSetMajorVersion, majorVersion, minorVersion);
qCDebug(ParameterLoaderLog) << "Adding meta data to Vehicle file:major:minor" << metaDataFile << majorVersion << minorVersion;
}
_parameterMetaData = _vehicle->firmwarePlugin()->loadParameterMetaData(metaDataFile);
qCDebug(ParameterLoaderLog) << "Adding meta data to Vehicle file:major:minor" << metaDataFile << majorVersion << minorVersion;
// Loop over all parameters in default component adding meta data
QVariantMap& factMap = _mapParameterName2Variant[_defaultComponentId];
......
......@@ -313,44 +313,44 @@ bool APMFirmwarePlugin::_handleStatusText(Vehicle* vehicle, mavlink_message_t* m
mavlink_statustext_t statusText;
mavlink_msg_statustext_decode(message, &statusText);
if (!_firmwareVersion.isValid() || statusText.severity < MAV_SEVERITY_NOTICE) {
if (vehicle->firmwareMajorVersion() == -1 || statusText.severity < MAV_SEVERITY_NOTICE) {
messageText = _getMessageText(message);
qCDebug(APMFirmwarePluginLog) << messageText;
if (!_firmwareVersion.isValid() && !messageText.contains(APM_SOLO_REXP)) {
if (!messageText.contains(APM_SOLO_REXP)) {
// if don't know firmwareVersion yet, try and see if this message contains it
if (messageText.contains(APM_COPTER_REXP) || messageText.contains(APM_PLANE_REXP) || messageText.contains(APM_ROVER_REXP)) {
// found version string
_firmwareVersion = APMFirmwareVersion(messageText);
_textSeverityAdjustmentNeeded = _isTextSeverityAdjustmentNeeded(_firmwareVersion);
if (!_firmwareVersion.isBeta() && !_firmwareVersion.isDev()) {
int supportedMajorNumber = -1;
int supportedMinorNumber = -1;
switch (vehicle->vehicleType()) {
case MAV_TYPE_FIXED_WING:
supportedMajorNumber = 3;
supportedMinorNumber = 2;
break;
case MAV_TYPE_QUADROTOR:
case MAV_TYPE_COAXIAL:
case MAV_TYPE_HELICOPTER:
case MAV_TYPE_SUBMARINE:
case MAV_TYPE_HEXAROTOR:
case MAV_TYPE_OCTOROTOR:
case MAV_TYPE_TRICOPTER:
supportedMajorNumber = 3;
supportedMinorNumber = 2;
break;
default:
break;
}
APMFirmwareVersion firmwareVersion(messageText);
_textSeverityAdjustmentNeeded = _isTextSeverityAdjustmentNeeded(firmwareVersion);
vehicle->setFirmwareVersion(firmwareVersion.majorNumber(), firmwareVersion.minorNumber(), firmwareVersion.patchNumber());
int supportedMajorNumber = -1;
int supportedMinorNumber = -1;
switch (vehicle->vehicleType()) {
case MAV_TYPE_FIXED_WING:
supportedMajorNumber = 3;
supportedMinorNumber = 2;
break;
case MAV_TYPE_QUADROTOR:
case MAV_TYPE_COAXIAL:
case MAV_TYPE_HELICOPTER:
case MAV_TYPE_SUBMARINE:
case MAV_TYPE_HEXAROTOR:
case MAV_TYPE_OCTOROTOR:
case MAV_TYPE_TRICOPTER:
supportedMajorNumber = 3;
supportedMinorNumber = 2;
break;
default:
break;
}
if (supportedMajorNumber != -1) {
if (_firmwareVersion.majorNumber() < supportedMajorNumber || _firmwareVersion.minorNumber() < supportedMinorNumber) {
qgcApp()->showMessage(QString("QGroundControl fully supports Version %1.%2 and above. You are using a version prior to that. This combination is untested, you may run into unpredictable results.").arg(supportedMajorNumber).arg(supportedMinorNumber));
}
if (supportedMajorNumber != -1) {
if (firmwareVersion.majorNumber() < supportedMajorNumber || firmwareVersion.minorNumber() < supportedMinorNumber) {
qgcApp()->showMessage(QString("QGroundControl fully supports Version %1.%2 and above. You are using a version prior to that. This combination is untested, you may run into unpredictable results.").arg(supportedMajorNumber).arg(supportedMinorNumber));
}
}
}
......@@ -601,7 +601,8 @@ QObject* APMFirmwarePlugin::loadParameterMetaData(const QString& metaDataFile)
{
Q_UNUSED(metaDataFile);
APMParameterMetaData* metaData = new APMParameterMetaData;
APMParameterMetaData* metaData = new APMParameterMetaData();
metaData->loadParameterFactMetaDataFile(metaDataFile);
return metaData;
}
......@@ -630,3 +631,32 @@ void APMFirmwarePlugin::_artooSocketError(QAbstractSocket::SocketError socketErr
{
qgcApp()->showMessage(tr("Error during Solo video link setup: %1").arg(socketError));
}
QString APMFirmwarePlugin::getParameterMetaDataFile(Vehicle* vehicle)
{
switch (vehicle->vehicleType()) {
case MAV_TYPE_QUADROTOR:
case MAV_TYPE_HEXAROTOR:
case MAV_TYPE_OCTOROTOR:
case MAV_TYPE_TRICOPTER:
case MAV_TYPE_COAXIAL:
case MAV_TYPE_HELICOPTER:
if (vehicle->firmwareMajorVersion() < 3 || (vehicle->firmwareMajorVersion() == 3 && vehicle->firmwareMinorVersion() <= 3)) {
return QStringLiteral(":/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.3.xml");
} else {
return QStringLiteral(":/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.4.xml");
}
case MAV_TYPE_FIXED_WING:
if (vehicle->firmwareMajorVersion() < 3 || (vehicle->firmwareMajorVersion() == 3 && vehicle->firmwareMinorVersion() <= 3)) {
return QStringLiteral(":/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.3.xml");
} else {
return QStringLiteral(":/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.5.xml");
}
case MAV_TYPE_GROUND_ROVER:
case MAV_TYPE_SURFACE_BOAT:
case MAV_TYPE_SUBMARINE:
return QStringLiteral(":/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.0.xml");
default:
return QString();
}
}
......@@ -105,6 +105,8 @@ public:
void getParameterMetaDataVersionInfo (const QString& metaDataFile, int& majorVersion, int& minorVersion) final { APMParameterMetaData::getParameterMetaDataVersionInfo(metaDataFile, majorVersion, minorVersion); }
QObject* loadParameterMetaData (const QString& metaDataFile);
QString getParameterMetaDataFile(Vehicle* vehicle);
protected:
/// All access to singleton is through stack specific implementation
APMFirmwarePlugin(void);
......@@ -125,7 +127,6 @@ private:
void _handleHeartbeat(Vehicle* vehicle, mavlink_message_t* message);
void _soloVideoHandshake(Vehicle* vehicle);
APMFirmwareVersion _firmwareVersion;
bool _textSeverityAdjustmentNeeded;
QList<APMCustomMode> _supportedModes;
QMap<QString, QTime> _noisyPrearmMap;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -6,6 +6,7 @@
<param humanName="Eeprom format version number" name="ArduPlane:FORMAT_VERSION" documentation="This value is incremented when changes are made to the eeprom format" user="Advanced">
</param>
<param humanName="Software Type" name="ArduPlane:SYSID_SW_TYPE" documentation="This is used by the ground station to recognise the software type (eg ArduPlane vs ArduCopter)" user="Advanced">
<field name="ReadOnly">True</field>
</param>
<param humanName="MAVLink system ID of this vehicle" name="ArduPlane:SYSID_THISMAV" documentation="Allows setting an individual MAVLink system id for this vehicle to distinguish it from others on the same network" user="Advanced">
<field name="Range">1 255</field>
......@@ -108,6 +109,11 @@
<field name="Increment">1</field>
<field name="Units">percent</field>
</param>
<param humanName="Landing throttle slew rate" name="ArduPlane:LAND_THR_SLEW" documentation="This parameter sets the slew rate for the throttle during auto landing. When this is zero the THR_SLEWRATE parameter is used during landing. The value is a percentage throttle change per second, so a value of 20 means to advance the throttle over 5 seconds on landing. Values below 50 are not recommended as it may cause a stall when airspeed is low and you can not throttle up fast enough." user="User">
<field name="Range">0 127</field>
<field name="Increment">1</field>
<field name="Units">percent</field>
</param>
<param humanName="Takeoff flap percentage" name="ArduPlane:TKOFF_FLAP_PCNT" documentation="The amount of flaps (as a percentage) to apply in automatic takeoff" user="Advanced">
<field name="Range">0 100</field>
<field name="Units">Percent</field>
......@@ -130,11 +136,50 @@
<field name="Increment">0.1</field>
<field name="Units">seconds</field>
</param>
<param humanName="Landing pre-flare altitude" name="ArduPlane:LAND_PF_ALT" documentation="Altitude to trigger pre-flare flight stage where LAND_PF_ARSPD controls airspeed. The pre-flare flight stage trigger works just like LAND_FLARE_ALT but higher. Disabled when LAND_PF_ARSPD is 0." user="Advanced">
<field name="Range">0 30</field>
<field name="Increment">0.1</field>
<field name="Units">meters</field>
</param>
<param humanName="Landing pre-flare time" name="ArduPlane:LAND_PF_SEC" documentation="Vertical time to ground to trigger pre-flare flight stage where LAND_PF_ARSPD controls airspeed. This pre-flare flight stage trigger works just like LAND_FLARE_SEC but earlier. Disabled when LAND_PF_ARSPD is 0." user="Advanced">
<field name="Range">0 10</field>
<field name="Increment">0.1</field>
<field name="Units">seconds</field>
</param>
<param humanName="Landing pre-flare airspeed" name="ArduPlane:LAND_PF_ARSPD" documentation="Desired airspeed during pre-flare flight stage. This is useful to reduce airspeed just before the flare. Use 0 to disable." user="Advanced">
<field name="Range">0 30</field>
<field name="Increment">0.1</field>
<field name="Units">m/s</field>
</param>
<param humanName="Bitmask for when to allow negative reverse thrust" name="ArduPlane:USE_REV_THRUST" documentation="Typically THR_MIN will be clipped to zero unless reverse thrust is available. Since you may not want negative thrust available at all times this bitmask allows THR_MIN to go below 0 while executing certain auto-mission commands." user="Advanced">
<field name="Bitmask">0:AUTO_ALWAYS,1:AUTO_LAND,2:AUTO_LOITER_TO_ALT,3:AUTO_LOITER_ALL,4:AUTO_WAYPOINTS,5:LOITER,6:RTL,7:CIRCLE,8:CRUISE,9:FBWB,10:GUIDED</field>
<values>
<value code="0">Disabled</value>
<value code="1">AlwaysAllowedInAuto</value>
<value code="2">Auto_LandApproach</value>
<value code="4">Auto_LoiterToAlt</value>
<value code="8">Auto_Loiter</value>
<value code="16">Auto_Waypoint</value>
<value code="32">Loiter</value>
<value code="64">RTL</value>
<value code="128">Circle</value>
<value code="256">Cruise</value>
<value code="512">FBWB</value>
<value code="1024">Guided</value>
</values>
</param>
<param humanName="Landing disarm delay" name="ArduPlane:LAND_DISARMDELAY" documentation="After a landing has completed using a LAND waypoint, automatically disarm after this many seconds have passed. Use 0 to not disarm." user="Advanced">
<field name="Range">0 127</field>
<field name="Increment">1</field>
<field name="Units">seconds</field>
</param>
<param humanName="Set servos to neutral after landing" name="ArduPlane:LAND_THEN_NEUTRL" documentation="When enabled, after an autoland and auto-disarm via LAND_DISARMDELAY happens then set all servos to neutral. This is helpful when an aircraft has a rough landing upside down or a crazy angle causing the servos to strain." user="Advanced">
<values>
<value code="0">Disabled</value>
<value code=" 1">Servos to Neutral</value>
<value code=" 2">Servos to Zero PWM</value>
</values>
</param>
<param humanName="Landing abort using throttle" name="ArduPlane:LAND_ABORT_THR" documentation="Allow a landing abort to trigger with a throttle &gt; 95%" user="Advanced">
<values>
<value code="0">Disabled</value>
......@@ -177,6 +222,11 @@
<field name="Increment">1</field>
<field name="Units">Meters</field>
</param>
<param humanName="RTL loiter radius" name="ArduPlane:RTL_RADIUS" documentation="Defines the radius of the loiter circle when in RTL mode. If this is zero then WP_LOITER_RAD is used. If the radius is negative then a counter-clockwise is used. If positive then a clockwise loiter is used." user="Standard">
<field name="Range">-32767 32767</field>
<field name="Increment">1</field>
<field name="Units">Meters</field>
</param>
<param humanName="Action on geofence breach" name="ArduPlane:FENCE_ACTION" documentation="What to do on fence breach. If this is set to 0 then no action is taken, and geofencing is disabled. If this is set to 1 then the plane will enter GUIDED mode, with the target waypoint as the fence return point. If this is set to 2 then the fence breach is reported to the ground station, but no other action is taken. If set to 3 then the plane enters guided mode but the pilot retains manual throttle control." user="Standard">
<values>
<value code="0">None</value>
......@@ -250,11 +300,12 @@
<field name="Units">meters</field>
</param>
<param humanName="Fly By Wire B altitude change rate" name="ArduPlane:FBWB_CLIMB_RATE" documentation="This sets the rate in m/s at which FBWB and CRUISE modes will change its target altitude for full elevator deflection. Note that the actual climb rate of the aircraft can be lower than this, depending on your airspeed and throttle control settings. If you have this parameter set to the default value of 2.0, then holding the elevator at maximum deflection for 10 seconds would change the target altitude by 20 meters." user="Standard">
<field name="Range">1-10</field>
<field name="Range">1 10</field>
<field name="Increment">0.1</field>
<field name="Units">m/s</field>
</param>
<param humanName="Minimum Throttle" name="ArduPlane:THR_MIN" documentation="The minimum throttle setting (as a percentage) which the autopilot will apply. For the final stage of an automatic landing this is always zero." user="Standard">
<field name="Range">0 100</field>
<param humanName="Minimum Throttle" name="ArduPlane:THR_MIN" documentation="The minimum throttle setting (as a percentage) which the autopilot will apply. For the final stage of an automatic landing this is always zero. If your ESC supports reverse, use a negative value to configure for reverse thrust." user="Standard">
<field name="Range">-100 100</field>
<field name="Increment">1</field>
<field name="Units">Percent</field>
</param>
......@@ -323,11 +374,12 @@
<field name="Increment">0.5</field>
<field name="Units">seconds</field>
</param>
<param humanName="Long failsafe action" name="ArduPlane:FS_LONG_ACTN" documentation="The action to take on a long (FS_LONG_TIMEOUT seconds) failsafe event. If the aircraft was in a stabilization or manual mode when failsafe started and a long failsafe occurs then it will change to RTL mode if FS_LONG_ACTN is 0 or 1, and will change to FBWA if FS_LONG_ACTN is set to 2. If the aircraft was in an auto mode (such as AUTO or GUIDED) when the failsafe started then it will continue in the auto mode if FS_LONG_ACTN is set to 0, will change to RTL mode if FS_LONG_ACTN is set to 1 and will change to FBWA mode if FS_LONG_ACTN is set to 2. " user="Standard">
<param humanName="Long failsafe action" name="ArduPlane:FS_LONG_ACTN" documentation="The action to take on a long (FS_LONG_TIMEOUT seconds) failsafe event. If the aircraft was in a stabilization or manual mode when failsafe started and a long failsafe occurs then it will change to RTL mode if FS_LONG_ACTN is 0 or 1, and will change to FBWA if FS_LONG_ACTN is set to 2. If the aircraft was in an auto mode (such as AUTO or GUIDED) when the failsafe started then it will continue in the auto mode if FS_LONG_ACTN is set to 0, will change to RTL mode if FS_LONG_ACTN is set to 1 and will change to FBWA mode if FS_LONG_ACTN is set to 2. If FS_LONG_ACTION is set to 3, the parachute will be deployed (make sure the chute is configured and enabled). " user="Standard">
<values>
<value code="0">Continue</value>
<value code="1">ReturnToLaunch</value>
<value code="2">Glide</value>
<value code="3">Deploy Parachute</value>
</values>
</param>
<param humanName="Long failsafe timeout" name="ArduPlane:FS_LONG_TIMEOUT" documentation="The time in seconds that a failsafe condition has to persist before a long failsafe event will occur. This defaults to 5 seconds." user="Standard">
......@@ -641,7 +693,9 @@
<field name="Range">0 100</field>
<field name="Units">Percent</field>
</param>
<param humanName="PX4IO override channel" name="ArduPlane:OVERRIDE_CHAN" documentation="If set to a non-zero value then this is an RC input channel number to use for testing manual control in case the main FMU microcontroller on a PX4 or Pixhawk fails. When this RC input channel goes above 1750 the FMU will stop sending servo controls to the PX4IO board, which will trigger the PX4IO board to start using its failsafe override behaviour, which should give you manual control of the aircraft. That allows you to test for correct manual behaviour without actually crashing the FMU. This parameter is normally only set to a non-zero value for ground testing purposes. When the override channel is used it also forces the PX4 safety switch into an armed state. This allows it to be used as a way to re-arm a plane after an in-flight reboot. Use in that way is considered a developer option, for people testing unstable developer code. Note that you may set OVERRIDE_CHAN to the same channel as FLTMODE_CH to get PX4IO based override when in flight mode 6. Note that when override is triggered the 6 auxiliary output channels on Pixhawk will no longer be updated, so all the flight controls you need must be assigned to the first 8 channels." user="Advanced">
<param humanName="PX4IO override channel" name="ArduPlane:OVERRIDE_CHAN" documentation="If set to a non-zero value then this is an RC input channel number to use for giving PX4IO manual control in case the main FMU microcontroller on a PX4 or Pixhawk fails. When this RC input channel goes above 1750 the FMU microcontroller will no longer be involved in controlling the servos and instead the PX4IO microcontroller will directly control the servos. Note that PX4IO manual control will be automatically activated if the FMU crashes for any reason. This parameter allows you to test for correct manual behaviour without actually crashing the FMU. This parameter is can be set to a non-zero value either for ground testing purposes or for giving the effect of an external override control board. Please also see the docs on OVERRIDE_SAFETY. Note that you may set OVERRIDE_CHAN to the same channel as FLTMODE_CH to get PX4IO based override when in flight mode 6. Note that when override is triggered due to a FMU crash the 6 auxiliary output channels on Pixhawk will no longer be updated, so all the flight controls you need must be assigned to the first 8 channels." user="Advanced">
</param>
<param humanName="PX4IO override safety switch" name="ArduPlane:OVERRIDE_SAFETY" documentation="This controls whether the safety switch is turned off when you activate override with OVERRIDE_CHAN. When set to 1 the safety switch is de-activated (activating the servos) then a PX4IO override is triggered. In that case the safety remains de-activated after override is disabled. If OVERRIDE_SAFETTY is set to 0 then the safety switch state does not change. Note that regardless of the value of this parameter the servos will be active while override is active." user="Advanced">
</param>
<param humanName="Inverted flight channel" name="ArduPlane:INVERTEDFLT_CH" documentation="A RC input channel number to enable inverted flight. If this is non-zero then the APM will monitor the corresponding RC input channel and will enable inverted flight when the channel goes above 1750." user="Standard">
<values>
......@@ -686,7 +740,11 @@
<value code="1">Enable</value>
</values>
</param>
<param humanName="Crash Detection" name="ArduPlane:CRASH_DETECT" documentation="Automatically detect a crash during AUTO flight and perform the bitmask selected action(s). Disarm will turn off motor for safety and to help against burning out ESC and motor. Setting the mode to manual will help save the servos from burning out by overexerting if the aircraft crashed in an odd orientation such as upsidedown." user="Advanced">
<param humanName="Crash Deceleration Threshold" name="ArduPlane:CRASH_ACC_THRESH" documentation="X-Axis deceleration threshold to notify the crash detector that there was a possible impact which helps disarm the motor quickly after a crash. This value should be much higher than normal negative x-axis forces during normal flight, check flight log files to determine the average IMU.x values for your aircraft and motor type. Higher value means less sensative (triggers on higher impact). For electric planes that don't vibrate much during fight a value of 25 is good (that's about 2.5G). For petrol/nitro planes you'll want a higher value. Set to 0 to disable the collision detector." user="Advanced">
<field name="Values">10 127</field>
<field name="Units">m/s/s</field>
</param>
<param humanName="Crash Detection" name="ArduPlane:CRASH_DETECT" documentation="Automatically detect a crash during AUTO flight and perform the bitmask selected action(s). Disarm will turn off motor for saftey and to help against burning out ESC and motor. Setting the mode to manual will help save the servos from burning out by overexerting if the aircraft crashed in an odd orientation such as upsidedown." user="Advanced">
<field name="Bitmask">0:Disarm</field>
<values>
<value code="0">Disabled</value>
......@@ -704,8 +762,10 @@
</parameters>
<parameters name="ArduCopter">
<param humanName="Eeprom format version number" name="ArduCopter:SYSID_SW_MREV" documentation="This value is incremented when changes are made to the eeprom format" user="Advanced">
<field name="ReadOnly">True</field>
</param>
<param humanName="Software Type" name="ArduCopter:SYSID_SW_TYPE" documentation="This is used by the ground station to recognise the software type (eg ArduPlane vs ArduCopter)" user="Advanced">
<field name="ReadOnly">True</field>
<values>
<value code="0">ArduPlane</value>
<value code="4">AntennaTracker</value>
......@@ -742,10 +802,12 @@
<field name="Range">0.0 500.0</field>
<field name="Increment">10</field>
</param>
<param humanName="Throttle stick behavior" name="ArduCopter:PILOT_THR_BHV" documentation="Bits for: Feedback starts from mid stick" user="Standard">
<param humanName="Throttle stick behavior" name="ArduCopter:PILOT_THR_BHV" documentation="Bitmask containing various throttle stick options. Add up the values for options that you want." user="Standard">
<field name="Bitmask">0:Feedback from mid stick,1:High throttle cancels landing</field>
<values>
<value code="0">None</value>
<value code="1">FeedbackFromMid</value>
<value code="1">Feedback from mid stick</value>
<value code="2">High throttle cancels landing</value>
</values>
</param>
<param humanName="Telemetry startup delay" name="ArduCopter:TELEM_DELAY" documentation="The amount of time (in seconds) to delay radio telemetry to prevent an Xbee bricking on power up" user="Advanced">
......@@ -767,6 +829,15 @@
<field name="Increment">1</field>
<field name="Units">Centimeters</field>
</param>
<param humanName="RTL cone slope" name="ArduCopter:RTL_CONE_SLOPE" documentation="Defines a cone above home which determines maximum climb" user="Standard">
<field name="Range">0.5 10.0</field>
<values>
<value code="0">Disabled</value>
<value code="1">Shallow</value>
<value code="3">Steep</value>
</values>
<field name="Increment">.1</field>
</param>
<param humanName="RTL speed" name="ArduCopter:RTL_SPEED" documentation="Defines the speed in cm/s which the aircraft will attempt to maintain horizontally while flying home. If this is set to zero, WPNAV_SPEED will be used instead." user="Standard">
<field name="Range">0 2000</field>
<field name="Increment">50</field>
......@@ -933,7 +1004,7 @@
</param>
<param humanName="Throttle Mid Position" name="ArduCopter:THR_MID" documentation="The throttle output (0 ~ 1000) when throttle stick is in mid position. Used to scale the manual throttle so that the mid throttle stick position is close to the throttle required to hover" user="Standard">
<field name="Range">300 700</field>
<field name="Increment">1</field>
<field name="Increment">10</field>
<field name="Units">Percent*10</field>
</param>
<param humanName="Throttle deadzone" name="ArduCopter:THR_DZ" documentation="The deadzone above and below mid throttle. Used in AltHold, Loiter, PosHold flight modes" user="Standard">
......@@ -958,6 +1029,7 @@
<value code="15">AutoTune</value>
<value code="16">PosHold</value>
<value code="17">Brake</value>
<value code="18">Throw</value>
</values>
</param>
<param humanName="Flight Mode 2" name="ArduCopter:FLTMODE2" documentation="Flight mode when Channel 5 pwm is &gt;1230, &lt;= 1360" user="Standard">
......@@ -977,6 +1049,7 @@
<value code="15">AutoTune</value>
<value code="16">PosHold</value>
<value code="17">Brake</value>
<value code="18">Throw</value>
</values>
</param>
<param humanName="Flight Mode 3" name="ArduCopter:FLTMODE3" documentation="Flight mode when Channel 5 pwm is &gt;1360, &lt;= 1490" user="Standard">
......@@ -996,6 +1069,7 @@
<value code="15">AutoTune</value>
<value code="16">PosHold</value>
<value code="17">Brake</value>
<value code="18">Throw</value>
</values>
</param>
<param humanName="Flight Mode 4" name="ArduCopter:FLTMODE4" documentation="Flight mode when Channel 5 pwm is &gt;1490, &lt;= 1620" user="Standard">
......@@ -1015,6 +1089,7 @@
<value code="15">AutoTune</value>
<value code="16">PosHold</value>
<value code="17">Brake</value>
<value code="18">Throw</value>
</values>
</param>
<param humanName="Flight Mode 5" name="ArduCopter:FLTMODE5" documentation="Flight mode when Channel 5 pwm is &gt;1620, &lt;= 1749" user="Standard">
......@@ -1034,6 +1109,7 @@
<value code="15">AutoTune</value>
<value code="16">PosHold</value>
<value code="17">Brake</value>
<value code="18">Throw</value>
</values>
</param>
<param humanName="Flight Mode 6" name="ArduCopter:FLTMODE6" documentation="Flight mode when Channel 5 pwm is &gt;=1750" user="Standard">
......@@ -1053,6 +1129,7 @@
<value code="15">AutoTune</value>
<value code="16">PosHold</value>
<value code="17">Brake</value>
<value code="18">Throw</value>
</values>
</param>
<param humanName="Simple mode bitmask" name="ArduCopter:SIMPLE" documentation="Bitmask which holds which flight modes use simple heading mode (eg bit 0 = 1 means Flight Mode 0 uses simple mode)" user="Advanced">
......@@ -1166,11 +1243,15 @@
<value code=" 26">AttCon Accel Limits</value>
<value code=" 27">Retract Mount</value>
<value code=" 28">Relay On/Off</value>
<value code=" 34">Relay2 On/Off</value>
<value code=" 35">Relay3 On/Off</value>
<value code=" 36">Relay4 On/Off</value>
<value code=" 29">Landing Gear</value>
<value code=" 30">Lost Copter Sound</value>
<value code=" 31">Motor Emergency Stop</value>
<value code=" 32">Motor Interlock</value>
<value code=" 33">Brake</value>
<value code=" 37">Throw</value>
</values>
</param>
<param humanName="Channel 8 option" name="ArduCopter:CH8_OPT" documentation="Select which function if performed when CH8 is above 1800 pwm" user="Standard">
......@@ -1199,11 +1280,15 @@
<value code=" 26">AttCon Accel Limits</value>
<value code=" 27">Retract Mount</value>
<value code=" 28">Relay On/Off</value>
<value code=" 34">Relay2 On/Off</value>
<value code=" 35">Relay3 On/Off</value>
<value code=" 36">Relay4 On/Off</value>
<value code=" 29">Landing Gear</value>
<value code=" 30">Lost Copter Sound</value>
<value code=" 31">Motor Emergency Stop</value>
<value code=" 32">Motor Interlock</value>
<value code=" 33">Brake</value>
<value code=" 37">Throw</value>
</values>
</param>
<param humanName="Channel 9 option" name="ArduCopter:CH9_OPT" documentation="Select which function if performed when CH9 is above 1800 pwm" user="Standard">
......@@ -1232,11 +1317,15 @@
<value code=" 26">AttCon Accel Limits</value>
<value code=" 27">Retract Mount</value>
<value code=" 28">Relay On/Off</value>
<value code=" 34">Relay2 On/Off</value>
<value code=" 35">Relay3 On/Off</value>
<value code=" 36">Relay4 On/Off</value>
<value code=" 29">Landing Gear</value>
<value code=" 30">Lost Copter Sound</value>
<value code=" 31">Motor Emergency Stop</value>
<value code=" 32">Motor Interlock</value>
<value code=" 33">Brake</value>
<value code=" 37">Throw</value>
</values>
</param>
<param humanName="Channel 10 option" name="ArduCopter:CH10_OPT" documentation="Select which function if performed when CH10 is above 1800 pwm" user="Standard">
......@@ -1265,11 +1354,15 @@
<value code=" 26">AttCon Accel Limits</value>
<value code=" 27">Retract Mount</value>
<value code=" 28">Relay On/Off</value>
<value code=" 34">Relay2 On/Off</value>
<value code=" 35">Relay3 On/Off</value>
<value code=" 36">Relay4 On/Off</value>
<value code=" 29">Landing Gear</value>
<value code=" 30">Lost Copter Sound</value>
<value code=" 31">Motor Emergency Stop</value>
<value code=" 32">Motor Interlock</value>
<value code=" 33">Brake</value>
<value code=" 37">Throw</value>
</values>
</param>
<param humanName="Channel 11 option" name="ArduCopter:CH11_OPT" documentation="Select which function if performed when CH11 is above 1800 pwm" user="Standard">
......@@ -1298,11 +1391,15 @@
<value code=" 26">AttCon Accel Limits</value>
<value code=" 27">Retract Mount</value>
<value code=" 28">Relay On/Off</value>
<value code=" 34">Relay2 On/Off</value>
<value code=" 35">Relay3 On/Off</value>
<value code=" 36">Relay4 On/Off</value>
<value code=" 29">Landing Gear</value>
<value code=" 30">Lost Copter Sound</value>
<value code=" 31">Motor Emergency Stop</value>
<value code=" 32">Motor Interlock</value>
<value code=" 33">Brake</value>
<value code=" 37">Throw</value>
</values>
</param>
<param humanName="Channel 12 option" name="ArduCopter:CH12_OPT" documentation="Select which function if performed when CH12 is above 1800 pwm" user="Standard">
......@@ -1331,11 +1428,15 @@
<value code=" 26">AttCon Accel Limits</value>
<value code=" 27">Retract Mount</value>
<value code=" 28">Relay On/Off</value>
<value code=" 34">Relay2 On/Off</value>
<value code=" 35">Relay3 On/Off</value>
<value code=" 36">Relay4 On/Off</value>
<value code=" 29">Landing Gear</value>
<value code=" 30">Lost Copter Sound</value>
<value code=" 31">Motor Emergency Stop</value>
<value code=" 32">Motor Interlock</value>
<value code=" 33">Brake</value>
<value code=" 37">Throw</value>
</values>
</param>
<param humanName="Arming check" name="ArduCopter:ARMING_CHECK" documentation="Allows enabling or disabling of pre-arming checks of receiver, accelerometer, barometer, compass and GPS" user="Standard">
......@@ -1369,7 +1470,7 @@
<value code=" 75">Crisp</value>
<value code=" 100">Very Crisp</value>
</values>
<field name="Increment">1</field>
<field name="Increment">10</field>
</param>
<param humanName="PosHold braking rate" name="ArduCopter:PHLD_BRAKE_RATE" documentation="PosHold flight mode's rotation rate during braking in deg/sec" user="Advanced">
<field name="Range">4 12</field>
......@@ -1494,6 +1595,7 @@
</param>
<param humanName="Throttle acceleration controller P gain" name="ArduCopter:ACCEL_Z_P" documentation="Throttle acceleration controller P gain. Converts the difference between desired vertical acceleration and actual acceleration into a motor output" user="Standard">
<field name="Range">0.500 1.500</field>
<field name="Increment">0.05</field>
</param>
<param humanName="Throttle acceleration controller I gain" name="ArduCopter:ACCEL_Z_I" documentation="Throttle acceleration controller I gain. Corrects long-term difference in desired vertical acceleration and actual acceleration" user="Standard">
<field name="Range">0.000 3.000</field>
......@@ -1524,16 +1626,6 @@
<param humanName="Position (horizonal) controller P gain" name="ArduCopter:POS_XY_P" documentation="Loiter position controller P gain. Converts the distance (in the latitude direction) to the target location into a desired speed which is then passed to the loiter latitude rate controller" user="Standard">
<field name="Range">0.500 2.000</field>
</param>
<param humanName="Precision landing velocity controller P gain" name="ArduCopter:PRECLNDVEL_P" documentation="Precision landing velocity controller P gain" user="Advanced">
<field name="Range">0.100 5.000</field>
</param>
<param humanName="Precision landing velocity controller I gain" name="ArduCopter:PRECLNDVEL_I" documentation="Precision landing velocity controller I gain" user="Advanced">
<field name="Range">0.100 5.000</field>
</param>
<param humanName="Precision landing velocity controller I gain maximum" name="ArduCopter:PRECLNDVEL_IMAX" documentation="Precision landing velocity controller I gain maximum" user="Standard">
<field name="Range">0 1000</field>
<field name="Units">cm/s</field>
</param>
<param humanName="Autotune axis bitmask" name="ArduCopter:AUTOTUNE_AXES" documentation="1-byte bitmap of axes to autotune" user="Standard">
<field name="Bitmask">0:Roll,1:Pitch,2:Yaw</field>
<values>
......@@ -1552,8 +1644,25 @@
<param humanName="AutoTune minimum D" name="ArduCopter:AUTOTUNE_MIN_D" documentation="Defines the minimum D gain" user="Standard">
<field name="Range">0.001 0.006</field>
</param>
<param humanName="Start motors before throwing is detected" name="ArduCopter:THROW_MOT_START" documentation="Used by THROW mode. Controls whether motors will run at the speed set by THR_MIN or will be stopped when armed and waiting for the throw." user="Standard">
<values>
<value code="0">Stopped</value>
<value code="1">Running</value>
</values>
</param>
</parameters>
<parameters name="AntennaTracker">
<param humanName="Eeprom format version number" name="AntennaTracker:FORMAT_VERSION" documentation="This value is incremented when changes are made to the eeprom format" user="Advanced">
</param>
<param humanName="Software Type" name="AntennaTracker:SYSID_SW_TYPE" documentation="This is used by the ground station to recognise the software type (eg ArduPlane vs ArduCopter)" user="Advanced">
<field name="ReadOnly">True</field>
<values>
<value code="0">ArduPlane</value>
<value code="4">AntennaTracker</value>
<value code="10">Copter</value>
<value code="20">Rover</value>
</values>
</param>
<param humanName="MAVLink system ID of this vehicle" name="AntennaTracker:SYSID_THISMAV" documentation="Allows setting an individual system id for this vehicle to distinguish it from others on the same network" user="Advanced">
<field name="Range">1 255</field>
</param>
......@@ -1656,11 +1765,55 @@
<field name="Increment">1</field>
<field name="Units">meters</field>
</param>
<param humanName="Log bitmask" name="AntennaTracker:LOG_BITMASK" documentation="4 byte bitmap of log types to enable" user="Standard">
<field name="Bitmask">0:ATTITUDE,1:GPS,2:RCIN,3:IMU,4:RCOUT,5:COMPASS</field>
<values>
<value code="63">Default</value>
<value code="0">Disabled</value>
</values>
</param>
<param humanName="Pitch axis controller P gain" name="AntennaTracker:PITCH2SRV_P" documentation="Pitch axis controller P gain. Converts the difference between desired pitch angle and actual pitch angle into a pitch servo pwm change" user="Standard">
<field name="Range">0.0 3.0</field>
<field name="Increment">0.01</field>
</param>
<param humanName="Pitch axis controller I gain" name="AntennaTracker:PITCH2SRV_I" documentation="Pitch axis controller I gain. Corrects long-term difference in desired pitch angle vs actual pitch angle" user="Standard">
<field name="Range">0.0 3.0</field>
<field name="Increment">0.01</field>
</param>
<param humanName="Pitch axis controller I gain maximum" name="AntennaTracker:PITCH2SRV_IMAX" documentation="Pitch axis controller I gain maximum. Constrains the maximum pwm change that the I gain will output" user="Standard">
<field name="Range">0 4000</field>
<field name="Increment">10</field>
<field name="Units">Percent*10</field>
</param>
<param humanName="Pitch axis controller D gain" name="AntennaTracker:PITCH2SRV_D" documentation="Pitch axis controller D gain. Compensates for short-term change in desired pitch angle vs actual pitch angle" user="Standard">
<field name="Range">0.001 0.1</field>
<field name="Increment">0.001</field>
</param>
<param humanName="Yaw axis controller P gain" name="AntennaTracker:YAW2SRV_P" documentation="Yaw axis controller P gain. Converts the difference between desired yaw angle (heading) and actual yaw angle into a yaw servo pwm change" user="Standard">
<field name="Range">0.0 3.0</field>
<field name="Increment">0.01</field>
</param>
<param humanName="Yaw axis controller I gain" name="AntennaTracker:YAW2SRV_I" documentation="Yaw axis controller I gain. Corrects long-term difference in desired yaw angle (heading) vs actual yaw angle" user="Standard">
<field name="Range">0.0 3.0</field>
<field name="Increment">0.01</field>
</param>
<param humanName="Yaw axis controller I gain maximum" name="AntennaTracker:YAW2SRV_IMAX" documentation="Yaw axis controller I gain maximum. Constrains the maximum pwm change that the I gain will output" user="Standard">
<field name="Range">0 4000</field>
<field name="Increment">10</field>
<field name="Units">Percent*10</field>
</param>
<param humanName="Yaw axis controller D gain" name="AntennaTracker:YAW2SRV_D" documentation="Yaw axis controller D gain. Compensates for short-term change in desired yaw angle (heading) vs actual yaw angle" user="Standard">
<field name="Range">0.001 0.1</field>
<field name="Increment">0.001</field>
</param>
<param humanName="Number of loaded mission items" name="AntennaTracker:CMD_TOTAL" documentation="Set to 1 if HOME location has been loaded by the ground station. Do not change this manually." user="Advanced">
<field name="Range">1 255</field>
</param>
</parameters>
<parameters name="APMrover2">
<param humanName="Software Type" name="APMrover2:SYSID_SW_TYPE" documentation="This is used by the ground station to recognise the software type (eg ArduPlane vs ArduCopter)" user="Advanced">
<field name="ReadOnly">True</field>
</param>
<param humanName="Log bitmask" name="APMrover2:LOG_BITMASK" documentation="Two byte bitmap of log types to enable in dataflash" user="Advanced">
<values>
<value code="0">Disabled</value>
......@@ -2045,12 +2198,16 @@
</parameters>
<parameters name="GND_">
<param humanName="Absolute Pressure" name="GND_ABS_PRESS" documentation="calibrated ground pressure in Pascals">
<field name="Units">pascals</field>
<field name="ReadOnly">True</field>
<field name="Volatile">True</field>
<field name="Increment">1</field>
<field name="Units">pascals</field>
</param>
<param humanName="ground temperature" name="GND_TEMP" documentation="calibrated ground temperature in degrees Celsius">
<field name="Units">degrees celsius</field>
<field name="ReadOnly">True</field>
<field name="Volatile">True</field>
<field name="Increment">1</field>
<field name="Units">degrees celsius</field>
</param>
<param humanName="altitude offset" name="GND_ALT_OFFSET" documentation="altitude offset in meters added to barometric altitude. This is used to allow for automatic adjustment of the base barometric altitude by a ground station equipped with a barometer. The value is added to the barometric altitude read by the aircraft. It is automatically reset to 0 when the barometer is calibrated on each reboot or when a preflight calibration is performed.">
<field name="Units">meters</field>
......@@ -2110,7 +2267,6 @@
<value code="7">Airborne2G</value>
<value code="8">Airborne4G</value>
</values>
<field name="RebootRequired">True</field>
</param>
<param humanName="Automatic Switchover Setting" name="GPS_AUTO_SWITCH" documentation="Automatic switchover to GPS reporting best lock" user="Advanced">
<values>
......@@ -2132,18 +2288,16 @@
<value code="1">Enabled</value>
<value code="2">NoChange</value>
</values>
<field name="RebootRequired">True</field>
</param>
<param humanName="Minimum elevation" name="GPS_MIN_ELEV" documentation="This sets the minimum elevation of satellites above the horizon for them to be used for navigation. Setting this to -100 leaves the minimum elevation set to the GPS modules default." user="Advanced">
<field name="Range">-100 90</field>
<field name="Units">Degrees</field>
<field name="RebootRequired">True</field>
</param>
<param humanName="Destination for GPS_INJECT_DATA MAVLink packets" name="GPS_INJECT_TO" documentation="The GGS can send raw serial packets to inject data to multiple GPSes.">
<values>
<value code="0">send to first GPS</value>
<value code=" 1">send to 2nd GPS</value>
<value code=" 127">send to all</value>
<value code="1">send to 2nd GPS</value>
<value code="127">send to all</value>
</values>
</param>
<param humanName="Swift Binary Protocol Logging Mask" name="GPS_SBP_LOGMASK" documentation="Masked with the SBP msg_type field to determine whether SBR1/SBR2 data is logged" user="Advanced">
......@@ -2161,8 +2315,8 @@
</values>
<field name="RebootRequired">True</field>
</param>
<param humanName="GNSS system configuration" name="GPS_GNSS_MODE" documentation="Bitmask for what GNSS system to use (all unchecked or zero to leave GPS as configured)" user="Advanced">
<field name="Bitmask">0:GPS, 1:SBAS, 2:Galileo, 3:Beidou, 4:IMES, 5:QZSS, 6:GLOSNASS</field>
<param humanName="GNSS system configuration" name="GPS_GNSS_MODE" documentation="Bitmask for what GNSS system to use on the first GPS (all unchecked or zero to leave GPS as configured)" user="Advanced">
<field name="Bitmask">0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS</field>
<values>
<value code="0">Leave as currently configured</value>
<value code=" 1">GPS-NoSBAS</value>
......@@ -2175,12 +2329,33 @@
<value code=" 66">GLONASS+SBAS</value>
<value code=" 67">GPS+GLONASS+SBAS</value>
</values>
<field name="RebootRequired">True</field>
</param>
<param humanName="Save GPS configuration" name="GPS_SAVE_CFG" documentation="Determines whether the configuration for this GPS should be written to non-volatile memory on the GPS. Currently working for UBlox." user="Advanced">
<param humanName="Save GPS configuration" name="GPS_SAVE_CFG" documentation="Determines whether the configuration for this GPS should be written to non-volatile memory on the GPS. Currently working for UBlox 6 series and above." user="Advanced">
<values>
<value code="0">Do not save config</value>
<value code="1">Save config</value>
<value code="2">Save only when needed</value>
</values>
</param>
<param humanName="GNSS system configuration" name="GPS_GNSS_MODE2" documentation="Bitmask for what GNSS system to use on the second GPS (all unchecked or zero to leave GPS as configured)" user="Advanced">
<field name="Bitmask">0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS</field>
<values>
<value code="0">Leave as currently configured</value>
<value code=" 1">GPS-NoSBAS</value>
<value code=" 3">GPS+SBAS</value>
<value code=" 4">Galileo-NoSBAS</value>
<value code=" 6">Galileo+SBAS</value>
<value code=" 8">Beidou</value>
<value code=" 51">GPS+IMES+QZSS+SBAS (Japan Only)</value>
<value code=" 64">GLONASS</value>
<value code=" 66">GLONASS+SBAS</value>
<value code=" 67">GPS+GLONASS+SBAS</value>
</values>
</param>
<param humanName="Automatic GPS configuration" name="GPS_AUTO_CONFIG" documentation="Controls if the autopilot should automatically configure the GPS based on the parameters and default settings" user="Advanced">
<values>
<value code="0">Disables automatic configuration</value>
<value code="1">Enable automatic configuration</value>
</values>
</param>
</parameters>
......@@ -2213,6 +2388,27 @@
<value code="1">High</value>
</values>
</param>
<param humanName="Minimum time between photos" name="CAM_MIN_INTERVAL" documentation="Postpone shooting if previous picture was taken less than preset time(ms) ago." user="Standard">
<field name="Range">0 10000</field>
<field name="Units">milliseconds</field>
</param>
<param humanName="Maximum photo roll angle." name="CAM_MAX_ROLL" documentation="Postpone shooting if roll is greater than limit. (0=Disable, will shoot regardless of roll)." user="Standard">
<field name="Range">0 180</field>
<field name="Units">Degrees</field>
</param>
<param humanName="Camera feedback pin" name="CAM_FEEDBACK_PIN" documentation="pin number to use for save accurate camera feedback messages. If set to -1 then don't use a pin flag for this, otherwise this is a pin number which if held high after a picture trigger order, will save camera messages when camera really takes a picture. A universal camera hot shoe is needed. The pin should be held high for at least 2 milliseconds for reliable trigger detection. See also the CAM_FEEDBACK_POL option" user="Standard">
<values>
<value code="-1">Disabled</value>
<value code=" 0-8">APM FeedbackPin</value>
<value code=" 50-55">PixHawk FeedbackPin</value>
</values>
</param>
<param humanName="Camera feedback pin polarity" name="CAM_FEEDBACK_POL" documentation="Polarity for feedback pin. If this is 1 then the feedback pin should go high on trigger. If set to 0 then it should go low" user="Standard">
<values>
<value code="0">TriggerLow</value>
<value code="1">TriggerHigh</value>
</values>
</param>
</parameters>
<parameters name="ARMING_">
<param humanName="Require Arming Motors " name="ARMING_REQUIRE" documentation="Arming disabled until some requirements are met. If 0, there are no requirements (arm immediately). If 1, require rudder stick or GCS arming before arming motors and send THR_MIN PWM to throttle channel when disarmed. If 2, require rudder stick or GCS arming and send 0 PWM to throttle channel when disarmed. See the ARMING_CHECK_* parameters to see what checks are done before arming. Note, if setting this parameter to 0 a reboot is required to arm the plane. Also note, even with this parameter at 0, if ARMING_CHECK parameter is not also zero the plane may fail to arm throttle at boot due to a pre-arm check failure." user="Advanced">
......@@ -2223,13 +2419,13 @@
</values>
</param>
<param humanName="Arm Checks to Peform (bitmask)" name="ARMING_CHECK" documentation="Checks prior to arming motor. This is a bitmask of checks that will be performed befor allowing arming. The default is no checks, allowing arming at any time. You can select whatever checks you prefer by adding together the values of each check type to set this parameter. For example, to only allow arming when you have GPS lock and no RC failsafe you would set ARMING_CHECK to 72. For most users it is recommended that you set this to 1 to enable all checks." user="Standard">
<field name="Bitmask">0:All,1:Barometer,2:Compass,3:GPS,4:INS,5:Parameters,6:RC,7:Board voltage,8:Battery Level,9:Airspeed,10:Logging Available</field>
<field name="Bitmask">0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC,7:Board voltage,8:Battery Level,9:Airspeed,10:Logging Available,11:Hardware safety switch,12:GPS Configuration</field>
<values>
<value code="0">None</value>
<value code="1">All</value>
<value code="2">Barometer</value>
<value code="4">Compass</value>
<value code="8">GPS</value>
<value code="8">GPS Lock</value>
<value code="16">INS(INertial Sensors - accels &amp; gyros)</value>
<value code="32">Parameters(unused)</value>
<value code="64">RC Failsafe</value>
......@@ -2237,8 +2433,22 @@
<value code="256">Battery Level</value>
<value code="512">Airspeed</value>
<value code="1024">LoggingAvailable</value>
<value code="2048">Hardware safety switch</value>
<value code="4096">GPS configuration</value>
</values>
</param>
<param humanName="Accelerometer error threshold" name="ARMING_ACCTHRESH" documentation="Accelerometer error threshold used to determine inconsistent accelerometers. Compares this error range to other accelerometers to detect a hardware or calibration error. Lower value means tighter check and harder to pass arming check. Not all accelerometers are created equal." user="Advanced">
<field name="Range">0.25 3.0</field>
<field name="Units">m/s/s</field>
</param>
<param humanName="Minimum arming voltage on the first battery" name="ARMING_MIN_VOLT" documentation="The minimum voltage on the first battery to arm, 0 disabes the check" user="Standard">
<field name="Increment">0.1 </field>
<field name="Units">Volts</field>
</param>
<param humanName="Minimum arming voltage on the second battery" name="ARMING_MIN_VOLT2" documentation="The minimum voltage on the first battery to arm, 0 disabes the check" user="Standard">
<field name="Increment">0.1 </field>
<field name="Units">Volts</field>
</param>
</parameters>
<parameters name="RELAY_">
<param humanName="First Relay Pin" name="RELAY_PIN" documentation="Digital pin number for first relay control. This is the pin used for camera control." user="Standard">
......@@ -2914,6 +3124,8 @@
<value code="28">EPM</value>
<value code="29">LandingGear</value>
<value code="30">EngineRunEnable</value>
<value code="31">HeliRSC</value>
<value code="32">HeliTailRSC</value>
</values>
</param>
</parameters>
......@@ -2973,6 +3185,8 @@
<value code="28">EPM</value>
<value code="29">LandingGear</value>
<value code="30">EngineRunEnable</value>
<value code="31">HeliRSC</value>
<value code="32">HeliTailRSC</value>
</values>
</param>
</parameters>
......@@ -3032,6 +3246,8 @@
<value code="28">EPM</value>
<value code="29">LandingGear</value>
<value code="30">EngineRunEnable</value>
<value code="31">HeliRSC</value>
<value code="32">HeliTailRSC</value>
</values>
</param>
</parameters>
......@@ -3091,6 +3307,8 @@
<value code="28">EPM</value>
<value code="29">LandingGear</value>
<value code="30">EngineRunEnable</value>
<value code="31">HeliRSC</value>
<value code="32">HeliTailRSC</value>
</values>
</param>
</parameters>
......@@ -3150,6 +3368,8 @@
<value code="28">EPM</value>
<value code="29">LandingGear</value>
<value code="30">EngineRunEnable</value>
<value code="31">HeliRSC</value>
<value code="32">HeliTailRSC</value>
</values>
</param>
</parameters>
......@@ -3209,6 +3429,8 @@
<value code="28">EPM</value>
<value code="29">LandingGear</value>
<value code="30">EngineRunEnable</value>
<value code="31">HeliRSC</value>
<value code="32">HeliTailRSC</value>
</values>
</param>
</parameters>
......@@ -3268,6 +3490,8 @@
<value code="28">EPM</value>
<value code="29">LandingGear</value>
<value code="30">EngineRunEnable</value>
<value code="31">HeliRSC</value>
<value code="32">HeliTailRSC</value>
</values>
</param>
</parameters>
......@@ -3327,6 +3551,8 @@
<value code="28">EPM</value>
<value code="29">LandingGear</value>
<value code="30">EngineRunEnable</value>
<value code="31">HeliRSC</value>
<value code="32">HeliTailRSC</value>
</values>
</param>
</parameters>
......@@ -3386,6 +3612,8 @@
<value code="28">EPM</value>
<value code="29">LandingGear</value>
<value code="30">EngineRunEnable</value>
<value code="31">HeliRSC</value>
<value code="32">HeliTailRSC</value>
</values>
</param>
</parameters>
......@@ -3445,6 +3673,8 @@
<value code="28">EPM</value>
<value code="29">LandingGear</value>
<value code="30">EngineRunEnable</value>
<value code="31">HeliRSC</value>
<value code="32">HeliTailRSC</value>
</values>
</param>
</parameters>
......@@ -3917,6 +4147,17 @@
<value code="3">ShowOverruns</value>
</values>
</param>
<param humanName="Scheduling main loop rate" name="SCHED_LOOP_RATE" documentation="This controls the rate of the main control loop in Hz. This should only be changed by developers. This only takes effect on restart" user="Advanced">
<values>
<value code="50">50Hz</value>
<value code="100">100Hz</value>
<value code="200">200Hz</value>
<value code="250">250Hz</value>
<value code="300">300Hz</value>
<value code="400">400Hz</value>
</values>
<field name="RebootRequired">True</field>
</param>
</parameters>
<parameters name="RCMAP_">
<param humanName="Roll channel" name="RCMAP_ROLL" documentation="Roll channel number. This is useful when you have a RC transmitter that can't change the channel order easily. Roll is normally on channel 1, but you can move it to any channel with this parameter. Reboot is required for changes to take effect." user="Advanced">
......@@ -3941,7 +4182,7 @@
</param>
</parameters>
<parameters name="INS_">
<param humanName="IMU Product ID" name="INS_PRODUCT_ID" documentation="Which type of IMU is installed (read-only). " user="Advanced">
<param humanName="IMU Product ID" name="INS_PRODUCT_ID" documentation="Which type of IMU is installed (read-only)." user="Advanced">
<values>
<value code="0">Unknown</value>
<value code="1">APM1-1280</value>
......@@ -4071,7 +4312,7 @@
</values>
</param>
<param humanName="Stillness threshold for detecting if we are moving" name="INS_STILL_THRESH" documentation="Threshold to tolerate vibration to determine if vehicle is motionless. This depends on the frame type and if there is a constant vibration due to motors before launch or after landing. Total motionless is about 0.05. Suggested values: Planes/rover use 0.1, multirotors use 1, tradHeli uses 5" user="Advanced">
<field name="Range">0.05 to 50</field>
<field name="Range">0.05 50</field>
</param>
<param humanName="Gyro Calibration scheme" name="INS_GYR_CAL" documentation="Conrols when automatic gyro calibration is performed" user="Advanced">
<values>
......@@ -4079,6 +4320,20 @@
<value code=" 1">Start-up only</value>
</values>
</param>
<param humanName="Accel cal trim option" name="INS_TRIM_OPTION" documentation="Specifies how the accel cal routine determines the trims" user="Advanced">
<values>
<value code="0">Don't adjust the trims</value>
<value code="1">Assume first orientation was level</value>
<value code="2">Assume ACC_BODYFIX is perfectly aligned to the vehicle</value>
</values>
</param>
<param humanName="Body-fixed accelerometer" name="INS_ACC_BODYFIX" documentation="The body-fixed accelerometer to be used for trim calculation" user="Advanced">
<values>
<value code="1">IMU 1</value>
<value code="2">IMU 2</value>
<value code="3">IMU 3</value>
</values>
</param>
</parameters>
<parameters name="AHRS_">
<param humanName="AHRS GPS gain" name="AHRS_GPS_GAIN" documentation="This controls how how much to use the GPS to correct the attitude. This should never be set to zero for a plane as it would result in the plane losing control in turns. For a plane please use the default value of 1.0.">
......@@ -4211,16 +4466,16 @@
</parameters>
<parameters name="NAVL1_">
<param humanName="L1 control period" name="NAVL1_PERIOD" documentation="Period in seconds of L1 tracking loop. This parameter is the primary control for agressiveness of turns in auto mode. This needs to be larger for less responsive airframes. The default of 20 is quite conservative, but for most RC aircraft will lead to reasonable flight. For smaller more agile aircraft a value closer to 15 is appropriate, or even as low as 10 for some very agile aircraft. When tuning, change this value in small increments, as a value that is much too small (say 5 or 10 below the right value) can lead to very radical turns, and a risk of stalling.">
<field name="Range">1-60</field>
<field name="Range">1 60</field>
<field name="Increment">1</field>
<field name="Units">seconds</field>
</param>
<param humanName="L1 control damping ratio" name="NAVL1_DAMPING" documentation="Damping ratio for L1 control. Increase this in increments of 0.05 if you are getting overshoot in path tracking. You should not need a value below 0.7 or above 0.85.">
<field name="Range">0.6-1.0</field>
<field name="Range">0.6 1.0</field>
<field name="Increment">0.05</field>
</param>
<param humanName="L1 control crosstrack integrator gain" name="NAVL1_XTRACK_I" documentation="Crosstrack error integrator gain. This gain is applied to the crosstrack error to ensure it converges to zero. Set to zero to disable. Smaller values converge slower, higher values will cause crosstrack error oscillation.">
<field name="Range">0 to 0.1</field>
<field name="Range">0 0.1</field>
<field name="Increment">0.01</field>
</param>
</parameters>
......@@ -4277,12 +4532,12 @@
<field name="Range">-1 127</field>
<field name="Increment">1</field>
</param>
<param humanName="Cruise throttle during landing approach (percentage)" name="TECS_LAND_THR" documentation="Use this parameter instead of LAND_ASPD if your platform does not have an airspeed sensor. It is the cruise throttle during landing approach. If it is negative if TECS_LAND_ASPD is in use then this value is not used during landing." user="User">
<field name="Range">-1 to 100</field>
<param humanName="Cruise throttle during landing approach (percentage)" name="TECS_LAND_THR" documentation="Use this parameter instead of LAND_ARSPD if your platform does not have an airspeed sensor. It is the cruise throttle during landing approach. If this value is negative then it is disabled and TECS_LAND_ARSPD is used instead." user="User">
<field name="Range">-1 100</field>
<field name="Increment">0.1</field>
</param>
<param humanName="Weighting applied to speed control during landing." name="TECS_LAND_SPDWGT" documentation="Same as SPDWEIGHT parameter, with the exception that this parameter is applied during landing flight stages. A value closer to 2 will result in the plane ignoring height error during landing and our experience has been that the plane will therefore keep the nose up -- sometimes good for a glider landing (with the side effect that you will likely glide a ways past the landing point). A value closer to 0 results in the plane ignoring speed error -- use caution when lowering the value below 1 -- ignoring speed could result in a stall." user="Advanced">
<field name="Range">0.0 2.0</field>
<param humanName="Weighting applied to speed control during landing." name="TECS_LAND_SPDWGT" documentation="Same as SPDWEIGHT parameter, with the exception that this parameter is applied during landing flight stages. A value closer to 2 will result in the plane ignoring height error during landing and our experience has been that the plane will therefore keep the nose up -- sometimes good for a glider landing (with the side effect that you will likely glide a ways past the landing point). A value closer to 0 results in the plane ignoring speed error -- use caution when lowering the value below 1 -- ignoring speed could result in a stall. Values between 0 and 2 are valid values for a fixed landing weight. When using -1 the weight will be scaled during the landing. At the start of the landing approach it starts with TECS_SPDWEIGHT and scales down to 0 by the time you reach the land point. Example: Halfway down the landing approach you'll effectively have a weight of TECS_SPDWEIGHT/2." user="Advanced">
<field name="Range">-1.0 2.0</field>
<field name="Increment">0.1</field>
</param>
<param humanName="Maximum pitch in auto flight" name="TECS_PITCH_MAX" documentation="This controls maximum pitch up in automatic throttle modes. If this is set to zero then LIM_PITCH_MAX is used instead. The purpose of this parameter is to allow the use of a smaller pitch range when in automatic flight than what is used in FBWA mode." user="Advanced">
......@@ -4306,9 +4561,35 @@
<field name="Increment">0.1</field>
</param>
<param humanName="Maximum pitch during final stage of landing" name="TECS_LAND_PMAX" documentation="This limits the pitch used during the final stage of automatic landing. During the final landing stage most planes need to keep their pitch small to avoid stalling. A maximum of 10 degrees is usually good. A value of zero means to use the normal pitch limits." user="Advanced">
<field name="Range">0 40</field>
<field name="Range">-5 40</field>
<field name="Increment">1</field>
</param>
<param humanName="Sink rate max for landing approach stage" name="TECS_APPR_SMAX" documentation="The sink rate max for the landing approach stage of landing. This will need to be large for steep landing approaches especially when using reverse thrust. If 0, then use TECS_SINK_MAX." user="Advanced">
<field name="Range">0.0 20.0</field>
<field name="Increment">0.1</field>
<field name="Units">m/s</field>
</param>
<param humanName="Land sink rate change" name="TECS_LAND_SRC" documentation="When zero, the flare sink rate (TECS_LAND_SINK) is a fixed sink demand. With this enabled the flare sinkrate will increase/decrease the flare sink demand as you get further beyond the LAND waypoint. Has no effect before the waypoint. This value is added to TECS_LAND_SINK proportional to distance traveled after wp. With an increasing sink rate you can still land in a given distance if you're traveling too fast and cruise passed the land point. A positive value will force the plane to land sooner proportional to distance passed land point. A negative number will tell the plane to slowly climb allowing for a pitched-up stall landing. Recommend 0.2 as initial value." user="Advanced">
<field name="Range">-2.0 2.0</field>
<field name="Increment">0.1</field>
<field name="Units">m/s/m</field>
</param>
<param humanName="Controller throttle damping when landing" name="TECS_LAND_TDAMP" documentation="This is the damping gain for the throttle demand loop during and auto-landing. Same as TECS_THR_DAMP but only in effect during an auto-land. Increase to add damping to correct for oscillations in speed and height. When set to 0 landing throttle damp is controlled by TECS_THR_DAMP." user="Advanced">
<field name="Range">0.1 1.0</field>
<field name="Increment">0.1</field>
</param>
<param humanName="Controller integrator during landing" name="TECS_LAND_IGAIN" documentation="This is the integrator gain on the control loop during landing. When set to 0 then TECS_INTEG_GAIN is used. Increase to increase the rate at which speed and height offsets are trimmed out. Typically values lower than TECS_INTEG_GAIN work best" user="Advanced">
<field name="Range">0.0 0.5</field>
<field name="Increment">0.02</field>
</param>
<param humanName="Controller integrator during takeoff" name="TECS_TKOFF_IGAIN" documentation="This is the integrator gain on the control loop during takeoff. When set to 0 then TECS_INTEG_GAIN is used. Increase to increase the rate at which speed and height offsets are trimmed out. Typically values higher than TECS_INTEG_GAIN work best" user="Advanced">
<field name="Range">0.0 0.5</field>
<field name="Increment">0.02</field>
</param>
<param name="TECS_LAND_PDAMP" documentation="This is the damping gain for the pitch demand loop. Increase to add damping to correct for oscillations in speed and height. If set to 0 then TECS_PTCH_DAMP will be used instead." user="Advanced">
<field name="Range">0.1 1.0</field>
<field name="Increment">0.1</field>
</param>
</parameters>
<parameters name="MNT">
<param humanName="Mount default operating mode" name="MNT_DEFLT_MODE" documentation="Mount default operating mode on startup and after control is returned from autopilot" user="Standard">
......@@ -4460,45 +4741,7 @@
<value code=" 4">SToRM32 MAVLink</value>
<value code=" 5">SToRM32 Serial</value>
</values>
</param>
<param humanName="MAVLink Mount's roll angle offsets" name="MNT_OFF_JNT_X" documentation="MAVLink Mount's roll angle offsets" user="Advanced">
<field name="Range">0 0.5</field>
<field name="Units">radians</field>
</param>
<param humanName="MAVLink Mount's pitch angle offsets" name="MNT_OFF_JNT_Y" documentation="MAVLink Mount's pitch angle offsets" user="Advanced">
<field name="Range">0 0.5</field>
<field name="Units">radians</field>
</param>
<param humanName="MAVLink Mount's yaw angle offsets" name="MNT_OFF_JNT_Z" documentation="MAVLink Mount's yaw angle offsets" user="Advanced">
<field name="Range">0 0.5</field>
<field name="Units">radians</field>
</param>
<param humanName="MAVLink Mount's roll velocity offsets" name="MNT_OFF_ACC_X" documentation="MAVLink Mount's roll velocity offsets" user="Advanced">
<field name="Range">0 2</field>
<field name="Units">m/s</field>
</param>
<param humanName="MAVLink Mount's pitch velocity offsets" name="MNT_OFF_ACC_Y" documentation="MAVLink Mount's pitch velocity offsets" user="Advanced">
<field name="Range">0 2</field>
<field name="Units">m/s</field>
</param>
<param humanName="MAVLink Mount's yaw velocity offsets" name="MNT_OFF_ACC_Z" documentation="MAVLink Mount's yaw velocity offsets" user="Advanced">
<field name="Range">0 2</field>
<field name="Units">m/s</field>
</param>
<param humanName="MAVLink Mount's roll gyro offsets" name="MNT_OFF_GYRO_X" documentation="MAVLink Mount's roll gyro offsets" user="Advanced">
<field name="Range">0 0.5</field>
<field name="Units">radians/sec</field>
</param>
<param humanName="MAVLink Mount's pitch gyro offsets" name="MNT_OFF_GYRO_Y" documentation="MAVLink Mount's pitch gyro offsets" user="Advanced">
<field name="Range">0 0.5</field>
<field name="Units">radians/sec</field>
</param>
<param humanName="MAVLink Mount's yaw gyro offsets" name="MNT_OFF_GYRO_Z" documentation="MAVLink Mount's yaw gyro offsets" user="Advanced">
<field name="Range">0 0.5</field>
<field name="Units">radians/sec</field>
</param>
<param humanName="MAVLink Mount's rate gain" name="MNT_K_RATE" documentation="MAVLink Mount's rate gain" user="Advanced">
<field name="Range">0 10</field>
<field name="RebootRequired">True</field>
</param>
<param humanName="Mount default operating mode" name="MNT2_DEFLT_MODE" documentation="Mount default operating mode on startup and after control is returned from autopilot" user="Standard">
<values>
......@@ -4701,6 +4944,10 @@
<field name="Increment">50</field>
<field name="Units">mAh</field>
</param>
<param humanName="Maximum allowed power (Watts)" name="BATT_WATT_MAX" documentation="If battery wattage (voltage * current) exceeds this value then the system will reduce max throttle (THR_MAX, TKOFF_THR_MAX and THR_MIN for reverse thrust) to satisfy this limit. This helps limit high current to low C rated batteries regardless of battery voltage. The max throttle will slowly grow back to THR_MAX (or TKOFF_THR_MAX ) and THR_MIN if demanding the current max and under the watt max. Use 0 to disable." user="Advanced">
<field name="Increment">1</field>
<field name="Units">Watts</field>
</param>
<param humanName="Battery monitoring" name="BATT2_MONITOR" documentation="Controls enabling monitoring of the battery's voltage and current" user="Standard">
<values>
<value code="0">Disabled</value>
......@@ -4742,6 +4989,10 @@
<field name="Increment">50</field>
<field name="Units">mAh</field>
</param>
<param humanName="Maximum allowed current" name="BATT2_WATT_MAX" documentation="If battery wattage (voltage * current) exceeds this value then the system will reduce max throttle (THR_MAX, TKOFF_THR_MAX and THR_MIN for reverse thrust) to satisfy this limit. This helps limit high current to low C rated batteries regardless of battery voltage. The max throttle will slowly grow back to THR_MAX (or TKOFF_THR_MAX ) and THR_MIN if demanding the current max and under the watt max. Use 0 to disable." user="Advanced">
<field name="Increment">1</field>
<field name="Units">Amps</field>
</param>
</parameters>
<parameters name="BRD_">
<param humanName="PWM Count" name="BRD_PWM_COUNT" documentation="Number of auxillary PWMs to enable. On PX4v1 only 0 or 2 is valid. On Pixhawk 0, 2, 4 or 6 is valid.">
......@@ -4772,14 +5023,20 @@
<value code="1">Enabled</value>
</values>
</param>
<param humanName=" Enable use of SBUS output" name="BRD_SBUS_OUT" documentation="Enabling this option on a Pixhawk enables SBUS servo output from the SBUS output connector">
<param humanName=" SBUS output rate" name="BRD_SBUS_OUT" documentation="This sets the SBUS output frame rate in Hz">
<values>
<value code="0">Disabled</value>
<value code="1">Enabled</value>
<value code="1">50Hz</value>
<value code="2">75Hz</value>
<value code="3">100Hz</value>
<value code="4">150Hz</value>
<value code="5">200Hz</value>
<value code="6">250Hz</value>
<value code="7">300Hz</value>
</values>
</param>
<param humanName="User-defined serial number" name="BRD_SERIAL_NUM" documentation="User-defined serial number of this vehicle, it can be any arbitrary number you want and has no effect on the autopilot" user="Standard">
<field name="Range">-32767 to 32768 (any 16bit signed number)</field>
<field name="Range">-32767 32768</field>
</param>
<param humanName=" Enable use of UAVCAN devices" name="BRD_CAN_ENABLE" documentation="Enabling this option on a Pixhawk enables UAVCAN devices. Note that this uses about 25k of memory">
<values>
......@@ -4868,6 +5125,12 @@
</param>
</parameters>
<parameters name="EKF_">
<param humanName="Enable EKF1" name="EKF_ENABLE" documentation="This enables EKF1 to be disabled when using alternative algorithms. When disabling it, the alternate EKF2 estimator must be enabled by setting EK2_ENABLED = 1 and flight control algorithms must be set to use the alternative estimator by setting AHRS_EKF_TYPE = 2." user="Advanced">
<values>
<value code="0">Disabled</value>
<value code=" 1">Enabled</value>
</values>
</param>
<param humanName="GPS horizontal velocity measurement noise scaler" name="EKF_VELNE_NOISE" documentation="This is the scaler that is applied to the speed accuracy reported by the receiver to estimate the horizontal velocity observation noise. If the model of receiver used does not provide a speed accurcy estimate, then a speed acuracy of 1 is assumed. Increasing it reduces the weighting on these measurements." user="Advanced">
<field name="Range">0.05 5.0</field>
<field name="Increment">0.05</field>
......@@ -4985,29 +5248,29 @@
<field name="Units">meters</field>
</param>
<param humanName="Terrain Gradient % RMS" name="EKF_GND_GRADIENT" documentation="This parameter sets the RMS terrain gradient percentage assumed by the terrain height estimation. Terrain height can be estimated using optical flow and/or range finder sensor data if fitted. Smaller values cause the terrain height estimate to be slower to respond to changes in measurement. Larger values casue the terrain height estimate to be faster to respond, but also more noisy. Generally this value can be reduced if operating over very flat terrain and increased if operating over uneven terrain." user="Advanced">
<field name="Range">1 - 50</field>
<field name="Range">1 50</field>
<field name="Increment">1</field>
</param>
<param humanName="Optical flow measurement noise (rad/s)" name="EKF_FLOW_NOISE" documentation="This is the RMS value of noise and errors in optical flow measurements. Increasing it reduces the weighting on these measurements." user="Advanced">
<field name="Range">0.05 - 1.0</field>
<field name="Range">0.05 1.0</field>
<field name="Increment">0.05</field>
<field name="Units">rad/s</field>
</param>
<param humanName="Optical Flow measurement gate size" name="EKF_FLOW_GATE" documentation="This parameter sets the number of standard deviations applied to the optical flow innovation consistency check. Decreasing it makes it more likely that good measurements will be rejected. Increasing it makes it more likely that bad measurements will be accepted." user="Advanced">
<field name="Range">1 - 100</field>
<field name="Range">1 100</field>
<field name="Increment">1</field>
</param>
<param humanName="Optical Flow measurement delay (msec)" name="EKF_FLOW_DELAY" documentation="This is the number of msec that the optical flow measurements lag behind the inertial measurements. It is the time from the end of the optical flow averaging period and does not include the time delay due to the 100msec of averaging within the flow sensor." user="Advanced">
<field name="Range">0 - 500</field>
<field name="Range">0 500</field>
<field name="Increment">10</field>
<field name="Units">milliseconds</field>
</param>
<param humanName="Range finder measurement gate size" name="EKF_RNG_GATE" documentation="This parameter sets the number of standard deviations applied to the range finder innovation consistency check. Decreasing it makes it more likely that good measurements will be rejected. Increasing it makes it more likely that bad measurements will be accepted." user="Advanced">
<field name="Range">1 - 100</field>
<field name="Range">1 100</field>
<field name="Increment">1</field>
</param>
<param humanName="Maximum valid optical flow rate" name="EKF_MAX_FLOW" documentation="This parameter sets the magnitude maximum optical flow rate in rad/sec that will be accepted by the filter" user="Advanced">
<field name="Range">1.0 - 4.0</field>
<field name="Range">1.0 4.0</field>
<field name="Increment">0.1</field>
</param>
<param humanName="Fallback strictness" name="EKF_FALLBACK" documentation="This parameter controls the conditions necessary to trigger a fallback to DCM and INAV. A value of 1 will cause fallbacks to occur on loss of GPS and other conditions. A value of 0 will trust the EKF more." user="Advanced">
......@@ -5025,12 +5288,6 @@
<param humanName="GPS preflight check" name="EKF_GPS_CHECK" documentation="1 byte bitmap of GPS preflight checks to perform. Set to 0 to bypass all checks. Set to 255 perform all checks. Set to 3 to check just the number of satellites and HDoP. Set to 31 for the most rigorous checks that will still allow checks to pass when the copter is moving, eg launch from a boat." user="Advanced">
<field name="Bitmask">0:NSats,1:HDoP,2:speed error,3:horiz pos error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed</field>
</param>
<param humanName="Enable EKF1" name="EKF_ENABLE" documentation="This enables EKF1 to be disabled when using alternative algorithms. When disabling it, the alternate EKF2 estimator must be enabled by setting EK2_ENABLED = 1 and flight control algorithms must be set to use the alternative estimator by setting AHRS_EKF_TYPE = 2." user="Advanced">
<values>
<value code="0">Disabled</value>
<value code=" 1">Enabled</value>
</values>
</param>
</parameters>
<parameters name="EK2_">
<param humanName="Enable EKF2" name="EK2_ENABLE" documentation="This enables EKF2. Enabling EKF2 only makes the maths run, it does not mean it will be used for flight control. To use it for flight control set AHRS_EKF_TYPE=2. A reboot or restart will need to be performed after changing the value of EK2_ENABLE for it to take effect." user="Advanced">
......@@ -5134,25 +5391,25 @@
<field name="Units">m</field>
</param>
<param humanName="Range finder measurement gate size" name="EK2_RNG_GATE" documentation="This sets the percentage number of standard deviations applied to the range finder innovation consistency check. Decreasing it makes it more likely that good measurements will be rejected. Increasing it makes it more likely that bad measurements will be accepted." user="Advanced">
<field name="Range">100 - 1000</field>
<field name="Range">100 1000</field>
<field name="Increment">25</field>
</param>
<param humanName="Maximum valid optical flow rate" name="EK2_MAX_FLOW" documentation="This sets the magnitude maximum optical flow rate in rad/sec that will be accepted by the filter" user="Advanced">
<field name="Range">1.0 - 4.0</field>
<field name="Range">1.0 4.0</field>
<field name="Increment">0.1</field>
<field name="Units">rad/s</field>
</param>
<param humanName="Optical flow measurement noise (rad/s)" name="EK2_FLOW_NOISE" documentation="This is the RMS value of noise and errors in optical flow measurements. Increasing it reduces the weighting on these measurements." user="Advanced">
<field name="Range">0.05 - 1.0</field>
<field name="Range">0.05 1.0</field>
<field name="Increment">0.05</field>
<field name="Units">rad/s</field>
</param>
<param humanName="Optical Flow measurement gate size" name="EK2_FLOW_GATE" documentation="This sets the percentage number of standard deviations applied to the optical flow innovation consistency check. Decreasing it makes it more likely that good measurements will be rejected. Increasing it makes it more likely that bad measurements will be accepted." user="Advanced">
<field name="Range">100 - 1000</field>
<field name="Range">100 1000</field>
<field name="Increment">25</field>
</param>
<param humanName="Optical Flow measurement delay (msec)" name="EK2_FLOW_DELAY" documentation="This is the number of msec that the optical flow measurements lag behind the inertial measurements. It is the time from the end of the optical flow averaging period and does not include the time delay due to the 100msec of averaging within the flow sensor." user="Advanced">
<field name="Range">0 - 250</field>
<field name="Range">0 250</field>
<field name="Increment">10</field>
<field name="Units">msec</field>
</param>
......@@ -5201,6 +5458,10 @@
<field name="Range">50 200</field>
<field name="Units">%</field>
</param>
<param humanName="Non-GPS operation position uncertainty (m)" name="EK2_NOAID_NOISE" documentation="This sets the amount of position variation that the EKF allows for when operating without external measurements (eg GPS or optical flow). Increasing this parameter makes the EKF attitude estimate less sensitive to vehicle manoeuvres but more sensitive to IMU errors." user="Advanced">
<field name="Range">0.5 50.0</field>
<field name="Units">m/s</field>
</param>
</parameters>
<parameters name="RPM">
<param humanName="RPM type" name="RPM_TYPE" documentation="What type of RPM sensor is connected">
......@@ -5275,6 +5536,16 @@
<field name="Units">Microseconds</field>
</param>
</parameters>
<parameters name="NTF_">
<param humanName="LED Brightness" name="NTF_LED_BRIGHT" documentation="Select the RGB LED brightness level. When USB is connected brightness will never be higher than low regardless of the setting." user="Advanced">
<values>
<value code="0">Off</value>
<value code="1">Low</value>
<value code="2">Medium</value>
<value code="3">High</value>
</values>
</param>
</parameters>
<parameters name="HS1_">
<param humanName="RC min PWM" name="HS1_MIN" documentation="RC minimum PWM pulse width. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper limit." user="Advanced">
<field name="Range">800 2200</field>
......@@ -5588,6 +5859,12 @@
<field name="Increment">1000</field>
<field name="Units">Centi-Degrees/Sec/Sec</field>
</param>
<param humanName="Angle Boost" name="ATC_ANGLE_BOOST" documentation="Angle Boost increases output throttle as the vehicle leans to reduce loss of altitude" user="Advanced">
<values>
<value code="0">Disabled</value>
<value code=" 1">Enabled</value>
</values>
</param>
</parameters>
<parameters name="POSCON_">
<param humanName="XY Acceleration filter cutoff frequency" name="POSCON__ACC_XY_FILT" documentation="Lower values will slow the response of the navigation controller and reduce twitchiness" user="Advanced">
......@@ -5700,7 +5977,10 @@
<field name="Increment">0.1</field>
</param>
<param humanName="Flybar Mode Selector" name="H_FLYBAR_MODE" documentation="Flybar present or not. Affects attitude controller used during ACRO flight mode" user="Standard">
<field name="Range">0:NoFlybar 1:Flybar</field>
<values>
<value code="0">NoFlybar</value>
<value code="1">Flybar</value>
</values>
</param>
<param humanName="Direct Drive VarPitch Tail ESC speed" name="H_TAIL_SPEED" documentation="Direct Drive VarPitch Tail ESC speed. Only used when TailType is DirectDrive VarPitch" user="Standard">
<field name="Range">0 1000</field>
......@@ -5844,16 +6124,33 @@
<field name="Values">50, 125, 250</field>
</param>
</parameters>
<parameters name="PRECLAND_">
<param humanName="Precision Land Type" name="PRECLAND_TYPE" documentation="Precision Land Type" user="Advanced">
<parameters name="PLND_">
<param humanName="Precision Land enabled/disabled and behaviour" name="PLND_ENABLED" documentation="Precision Land enabled/disabled and behaviour" user="Advanced">
<values>
<value code="0">Disabled</value>
<value code=" 1">Enabled Always Land</value>
<value code=" 2">Enabled Strict</value>
</values>
</param>
<param humanName="Precision Land Type" name="PLND_TYPE" documentation="Precision Land Type" user="Advanced">
<values>
<value code="0">None</value>
<value code=" 1">CompanionComputer</value>
<value code=" 2">IRLock</value>
</values>
</param>
<param humanName="Precision Land horizontal speed maximum in cm/s" name="PRECLAND_SPEED" documentation="Precision Land horizontal speed maximum in cm/s" user="Advanced">
<param humanName="Precision Land horizontal speed maximum in cm/s" name="PLND_SPEED" documentation="Precision Land horizontal speed maximum in cm/s" user="Advanced">
<field name="Range">0 500</field>
</param>
<param humanName="Precision landing velocity controller P gain" name="PLND_VEL_P" documentation="Precision landing velocity controller P gain" user="Advanced">
<field name="Range">0.100 5.000</field>
</param>
<param humanName="Precision landing velocity controller I gain" name="PLND_VEL_I" documentation="Precision landing velocity controller I gain" user="Advanced">
<field name="Range">0.100 5.000</field>
</param>
<param humanName="Precision landing velocity controller I gain maximum" name="PLND_VEL_IMAX" documentation="Precision landing velocity controller I gain maximum" user="Standard">
<field name="Range">0 1000</field>
<field name="Units">cm/s</field>
</param>
</parameters>
</libraries></paramfile>
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -37,8 +37,7 @@ QGC_LOGGING_CATEGORY(APMParameterMetaDataVerboseLog, "APMParameterMetaDataVer
APMParameterMetaData::APMParameterMetaData(void)
: _parameterMetaDataLoaded(false)
{
// APM meta data is not yet versioned
_loadParameterFactMetaData();
}
/// Converts a string to a typed QVariant
......@@ -123,10 +122,7 @@ QString APMParameterMetaData::mavTypeToString(MAV_TYPE vehicleTypeEnum)
return vehicleName;
}
/// Load Parameter Fact meta data
///
/// The meta data comes from firmware parameters.xml file.
void APMParameterMetaData::_loadParameterFactMetaData()
void APMParameterMetaData::loadParameterFactMetaDataFile(const QString& metaDataFile)
{
if (_parameterMetaDataLoaded) {
return;
......@@ -136,17 +132,9 @@ void APMParameterMetaData::_loadParameterFactMetaData()
QRegExp parameterCategories = QRegExp("ArduCopter|ArduPlane|APMrover2|AntennaTracker");
QString currentCategory;
QString parameterFilename;
// Fixme:: always picking up the bundled xml, we would like to update it from web
// just not sure right now as the xml is in bad shape.
if (parameterFilename.isEmpty() || !QFile(parameterFilename).exists()) {
parameterFilename = ":/FirmwarePlugin/APM/APMParameterFactMetaData.xml";
}
qCDebug(APMParameterMetaDataLog) << "Loading parameter meta data:" << parameterFilename;
qCDebug(APMParameterMetaDataLog) << "Loading parameter meta data:" << metaDataFile;
QFile xmlFile(parameterFilename);
QFile xmlFile(metaDataFile);
Q_ASSERT(xmlFile.exists());
bool success = xmlFile.open(QIODevice::ReadOnly);
......@@ -591,15 +579,18 @@ void APMParameterMetaData::addMetaDataToFact(Fact* fact, MAV_TYPE vehicleType)
}
}
// FixMe:: not handling increment size as their is no place for it in FactMetaData and no ui
fact->setMetaData(metaData);
}
void APMParameterMetaData::getParameterMetaDataVersionInfo(const QString& metaDataFile, int& majorVersion, int& minorVersion)
{
Q_UNUSED(metaDataFile);
// Versioning not yet supported
majorVersion = -1;
minorVersion = -1;
// Meta data version is hacked in for now based on file name
QRegExp regExp(".*\\.(\\d)\\.(\\d)\\.xml$");
if (regExp.exactMatch(metaDataFile) && regExp.captureCount() == 2) {
majorVersion = regExp.cap(2).toInt();
minorVersion = 0;
}
}
......@@ -70,6 +70,7 @@ public:
APMParameterMetaData(void);
void addMetaDataToFact(Fact* fact, MAV_TYPE vehicleType);
void loadParameterFactMetaDataFile(const QString& metaDataFile);
static void getParameterMetaDataVersionInfo(const QString& metaDataFile, int& majorVersion, int& minorVersion);
......@@ -86,7 +87,6 @@ private:
XmlStateDone
};
void _loadParameterFactMetaData();
QVariant _stringToTypedVariant(const QString& string, FactMetaData::ValueType_t type, bool* convertOk);
bool skipXMLBlock(QXmlStreamReader& xml, const QString& blockName);
bool parseParameterAttributes(QXmlStreamReader& xml, APMFactMetaDataRaw *rawMetaData);
......
......@@ -121,6 +121,9 @@ Vehicle::Vehicle(LinkInterface* link,
, _messageSeq(0)
, _compID(0)
, _heardFrom(false)
, _firmwareMajorVersion(-1)
, _firmwareMinorVersion(-1)
, _firmwarePatchVersion(-1)
, _rollFact (0, _rollFactName, FactMetaData::valueTypeDouble)
, _pitchFact (0, _pitchFactName, FactMetaData::valueTypeDouble)
, _headingFact (0, _headingFactName, FactMetaData::valueTypeDouble)
......@@ -288,6 +291,9 @@ Vehicle::Vehicle(QObject* parent)
, _messageSeq(0)
, _compID(0)
, _heardFrom(false)
, _firmwareMajorVersion(-1)
, _firmwareMinorVersion(-1)
, _firmwarePatchVersion(-1)
, _rollFact (0, _rollFactName, FactMetaData::valueTypeDouble)
, _pitchFact (0, _pitchFactName, FactMetaData::valueTypeDouble)
, _headingFact (0, _headingFactName, FactMetaData::valueTypeDouble)
......@@ -1587,6 +1593,13 @@ void Vehicle::_prearmErrorTimeout(void)
setPrearmError(QString());
}
void Vehicle::setFirmwareVersion(int majorVersion, int minorVersion, int patchVersion)
{
_firmwareMajorVersion = majorVersion;
_firmwareMinorVersion = minorVersion;
_firmwarePatchVersion = patchVersion;
}
const char* VehicleGPSFactGroup::_hdopFactName = "hdop";
const char* VehicleGPSFactGroup::_vdopFactName = "vdop";
const char* VehicleGPSFactGroup::_courseOverGroundFactName = "courseOverGround";
......
......@@ -520,6 +520,11 @@ public:
bool containsLink(LinkInterface* link) { return _links.contains(link); }
void doCommandLong(int component, MAV_CMD command, float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, float param5 = 0.0f, float param6 = 0.0f, float param7 = 0.0f);
int firmwareMajorVersion(void) const { return _firmwareMajorVersion; }
int firmwareMinorVersion(void) const { return _firmwareMinorVersion; }
int firmwarePatchVersion(void) const { return _firmwarePatchVersion; }
void setFirmwareVersion(int majorVersion, int minorVersion, int patchVersion);
public slots:
void setLatitude(double latitude);
void setLongitude(double longitude);
......@@ -731,6 +736,10 @@ private:
uint8_t _compID;
bool _heardFrom;
int _firmwareMajorVersion;
int _firmwareMinorVersion;
int _firmwarePatchVersion;
static const int _lowBatteryAnnounceRepeatMSecs; // Amount of time in between each low battery announcement
QElapsedTimer _lowBatteryAnnounceTimer;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment