mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-16 21:05:28 +03:00
Add FF component to VEL XY
This commit is contained in:
parent
731b9e9e29
commit
d242ecc241
8 changed files with 80 additions and 35 deletions
|
@ -912,6 +912,9 @@
|
||||||
"pidTuningDerivative": {
|
"pidTuningDerivative": {
|
||||||
"message": "Derivative"
|
"message": "Derivative"
|
||||||
},
|
},
|
||||||
|
"pidTuningFeedForward": {
|
||||||
|
"message": "FeedForward"
|
||||||
|
},
|
||||||
"pidTuningRollPitchRate": {
|
"pidTuningRollPitchRate": {
|
||||||
"message": "ROLL & PITCH rate"
|
"message": "ROLL & PITCH rate"
|
||||||
},
|
},
|
||||||
|
|
2
js/fc.js
2
js/fc.js
|
@ -128,7 +128,7 @@ var FC = {
|
||||||
PID_names = [];
|
PID_names = [];
|
||||||
PIDs = new Array(10);
|
PIDs = new Array(10);
|
||||||
for (var i = 0; i < 10; i++) {
|
for (var i = 0; i < 10; i++) {
|
||||||
PIDs[i] = new Array(3);
|
PIDs[i] = new Array(4);
|
||||||
}
|
}
|
||||||
|
|
||||||
RC_MAP = [];
|
RC_MAP = [];
|
||||||
|
|
|
@ -201,5 +201,8 @@ var MSPCodes = {
|
||||||
|
|
||||||
MSP2_INAV_TEMP_SENSOR_CONFIG: 0x201C,
|
MSP2_INAV_TEMP_SENSOR_CONFIG: 0x201C,
|
||||||
MSP2_INAV_SET_TEMP_SENSOR_CONFIG: 0x201D,
|
MSP2_INAV_SET_TEMP_SENSOR_CONFIG: 0x201D,
|
||||||
MSP2_INAV_TEMPERATURES: 0x201E
|
MSP2_INAV_TEMPERATURES: 0x201E,
|
||||||
|
|
||||||
|
MSP2_PID: 0x2030,
|
||||||
|
MSP2_SET_PID: 0x2031
|
||||||
};
|
};
|
||||||
|
|
|
@ -320,6 +320,15 @@ var mspHelper = (function (gui) {
|
||||||
PIDs[i][2] = data.getUint8(needle + 2);
|
PIDs[i][2] = data.getUint8(needle + 2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case MSPCodes.MSP2_PID:
|
||||||
|
// PID data arrived, we need to scale it and save to appropriate bank / array
|
||||||
|
for (i = 0, needle = 0; i < (dataHandler.message_length_expected / 4); i++, needle += 4) {
|
||||||
|
PIDs[i][0] = data.getUint8(needle);
|
||||||
|
PIDs[i][1] = data.getUint8(needle + 1);
|
||||||
|
PIDs[i][2] = data.getUint8(needle + 2);
|
||||||
|
PIDs[i][3] = data.getUint8(needle + 3);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case MSPCodes.MSP_ARMING_CONFIG:
|
case MSPCodes.MSP_ARMING_CONFIG:
|
||||||
ARMING_CONFIG.auto_disarm_delay = data.getUint8(0);
|
ARMING_CONFIG.auto_disarm_delay = data.getUint8(0);
|
||||||
ARMING_CONFIG.disarm_kill_switch = data.getUint8(1);
|
ARMING_CONFIG.disarm_kill_switch = data.getUint8(1);
|
||||||
|
@ -582,6 +591,9 @@ var mspHelper = (function (gui) {
|
||||||
case MSPCodes.MSP_SET_PID:
|
case MSPCodes.MSP_SET_PID:
|
||||||
console.log('PID settings saved');
|
console.log('PID settings saved');
|
||||||
break;
|
break;
|
||||||
|
case MSPCodes.MSP2_SET_PID:
|
||||||
|
console.log('PID settings saved');
|
||||||
|
break;
|
||||||
case MSPCodes.MSP_SET_RC_TUNING:
|
case MSPCodes.MSP_SET_RC_TUNING:
|
||||||
console.log('RC Tuning saved');
|
console.log('RC Tuning saved');
|
||||||
break;
|
break;
|
||||||
|
@ -1517,6 +1529,14 @@ var mspHelper = (function (gui) {
|
||||||
buffer.push(parseInt(PIDs[i][2]));
|
buffer.push(parseInt(PIDs[i][2]));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case MSPCodes.MSP2_SET_PID:
|
||||||
|
for (i = 0; i < PIDs.length; i++) {
|
||||||
|
buffer.push(parseInt(PIDs[i][0]));
|
||||||
|
buffer.push(parseInt(PIDs[i][1]));
|
||||||
|
buffer.push(parseInt(PIDs[i][2]));
|
||||||
|
buffer.push(parseInt(PIDs[i][3]));
|
||||||
|
}
|
||||||
|
break;
|
||||||
case MSPCodes.MSP_SET_RC_TUNING:
|
case MSPCodes.MSP_SET_RC_TUNING:
|
||||||
buffer.push(Math.round(RC_tuning.RC_RATE * 100));
|
buffer.push(Math.round(RC_tuning.RC_RATE * 100));
|
||||||
buffer.push(Math.round(RC_tuning.RC_EXPO * 100));
|
buffer.push(Math.round(RC_tuning.RC_EXPO * 100));
|
||||||
|
@ -2667,7 +2687,11 @@ var mspHelper = (function (gui) {
|
||||||
};
|
};
|
||||||
|
|
||||||
self.loadPidData = function (callback) {
|
self.loadPidData = function (callback) {
|
||||||
|
if (semver.gte(CONFIG.flightControllerVersion, '2.2.0')) {
|
||||||
|
MSP.send_message(MSPCodes.MSP2_PID, false, false, callback);
|
||||||
|
} else {
|
||||||
MSP.send_message(MSPCodes.MSP_PID, false, false, callback);
|
MSP.send_message(MSPCodes.MSP_PID, false, false, callback);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
self.loadPidNames = function (callback) {
|
self.loadPidNames = function (callback) {
|
||||||
|
@ -2779,7 +2803,11 @@ var mspHelper = (function (gui) {
|
||||||
};
|
};
|
||||||
|
|
||||||
self.savePidData = function (callback) {
|
self.savePidData = function (callback) {
|
||||||
|
if (semver.gte(CONFIG.flightControllerVersion, '2.2.0')) {
|
||||||
|
MSP.send_message(MSPCodes.MSP2_SET_PID, mspHelper.crunch(MSPCodes.MSP2_SET_PID), false, callback);
|
||||||
|
} else {
|
||||||
MSP.send_message(MSPCodes.MSP_SET_PID, mspHelper.crunch(MSPCodes.MSP_SET_PID), false, callback);
|
MSP.send_message(MSPCodes.MSP_SET_PID, mspHelper.crunch(MSPCodes.MSP_SET_PID), false, callback);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
self.saveRcTuningData = function (callback) {
|
self.saveRcTuningData = function (callback) {
|
||||||
|
|
|
@ -112,7 +112,8 @@
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
border-right: 1px solid #ccc;
|
border-right: 1px solid #ccc;
|
||||||
width: calc(100% -1px);
|
/* width: calc(100% -1px); */
|
||||||
|
width: 20%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-pid_tuning .pid_titlebar th:first-child {
|
.tab-pid_tuning .pid_titlebar th:first-child {
|
||||||
|
@ -134,7 +135,7 @@
|
||||||
|
|
||||||
.tab-pid_tuning table td {
|
.tab-pid_tuning table td {
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
width: 25%;
|
width: 20%;
|
||||||
border-right: 1px solid #ccc;
|
border-right: 1px solid #ccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,11 +26,12 @@
|
||||||
<th class="proportional" data-i18n="pidTuningProportional"></th>
|
<th class="proportional" data-i18n="pidTuningProportional"></th>
|
||||||
<th class="integral" data-i18n="pidTuningIntegral"></th>
|
<th class="integral" data-i18n="pidTuningIntegral"></th>
|
||||||
<th class="derivative" data-i18n="pidTuningDerivative"></th>
|
<th class="derivative" data-i18n="pidTuningDerivative"></th>
|
||||||
|
<th class="feedforward" data-i18n="pidTuningFeedForward"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table id="pid_main" class="pid_tuning">
|
<table id="pid_main" class="pid_tuning">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="4">
|
<th colspan="5">
|
||||||
<div class="pid_mode" data-i18n="pidTuningBasic"></div>
|
<div class="pid_mode" data-i18n="pidTuningBasic"></div>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -40,6 +41,7 @@
|
||||||
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
||||||
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="PITCH" data-pid-bank-position="1">
|
<tr class="PITCH" data-pid-bank-position="1">
|
||||||
<!-- 1 -->
|
<!-- 1 -->
|
||||||
|
@ -47,6 +49,7 @@
|
||||||
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
||||||
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="YAW" data-pid-bank-position="2">
|
<tr class="YAW" data-pid-bank-position="2">
|
||||||
<!-- 2 -->
|
<!-- 2 -->
|
||||||
|
@ -54,11 +57,12 @@
|
||||||
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
||||||
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table id="pid_baro" class="pid_tuning">
|
<table id="pid_baro" class="pid_tuning">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="4">
|
<th colspan="5">
|
||||||
<div class="pid_mode" data-i18n="pidTuningAltitude"></div>
|
<div class="pid_mode" data-i18n="pidTuningAltitude"></div>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -68,6 +72,7 @@
|
||||||
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
||||||
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="Vario" data-pid-bank-position="9">
|
<tr class="Vario" data-pid-bank-position="9">
|
||||||
<!-- 9 -->
|
<!-- 9 -->
|
||||||
|
@ -75,11 +80,12 @@
|
||||||
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
||||||
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table id="pid_mag" class="pid_tuning">
|
<table id="pid_mag" class="pid_tuning">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="4">
|
<th colspan="5">
|
||||||
<div class="pid_mode" data-i18n="pidTuningMag"></div>
|
<div class="pid_mode" data-i18n="pidTuningMag"></div>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -89,11 +95,12 @@
|
||||||
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table id="pid_gps" class="pid_tuning">
|
<table id="pid_gps" class="pid_tuning">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="4">
|
<th colspan="5">
|
||||||
<div class="pid_mode" data-i18n="pidTuningGps"></div>
|
<div class="pid_mode" data-i18n="pidTuningGps"></div>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -103,6 +110,7 @@
|
||||||
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
||||||
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="PosR" data-pid-bank-position="5">
|
<tr class="PosR" data-pid-bank-position="5">
|
||||||
<!-- 5 -->
|
<!-- 5 -->
|
||||||
|
@ -110,6 +118,7 @@
|
||||||
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
||||||
|
<td><input type="number" name="ff" step="1" min="0" max="255" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="NavR" data-pid-bank-position="6">
|
<tr class="NavR" data-pid-bank-position="6">
|
||||||
<!-- 6 -->
|
<!-- 6 -->
|
||||||
|
@ -117,6 +126,7 @@
|
||||||
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="i" step="1" min="0" max="255" /></td>
|
||||||
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
<td><input type="number" name="d" step="1" min="0" max="255" /></td>
|
||||||
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -208,6 +208,10 @@ TABS.pid_tuning.initialize = function (callback) {
|
||||||
$('.requires-v2_1').hide();
|
$('.requires-v2_1').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (semver.lt(CONFIG.flightControllerVersion, "2.2.0")) {
|
||||||
|
$('[name=ff]').prop('disabled', 'disabled');
|
||||||
|
}
|
||||||
|
|
||||||
GUI.simpleBind();
|
GUI.simpleBind();
|
||||||
|
|
||||||
// UI Hooks
|
// UI Hooks
|
||||||
|
@ -223,10 +227,6 @@ TABS.pid_tuning.initialize = function (callback) {
|
||||||
$('a.update').click(function () {
|
$('a.update').click(function () {
|
||||||
form_to_pid_and_rc();
|
form_to_pid_and_rc();
|
||||||
|
|
||||||
function send_pids() {
|
|
||||||
MSP.send_message(MSPCodes.MSP_SET_PID, mspHelper.crunch(MSPCodes.MSP_SET_PID), false, send_rc_tuning_changes);
|
|
||||||
}
|
|
||||||
|
|
||||||
function send_rc_tuning_changes() {
|
function send_rc_tuning_changes() {
|
||||||
MSP.send_message(MSPCodes.MSPV2_INAV_SET_RATE_PROFILE, mspHelper.crunch(MSPCodes.MSPV2_INAV_SET_RATE_PROFILE), false, saveINAVPidConfig);
|
MSP.send_message(MSPCodes.MSPV2_INAV_SET_RATE_PROFILE, mspHelper.crunch(MSPCodes.MSPV2_INAV_SET_RATE_PROFILE), false, saveINAVPidConfig);
|
||||||
}
|
}
|
||||||
|
@ -253,7 +253,7 @@ TABS.pid_tuning.initialize = function (callback) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
send_pids();
|
mspHelper.savePidData(send_rc_tuning_changes);
|
||||||
});
|
});
|
||||||
|
|
||||||
GUI.content_ready(callback);
|
GUI.content_ready(callback);
|
||||||
|
|
|
@ -13,28 +13,28 @@ presets.elementHelper = function (group, field, value) {
|
||||||
presets.defaultValues = {
|
presets.defaultValues = {
|
||||||
PIDs: {
|
PIDs: {
|
||||||
mr: [
|
mr: [
|
||||||
[40, 30, 23], //PID_ROLL
|
[40, 30, 23, 0], //PID_ROLL
|
||||||
[40, 30, 23], //PID_PITCH
|
[40, 30, 23, 0], //PID_PITCH
|
||||||
[85, 45, 0], //PID_YAW
|
[85, 45, 0, 0], //PID_YAW
|
||||||
[50, 0, 0], //PID_POS_Z
|
[50, 0, 0, 0], //PID_POS_Z
|
||||||
[65, 120, 10], //PID_POS_XY
|
[65, 120, 10, 0], //PID_POS_XY
|
||||||
[40, 15, 100], //PID_VEL_XY
|
[40, 15, 100, 40], //PID_VEL_XY
|
||||||
[0, 0, 0], //PID_SURFACE
|
[0, 0, 0, 0], //PID_SURFACE
|
||||||
[20, 15, 75], //PID_LEVEL
|
[20, 15, 75, 0], //PID_LEVEL
|
||||||
[60, 0, 0], //PID_HEADING
|
[60, 0, 0, 0], //PID_HEADING
|
||||||
[100, 50, 10] //PID_VEL_Z
|
[100, 50, 10, 0] //PID_VEL_Z
|
||||||
],
|
],
|
||||||
fw: [
|
fw: [
|
||||||
[5, 7, 50], //PID_ROLL
|
[5, 7, 50, 0], //PID_ROLL
|
||||||
[5, 7, 50], //PID_PITCH
|
[5, 7, 50, 0], //PID_PITCH
|
||||||
[6, 10, 60], //PID_YAW
|
[6, 10, 60, 0], //PID_YAW
|
||||||
[40, 5, 10], //PID_POS_Z
|
[40, 5, 10, 0], //PID_POS_Z
|
||||||
[75, 5, 8], //PID_POS_XY
|
[75, 5, 8, 0], //PID_POS_XY
|
||||||
[0, 0, 0], //PID_VEL_XY
|
[0, 0, 0, 0], //PID_VEL_XY
|
||||||
[0, 0, 0], //PID_SURFACE
|
[0, 0, 0, 0], //PID_SURFACE
|
||||||
[20, 5, 75], //PID_LEVEL
|
[20, 5, 75, 0], //PID_LEVEL
|
||||||
[60, 0, 0], //PID_HEADING
|
[60, 0, 0, 0], //PID_HEADING
|
||||||
[0, 0, 0] //PID_VEL_Z
|
[0, 0, 0, 0] //PID_VEL_Z
|
||||||
]},
|
]},
|
||||||
INAV_PID_CONFIG: {"asynchronousMode": "0", "accelerometerTaskFrequency": 500, "attitudeTaskFrequency": 250, "magHoldRateLimit": 90, "magHoldErrorLpfFrequency": 2, "yawJumpPreventionLimit": 200, "gyroscopeLpf": "3", "accSoftLpfHz": 15},
|
INAV_PID_CONFIG: {"asynchronousMode": "0", "accelerometerTaskFrequency": 500, "attitudeTaskFrequency": 250, "magHoldRateLimit": 90, "magHoldErrorLpfFrequency": 2, "yawJumpPreventionLimit": 200, "gyroscopeLpf": "3", "accSoftLpfHz": 15},
|
||||||
ADVANCED_CONFIG: {"gyroSyncDenominator": 2, "pidProcessDenom": 1, "useUnsyncedPwm": 1, "motorPwmProtocol": 0, "motorPwmRate": 400, "servoPwmRate": 50, "gyroSync": 1},
|
ADVANCED_CONFIG: {"gyroSyncDenominator": 2, "pidProcessDenom": 1, "useUnsyncedPwm": 1, "motorPwmProtocol": 0, "motorPwmRate": 400, "servoPwmRate": 50, "gyroSync": 1},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue