From 46519cfe19f36cddcca510a43e7daec42f11b735 Mon Sep 17 00:00:00 2001 From: jc4419 <60656643+jc4419@users.noreply.github.com> Date: Mon, 14 Jun 2021 20:37:05 +0400 Subject: [PATCH] Alpha stage commit. Console done. Console Changes: changed the name of the tokens so that more helpful error messages. Added help text. Moved command.jison to src. Other Changes: Added more telemetry data about battery and rover status. Finished gui commands, replaced to sliders from buttons and linked them to command console. --- Control/data/command.js | 95 ++++----- Control/data/index.html | 393 +++++++++++++++++++++++++++----------- Control/lib/command.jison | 87 --------- Control/src/command.jison | 59 ++++++ 4 files changed, 372 insertions(+), 262 deletions(-) delete mode 100644 Control/lib/command.jison create mode 100644 Control/src/command.jison diff --git a/Control/data/command.js b/Control/data/command.js index 76df3fe..091ecc2 100644 --- a/Control/data/command.js +++ b/Control/data/command.js @@ -75,9 +75,9 @@ var command = (function(){ var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o}; var parser = {trace: function trace () { }, yy: {}, -symbols_: {"error":2,"command":3,"expr":4,"EOF":5,"MOVE":6,"WHITESPACE":7,"DIST":8,"HEADING":9,"PERCENTAGE":10,"STOP":11,"PSTOP":12,"CHARGETO":13,"TELERST":14,"$accept":0,"$end":1}, -terminals_: {2:"error",5:"EOF",6:"MOVE",7:"WHITESPACE",8:"DIST",9:"HEADING",10:"PERCENTAGE",11:"STOP",12:"PSTOP",13:"CHARGETO",14:"TELERST"}, -productions_: [0,[3,2],[4,7],[4,1],[4,1],[4,3],[4,1]], +symbols_: {"error":2,"command":3,"expr":4,"EOF":5,"move":6,"whitespace":7,"distance":8,"heading_angle":9,"percentage":10,"stop":11,"pstop":12,"stop_duration":13,"charge_to":14,"telemetry_reset":15,"help":16,"$accept":0,"$end":1}, +terminals_: {2:"error",5:"EOF",6:"move",7:"whitespace",8:"distance",9:"heading_angle",10:"percentage",11:"stop",12:"pstop",13:"stop_duration",14:"charge_to",15:"telemetry_reset",16:"help"}, +productions_: [0,[3,2],[4,7],[4,1],[4,3],[4,3],[4,1],[4,1]], performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { /* this == yyval */ @@ -85,72 +85,43 @@ var $0 = $$.length - 1; switch (yystate) { case 2: - var inDist = String($$[$0-4]).substr(0, ((String($$[$0-4]).length) - 2)); - var inHdg = String($$[$0-2]).substr(0, ((String($$[$0-2]).length) - 3)); - var inSpd = String($$[$0]).substr(0, ((String($$[$0]).length) - 1)); - mode = 1; - reqDistance = Number(inDist); - reqHeading = Number(inHdg); - reqSpeed = Number(inSpd); - reqCharge = 0; - send_data(); - updateCommandBuffer(); - command_id++; + var inDist = Number(String($$[$0-4]).substr(0, ((String($$[$0-4]).length) - 2))); + var inHdg = Number(String($$[$0-2]).substr(0, ((String($$[$0-2]).length) - 3))); + var inSpd = Number(String($$[$0]).substr(0, ((String($$[$0]).length) - 1))); + moveCmd(inDist,inHdg,inSpd); break; case 3: - mode = 0; - reqDistance = 0; - reqHeading = 0; - reqSpeed = 0; - reqCharge = 0; - send_data(); - command_id = 0; - updateCommandBuffer() + stpCmd(); break; case 4: - mode = 1; - reqDistance = 0; - reqHeading = 0; - reqSpeed = 0; - reqCharge = 0; - send_data(); - updateCommandBuffer(); - command_id++; + var inStpDur = Number(String($$[$0]).substr(0, ((String($$[$0]).length) - 1))); + pstpCmd(inStpDur); break; case 5: - mode = 1; - reqDistance = 0; - reqHeading = 0; - reqSpeed = 0; - - var inChrg = String($$[$0]).substr(0, ((String($$[$0]).length) - 1)); - reqCharge = Number(inChrg); - - send_data(); - updateCommandBuffer(); - command_id++; + var inChrg = Number(String($$[$0]).substr(0, ((String($$[$0]).length) - 1))); + chrgCmd(inChrg); break; case 6: -mode = 1; - reqDistance = 0; - reqHeading = 0; - reqSpeed = 0; - reqCharge = 0; - send_data(); - updateCommandBuffer(); - command_id++; + + telRst(); + +break; +case 7: + + printHelpDetails(); + break; } }, -table: [{3:1,4:2,6:[1,3],11:[1,4],12:[1,5],13:[1,6],14:[1,7]},{1:[3]},{5:[1,8]},{7:[1,9]},{5:[2,3]},{5:[2,4]},{7:[1,10]},{5:[2,6]},{1:[2,1]},{8:[1,11]},{10:[1,12]},{7:[1,13]},{5:[2,5]},{9:[1,14]},{7:[1,15]},{10:[1,16]},{5:[2,2]}], -defaultActions: {4:[2,3],5:[2,4],7:[2,6],8:[2,1],12:[2,5],16:[2,2]}, +table: [{3:1,4:2,6:[1,3],11:[1,4],12:[1,5],14:[1,6],15:[1,7],16:[1,8]},{1:[3]},{5:[1,9]},{7:[1,10]},{5:[2,3]},{7:[1,11]},{7:[1,12]},{5:[2,6]},{5:[2,7]},{1:[2,1]},{8:[1,13]},{13:[1,14]},{10:[1,15]},{7:[1,16]},{5:[2,4]},{5:[2,5]},{9:[1,17]},{7:[1,18]},{10:[1,19]},{5:[2,2]}], +defaultActions: {4:[2,3],7:[2,6],8:[2,7],9:[2,1],14:[2,4],15:[2,5],19:[2,2]}, parseError: function parseError (str, hash) { if (hash.recoverable) { this.trace(str); @@ -633,24 +604,28 @@ case 2:return 9 break; case 3:return 10 break; -case 4:return 6 +case 4:return 13 break; -case 5:return 12 +case 5:return 6 break; -case 6:return 11 +case 6:return 12 break; -case 7:return 13 +case 7:return 11 break; -case 8:return 14 +case 8:return 16 break; -case 9:return 5 +case 9:return 14 break; -case 10:return 'INVALID' +case 10:return 15 +break; +case 11:return 5 +break; +case 12:return 'invalid_command' break; } }, -rules: [/^(?:\s)/,/^(?:\b[0-9]+mm\b)/,/^(?:\b([0-9]|[1-8][0-9]|9[0-9]|[12][0-9]{2}|3[0-4][0-9]|35[0-9])deg\b)/,/^(?:\b([0-9]|[1-8][0-9]|9[0-9]|100)%)/,/^(?:\bmove\b)/,/^(?:\bpstop\b)/,/^(?:\bstop\b)/,/^(?:\bcharge\sto\b)/,/^(?:\btelemetry\sreset\b)/,/^(?:$)/,/^(?:.)/], -conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10],"inclusive":true}} +rules: [/^(?:\s)/,/^(?:\b[0-9]+mm\b)/,/^(?:\b([0-9]|[1-8][0-9]|9[0-9]|[12][0-9]{2}|3[0-4][0-9]|35[0-9])deg\b)/,/^(?:\b([0-9]|[1-8][0-9]|9[0-9]|100)%)/,/^(?:\b[0-9]+s\b)/,/^(?:\bmove\b)/,/^(?:\bpstop\b)/,/^(?:\bstop\b)/,/^(?:\bhelp\b)/,/^(?:\bcharge\sto\b)/,/^(?:\btelemetry\sreset\b)/,/^(?:$)/,/^(?:.)/], +conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12],"inclusive":true}} }); return lexer; })(); diff --git a/Control/data/index.html b/Control/data/index.html index 998e6f2..f83a83c 100644 --- a/Control/data/index.html +++ b/Control/data/index.html @@ -25,6 +25,30 @@ margin: 0px; } + .slider { + -webkit-appearance: none; + width: 100%; + height: 25px; + background: #d3d3d3; + outline: none; + opacity: 0.7; + -webkit-transition: .2s; + transition: opacity .2s; + } + + .slider:hover { + opacity: 1; + } + + .slider::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 25px; + height: 25px; + background: #000000; + cursor: pointer; + } + #command_space { width:100%; height: 200px; @@ -62,6 +86,8 @@ border: none; border-radius: 5px; box-shadow: 0 3px rgb(161, 161, 161); + -webkit-transition: .2s; + transition: background-color .2s; } button:hover { @@ -69,7 +95,6 @@ } button:active { - background-color: #349134; box-shadow: 0 3px rgb(161, 161, 161); transform: translateY(1px); } @@ -80,100 +105,18 @@ display: table; } - - -

ROVER COMMAND CENTER

- +
- +
@@ -193,28 +136,25 @@ - - - - - - - - - - - - - - + - - - - - - + + + + + + + + + + + + + + + +

Control Panel

Telemetry

Command Buffer

Command Console


Rotation

Translation Set Heading to: 270°
Set Translation to: 180mm
Set Speed to: 50%

@@ -224,12 +164,18 @@ - + + + + + + @@ -242,16 +188,20 @@ + - + - - - + + + + + + +


X +


X,Y X mm

XV
DisconnectX%
X

@@ -259,11 +209,11 @@ - - + + - +


@@ -272,7 +222,220 @@
- + + + \ No newline at end of file diff --git a/Control/lib/command.jison b/Control/lib/command.jison deleted file mode 100644 index 1278857..0000000 --- a/Control/lib/command.jison +++ /dev/null @@ -1,87 +0,0 @@ -%lex -%% - -\s return 'WHITESPACE' -\b[0-9]+"mm"\b return 'DIST' -\b([0-9]|[1-8][0-9]|9[0-9]|[12][0-9]{2}|3[0-4][0-9]|35[0-9])"deg"\b return 'HEADING' -\b([0-9]|[1-8][0-9]|9[0-9]|100)"%" return 'PERCENTAGE' -\bmove\b return 'MOVE' -\bpstop\b return 'PSTOP' -\bstop\b return 'STOP' -\bcharge\sto\b return 'CHARGETO' -\btelemetry\sreset\b return 'TELERST' -<> return 'EOF' -. return 'INVALID' - -/lex - -%start command - -%% - -command - : expr EOF - ; - -expr - : MOVE WHITESPACE DIST WHITESPACE HEADING WHITESPACE PERCENTAGE - { - var inDist = String($3).substr(0, ((String($3).length) - 2)); - var inHdg = String($5).substr(0, ((String($5).length) - 3)); - var inSpd = String($7).substr(0, ((String($7).length) - 1)); - mode = 1; - reqDistance = Number(inDist); - reqHeading = Number(inHdg); - reqSpeed = Number(inSpd); - reqCharge = 0; - send_data(); - updateCommandBuffer(); - command_id++; - } - | STOP - { - mode = 0; - reqDistance = 0; - reqHeading = 0; - reqSpeed = 0; - reqCharge = 0; - send_data(); - command_id = 0; - updateCommandBuffer() - } - | PSTOP - { - mode = 1; - reqDistance = 0; - reqHeading = 0; - reqSpeed = 0; - reqCharge = 0; - send_data(); - updateCommandBuffer(); - command_id++; - } - | CHARGETO WHITESPACE PERCENTAGE - { - mode = 1; - reqDistance = 0; - reqHeading = 0; - reqSpeed = 0; - - var inChrg = String($3).substr(0, ((String($3).length) - 1)); - reqCharge = Number(inChrg); - - send_data(); - updateCommandBuffer(); - command_id++; - } - | TELERST - {mode = 1; - reqDistance = 0; - reqHeading = 0; - reqSpeed = 0; - reqCharge = 0; - send_data(); - updateCommandBuffer(); - command_id++;} - ; - diff --git a/Control/src/command.jison b/Control/src/command.jison new file mode 100644 index 0000000..f36dfd9 --- /dev/null +++ b/Control/src/command.jison @@ -0,0 +1,59 @@ +%lex +%% + +\s return 'whitespace' +\b[0-9]+"mm"\b return 'distance' +\b([0-9]|[1-8][0-9]|9[0-9]|[12][0-9]{2}|3[0-4][0-9]|35[0-9])"deg"\b return 'heading_angle' +\b([0-9]|[1-8][0-9]|9[0-9]|100)"%" return 'percentage' +\b[0-9]+"s"\b return 'stop_duration' +\bmove\b return 'move' +\bpstop\b return 'pstop' +\bstop\b return 'stop' +\bhelp\b return 'help' +\bcharge\sto\b return 'charge_to' +\btelemetry\sreset\b return 'telemetry_reset' +<> return 'EOF' +. return 'invalid_command' + +/lex + +%start command + +%% + +command + : expr EOF + ; + +expr + : move whitespace distance whitespace heading_angle whitespace percentage + { + var inDist = Number(String($3).substr(0, ((String($3).length) - 2))); + var inHdg = Number(String($5).substr(0, ((String($5).length) - 3))); + var inSpd = Number(String($7).substr(0, ((String($7).length) - 1))); + moveCmd(inDist,inHdg,inSpd); + } + | stop + { + stpCmd(); + } + | pstop whitespace stop_duration + { + var inStpDur = Number(String($3).substr(0, ((String($3).length) - 1))); + pstpCmd(inStpDur); + } + | charge_to whitespace percentage + { + var inChrg = Number(String($3).substr(0, ((String($3).length) - 1))); + chrgCmd(inChrg); + } + | telemetry_reset + { + telRst(); + } + | help + { + printHelpDetails(); + } + ; +