mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-20 23:05:13 +03:00
Merge pull request #580 from iNavFlight/dzikuvx-braking-msp-frames-support
Support for braking mode
This commit is contained in:
commit
a6bf5138bf
7 changed files with 1566 additions and 1365 deletions
|
@ -2754,5 +2754,56 @@
|
|||
},
|
||||
"HOME_DISTANCE": {
|
||||
"message": "Distance to Home"
|
||||
},
|
||||
"brakingSpeedThreshold": {
|
||||
"message": "Min. speed threshold [cm/s]"
|
||||
},
|
||||
"brakingSpeedThresholdTip": {
|
||||
"message": "Braking will be enabled only if actual speed if higher than threshold"
|
||||
},
|
||||
"brakingDisengageSpeed": {
|
||||
"message": "Braking disengage speed [cm/s]"
|
||||
},
|
||||
"brakingDisengageSpeedTip": {
|
||||
"message": "Braking will end when speed goes below this value"
|
||||
},
|
||||
"brakingTimeout": {
|
||||
"message": "Max. braking length [ms]"
|
||||
},
|
||||
"brakingTimeoutTip": {
|
||||
"message": "Safety measure. This is the longest period of time braking can be active."
|
||||
},
|
||||
"brakingBoostFactor": {
|
||||
"message": "Boost factor [%]"
|
||||
},
|
||||
"brakingBoostFactorTip": {
|
||||
"message": "Defines for strong braking boost will be. 100% means navigation engine is allowed to double banking speed and acceleration than normal"
|
||||
},
|
||||
"brakingBoostTimeout": {
|
||||
"message": "Max. braking boost length [ms]"
|
||||
},
|
||||
"brakingBoostTimeoutTip": {
|
||||
"message": "Safety measure. This is the longest period of time braking boost can be active."
|
||||
},
|
||||
"brakingBoostSpeedThreshold": {
|
||||
"message": "Boost min. speed threshold [cm/s]"
|
||||
},
|
||||
"brakingBoostSpeedThresholdTip": {
|
||||
"message": "Braking boost will be enabled only if actual speed if higher than threshold"
|
||||
},
|
||||
"brakingBoostDisengageSpeed": {
|
||||
"message": "Braking boost disengage speed [cm/s]"
|
||||
},
|
||||
"brakingBoostDisengageSpeedTip": {
|
||||
"message": "Braking boost will end when speed goes below this value"
|
||||
},
|
||||
"brakingBankAngle": {
|
||||
"message": "Max. bank angle [degrees]"
|
||||
},
|
||||
"brakingBankAngleTip": {
|
||||
"message": "Max bank angle allowed during braking phase"
|
||||
},
|
||||
"multirotorBrakingConfiguration": {
|
||||
"message": "Multirotor braking mode configuration"
|
||||
}
|
||||
}
|
||||
|
|
14
js/fc.js
14
js/fc.js
|
@ -55,7 +55,8 @@ var CONFIG,
|
|||
MIXER_CONFIG,
|
||||
BATTERY_CONFIG,
|
||||
OUTPUT_MAPPING,
|
||||
SETTINGS;
|
||||
SETTINGS,
|
||||
BRAKING_CONFIG;
|
||||
|
||||
var FC = {
|
||||
MAX_SERVO_RATE: 125,
|
||||
|
@ -506,6 +507,17 @@ var FC = {
|
|||
loiterRadius: null
|
||||
};
|
||||
|
||||
BRAKING_CONFIG = {
|
||||
speedThreshold: null,
|
||||
disengageSpeed: null,
|
||||
timeout: null,
|
||||
boostFactor: null,
|
||||
boostTimeout: null,
|
||||
boostSpeedThreshold: null,
|
||||
boostDisengageSpeed: null,
|
||||
bankAngle: null
|
||||
}
|
||||
|
||||
RXFAIL_CONFIG = [];
|
||||
|
||||
OUTPUT_MAPPING = new OutputMappingCollection();
|
||||
|
|
|
@ -186,5 +186,8 @@ var MSPCodes = {
|
|||
MSP2_INAV_OSD_PREFERENCES: 0x2016,
|
||||
MSP2_INAV_OSD_SET_PREFERENCES: 0x2017,
|
||||
|
||||
MSP2_INAV_MC_BRAKING: 0x200B,
|
||||
MSP2_INAV_SET_MC_BRAKING: 0x200C,
|
||||
|
||||
MSP2_INAV_SELECT_BATTERY_PROFILE: 0x2018
|
||||
};
|
||||
|
|
|
@ -1401,6 +1401,22 @@ var mspHelper = (function (gui) {
|
|||
for (i = 0; i < data.byteLength; ++i)
|
||||
OUTPUT_MAPPING.put(data.getUint8(i));
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP2_INAV_MC_BRAKING:
|
||||
BRAKING_CONFIG.speedThreshold = data.getUint16(0, true);
|
||||
BRAKING_CONFIG.disengageSpeed = data.getUint16(2, true);
|
||||
BRAKING_CONFIG.timeout = data.getUint16(4, true);
|
||||
BRAKING_CONFIG.boostFactor = data.getInt8(6);
|
||||
BRAKING_CONFIG.boostTimeout = data.getUint16(7, true);
|
||||
BRAKING_CONFIG.boostSpeedThreshold = data.getUint16(9, true);
|
||||
BRAKING_CONFIG.boostDisengageSpeed = data.getUint16(11, true);
|
||||
BRAKING_CONFIG.bankAngle = data.getInt8(13);
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP2_INAV_SET_MC_BRAKING:
|
||||
console.log('Braking config saved');
|
||||
break;
|
||||
|
||||
default:
|
||||
console.log('Unknown code detected: ' + dataHandler.code);
|
||||
} else {
|
||||
|
@ -2038,6 +2054,26 @@ var mspHelper = (function (gui) {
|
|||
buffer.push(highByte(MIXER_CONFIG.appliedMixerPreset));
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP2_INAV_SET_MC_BRAKING:
|
||||
buffer.push(lowByte(BRAKING_CONFIG.speedThreshold));
|
||||
buffer.push(highByte(BRAKING_CONFIG.speedThreshold));
|
||||
buffer.push(lowByte(BRAKING_CONFIG.disengageSpeed));
|
||||
buffer.push(highByte(BRAKING_CONFIG.disengageSpeed));
|
||||
buffer.push(lowByte(BRAKING_CONFIG.timeout));
|
||||
buffer.push(highByte(BRAKING_CONFIG.timeout));
|
||||
|
||||
buffer.push(BRAKING_CONFIG.boostFactor);
|
||||
|
||||
buffer.push(lowByte(BRAKING_CONFIG.boostTimeout));
|
||||
buffer.push(highByte(BRAKING_CONFIG.boostTimeout));
|
||||
buffer.push(lowByte(BRAKING_CONFIG.boostSpeedThreshold));
|
||||
buffer.push(highByte(BRAKING_CONFIG.boostSpeedThreshold));
|
||||
buffer.push(lowByte(BRAKING_CONFIG.boostDisengageSpeed));
|
||||
buffer.push(highByte(BRAKING_CONFIG.boostDisengageSpeed));
|
||||
|
||||
buffer.push(BRAKING_CONFIG.bankAngle);
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -3146,6 +3182,22 @@ var mspHelper = (function (gui) {
|
|||
}
|
||||
};
|
||||
|
||||
self.loadBrakingConfig = function(callback) {
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "2.1.0")) {
|
||||
MSP.send_message(MSPCodes.MSP2_INAV_MC_BRAKING, false, false, callback);
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
|
||||
self.saveBrakingConfig = function(callback) {
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "2.1.0")) {
|
||||
MSP.send_message(MSPCodes.MSP2_INAV_SET_MC_BRAKING, mspHelper.crunch(MSPCodes.MSP2_INAV_SET_MC_BRAKING), false, callback);
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
self.loadParameterGroups = function(callback) {
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "2.0.0")) {
|
||||
MSP.send_message(MSPCodes.MSP2_COMMON_PG_LIST, false, false, function (resp) {
|
||||
|
|
2727
package-lock.json
generated
2727
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -284,6 +284,79 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="config-section gui_box grey requires-v2_1">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title" data-i18n="multirotorBrakingConfiguration"></div>
|
||||
</div>
|
||||
<div class="spacer_box">
|
||||
|
||||
<div class="number">
|
||||
<input id="brakingSpeedThreshold" type="number" data-simple-bind="BRAKING_CONFIG.speedThreshold" step="1" min="0" max="1000">
|
||||
<label for="brakingSpeedThreshold">
|
||||
<span data-i18n="brakingSpeedThreshold"></span>
|
||||
</label>
|
||||
<div class="helpicon cf_tip" data-i18n_title="brakingSpeedThresholdTip"></div>
|
||||
</div>
|
||||
|
||||
<div class="number">
|
||||
<input id="brakingDisengageSpeed" type="number" data-simple-bind="BRAKING_CONFIG.disengageSpeed" step="1" min="0" max="1000">
|
||||
<label for="brakingDisengageSpeed">
|
||||
<span data-i18n="brakingDisengageSpeed"></span>
|
||||
</label>
|
||||
<div class="helpicon cf_tip" data-i18n_title="brakingDisengageSpeedTip"></div>
|
||||
</div>
|
||||
|
||||
<div class="number">
|
||||
<input id="brakingTimeout" type="number" data-simple-bind="BRAKING_CONFIG.timeout" step="1" min="100" max="5000">
|
||||
<label for="brakingTimeout">
|
||||
<span data-i18n="brakingTimeout"></span>
|
||||
</label>
|
||||
<div class="helpicon cf_tip" data-i18n_title="brakingTimeoutTip"></div>
|
||||
</div>
|
||||
|
||||
<div class="number">
|
||||
<input id="brakingBoostFactor" type="number" data-simple-bind="BRAKING_CONFIG.boostFactor" step="1" min="0" max="200">
|
||||
<label for="brakingBoostFactor">
|
||||
<span data-i18n="brakingBoostFactor"></span>
|
||||
</label>
|
||||
<div class="helpicon cf_tip" data-i18n_title="brakingBoostFactorTip"></div>
|
||||
</div>
|
||||
|
||||
<div class="number">
|
||||
<input id="brakingBoostTimeout" type="number" data-simple-bind="BRAKING_CONFIG.boostTimeout" step="1" min="0" max="5000">
|
||||
<label for="brakingBoostTimeout">
|
||||
<span data-i18n="brakingBoostTimeout"></span>
|
||||
</label>
|
||||
<div class="helpicon cf_tip" data-i18n_title="brakingBoostTimeoutTip"></div>
|
||||
</div>
|
||||
|
||||
<div class="number">
|
||||
<input id="brakingBoostSpeedThreshold" type="number" data-simple-bind="BRAKING_CONFIG.boostSpeedThreshold" step="1" min="100" max="1000">
|
||||
<label for="brakingBoostSpeedThreshold">
|
||||
<span data-i18n="brakingBoostSpeedThreshold"></span>
|
||||
</label>
|
||||
<div class="helpicon cf_tip" data-i18n_title="brakingBoostSpeedThresholdTip"></div>
|
||||
</div>
|
||||
|
||||
<div class="number">
|
||||
<input id="brakingBoostDisengageSpeed" type="number" data-simple-bind="BRAKING_CONFIG.boostDisengageSpeed" step="1" min="100" max="1000">
|
||||
<label for="brakingBoostDisengageSpeed">
|
||||
<span data-i18n="brakingBoostDisengageSpeed"></span>
|
||||
</label>
|
||||
<div class="helpicon cf_tip" data-i18n_title="brakingBoostDisengageSpeedTip"></div>
|
||||
</div>
|
||||
|
||||
<div class="number">
|
||||
<input id="brakingBankAngle" type="number" data-simple-bind="BRAKING_CONFIG.bankAngle" step="1" min="15" max="60">
|
||||
<label for="brakingBankAngle">
|
||||
<span data-i18n="brakingBankAngle"></span>
|
||||
</label>
|
||||
<div class="helpicon cf_tip" data-i18n_title="brakingBankAngleTip"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clear-both"></div>
|
||||
|
|
|
@ -16,7 +16,8 @@ TABS.advanced_tuning.initialize = function (callback) {
|
|||
mspHelper.loadNavPosholdConfig,
|
||||
mspHelper.loadPositionEstimationConfig,
|
||||
mspHelper.loadRthAndLandConfig,
|
||||
mspHelper.loadFwConfig
|
||||
mspHelper.loadFwConfig,
|
||||
mspHelper.loadBrakingConfig
|
||||
]);
|
||||
loadChainer.setExitPoint(loadHtml);
|
||||
loadChainer.execute();
|
||||
|
@ -26,6 +27,7 @@ TABS.advanced_tuning.initialize = function (callback) {
|
|||
mspHelper.savePositionEstimationConfig,
|
||||
mspHelper.saveRthAndLandConfig,
|
||||
mspHelper.saveFwConfig,
|
||||
mspHelper.saveBrakingConfig,
|
||||
mspHelper.saveToEeprom
|
||||
]);
|
||||
saveChainer.setExitPoint(reboot);
|
||||
|
@ -59,6 +61,13 @@ TABS.advanced_tuning.initialize = function (callback) {
|
|||
$rthAllowLanding = $('#rthAllowLanding'),
|
||||
$rthAltControlMode = $('#rthAltControlMode');
|
||||
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "2.1.0")) {
|
||||
|
||||
$('.requires-v2_1').show();
|
||||
} else {
|
||||
$('.requires-v2_1').hide();
|
||||
}
|
||||
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "1.7.1")) {
|
||||
|
||||
$rthClimbFirst.prop("checked", RTH_AND_LAND_CONFIG.rthClimbFirst);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue