Interactive Co-Design of Form and Function for Legged Robots using the Adjoint Method
Abstract
Our goal is to make robotics more accessible to casual users by reducing the domain knowledge required in designing and building robots. Towards this goal, we present an interactive computational design system that enables users to design legged robots with desired morphologies and behaviors by specifying higher level descriptions. The core of our method is a design optimization technique that reasons about the structure, and motion of a robot in coupled manner in order to achieve user-specified robot behavior, and performance. We are inspired by the recent works that also aim to jointly optimize robot’s form and function. However, through efficient computation of necessary design changes, our approach enables us to keep user-in-the-loop for interactive applications. We evaluate our system in simulation by automatically improving robot designs for multiple scenarios. Starting with initial user designs that are physically infeasible or inadequate to perform the user-desired task, we show optimized designs that achieve user-specifications, all while ensuring an interactive design flow.
I Introduction
Even from a cursory inspection, it is clear that the morphological features of living creatures are intimately related to their motor capabilities. The long limbs and flexible spine of a cheetah, for instance, lead to dizzying speeds. When designing robots for different tasks, it is therefore not surprising that roboticists often look to nature for inspiration. Examples include robots that mimic salamanders [1], kangaroos [2], and even insects [3]. However, rather than copying the designs that we see in nature, we are interested in beginning to address the question: can we develop mathematically-rigorous models with the predictive power to inform the design of effective legged robots? Furthermore, we are interested in integrating such computational models into interactive design tools that make robotics accessible to casual users.
Towards this goal, we develop a computationally efficient interactive design system that allows users to create legged robots with diverse functionalities, without requiring any domain-specific knowledge. Our system automatically suggests required changes to a user-designed robot morphology in order to achieve a specified behavior or task performance. In particular, we focus on periodic locomotion-based tasks that are characterized by footfall patterns, walking/turning speed, and direction of motion. Our approach is therefore a departure from conventional, largely manual trial and error approaches that iteratively improve task-based robot designs. The core of our system consists of a mathematical model that maps the morphological parameters of a robot to its motor capabilities. Equipped with this model that captures the sensitivity of robot’s motion on its morphology, we present an automatic design framework to co-optimize them in a hierarchical manner. To deal with the computational complexity, and to enable user interactivity throughout the design process, we integrate the highly scalable Adjoint method [4] within our framework.
Finally, we validate our system in a physically-simulated environment, through various task-based robot design scenarios that are challenging for casual users. We demonstrate how our system is able to aid users in dealing with a variety of such issues ranging from physical in-feasibility of the design, to sub-optimality in task performance.
Ii Related Work
Our long term goal is to make the process of creating customized robots highly accessible. We share this goal with many others in the robotics community [5, 6, 7]. Towards our goal, in the past, we developed an interactive design system for rapid, and on-demand generation of custom robotic devices [8]. Our system was an intuitive forward design tool that allowed novices to explore the design space of robotic devices, and to test their designs in simulations. However, when a user-designed robot failed to match the users’ desired behavior or task performance, our system did not provide any feedback to the users about improving their designs. Instead, we relied completely on the users’ intuition and experience to improve their designs, leveraging real-time feedback from the physical simulation.
Recently, various approaches have been proposed to either provide feedback to the users about improving their designs [9], or for automatically changing them based on a desired outcome [10, 11]. We are highly inspired by these approaches that leverage the coupling between the robot’s morphology and behavior. In particular, Canaday et al. and Ha et al. update the robot’s morphology for a given behavior such that kinematic and actuator constraints are satisfied [9, 10]. On the contrary, we co-optimize the morphology and motion of a robot without assuming a predefined motion or control policy for improving the robot’s performance in locomotion-based tasks, similar to [11]. However, our formulation is much more efficient than [11], making it well-suited for user-in-the-loop optimization. Unlike [11]’s approach of directly weaving in the robot’s physical parameters within the robot’s motion optimization framework, we establish a mapping between the robot’s physical and motion parameters using the sensitivity analysis or implicit function theorem [12]. Ha et al. also use such a mapping between robot’s form and function for optimizing robot designs that use minimal actuator forces [10]. However, they rely on the users to provide a change direction for modifying their designs. Instead, we enable our users to define their design requirements at task level using much wider variety of specifications such as desired speeds, desired directions of motion etc. We also allow the users to optimize their designs for multiple tasks, thereby automating the painstaking process of achieving optimal trade-off between possibly contradicting task requirements.
Such task-specific robot design from high-level descriptions has been a long-standing interest for the robotics community. In particular, a large number of approaches based on evolutionary algorithms have been successfully used for synthesizing morphologies and controllers for a variety of robots such as virtual creatures, manipulators etc. [13, 14, 15]. Unfortunately, despite promising early results and significant increases in computing power, the field of evolutionary robotics has shown a limited ability to go beyond Sims’ initial work [13] in terms of complexity and behavioral sophistication [16]. Stochastic approaches also provide limited theoretical guarantees, and are susceptible to produce designs that are often not reproducible. On the other hand, our gradient based approach is locally optimal. Furthermore, rather than synthesizing designs from scratch, we enable the users to specify initial designs, as well as to modify their designs at any point during the design process. Having the user-in-the-loop allows the users to guide the design process as they desire, thereby converging onto their needed outcome much faster. Letting the users to play an active role in creating robotic devices for personal use is also essential for improving the quality of their interactions with the final product [17].
Iii Interactive Design
Our interactive design system is rooted in a design abstraction, that allows us to combine off-the-shelf components such as actuators, and 3D printed parts such as brackets for designing robots [8]. As figure 1(a) illustrates, our graphical user interface (GUI) consists of a design workspace (left) and a simulation workspace (right). The design workspace allows them to browse through the list of available modules such as actuators and 3D printed parts, which can be dragged and dropped into the scene, to construct and modify a robot design. We have found this to be a powerful approach to specify initial robot morphology, and design. Our video demonstrates the design process for one of our examples. Users can also specify and physically simulate robot behaviors (such as walk forward at a desired speed) for their designs in the workspace on the right.
While the GUI is adopted from our previous system [8], we introduce some design features that better suit our current application. First, to enable the design of more organic looking robots that are optimized for a specific task, and are less cumbersome to assemble, we take a departure from using off-the-shelf brackets for connecting actuators. Instead, we assume that all parts of the robot’s articulated structure (other than actuators for joints) are 3D printed. Second, we automatically create these 3D printable connectors between actuators. We are inspired by the robots created in [18] that create convex hull geometries between actuators. However, while [18] create these geometries as a final processing step, we enable the connector geometry update during interactive design. With every drag-and-drop user operation that changes the robot morphology, as well as during automatic design optimization, the corresponding connector geometries are updated as well.
To enable this, we define a parameterized 3D printable connector module (see fig. 1(b)). Parameterizing the connecting structure as a module allows us to update its position and orientation interactively with changes in the design. Each connector module is also endowed with ‘virtual’ attachment points on the connector’s face, that get updated based on its position as well as that of the actuators it connects to. These attachment points are used to update the shape and size of the module’s convex hull structure as needed. Our video demonstrates how the 3D printable connecting structures of a robot’s legs change as the design optimization updates the robot’s design for a specific task. This allows the users to visualize the design changes as the optimization progresses. If the users disapprove of the aesthetic appearance of the robot at any point in the optimization, they can pause the optimization, and make the necessary changes, before continuing the optimization.
Although our interactive design interface is a powerful approach for forward design, modifying designs to achieve desired capabilities for a task requires domain knowledge. To aid novices without such knowledge in creating robots, as well as to enable experts in fine-tuning their robots for specific tasks, we next present our design optimization framework, which automatically optimizes the robot’s form and behavior for performing a desired task. In scenarios where the users are not satisfied with the behavior of their initial designs, they can use such an optimization to improve their designs. Fig. 2 illustrates this design process for creating a fast walking quadruped.
Iv Automatic Design Optimization
Designing robots with task-specific behaviors is highly skill-intensive and time-consuming. One must decide the robot’s structure – physical dimensions of its body, and its articulated parts, as well as the placement of actuators. One must then define how to control the actuators for a co-ordinated movement that achieves a task. The robot’s structure has a huge effect on the tasks it can perform. Therefore, designers typically iterate back and forth between physical and motion design to create a task-specific robot. To capture this coupling between the robot’s form and function, we parameterize a robot with a set of structure parameters , and motion parameters . However, instead of treating and independently, our goal is to represent robot motions as a function of its structure . Apart from being intuitive, such a representation allows us to solve for an optimal task-specific behavior and design hierarchically, in a computationally efficient manner. This, in turn, allows us to generate results much faster, enabling interactivity during design. We explain our formulation in detail in this section.
Iv-a Parameterization
A larger variety of robots including manipulators, and walking robots are composed of articulated chain like structures, in particular, of serially connected and actuated links. Such robot morphologies can be well described as kinematic trees starting at the root of the robot. The design parameters is used to specify the robot morphology, which is given by
(1) |
where is the number of links, is the length of each link, is the number of actuators, and is the actuator parameters. For linear actuators, defines the 3D attachment points, while for rotary actuators, it corresponds to orientation of axis of rotation. Apart from these parameters that represent the kinematic tree morphology of the robot, we use two additional parameters and to represent the physical dimensions of the robot’s body (width and length respectively).
Likewise, the motion parameters are defined by a time-indexed sequence of vectors , where denotes the time for each motion cycle. is defined as:
(2) |
where defines the pose of the robot, i.e., the position, and orientation of the root as well as joint information such as angle values, is the position of the robot’s center of mass (COM), and is the number of end-effectors. For each end-effector , we use to represent its position and to denote the ground reaction force acting on it. We also use a contact flag to indicate whether it should be grounded () or not (). We note that remains invariant over the entire motion optimization horizon.
Iv-B Method Overview
Given an initial robot design, and a task specification, our goal is to change and (as defined in eq. 1, 2) to obtain a design better suited for a task. Users typically define the initial design using our graphical interface. Various task descriptions such as preferred direction of motion/action, desired movement speed, movement styles (walking, trotting, turning) etc. can also be easily specified using our interface. These task specifications can then be encoded into an evaluation criteria or cost function . Assuming to be the parameter vector containing both structure and motion parameters , one can search for an optimal along the direction of ’s gradient . However, and are inherently coupled. Therefore, instead of searching and independently, we adopt a hierarchical approach, wherein we first update , and then update within a constrained manifold that maintains the validity and optimality of ’s update, given .
By constructing a manifold of structure and motion parameters of a robot design, we can explore the sensitivity of robot’s motion to its structure . Starting with an initial design on the manifold, one can search for , and corresponding on this manifold, such that is minimized. This dependency of on is captured by the Jacobian (more details in Sec. IV-C). This Jacobian is used to compute the search direction for updating within the manifold. However, is expensive to compute. Therefore, we further simplify this computation by using the Adjoint method (see Sec. IV-D). Algorithm 1 succinctly describes these steps. Note that and are the step sizes of the update of and respectively, in the desired search directions. The update() function essentially describes the line-search procedure for along the search direction , and the corresponding update of at each iteration . represents the updated search direction for obtained using the Limited-memory BFGS algorithm [19], given the gradient direction . represents the number of maximum line search iterations. is also computed using similar back-tracking line-search [20]. For each update of , multiple updates of are executed to obtain the corresponding optimal . is updated in the search direction defined by Newton’s method wherein , and represent the Hessian and gradient of with respect to respectively.
Iv-C Coupling form and function for robot design
It is hard to analytically represent the dependency or sensitivity of robot’s motion on its structure. Instead, we assume a manifold that relates robot’s structure and behavior capabilities, given a specific task.
(3) |
where . It allows us to understand the effect of design parameters on the motion/behavior of the robot. Such an implicit manifold between structure and function can be converted into an explicit relation between the two within a small region around a point on the manifold, using Implicit function theorem [12]. The theorem states that when we change and by and , the change in the function should be zero to remain on the manifold. Using chain rule to compute , we obtain the following explicit relation between and .
(4) |
where , and represents the Jacobian of with respect to , and respectively.
In order to compute such a manifold, we start with a task-specific cost function . For each robot morphology defined by , there exists an optimal that minimizes . Therefore, the gradient of with respect to at point should be zero. One can then search for an optimal along the manifold defined by this gradient on such a would automatically ensure a corresponding valid and optimal for the task. . An optimal
For searching such an optimal , we therefore need to solve the following optimization problem:
(5) |
where is the energy function; denotes the gradient of energy function with respect to motion parameters and thus that essentially encodes (defined by eq. 4), we can define the search direction for as follows: . Empowered by the Jacobian
(6) |
Iv-D The Adjoint method
Computing requires the calculation of the Jacobian which is computationally very expensive. It requires solving linear equations (for each column in Jacobian matrix ), and the procedure gets very costly for large . Instead, we use the Adjoint method to efficiently compute the gradient . This method formulates the computation of gradient as constrained optimization problem, and then uses the dual form of this optimization problem for faster computation [4]. Other applications have also sought out the Adjoint method for similar purposes in the past [21].
In particular, the expression 6 can be interpreted as the solution to the linear equation in eq.
(7) |
where is the matrix transpose operator. The vector is called the vector of adjoint variables and the linear equation is called the adjoint equation. Finally, takes on the following form
(8) |
Iv-E Motion Optimization
So far, we have described our framework to optimize the structure and motion of a robot, given a task. We used a cost function to encode the task specifications. We now describe how is constructed. To this end, we use a set of objectives that capture users’ requirements, and constraints that ensure task feasibility.
Iv-E1 Objectives
We allow the users to define various high-level goals to be achieved by their robot designs such as moving in desired direction with specific speeds, different motion styles, etc. To capture the desired direction and speed of motion, we define the following objectives:
(9) |
where is the robot’s COM as defined in eq. 2, is the turning angle computed from pose , while and are desired travel distance and turning angles respectively. ensures that the robot travels a specific distance in desired time, while can be used to make a robot move on arbitrary shaped paths.
Motion style is highly effected by gait or foot-fall patterns that define the order and timings of individual limbs of a robot. We internally define various foot-fall patterns for different motion styles such as trotting, pacing, and galloping. When users select a specific motion style, our system automatically loads the necessary foot-fall patterns, thereby allowing novice users to create many expressive robot motions. Motion style is also effected by robot poses. For expert users, we allow the capability to specify and achieve desired poses, if needed, using the following objectives:
(10) |
where is the number of end-effectors, and represent desired robot COM, and end-effector positions respectively. Apart from these, motion smoothness is often desired by the users, which is encoded by the following objective:
(11) |
Iv-E2 Constraints
We next define various constraints to ensure that the generated motion is stable.
Kinematic constraints: The first set of constraints ask the position of COM, and end-effectors to match with the pose of the robot. For every time step , and end-effector :
(12) |
where and are forward kinematics functions outputting the position of COM and end-effectors respectively.
We also have a set of constraints that relate the net force and torque to the acceleration and angular acceleration of the robot’s COM:
(13) |
where is the total mass of the robot, and is the moment of inertia tensor. The acceleration can be evaluated using finite differences: , where is the time step. Similarly, the angular acceleration can be expressed as . We note that the orientation of the root is part of the pose , and it uses axis-angle representation.
Friction constraints: To avoid foot-slipping, we also have the following constraints for each end-effector :
(14) |
for all , which implies that the end-effectors are only allowed to move when they are not in contact with the ground. Further, to account for different ground surfaces, we enforce the friction cone constraints:
(15) |
where and denote the tangential and normal component of respectively, and is the coefficient of friction of the ground surface.
Limb collisions: For physical feasibility, we propose a collision constraint that ensures a safe minimum distance between the limb segments of robot over the entire duration of the motion.
(16) |
where represents a 3D segment representing the position and orientation of limb, computes the distance between and limbs, and is the threshold distance beyond which collisions may happen.
Motion periodicity: If the users prefer a periodic motion, we can add an additional constraint that relates the start pose and the end pose of the robot:
(17) |
where extract the orientation of the root and joint parameters from pose .
Finally, is computed as the sum of the objectives in eq. 9, 10, 11. Quadratic penalty costs for violation of constraints in eq. 12, 13, 14, and 17 are also added to . Note that, while these objective terms are defined using the motion parameters , is indirectly affected by the structural parameters as discussed in Sec. IV-C.
V Results
We explore three simulated examples to study the utility and effectiveness of our approach. Although, we only show our current findings in simulation, we have confirmed that the simulation environment matches physical results, in our past work [8]. The first example is aimed to show how our design optimization can change an initial robot design that is inadequate to perform a user-specified task. The second example shows how our system ensures feasibility while maintaining task performance. Finally, we show how our system can be used to optimize designs for multiple tasks. We also demonstrate how different tasks may require varied design changes, and how our optimization can automatically generate these design changes in matters of minutes, thereby illustrating its computational efficiency. Note that all the initial designs for these examples were manually designed with our interface. Our video demonstrates this process for the robot in fig. 3(a).
When novices design robots, it can be hard for them to decide where the actuators should be located and how they should be oriented for achieving a specific behavior. Figure 3(a) shows one such example of a ‘puppy’ robot with three motors per leg. Even with enough number of actuators, the robot can only walk in one direction (forward) owing to its actuator placements. In particular, all actuators rotate about the same axis thereby reducing the effective degrees of freedom (DOF) of each limb. By parameterizing the actuator orientations in eq. 1, we enable our design optimization to change them for equipping the robot to walk in any specific direction. Without the optimization of such structural parameters, it may be impossible to achieve such tasks. For instance, the optimization of only motion parameters for the initial ‘puppy’ design fails to produce the desired behavior of walking sideways at a specific speed (see fig. 3(b)).
Even when a design can theoretically achieve the desired behavior, it may be rendered infeasible due to real world constraints such as collisions. Fig. 4(a) shows a robot that can walk in the user-specified direction at desired speeds. However, when walking speeds increase above 0.1 , the robot’s limbs start colliding. It is hard to anticipate such issues apriori. Along with helping the user to test such scenarios in simulation, our system can also automatically prevent them by using feasibility constraints during motion optimization as discussed in Sec. IV-E. However, these constraints prevent the required range of limb motions needed for fast walking, limiting the ability of the robot to perform the intended task (see fig. 4(b)). On the other hand, design optimization is able to change the design to achieve both these contradicting tasks successfully as seen in fig. 4(c).
Finally, designing robots for multiple tasks is also highly challenging, especially if the tasks ask for opposing design characteristics. Consider the task of walking and pacing for a quadruped robot shown in fig. 5(a). The original design can only walk forward owing to its actuator placements (similar to the ‘puppy’ robot in fig. 3(a)). Its wider body and shorter limbs prevent it from pacing in stable manner. The tasks are further challenging because of limited number of actuators. While three actuators may enable sufficient DOF for 3D movements without careful placement of individual actuators, same may not be true for designs with lower number of actuators. Individually optimizing the design for pacing and walking may not be sufficient for enabling the robot to perform both tasks. Pace based design optimization generates a slim bodied robot, while walk based design optimization produces a wider body size to increase stability during fast walking (see fig. 5(a)). Such a wider body in turn, negatively affects the pacing behavior (fig. 5(b)). To achieve reasonable performance for both these tasks, a trade-off is thus required. Our system allows users to jointly optimize their designs for multiple tasks, to handle such scenarios. The individual requirements for each task can be combined in weighted manner into . Weights representing the importance of each task can be set by the users. Such joint optimization of walking and pacing (with ) for quadruped in fig. 5(a) succeeds in achieving the necessary trade-off as illustrated in the resultant medium bodied optimized design, and the corresponding task performance.
Robot | Number of | Motion Opt. | Design Opt. | Time |
---|---|---|---|---|
Parameters | Iterations | Iterations | (s) | |
Puppy (Fig. 3) | 614 | 6207 | 32 | 107.66 |
Hexapod (Fig. 4) | 1044 | 5013 | 53 | 97.47 |
Quadruped (Fig. 5) | 1050 | 14873 | 100 | 124.47 |
Table I shows the design times for optimizing the designs of robots in fig. 3, 4, 5. For quadruped in fig. 5 these statistics are reported for the joint optimization scenario. Note that, even when its number of optimization parameters are roughly similar to that of the hexapod, there is a significant difference in the number of optimization iterations, and the time required. This is because of the contradicting requirements that the two tasks demand, making the problem more challenging. Also note that for each iteration of design optimization, multiple iterations of motion optimization are executed (see Algorithm 1). However, as illustrated in the statistics, the large number of these iterations needed to update the designs are executed in matter of minutes. Such computational efficiency is at the core of interactivity in our system. Apart from an efficient implementation in , a scalable approach using the Adjoint method allows us to achieve the same. While it is hard to make a direct comparison owing to differences in parameterization and implementation, our design times are significantly faster than the current state-of-the-art that co-optimizes form and function for many such similar robots [11]. For instance, their system took on an average 685 seconds to optimize a biped robot design for the task of walking on flat ground (750 optimization parameters) [11].
Vi Discussion and Future Works
We introduced an interactive robot design and optimization system that allows casual users to create customized robotic creatures for specific tasks. Apart from generating feasible behaviors, our system improves the performance of robot through an automatic design optimization process. This is particularly important for users who do not have a strong background in the relevant areas. Assisted by our system, they can eliminate the deficiencies of their design for the task at hand. Further, modern robots are increasingly demanded to have a variety of functionalities. We therefore also introduced the feature of joint optimization of the robot designs for multiple behaviors.
By introducing an easy-to-use design system with high user interactivity, we made a step forward in increasing the accessibility of robotics. However, some limitations should be noticed. For this work, we focused our efforts on periodic locomotion-based tasks. In the future, we plan to extend our design optimization technique for a broader class of motions and behaviors, including climbing, carrying weights or avoiding obstacles. Moreover, our system does not perceive the mass or the number of motors as design parameters. However, our approach is generic, in that the adjoint method can be applied to any trajectory optimization scheme that provides analytical gradients and Hessians. Therefore, although our motion optimization currently does not account for the mass of the limbs, we believe that this limitation can be eliminated in the future. Finally, the optimization processes are relatively invisible to the user in our system, which provides little room of manipulation for experts and specialists who may desire finer control over the design process. We therefore believe that it is important to find the right balance between automation and user control during design. Towards better understanding this balance for novice, intermediate, and experienced robot designers, we plan to perform an extensive user study as well in the future.
References
- [1] A. Crespi, K. Karakasiliotis, A. Guignard, and A. J. Ijspeert, “Salamandra robotica ii: an amphibious robot to study salamander-like swimming and walking gaits,” IEEE Transactions on Robotics, vol. 29, no. 2, pp. 308–320, 2013.
- [2] K. Graichen, S. Hentzelt, A. Hildebrandt, N. Kärcher, N. Gaißert, and E. Knubben, “Control design for a bionic kangaroo,” Control Engineering Practice, vol. 42, pp. 106–117, 2015.
- [3] R. Altendorfer, N. Moore, H. Komsuoglu, M. Buehler, H. Brown, D. McMordie, U. Saranli, R. Full, and D. E. Koditschek, “Rhex: A biologically inspired hexapod runner,” Autonomous Robots, vol. 11, no. 3, pp. 207–213, 2001.
- [4] M. B. Giles and N. A. Pierce, “An introduction to the adjoint approach to design,” Flow, turbulence and combustion, vol. 65, no. 3-4, pp. 393–415, 2000.
- [5] A. Schulz, C. Sung, A. Spielberg, W. Zhao, R. Cheng, E. Grinspun, D. Rus, and W. Matusik, “Interactive robogami: An end-to-end system for design of robots with ground locomotion,” The International Journal of Robotics Research, p. 0278364917723465, 2017.
- [6] N. Bezzo, A. Mehta, C. D. Onal, and M. T. Tolley, “Robot makers: The future of digital rapid design and fabrication of robots,” IEEE Robotics & Automation Magazine, vol. 22, no. 4, pp. 27–36, 2015.
- [7] A. M. Mehta, J. DelPreto, B. Shaya, and D. Rus, “Cogeneration of mechanical, electrical, and software designs for printable robots from structural specifications,” in IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Sep 2014.
- [8] R. Desai, Y. Yuan, and S. Coros, “Computational abstractions for interactive design of robotic devices,” in Robotics and Automation (ICRA), 2017 IEEE International Conference on. IEEE, 2017, pp. 1196–1203.
- [9] B. Canaday, S. Zapolsky, and E. Drumwright, “Interactive, iterative robot design,” in Robotics and Automation (ICRA), 2017 IEEE International Conference on. IEEE, 2017, pp. 1188–1195.
- [10] S. Ha, S. Coros, A. Alspach, J. Kim, and K. Yamane, “Joint optimization of robot design and motion parameters using the implicit function theorem.”
- [11] A. Spielberg, B. Araki, C. Sung, R. Tedrake, and D. Rus, “Functional co-optimization of articulated robots,” in Robotics and Automation (ICRA), 2017 IEEE International Conference on. IEEE, 2017, pp. 5035–5042.
- [12] K. Jittorntrum, “An implicit function theorem,” Journal of Optimization Theory and Applications, vol. 25, no. 4, pp. 575–577, 1978.
- [13] K. Sims, “Evolving virtual creatures,” in Proceedings of the 21st Annual Conference on Computer Graphics and Interactive Techniques, ser. SIGGRAPH ’94. New York, NY, USA: ACM, 1994, pp. 15–22. [Online]. Available: http://doi.acm.org/10.1145/192161.192167
- [14] P. C. Leger, “Automated synthesis and optimization of robot configurations: An evolutionary approach,” Ph.D. dissertation, Robotics Institute, Carnegie Mellon University, Pittsburgh, PA, December 1999.
- [15] J. Auerbach, D. Aydin, A. Maesani, P. Kornatowski, T. Cieslewski, G. Heitz, P. Fernando, I. Loshchilov, L. Daler, and D. Floreano, “RoboGen: Robot Generation through Artificial Evolution,” in Artificial Life 14: Proceedings of the Fourteenth International Conference on the Synthesis and Simulation of Living Systems. The MIT Press, 2014, pp. 136–137. [Online]. Available: http://www.robogen.org/
- [16] N. Cheney, J. Bongard, V. SunSpiral, and H. Lipson, “On the difficulty of co-optimizing morphology and control in evolved virtual creatures,” in Proceedings of the Artificial Life Conference, 2016, pp. 226–234.
- [17] Y. Sun and S. S. Sundar, “Psychological importance of human agency how self-assembly affects user experience of robots,” in 2016 11th ACM/IEEE Intl. Conf. on Human-Robot Interaction (HRI), 2016, pp. 189–196.
- [18] V. Megaro, B. Thomaszewski, M. Nitti, O. Hilliges, M. Gross, and S. Coros, “Interactive design of 3d printable robotic creatures,” ACM Transactions on Graphics (TOG), 2015.
- [19] D. C. Liu and J. Nocedal, “On the limited memory bfgs method for large scale optimization,” Mathematical programming, vol. 45, no. 1, pp. 503–528, 1989.
- [20] J. Nocedal and S. J. Wright, “Numerical optimization,” 2006.
- [21] A. McNamara, A. Treuille, Z. Popović, and J. Stam, “Fluid control using the adjoint method,” in ACM Transactions On Graphics (TOG), vol. 23, no. 3. ACM, 2004, pp. 449–456.