From 818a4faf0214ee705064e500327a32c4265f8d62 Mon Sep 17 00:00:00 2001 From: Amira Abdel-Rahman <amira-rahman@aucegypt.edu> Date: Wed, 8 Apr 2020 07:19:50 -0400 Subject: [PATCH] wip --- .DS_Store | Bin 6148 -> 0 bytes .gitignore | 3 + .gitmodules | 3 + 01_Code/.DS_Store | Bin 6148 -> 0 bytes 01_Code/physical_computing_interface/app.js | 9 +- .../physical_computing_interface/globals.js | 43 ++++ .../indexSimulation.html | 227 ++++++++++++++++++ .../physical_computing_interface/metavoxels | 1 + .../computingGraph.js | 10 +- .../probabilisticProjection.js | 21 +- .../threejs/StandAloneGrid.js | 46 +++- 11 files changed, 349 insertions(+), 14 deletions(-) delete mode 100644 .DS_Store create mode 100644 .gitignore create mode 100644 .gitmodules delete mode 100644 01_Code/.DS_Store create mode 100644 01_Code/physical_computing_interface/indexSimulation.html create mode 160000 01_Code/physical_computing_interface/metavoxels diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 1e63dbbde85deb2a056f7b6417b2a945c7e5e179..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmZQzU|@7AO)+F(5MW?n;9!8zOq>i@0Z1N%F(jFwBFrH3z-Ht#q%fqG1sCPz<U{2~ zslgorptxgaFkmobh-YwSK#IS-bV#f+@G}@N7%{{%1TYjaq%ssUq%!0&lrSVRlrUs6 z<TK<Yl@}Kz<>V(ZFfg1<D#*z!E-^5;&d9{f!pg?Z!NJAB#mf~NoRME1T#{H)TI`fq z6b<49B$i|(LD?bs`8jZQVp3RUYI(eXh;x2kNn&PRY7t0zaArzsQesg|cxGNoez{YA zX<kY(*c_+?2L~qyXS{$!b+xgvsg8oNu|chlLbbWMfsTTSu~}^`Cx^JIp{-{^Ze>+< zO>NywNSrV-LTCnlC=H`#F)$GFHYAb50|};clpYO%(GVC7fguqB(BhASdq}u;)RChh zFd72%3;|I2pa5+JIzZ_L2n~{AU}RtbcL5j~7+7HLVg&aC7(j9$tsokt6-0xyGBAQz zU^Bp485p5j8NuBUkUmhC1Vn?iGcYoMwKFg>fVDHg+H8yv?F@`in;D@!6h?@421bZ> z21bZ>nDa*I(GVC70cZ$-`hK9kKdAn9WnjS7|A(p`rA9+wGz5lY2r#m^1iLtaD`o87 z1J$*l`ZNJ54XXV?)iEQeo<@j)t70a|fT9Fc7*ySZw1Q}GRm{i$smVth0<aJorAI@6 H{viMW`omrp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3b26156 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules +.ipynb_checkpoints +.DS_Store \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e6fde3a --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "01_Code/physical_computing_interface/metavoxels"] + path = 01_Code/physical_computing_interface/metavoxels + url = ssh://git@gitlab.cba.mit.edu:846/amiraa/metavoxels.git diff --git a/01_Code/.DS_Store b/01_Code/.DS_Store deleted file mode 100644 index b4d729aade8d865345c9d077fa96ee62015352bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmZQzU|@7AO)+F(5MW?n;9!8zOq>i@0Z1N%F(jFwA|RR(Y(^$SGD9Lm4nsUcGE{Dq z8r&fOiaQyG0)`BRN`_(v<oL^H$Ym&CC}k*N$YjW4NN0!#(<Kb43`GoS42cZM45>-w z#RW+@`AG~645yO{ax#lc3=FO_GBLBTvaxe;aB*<)a>WK`<d+ARB$kvGJ0%uHgLnan zB^gOjc1V7H4xF8s6qcD<9xou`oS#>cn3<Pa1X3QHnUb26SQHbUnU|7Z?v!7emr@Ki z2P(nA!O6iHFCbN2t!rp(VydHHWMNvXqfl*bZlI%JVr*7h%gG_GYG~`3kXu<*T~k{( z8xkXoj1ZcEA4<chISdR8WCuxEa8X`PeqK5#i@^*WrAI?xGz3ONV6cS%v;gGb9&8R9 zb<b!BjE2B~hXAO2P=GdM9H4Xqga%15FfuTJnvWow1?E^tKY#%w2GR<mL0UmHNGk&) zhy^wStd)V00iu-=+zkQg19eG2G*~+WBLi4F10w@iI|HoM#t6~QzzEUKzzFT3FhaC5 zFhaC5FhaD$oHt63hQMeDKtq5TLJNTEe^&+uT>XEDs!?(@1V%$(ScU*2i%YPJ6Sz{w z?mtjn3#v~Opwgh)A5<MPg6e667`Q5Cf($51K!rioJxD8v23N(543L_9v>^Zsp;3A? I1n3_E0Kv>-YXATM diff --git a/01_Code/physical_computing_interface/app.js b/01_Code/physical_computing_interface/app.js index 3b34e3d..f40627e 100644 --- a/01_Code/physical_computing_interface/app.js +++ b/01_Code/physical_computing_interface/app.js @@ -14,9 +14,16 @@ three.init(); initGraph();// todo enclose into class initEditor();// todo enclose into class -var assembler= new Assembler(three,GLOBALS,1,50,[new THREE.Vector3(GLOBALS.gridSize*GLOBALS.voxelSpacing,0,0)],[new THREE.Vector3(GLOBALS.gridSize*GLOBALS.voxelSpacing,0,GLOBALS.gridSize/2.0*GLOBALS.voxelSpacing)]); +// changed for assembler +// var assembler= new Assembler(three,GLOBALS,1,50,[new THREE.Vector3(GLOBALS.gridSize*GLOBALS.voxelSpacing,0,0)],[new THREE.Vector3(GLOBALS.gridSize*GLOBALS.voxelSpacing,0,GLOBALS.gridSize/2.0*GLOBALS.voxelSpacing)]); +// assembler.run(); + + +/////////////simulation//////////////////// +var assembler= new Assembler(three,GLOBALS,1,50,[new THREE.Vector3(0,0,0)],[new THREE.Vector3(GLOBALS.gridSize/2.0*GLOBALS.voxelSpacing,0,0)]); assembler.run(); + // old simulation stuff // var setup; // $.getJSON("./simulation/json/setup.json", function(json) { diff --git a/01_Code/physical_computing_interface/globals.js b/01_Code/physical_computing_interface/globals.js index ecb3a6a..b290bf8 100644 --- a/01_Code/physical_computing_interface/globals.js +++ b/01_Code/physical_computing_interface/globals.js @@ -215,6 +215,49 @@ function globals(utils){ {x: 1,y: 1,z: 1} ] + }, + Dice3: { + xScale:1.0, + yScale:0.5, + zScale:0.2, + xLineOffset:0.5, + yLineOffset:0.0, + xLayerOffset:0.0, + yLayerOffset:0.5, + doubleOffset:true, + xLayerOffset2:0.5, + yLayerOffset2:0.5, + zLayerRotation:Math.PI/2.0, + voxelSpacing:this.voxelSpacing, + gridSize:this.gridSize, + voxelScaleX:0.5, + voxelScaleY:0.9, + voxelScaleZ:0.2, + neighbors:[ // layer 0, 4,8 + {x: 0,y:-1,z:-1}, + {x:-1,y:-1,z:-1}, + {x: 0,y:-1,z: 1}, + {x: 0,y: 0,z: 1} + ], + neighborsLayerOffset:[ // layer 1, 5, 9 + {x: 0,y: 1,z:-1}, + {x: 0,y: 0,z:-1}, + {x:-1,y: 0,z: 1}, + {x: 0,y: 0,z: 1} + ], + neighborsLayerOffset1:[ // layer 2, 6, 19 + {x: 1,y: 0,z:-1}, + {x: 0,y: 0,z:-1}, + {x: 0,y:-1,z: 1}, + {x: 0,y: 0,z: 1} + ], + neighborsLayerOffset2:[ // layer 3, 7, 11 + {x: 0,y: 1,z:-1}, + {x: 0,y: 0,z:-1}, + {x: 0,y: 1,z: 1}, + {x: 1,y: 1,z: 1} + ] + } diff --git a/01_Code/physical_computing_interface/indexSimulation.html b/01_Code/physical_computing_interface/indexSimulation.html new file mode 100644 index 0000000..5bb684b --- /dev/null +++ b/01_Code/physical_computing_interface/indexSimulation.html @@ -0,0 +1,227 @@ +<html> + +<head> + <title>Physical Computing Interface</title> + <link rel="stylesheet" type="text/css" href="./css/style.css" media="screen"/> + <link rel="stylesheet" type="text/css" href="./lib/jsoneditor/jsoneditor.css" > + + <!-- assembler control css --> + <link rel="stylesheet" href="./css/bootstrap.min.css"> + <link rel="stylesheet" type="text/css" href="./css/styleAssemblerControl.css" media="screen"/> + + <!-- <link href="https://unpkg.com/font-awesome@5.8.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" /> --> + <!-- <link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css" rel="stylesheet"> --> + <script src="https://kit.fontawesome.com/99c302ff33.js" crossorigin="anonymous"></script> + +</head> + +<body> + + <div id="threejs"> + <div id="threejs1"> + <div class="header1"> + <i> Assembly</i> + <!-- Three.js --> + </div> + + <div id="webgl"></div> + </div> + <div class="slidecontainer"> + <input type="range" min="0" max="0" value="1" class="slider" id="time"> + </div> + + </div> + + <div id="simulation"> + <div id="threejs1"> + <div class="header1"> + <i> Simulation </i> + </div> + <div class="dragbar2"></div> + <div id="webgl1"></div> + + + </div> + + </div> + + + + <div id="graph"> + <div class="header2"> + <div class="dragbar"></div> + <i> Graph</i> + </div> + <div id=jsondiveditor> + + <div id="cy"></div> + </div> + <div class="dragbar"></div> + + + </div> + + <div id="json"> + + + <div class="header2"> + <div class="dragbar"></div> + <i> Node</i> + </div> + + + <div id=jsondiveditor> + + <br></br> + <!-- <p> + <button class="button" id="setJSON">Get Info</button> + <button class="button" id="getJSON">Set Info</button> + </p> --> + + <div id="jsoneditor"></div> + </div> + <div class="dragbar"></div> + <div class="dragbar1"></div> + + + + </div> + + <div class="footer1"> + <strong>left-click</strong>: place voxel/orbit, <strong>right-click</strong>: radial menu + </div> + + <div class="footer2"> + <!-- update change to more instructions/feedback --> + <i>instructions</i> + </div> + +</body> + +<!-- TODO: + Clean structure to modules? + Add another footer + +--> + + +<!-- libraries --> +<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> + +<script src="./lib/cytoscape.min.js"></script> +<script src="./lib/cytoscape-cxtmenu.js"></script> +<script src="https://unpkg.com/layout-base/layout-base.js"></script> +<script src="https://unpkg.com/cose-base/cose-base.js"></script> +<script src="https://unpkg.com/cytoscape-cose-bilkent/cytoscape-cose-bilkent.js"></script> +<script src="./lib/cytoscape-expand-collapse.js"></script> + + +<script src="./lib/jsoneditor/jsoneditor.js"></script> + +<script src="./lib/opencv.js"></script> + + +<script src="./lib/three.min.js"></script> +<script src="./lib/OrbitControls.js"></script> +<script src="./lib/dat.gui.min.js"></script> +<script src="./lib/TransformControls.js"></script> + +<script src="./assembly/InverseKinematic.js"></script><!-- TODO LOCATION --> +<script src="./assembly/voxel.js"></script><!-- TODO CHANGE TO DICE PIECES --> + +<!-- simulation stuff --> +<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> +<!-- <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> --> +<script src="./rhino3dm.js"></script> +<!-- <script async type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> +<script async type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/compute.rhino3d.js"></script> --> + +<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script> + +<!-- simulation --> +<!-- <script src="./simulation/lib/stats.js"></script> +<script src="./simulation/lib/SVGRenderer.js"></script> +<script src="./simulation/lib/js-colormaps.js"></script> +<script src="./simulation/lib/LineSegments2.js"></script> +<script src="./simulation/lib/LineSegmentsGeometry.js"></script> +<script src="./simulation/lib/Line2.js"></script> +<script src="./simulation/lib/LineMaterial.js"></script> +<script src="./simulation/lib/LineGeometry.js"></script> +<script src="./simulation/lib/GeometryUtils.js"></script> + +<script src="./simulation/fea/beamFea.js"></script> +<script src="./simulation/visualization/geometry.js"></script> + +<script src="./simulation/visualization/utils.js"></script> +<script src="./simulation/visualization/main.js"></script> --> + +<!-- assembler control --> +<script src="./assembly/assemblerControl/utils.js" type="text/javascript"></script> +<script src="./assembly/assemblerControl/setup.js" type="text/javascript"></script> +<script src="./assembly/assemblerControl/processing.js" type="text/javascript"></script> +<script src="./assembly/assemblerControl/serialMonitor.js" type="text/javascript"></script> +<script type="text/javascript" src="./assembly/assemblerControl/bootstrap-multiselect.js"></script> + + +<!-- code --> +<script src="./globals.js"></script> <!-- event handling and GLOBALS,UTILS --> +<script src="./threejs/grid.js"></script><!-- threejs visualization --> +<script src="./assembly/assembly.js"></script><!-- robot assembly --> +<script src="./assembly/replay.js"></script><!-- assembly and timestep handling --> +<script src="./graph/graph.js"></script><!-- graph flow visualization--> +<script src="./json/json.js"></script><!-- json --> + +<script src="./app.js"></script><!-- threejs visualization --> + +<!-- windows control --> +<script> + var i = 0; + $('.dragbar').mousedown(function(e){ + + e.preventDefault(); + $(document).mousemove(function(e){ + // $('#position').html(e.pageX +', '+ e.pageY); + $('#threejs').css("width",e.pageX+2); + + $('#simulation').css("width",e.pageX+2); + + $('#graph').css("left",e.pageX+2); + $('#json').css("left",e.pageX+2); + $('.footer1').css("width",e.pageX+2); + $('.footer2').css("left",e.pageX+2); + + }) + // onWindowResize();//todo change location + }); + + $('.dragbar1').mousedown(function(e){ + e.preventDefault(); + // $('#mousestatus').html("mousedown" + i++); + $(document).mousemove(function(e){ + $('#graph').css("height",e.pageY+2); + $('#json').css("top",e.pageY+2); + + }) + }); + + $('.dragbar2').mousedown(function(e){ + e.preventDefault(); + // $('#mousestatus').html("mousedown" + i++); + $(document).mousemove(function(e){ + $('#threejs').css("height",e.pageY+2); + $('#simulation').css("top",e.pageY+2); + + }) + // onWindowResize();//todo change location + }); + + $(document).mouseup(function(e){ + $(document).unbind('mousemove'); + }); + +</script> + + + + +</html> \ No newline at end of file diff --git a/01_Code/physical_computing_interface/metavoxels b/01_Code/physical_computing_interface/metavoxels new file mode 160000 index 0000000..5d349cc --- /dev/null +++ b/01_Code/physical_computing_interface/metavoxels @@ -0,0 +1 @@ +Subproject commit 5d349cccfa3df367a5f84228dd07044d4eece9b0 diff --git a/01_Code/physical_computing_interface/probabilisticProjections/computingGraph.js b/01_Code/physical_computing_interface/probabilisticProjections/computingGraph.js index f5e4ffd..21af8ee 100644 --- a/01_Code/physical_computing_interface/probabilisticProjections/computingGraph.js +++ b/01_Code/physical_computing_interface/probabilisticProjections/computingGraph.js @@ -429,14 +429,14 @@ updateVariable("costPerChip", costPerChip ,"dollars" ); updateVariable("flopsPerWatt", flopsPerWatt ,"" ); const interconnect=4; //2,4,6 -const nodesNumber= 50; //10,20,30,40,50 +const nodesNumber= 10; //10,20,30,40,50 updateVariable("interconnect", interconnect,"neighbour"); updateVariable("nodesNumber", nodesNumber,"nodes"); -var dataExchangeSize= 1e3; -var memoryPerComputation= 10e3; -var numberofComputations= 200; //nodes of similar computations -var computation= 100; //cylces +var dataExchangeSize= 37e6*32; +var memoryPerComputation= 37e6*32; +var numberofComputations= 1; //nodes of similar computations +var computation= 150e6; //cylces var maxNumberOfInterconnects= 10; updateVariable("dataExchangeSize", dataExchangeSize,"bytes"); diff --git a/01_Code/physical_computing_interface/probabilisticProjections/probabilisticProjection.js b/01_Code/physical_computing_interface/probabilisticProjections/probabilisticProjection.js index 02b85a8..62e969b 100644 --- a/01_Code/physical_computing_interface/probabilisticProjections/probabilisticProjection.js +++ b/01_Code/physical_computing_interface/probabilisticProjections/probabilisticProjection.js @@ -109,7 +109,7 @@ let processors={ var model=function (){ - var chipType=function () { return uniformDraw(["STM32F412","samd51j19","samd51j20","MAX32660","STM32F412","XMEGA"])}; + var chipType=function () { return uniformDraw(["STM32F412","samd51j19","samd51j20","STM32F412","XMEGA"])};//"MAX32660", var chip=processors.type[chipType()]; //display(chip.name); @@ -120,14 +120,20 @@ var model=function (){ var flopsPerWatt =chip.flopsPerWatt ; var interconnect=mem(function (model) { return uniformDraw([2,4,6])}); - var nodesNumber= mem(function (model) { return uniformDraw([10,20,30,40,50])}); + var nodesNumber= mem(function (model) { return uniformDraw([10,20,30,40,50,100,200])}); var dataExchangeSize=mem(function (model) {return gaussian(1e3, 10)}); //really needed? - var memoryPerComputation=mem(function (model) {return gaussian(10e3, 10)}); //really needed? - var numberofComputations=mem(function (model) {return gaussian(200, 10)}); //nodes of similar computations - var computation = mem(function (model) {return gaussian(100, 20)}); //Todo i could remove + var memoryPerComputation=mem(function (model) {return gaussian(35e3, 100)}); //really needed? + var numberofComputations=mem(function (model) {return gaussian(1, 0.1)}); //nodes of similar computations + var computation = mem(function (model) {return gaussian(105e6, 10)}); //Todo i could remove var maxNumberOfInterconnects= mem(function (model) {return gaussian(10, 2)}); //Todo i could remove + // var dataExchangeSize=mem(function (model) {return gaussian(1e3, 10)}); //really needed? + // var memoryPerComputation=mem(function (model) {return gaussian(10e3, 10)}); //really needed? + // var numberofComputations=mem(function (model) {return gaussian(200, 10)}); //nodes of similar computations + // var computation = mem(function (model) {return gaussian(100, 20)}); //Todo i could remove + // var maxNumberOfInterconnects= mem(function (model) {return gaussian(10, 2)}); //Todo i could remove + var getComputationDelay=function(memoryPerComputation,ram,numberofComputations){ @@ -207,7 +213,8 @@ var model=function (){ // display('cost: ' + DICE[1]) // display('energy: ' + DICE[2]) - condition(speed<0.0012 && cost<180); + condition(speed<100 && cost<18000); + // condition(speed<0.0012 && cost<180); // return [speed,cost,energy] if(result==1){ @@ -225,7 +232,7 @@ var model=function (){ // var DICE= model(); -var result=2; +var result=3; var options = {method: 'MCMC', kernel: 'MH', samples: 10000} var dist = Infer(options, model) viz(dist) diff --git a/01_Code/physical_computing_interface/threejs/StandAloneGrid.js b/01_Code/physical_computing_interface/threejs/StandAloneGrid.js index 1db5873..9c723cb 100644 --- a/01_Code/physical_computing_interface/threejs/StandAloneGrid.js +++ b/01_Code/physical_computing_interface/threejs/StandAloneGrid.js @@ -217,12 +217,55 @@ var gridPresets={ {x: 1,y: 1,z: 1} ] + }, + Dice3: { + xScale:1.0, + yScale:0.5, + zScale:0.2, + xLineOffset:0.5, + yLineOffset:0.0, + xLayerOffset:0.0, + yLayerOffset:1.0, + doubleOffset:false, + xLayerOffset2:0.5, + yLayerOffset2:0.5, + zLayerRotation:Math.PI/2.0, + voxelSpacing:this.voxelSpacing, + gridSize:this.gridSize, + voxelScaleX:0.5, + voxelScaleY:0.9, + voxelScaleZ:0.2, + neighbors:[ // layer 0, 4,8 + {x: 0,y:-1,z:-1}, + {x:-1,y:-1,z:-1}, + {x: 0,y:-1,z: 1}, + {x: 0,y: 0,z: 1} + ], + neighborsLayerOffset:[ // layer 1, 5, 9 + {x: 0,y: 1,z:-1}, + {x: 0,y: 0,z:-1}, + {x:-1,y: 0,z: 1}, + {x: 0,y: 0,z: 1} + ], + neighborsLayerOffset1:[ // layer 2, 6, 19 + {x: 1,y: 0,z:-1}, + {x: 0,y: 0,z:-1}, + {x: 0,y:-1,z: 1}, + {x: 0,y: 0,z: 1} + ], + neighborsLayerOffset2:[ // layer 3, 7, 11 + {x: 0,y: 1,z:-1}, + {x: 0,y: 0,z:-1}, + {x: 0,y: 1,z: 1}, + {x: 1,y: 1,z: 1} + ] + } } -var grid=gridPresets.Dice; +var grid=gridPresets.Dice3; var gridSize=20.0; init(); @@ -453,6 +496,7 @@ function buildVoxelAt( grid,x, y,z){ // voxel.scale.y=grid.voxelScaleZ; // console.log([voxel.position.x ,voxel.position.y ,voxel.position.z ,voxel.scale.x,voxel.scale.y,voxel.scale.z,voxel.rotation.y]) + console.log([x,y,z]) // voxel.position.x=0.0; // voxel.position.y=0.0; -- GitLab