1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-14 20:10:11 +03:00

RTH and Landing settings

This commit is contained in:
Pawel Spychalski (DzikuVx) 2017-05-17 20:45:50 +02:00
parent fd4c1b5b6b
commit eb4eff59fb
7 changed files with 526 additions and 93 deletions

View file

@ -2038,6 +2038,53 @@
}, },
"wirelessModeSwitch": { "wirelessModeSwitch": {
"message": "Wireless mode" "message": "Wireless mode"
},
"rthConfiguration": {
"message": "RTH and Landing Settings"
},
"minRthDistance": {
"message": "Min. RTH distance [cm]"
},
"minRthDistanceHelp": {
"message": "If UAV is within this distance from Home Point, it will execute Land instead of RTH and Land"
},
"rthClimbFirst": {
"message": "Climb before RTH"
},
"rthClimbIgnoreEmergency": {
"message": "Climb regardless of position sensor health"
},
"rthTailFirst": {
"message": "Tail first"
},
"rthAllowLanding": {
"message": "Land after RTH"
},
"rthAltControlMode": {
"message": "RTH Altitide mode"
},
"rthAbortThreshold": {
"message": "RTH abort threshold [cm]"
},
"rthAbortThresholdHelp": {
"message": "RTH sanity checking feature will notice if distance to home is increasing during RTH and once amount of increase exceeds the threshold defined by this parameter, instead of continuing RTH machine will enter emergency landing, self-level and go down safely. Default is 500m which is safe enough for both multirotor machines and airplanes."
},
"rthAltitude": {
"message": "RTH Altitude [cm]"
},
"rthAltitudeHelp": {
"message": "Used in Extra, Fixed and 'At Least' RTH altitude modes"
},
"landDescentRate": {
"message": "Landing vertical speed [cm/s]"
},
"landSlowdownMinAlt": {
"message": "Min. vertical landing speed at altitude [cm]"
},
"landSlowdownMaxAlt": {
"message": "Vertical landing speed slowdown at altitude [cm]"
},
"emergencyDescentRate": {
"message": "Emergency landing speed [cm/s]"
} }
} }

View file

