Merge pull request #713 from iNavFlight/dzikuvx-extended-pid-settings

Add FF component to VEL XY
pull/715/head
Paweł Spychalski 6 years ago committed by GitHub
commit f2eb3d9801
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -912,6 +912,9 @@
"pidTuningDerivative": {
"message": "Derivative"
},
"pidTuningFeedForward": {
"message": "FeedForward"
},
"pidTuningRollPitchRate": {
"message": "ROLL & PITCH rate"
},

@ -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) {
MSP.send_message(MSPCodes.MSP_PID, false, false, 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) {
MSP.send_message(MSPCodes.MSP_SET_PID, mspHelper.crunch(MSPCodes.MSP_SET_PID), false, 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…
Cancel
Save