mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-16 04:45:18 +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": {
|
||||
"message": "Derivative"
|
||||
},
|
||||
"pidTuningFeedForward": {
|
||||
"message": "FeedForward"
|
||||
},
|
||||
"pidTuningRollPitchRate": {
|
||||
"message": "ROLL & PITCH rate"
|
||||
},
|
||||
|
|
2
js/fc.js
2
js/fc.js
|
@ -128,7 +128,7 @@ var FC = {
|
|||
PID_names = [];
|
||||
PIDs = new Array(10);
|
||||
for (var i = 0; i < 10; i++) {
|
||||
PIDs[i] = new Array(3);
|
||||
PIDs[i] = new Array(4);
|
||||
}
|
||||
|
||||
RC_MAP = [];
|
||||
|
|
|
@ -201,5 +201,8 @@ var MSPCodes = {
|
|||
|
||||
MSP2_INAV_TEMP_SENSOR_CONFIG: 0x201C,
|
||||
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);
|
||||
}
|
||||
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:
|
||||
ARMING_CONFIG.auto_disarm_delay = data.getUint8(0);
|
||||
ARMING_CONFIG.disarm_kill_switch = data.getUint8(1);
|
||||
|
@ -582,6 +591,9 @@ var mspHelper = (function (gui) {
|
|||
case MSPCodes.MSP_SET_PID:
|
||||
console.log('PID settings saved');
|
||||
break;
|
||||
case MSPCodes.MSP2_SET_PID:
|
||||
console.log('PID settings saved');
|
||||
break;
|
||||
case MSPCodes.MSP_SET_RC_TUNING:
|
||||
console.log('RC Tuning saved');
|
||||
break;
|
||||
|
@ -1517,6 +1529,14 @@ var mspHelper = (function (gui) {
|
|||
buffer.push(parseInt(PIDs[i][2]));
|
||||
}
|
||||
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:
|
||||
buffer.push(Math.round(RC_tuning.RC_RATE * 100));
|
||||
buffer.push(Math.round(RC_tuning.RC_EXPO * 100));
|
||||
|
@ -2667,7 +2687,11 @@ var mspHelper = (function (gui) {
|
|||
};
|
||||
|
||||
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);
|
||||
}
|
||||
};
|
||||
|
||||
self.loadPidNames = function (callback) {
|
||||
|
@ -2779,7 +2803,11 @@ var mspHelper = (function (gui) {
|
|||
};
|
||||
|
||||
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);
|
||||
}
|
||||
};
|
||||
|
||||
self.saveRcTuningData = function (callback) {
|
||||
|
|
|
@ -112,7 +112,8 @@
|
|||
padding: 5px;
|
||||
text-align: left;
|
||||
border-right: 1px solid #ccc;
|
||||
width: calc(100% -1px);
|
||||
/* width: calc(100% -1px); */
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .pid_titlebar th:first-child {
|
||||
|
@ -134,7 +135,7 @@
|
|||
|
||||
.tab-pid_tuning table td {
|
||||
padding: 1px;
|
||||
width: 25%;
|
||||
width: 20%;
|
||||
border-right: 1px solid #ccc;
|
||||
}
|
||||
|
||||
|
|
|
@ -26,11 +26,12 @@
|
|||
<th class="proportional" data-i18n="pidTuningProportional"></th>
|
||||
<th class="integral" data-i18n="pidTuningIntegral"></th>
|
||||
<th class="derivative" data-i18n="pidTuningDerivative"></th>
|
||||
<th class="feedforward" data-i18n="pidTuningFeedForward"></th>
|
||||
</tr>
|
||||
</table>
|
||||
<table id="pid_main" class="pid_tuning">
|
||||
<tr>
|
||||
<th colspan="4">
|
||||
<th colspan="5">
|
||||
<div class="pid_mode" data-i18n="pidTuningBasic"></div>
|
||||
</th>
|
||||
</tr>
|
||||
|
@ -40,6 +41,7 @@
|
|||
<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="d" step="1" min="0" max="255" /></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="PITCH" data-pid-bank-position="1">
|
||||
<!-- 1 -->
|
||||
|
@ -47,6 +49,7 @@
|
|||
<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="d" step="1" min="0" max="255" /></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="YAW" data-pid-bank-position="2">
|
||||
<!-- 2 -->
|
||||
|
@ -54,11 +57,12 @@
|
|||
<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="d" step="1" min="0" max="255" /></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table id="pid_baro" class="pid_tuning">
|
||||
<tr>
|
||||
<th colspan="4">
|
||||
<th colspan="5">
|
||||
<div class="pid_mode" data-i18n="pidTuningAltitude"></div>
|
||||
</th>
|
||||
</tr>
|
||||
|
@ -68,6 +72,7 @@
|
|||
<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="d" step="1" min="0" max="255" /></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="Vario" data-pid-bank-position="9">
|
||||
<!-- 9 -->
|
||||
|
@ -75,11 +80,12 @@
|
|||
<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="d" step="1" min="0" max="255" /></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table id="pid_mag" class="pid_tuning">
|
||||
<tr>
|
||||
<th colspan="4">
|
||||
<th colspan="5">
|
||||
<div class="pid_mode" data-i18n="pidTuningMag"></div>
|
||||
</th>
|
||||
</tr>
|
||||
|
@ -89,11 +95,12 @@
|
|||
<td><input type="number" name="p" step="1" min="0" max="255" /></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table id="pid_gps" class="pid_tuning">
|
||||
<tr>
|
||||
<th colspan="4">
|
||||
<th colspan="5">
|
||||
<div class="pid_mode" data-i18n="pidTuningGps"></div>
|
||||
</th>
|
||||
</tr>
|
||||
|
@ -103,6 +110,7 @@
|
|||
<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="d" step="1" min="0" max="255" /></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="PosR" data-pid-bank-position="5">
|
||||
<!-- 5 -->
|
||||
|
@ -110,6 +118,7 @@
|
|||
<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="d" step="1" min="0" max="255" /></td>
|
||||
<td><input type="number" name="ff" step="1" min="0" max="255" /></td>
|
||||
</tr>
|
||||
<tr class="NavR" data-pid-bank-position="6">
|
||||
<!-- 6 -->
|
||||
|
@ -117,6 +126,7 @@
|
|||
<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="d" step="1" min="0" max="255" /></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
|
|
@ -208,6 +208,10 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
$('.requires-v2_1').hide();
|
||||
}
|
||||
|
||||
if (semver.lt(CONFIG.flightControllerVersion, "2.2.0")) {
|
||||
$('[name=ff]').prop('disabled', 'disabled');
|
||||
}
|
||||
|
||||
GUI.simpleBind();
|
||||
|
||||
// UI Hooks
|
||||
|
@ -223,10 +227,6 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
$('a.update').click(function () {
|
||||
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() {
|
||||
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);
|
||||
|
|
|
@ -13,28 +13,28 @@ presets.elementHelper = function (group, field, value) {
|
|||
presets.defaultValues = {
|
||||
PIDs: {
|
||||
mr: [
|
||||
[40, 30, 23], //PID_ROLL
|
||||
[40, 30, 23], //PID_PITCH
|
||||
[85, 45, 0], //PID_YAW
|
||||
[50, 0, 0], //PID_POS_Z
|
||||
[65, 120, 10], //PID_POS_XY
|
||||
[40, 15, 100], //PID_VEL_XY
|
||||
[0, 0, 0], //PID_SURFACE
|
||||
[20, 15, 75], //PID_LEVEL
|
||||
[60, 0, 0], //PID_HEADING
|
||||
[100, 50, 10] //PID_VEL_Z
|
||||
[40, 30, 23, 0], //PID_ROLL
|
||||
[40, 30, 23, 0], //PID_PITCH
|
||||
[85, 45, 0, 0], //PID_YAW
|
||||
[50, 0, 0, 0], //PID_POS_Z
|
||||
[65, 120, 10, 0], //PID_POS_XY
|
||||
[40, 15, 100, 40], //PID_VEL_XY
|
||||
[0, 0, 0, 0], //PID_SURFACE
|
||||
[20, 15, 75, 0], //PID_LEVEL
|
||||
[60, 0, 0, 0], //PID_HEADING
|
||||
[100, 50, 10, 0] //PID_VEL_Z
|
||||
],
|
||||
fw: [
|
||||
[5, 7, 50], //PID_ROLL
|
||||
[5, 7, 50], //PID_PITCH
|
||||
[6, 10, 60], //PID_YAW
|
||||
[40, 5, 10], //PID_POS_Z
|
||||
[75, 5, 8], //PID_POS_XY
|
||||
[0, 0, 0], //PID_VEL_XY
|
||||
[0, 0, 0], //PID_SURFACE
|
||||
[20, 5, 75], //PID_LEVEL
|
||||
[60, 0, 0], //PID_HEADING
|
||||
[0, 0, 0] //PID_VEL_Z
|
||||
[5, 7, 50, 0], //PID_ROLL
|
||||
[5, 7, 50, 0], //PID_PITCH
|
||||
[6, 10, 60, 0], //PID_YAW
|
||||
[40, 5, 10, 0], //PID_POS_Z
|
||||
[75, 5, 8, 0], //PID_POS_XY
|
||||
[0, 0, 0, 0], //PID_VEL_XY
|
||||
[0, 0, 0, 0], //PID_SURFACE
|
||||
[20, 5, 75, 0], //PID_LEVEL
|
||||
[60, 0, 0, 0], //PID_HEADING
|
||||
[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},
|
||||
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