@ -7424,6 +7424,9 @@ var MSPCodes = {
MSP_POSITION_ESTIMATION_CONFIG: 16, MSP_POSITION_ESTIMATION_CONFIG: 16,
MSP_SET_POSITION_ESTIMATION_CONFIG: 17, MSP_SET_POSITION_ESTIMATION_CONFIG: 17,
MSP_RTH_AND_LAND_CONFIG: 21,
MSP_SET_RTH_AND_LAND_CONFIG: 22,
// MSP commands for Cleanflight original features // MSP commands for Cleanflight original features
MSP_CHANNEL_FORWARDING: 32, MSP_CHANNEL_FORWARDING: 32,
MSP_SET_CHANNEL_FORWARDING: 33, MSP_SET_CHANNEL_FORWARDING: 33,
@ -8487,6 +8490,25 @@ var mspHelper = (function (gui) {
console.log('POSITION_ESTIMATOR saved'); console.log('POSITION_ESTIMATOR saved');
break; break;
case MSPCodes.MSP_RTH_AND_LAND_CONFIG:
RTH_AND_LAND_CONFIG.minRthDistance = data.getUint16(0, true);
RTH_AND_LAND_CONFIG.rthClimbFirst = data.getUint8(2);
RTH_AND_LAND_CONFIG.rthClimbIgnoreEmergency = data.getUint8(3);
RTH_AND_LAND_CONFIG.rthTailFirst = data.getUint8(4);
RTH_AND_LAND_CONFIG.rthAllowLanding = data.getUint8(5);
RTH_AND_LAND_CONFIG.rthAltControlMode = data.getUint8(6);
RTH_AND_LAND_CONFIG.rthAbortThreshold = data.getUint16(7, true);
RTH_AND_LAND_CONFIG.rthAltitude = data.getUint16(9, true);
RTH_AND_LAND_CONFIG.landDescentRate = data.getUint16(11, true);
RTH_AND_LAND_CONFIG.landSlowdownMinAlt = data.getUint16(13, true);
RTH_AND_LAND_CONFIG.landSlowdownMaxAlt = data.getUint16(15, true);
RTH_AND_LAND_CONFIG.emergencyDescentRate = data.getUint16(17, true);
break;
case MSPCodes.MSP_SET_RTH_AND_LAND_CONFIG:
console.log('RTH_AND_LAND_CONFIG saved');
break;
case MSPCodes.MSP_SET_MODE_RANGE: case MSPCodes.MSP_SET_MODE_RANGE:
console.log('Mode range saved'); console.log('Mode range saved');
break; break;
@ -8839,6 +8861,35 @@ var mspHelper = (function (gui) {
buffer.push(POSITION_ESTIMATOR.use_gps_velned); buffer.push(POSITION_ESTIMATOR.use_gps_velned);
break; break;
case MSPCodes.MSP_SET_RTH_AND_LAND_CONFIG:
buffer.push(lowByte(RTH_AND_LAND_CONFIG.minRthDistance));
buffer.push(highByte(RTH_AND_LAND_CONFIG.minRthDistance));
buffer.push(RTH_AND_LAND_CONFIG.rthClimbFirst);
buffer.push(RTH_AND_LAND_CONFIG.rthClimbIgnoreEmergency);
buffer.push(RTH_AND_LAND_CONFIG.rthTailFirst);
buffer.push(RTH_AND_LAND_CONFIG.rthAllowLanding);
buffer.push(RTH_AND_LAND_CONFIG.rthAltControlMode);
buffer.push(lowByte(RTH_AND_LAND_CONFIG.rthAbortThreshold));
buffer.push(highByte(RTH_AND_LAND_CONFIG.rthAbortThreshold));
buffer.push(lowByte(RTH_AND_LAND_CONFIG.rthAltitude));
buffer.push(highByte(RTH_AND_LAND_CONFIG.rthAltitude));
buffer.push(lowByte(RTH_AND_LAND_CONFIG.landDescentRate));
buffer.push(highByte(RTH_AND_LAND_CONFIG.landDescentRate));
buffer.push(lowByte(RTH_AND_LAND_CONFIG.landSlowdownMinAlt));
buffer.push(highByte(RTH_AND_LAND_CONFIG.landSlowdownMinAlt));
buffer.push(lowByte(RTH_AND_LAND_CONFIG.landSlowdownMaxAlt));
buffer.push(highByte(RTH_AND_LAND_CONFIG.landSlowdownMaxAlt));
buffer.push(lowByte(RTH_AND_LAND_CONFIG.emergencyDescentRate));
buffer.push(highByte(RTH_AND_LAND_CONFIG.emergencyDescentRate));
break;
case MSPCodes.MSP_SET_FILTER_CONFIG: case MSPCodes.MSP_SET_FILTER_CONFIG:
buffer.push(FILTER_CONFIG.gyroSoftLpfHz); buffer.push(FILTER_CONFIG.gyroSoftLpfHz);
@ -9589,6 +9640,22 @@ var mspHelper = (function (gui) {
} }
}; };
self.loadRthAndLandConfig = function (callback) {
if (semver.gte(CONFIG.flightControllerVersion, "1.7.1")) {
MSP.send_message(MSPCodes.MSP_RTH_AND_LAND_CONFIG, false, false, callback);
} else {
callback();
}
};
self.saveRthAndLandConfig = function (callback) {
if (semver.gte(CONFIG.flightControllerVersion, "1.7.1")) {
MSP.send_message(MSPCodes.MSP_SET_RTH_AND_LAND_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_RTH_AND_LAND_CONFIG), false, callback);
} else {
callback();
}
};
return self; return self;
})(GUI); })(GUI);
@ -10817,50 +10884,51 @@ var CONFIGURATOR = {
'use strict'; 'use strict';
// define all the global variables that are uses to hold FC state // define all the global variables that are uses to hold FC state
var CONFIG; var CONFIG,
var BF_CONFIG; BF_CONFIG,
var LED_STRIP; LED_STRIP,
var LED_COLORS; LED_COLORS,
var LED_MODE_COLORS; LED_MODE_COLORS,
var PID; PID,
var PID_names; PID_names,
var PIDs; PIDs,
var RC_MAP; RC_MAP,
var RC; RC,
var RC_tuning; RC_tuning,
var AUX_CONFIG; AUX_CONFIG,
var AUX_CONFIG_IDS; AUX_CONFIG_IDS,
var MODE_RANGES; MODE_RANGES,
var ADJUSTMENT_RANGES; ADJUSTMENT_RANGES,
var SERVO_CONFIG; SERVO_CONFIG,
var SERVO_RULES; SERVO_RULES,
var SERIAL_CONFIG; SERIAL_CONFIG,
var SENSOR_DATA; SENSOR_DATA,
var MOTOR_DATA; MOTOR_DATA,
var SERVO_DATA; SERVO_DATA,
var GPS_DATA; GPS_DATA,
var ANALOG; ANALOG,
var ARMING_CONFIG; ARMING_CONFIG,
var FC_CONFIG; FC_CONFIG,
var MISC; MISC,
var _3D; _3D,
var DATAFLASH; DATAFLASH,
var SDCARD; SDCARD,
var BLACKBOX; BLACKBOX,
var TRANSPONDER; TRANSPONDER,
var RC_deadband; RC_deadband,
var SENSOR_ALIGNMENT; SENSOR_ALIGNMENT,
var RX_CONFIG; RX_CONFIG,
var FAILSAFE_CONFIG; FAILSAFE_CONFIG,
var RXFAIL_CONFIG; RXFAIL_CONFIG,
var ADVANCED_CONFIG; ADVANCED_CONFIG,
var INAV_PID_CONFIG; INAV_PID_CONFIG,
var PID_ADVANCED; PID_ADVANCED,
var FILTER_CONFIG; FILTER_CONFIG,
var SENSOR_STATUS; SENSOR_STATUS,
var SENSOR_CONFIG; SENSOR_CONFIG,
var NAV_POSHOLD; NAV_POSHOLD,
var POSITION_ESTIMATOR; POSITION_ESTIMATOR,
RTH_AND_LAND_CONFIG;
var FC = { var FC = {
isRatesInDps: function () { isRatesInDps: function () {
@ -11096,6 +11164,21 @@ var FC = {
hoverThrottle: null hoverThrottle: null
}; };
RTH_AND_LAND_CONFIG = {
minRthDistance: null,
rthClimbFirst: null,
rthClimbIgnoreEmergency: null,
rthTailFirst: null,
rthAllowLanding: null,
rthAltControlMode: null,
rthAbortThreshold: null,
rthAltitude: null,
landDescentRate: null,
landSlowdownMinAlt: null,
landSlowdownMaxAlt: null,
emergencyDescentRate: null
};
_3D = { _3D = {
deadband3d_low: 0, deadband3d_low: 0,
deadband3d_high: 0, deadband3d_high: 0,
@ -11582,6 +11665,9 @@ var FC = {
'Velocity Z' 'Velocity Z'
]; ];
} }
},
getRthAltControlMode: function () {
return ["Current", "Extra", "Fixed", "Max", "At Least"];
} }
}; };
@ -14275,7 +14361,8 @@ TABS.advanced_tuning.initialize = function (callback) {
loadChainer.setChain([ loadChainer.setChain([
mspHelper.loadNavPosholdConfig, mspHelper.loadNavPosholdConfig,
mspHelper.loadPositionEstimationConfig mspHelper.loadPositionEstimationConfig,
mspHelper.loadRthAndLandConfig
]); ]);
loadChainer.setExitPoint(loadHtml); loadChainer.setExitPoint(loadHtml);
loadChainer.execute(); loadChainer.execute();
@ -14283,6 +14370,7 @@ TABS.advanced_tuning.initialize = function (callback) {
saveChainer.setChain([ saveChainer.setChain([
mspHelper.saveNavPosholdConfig, mspHelper.saveNavPosholdConfig,
mspHelper.savePositionEstimationConfig, mspHelper.savePositionEstimationConfig,
mspHelper.saveRthAndLandConfig,
mspHelper.saveToEeprom mspHelper.saveToEeprom
]); ]);
saveChainer.setExitPoint(reboot); saveChainer.setExitPoint(reboot);
@ -14309,7 +14397,65 @@ TABS.advanced_tuning.initialize = function (callback) {
var $userControlMode = $('#user-control-mode'), var $userControlMode = $('#user-control-mode'),
$useMidThrottle = $("#use-mid-throttle"), $useMidThrottle = $("#use-mid-throttle"),
$useGpsVelned = $('#use_gps_velned'); $useGpsVelned = $('#use_gps_velned'),
$rthClimbFirst = $('#rth-climb-first'),
$rthClimbIgnoreEmergency = $('#rthClimbIgnoreEmergency'),
$rthTailFirst = $('#rthTailFirst'),
$rthAllowLanding = $('#rthAllowLanding'),
$rthAltControlMode = $('#rthAltControlMode');
if (semver.gte(CONFIG.flightControllerVersion, "1.7.1")) {
$rthClimbFirst.prop("checked", RTH_AND_LAND_CONFIG.rthClimbFirst);
$rthClimbFirst.change(function () {
if ($(this).is(":checked")) {
RTH_AND_LAND_CONFIG.rthClimbFirst = 1;
} else {
RTH_AND_LAND_CONFIG.rthClimbFirst = 0;
}
});
$rthClimbFirst.change();
$rthClimbIgnoreEmergency.prop("checked", RTH_AND_LAND_CONFIG.rthClimbIgnoreEmergency);
$rthClimbIgnoreEmergency.change(function () {
if ($(this).is(":checked")) {
RTH_AND_LAND_CONFIG.rthClimbIgnoreEmergency = 1;
} else {
RTH_AND_LAND_CONFIG.rthClimbIgnoreEmergency = 0;
}
});
$rthClimbIgnoreEmergency.change();
$rthTailFirst.prop("checked", RTH_AND_LAND_CONFIG.rthTailFirst);
$rthTailFirst.change(function () {
if ($(this).is(":checked")) {
RTH_AND_LAND_CONFIG.rthTailFirst = 1;
} else {
RTH_AND_LAND_CONFIG.rthTailFirst = 0;
}
});
$rthTailFirst.change();
$rthAllowLanding.prop("checked", RTH_AND_LAND_CONFIG.rthAllowLanding);
$rthAllowLanding.change(function () {
if ($(this).is(":checked")) {
RTH_AND_LAND_CONFIG.rthAllowLanding = 1;
} else {
RTH_AND_LAND_CONFIG.rthAllowLanding = 0;
}
});
$rthAllowLanding.change();
GUI.fillSelect($rthAltControlMode, FC.getRthAltControlMode(), RTH_AND_LAND_CONFIG.rthAltControlMode);
$rthAltControlMode.val(RTH_AND_LAND_CONFIG.rthAltControlMode);
$rthAltControlMode.change(function () {
RTH_AND_LAND_CONFIG.rthAltControlMode = $rthAltControlMode.val();
});
$('.requires-v1_7_1').show();
} else {
$('.requires-v1_7_1').hide();
}
GUI.fillSelect($userControlMode, FC.getUserControlMode(), NAV_POSHOLD.userControlMode); GUI.fillSelect($userControlMode, FC.getUserControlMode(), NAV_POSHOLD.userControlMode);
$userControlMode.val(NAV_POSHOLD.userControlMode); $userControlMode.val(NAV_POSHOLD.userControlMode);

107
js/fc.js
View file

@ -1,50 +1,51 @@
'use strict'; 'use strict';
// define all the global variables that are uses to hold FC state // define all the global variables that are uses to hold FC state
var CONFIG; var CONFIG,
var BF_CONFIG; BF_CONFIG,
var LED_STRIP; LED_STRIP,
var LED_COLORS; LED_COLORS,
var LED_MODE_COLORS; LED_MODE_COLORS,
var PID; PID,
var PID_names; PID_names,
var PIDs; PIDs,
var RC_MAP; RC_MAP,
var RC; RC,
var RC_tuning; RC_tuning,
var AUX_CONFIG; AUX_CONFIG,
var AUX_CONFIG_IDS; AUX_CONFIG_IDS,
var MODE_RANGES; MODE_RANGES,
var ADJUSTMENT_RANGES; ADJUSTMENT_RANGES,
var SERVO_CONFIG; SERVO_CONFIG,
var SERVO_RULES; SERVO_RULES,
var SERIAL_CONFIG; SERIAL_CONFIG,
var SENSOR_DATA; SENSOR_DATA,
var MOTOR_DATA; MOTOR_DATA,
var SERVO_DATA; SERVO_DATA,
var GPS_DATA; GPS_DATA,
var ANALOG; ANALOG,
var ARMING_CONFIG; ARMING_CONFIG,
var FC_CONFIG; FC_CONFIG,
var MISC; MISC,
var _3D; _3D,
var DATAFLASH; DATAFLASH,
var SDCARD; SDCARD,
var BLACKBOX; BLACKBOX,
var TRANSPONDER; TRANSPONDER,
var RC_deadband; RC_deadband,
var SENSOR_ALIGNMENT; SENSOR_ALIGNMENT,
var RX_CONFIG; RX_CONFIG,
var FAILSAFE_CONFIG; FAILSAFE_CONFIG,
var RXFAIL_CONFIG; RXFAIL_CONFIG,
var ADVANCED_CONFIG; ADVANCED_CONFIG,
var INAV_PID_CONFIG; INAV_PID_CONFIG,
var PID_ADVANCED; PID_ADVANCED,
var FILTER_CONFIG; FILTER_CONFIG,
var SENSOR_STATUS; SENSOR_STATUS,
var SENSOR_CONFIG; SENSOR_CONFIG,
var NAV_POSHOLD; NAV_POSHOLD,
var POSITION_ESTIMATOR; POSITION_ESTIMATOR,
RTH_AND_LAND_CONFIG;
var FC = { var FC = {
isRatesInDps: function () { isRatesInDps: function () {
@ -280,6 +281,21 @@ var FC = {
hoverThrottle: null hoverThrottle: null
}; };
RTH_AND_LAND_CONFIG = {
minRthDistance: null,
rthClimbFirst: null,
rthClimbIgnoreEmergency: null,
rthTailFirst: null,
rthAllowLanding: null,
rthAltControlMode: null,
rthAbortThreshold: null,
rthAltitude: null,
landDescentRate: null,
landSlowdownMinAlt: null,
landSlowdownMaxAlt: null,
emergencyDescentRate: null
};
_3D = { _3D = {
deadband3d_low: 0, deadband3d_low: 0,
deadband3d_high: 0, deadband3d_high: 0,
@ -766,5 +782,8 @@ var FC = {
'Velocity Z' 'Velocity Z'
]; ];
} }
},
getRthAltControlMode: function () {
return ["Current", "Extra", "Fixed", "Max", "At Least"];
} }
}; };

View file

@ -16,6 +16,9 @@ var MSPCodes = {
MSP_POSITION_ESTIMATION_CONFIG: 16, MSP_POSITION_ESTIMATION_CONFIG: 16,
MSP_SET_POSITION_ESTIMATION_CONFIG: 17, MSP_SET_POSITION_ESTIMATION_CONFIG: 17,
MSP_RTH_AND_LAND_CONFIG: 21,
MSP_SET_RTH_AND_LAND_CONFIG: 22,
// MSP commands for Cleanflight original features // MSP commands for Cleanflight original features
MSP_CHANNEL_FORWARDING: 32, MSP_CHANNEL_FORWARDING: 32,
MSP_SET_CHANNEL_FORWARDING: 33, MSP_SET_CHANNEL_FORWARDING: 33,

View file

@ -939,6 +939,25 @@ var mspHelper = (function (gui) {
console.log('POSITION_ESTIMATOR saved'); console.log('POSITION_ESTIMATOR saved');
break; break;
case MSPCodes.MSP_RTH_AND_LAND_CONFIG:
RTH_AND_LAND_CONFIG.minRthDistance = data.getUint16(0, true);
RTH_AND_LAND_CONFIG.rthClimbFirst = data.getUint8(2);
RTH_AND_LAND_CONFIG.rthClimbIgnoreEmergency = data.getUint8(3);
RTH_AND_LAND_CONFIG.rthTailFirst = data.getUint8(4);
RTH_AND_LAND_CONFIG.rthAllowLanding = data.getUint8(5);
RTH_AND_LAND_CONFIG.rthAltControlMode = data.getUint8(6);
RTH_AND_LAND_CONFIG.rthAbortThreshold = data.getUint16(7, true);
RTH_AND_LAND_CONFIG.rthAltitude = data.getUint16(9, true);
RTH_AND_LAND_CONFIG.landDescentRate = data.getUint16(11, true);
RTH_AND_LAND_CONFIG.landSlowdownMinAlt = data.getUint16(13, true);
RTH_AND_LAND_CONFIG.landSlowdownMaxAlt = data.getUint16(15, true);
RTH_AND_LAND_CONFIG.emergencyDescentRate = data.getUint16(17, true);
break;
case MSPCodes.MSP_SET_RTH_AND_LAND_CONFIG:
console.log('RTH_AND_LAND_CONFIG saved');
break;
case MSPCodes.MSP_SET_MODE_RANGE: case MSPCodes.MSP_SET_MODE_RANGE:
console.log('Mode range saved'); console.log('Mode range saved');
break; break;
@ -1291,6 +1310,35 @@ var mspHelper = (function (gui) {
buffer.push(POSITION_ESTIMATOR.use_gps_velned); buffer.push(POSITION_ESTIMATOR.use_gps_velned);
break; break;
case MSPCodes.MSP_SET_RTH_AND_LAND_CONFIG:
buffer.push(lowByte(RTH_AND_LAND_CONFIG.minRthDistance));
buffer.push(highByte(RTH_AND_LAND_CONFIG.minRthDistance));
buffer.push(RTH_AND_LAND_CONFIG.rthClimbFirst);
buffer.push(RTH_AND_LAND_CONFIG.rthClimbIgnoreEmergency);
buffer.push(RTH_AND_LAND_CONFIG.rthTailFirst);
buffer.push(RTH_AND_LAND_CONFIG.rthAllowLanding);
buffer.push(RTH_AND_LAND_CONFIG.rthAltControlMode);
buffer.push(lowByte(RTH_AND_LAND_CONFIG.rthAbortThreshold));
buffer.push(highByte(RTH_AND_LAND_CONFIG.rthAbortThreshold));
buffer.push(lowByte(RTH_AND_LAND_CONFIG.rthAltitude));
buffer.push(highByte(RTH_AND_LAND_CONFIG.rthAltitude));
buffer.push(lowByte(RTH_AND_LAND_CONFIG.landDescentRate));
buffer.push(highByte(RTH_AND_LAND_CONFIG.landDescentRate));
buffer.push(lowByte(RTH_AND_LAND_CONFIG.landSlowdownMinAlt));
buffer.push(highByte(RTH_AND_LAND_CONFIG.landSlowdownMinAlt));
buffer.push(lowByte(RTH_AND_LAND_CONFIG.landSlowdownMaxAlt));
buffer.push(highByte(RTH_AND_LAND_CONFIG.landSlowdownMaxAlt));
buffer.push(lowByte(RTH_AND_LAND_CONFIG.emergencyDescentRate));
buffer.push(highByte(RTH_AND_LAND_CONFIG.emergencyDescentRate));
break;
case MSPCodes.MSP_SET_FILTER_CONFIG: case MSPCodes.MSP_SET_FILTER_CONFIG:
buffer.push(FILTER_CONFIG.gyroSoftLpfHz); buffer.push(FILTER_CONFIG.gyroSoftLpfHz);
@ -2041,5 +2089,21 @@ var mspHelper = (function (gui) {
} }
}; };
self.loadRthAndLandConfig = function (callback) {
if (semver.gte(CONFIG.flightControllerVersion, "1.7.1")) {
MSP.send_message(MSPCodes.MSP_RTH_AND_LAND_CONFIG, false, false, callback);
} else {
callback();
}
};
self.saveRthAndLandConfig = function (callback) {
if (semver.gte(CONFIG.flightControllerVersion, "1.7.1")) {
MSP.send_message(MSPCodes.MSP_SET_RTH_AND_LAND_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_RTH_AND_LAND_CONFIG), false, callback);
} else {
callback();
}
};
return self; return self;
})(GUI); })(GUI);

