Skip to content
Snippets Groups Projects
README.md 4.51 KiB
Newer Older
  • Learn to ignore specific revisions
  • # Automatakit API
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    aka project 'consistent-sandbox' 
    
    
    Jake Read's avatar
    Jake Read committed
    ![img software](doc/images/atkapi.png)
    ![img hardware](doc/images/machine-with-atkapi.jpg)
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    [Automatakit](http://gitlab.cba.mit.edu/jakeread/automatakit) is a system architecture for robotics where machine controllers are extensible, and organized around the principle of event propagation: things happen because of other things that have happened beforehand. 
    
    Jake Read's avatar
    Jake Read committed
    We aim to take an event graph architecture down through multiple layers of computing, routing event propagation also through a message passing network between multiple cpus each operating modular hardware endpoints.
    
    Jake Read's avatar
    Jake Read committed
    
    
    Paloma GR's avatar
    Paloma GR committed
    This project serves the developement environment / api we use to write and represent programs that are event graphs. [Install and Run.](https://gitlab.cba.mit.edu/jakeread/atkapi/blob/master/installing-node-sp-ws.md)
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    ![img moving](doc/images/mothermother.gif)
    
    Jake Read's avatar
    Jake Read committed
    ## For MW
    
    
    Jake Read's avatar
    Jake Read committed
     - walk program units and change 
    
      - hardware, and consolidate ? 
    
    Jake Read's avatar
    OK  
    Jake Read committed
     - what program units do we want?
     - try demo machine setup ... want flow control, better planning, this is actually a big thing 
     - jogging, etc ... keydown modules ? 
    
    Jake Read's avatar
    OK  
    Jake Read committed
    ## Documentation
    
    Jake Read's avatar
    Jake Read committed
     - GIFS
      - load a program
      - drag around
      - zoom in and out 
      - add a module
      - hook events up
      - rm events
      - rm modules
      - change settings 
    
    
    Jake Read's avatar
    Jake Read committed
    ## Questionable Moves
    
    Jake Read's avatar
    Jake Read committed
     - test load of dmz.json - unordered list / names / no mdl ? 
    
    Jake Read's avatar
    Jake Read committed
     - module deletion seems unclean
     - input / output objects should be able to unhook themselves: 
      - keep references of what-is-attached ? 
    
    
    Jake Read's avatar
    Jake Read committed
    ## WRT Representations
    
    
    Jake Read's avatar
    OK  
    Jake Read committed
    OK, should write this out properly at some point.
    
    Jake Read's avatar
    Jake Read committed
    
    Module have 
     Inputs
     Outputs
     State (initial states are settings)
    
    Also
     Names, IDs
     Paths-to-source 
    
    Modules-that-represent-remote-computing also have
     Ports
    
    Jake Read's avatar
    Jake Read committed
     that connect to a
    
    Jake Read's avatar
    Jake Read committed
     Link 
    
    To assemble a representation of these, we want to have a kind of 'netlist' that, for convenience, we'll treat like a JSON object. We want heirarchy, so consider the representation having 'top-level' outputs / inputs / state as well ? 
    
    
    ## Programming Notes
    
    ### 15 Minute Tasks 
     - @ views.js, uiRequestModuleMenu and uiRequestProgramMenu don't properly build trees from folder structure. similarly, reciprical fn's in client.js do the same 
     - @ these load / save functions could also reach into the modules' source to retrieve their proper names, as spec'd in description ... 
     - 's' for save program uses hack-asf DOM alert to ask for path
    
    Jake Read's avatar
    Jake Read committed
    - once we can plan gcode sequence, work towards more
     - better hardware abstraction, i.e.
       stepper.port = bridge.port('0,1')
       stepper.port.onPacket = function(){ ... } 
       callbacks ? 
     - UI elements, i.e. demonstrating slider for individual axis movements, or just an arrow / keypad capture on mouseover thing 
    
    ## Deeply Missing
    - delete modules / module context menu 
    - load / save program 
    - decent page nav 
    - title bar / instructions 
    - heirarchy zoom 
    - states / uis / etc - one off / one-at-a-time for updates 
     - i.e. all f'n update calls are to single module-global state update
     - ! 
    - states / getters / setters not applicable to sub-elements in an object within state
     - i.e. array access 
    - consistent dereferencing, type checking implementation?
    
    
    Jake Read's avatar
    Jake Read committed
    ## Planner Bugs
     - trapezoid linking doesn't account for speed changes properly, i.e. doesn't ramp down into next move if next move's cruise speed is less than our exit speed 
    
    
    Jake Read's avatar
    Jake Read committed
    ## Want
    - log() for logs-from-module tagged 
    
    Jake Read's avatar
    OK  
    Jake Read committed
    - off-screen divs get pointers-to so that we don't get lost
      - 'h' or something to zoom-to-extents
    
    Jake Read's avatar
    Jake Read committed
    
    ## Demo Desires 
    - want to show immediacy of hardware: software representation
    - want to show physical reconfigurability and software reconfigurability
     - i.e. mill, add rotary tool, pull normal vector from planner moves and route to r motor 
    - want to have UI elements
     - button, terminal, 
    - live motor torque display, vector from accelerometer 
    
    ## Network Desires
    - c improvements / dma etc, would be very cool
    - flow control probably desired ... what can we model with uart and implement with fpga?
    - proper speed tests
    - DMA not possible / not enough channels for router implementation / not portable enough ... 
    - lights displaying activity
    
    ## Bugs
    - when bridge has two addresses only one sends
     - add watch for identical addresses
     - besides we want a different network representation 
    - cannot connect input to output w/o backwards bezier 
    
    Jake Read's avatar
    Jake Read committed
    # The RPI
    
     - sudo apt-get update
     - sudo apt-get upgrade
     - install nvm
      -  
     - install git 
    
    - https://cnc.js.org/ 
    - https://github.com/cncjs/cncjs/wiki/Setup-Guide:-Raspberry-Pi-%7C-Install-Node.js-via-Node-Version-Manager-(NVM)