# Physical Computing Design Tools

![](02_Presentation/191202_demo.png)

![](02_Presentation/200114_simulation.PNG)



## Description
Repository for DICE design tools explorations.

Topics include:
- Programming strategies for spacial computing
    - Data flow programming and [Distributed Deep Neural Networks](https://gitlab.cba.mit.edu/amiraa/ddnn)
    - Physics Simulation 
    - Trusted Systems
- Reconfiguration strategies for DICE pieces 
    - CAM tools and path planing:
        - Desktop (external) assembler 
        - Swarm assembly and manipulation

----
## Demo Links

- **"Physical Computing Interface"** demo lives [here.](https://amiraa.pages.cba.mit.edu/physical-computing-design-tools/01_Code/physical_computing_interface/index.html)
- [Distributed Deep Neural Networks](https://gitlab.cba.mit.edu/amiraa/ddnn)
- UR10 voxel Assembly [demo.](https://amiraa.pages.cba.mit.edu/physical-computing-design-tools/01_Code/physical_computing_interface/assembly/standAloneAssembly.html)

----
## Progress

![](02_Presentation/191202_demo.mp4)

### Capabilities and Updates
-  Design
    -  Parametric grid definition (cubic, hexagonal, dice)
-  Assembly/timeline
    -  Timeline for future morphing computing
    -  UR10 
-  Graph
    -  Hierarchy
    -  Automatic neighborhood
    -  highlights
-  Computing
    -  Asynchronous code propagation (distributed max example)
    -  Simple test case find max value distributed
    -  Min cut max flow concept study neighborhood 
-  Improved UI and integration
    -  Radial menu
    -  Json propagation
    -  Highlight selected node
  
---
## Desired Milestones

- [ ] Assembly
  - [ ] Swarm construction
- [ ] Computation
  - [ ] Morphing code
  - [ ] Real simulation/message passing analysis
  - [ ] Computation Optimization
    - [ ] Restructuring code and automatically divide into distributed
    - [ ] show alternatives and bottlenecks
- [ ] Auto compilation/export to dice modules
- [ ] Simulation portal
- [ ] Case Studies
  - [ ] Neural networks
  - [ ] Bayesian optimization
  - [ ] Distributed optimization
  - [ ] Voxel design
- [ ] Scaling
  - [ ] stress testing scaling


---
## TODOS:
- [x] Grid Systems
- [ ] Documentation
  - [ ] in depth documentation of how to do everything
- [ ] Reset Grid/button
- [ ] Assembly
  - [ ] fix errors
- [ ] Add real Dice info
  - [ ] computation delay and communaction cost
  - [ ] CAD?
- [ ] Select
  - [ ] improve selected visualization
  - [ ] when selecting group show bounding box
- [ ] Hierarchy
  - [ ] place multiple voxels
  - [ ] change code of mutiple voxels
  - [ ] select multiple dice pieces
  - [ ] create groups