Spatial Computing & the challenge of Engineered Emergence Jacob Beal (& Jonathan Bachrach) MIT CSAIL 1 Networked devices are filling our environment... 2 Networked devices are filling our environment... 3 Networked devices are filling our environment... How do we program aggregates robustly? 4 Outline ● What is Spatial Computing? ● Continuous Space Programs ● Proto & Amorphous Medium ● Engineered Emergence 5 Spatial Computers Robot Swarms Reconfigurable Computing Definition Biological Computing Sensor Networks Cells during Morphogenesis Modular Robotics Continuous Proto Emergence 6 More formally... ● A spatial computer is a collection of computational devices distributed through a physical space in which: – the difficulty of moving information between any two devices is strongly dependent on the distance between them, and – the “functional goals” of the system are generally defined in terms of the system's spatial structure Definition Continuous Proto Emergence 7 More formally... ● A spatial computer is a collection of computational devices distributed through a physical space in which: – the difficulty of moving information between any two devices is strongly dependent on the distance between them, and – the “functional goals” of the system are generally defined in terms of the system's spatial structure Definition Continuous Proto Emergence 8 Graphs Amorphous/ Continuous Crystalline (e.g. CAs) (w. Dan Yamins) Definition Continuous Proto Emergence 9 space complexity density Graphs jitter grain size Amorphous/ Continuous Crystalline (e.g. CAs) (w. Dan Yamins) Definition Continuous Proto Emergence 10 space complexity density Graphs spatial computing jitter grain size Amorphous/ Continuous Crystalline (e.g. CAs) (w. Dan Yamins) Definition Continuous Proto Emergence 11 Example App: Mobile Streaming Definition Continuous Proto Emergence 12 Geometric Program: Channel Destination Source (cf. Butera) Definition Continuous Proto Emergence 13 Geometric Program: Channel Destination Source (cf. Butera) Definition Continuous Proto Emergence 14 Geometric Program: Channel Destination Source (cf. Butera) Definition Continuous Proto Emergence 15 Geometric Program: Channel Destination Source (cf. Butera) Definition Continuous Proto Emergence 16 Geometric Program: Channel Destination Source (cf. Butera) Definition Continuous Proto Emergence 17 Geometric Program: Channel Destination Source (cf. Butera) Definition Continuous Proto Emergence 18 Geometric Program: Channel Destination Source (cf. Butera) Definition Continuous Proto Emergence 19 Why use continuous space? ● Simplicity ● Scaling & Portability ● Robustness (we'll come back to this in a bit...) Definition Continuous Proto Emergence 20 Amorphous Medium device neighborhood Continuous space & time ●Infinite number of devices ●See neighbors' past state ● Definition Continuous Approximate with: ●Discrete network of devices ●Signals transmit state Proto Emergence 21 Computing with fields source destination gradient gradient width distance + dilate <= Definition Continuous Proto Emergence 22 Computing with fields source destination gradient gradient width distance 10 37 + dilate <= Definition Continuous Proto Emergence 23 Proto Global platform specificity & optimization device neighborhood discrete approximation Device Kernel Definition Continuous Proto Emergence Local Discrete (def gradient (src) ...) (def distance (src dst) ...) (def dilate (src n) evaluation (<= (gradient src) n)) (def channel (src dst width) (let* ((d (distance src dst)) (trail (<= (+ (gradient src) (gradient dst)) global to local d))) (dilate trail width))) compilation 24 Proto's Families of Primitives Pointwise Restriction restrict + Feedback 41 delay Neighborhood 7 + nbr any­hood 48 Definition Continuous Proto Emergence 25 Modulation by Restriction source destination 10 coord 10 channel (5 ,7 ) gradcast Definition Continuous Proto Emergence 26 In simulation... Definition Continuous Proto Emergence 27 Why use continuous space? ● Simplicity ● Scaling & Portability ● Robustness 150 devices 2000 devices Definition Continuous Proto Emergence 28 Other Approaches ● Lots of C hacking... ● Regiment / WaveScope ● ● ● Viral: TOTA / Smart Messages / Paintable Computing Pattern formation: [Coore] / [Nagpal] / [Kondacs] / [Stoy] / [Goldstein], ... Abstract: Kairos, EgoSpaces, Logical Neighborhoods, “views”, ... Definition Continuous Proto Emergence 29 On to Emergence... ● What is emergence? – Greater than the sum of its parts? – Unpredictable from local interactions? – Only definable for the aggregate? Definition Continuous Proto Emergence 30 “Engineered Emergence” Routine design of the behavior of aggregates of unreliable devices with complicated interaction patterns. Definition Continuous Proto Emergence 31 “Engineered Emergence” Routine design of the behavior of aggregates of unreliable devices with complicated interaction patterns. ? Definition Continuous Proto Emergence 32 Not quite... ● Nature's toolkit is still better Proto is good for library building: global-tolocal + modulation by restriction Definition Continuous Proto Emergence 33 st 1 : Flocking 13 lines of Proto Definition Continuous Proto Emergence 34 nd 2 : Self-Healing Gradients 14 lines of Proto Definition Continuous Proto Emergence 35 nd 3 : Dispersion 3 lines of Proto Definition Continuous Proto Emergence 36 Together: Guided Flocking 8 lines of Proto = 38 total Definition Continuous Proto Emergence 37 Four Useful Principles ● Self-Scaling ● Sparseness ● Gradual degradation ● Failure simplification Definition Continuous Proto Emergence 38 Gradual Degradation ● ● Decoupling by low sensitivity to – Implementation details – Parameter values – Conditions of execution Use when you don't understand or can't control the environment. Definition Continuous Proto Emergence 39 Gradual Degradation: Implementation Details ● Plane wave at different resolutions: 100 10,000 1,000 Definition Continuous Proto Emergence 40 Self-Scaling ● ● Decoupling through geometry: – specification of behavior (units) – implementation details (coordinate system) Use when you don't know the relationship between the behavior you want and the details of its implementation Definition Continuous Proto Emergence 41 Failure Simplification ● ● Decoupling by preferential selection of preferred failure type Use when you don't understand or can't prevent failures We're used to preventing failures. What if we just manage their impact? Definition Continuous Proto Emergence 42 Self-Scaling, Failure Simplification: Neighborhood Ops Definition Continuous Proto Emergence 43 Sparseness ● ● Decoupling by making unwanted interactions rare. Use when devices need to make noninterfering decisions independently. If at first you don't succeed, just try again. Definition Continuous Proto Emergence 44 Sparseness: Symmetry Breaking ● Temporary leadership via 1/f noise Definition Continuous Proto Emergence 45 Contributions ● ● ● ● ● Many networks are spatial computers Continuous-space geometric programs are simple, scalable, and robust Proto compiles global descriptions into approximate local implementations Emergent behaviors can be engineered with by modulating regions Four useful principles for engineering emergence 46