Newer
Older


[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.
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.
This project serves the developement environment / api we use to write and represent programs that are event graphs.
- GIFS
- load a program
- drag around
- zoom in and out
- add a module
- hook events up
- rm events
- rm modules
- change settings
- push state down & up
- note below :
- not actually setting, do node main, change ms, watch console
- some wholistic test ...
- when hooking back to server, server.emitChange(key) ... from writeStateObject
- this spiral
- entire programs read into UI
- hook sever-and-back
- for event hookup
- for module add
- for state push-down
- re-hook state push-down
- can req and add to program new modules
- can req to load new program
- can req to save this program
- next spiral
- programs come in chunk-wise and get placed
- programs are modules are heirarchical
- the basic unit is a .js file having inputs, outputs, and state objects
- we can compose programs of these modules, being collections of them with connections
- we can represent these programs heirarchically, or in a flat manner ... heirarchy just requires an extra wrap, we do it later
- load / save programs (req. prgmem representation)
- UI
- title bar descr. how to operate
- 'L' for load, 'M' for new module, type for module search ?
- right-click delete / copy etc
- evt line highlight on hover
- hover display type
## WRT Representations
OK
Module have
Inputs
Outputs
State (initial states are settings)
Also
Names, IDs
Paths-to-source
Modules-that-represent-remote-computing also have
Ports
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 ?
### 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
title bar
L for load prgmem
M for add module
- 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?
## 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
## Want
- log() for logs-from-module tagged
## 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
# 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)