1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-21 15:25:19 +03:00

Merge pull request #580 from iNavFlight/dzikuvx-braking-msp-frames-support

Support for braking mode
This commit is contained in:
Paweł Spychalski 2018-10-07 09:56:13 +02:00 committed by GitHub
commit a6bf5138bf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 1566 additions and 1365 deletions

View file

@ -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"
} }
} }

View file

@ -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();

View file

@ -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
}; };

View file

@ -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

File diff suppressed because it is too large Load diff

View file

@ -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>

View file

@ -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);