mirror of
https://github.com/betaflight/betaflight-configurator.git
synced 2025-07-17 21:35:33 +03:00
Add rates type
Add rates type selection with working graphs and max angular speed Fix deadband MSP changes and fix actual rates limit Small style changes and fixes Fixes Fixed the code pointed out in the review Various sonar fixes Updated the values of actual rates setting Reduced logo size Added analytics to rates type Minor fix + rounding by step value Now the calculation of the angle rate takes into account the values rounded by the step value (especially visible with values that are in deg/s) Various fixes Angle rate calculation in different functions Fix for value step validation Sonar fixes (mostly variables) Force refresh to prevent errors ... ... when changing rates type after saving to eeprom Logos refinement + minor changes Touch to trigger travis Fix Raceflight rate
This commit is contained in:
parent
94bd817aff
commit
70a8364e5c
12 changed files with 1089 additions and 46 deletions
|
@ -5598,5 +5598,41 @@
|
|||
},
|
||||
"darkTheme": {
|
||||
"message": "Enable dark theme"
|
||||
},
|
||||
"pidTuningRatesType": {
|
||||
"message": "Rates Type"
|
||||
},
|
||||
"pidTuningRatesTypeTip": {
|
||||
"message": "Changing rates type will change the rates curve and the way you can set it"
|
||||
},
|
||||
"pidTuningRcRateRaceflight": {
|
||||
"message": "Rate"
|
||||
},
|
||||
"pidTuningRcExpoRaceflight": {
|
||||
"message": "Expo"
|
||||
},
|
||||
"pidTuningRateRaceflight": {
|
||||
"message": "Acro+"
|
||||
},
|
||||
"pidTuningRcExpoKISS": {
|
||||
"message": "RC Curve"
|
||||
},
|
||||
"pidTuningRateQuickRates": {
|
||||
"message": "Max Rate"
|
||||
},
|
||||
"pidTuningRcRateActual": {
|
||||
"message": "Center Sensitivity"
|
||||
},
|
||||
"dialogRatesTypeTitle": {
|
||||
"message": "Rates type change"
|
||||
},
|
||||
"dialogRatesTypeNote": {
|
||||
"message": "<span class=\"message-negative\"><b>WARNING: You are changing the rates type.</b></span> Your rates will be set to a default curve.<br><br>Nothing is saved yet and you can still return to your previous values by setting the previous rates type.<br><br>Click the Save button to apply the changes."
|
||||
},
|
||||
"dialogRatesTypeConfirm": {
|
||||
"message": "Change"
|
||||
},
|
||||
"dialogRatesTypeCancel": {
|
||||
"message": "Return to saved values"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -908,3 +908,26 @@
|
|||
.tab-pid_tuning .pid_titlebar .name-helpicon-flex .helpicon {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .cf .rates_logo_bg {
|
||||
background-color: #ebeced;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .rates_logo_div {
|
||||
margin-top: -10%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .rates_logo {
|
||||
width: 80%;
|
||||
height: 80%;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .rates-tab-warning {
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .float-left {
|
||||
float: left;
|
||||
}
|
||||
|
|
124
src/images/rate_logos/actual.svg
Normal file
124
src/images/rate_logos/actual.svg
Normal file
|
@ -0,0 +1,124 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="520"
|
||||
height="120"
|
||||
viewBox="0 0 390.00001 90"
|
||||
version="1.1"
|
||||
id="svg76"
|
||||
sodipodi:docname="actual.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<metadata
|
||||
id="metadata82">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs80" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="745"
|
||||
id="namedview78"
|
||||
showgrid="false"
|
||||
inkscape:pagecheckerboard="true"
|
||||
units="px"
|
||||
inkscape:zoom="1.6730769"
|
||||
inkscape:cx="260"
|
||||
inkscape:cy="60"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg76" />
|
||||
<g
|
||||
id="#272357ff"
|
||||
transform="matrix(0.36024842,0,0,0.36024842,20.018351,-46.260408)">
|
||||
<path
|
||||
d="m 217.3,150.27 c 0.51,-2.73 2.78,0.68 3.35,1.61 29.48,46.14 58.89,92.31 88.3,138.49 4.94,0.43 9.95,0.28 14.91,0.11 2.04,-1.54 3.21,-4.87 6.21,-5.02 3.16,-0.27 7.1,-0.73 9.28,2.17 4.42,4.42 2.34,12.7 -3.46,14.81 -2.18,0.32 -4.44,0.3 -6.6,-0.14 -2.23,-0.98 -3.52,-3.12 -5.14,-4.8 -3.05,-0.28 -6.12,-0.16 -9.17,-0.09 l -0.76,1.34 c 8.33,12.44 16.15,25.22 24.23,37.82 3.37,0.56 6.87,0.44 10.26,0.1 1.61,-1.43 2.81,-3.58 5.02,-4.16 2.19,-0.25 4.44,-0.37 6.63,-0.01 3.46,1.42 5.28,4.98 5.94,8.49 -0.7,3.79 -3.02,7.99 -7.2,8.56 -2.32,0.13 -4.89,0.42 -6.93,-0.92 -2.38,-1.4 -3.18,-5.29 -6.47,-4.97 -3.05,0.21 -0.71,3.05 0,4.32 1.52,2.36 3.16,4.65 4.44,7.16 -4.36,0.51 -8.74,1.1 -13.14,0.97 -32.33,-0.02 -64.67,0 -97,-0.01 -3.2,-0.45 -6.44,-0.43 -9.63,-0.86 -7.62,-12.26 -15.24,-24.62 -22.36,-37.18 1.17,-3.02 3.19,-5.6 4.79,-8.39 2.21,-3.38 3.92,-7.12 6.58,-10.18 1.75,1.65 2.54,4.12 3.93,6.08 5.82,10.18 11.79,20.28 17.62,30.47 0.83,1.31 2.74,0.63 4.04,0.88 25.35,-0.06 50.69,0 76.03,-0.04 2.94,0.27 5.87,0.77 8.84,0.67 l 0.98,-1.23 c -7.86,-12.18 -15.68,-24.39 -23.38,-36.67 -0.75,-1.17 -1.65,-2.68 -3.32,-2.27 -16.21,-0.1 -32.44,0.13 -48.65,-0.11 -1.71,-1.89 -2.9,-4.17 -4.27,-6.3 -10.72,-16.83 -21.27,-33.76 -32.04,-50.56 -0.43,-0.02 -1.28,-0.05 -1.71,-0.07 -6.1,9.26 -11.52,18.98 -17.59,28.27 -12.75,20.34 -25.36,40.77 -38.01,61.17 -0.86,1.21 -0.16,4.43 -2.36,3.6 -2.05,3.37 -3.98,6.82 -6.15,10.13 -0.75,1.02 -1.83,2.24 -3.27,1.92 -13.18,-0.05 -26.37,0.04 -39.55,-0.04 -0.72,-2.34 0.95,-4.22 2.08,-6.06 18.54,-29.69 37.01,-59.42 55.51,-89.13 1.31,-2.29 3.2,-4.32 3.84,-6.93 -2.14,-0.15 -4.32,-0.3 -6.43,0.16 -20.84,33.15 -41.91,66.16 -62.76,99.31 -1.55,2.57 -3.54,4.89 -4.67,7.7 14.95,0.52 29.95,0.07 44.92,0.22 4.41,-0.13 8.86,0.29 13.24,-0.24 15.14,-24.23 30.12,-48.48 45.28,-72.69 1.26,-2.25 3.99,-4.63 2.68,-7.44 -1.08,-2.96 -1.43,-6.62 0.68,-9.21 2.17,-3.67 7.08,-4.15 10.83,-3.17 1.75,1.12 3.26,2.6 4.54,4.25 0.75,2.82 0.67,5.88 0.02,8.72 -2.13,3.25 -5.83,5.01 -9.68,4.81 -2.38,2.6 -3.95,5.84 -5.79,8.83 -15.23,24.13 -30.19,48.46 -45.29,72.68 -22.15,0.46 -44.35,0.03 -66.52,0.21 -1.65,-0.06 -3.36,0.17 -4.97,-0.27 0.07,-1.4 0.03,-2.89 0.69,-4.17 22.35,-35.08 44.44,-70.34 66.79,-105.42 0.96,-1.25 1.39,-2.76 1.52,-4.31 -6.35,-0.16 -12.72,-0.17 -19.07,-0.01 -1.43,-0.21 -1.84,1.37 -2.65,2.18 -3.46,4.99 -12.09,4.03 -14.76,-1.31 -0.49,-2.95 -0.65,-6.06 0.15,-8.96 1.17,-1.42 2.53,-2.69 4.09,-3.67 2.33,-0.37 4.72,-0.37 7.05,-0.02 2.99,-0.06 3.09,4.65 6.12,4.3 8.39,-0.05 16.83,0.4 25.18,-0.24 15.41,-24.6 31.01,-49.07 46.53,-73.59 2.06,-3.6 4.78,-6.81 6.25,-10.72 0.75,0.52 1.21,0.22 1.38,-0.93 m 0.23,11.99 c -1.32,0.38 -1.75,2 -2.5,3.02 -3.42,6.63 -8.74,12.22 -11.42,19.22 -0.82,0.87 -1.79,1.62 -2.45,2.63 -9.29,14.93 -18.73,29.77 -28.04,44.67 -1.04,1.06 -1,2.58 -1.09,3.95 3.77,0.16 7.53,-0.16 11.3,0.05 0.49,1.52 -0.71,2.8 -1.29,4.09 -6.53,10.57 -13.11,21.11 -19.73,31.63 -1.07,1.39 -0.77,3.6 -2.32,4.64 -2.48,1.71 -3.22,4.78 -4.34,7.38 -3.29,2.59 -4.52,6.78 -7.02,10.02 -1.45,1.76 -2.1,3.94 -3.02,5.97 -3.31,2.93 -4.77,7.26 -7.42,10.71 -1.73,1.92 -1.61,4.93 -3.79,6.48 -2.37,2.61 -3.56,6.06 -5.73,8.83 -2.07,2.3 -2.12,5.75 -4.65,7.68 -0.51,2.06 -1.98,3.54 -2.95,5.33 7.64,0.23 15.29,-0.02 22.93,0.1 1.65,-0.07 3.38,0.18 4.98,-0.35 20.98,-33.73 41.97,-67.54 62.96,-101.3 0.89,-3.85 4.27,-6.15 6.05,-9.56 2.12,2.11 3.79,4.6 5.24,7.21 11.54,18.55 23.52,36.83 34.89,55.48 1.12,0.71 2.59,0.32 3.85,0.47 12.95,-0.09 25.91,0.07 38.86,-0.07 -0.12,-0.47 -0.36,-1.42 -0.48,-1.89 -10.23,-16 -20.43,-32.02 -30.62,-48.05 -1.25,-2.51 -4.09,-3.9 -4.5,-6.85 -8.12,-13.14 -16.64,-26.1 -24.87,-39.2 -1.75,-1.47 -2.79,-3.38 -3.51,-5.53 -5.48,-8.49 -10.93,-17.02 -16.3,-25.58 -0.44,-1.31 -1.88,-1.47 -3.02,-1.18 m -91.23,74.16 c -1.86,0.81 -0.89,4.27 -0.89,6.13 2.26,0.42 4.61,0.4 6.82,-0.28 0.27,-1.94 0.49,-4.14 -1.1,-5.6 -1.54,-0.59 -3.23,-0.44 -4.83,-0.25 m 84.26,26.26 c -2.17,0.93 -1.36,4.77 -1.14,6.86 1.98,0.34 4.03,0.41 5.98,-0.16 0.5,-2.28 0.81,-5.11 -1.28,-6.72 -1.18,-0.17 -2.39,-0.12 -3.56,0.02 m 120.03,27.8 c -2.01,1.48 -1.88,5.57 0.2,6.97 1.97,0.35 4.08,0.28 5.46,-1.36 0.39,-1.42 0.39,-2.95 0.03,-4.37 -1.1,-2 -3.81,-1.38 -5.69,-1.24 m -112.24,22.84 c -2.34,1.33 -2.8,5.41 -1.36,7.74 5.53,9.12 11.08,18.25 16.51,27.42 1.47,0.3 2.99,0.23 4.49,0.26 33.31,-0.1 66.62,0.1 99.93,-0.1 -0.27,-2.01 -1.41,-4.8 -3.9,-4.38 -31.01,-0.02 -62.02,0.01 -93.03,0.06 -2.46,0.49 -3.75,-1.96 -4.78,-3.73 -5.03,-8.92 -10.36,-17.67 -15.32,-26.63 -0.64,-0.8 -1.49,-1.01 -2.54,-0.64 m 135.69,24.81 c -1.37,1.33 -0.6,3.64 -0.59,5.37 2.05,0.41 4.16,0.45 6.25,0.25 0.29,-2.09 0.27,-4.23 -0.25,-6.27 -1.75,0.03 -4.02,-0.75 -5.41,0.65 z"
|
||||
id="path49"
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:1;fill:#272357" />
|
||||
<path
|
||||
d="m 214.27,185.82 c 2.76,-0.26 5.6,-0.33 8.36,0.09 1.95,2.62 4.78,4.96 5.11,8.44 -0.22,2.62 -1.07,5.37 -0.15,7.95 12.68,18.48 24.83,37.34 37.36,55.93 1.55,1.14 3.89,0.09 5.71,0.7 1.91,2.58 4.49,4.65 6.03,7.51 0.66,5.8 -4.76,11.84 -10.68,11.03 -3.36,-0.19 -5.25,-3.42 -8.07,-4.81 -0.28,-2.51 -0.32,-5.07 -0.03,-7.58 0.91,-1.6 1.29,-3.64 0.29,-5.31 -10.37,-15.95 -21.25,-31.56 -31.54,-47.56 -2.25,-2.23 -3.1,-5.46 -5.37,-7.67 -4.96,0.13 -9.9,-2.44 -11.85,-7.15 -1.61,-2.06 0.15,-4.47 0.63,-6.61 1.5,-1.57 3.14,-3.03 4.2,-4.96 m 3.1,5.58 c -2.75,-0.53 -1.93,2.86 -2.12,4.55 -0.4,3.44 3.94,2.8 6.08,2.34 0.68,-2.16 0.53,-4.48 0.06,-6.66 -1.33,-0.24 -2.68,-0.35 -4.02,-0.23 m 49.86,73.05 c -3.66,-0.58 -5.35,5.06 -2.65,7.04 1.85,0.48 3.89,0.53 5.66,-0.28 1.15,-2.6 0.62,-6.94 -3.01,-6.76 z"
|
||||
id="path51"
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:1;fill:#272357" />
|
||||
<path
|
||||
d="m 393.21,255.18 c 24.25,-0.4 48.53,-0.03 72.8,-0.19 2.28,-0.34 4.11,1.05 5.91,2.22 3.3,-3.16 7.96,-2.07 12.09,-2.2 27.65,0.03 55.3,-0.03 82.94,0.03 2.14,-0.19 3.46,1.63 4.91,2.86 1.44,-1.4 2.93,-3.15 5.18,-2.88 6.3,-0.02 12.61,-0.07 18.91,0.03 2.32,-0.04 4.56,1.81 4.81,4.15 1.65,8.23 -0.25,16.53 0.13,24.8 -0.02,12.33 0.02,24.66 -0.02,36.99 0.08,1.47 -0.24,3.05 0.34,4.45 5.16,1.31 10.52,0.71 15.78,0.84 8.54,-0.18 17.14,0.36 25.64,-0.26 0.15,-22 -0.02,-44 0.09,-65.99 -0.05,-2.78 2.55,-5.21 5.32,-5 6.31,-0.04 12.62,-0.06 18.93,0 2.8,-0.15 5.16,2.31 5.25,5.04 0.57,8.63 0.24,17.28 0.33,25.92 -0.09,17 0.19,33.99 -0.14,50.98 -2.03,8.82 -9.66,16.26 -18.58,18.04 -2.9,0.62 -5.88,0.5 -8.81,0.53 -16.92,-0.05 -33.84,0.07 -50.75,-0.07 -11.85,-0.1 -22.46,-10.61 -22.54,-22.47 -0.06,-16.92 0.01,-33.84 -0.05,-50.76 -1.49,0.88 -2.85,2.32 -4.71,2.2 -10.08,0.2 -20.17,-0.25 -30.24,0.28 -0.17,21.79 0.03,43.59 -0.09,65.38 0.37,2.72 -2.16,5.43 -4.86,5.39 -6.61,0.11 -13.23,0 -19.83,-0.08 -2.43,0.1 -4.87,-2.05 -4.73,-4.54 -0.1,-19.29 -0.01,-38.58 -0.04,-57.87 -0.05,-2.84 0.22,-5.71 -0.31,-8.51 -9.95,-0.07 -19.9,0.03 -29.85,-0.11 -2,0.23 -3.5,-1.16 -5.14,-2 -1.6,0.91 -3.09,2.3 -5.07,2.08 -17.99,0.03 -35.99,0.02 -53.98,0 -3.53,-0.1 -6.96,0.88 -10.48,0.92 0,13.41 0.02,26.83 -0.01,40.24 3.83,0.88 7.77,0.63 11.66,0.66 17.66,0 35.31,-0.01 52.97,0 2.7,-0.34 5.38,1.98 5.33,4.72 0.37,6.34 0.32,12.7 0.27,19.05 0.48,3.12 -2.72,5.82 -5.71,5.47 -22.28,0.03 -44.55,0 -66.82,0 -3.86,-0.05 -7.81,0.15 -11.52,-1.07 -9.2,-2.8 -16.42,-11.74 -16.35,-21.5 -0.03,-18.62 -0.06,-37.23 0.02,-55.84 0.17,-11.22 9.92,-21.11 21.02,-21.93 m -0.93,5.01 c -8.39,1.3 -15.59,9.15 -15.23,17.81 -0.03,18.34 -0.02,36.68 0,55.03 -0.08,7.18 5.01,13.72 11.53,16.36 3.31,1.32 6.93,1.19 10.42,1.22 22.62,-0.04 45.25,0.05 67.87,-0.04 0.89,-1.72 0.48,-3.74 0.59,-5.6 -0.16,-4.63 0.24,-9.28 -0.22,-13.89 -23.61,-0.24 -47.23,0.11 -70.84,-0.17 0.04,-17.06 -0.02,-34.13 -0.01,-51.19 23.45,-0.45 46.92,0.02 70.37,-0.22 1.16,-1.58 0.53,-3.71 0.7,-5.52 -0.24,-4.63 0.37,-9.29 -0.29,-13.88 -24.96,-0.04 -49.94,-0.23 -74.89,0.09 m 84.1,-0.01 c -0.03,6.44 -0.14,12.88 0.07,19.31 11.83,0.25 23.68,-0.21 35.5,0.21 0.33,23.62 -0.18,47.26 0.25,70.87 6.42,0.05 12.85,0.14 19.27,-0.06 0.23,-23.62 -0.12,-47.25 0.16,-70.87 11.72,-0.27 23.46,0.03 35.18,-0.12 0.53,-6.44 0.15,-12.95 0.08,-19.41 -28.3,-0.19 -56.6,0.01 -84.89,-0.09 -1.88,-0.01 -3.76,-0.03 -5.62,0.16 m 100.41,-0.09 c -0.43,2.27 -0.28,4.6 -0.28,6.9 0.05,21.67 -0.03,43.34 0.04,65.01 -0.35,9.59 7.99,18.52 17.64,18.54 18.27,0.12 36.54,0.07 54.81,0.03 7.63,0.13 14.71,-5.28 17.28,-12.33 1.63,-4.93 0.64,-10.17 0.75,-15.24 0.7,-15 -0.04,-30.02 0.25,-45.02 -0.39,-5.95 0.48,-11.93 -0.16,-17.86 -6.43,-0.16 -12.88,-0.13 -19.32,-0.02 -0.67,6.6 -0.03,13.25 -0.06,19.86 -0.4,11.01 -0.07,22.03 -0.15,33.04 0.15,5.92 0.71,11.85 0.15,17.77 -4.56,0.52 -9.17,0.13 -13.75,0.24 -12.64,-0.08 -25.3,0.15 -37.94,-0.11 -0.34,-23.58 0.08,-47.18 -0.2,-70.76 -6.35,-0.21 -12.71,-0.14 -19.06,-0.05 z"
|
||||
id="path53"
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:1;fill:#272357" />
|
||||
<path
|
||||
d="m 694.52,255.72 c 2.77,-0.63 5.63,-0.77 8.47,-0.73 17,0.08 34.01,-0.04 51.01,0.05 11.62,0.01 22,9.71 23.46,21.11 0.22,1.96 0.92,3.85 0.9,5.84 -0.02,21.67 -0.01,43.34 0,65.01 0.04,3.52 -1.46,8.16 -5.58,8.47 -6.6,0.18 -13.21,-0.02 -19.81,-0.03 -2.56,0.19 -5.17,-1.82 -5.18,-4.47 -0.21,-8.2 0.15,-16.41 -0.17,-24.6 -11.53,-0.12 -23.08,-0.02 -34.62,-0.04 -2.41,0.13 -5.28,-0.42 -7.06,1.63 -0.63,7.38 0.71,14.69 0.46,22.06 0.17,2.95 -2.68,5.63 -5.6,5.49 -6.57,0.04 -13.15,0.03 -19.71,-0.13 -2.66,-0.13 -4.74,-2.77 -4.41,-5.37 -0.22,-23.67 -0.06,-47.35 -0.12,-71.02 -0.46,-10.67 7.63,-20.85 17.96,-23.27 m 1.86,4.56 c -8.22,1.51 -14.91,9.25 -14.76,17.69 -0.1,14.35 -0.02,28.7 -0.05,43.04 0.17,7.99 0.34,15.98 -0.02,23.97 0.06,1.85 -0.32,3.88 0.6,5.59 6.21,0.07 12.43,0.08 18.64,-0.01 0.48,-9.74 -0.18,-19.51 0.31,-29.24 17.1,-0.45 34.23,0.68 51.33,-0.25 0.24,8.3 0.04,16.61 0.07,24.91 0.16,1.49 -0.38,3.34 0.71,4.58 6.2,0.1 12.43,0.07 18.64,0.01 0.71,-2.8 0.38,-5.72 0.44,-8.57 -0.02,-20.34 -0.01,-40.68 -0.01,-61.02 -0.05,-3.53 -0.12,-7.24 -1.75,-10.46 -3.11,-6.06 -9.53,-10.69 -16.51,-10.49 -16.34,0 -32.68,0.01 -49.01,0 -2.88,0.03 -5.78,-0.19 -8.63,0.25 z"
|
||||
id="path55"
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:1;fill:#272357" />
|
||||
<path
|
||||
d="m 784.6,255.56 c 1.97,-0.95 4.27,-0.5 6.4,-0.62 5.56,0.18 11.15,-0.28 16.69,0.23 2.98,0.78 3.86,4.1 3.68,6.82 -0.21,3.07 1.16,5.95 1.01,9.02 -0.08,18.2 0.03,36.4 -0.06,54.61 2.51,0.52 5.08,0.69 7.65,0.66 18.69,-0.02 37.37,0.02 56.06,-0.02 1.55,0.07 3.37,-0.18 4.63,1.02 1.95,1.31 1.74,3.83 2.06,5.88 1.05,5.23 0.59,10.58 0.65,15.87 0.04,3.31 -2.79,6.97 -6.37,6.5 -29.33,-0.03 -58.67,0.07 -88,-0.06 -1.8,-0.06 -3.83,0.13 -5.25,-1.18 -2.18,-1.72 -1.91,-4.81 -1.96,-7.29 0.15,-29.52 -0.32,-59.06 0.52,-88.56 0.09,-1.33 1.24,-2.24 2.29,-2.88 m 2.53,4.42 c -0.26,28 -0.02,56.01 -0.11,84.02 -0.01,2.18 -0.06,4.38 0.17,6.57 30.13,0.04 60.28,0.09 90.41,-0.02 0.22,-6.46 0.11,-12.94 0.07,-19.4 -23.77,-0.42 -47.57,0.1 -71.34,-0.25 -0.15,-23.6 0.31,-47.23 -0.17,-70.82 -6.34,0 -12.7,-0.55 -19.03,-0.1 z"
|
||||
id="path57"
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:1;fill:#272357" />
|
||||
<path
|
||||
d="m 701.03,279.7 c 17.11,-0.3 34.25,-0.17 51.37,-0.07 0.13,7.37 0.32,14.77 -0.09,22.13 -17.08,0.01 -34.17,-0.1 -51.25,0.02 -0.23,-7.35 -0.16,-14.73 -0.03,-22.08 m 5.59,4.96 c -0.13,3.92 -1.52,8.07 -0.33,11.88 7.2,0.79 14.47,0.38 21.71,0.48 6.56,-0.08 13.14,0.17 19.7,-0.11 0.08,-4.13 0.12,-8.28 -0.09,-12.4 -13.66,-0.01 -27.33,-0.22 -40.99,0.15 z"
|
||||
id="path59"
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:1;fill:#272357" />
|
||||
</g>
|
||||
<g
|
||||
id="#ffffffff"
|
||||
transform="matrix(0.36024842,0,0,0.36024842,20.018351,-46.260408)" />
|
||||
<g
|
||||
id="#55bce7ff"
|
||||
transform="matrix(0.36024842,0,0,0.36024842,20.018351,-46.260408)">
|
||||
<path
|
||||
d="m 217.17,165.1 0.79,-1 c 3.39,3.23 5.27,7.58 7.75,11.48 12.9,20.09 25.81,40.17 38.54,60.37 6.68,10.04 13.1,20.25 19.43,30.5 4.1,5.17 6.86,11.21 10.73,16.54 1.02,1.69 2.9,3.33 2.13,5.53 -11.85,0.53 -23.75,0.12 -35.62,0.21 -1.73,0.37 -2.53,-1.43 -3.38,-2.52 -12.79,-20.61 -25.97,-40.98 -38.82,-61.53 -1.43,-0.51 -1.91,1.09 -2.6,1.98 -13.94,23.1 -28.38,45.89 -42.56,68.84 -4.17,6.2 -7.86,12.69 -11.7,19.08 -4.35,6.17 -8.27,12.62 -12,19.18 -0.88,1.3 -1.91,3.22 -3.78,2.95 -6.85,-0.07 -13.73,0.33 -20.55,-0.23 -0.96,-1.72 0.44,-3.3 1.26,-4.69 18.47,-29.51 36.73,-59.15 55.14,-88.7 1.62,-2.76 3.77,-5.27 4.71,-8.38 -3.7,-0.21 -7.41,0.15 -11.1,-0.19 l -1.14,-1.19 c 7.98,-14.07 17.42,-27.23 25.63,-41.15 5.65,-9.07 11.68,-17.9 17.14,-27.08 m -2.6,19.98 c -2.7,2.15 -5.99,4.49 -6.32,8.24 -1.55,4.76 1.84,9.25 5.59,11.79 1.8,1.38 4.24,0.89 6.33,1.43 2.75,3.02 4.59,6.72 7.07,9.94 4.13,5.19 6.87,11.3 10.96,16.51 4.43,5.77 7.73,12.28 12.04,18.12 2.36,3.11 4.47,6.42 6.35,9.85 0.98,3.8 -0.52,7.85 0.39,11.7 1.33,2.73 3.83,4.72 6.51,6.05 4.92,2.01 11.28,-0.36 13.4,-5.3 0.94,-2.93 1.02,-6.22 0.19,-9.19 -1.82,-3.98 -5.99,-6.41 -10.25,-6.83 -2.31,-2.36 -3.85,-5.34 -5.75,-8.01 -7.64,-11.31 -15.05,-22.76 -22.71,-34.06 -2.94,-5.3 -7.23,-9.78 -9.87,-15.24 0.34,-2.34 1.31,-4.67 0.76,-7.06 -0.57,-3.72 -3.75,-6.3 -6.89,-7.94 -2.54,-0.54 -5.25,-0.48 -7.8,0 z"
|
||||
id="path63"
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:1;fill:#55bce7" />
|
||||
<path
|
||||
d="m 392.28,260.19 c 24.95,-0.32 49.93,-0.13 74.89,-0.09 0.66,4.59 0.05,9.25 0.29,13.88 -0.17,1.81 0.46,3.94 -0.7,5.52 -23.45,0.24 -46.92,-0.23 -70.37,0.22 -0.01,17.06 0.05,34.13 0.01,51.19 23.61,0.28 47.23,-0.07 70.84,0.17 0.46,4.61 0.06,9.26 0.22,13.89 -0.11,1.86 0.3,3.88 -0.59,5.6 -22.62,0.09 -45.25,0 -67.87,0.04 -3.49,-0.03 -7.11,0.1 -10.42,-1.22 -6.52,-2.64 -11.61,-9.18 -11.53,-16.36 -0.02,-18.35 -0.03,-36.69 0,-55.03 -0.36,-8.66 6.84,-16.51 15.23,-17.81 z"
|
||||
id="path65"
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:1;fill:#55bce7" />
|
||||
<path
|
||||
d="m 476.38,260.18 c 1.86,-0.19 3.74,-0.17 5.62,-0.16 28.29,0.1 56.59,-0.1 84.89,0.09 0.07,6.46 0.45,12.97 -0.08,19.41 -11.72,0.15 -23.46,-0.15 -35.18,0.12 -0.28,23.62 0.07,47.25 -0.16,70.87 -6.42,0.2 -12.85,0.11 -19.27,0.06 -0.43,-23.61 0.08,-47.25 -0.25,-70.87 -11.82,-0.42 -23.67,0.04 -35.5,-0.21 -0.21,-6.43 -0.1,-12.87 -0.07,-19.31 z"
|
||||
id="path67"
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:1;fill:#55bce7" />
|
||||
<path
|
||||
d="m 576.79,260.09 c 6.35,-0.09 12.71,-0.16 19.06,0.05 0.28,23.58 -0.14,47.18 0.2,70.76 12.64,0.26 25.3,0.03 37.94,0.11 4.58,-0.11 9.19,0.28 13.75,-0.24 0.56,-5.92 0,-11.85 -0.15,-17.77 0.08,-11.01 -0.25,-22.03 0.15,-33.04 0.03,-6.61 -0.61,-13.26 0.06,-19.86 6.44,-0.11 12.89,-0.14 19.32,0.02 0.64,5.93 -0.23,11.91 0.16,17.86 -0.29,15 0.45,30.02 -0.25,45.02 -0.11,5.07 0.88,10.31 -0.75,15.24 -2.57,7.05 -9.65,12.46 -17.28,12.33 -18.27,0.04 -36.54,0.09 -54.81,-0.03 -9.65,-0.02 -17.99,-8.95 -17.64,-18.54 -0.07,-21.67 0.01,-43.34 -0.04,-65.01 0,-2.3 -0.15,-4.63 0.28,-6.9 z"
|
||||
id="path69"
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:1;fill:#55bce7" />
|
||||
<path
|
||||
d="m 696.38,260.28 c 2.85,-0.44 5.75,-0.22 8.63,-0.25 16.33,0.01 32.67,0 49.01,0 6.98,-0.2 13.4,4.43 16.51,10.49 1.63,3.22 1.7,6.93 1.75,10.46 0,20.34 -0.01,40.68 0.01,61.02 -0.06,2.85 0.27,5.77 -0.44,8.57 -6.21,0.06 -12.44,0.09 -18.64,-0.01 -1.09,-1.24 -0.55,-3.09 -0.71,-4.58 -0.03,-8.3 0.17,-16.61 -0.07,-24.91 -17.1,0.93 -34.23,-0.2 -51.33,0.25 -0.49,9.73 0.17,19.5 -0.31,29.24 -6.21,0.09 -12.43,0.08 -18.64,0.01 -0.92,-1.71 -0.54,-3.74 -0.6,-5.59 0.36,-7.99 0.19,-15.98 0.02,-23.97 0.03,-14.34 -0.05,-28.69 0.05,-43.04 -0.15,-8.44 6.54,-16.18 14.76,-17.69 m 4.65,19.42 c -0.13,7.35 -0.2,14.73 0.03,22.08 17.08,-0.12 34.17,-0.01 51.25,-0.02 0.41,-7.36 0.22,-14.76 0.09,-22.13 -17.12,-0.1 -34.26,-0.23 -51.37,0.07 z"
|
||||
id="path71"
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:1;fill:#55bce7" />
|
||||
<path
|
||||
d="m 787.13,259.98 c 6.33,-0.45 12.69,0.1 19.03,0.1 0.48,23.59 0.02,47.22 0.17,70.82 23.77,0.35 47.57,-0.17 71.34,0.25 0.04,6.46 0.15,12.94 -0.07,19.4 -30.13,0.11 -60.28,0.06 -90.41,0.02 -0.23,-2.19 -0.18,-4.39 -0.17,-6.57 0.09,-28.01 -0.15,-56.02 0.11,-84.02 z"
|
||||
id="path73"
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:1;fill:#55bce7" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 17 KiB |
141
src/images/rate_logos/betaflight.svg
Normal file
141
src/images/rate_logos/betaflight.svg
Normal file
|
@ -0,0 +1,141 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
id="Ebene_1"
|
||||
x="0px"
|
||||
y="0px"
|
||||
viewBox="-70 61.5 520.00001 119.99999"
|
||||
xml:space="preserve"
|
||||
sodipodi:docname="betaflight.svg"
|
||||
width="520"
|
||||
height="120"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"><metadata
|
||||
id="metadata4741"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs4739" /><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="745"
|
||||
id="namedview4737"
|
||||
showgrid="false"
|
||||
inkscape:pagecheckerboard="true"
|
||||
inkscape:zoom="2.3288462"
|
||||
inkscape:cx="260"
|
||||
inkscape:cy="60"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="Ebene_1" />
|
||||
<style
|
||||
type="text/css"
|
||||
id="style4702">
|
||||
.st0{fill:#FFBB00;}
|
||||
.st1{fill:#424242;}
|
||||
.st2{fill:#3A3A3A;}
|
||||
</style>
|
||||
<g
|
||||
id="g4734"
|
||||
transform="matrix(5.192108,0,0,5.192108,187.14434,-244.0279)">
|
||||
<g
|
||||
id="g4724">
|
||||
<path
|
||||
class="st0"
|
||||
d="m -19.5,70.1 h 4.1 c 2,0 2,1.1 1.7,1.9 -0.3,0.8 -0.8,1.2 -1.4,1.5 0.6,0.2 1,0.8 0.6,1.9 -0.5,1.5 -2.1,2.3 -3.4,2.3 h -4.2 z m 0.3,5.7 h 1.4 c 0.5,0 0.9,-0.1 1.2,-0.7 0.2,-0.4 0,-0.7 -0.6,-0.7 h -1.4 z m 1,-2.8 h 1.2 c 0.5,0 0.8,-0.1 1,-0.6 0.1,-0.4 -0.1,-0.5 -0.6,-0.5 h -1.2 z"
|
||||
id="path4704"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffbb00" />
|
||||
<path
|
||||
class="st0"
|
||||
d="m -11.6,70.1 h 6.2 L -6.1,72 H -10 l -0.3,0.9 h 3.5 l -0.6,1.8 h -3.5 l -0.3,0.9 h 4 l -0.7,1.9 h -6.3 z"
|
||||
id="path4706"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffbb00" />
|
||||
<path
|
||||
class="st0"
|
||||
d="m -3.2,72 h -2.1 l 0.7,-1.9 H 1.9 L 1.2,72 h -2.1 l -2,5.6 h -2.3 z"
|
||||
id="path4708"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffbb00" />
|
||||
<path
|
||||
class="st0"
|
||||
d="m 4,70.1 h 2.3 l 0.1,7.5 H 3.9 L 4,76.5 H 1.6 l -0.7,1.1 h -2.3 z m 0.1,4.8 0.1,-2.3 v 0 l -1.5,2.3 z"
|
||||
id="path4710"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffbb00" />
|
||||
<path
|
||||
class="st1"
|
||||
d="m 9.6,70.1 h 5.8 L 14.7,72 h -3.5 l -0.3,0.9 h 3 l -0.6,1.8 h -3 l -1,2.9 H 7 Z"
|
||||
id="path4712"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#424242" />
|
||||
<path
|
||||
class="st1"
|
||||
d="m 16.3,70.1 h 2.3 l -2,5.6 h 3.3 l -0.7,1.9 h -5.6 z"
|
||||
id="path4714"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#424242" />
|
||||
<path
|
||||
class="st1"
|
||||
d="M 22.7,70.1 H 25 l -2.7,7.5 H 20 Z"
|
||||
id="path4716"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#424242" />
|
||||
<path
|
||||
class="st1"
|
||||
d="m 29.4,76.8 c -0.7,0.7 -1.6,0.9 -2.5,0.9 -2.2,0 -3,-1.7 -2.2,-3.8 1,-2.9 3.4,-4 5.1,-4 1.9,0 2.7,1 2.5,2.8 h -2.2 c 0.1,-0.5 -0.2,-0.9 -0.8,-0.9 -1.6,0 -2.1,1.7 -2.3,2.2 -0.2,0.7 -0.4,1.9 1,1.9 0.5,0 1.2,-0.3 1.5,-0.8 h -1 l 0.6,-1.6 h 3.1 l -1.5,4.1 h -1.5 z"
|
||||
id="path4718"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#424242" />
|
||||
<path
|
||||
class="st1"
|
||||
d="m 34.6,70.1 h 2.3 L 36,72.7 h 2.2 l 0.9,-2.6 h 2.3 l -2.7,7.5 h -2.3 l 1.1,-3 h -2.2 l -1.1,3 h -2.3 z"
|
||||
id="path4720"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#424242" />
|
||||
<path
|
||||
class="st1"
|
||||
d="m 43.6,72 h -2.1 l 0.7,-1.9 h 6.5 L 48,72 h -2.1 l -2,5.6 h -2.3 z"
|
||||
id="path4722"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#424242" />
|
||||
</g>
|
||||
<g
|
||||
id="g4732">
|
||||
<path
|
||||
class="st0"
|
||||
d="m -36.4,73.5 c 0,0 -2.5,1.2 -1.7,3.5 0.9,2.6 5.3,2.3 7.9,1.2 2.2,-0.9 0.4,-1.6 0.4,-1.6 l -2.3,-1.3 -3.4,-2.1 z"
|
||||
id="path4726"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffbb00" />
|
||||
<path
|
||||
class="st2"
|
||||
d="m -30.3,75.5 c -1.7,-0.7 -2.9,-1.7 -4,-2.2 0.6,-0.3 1.2,-0.7 1.6,-1 0.4,-0.4 0.5,-0.8 0.5,-1.3 1.2,0.8 2.7,0.9 3.5,0.9 0.8,0 1.5,0.2 1.7,0.6 0,0 0.2,-4.2 -8.4,-7 0,0 2.6,1.2 3.4,2.1 0,0 -0.9,-0.1 -1.3,0.5 -0.2,0.3 -0.2,0.8 -0.1,1.3 -0.1,0 -0.3,0 -0.5,-0.1 l -13.7,-7.6 1.4,3.1 -1.4,-0.5 0.4,0.8 c 0,0 0.6,1.1 1.9,3.4 1,1.8 2.9,2.7 5.4,2.6 0.1,0 0.2,0 0.3,0 0.6,0 1.6,-0.1 2.5,-0.2 -0.1,0.3 -0.1,0.7 0,1.2 0.1,0.6 0.3,0.9 0.6,1.2 -0.7,0.3 -1.4,1 -1.7,1.8 0,0 0,0 0,0 0,0 0,0 0,0.1 0,0 0,0 0,0 -0.2,0.5 -0.3,1.1 0,1.8 0,0 0,0 0,0 0,0.1 0.1,0.3 0.2,0.4 0.1,0.1 0.2,0.3 0.3,0.4 1.5,1.8 5.3,1.5 7.6,0.5 0,0 0.1,0 0.1,0 0.2,-0.1 0.4,-0.2 0.6,-0.3 0,0 0.1,0 0.1,-0.1 0.2,-0.1 0.4,-0.2 0.6,-0.3 2.3,-1.4 3.1,-2.9 3.1,-2.9 0,0 -2.5,1.8 -4.7,0.8 z m 0.6,-6.2 c 0.7,0.3 1.7,1.9 1.7,1.9 -0.8,-0.1 -2.5,-0.7 -2.7,-1.3 -0.2,-0.6 0.3,-0.9 1,-0.6 z m -10.4,1.2 c -0.9,0 -1.7,-0.1 -2.4,-0.3 -1,-0.4 -1.8,-1 -2.3,-2 -0.7,-1.2 -1.2,-2 -1.5,-2.6 l 1.2,0.4 -1.2,-2.7 10.8,6 c -0.3,0 -0.6,0.1 -0.9,0.3 l -6.9,-2.8 6,3.4 c -1.1,0.2 -2.2,0.3 -2.8,0.3 z m 2,6.2 c -0.1,-0.5 -0.1,-0.9 0,-1.3 0.6,0.4 1.6,0.7 2.9,0.2 0.1,-0.1 -0.9,1.1 -2.9,1.1 z m 3.2,2.2 c -0.4,-0.1 -0.9,-0.2 -1.3,-0.3 -0.2,-0.1 -0.4,-0.2 -0.6,-0.3 0.9,-0.2 2,-0.7 3,-1.9 0,0 -0.1,1.3 -1.1,2.5 z m 3,-0.3 c -0.2,0.1 -0.5,0.1 -0.7,0.2 0.4,-0.3 0.8,-0.7 0.8,-1.4 0,0 0.2,0.8 -0.1,1.2 z m 3.2,-1.5 c -0.1,-0.3 -0.2,-0.9 -0.2,-0.9 0.7,0.1 1.6,-0.2 1.6,-0.2 -0.6,0.6 -1.4,1.1 -1.4,1.1 z"
|
||||
id="path4728"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#3a3a3a" />
|
||||
<path
|
||||
class="st0"
|
||||
d="m -34.1,69.8 c 0,0 -2.5,-0.6 -2.9,1.3 -0.1,0.8 0.2,1.5 0.6,1.8 0.2,-0.1 0.5,-0.2 1,-0.2 -0.1,0 -0.3,-0.3 -0.4,-0.6 0.2,0 0.4,0.1 0.6,0 0,0 -0.6,-0.2 -0.8,-0.9 0,0 0,0 0,0 0.1,0.1 0.2,0.1 0.3,0.1 0,0 -0.5,-0.4 -0.1,-0.9 0.3,-0.3 0.8,-0.6 1.7,-0.6 z"
|
||||
id="path4730"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffbb00" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.1 KiB |
85
src/images/rate_logos/kiss.svg
Normal file
85
src/images/rate_logos/kiss.svg
Normal file
|
@ -0,0 +1,85 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="520"
|
||||
height="120"
|
||||
viewBox="0 0 137.58333 31.75"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="kiss.svg">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.8307692"
|
||||
inkscape:cx="156.4916"
|
||||
inkscape:cy="-5.5462185"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:pagecheckerboard="true"
|
||||
units="px"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="745"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Livello 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-265.25)">
|
||||
<g
|
||||
aria-label="KISS"
|
||||
transform="matrix(0.11316463,0,0,0.08777538,-46.578526,266.05819)"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
id="flowRoot815">
|
||||
<path
|
||||
d="m 786.67742,82.784613 v 72.395827 h 15.88541 l 59.11458,-72.395827 h 41.92709 l -71.74479,86.328117 79.29687,91.40625 h -43.22917 l -65.10416,-76.95312 h -16.14583 v 76.95312 H 752.95346 V 82.784613 Z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:266.66665649px;font-family:Eurostile;-inkscape-font-specification:Eurostile;text-align:center;text-anchor:middle"
|
||||
id="path832"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="M 958.55242,82.784613 V 260.51898 H 924.82846 V 82.784613 Z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:266.66665649px;font-family:Eurostile;-inkscape-font-specification:Eurostile;text-align:center;text-anchor:middle"
|
||||
id="path834"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 1121.8337,134.60753 h -32.9428 q -0.2604,-2.47396 -0.2604,-3.64584 -1.1718,-14.97395 -6.6406,-18.74999 -5.4687,-3.90625 -25.7812,-3.90625 -23.9584,0 -31.3803,4.42708 -7.2916,4.42708 -7.2916,18.61979 0,16.79687 5.9896,20.18229 5.9895,3.38542 39.5833,5.20833 39.7135,2.21355 51.3021,11.32813 11.7187,9.11458 11.7187,37.89062 0,35.41667 -13.6718,45.83333 -13.6719,10.28646 -60.2865,10.28646 -41.9271,0 -55.72917,-10.15625 -13.67187,-10.15625 -13.67187,-41.14583 l -0.13021,-6.51042 h 32.81245 l 0.1303,3.77604 q 0,18.6198 6.5104,22.78646 6.5104,4.16667 35.5468,4.16667 22.6563,0 28.9063,-4.81771 6.25,-4.81771 6.25,-22.26562 0,-12.89063 -4.8177,-17.05729 -4.6875,-4.29688 -20.4427,-5.20834 l -18.6198,-1.17187 q -42.1875,-2.47396 -53.90626,-11.71875 -11.71875,-9.24479 -11.71875,-39.71354 0,-31.11979 14.0625,-41.406251 14.19271,-10.416666 56.51041,-10.416666 40.1042,0 54.0365,9.505208 13.9323,9.505209 13.9323,37.109369 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:266.66665649px;font-family:Eurostile;-inkscape-font-specification:Eurostile;text-align:center;text-anchor:middle"
|
||||
id="path836"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 1281.7295,134.60753 h -32.9427 q -0.2604,-2.47396 -0.2604,-3.64584 -1.1719,-14.97395 -6.6407,-18.74999 -5.4687,-3.90625 -25.7812,-3.90625 -23.9583,0 -31.3802,4.42708 -7.2917,4.42708 -7.2917,18.61979 0,16.79687 5.9896,20.18229 5.9896,3.38542 39.5833,5.20833 39.7136,2.21355 51.3021,11.32813 11.7188,9.11458 11.7188,37.89062 0,35.41667 -13.6719,45.83333 -13.6719,10.28646 -60.2865,10.28646 -41.927,0 -55.7291,-10.15625 -13.6719,-10.15625 -13.6719,-41.14583 l -0.1302,-6.51042 h 32.8125 l 0.1302,3.77604 q 0,18.6198 6.5104,22.78646 6.5104,4.16667 35.5469,4.16667 22.6562,0 28.9062,-4.81771 6.25,-4.81771 6.25,-22.26562 0,-12.89063 -4.8177,-17.05729 -4.6875,-4.29688 -20.4427,-5.20834 l -18.6198,-1.17187 q -42.1875,-2.47396 -53.9062,-11.71875 -11.7188,-9.24479 -11.7188,-39.71354 0,-31.11979 14.0625,-41.406251 14.1927,-10.416666 56.5104,-10.416666 40.1042,0 54.0365,9.505208 13.9323,9.505209 13.9323,37.109369 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:266.66665649px;font-family:Eurostile;-inkscape-font-specification:Eurostile;text-align:center;text-anchor:middle"
|
||||
id="path838"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.2 KiB |
87
src/images/rate_logos/quickrates.svg
Normal file
87
src/images/rate_logos/quickrates.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 14 KiB |
71
src/images/rate_logos/raceflight.svg
Normal file
71
src/images/rate_logos/raceflight.svg
Normal file
|
@ -0,0 +1,71 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="520"
|
||||
height="120"
|
||||
viewBox="0 0 137.58333 31.750001"
|
||||
version="1.1"
|
||||
id="svg7771"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="raceflight.svg">
|
||||
<defs
|
||||
id="defs7765" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.6730769"
|
||||
inkscape:cx="56.183903"
|
||||
inkscape:cy="60"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:pagecheckerboard="true"
|
||||
units="px"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="745"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7768">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Livello 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-265.24998)">
|
||||
<path
|
||||
id="FLIGHT_EXPAND_2_"
|
||||
stroke-miterlimit="10"
|
||||
d="m 77.347858,275.59724 -2.73443,2.87532 h -6.81962 l -0.24989,1.43766 h 8.40317 l -2.56749,2.69358 h -6.31921 l -0.71695,4.04892 h -3.46806 l 1.98413,-11.05569 h 12.48835 z m 10.09759,8.56865 -2.40721,2.48725 h -8.62222 l 1.73612,-9.67368 h 3.00537 l -1.28385,7.18643 z m 3.61791,2.48704 h -3.01996 l 1.73611,-9.67367 h 3.00538 z m 8.986732,-6.0443 h 6.24418 l -1.0796,6.0443 h -6.696442 c -0.75885,0 -1.45162,-0.10859 -2.07917,-0.32555 -0.62733,-0.21675 -1.16234,-0.51562 -1.60481,-0.89661 -0.44268,-0.38057 -0.78552,-0.83137 -1.02854,-1.35179 -0.24322,-0.52063 -0.36473,-1.0846 -0.36473,-1.69193 0,-0.79032 0.17987,-1.51832 0.5398,-2.18358 0.35994,-0.66527 0.84638,-1.23633 1.45892,-1.7134 0.61275,-0.47727 1.33262,-0.84826 2.1592,-1.11336 0.82658,-0.2649 1.70673,-0.39766 2.640652,-0.39766 h 6.98822 l -2.40722,2.51601 h -5.033272 c -0.44747,0 -0.87306,0.0675 -1.27655,0.20237 -0.40392,0.13505 -0.75635,0.32305 -1.05772,0.56398 -0.30158,0.24113 -0.5423,0.52542 -0.72216,0.85305 -0.18008,0.32784 -0.26991,0.68465 -0.26991,1.07001 0,0.60733 0.22614,1.0894 0.6784,1.446 0.45227,0.35681 1.05772,0.535 1.81636,0.535 h 3.705652 l 0.24781,-1.40264 h -5.062452 z m 18.74711,6.0443 h -3.00537 l 0.67111,-3.73066 h -5.82109 l -0.65651,3.73066 h -3.03456 l 1.73612,-9.67367 h 3.01996 l -0.62754,3.427 h 5.82129 l 0.61254,-3.427 h 3.01996 z m 15.71256,-9.67367 -2.4218,2.51601 h -3.47223 l -1.28385,7.15766 h -3.01975 l 1.26926,-7.15766 h -4.58101 l 2.42181,-2.51601 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000001;stroke-width:0.41671875;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="RACE_EXPAND_2_"
|
||||
stroke-miterlimit="10"
|
||||
d="m 18.812898,286.65272 h -4.61852 l -1.96724,-2.92513 H 6.9250078 l -0.51667,2.92513 h -3.4518 l 1.0004,-5.65164 h 9.7041102 c 0.28886,0 0.56397,-0.0331 0.82533,-0.0992 0.26114,-0.0661 0.48915,-0.15965 0.6836,-0.28095 0.19446,-0.12109 0.35014,-0.27282 0.46686,-0.45456 0.11671,-0.18174 0.17507,-0.38265 0.17507,-0.60315 0,-0.36369 -0.15027,-0.6363 -0.45018,-0.81804 -0.30012,-0.18195 -0.71696,-0.27282 -1.2505,-0.27282 H 4.4071178 l 2.76778,-2.87532 h 7.1695402 c 0.57774,0 1.16964,0.0496 1.77572,0.1486 0.60566,0.0992 1.15609,0.27845 1.65066,0.53709 0.49457,0.25906 0.89765,0.60316 1.20902,1.03292 0.31096,0.42975 0.46665,0.97497 0.46665,1.63607 0,0.49562 -0.0861,0.96956 -0.25823,1.4212 -0.17257,0.45184 -0.41683,0.8593 -0.73383,1.22299 -0.3168,0.36348 -0.69778,0.67214 -1.14192,0.92537 -0.44476,0.25364 -0.93371,0.42975 -1.46726,0.52896 0.15548,0.14339 0.33055,0.32513 0.52522,0.54522 0.19445,0.2205 0.44726,0.52354 0.75863,0.90891 z m 5.23127,0 2.27591,-2.48704 h 2.4364 c 0.30137,0 0.60774,0 0.91912,0 0.31116,0 0.58356,0.01 0.81699,0.029 -0.10713,-0.17361 -0.22863,-0.39286 -0.36473,-0.65797 -0.1363,-0.2649 -0.2626,-0.51333 -0.37932,-0.74467 l -1.29823,-2.55937 -5.71896,6.42008 h -3.57435 l 7.82001,-8.7483 c 0.25281,-0.27949 0.55439,-0.53001 0.90453,-0.75176 0.35035,-0.22155 0.76343,-0.33264 1.24008,-0.33264 0.45706,0 0.81929,0.1038 1.0869,0.31096 0.2674,0.20738 0.48373,0.46519 0.64922,0.77344 l 4.53744,8.7483 z m 23.78038,-2.48683 -2.37804,2.48704 h -4.90197 c -0.75885,0 -1.45162,-0.10859 -2.07917,-0.32555 -0.62733,-0.21675 -1.16234,-0.51541 -1.60481,-0.8964 -0.44268,-0.38057 -0.78552,-0.83158 -1.02853,-1.352 -0.24323,-0.52063 -0.36473,-1.08439 -0.36473,-1.69172 0,-0.79032 0.17986,-1.51832 0.5398,-2.18359 0.35993,-0.66526 0.84638,-1.23633 1.45891,-1.71339 0.61275,-0.47728 1.33262,-0.84826 2.1592,-1.11337 0.82659,-0.26489 1.70673,-0.39765 2.64065,-0.39765 h 6.84233 l -2.39263,2.51601 h -4.90197 c -0.44747,0 -0.87306,0.0675 -1.27655,0.20237 -0.40391,0.13505 -0.75635,0.32304 -1.05772,0.56397 -0.30158,0.24114 -0.5398,0.52292 -0.71487,0.84597 -0.17507,0.32305 -0.26281,0.67735 -0.26281,1.06272 0,0.29908 0.0607,0.57127 0.18236,0.81699 0.12151,0.24593 0.29179,0.4556 0.51063,0.629 0.21883,0.17341 0.47894,0.30867 0.78052,0.40496 0.30137,0.0965 0.63692,0.14464 1.00665,0.14464 z m 12.40081,0 -2.39263,2.48704 h -9.39544 l 1.73612,-9.67367 h 11.29203 l -2.40722,2.51601 h -6.31712 l -0.20425,1.15671 h 7.71769 l -2.10085,2.19796 h -6.01074 l -0.23343,1.31595 z"
|
||||
style="fill:#de1b14;fill-opacity:1;stroke:#000000;stroke-width:0.417;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6 KiB |
|
@ -56,7 +56,7 @@ var RateCurve = function (useLegacyCurve) {
|
|||
context.moveTo(0, height);
|
||||
context.quadraticCurveTo(width * 11 / 20, height - ((rateY / 2) * (1 - rcExpo)), width, height - rateY);
|
||||
context.stroke();
|
||||
}
|
||||
};
|
||||
|
||||
this.drawStickPosition = function (rcData, rate, rcRate, rcExpo, superExpoActive, deadband, limit, maxAngularVel, context, stickColor) {
|
||||
|
||||
|
@ -76,20 +76,15 @@ var RateCurve = function (useLegacyCurve) {
|
|||
context.restore();
|
||||
}
|
||||
return (Math.abs(currentValue)<0.5)?0:currentValue.toFixed(0); // The calculated value in deg/s is returned from the function call for further processing.
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
this.getBetaflightRates = function (rcCommandf, rcCommandfAbs, rate, rcRate, rcExpo, superExpoActive, limit) {
|
||||
let angularVel;
|
||||
|
||||
RateCurve.prototype.rcCommandRawToDegreesPerSecond = function (rcData, rate, rcRate, rcExpo, superExpoActive, deadband, limit) {
|
||||
var angleRate;
|
||||
if (rate !== undefined && rcRate !== undefined && rcExpo !== undefined) {
|
||||
if (rcRate > 2) {
|
||||
rcRate = rcRate + (rcRate - 2) * 14.54;
|
||||
}
|
||||
|
||||
var maxRc = 500 * rcRate;
|
||||
var rcCommandf = this.rcCommand(rcData, rcRate, deadband) / maxRc;
|
||||
var rcCommandfAbs = Math.abs(rcCommandf);
|
||||
var expoPower;
|
||||
var rcRateConstant;
|
||||
|
||||
|
@ -107,13 +102,90 @@ RateCurve.prototype.rcCommandRawToDegreesPerSecond = function (rcData, rate, rcR
|
|||
|
||||
if (superExpoActive) {
|
||||
var rcFactor = 1 / this.constrain(1 - rcCommandfAbs * rate, 0.01, 1);
|
||||
angleRate = rcRateConstant * rcRate * rcCommandf; // 200 should be variable checked on version (older versions it's 205,9)
|
||||
angleRate = angleRate * rcFactor;
|
||||
angularVel = rcRateConstant * rcRate * rcCommandf; // 200 should be variable checked on version (older versions it's 205,9)
|
||||
angularVel = angularVel * rcFactor;
|
||||
} else {
|
||||
angleRate = (((rate * 100) + 27) * rcCommandf / 16) / 4.1; // Only applies to old versions ?
|
||||
angularVel = (((rate * 100) + 27) * rcCommandf / 16) / 4.1; // Only applies to old versions ?
|
||||
}
|
||||
|
||||
angleRate = this.constrain(angleRate, -1 * limit, limit); // Rate limit from profile
|
||||
angularVel = this.constrain(angularVel, -1 * limit, limit); // Rate limit from profile
|
||||
|
||||
return angularVel;
|
||||
};
|
||||
|
||||
this.getRaceflightRates = function (rcCommandf, rate, rcRate, rcExpo) {
|
||||
let angularVel = ((1 + 0.01 * rcExpo * (rcCommandf * rcCommandf - 1.0)) * rcCommandf);
|
||||
angularVel = (angularVel * (rcRate + (Math.abs(angularVel) * rcRate * rate * 0.01)));
|
||||
return angularVel;
|
||||
};
|
||||
|
||||
this.getKISSRates = function (rcCommandf, rcCommandfAbs, rate, rcRate, rcExpo) {
|
||||
const kissRpy = 1 - rcCommandfAbs * rate;
|
||||
const kissTempCurve = rcCommandf * rcCommandf;
|
||||
rcCommandf = ((rcCommandf * kissTempCurve) * rcExpo + rcCommandf * (1 - rcExpo)) * (rcRate / 10);
|
||||
return ((2000.0 * (1.0 / kissRpy)) * rcCommandf);
|
||||
};
|
||||
|
||||
this.getActualRates = function (rcCommandf, rcCommandfAbs, rate, rcRate, rcExpo) {
|
||||
let angularVel;
|
||||
const expof = rcCommandfAbs * ((Math.pow(rcCommandf, 5) * rcExpo) + (rcCommandf * (1 - rcExpo)));
|
||||
|
||||
angularVel = Math.max(0, rate-rcRate);
|
||||
angularVel = (rcCommandf * rcRate) + (angularVel * expof);
|
||||
|
||||
return angularVel;
|
||||
};
|
||||
|
||||
this.getQuickRates = function (rcCommandf, rcCommandfAbs, rate, rcRate, rcExpo) {
|
||||
rcRate = rcRate * 200;
|
||||
rate = Math.max(rate, rcRate);
|
||||
|
||||
let angularVel;
|
||||
const superExpoConfig = (((rate / rcRate) - 1) / (rate / rcRate));
|
||||
const curve = Math.pow(rcCommandfAbs, 3) * rcExpo + rcCommandfAbs * (1 - rcExpo);
|
||||
|
||||
angularVel = 1.0 / (1.0 - (curve * superExpoConfig));
|
||||
angularVel = rcCommandf * rcRate * angularVel;
|
||||
|
||||
return angularVel;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
RateCurve.prototype.rcCommandRawToDegreesPerSecond = function (rcData, rate, rcRate, rcExpo, superExpoActive, deadband, limit) {
|
||||
var angleRate;
|
||||
|
||||
if (rate !== undefined && rcRate !== undefined && rcExpo !== undefined) {
|
||||
const rcCommandf = this.rcCommand(rcData, 1, deadband) / 500;
|
||||
var rcCommandfAbs = Math.abs(rcCommandf);
|
||||
|
||||
switch(TABS.pid_tuning.currentRatesType) {
|
||||
case TABS.pid_tuning.RATES_TYPE.RACEFLIGHT:
|
||||
angleRate=this.getRaceflightRates(rcCommandf, rate, rcRate, rcExpo);
|
||||
|
||||
break;
|
||||
|
||||
case TABS.pid_tuning.RATES_TYPE.KISS:
|
||||
angleRate=this.getKISSRates(rcCommandf, rcCommandfAbs, rate, rcRate, rcExpo);
|
||||
|
||||
break;
|
||||
|
||||
case TABS.pid_tuning.RATES_TYPE.ACTUAL:
|
||||
angleRate=this.getActualRates(rcCommandf, rcCommandfAbs, rate, rcRate, rcExpo);
|
||||
|
||||
break;
|
||||
|
||||
case TABS.pid_tuning.RATES_TYPE.QUICKRATES:
|
||||
angleRate=this.getQuickRates(rcCommandf, rcCommandfAbs, rate, rcRate, rcExpo);
|
||||
|
||||
break;
|
||||
|
||||
// add future rates types here
|
||||
default: // BetaFlight
|
||||
angleRate=this.getBetaflightRates(rcCommandf, rcCommandfAbs, rate, rcRate, rcExpo, superExpoActive, limit);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return angleRate;
|
||||
|
|
|
@ -357,6 +357,9 @@ MspHelper.prototype.process_data = function(dataHandler) {
|
|||
RC_tuning.pitch_rate_limit = data.readU16();
|
||||
RC_tuning.yaw_rate_limit = data.readU16();
|
||||
}
|
||||
if (semver.gte(CONFIG.apiVersion, "1.43.0")) {
|
||||
RC_tuning.rates_type = data.readU8();
|
||||
}
|
||||
break;
|
||||
case MSPCodes.MSP_PID:
|
||||
// PID data arrived, we need to scale it and save to appropriate bank / array
|
||||
|
@ -1689,6 +1692,9 @@ MspHelper.prototype.crunch = function(code) {
|
|||
buffer.push16(RC_tuning.pitch_rate_limit);
|
||||
buffer.push16(RC_tuning.yaw_rate_limit);
|
||||
}
|
||||
if (semver.gte(CONFIG.apiVersion, "1.43.0")) {
|
||||
buffer.push8(RC_tuning.rates_type);
|
||||
}
|
||||
break;
|
||||
case MSPCodes.MSP_SET_RX_MAP:
|
||||
for (let i = 0; i < RC_MAP.length; i++) {
|
||||
|
|
|
@ -7,6 +7,14 @@ TABS.pid_tuning = {
|
|||
dirty: false,
|
||||
currentProfile: null,
|
||||
currentRateProfile: null,
|
||||
currentRatesType: null,
|
||||
RATES_TYPE: {
|
||||
BETAFLIGHT: 0,
|
||||
RACEFLIGHT: 1,
|
||||
KISS: 2,
|
||||
ACTUAL: 3,
|
||||
QUICKRATES: 4,
|
||||
},
|
||||
SETPOINT_WEIGHT_RANGE_LOW: 2.55,
|
||||
SETPOINT_WEIGHT_RANGE_HIGH: 20,
|
||||
SETPOINT_WEIGHT_RANGE_LEGACY: 2.54,
|
||||
|
@ -399,6 +407,29 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
$('.idleMinRpm').hide();
|
||||
}
|
||||
|
||||
if (semver.gte(CONFIG.apiVersion, "1.43.0")) {
|
||||
const ratesTypeListElement = $('select[id="ratesType"]'); // generates list
|
||||
const ratesList = [
|
||||
{name: "Betaflight"},
|
||||
{name: "Raceflight"},
|
||||
{name: "KISS"},
|
||||
{name: "Actual"},
|
||||
{name: "QuickRates"},
|
||||
];
|
||||
// add future rates types here with CONFIG.apiVersion check
|
||||
for (let i = 0; i < ratesList.length; i++) {
|
||||
ratesTypeListElement.append(`<option value="${i}">${ratesList[i].name}</option>`);
|
||||
}
|
||||
|
||||
self.currentRatesType = RC_tuning.rates_type;
|
||||
ratesTypeListElement.val(self.currentRatesType);
|
||||
|
||||
self.changeRatesType(self.currentRatesType); // update rate type code when updating the tab
|
||||
|
||||
} else {
|
||||
$('.rates_type').hide();
|
||||
}
|
||||
|
||||
$('input[id="useIntegratedYaw"]').change(function() {
|
||||
var checked = $(this).is(':checked');
|
||||
$('#pidTuningIntegratedYawCaution').toggle(checked);
|
||||
|
@ -649,16 +680,65 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
});
|
||||
|
||||
// catch RC_tuning changes
|
||||
RC_tuning.RC_RATE = parseFloat($('.pid_tuning input[name="rc_rate"]').val());
|
||||
const pitch_rate_e = $('.pid_tuning input[name="pitch_rate"]');
|
||||
const roll_rate_e = $('.pid_tuning input[name="roll_rate"]');
|
||||
const yaw_rate_e = $('.pid_tuning input[name="yaw_rate"]');
|
||||
const rc_rate_pitch_e = $('.pid_tuning input[name="rc_rate_pitch"]');
|
||||
const rc_rate_e = $('.pid_tuning input[name="rc_rate"]');
|
||||
const rc_rate_yaw_e = $('.pid_tuning input[name="rc_rate_yaw"]');
|
||||
const rc_pitch_expo_e = $('.pid_tuning input[name="rc_pitch_expo"]');
|
||||
const rc_expo_e = $('.pid_tuning input[name="rc_expo"]');
|
||||
const rc_yaw_expo_e = $('.pid_tuning input[name="rc_yaw_expo"]');
|
||||
|
||||
RC_tuning.roll_pitch_rate = parseFloat($('.pid_tuning input[name="roll_pitch_rate"]').val());
|
||||
RC_tuning.roll_rate = parseFloat($('.pid_tuning input[name="roll_rate"]').val());
|
||||
RC_tuning.pitch_rate = parseFloat($('.pid_tuning input[name="pitch_rate"]').val());
|
||||
RC_tuning.yaw_rate = parseFloat($('.pid_tuning input[name="yaw_rate"]').val());
|
||||
RC_tuning.RC_EXPO = parseFloat($('.pid_tuning input[name="rc_expo"]').val());
|
||||
RC_tuning.RC_YAW_EXPO = parseFloat($('.pid_tuning input[name="rc_yaw_expo"]').val());
|
||||
RC_tuning.rcYawRate = parseFloat($('.pid_tuning input[name="rc_rate_yaw"]').val());
|
||||
RC_tuning.rcPitchRate = parseFloat($('.pid_tuning input[name="rc_rate_pitch"]').val());
|
||||
RC_tuning.RC_PITCH_EXPO = parseFloat($('.pid_tuning input[name="rc_pitch_expo"]').val());
|
||||
RC_tuning.RC_RATE = parseFloat(rc_rate_e.val());
|
||||
RC_tuning.roll_rate = parseFloat(roll_rate_e.val());
|
||||
RC_tuning.pitch_rate = parseFloat(pitch_rate_e.val());
|
||||
RC_tuning.yaw_rate = parseFloat(yaw_rate_e.val());
|
||||
RC_tuning.RC_EXPO = parseFloat(rc_expo_e.val());
|
||||
RC_tuning.RC_YAW_EXPO = parseFloat(rc_yaw_expo_e.val());
|
||||
RC_tuning.rcYawRate = parseFloat(rc_rate_yaw_e.val());
|
||||
RC_tuning.rcPitchRate = parseFloat(rc_rate_pitch_e.val());
|
||||
RC_tuning.RC_PITCH_EXPO = parseFloat(rc_pitch_expo_e.val());
|
||||
|
||||
if (semver.gte(CONFIG.apiVersion, "1.43.0")) {
|
||||
switch(self.currentRatesType) {
|
||||
case self.RATES_TYPE.RACEFLIGHT:
|
||||
RC_tuning.pitch_rate = parseFloat(pitch_rate_e.val()) / 100;
|
||||
RC_tuning.roll_rate = parseFloat(roll_rate_e.val()) / 100;
|
||||
RC_tuning.yaw_rate = parseFloat(yaw_rate_e.val()) / 100;
|
||||
RC_tuning.rcPitchRate = parseFloat(rc_rate_pitch_e.val()) / 1000;
|
||||
RC_tuning.RC_RATE = parseFloat(rc_rate_e.val()) / 1000;
|
||||
RC_tuning.rcYawRate = parseFloat(rc_rate_yaw_e.val()) / 1000;
|
||||
RC_tuning.RC_PITCH_EXPO = parseFloat(rc_pitch_expo_e.val()) / 100;
|
||||
RC_tuning.RC_EXPO = parseFloat(rc_expo_e.val()) / 100;
|
||||
RC_tuning.RC_YAW_EXPO = parseFloat(rc_yaw_expo_e.val()) / 100;
|
||||
|
||||
break;
|
||||
|
||||
case self.RATES_TYPE.ACTUAL:
|
||||
RC_tuning.pitch_rate = parseFloat(pitch_rate_e.val()) / 1000;
|
||||
RC_tuning.roll_rate = parseFloat(roll_rate_e.val()) / 1000;
|
||||
RC_tuning.yaw_rate = parseFloat(yaw_rate_e.val()) / 1000;
|
||||
RC_tuning.rcPitchRate = parseFloat(rc_rate_pitch_e.val()) / 1000;
|
||||
RC_tuning.RC_RATE = parseFloat(rc_rate_e.val()) / 1000;
|
||||
RC_tuning.rcYawRate = parseFloat(rc_rate_yaw_e.val()) / 1000;
|
||||
|
||||
break;
|
||||
|
||||
case self.RATES_TYPE.QUICKRATES:
|
||||
RC_tuning.pitch_rate = parseFloat(pitch_rate_e.val()) / 1000;
|
||||
RC_tuning.roll_rate = parseFloat(roll_rate_e.val()) / 1000;
|
||||
RC_tuning.yaw_rate = parseFloat(yaw_rate_e.val()) / 1000;
|
||||
|
||||
break;
|
||||
|
||||
// add future rates types here
|
||||
default: // BetaFlight
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
RC_tuning.throttle_MID = parseFloat($('.throttle input[name="mid"]').val());
|
||||
RC_tuning.throttle_EXPO = parseFloat($('.throttle input[name="expo"]').val());
|
||||
|
@ -779,6 +859,15 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
ADVANCED_TUNING.motorOutputLimit = parseInt($('.pid_tuning input[name="motorLimit"]').val());
|
||||
ADVANCED_TUNING.autoProfileCellCount = parseInt($('.pid_tuning input[name="cellCount"]').val());
|
||||
ADVANCED_TUNING.idleMinRpm = parseInt($('input[name="idleMinRpm-number"]').val());
|
||||
|
||||
const selectedRatesType = $('select[id="ratesType"]').val(); // send analytics for rates type
|
||||
let selectedRatesTypeName = null;
|
||||
if (selectedRatesType !== RC_tuning.rates_type) {
|
||||
selectedRatesTypeName = $('select[id="ratesType"]').find('option:selected').text();
|
||||
}
|
||||
self.analyticsChanges['RatesType'] = selectedRatesTypeName;
|
||||
|
||||
RC_tuning.rates_type = selectedRatesType;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -941,6 +1030,45 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
self.currentRates.rc_expo_pitch = self.currentRates.rc_expo;
|
||||
}
|
||||
|
||||
if (semver.gte(CONFIG.apiVersion, "1.43.0")) {
|
||||
switch(RC_tuning.rates_type) {
|
||||
case self.RATES_TYPE.RACEFLIGHT:
|
||||
self.currentRates.roll_rate *= 100;
|
||||
self.currentRates.pitch_rate *= 100;
|
||||
self.currentRates.yaw_rate *= 100;
|
||||
self.currentRates.rc_rate *= 1000;
|
||||
self.currentRates.rc_rate_yaw *= 1000;
|
||||
self.currentRates.rc_rate_pitch *= 1000;
|
||||
self.currentRates.rc_expo *= 100;
|
||||
self.currentRates.rc_yaw_expo *= 100;
|
||||
self.currentRates.rc_pitch_expo *= 100;
|
||||
|
||||
break;
|
||||
|
||||
case self.RATES_TYPE.ACTUAL:
|
||||
self.currentRates.roll_rate *= 1000;
|
||||
self.currentRates.pitch_rate *= 1000;
|
||||
self.currentRates.yaw_rate *= 1000;
|
||||
self.currentRates.rc_rate *= 1000;
|
||||
self.currentRates.rc_rate_yaw *= 1000;
|
||||
self.currentRates.rc_rate_pitch *= 1000;
|
||||
|
||||
break;
|
||||
|
||||
case self.RATES_TYPE.QUICKRATES:
|
||||
self.currentRates.roll_rate *= 1000;
|
||||
self.currentRates.pitch_rate *= 1000;
|
||||
self.currentRates.yaw_rate *= 1000;
|
||||
|
||||
break;
|
||||
|
||||
// add future rates types here
|
||||
default: // BetaFlight
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$('.tab-pid_tuning .tab-container .pid').on('click', () => activateSubtab('pid'));
|
||||
|
||||
$('.tab-pid_tuning .tab-container .rates').on('click', () => activateSubtab('rates'));
|
||||
|
@ -1265,6 +1393,11 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
targetValue = checkInput(targetElement);
|
||||
|
||||
if (self.currentRates.hasOwnProperty(targetElement.attr('name')) && targetValue !== undefined) {
|
||||
const stepValue = parseFloat(targetElement.prop('step')); // adjust value to match step (change only the result, not the the actual value)
|
||||
if (stepValue != null) {
|
||||
targetValue = Math.round(targetValue / stepValue) * stepValue;
|
||||
}
|
||||
|
||||
self.currentRates[targetElement.attr('name')] = targetValue;
|
||||
|
||||
updateNeeded = true;
|
||||
|
@ -1294,6 +1427,12 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
if (targetElement.attr('name') === 'rc_expo' && semver.lt(CONFIG.apiVersion, "1.37.0")) {
|
||||
self.currentRates.rc_pitch_expo = targetValue;
|
||||
}
|
||||
|
||||
if (targetElement.attr('id') === 'ratesType' && semver.gte(CONFIG.apiVersion, "1.43.0")) {
|
||||
self.changeRatesType(targetValue);
|
||||
|
||||
updateNeeded = true;
|
||||
}
|
||||
} else { // no event was passed, just force a graph update
|
||||
updateNeeded = true;
|
||||
}
|
||||
|
@ -1752,6 +1891,8 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
self.setDirty(false);
|
||||
|
||||
GUI.log(i18n.getMessage('pidTuningEepromSaved'));
|
||||
|
||||
self.refresh();
|
||||
});
|
||||
|
||||
analytics.sendChangeEvents(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges);
|
||||
|
@ -1765,7 +1906,7 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
self.updating = false;
|
||||
|
||||
// enable RC data pulling for rates preview
|
||||
GUI.interval_add('receiver_pull', self.getRecieverData, true);
|
||||
GUI.interval_add('receiver_pull', self.getReceiverData, true);
|
||||
|
||||
// status data pulled via separate timer with static speed
|
||||
GUI.interval_add('status_pull', function status_pull() {
|
||||
|
@ -1776,7 +1917,7 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
}
|
||||
};
|
||||
|
||||
TABS.pid_tuning.getRecieverData = function () {
|
||||
TABS.pid_tuning.getReceiverData = function () {
|
||||
MSP.send_message(MSPCodes.MSP_RC, false, false);
|
||||
};
|
||||
|
||||
|
@ -2192,3 +2333,217 @@ TABS.pid_tuning.updatePIDColors = function(clear = false) {
|
|||
setTuningElementColor($('.pid_tuning .PITCH input[name="f"]'), ADVANCED_TUNING_ACTIVE.feedforwardPitch, ADVANCED_TUNING.feedforwardPitch);
|
||||
setTuningElementColor($('.pid_tuning .YAW input[name="f"]'), ADVANCED_TUNING_ACTIVE.feedforwardYaw, ADVANCED_TUNING.feedforwardYaw);
|
||||
};
|
||||
|
||||
TABS.pid_tuning.changeRatesType = function(rateTypeID) {
|
||||
let self = this;
|
||||
const dialogRatesType = $('.dialogRatesType')[0];
|
||||
let sameRatesType = true;
|
||||
|
||||
self.currentRatesType = rateTypeID;
|
||||
|
||||
if (self.currentRatesType !== RC_tuning.rates_type) {
|
||||
sameRatesType = false;
|
||||
dialogRatesType.showModal();
|
||||
|
||||
$('.dialogRatesType-cancelbtn').click(function() {
|
||||
sameRatesType = true;
|
||||
self.currentRatesType = RC_tuning.rates_type;
|
||||
$('.rates_type select[id="ratesType"]').val(RC_tuning.rates_type);
|
||||
self.changeRatesTypeLogo();
|
||||
self.changeRatesSystem(sameRatesType);
|
||||
dialogRatesType.close();
|
||||
});
|
||||
|
||||
$('.dialogRatesType-confirmbtn').click(function() {
|
||||
self.changeRatesTypeLogo();
|
||||
self.changeRatesSystem(sameRatesType);
|
||||
dialogRatesType.close();
|
||||
});
|
||||
} else {
|
||||
self.changeRatesTypeLogo();
|
||||
self.changeRatesSystem(sameRatesType);
|
||||
}
|
||||
};
|
||||
|
||||
TABS.pid_tuning.changeRatesSystem = function(sameType) {
|
||||
let self = this;
|
||||
|
||||
let rcRateMax = 2.55, rcRateMin = 0.01, rcRateStep = 0.01;
|
||||
let rateMax = 1.0, rateMin = 0, rateStep = 0.01;
|
||||
let expoMax = 1.0, expoMin = 0, expoStep = 0.01;
|
||||
|
||||
const pitch_rate_e = $('.pid_tuning input[name="pitch_rate"]');
|
||||
const roll_rate_e = $('.pid_tuning input[name="roll_rate"]');
|
||||
const yaw_rate_e = $('.pid_tuning input[name="yaw_rate"]');
|
||||
const rc_rate_pitch_e = $('.pid_tuning input[name="rc_rate_pitch"]');
|
||||
const rc_rate_e = $('.pid_tuning input[name="rc_rate"]');
|
||||
const rc_rate_yaw_e = $('.pid_tuning input[name="rc_rate_yaw"]');
|
||||
const rc_pitch_expo_e = $('.pid_tuning input[name="rc_pitch_expo"]');
|
||||
const rc_expo_e = $('.pid_tuning input[name="rc_expo"]');
|
||||
const rc_yaw_expo_e = $('.pid_tuning input[name="rc_yaw_expo"]');
|
||||
|
||||
const rcRateLabel = $('#pid-tuning .pid_titlebar .rc_rate');
|
||||
const rateLabel = $('#pid-tuning .pid_titlebar .rate');
|
||||
const rcExpoLabel = $('#pid-tuning .pid_titlebar .rc_expo');
|
||||
|
||||
// default values for betaflight curve. all the default values produce the same betaflight default curve (or at least near enough)
|
||||
let rcRateDefault = (1).toFixed(2), rateDefault = (0.7).toFixed(2), expoDefault = (0).toFixed(2);
|
||||
|
||||
if (sameType) { // if selected rates type is different from the saved one, set values to default instead of reading
|
||||
pitch_rate_e.val(RC_tuning.pitch_rate.toFixed(2));
|
||||
roll_rate_e.val(RC_tuning.roll_rate.toFixed(2));
|
||||
yaw_rate_e.val(RC_tuning.yaw_rate.toFixed(2));
|
||||
rc_rate_pitch_e.val(RC_tuning.rcPitchRate.toFixed(2));
|
||||
rc_rate_e.val(RC_tuning.RC_RATE.toFixed(2));
|
||||
rc_rate_yaw_e.val(RC_tuning.rcYawRate.toFixed(2));
|
||||
rc_pitch_expo_e.val(RC_tuning.RC_PITCH_EXPO.toFixed(2));
|
||||
rc_expo_e.val(RC_tuning.RC_EXPO.toFixed(2));
|
||||
rc_yaw_expo_e.val(RC_tuning.RC_YAW_EXPO.toFixed(2));
|
||||
}
|
||||
|
||||
switch(self.currentRatesType) {
|
||||
case self.RATES_TYPE.RACEFLIGHT:
|
||||
rcRateLabel.text(i18n.getMessage("pidTuningRcRateRaceflight"));
|
||||
rateLabel.text(i18n.getMessage("pidTuningRateRaceflight"));
|
||||
rcExpoLabel.text(i18n.getMessage("pidTuningRcExpoRaceflight"));
|
||||
|
||||
rcRateMax = 2000;
|
||||
rcRateMin = 10;
|
||||
rcRateStep = 10;
|
||||
rateMax = 255;
|
||||
rateStep = 1;
|
||||
expoMax = 100;
|
||||
expoStep = 1;
|
||||
|
||||
if (sameType) {
|
||||
pitch_rate_e.val((RC_tuning.pitch_rate * 100).toFixed(0));
|
||||
roll_rate_e.val((RC_tuning.roll_rate * 100).toFixed(0));
|
||||
yaw_rate_e.val((RC_tuning.yaw_rate * 100).toFixed(0));
|
||||
rc_rate_pitch_e.val((RC_tuning.rcPitchRate * 1000).toFixed(0));
|
||||
rc_rate_e.val((RC_tuning.RC_RATE * 1000).toFixed(0));
|
||||
rc_rate_yaw_e.val((RC_tuning.rcYawRate * 1000).toFixed(0));
|
||||
rc_pitch_expo_e.val((RC_tuning.RC_PITCH_EXPO * 100).toFixed(0));
|
||||
rc_expo_e.val((RC_tuning.RC_EXPO * 100).toFixed(0));
|
||||
rc_yaw_expo_e.val((RC_tuning.RC_YAW_EXPO * 100).toFixed(0));
|
||||
} else {
|
||||
rcRateDefault = (370).toFixed(0);
|
||||
rateDefault = (80).toFixed(0);
|
||||
expoDefault = (50).toFixed(0);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case self.RATES_TYPE.KISS:
|
||||
rcRateLabel.text(i18n.getMessage("pidTuningRcRate"));
|
||||
rateLabel.text(i18n.getMessage("pidTuningRcRateRaceflight"));
|
||||
rcExpoLabel.text(i18n.getMessage("pidTuningRcExpoKISS"));
|
||||
|
||||
rateMax = 0.99;
|
||||
|
||||
break;
|
||||
|
||||
case self.RATES_TYPE.ACTUAL:
|
||||
rcRateLabel.text(i18n.getMessage("pidTuningRcRateActual"));
|
||||
rateLabel.text(i18n.getMessage("pidTuningRateQuickRates"));
|
||||
rcExpoLabel.text(i18n.getMessage("pidTuningRcExpoRaceflight"));
|
||||
|
||||
rateMax = 2000;
|
||||
rateStep = 10;
|
||||
rcRateMax = 2000;
|
||||
rcRateMin = 10;
|
||||
rcRateStep = 10;
|
||||
|
||||
if (sameType) {
|
||||
pitch_rate_e.val((RC_tuning.pitch_rate * 1000).toFixed(0));
|
||||
roll_rate_e.val((RC_tuning.roll_rate * 1000).toFixed(0));
|
||||
yaw_rate_e.val((RC_tuning.yaw_rate * 1000).toFixed(0));
|
||||
rc_rate_pitch_e.val((RC_tuning.rcPitchRate * 1000).toFixed(0));
|
||||
rc_rate_e.val((RC_tuning.RC_RATE * 1000).toFixed(0));
|
||||
rc_rate_yaw_e.val((RC_tuning.rcYawRate * 1000).toFixed(0));
|
||||
} else {
|
||||
rcRateDefault = (200).toFixed(0);
|
||||
rateDefault = (670).toFixed(0);
|
||||
expoDefault = (0.54).toFixed(2);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case self.RATES_TYPE.QUICKRATES:
|
||||
rcRateLabel.text(i18n.getMessage("pidTuningRcRate"));
|
||||
rateLabel.text(i18n.getMessage("pidTuningRateQuickRates"));
|
||||
rcExpoLabel.text(i18n.getMessage("pidTuningRcExpoRaceflight"));
|
||||
|
||||
rateMax = 2000;
|
||||
rateStep = 10;
|
||||
|
||||
if (sameType) {
|
||||
pitch_rate_e.val((RC_tuning.pitch_rate * 1000).toFixed(0));
|
||||
roll_rate_e.val((RC_tuning.roll_rate * 1000).toFixed(0));
|
||||
yaw_rate_e.val((RC_tuning.yaw_rate * 1000).toFixed(0));
|
||||
} else {
|
||||
rateDefault = (670).toFixed(0);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
// add future rates types here
|
||||
default: // BetaFlight
|
||||
rcRateLabel.text(i18n.getMessage("pidTuningRcRate"));
|
||||
rateLabel.text(i18n.getMessage("pidTuningRate"));
|
||||
rcExpoLabel.text(i18n.getMessage("pidTuningRcExpo"));
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
const rc_rate_input_c = $('#pid-tuning input[class="rc_rate_input"]');
|
||||
const rate_input_c = $('#pid-tuning input[class="rate_input"]');
|
||||
const expo_input_c = $('#pid-tuning input[class="expo_input"]');
|
||||
|
||||
if (!sameType) {
|
||||
rate_input_c.val(rateDefault);
|
||||
rc_rate_input_c.val(rcRateDefault);
|
||||
expo_input_c.val(expoDefault);
|
||||
}
|
||||
|
||||
rc_rate_input_c.attr({"max":rcRateMax, "min":rcRateMin, "step":rcRateStep}).change();
|
||||
rate_input_c.attr({"max":rateMax, "min":rateMin, "step":rateStep}).change();
|
||||
expo_input_c.attr({"max":expoMax, "min":expoMin, "step":expoStep}).change();
|
||||
|
||||
if (sameType) {
|
||||
self.setDirty(false);
|
||||
}
|
||||
};
|
||||
|
||||
TABS.pid_tuning.changeRatesTypeLogo = function() {
|
||||
let self = this;
|
||||
|
||||
const ratesLogoElement = $('.rates_type img[id="ratesLogo"]');
|
||||
|
||||
switch(self.currentRatesType) {
|
||||
case self.RATES_TYPE.RACEFLIGHT:
|
||||
ratesLogoElement.attr("src", "../images/rate_logos/raceflight.svg");
|
||||
|
||||
break;
|
||||
|
||||
case self.RATES_TYPE.KISS:
|
||||
ratesLogoElement.attr("src", "../images/rate_logos/kiss.svg");
|
||||
|
||||
break;
|
||||
|
||||
case self.RATES_TYPE.ACTUAL:
|
||||
ratesLogoElement.attr("src", "../images/rate_logos/actual.svg");
|
||||
|
||||
break;
|
||||
|
||||
case self.RATES_TYPE.QUICKRATES:
|
||||
ratesLogoElement.attr("src", "../images/rate_logos/quickrates.svg");
|
||||
|
||||
break;
|
||||
|
||||
// add future rates types here
|
||||
default: // BetaFlight
|
||||
ratesLogoElement.attr("src", "../images/rate_logos/betaflight.svg");
|
||||
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
|
|
@ -572,7 +572,7 @@ TABS.receiver.initialize = function (callback) {
|
|||
tab.renderModel();
|
||||
|
||||
// TODO: Combine two polls together
|
||||
GUI.interval_add('receiver_pull_for_model_preview', tab.getRecieverData, 33, false);
|
||||
GUI.interval_add('receiver_pull_for_model_preview', tab.getReceiverData, 33, false);
|
||||
|
||||
// status data pulled via separate timer with static speed
|
||||
GUI.interval_add('status_pull', function status_pull() {
|
||||
|
@ -583,7 +583,7 @@ TABS.receiver.initialize = function (callback) {
|
|||
}
|
||||
};
|
||||
|
||||
TABS.receiver.getRecieverData = function () {
|
||||
TABS.receiver.getReceiverData = function () {
|
||||
MSP.send_message(MSPCodes.MSP_RC, false, false);
|
||||
};
|
||||
|
||||
|
|
|
@ -107,7 +107,7 @@
|
|||
<tr class="pid_titlebar2">
|
||||
<th colspan="6">
|
||||
<div class="pid_mode">
|
||||
<div i18n="pidTuningBasic" style="float:left;"></div>
|
||||
<div i18n="pidTuningBasic" class="float-left"></div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
|
@ -142,7 +142,7 @@
|
|||
<tr class="YAW_JUMP_PREVENTION">
|
||||
<td colspan="3">
|
||||
<div>
|
||||
<div i18n="pidTuningYawJumpPrevention" style="float:left;"></div>
|
||||
<div i18n="pidTuningYawJumpPrevention" class="float-left"></div>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningYawJumpPreventionHelp"></div>
|
||||
</div>
|
||||
</td>
|
||||
|
@ -319,7 +319,7 @@
|
|||
<tr class="needed_by_LEVEL">
|
||||
<th colspan="3">
|
||||
<div class="pid_mode">
|
||||
<div i18n="pidTuningLevel" style="float:left;"></div>
|
||||
<div i18n="pidTuningLevel" class="float-left"></div>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningLevelHelp"></div>
|
||||
</div>
|
||||
</th>
|
||||
|
@ -366,7 +366,7 @@
|
|||
<tr>
|
||||
<th colspan="3">
|
||||
<div class="pid_mode">
|
||||
<div i18n="pidTuningMotorOutputLimit" style="float:left;"></div>
|
||||
<div i18n="pidTuningMotorOutputLimit" class="float-left"></div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
|
@ -376,13 +376,13 @@
|
|||
<th class="third"></th>
|
||||
<th class="third" style="width: 33%;">
|
||||
<div>
|
||||
<div i18n="pidTuningMotorLimit" style="float:left;"></div>
|
||||
<div i18n="pidTuningMotorLimit" class="float-left"></div>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningMotorLimitHelp"></div>
|
||||
</div>
|
||||
</th>
|
||||
<th class="third" style="width: 33%;">
|
||||
<div>
|
||||
<div i18n="pidTuningCellCount" style="float:left;"></div>
|
||||
<div i18n="pidTuningCellCount" class="float-left"></div>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningCellCountHelp"></div>
|
||||
</div>
|
||||
</th>
|
||||
|
@ -656,7 +656,38 @@
|
|||
<div class="subtab-rates" style="display: none;">
|
||||
<div class="clear-both"></div>
|
||||
<div class="cf_column">
|
||||
<div class="note maxRateWarning">
|
||||
|
||||
<div class="gui_box rates_type pid_tuning">
|
||||
<table class="cf">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<div>
|
||||
<div i18n="pidTuningRatesType" class="float-left"></div>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningRatesTypeTip"></div>
|
||||
</div>
|
||||
</th>
|
||||
<th class="rates_logo_bg"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<select id="ratesType">
|
||||
<!-- list generated here -->
|
||||
</select>
|
||||
</td>
|
||||
<td class="rates_logo_bg">
|
||||
<div class="rates_logo_div">
|
||||
<img id="ratesLogo" src="../images/rate_logos/betaflight.svg" class="rates_logo" alt="Rates logo"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="note rates-tab-warning maxRateWarning">
|
||||
<p i18n="pidTuningMaxRateWarning"></p>
|
||||
</div>
|
||||
<div class="gui_box grey rateSetup">
|
||||
|
@ -671,7 +702,7 @@
|
|||
<tr class="pid_titlebar2">
|
||||
<th colspan="5">
|
||||
<div class="pid_mode">
|
||||
<div i18n="pidTuningRateSetup" style="float:left;"></div>
|
||||
<div i18n="pidTuningRateSetup" class="float-left"></div>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningRatesTuningHelp"></div>
|
||||
</div>
|
||||
</th>
|
||||
|
@ -679,16 +710,16 @@
|
|||
<tr class="ROLL">
|
||||
<td class="pid_roll"></td>
|
||||
<td class="rc_rate">
|
||||
<input type="number" name="rc_rate" step="0.01" min="0.01" max="2.55" />
|
||||
<input type="number" class="rc_rate_input" name="rc_rate" step="0.01" min="0.01" max="2.55" />
|
||||
</td>
|
||||
<td class="roll_rate">
|
||||
<input type="number" name="roll_rate" step="0.01" min="0" max="1.00" />
|
||||
<input type="number" class="rate_input" name="roll_rate" step="0.01" min="0" max="1.00" />
|
||||
</td>
|
||||
<td class="roll_pitch_rate" rowspan="2">
|
||||
<input type="number" name="roll_pitch_rate" step="0.01" min="0" max="1.00" />
|
||||
</td>
|
||||
<td rowspan="2" class="inputBackground">
|
||||
<input type="number" name="rc_expo" step="0.01" min="0" max="1" />
|
||||
<input type="number" class="expo_input" name="rc_expo" step="0.01" min="0" max="1" />
|
||||
<div class="bracket"></div>
|
||||
</td>
|
||||
<td class="new_rates maxAngularVelRoll"></td>
|
||||
|
@ -696,26 +727,26 @@
|
|||
<tr class="PITCH">
|
||||
<td class="pid_pitch"></td>
|
||||
<td>
|
||||
<input type="number" name="rc_rate_pitch" step="0.01" min="0.01" max="2.55" />
|
||||
<input type="number" class="rc_rate_input" name="rc_rate_pitch" step="0.01" min="0.01" max="2.55" />
|
||||
</td>
|
||||
<td class="pitch_rate">
|
||||
<input type="number" name="pitch_rate" step="0.01" min="0" max="1.00" />
|
||||
<input type="number" class="rate_input" name="pitch_rate" step="0.01" min="0" max="1.00" />
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" name="rc_pitch_expo" step="0.01" min="0" max="1" />
|
||||
<input type="number" class="expo_input" name="rc_pitch_expo" step="0.01" min="0" max="1" />
|
||||
</td>
|
||||
<td class="new_rates maxAngularVelPitch"></td>
|
||||
</tr>
|
||||
<tr class="YAW">
|
||||
<td class="pid_yaw"></td>
|
||||
<td rowspan="1">
|
||||
<input type="number" name="rc_rate_yaw" step="0.01" min="0.01" max="2.55" />
|
||||
<input type="number" class="rc_rate_input" name="rc_rate_yaw" step="0.01" min="0.01" max="2.55" />
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" name="yaw_rate" step="0.01" min="0" max="2.55" />
|
||||
<input type="number" class="rate_input" name="yaw_rate" step="0.01" min="0" max="2.55" />
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" name="rc_yaw_expo" step="0.01" min="0" max="1" />
|
||||
<input type="number" class="expo_input" name="rc_yaw_expo" step="0.01" min="0" max="1" />
|
||||
</td>
|
||||
<td class="new_rates maxAngularVelYaw"></td>
|
||||
</tr>
|
||||
|
@ -729,7 +760,7 @@
|
|||
<tr>
|
||||
<th colspan="2">
|
||||
<div>
|
||||
<div i18n="pidTuningRatesCurve" style="float:left;"></div>
|
||||
<div i18n="pidTuningRatesCurve" class="float-left"></div>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningRatesTip"></div>
|
||||
</div>
|
||||
</th>
|
||||
|
@ -775,13 +806,13 @@
|
|||
<tr>
|
||||
<th>
|
||||
<div>
|
||||
<div i18n="pidTuningThrottleLimitType" style="float:left;"></div>
|
||||
<div i18n="pidTuningThrottleLimitType" class="float-left"></div>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningThrottleLimitTypeTip"></div>
|
||||
</div>
|
||||
</th>
|
||||
<th>
|
||||
<div>
|
||||
<div i18n="pidTuningThrottleLimitPercent" style="float:left;"></div>
|
||||
<div i18n="pidTuningThrottleLimitPercent" class="float-left"></div>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningThrottleLimitPercentTip"></div>
|
||||
</div>
|
||||
</th>
|
||||
|
@ -1469,4 +1500,16 @@
|
|||
<a href="#" class="dialogCopyProfile-cancelbtn regular-button" i18n="dialogCopyProfileClose"></a>
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
<dialog class="dialogRatesType">
|
||||
<h3 i18n="dialogRatesTypeTitle"></h3>
|
||||
<div class="content">
|
||||
<div i18n="dialogRatesTypeNote" style="margin-top: 10px"></div>
|
||||
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<a href="#" class="dialogRatesType-confirmbtn regular-button" i18n="dialogRatesTypeConfirm"></a>
|
||||
<a href="#" class="dialogRatesType-cancelbtn regular-button" i18n="dialogRatesTypeCancel"></a>
|
||||
</div>
|
||||
</dialog>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue