diff --git a/build/script.js b/build/script.js index 49e7b55a..e4e20f51 100644 --- a/build/script.js +++ b/build/script.js @@ -11493,7 +11493,12 @@ var FC = { return ["NONE", "AUTO", "HMC5883", "AK8975", "GPSMAG", "MAG3110", "AK8963", "IST8310", "FAKE"]; }, getBarometerNames: function () { - return ["NONE", "AUTO", "BMP085", "MS5611", "BMP280", "FAKE"]; + if (semver.gte(CONFIG.flightControllerVersion, "1.6.2")) { + return ["NONE", "AUTO", "BMP085", "MS5611", "BMP280", "MS5607", "FAKE"]; + } + else { + return ["NONE", "AUTO", "BMP085", "MS5611", "BMP280", "FAKE"]; + } }, getPitotNames: function () { return ["NONE", "AUTO", "MS4525", "FAKE"]; @@ -11534,6 +11539,25 @@ var FC = { "Attitude", "Cruise" ] + }, + getPidNames: function () { + + if (semver.lt(CONFIG.flightControllerVersion, "1.6.0")) { + return PID_names; + } else { + return [ + 'Roll', + 'Pitch', + 'Yaw', + 'Position Z', + 'Position XY', + 'Velocity XY', + 'Surface', + 'Level', + 'Heading', + 'Velocity Z' + ]; + } } }; @@ -20166,38 +20190,21 @@ TABS.pid_tuning.initialize = function (callback) { $('#content').load("./tabs/pid_tuning.html", process_html); } - var sectionClasses = [ - 'ROLL', // 0 - 'PITCH', // 1 - 'YAW', // 2 - 'ALT', // 3 - 'Pos', // 4 - 'PosR', // 5 - 'NavR', // 6 - 'LEVEL', // 7 - 'MAG', // 8 - 'Vario' // 9 - ]; - function pid_and_rc_to_form() { // Fill in the data from PIDs array - var i; - /* - * Iterate over registered sections/PID controllers - */ - for (var sectionId = 0; sectionId < sectionClasses.length; sectionId++) { + var pidNames = FC.getPidNames(); - i = 0; - /* - * Now, iterate over inputs inside PID constroller section - */ - $('.pid_tuning .' + sectionClasses[sectionId] + ' input').each(function () { - $(this).val(PIDs[sectionId][i]); - i++; - }); + $('[data-pid-bank-position]').each(function () { + var $this = $(this), + bankPosition = $this.data('pid-bank-position'); - } + $this.find('td:first').text(pidNames[bankPosition]); + + $this.find('input').each(function (index) { + $(this).val(PIDs[bankPosition][index]); + }); + }); // Fill in data from RC_tuning object $('.rate-tpa input[name="roll-pitch"]').val(RC_tuning.roll_pitch_rate.toFixed(2)); @@ -20218,14 +20225,14 @@ TABS.pid_tuning.initialize = function (callback) { function form_to_pid_and_rc() { - var i; - for (var sectionId = 0; sectionId < sectionClasses.length; sectionId++) { - i = 0; - $('table.pid_tuning tr.' + sectionClasses[sectionId] + ' input').each(function () { - PIDs[sectionId][i] = parseFloat($(this).val()); - i++; - }); - } + $('[data-pid-bank-position]').each(function () { + var $this = $(this), + bankPosition = $this.data('pid-bank-position'); + + $this.find('input').each(function (index) { + PIDs[bankPosition][index] = parseFloat($(this).val()); + }) + }); // catch RC_tuning changes RC_tuning.roll_pitch_rate = parseFloat($('.rate-tpa input[name="roll-pitch"]').val()); @@ -20276,16 +20283,6 @@ TABS.pid_tuning.initialize = function (callback) { updateActivatedTab(); }); - var i; - - $('.pid_tuning tr').each(function(){ - for(i = 0; i < PID_names.length; i++) { - if($(this).hasClass(PID_names[i])) { - $(this).find('td:first').text(PID_names[i]); - } - } - }); - pid_and_rc_to_form(); if (FC.isRatesInDps()) { @@ -20314,11 +20311,11 @@ TABS.pid_tuning.initialize = function (callback) { $gyroSoftLpfHz.val(FILTER_CONFIG.gyroSoftLpfHz); $accSoftLpfHz.val(INAV_PID_CONFIG.accSoftLpfHz); $dtermLpfHz.val(FILTER_CONFIG.dtermLpfHz); - $yawLpfHz.val(FILTER_CONFIG.yawLpfHz), + $yawLpfHz.val(FILTER_CONFIG.yawLpfHz); $rollPitchItermIgnoreRate.val(PID_ADVANCED.rollPitchItermIgnoreRate); $yawItermIgnoreRate.val(PID_ADVANCED.yawItermIgnoreRate); $axisAccelerationLimitRollPitch.val(PID_ADVANCED.axisAccelerationLimitRollPitch * 10); - $axisAccelerationLimitYaw.val(PID_ADVANCED.axisAccelerationLimitYaw * 10) + $axisAccelerationLimitYaw.val(PID_ADVANCED.axisAccelerationLimitYaw * 10); $magHoldYawRate.change(function () { INAV_PID_CONFIG.magHoldRateLimit = parseInt($magHoldYawRate.val(), 10); @@ -23254,15 +23251,15 @@ helper.mspQueue = (function (serial, MSP) { privateScope.handlerFrequency = 100; privateScope.balancerFrequency = 20; - privateScope.loadFilter = new classes.SimpleSmoothFilter(1, 0.9); - privateScope.roundtripFilter = new classes.SimpleSmoothFilter(20, 0.99); - privateScope.hardwareRoundtripFilter = new classes.SimpleSmoothFilter(10, 0.99); + privateScope.loadFilter = new classes.SimpleSmoothFilter(1, 0.85); + privateScope.roundtripFilter = new classes.SimpleSmoothFilter(20, 0.95); + privateScope.hardwareRoundtripFilter = new classes.SimpleSmoothFilter(10, 0.95); /** * Target load for MSP queue. When load is above target, throttling might start to appear * @type {number} */ - privateScope.targetLoad = 1.5; + privateScope.targetLoad = 2; privateScope.statusDropFactor = 0.75; privateScope.currentLoad = 0; @@ -23274,7 +23271,7 @@ helper.mspQueue = (function (serial, MSP) { privateScope.loadPidController = new classes.PidController(); privateScope.loadPidController.setTarget(privateScope.targetLoad); privateScope.loadPidController.setOutput(0, 99, 0); - privateScope.loadPidController.setGains(10, 4, 1); + privateScope.loadPidController.setGains(5, 6, 3); privateScope.loadPidController.setItermLimit(0, 90); privateScope.dropRatio = 0; diff --git a/build/styles.css b/build/styles.css index e421bb6c..9a74dd91 100644 --- a/build/styles.css +++ b/build/styles.css @@ -396,7 +396,7 @@ input[type="number"]::-webkit-inner-spin-button { } .sonaricon.active { - background-image: url("images/icons/sensor_sonar_on.png"); + background-image: url("../images/icons/sensor_sonar_on.png"); color: #818181; } diff --git a/js/fc.js b/js/fc.js index 6900ccc2..44831a43 100644 --- a/js/fc.js +++ b/js/fc.js @@ -696,7 +696,12 @@ var FC = { return ["NONE", "AUTO", "HMC5883", "AK8975", "GPSMAG", "MAG3110", "AK8963", "IST8310", "FAKE"]; }, getBarometerNames: function () { - return ["NONE", "AUTO", "BMP085", "MS5611", "BMP280", "FAKE"]; + if (semver.gte(CONFIG.flightControllerVersion, "1.6.2")) { + return ["NONE", "AUTO", "BMP085", "MS5611", "BMP280", "MS5607", "FAKE"]; + } + else { + return ["NONE", "AUTO", "BMP085", "MS5611", "BMP280", "FAKE"]; + } }, getPitotNames: function () { return ["NONE", "AUTO", "MS4525", "FAKE"]; @@ -737,5 +742,24 @@ var FC = { "Attitude", "Cruise" ] + }, + getPidNames: function () { + + if (semver.lt(CONFIG.flightControllerVersion, "1.6.0")) { + return PID_names; + } else { + return [ + 'Roll', + 'Pitch', + 'Yaw', + 'Position Z', + 'Position XY', + 'Velocity XY', + 'Surface', + 'Level', + 'Heading', + 'Velocity Z' + ]; + } } }; diff --git a/js/serial_queue.js b/js/serial_queue.js index a033f076..0c6b14cd 100644 --- a/js/serial_queue.js +++ b/js/serial_queue.js @@ -10,15 +10,15 @@ helper.mspQueue = (function (serial, MSP) { privateScope.handlerFrequency = 100; privateScope.balancerFrequency = 20; - privateScope.loadFilter = new classes.SimpleSmoothFilter(1, 0.9); - privateScope.roundtripFilter = new classes.SimpleSmoothFilter(20, 0.99); - privateScope.hardwareRoundtripFilter = new classes.SimpleSmoothFilter(10, 0.99); + privateScope.loadFilter = new classes.SimpleSmoothFilter(1, 0.85); + privateScope.roundtripFilter = new classes.SimpleSmoothFilter(20, 0.95); + privateScope.hardwareRoundtripFilter = new classes.SimpleSmoothFilter(10, 0.95); /** * Target load for MSP queue. When load is above target, throttling might start to appear * @type {number} */ - privateScope.targetLoad = 1.5; + privateScope.targetLoad = 2; privateScope.statusDropFactor = 0.75; privateScope.currentLoad = 0; @@ -30,7 +30,7 @@ helper.mspQueue = (function (serial, MSP) { privateScope.loadPidController = new classes.PidController(); privateScope.loadPidController.setTarget(privateScope.targetLoad); privateScope.loadPidController.setOutput(0, 99, 0); - privateScope.loadPidController.setGains(10, 4, 1); + privateScope.loadPidController.setGains(5, 6, 3); privateScope.loadPidController.setItermLimit(0, 90); privateScope.dropRatio = 0; diff --git a/main.css b/main.css index e5280058..b62c5b56 100644 --- a/main.css +++ b/main.css @@ -396,7 +396,7 @@ input[type="number"]::-webkit-inner-spin-button { } .sonaricon.active { - background-image: url("images/icons/sensor_sonar_on.png"); + background-image: url("../images/icons/sensor_sonar_on.png"); color: #818181; } diff --git a/tabs/pid_tuning.html b/tabs/pid_tuning.html index a32f9287..0a6cb927 100755 --- a/tabs/pid_tuning.html +++ b/tabs/pid_tuning.html @@ -34,21 +34,21 @@
- + - + - + @@ -62,14 +62,14 @@
- + - + VEL @@ -83,7 +83,7 @@
- + @@ -97,21 +97,21 @@
- + - + - + @@ -135,7 +135,7 @@ - + diff --git a/tabs/pid_tuning.js b/tabs/pid_tuning.js index a192047e..35cb7373 100755 --- a/tabs/pid_tuning.js +++ b/tabs/pid_tuning.js @@ -29,38 +29,21 @@ TABS.pid_tuning.initialize = function (callback) { $('#content').load("./tabs/pid_tuning.html", process_html); } - var sectionClasses = [ - 'ROLL', // 0 - 'PITCH', // 1 - 'YAW', // 2 - 'ALT', // 3 - 'Pos', // 4 - 'PosR', // 5 - 'NavR', // 6 - 'LEVEL', // 7 - 'MAG', // 8 - 'Vario' // 9 - ]; - function pid_and_rc_to_form() { // Fill in the data from PIDs array - var i; - /* - * Iterate over registered sections/PID controllers - */ - for (var sectionId = 0; sectionId < sectionClasses.length; sectionId++) { - - i = 0; - /* - * Now, iterate over inputs inside PID constroller section - */ - $('.pid_tuning .' + sectionClasses[sectionId] + ' input').each(function () { - $(this).val(PIDs[sectionId][i]); - i++; - }); + var pidNames = FC.getPidNames(); - } + $('[data-pid-bank-position]').each(function () { + var $this = $(this), + bankPosition = $this.data('pid-bank-position'); + + $this.find('td:first').text(pidNames[bankPosition]); + + $this.find('input').each(function (index) { + $(this).val(PIDs[bankPosition][index]); + }); + }); // Fill in data from RC_tuning object $('.rate-tpa input[name="roll-pitch"]').val(RC_tuning.roll_pitch_rate.toFixed(2)); @@ -81,14 +64,14 @@ TABS.pid_tuning.initialize = function (callback) { function form_to_pid_and_rc() { - var i; - for (var sectionId = 0; sectionId < sectionClasses.length; sectionId++) { - i = 0; - $('table.pid_tuning tr.' + sectionClasses[sectionId] + ' input').each(function () { - PIDs[sectionId][i] = parseFloat($(this).val()); - i++; - }); - } + $('[data-pid-bank-position]').each(function () { + var $this = $(this), + bankPosition = $this.data('pid-bank-position'); + + $this.find('input').each(function (index) { + PIDs[bankPosition][index] = parseFloat($(this).val()); + }) + }); // catch RC_tuning changes RC_tuning.roll_pitch_rate = parseFloat($('.rate-tpa input[name="roll-pitch"]').val()); @@ -139,16 +122,6 @@ TABS.pid_tuning.initialize = function (callback) { updateActivatedTab(); }); - var i; - - $('.pid_tuning tr').each(function(){ - for(i = 0; i < PID_names.length; i++) { - if($(this).hasClass(PID_names[i])) { - $(this).find('td:first').text(PID_names[i]); - } - } - }); - pid_and_rc_to_form(); if (FC.isRatesInDps()) { @@ -177,11 +150,11 @@ TABS.pid_tuning.initialize = function (callback) { $gyroSoftLpfHz.val(FILTER_CONFIG.gyroSoftLpfHz); $accSoftLpfHz.val(INAV_PID_CONFIG.accSoftLpfHz); $dtermLpfHz.val(FILTER_CONFIG.dtermLpfHz); - $yawLpfHz.val(FILTER_CONFIG.yawLpfHz), + $yawLpfHz.val(FILTER_CONFIG.yawLpfHz); $rollPitchItermIgnoreRate.val(PID_ADVANCED.rollPitchItermIgnoreRate); $yawItermIgnoreRate.val(PID_ADVANCED.yawItermIgnoreRate); $axisAccelerationLimitRollPitch.val(PID_ADVANCED.axisAccelerationLimitRollPitch * 10); - $axisAccelerationLimitYaw.val(PID_ADVANCED.axisAccelerationLimitYaw * 10) + $axisAccelerationLimitYaw.val(PID_ADVANCED.axisAccelerationLimitYaw * 10); $magHoldYawRate.change(function () { INAV_PID_CONFIG.magHoldRateLimit = parseInt($magHoldYawRate.val(), 10);