README.md 4.39 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

Paloma GR's avatar
Paloma GR committed
12
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
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
17
## For MW

Jake Read's avatar
notes    
Jake Read committed
18
19
20
21
22
23
24
25
26
- walk program units and change 
 - hardware, and consolidate ? 

- what program units do we want?
- good templates for hw/software ... good documentation 
- and a decent planner, pls, and stepper for planner-less motion 
- oh, what if extend module in module ? i.e. one stepper for planner ... one stepper for unit mtn ? same internals, different interfaces ... nice trick 
- try demo machine setup ... want flow control, better planning, this is actually a big thing 
- jogging, etc ... keydown UI modules probably cool 
27

Jake Read's avatar
OK    
Jake Read committed
28
## Documentation
Jake Read's avatar
notes    
Jake Read committed
29
30
31
32
33
34
35
36
37
- 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
38

Jake Read's avatar
Jake Read committed
39
## Questionable Moves
Jake Read's avatar
notes    
Jake Read committed
40
- module deletion seems unclean 
Jake Read's avatar
Jake Read committed
41
 - input / output objects should be able to unhook themselves: 
Jake Read's avatar
notes    
Jake Read committed
42
 - keep references of what-is-attached ? 
Jake Read's avatar
Jake Read committed
43

Jake Read's avatar
Jake Read committed
44
45
## WRT Representations

Jake Read's avatar
OK    
Jake Read committed
46
OK, should write this out properly at some point.
Jake Read's avatar
Jake Read committed
47
48
49
50
51
52

Module have 
 Inputs
 Outputs
 State (initial states are settings)

Jake Read's avatar
notes    
Jake Read committed
53
54
55
56
57
Hardware Modules have
 routes
 connected to 
 links 

Jake Read's avatar
Jake Read committed
58
59
60
61
62
63
Also
 Names, IDs
 Paths-to-source 

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 ? 

Jake Read's avatar
Jake Read committed
64
## Programming Notes
Jake Read's avatar
Jake Read committed
65

Jake Read's avatar
Jake Read committed
66
67
68
69
### 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
70

Jake Read's avatar
notes    
Jake Read committed
71
## Desires 
Jake Read's avatar
Jake Read committed
72
- heirarchy zoom 
Jake Read's avatar
notes    
Jake Read committed
73
 - architectural clarity betwixt UI and Heap 
Jake Read's avatar
Jake Read committed
74
75
76
77
78
79
80
- 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
notes    
Jake Read committed
81
82
83
84
85
86
87
## UI Desires
- modules have visual ways to throw errors - i.e. flashing red, popping up... 
- off-screen divs get pointers-to so that we don't get lost
  - 'h' or something to zoom-to-extents
- better module menu
- hover for alt descriptions 

Jake Read's avatar
Jake Read committed
88
89
## 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
notes    
Jake Read committed
90
 - should have some stronger ideas about flow control, allowable segment size (based on time) 
Jake Read's avatar
Jake Read committed
91

Jake Read's avatar
notes    
Jake Read committed
92
## Want 
Jake Read's avatar
Jake Read committed
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
- 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
- cannot connect input to output w/o backwards bezier 
112

Jake Read's avatar
Jake Read committed
113
114
# The RPI

Jake Read's avatar
notes    
Jake Read committed
115
``` need to figure out how to get the RPI serialport to talk ``` 
Jake Read's avatar
Jake Read committed
116
117
118

- https://cnc.js.org/ 
- https://github.com/cncjs/cncjs/wiki/Setup-Guide:-Raspberry-Pi-%7C-Install-Node.js-via-Node-Version-Manager-(NVM)