README.md 2.83 KB
Newer Older
1
# Automatakit API
Jake Read's avatar
Jake Read committed
2

Jake Read's avatar
Jake Read committed
3
4
aka project 'consistent-sandbox' 

Jake Read's avatar
Jake Read committed
5
6
![img software](doc/images/atkapi.png)
![img hardware](doc/images/machine-with-atkapi.jpg)
Jake Read's avatar
Jake Read committed
7

Jake Read's avatar
Jake Read committed
8
[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
9

Jake Read's avatar
Jake Read committed
10
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
11

Jake Read's avatar
Jake Read committed
12
This project serves the developement environment / api we use to write and represent programs that are event graphs. 
Jake Read's avatar
Jake Read committed
13

Jake Read's avatar
Jake Read committed
14
![img moving](doc/images/mothermother.gif)
Jake Read's avatar
Jake Read committed
15

Jake Read's avatar
Jake Read committed
16

Jake Read's avatar
Jake Read committed
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
## Programming Notes
- 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
38
39
40
## 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
## 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 
64

Jake Read's avatar
Jake Read committed
65
66
67
68
69
70
71
72
73
74
# 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)