View file

@ -56,6 +56,100 @@
</div> </div>
</div> </div>
</div> </div>
<div class="config-section gui_box grey requires-v1_7_1">
<div class="gui_box_titlebar">
<div class="spacer_box_title" data-i18n="rthConfiguration"></div>
</div>
<div class="spacer_box">
<div class="select">
<select id="rthAltControlMode"></select>
<label for="rthAltControlMode"> <span data-i18n="rthAltControlMode"></span></label>
</div>
<div class="number">
<input id="rthAltitude" type="number" data-simple-bind="RTH_AND_LAND_CONFIG.rthAltitude" step="1" min="0" max="65000">
<label for="rthAltitude">
<span data-i18n="rthAltitude"></span>
</label>
<div class="helpicon cf_tip" data-i18n_title="rthAltitudeHelp"></div>
</div>
<div class="checkbox">
<input type="checkbox" id="rth-climb-first" class="toggle" />
<label for="rth-climb-first">
<span data-i18n="rthClimbFirst"></span>
</label>
</div>
<div class="checkbox">
<input type="checkbox" id="rthClimbIgnoreEmergency" class="toggle" />
<label for="rthClimbIgnoreEmergency">
<span data-i18n="rthClimbIgnoreEmergency"></span>
</label>
</div>
<div class="checkbox">
<input type="checkbox" id="rthTailFirst" class="toggle" />
<label for="rthTailFirst">
<span data-i18n="rthTailFirst"></span>
</label>
</div>
<div class="checkbox">
<input type="checkbox" id="rthAllowLanding" class="toggle" />
<label for="rthAllowLanding">
<span data-i18n="rthAllowLanding"></span>
</label>
</div>
<div class="number">
<input id="landDescentRate" type="number" data-simple-bind="RTH_AND_LAND_CONFIG.landDescentRate" step="1" min="100" max="2000">
<label for="landDescentRate">
<span data-i18n="landDescentRate"></span>
</label>
</div>
<div class="number">
<input id="landSlowdownMinAlt" type="number" data-simple-bind="RTH_AND_LAND_CONFIG.landSlowdownMinAlt" step="1" min="50" max="1000">
<label for="landSlowdownMinAlt">
<span data-i18n="landSlowdownMinAlt"></span>
</label>
</div>
<div class="number">
<input id="landSlowdownMaxAlt" type="number" data-simple-bind="RTH_AND_LAND_CONFIG.landSlowdownMaxAlt" step="1" min="500" max="4000">
<label for="landSlowdownMaxAlt">
<span data-i18n="landSlowdownMaxAlt"></span>
</label>
</div>
<div class="number">
<input id="rth-min-distance" type="number" data-simple-bind="RTH_AND_LAND_CONFIG.minRthDistance" step="1" min="0" max="5000">
<label for="rth-min-distance">
<span data-i18n="minRthDistance"></span>
</label>
<div class="helpicon cf_tip" data-i18n_title="minRthDistanceHelp"></div>
</div>
<div class="number">
<input id="rthAbortThreshold" type="number" data-simple-bind="RTH_AND_LAND_CONFIG.rthAbortThreshold" step="1" min="0" max="65000">
<label for="rthAbortThreshold">
<span data-i18n="rthAbortThreshold"></span>
</label>
<div class="helpicon cf_tip" data-i18n_title="rthAbortThresholdHelp"></div>
</div>
<div class="number">
<input id="emergencyDescentRate" type="number" data-simple-bind="RTH_AND_LAND_CONFIG.emergencyDescentRate" step="1" min="10" max="2000">
<label for="emergencyDescentRate">
<span data-i18n="emergencyDescentRate"></span>
</label>
</div>
</div>
</div>
</div> </div>
<div class="rightWrapper"> <div class="rightWrapper">

View file

@ -14,7 +14,8 @@ TABS.advanced_tuning.initialize = function (callback) {
loadChainer.setChain([ loadChainer.setChain([
mspHelper.loadNavPosholdConfig, mspHelper.loadNavPosholdConfig,
mspHelper.loadPositionEstimationConfig mspHelper.loadPositionEstimationConfig,
mspHelper.loadRthAndLandConfig
]); ]);
loadChainer.setExitPoint(loadHtml); loadChainer.setExitPoint(loadHtml);
loadChainer.execute(); loadChainer.execute();
@ -22,6 +23,7 @@ TABS.advanced_tuning.initialize = function (callback) {
saveChainer.setChain([ saveChainer.setChain([
mspHelper.saveNavPosholdConfig, mspHelper.saveNavPosholdConfig,
mspHelper.savePositionEstimationConfig, mspHelper.savePositionEstimationConfig,
mspHelper.saveRthAndLandConfig,
mspHelper.saveToEeprom mspHelper.saveToEeprom
]); ]);
saveChainer.setExitPoint(reboot); saveChainer.setExitPoint(reboot);
@ -48,7 +50,65 @@ TABS.advanced_tuning.initialize = function (callback) {
var $userControlMode = $('#user-control-mode'), var $userControlMode = $('#user-control-mode'),
$useMidThrottle = $("#use-mid-throttle"), $useMidThrottle = $("#use-mid-throttle"),
$useGpsVelned = $('#use_gps_velned'); $useGpsVelned = $('#use_gps_velned'),
$rthClimbFirst = $('#rth-climb-first'),
$rthClimbIgnoreEmergency = $('#rthClimbIgnoreEmergency'),
$rthTailFirst = $('#rthTailFirst'),
$rthAllowLanding = $('#rthAllowLanding'),
$rthAltControlMode = $('#rthAltControlMode');
if (semver.gte(CONFIG.flightControllerVersion, "1.7.1")) {
$rthClimbFirst.prop("checked", RTH_AND_LAND_CONFIG.rthClimbFirst);
$rthClimbFirst.change(function () {
if ($(this).is(":checked")) {
RTH_AND_LAND_CONFIG.rthClimbFirst = 1;
} else {
RTH_AND_LAND_CONFIG.rthClimbFirst = 0;
}
});
$rthClimbFirst.change();
$rthClimbIgnoreEmergency.prop("checked", RTH_AND_LAND_CONFIG.rthClimbIgnoreEmergency);
$rthClimbIgnoreEmergency.change(function () {
if ($(this).is(":checked")) {
RTH_AND_LAND_CONFIG.rthClimbIgnoreEmergency = 1;
} else {
RTH_AND_LAND_CONFIG.rthClimbIgnoreEmergency = 0;
}
});
$rthClimbIgnoreEmergency.change();
$rthTailFirst.prop("checked", RTH_AND_LAND_CONFIG.rthTailFirst);
$rthTailFirst.change(function () {
if ($(this).is(":checked")) {
RTH_AND_LAND_CONFIG.rthTailFirst = 1;
} else {
RTH_AND_LAND_CONFIG.rthTailFirst = 0;
}
});
$rthTailFirst.change();
$rthAllowLanding.prop("checked", RTH_AND_LAND_CONFIG.rthAllowLanding);
$rthAllowLanding.change(function () {
if ($(this).is(":checked")) {
RTH_AND_LAND_CONFIG.rthAllowLanding = 1;
} else {
RTH_AND_LAND_CONFIG.rthAllowLanding = 0;
}
});
$rthAllowLanding.change();
GUI.fillSelect($rthAltControlMode, FC.getRthAltControlMode(), RTH_AND_LAND_CONFIG.rthAltControlMode);
$rthAltControlMode.val(RTH_AND_LAND_CONFIG.rthAltControlMode);
$rthAltControlMode.change(function () {
RTH_AND_LAND_CONFIG.rthAltControlMode = $rthAltControlMode.val();
});
$('.requires-v1_7_1').show();
} else {
$('.requires-v1_7_1').hide();
}
GUI.fillSelect($userControlMode, FC.getUserControlMode(), NAV_POSHOLD.userControlMode); GUI.fillSelect($userControlMode, FC.getUserControlMode(), NAV_POSHOLD.userControlMode);
$userControlMode.val(NAV_POSHOLD.userControlMode); $userControlMode.val(NAV_POSHOLD.userControlMode);