Programming and evolving physical self-assembling systems in three dimensions
Being able to engineer a set of components and their corresponding environmental conditions such that target entities emerge as the result of self-assembly remains an elusive goal. In particular, understanding how to exploit physical properties to create self-assembling systems in three dimensions (in terms of component movement) with symmetric and asymmetric features is extremely challenging. Furthermore, primarily top-down design methodologies have been used to create physical self-assembling systems. As the sophistication of these systems increases, it will be more challenging to use top-down design due to self-assembly being an algorithmically NP-complete problem. In this work, we first present a nature-inspired approach to demonstrate how physically encoded information can be used to program and direct the self-assembly process in three dimensions. Second, we extend our nature-inspired approach by incorporating evolutionary computing, to couple bottom-up construction (self-assembly) with bottom-up design (evolution). To demonstrate our design approach, we present eight proof-of-concept experiments where virtual component sets either defined (programmed) or generated (evolved) during the design process have their specifications translated and fabricated using rapid prototyping. The resulting mechanical components are placed in a jar of fluid on an orbital shaker, their environment. The energy and physical properties of the environment, along with the physical properties of the components (including complementary shapes and magnetic-bit patterns, created using permanent magnets to attract and repel components) are used to engineer the self-assembly process to create emergent target structures with three-dimensional symmetric and asymmetric features. The successful results demonstrate how physically encoded information can be used with programming and evolving physical self-assembling systems in three dimensions.
self-assembly evolutionary computing rapid prototyping embodied computation physical information encoding tile assembly model