Commit 6b03260d authored by Jake Read's avatar Jake Read

change license, add doc

parent d63066f0
MIT License
Jake Read at the Center for Bits and Atoms
Copyright (c) 2018 Massachusettes Institute of Technology
Copyright (c) 2018 Jake Read
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
This work may be reproduced, modified, distributed, performed, and displayed for any purpose, but must acknowledge the automatakit project. Copyright is retained and must be preserved. The work is provided as is; no warranty is provided, and users accept all liability.
\ No newline at end of file
......@@ -2,141 +2,62 @@
aka project 'consistent-sandbox'
![img software](doc/images/atkapi.png)
![img hardware](doc/images/machine-with-atkapi.jpg)
## Programming
- need test of planner sequence
- next: close loop, bigger gcode terminal, test program
- 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
- c improvements / dma etc, would be very cool, good for ruben, erik to send
- dma not possible / not enough channels / not portable enough ...
- still want to measure, though, and look through static / etc ?
- and *really* what we want / need is error correction / buffer overrun errors and port slowdowns on swside
- i.e. acks-in-between ? acks-per-packet ?
- is timing still important ? depends on network speed !
- go back to 0.5mbaud and test finally ?
- bldc running, commutating, encoder 1st or do adc ? scope it out
## oy
- pull out hand-written gcode for testing
- rebase to commit prior to teardown, unless planner changed at all?
- documentation ... video ... fabclass, kerala (missing email?), oakland - should build a machine
- controllers should work tho
- should very much remind them to find *people* to do the education
- bridge has bug w/ two addresses only one is sent
- cooler demo
- better gcode
- jog option !
- should be able to loop easily
- want to show niche machines - this 'long tail mfg / automation' is a good pitch
- heating elements, flow control, material handling etc
- closed cycle cardboard for cardboard machine 'high performance laser cutter feedstock'
- coffee roaster
- etc
- flow control is solenoids on breadboardboard
- breadboardboard header solder on 'the rest' of circuitry solder on headers
- esperonto - / asicdesigner.net
- go to pitch size for optical bench
- city / state budget flow assumes flow out, re-route flow into city thru education projects
- economic benifit + economic benefit
- fab academy - 'too long and expensive and inecessible to most users'
- realistically what do people make in fab labs - what can we show ... what would bring people in?
- port flushing ?
- want a test / reset set
- really, should be built into bridge (or hardware default objs)
- read file ? default lines ? run it
- then you have this multiline gcode / start / stop sequencing issue
- and with it, scrolling around your messy program
- and this change ui / return double bounce ?
- want jog keys & speed commands w/ those buttons
- really want those LIGHTS
- really want to watch accelerometer
- want to measure network speed
- want to show motor torques coming back, set motor torques
## Majors to Address
- 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 ?
[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.
## UI bugs /
- reverse event lines ? .isLinked etc. ..
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.
## Features we Want
- UI classes
- buttons, w/ colors & reasonable std. events
- multiline input w/ current-line highlighting, terminal-write-in ?
- 3js
- prettier hw/sw representation
- callbacks / duplex links ? handing over an object, basically
- reload-in-place
- title context menu
- w/ proper event classes, context clicks for inputs / outputs / state elements ?
- for crashes etc, how can we re-start / kick serverside from the browser? some other daemon program ?
- write in logger functions
- i.e. module.log('whatever') is wrapped at load into console.log() and sends serverside log message as well, with ID and name
- this means writing module class that is extended
This project serves the developement environment / api we use to write and represent programs that are event graphs.
## remember
![img moving](doc/images/mothermother.gif)
you have friends
- bro
- sean
- nathan
## links to things
http://designmodo.github.io/Flat-UI/
http://workshop.chromeexperiments.com/examples/gui/#1--Basic-Usage
bootstrap, numeric.js ...
http://backbonejs.org/#Events
## Desires
- load / keep state
- run headless with view into
- collaborative program editing would be cool
- program save / load / edit ?
## Model Consistency
In Memory: array of modules
Saved / interfaced with: json of this - so to load from this, we need paths and ids attached to each module on load time.
To wrap / add heirarchy: this json object can be loaded the same as a program, given top level inputs and outputs, and made into another require()d module.
Modules are tiny programs, specifics (inputs, outputs, state) are read by system and wrapped into UI. UI has access to write into state, and connect events together.
To wrap, we write a representation in api-type rep, with one connection. We output the 'text line' of a Terminal into the 'text input' input of a gcode parser, and see the output / state bubble through the UI.
- to test, cleanup and write gcode obj
- confirm state change comes down to server
- confirm event bubbles through in server
- push event back to server ui ? dat.updatedisplay() ?
For extra points, we read in the connection also with an SVG layer - iterating through connections of the represented program.
## Programming Notes
- wake up planner sequence
- 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?
## 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
......
This image diff could not be displayed because it is too large. You can view the blob instead.
//
// server.js
//
// Jake Read at the Center for Bits and Atoms
// (c) Massachusetts Institute of Technology 2018
//
// This work may be reproduced, modified, distributed, performed, and
// displayed for any purpose, but must acknowledge the mods
// project. Copyright is retained and must be preserved. The work is
// provided as is; no warranty is provided, and users accept all
// liability.
/*
SYSTEM REQUIRES
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment