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": {
|
"HOME_DISTANCE": {
|
||||||
"message": "Distance to Home"
|
"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,
|
MIXER_CONFIG,
|
||||||
BATTERY_CONFIG,
|
BATTERY_CONFIG,
|
||||||
OUTPUT_MAPPING,
|
OUTPUT_MAPPING,
|
||||||
SETTINGS;
|
SETTINGS,
|
||||||
|
BRAKING_CONFIG;
|
||||||
|
|
||||||
var FC = {
|
var FC = {
|
||||||
MAX_SERVO_RATE: 125,
|
MAX_SERVO_RATE: 125,
|
||||||
|
@ -506,6 +507,17 @@ var FC = {
|
||||||
loiterRadius: null
|
loiterRadius: null
|
||||||
};
|
};
|
||||||
|
|
||||||
|
BRAKING_CONFIG = {
|
||||||
|
speedThreshold: null,
|
||||||
|
disengageSpeed: null,
|
||||||
|
timeout: null,
|
||||||
|
boostFactor: null,
|
||||||
|
boostTimeout: null,
|
||||||
|
boostSpeedThreshold: null,
|
||||||
|
boostDisengageSpeed: null,
|
||||||
|
bankAngle: null
|
||||||
|
}
|
||||||
|
|
||||||
RXFAIL_CONFIG = [];
|
RXFAIL_CONFIG = [];
|
||||||
|
|
||||||
OUTPUT_MAPPING = new OutputMappingCollection();
|
OUTPUT_MAPPING = new OutputMappingCollection();
|
||||||
|
|
|
@ -186,5 +186,8 @@ var MSPCodes = {
|
||||||
MSP2_INAV_OSD_PREFERENCES: 0x2016,
|
MSP2_INAV_OSD_PREFERENCES: 0x2016,
|
||||||
MSP2_INAV_OSD_SET_PREFERENCES: 0x2017,
|
MSP2_INAV_OSD_SET_PREFERENCES: 0x2017,
|
||||||
|
|
||||||
|
MSP2_INAV_MC_BRAKING: 0x200B,
|
||||||
|
MSP2_INAV_SET_MC_BRAKING: 0x200C,
|
||||||
|
|
||||||
MSP2_INAV_SELECT_BATTERY_PROFILE: 0x2018
|
MSP2_INAV_SELECT_BATTERY_PROFILE: 0x2018
|
||||||
};
|
};
|
||||||
|
|
|
@ -1401,6 +1401,22 @@ var mspHelper = (function (gui) {
|
||||||
for (i = 0; i < data.byteLength; ++i)
|
for (i = 0; i < data.byteLength; ++i)
|
||||||
OUTPUT_MAPPING.put(data.getUint8(i));
|
OUTPUT_MAPPING.put(data.getUint8(i));
|
||||||
break;
|
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:
|
default:
|
||||||
console.log('Unknown code detected: ' + dataHandler.code);
|
console.log('Unknown code detected: ' + dataHandler.code);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2038,6 +2054,26 @@ var mspHelper = (function (gui) {
|
||||||
buffer.push(highByte(MIXER_CONFIG.appliedMixerPreset));
|
buffer.push(highByte(MIXER_CONFIG.appliedMixerPreset));
|
||||||
break;
|
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:
|
default:
|
||||||
return false;
|
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) {
|
self.loadParameterGroups = function(callback) {
|
||||||
if (semver.gte(CONFIG.flightControllerVersion, "2.0.0")) {
|
if (semver.gte(CONFIG.flightControllerVersion, "2.0.0")) {
|
||||||
MSP.send_message(MSPCodes.MSP2_COMMON_PG_LIST, false, false, function (resp) {
|
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>
|
</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>
|
||||||
|
|
||||||
<div class="clear-both"></div>
|
<div class="clear-both"></div>
|
||||||
|
|
|
@ -16,7 +16,8 @@ TABS.advanced_tuning.initialize = function (callback) {
|
||||||
mspHelper.loadNavPosholdConfig,
|
mspHelper.loadNavPosholdConfig,
|
||||||
mspHelper.loadPositionEstimationConfig,
|
mspHelper.loadPositionEstimationConfig,
|
||||||
mspHelper.loadRthAndLandConfig,
|
mspHelper.loadRthAndLandConfig,
|
||||||
mspHelper.loadFwConfig
|
mspHelper.loadFwConfig,
|
||||||
|
mspHelper.loadBrakingConfig
|
||||||
]);
|
]);
|
||||||
loadChainer.setExitPoint(loadHtml);
|
loadChainer.setExitPoint(loadHtml);
|
||||||
loadChainer.execute();
|
loadChainer.execute();
|
||||||
|
@ -26,6 +27,7 @@ TABS.advanced_tuning.initialize = function (callback) {
|
||||||
mspHelper.savePositionEstimationConfig,
|
mspHelper.savePositionEstimationConfig,
|
||||||
mspHelper.saveRthAndLandConfig,
|
mspHelper.saveRthAndLandConfig,
|
||||||
mspHelper.saveFwConfig,
|
mspHelper.saveFwConfig,
|
||||||
|
mspHelper.saveBrakingConfig,
|
||||||
mspHelper.saveToEeprom
|
mspHelper.saveToEeprom
|
||||||
]);
|
]);
|
||||||
saveChainer.setExitPoint(reboot);
|
saveChainer.setExitPoint(reboot);
|
||||||
|
@ -59,6 +61,13 @@ TABS.advanced_tuning.initialize = function (callback) {
|
||||||
$rthAllowLanding = $('#rthAllowLanding'),
|
$rthAllowLanding = $('#rthAllowLanding'),
|
||||||
$rthAltControlMode = $('#rthAltControlMode');
|
$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")) {
|
if (semver.gte(CONFIG.flightControllerVersion, "1.7.1")) {
|
||||||
|
|
||||||
$rthClimbFirst.prop("checked", RTH_AND_LAND_CONFIG.rthClimbFirst);
|
$rthClimbFirst.prop("checked", RTH_AND_LAND_CONFIG.rthClimbFirst);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue