Automatic generation of object shapes with desired functionalities
Functional design of objects is slow and still largely an artisanal activity, with few \glsCAD tools existing to aid the exploration of the design solution space. In order to accelerate object design, we introduce an automatic method for generating object shapes with desired functionalities. We employ the concept of shape arithmetic, where shapes are manipulated in an arithmetic fashion inside a latent space representation learned by a neural network. We propose a functionality arithmetic, with the aim of conceiving new objects with desired functionalities from other objects with known functionalities. This is done by first extracting the descriptions of forms providing these functionalities, and then manipulating them using shape arithmetic functions. Form-to-function mappings are extracted by identifying the common features between objects belonging to the same class, inside which all objects provide the same functionality.
VAE name=VAE, description=Variational AutoEncoder, first=\glsentrydescVAE (\glsentrytextVAE), plural=VAEs, descriptionplural=variational autoencoders, firstplural=\glsentrydescpluralVAE (\glsentrypluralVAE) \newglossaryentryPDF name=PDF, description=Probability Density Function, first=\glsentrydescPDF (\glsentrytextPDF), plural=PDFs, descriptionplural=Probability Density Functions, firstplural=\glsentrydescpluralPDF (\glsentrypluralPDFs) \newglossaryentryDARPA name=DARPA, description=the Defense Advanced Research Projects Agency, first=\glsentrydescDARPA (\glsentrytextDARPA) \newglossaryentryCAD name=CAD, description=Computer-Aided Design, first=\glsentrydescCAD (\glsentrytextCAD) \newacronymFCTFCTFundação para a Ciência e a Tecnologia \newacronymSURFSURFSpeeded up robust features \newacronymSIFTSIFTScale-invariant feature transform \newacronymKLKLKullback–Leibler \newacronymGANGANGenerative Adversarial Network \newacronymReLUReLUrectified linear unit \newacronymIST-IDIST-IDAssociation of Instituto Superior Técnico for Research and Development
Design cycles of industrial products are lengthy, as they usually involve thousands of decisions on the form of the product that will implement the desired functionalities. Despite efforts in the last two decades to accelerate the workflow using \glsCAD techniques Kurtoglu (2007); Autodesk, Inc. (), most of the design process is still done manually. This is because all the proposed automation techniques (adaptive design, generative design, etc.) require input in the form of human decisions or expert knowledge, which is generally difficult to obtain and formulate. Only last year, \glsDARPA launched the Fundamental Design call for research projects on conceptual design of mechanical systems, that would enable the generation of novel design configurations DARPA (2017).
This paper presents a method for accelerating the functional design of objects, capable to automatically generate shapes of objects with desired functionalities. It does so by autonomously learning mappings from object form to function, and then applies this knowledge to conceive new object forms that answer to functional requirements. In a sense, this method performs functionality arithmetic through object form manipulation. Figure 1 illustrates the concept of combining multiple objects (where the form of each object provides a specific functionality) in order to generate a combined object form possessing the functionalities of the initial objects.
This remainder of the paper is organised as follows. Section 2 presents an overview of the related work in functional design, shape descriptors, and object affordances. Section 3 describes our methodology, detailing the envisioned workflow for using this technology, and presenting practical information about the implementation of the neural network and its architecture. It also describes the operators employed for object form manipulation. In Section 4 we discuss the obtained results and describe the drawbacks of the method at its current state. Finally, in Section 5 we draw a conclusion and detail the opportunities for future work. In this paper we will use the terms affordance and functionality interchangeably.
2 Related literature
The literature review is organised in three sections, detailing the state-of-the-art in the three fields at the intersection of which this study finds itself: functional design (for generating new object designs), object shape descriptors (for manipulation of object forms), and learning of object affordances (for relating object forms to functionalities).
2.1 Functional design
To facilitate the conception of new objects satisfying some functional requirements, the functional design community employs mappings of function-to-form Umeda and Tomiyama (1997) extracted from existing objects. This method comes under various names, including Adaptive functional design, Analogical reasoning, Functional synthesis, and Design reuse, and is based on the use of functional knowledge ontologies Bryant et al. (2005); Kurtoglu and Campbell (2009); Bhatt et al. (2012) that contain such function-to-form mappings Kurtoglu (2007). However, the knowledge acquisition required to populate the ontologies that fuel these methods involves functional decomposition, a non-automated step done by a human designer, in which functionalities are assigned to object components. A related review on object functionality inference from shape information is presented in Hu et al. (2018).
Recently, generative design emerged as an automated technique for exploring the space of 3D object shapes Autodesk, Inc. () using genetic algorithms. It formulates the shape search as an optimisation problem, requiring an initial solution, a definition of parameters to optimise, and rules for exploring the search space. However, it is far from trivial to identify rules for the intelligent exploration of the shape space, that would provide results in reasonable time.
2.2 Object shape descriptors
Object shape descriptions serve two purposes: (1) they contain extracted object shape features, which are used to study the form-to-function relationship, and (2) they serve as basis for the reconstruction of 3D object models. State-of-the-art techniques for automatically extracting object features are practically all based on Neural Networks: typically Convolutional Neural Networks or Auto-Encoders Girdhar et al. (2016), which have replaced the methods based on hand-crafted features like \glsSIFT or \glsSURF.
In order to solve the problem of generating 3D shapes from descriptions, modern techniques also employ Neural Network approaches: Auto-Encoders Girdhar et al. (2016) and Generative Adversarial Networks Wu et al. (2016), which learn a mapping from a low-dimensional probabilistic latent space to the space of 3D objects, allowing to explore the 3D object manifold. In this study, we used a \glsVAE Kingma and Welling (2013); Jimenez Rezende et al. (2014) to learn both how to describe objects using a description in the latent vector space, and how to reconstruct 3D shapes given such a description.
2.3 Object functionalities as object affordances
A field of research that also focuses on linking objects with their functionalities is that of affordance learning. It is based on the notion of affordance introduced by Gibson to define an action that an object provides (or affords) to an agent Gibson (1977). In the context of this paper, we are interested in approaches that map object features to corresponding object affordances (or functionalities). A common approach is to extract image regions (from RGB-D frames) with specific properties and tag them with corresponding affordance labels. An overview of machine learning approaches for detecting affordances of tools in 3D visual data is available in Ciocodeica (2016). Recent reviews on the use of affordances in machine learning for cognitive robotics include Jamone et al. (2016), Min et al. (2016), and Zech et al. (2017).
Compared to the state-of-the-art, this paper introduces a method to accelerate functional object design through the use of automatically learned shape descriptors for extracting a form-to-function mapping, which is then employed to generate new objects with desired functionalities. The novelty lies in the use of what we call functionality arithmetic (operations on object functionalities) through manipulation of corresponding forms in a latent vector space. This is an application of the concept form follows function in an automated design setting.
The starting point for this research was the hypothesis that object functionalities arise due to features that those objects possess. Therefore, if we intend to create an object with a desired set of functionalities, then it should possess the corresponding set of features providing these functionalities.
In this section we describe the proposed workflow for working with the object generation technique presented by this paper (Section 3.1), technical details on the employed neural network architecture and its training (Section 3.2), and the functionality arithmetics operators that we used for generating shapes with desired functionalities (Section 3.3).
3.1 Proposed workflow
For employing the proposed object generation method, we suggest a workflow composed of two phases: (1) learning phase, in which a neural network is trained to generate latent vector representations of objects and to faithfully reconstruct objects using this representation, and (2) request phase, in which a user requests the generation of a novel object with functionalities known to the network, and which were contained in the (traning) dataset of affordance-labeled objects.
Classify objects into classes (grouping objects by their functionality) labelled with the functionalities they provide.
For each object class, identify the essential object features (i.e. shape features in our case) that provide the functionalities of that class of objects.
Relate these essential object features to their corresponding functionalities / affordances by creating a mapping from features to functionalities.
State the desired functionalities / affordances for a new object that you desire to conceive, by selecting these functionalities from a menu of available functionalities. These available functionalities are the ones that the network learned from the employed dataset.
Identify the essential object features (i.e. shape features) corresponding to those affordances.
Attempt to combine these essential object features into a single object description (in the latent variable space).
Generate a 3D model based on this object description.
Depending on the number of existing solutions for the posed problem, we expect this method to provide none/one/multiple 3D object shape solutions. It would then be possible to iterate on these solutions by adding more requirements in terms of affordances (or removing them).
3.2 Neural network Architecture
To come up with an automatic method for describing the features of objects, we employ a \glsVAE that we train on a dataset of common household objects (the ModelNet dataset Wu et al. (2015)). This dataset contains 3D models of bathtubs, beds, chairs, desks, dressers, monitors, night stands, sofas, tables, and toilets (Fig. 2 shows some examples). For processing, we convert the samples in the dataset from OFF to BINVOX format Min (2004); Nooruddin and Turk (2003), obtaining exact object voxel models centered in a volume of dimension 64x64x64 voxels. We augment the dataset by rotating the objects by 90, 180 and 270 degrees around their vertical axis. One issue with the BINVOX conversion is that the obtained models were hollow shells, making it more difficult for the algorithm to learn the shapes of objects, as compared to filled-in objects.
The network architecture is shown in Table 1. The inputs are cubes of size , which is identical to the dimensions of the reconstructed outputs. Both the encoder and the decoder employ convolutional layers, interspersed with \glsReLU operations. The last layer of the encoder performs a reduce-max operation, in order to generate the means and variances for the gaussian distributions that model each of the variables of the latent vector. The \glsVAE employs a latent vector of size (2048) latent variables, which serves both as a bottleneck and as container of the object description. We use a \glsVAE loss to train the network, which is composed of two parts: weighted binary cross-entropy (the reconstruction loss) and \glsKL divergence with a non-informative prior — a Gaussian with zero mean and unit variance (which is a regularisation loss). For a single example, the (non-weighted) reconstruction loss is computed as follows:
where is the data, and is the reconstruction. To improve training speed, we employ a weighted cost function, that penalises proportionately more the network for errors in reconstructing full voxels than for errors in reconstructing empty voxels:
where is applied element-wise, and the summation is over the whole volume. This is useful, since on average most of the reconstructed volume is empty, while the objects occupy only of all the voxels. This allows to avoid the local minimum trap at the beginning of training, when the network prefers to reconstruct only empty volumes. We empirically set this weight to a value of . The regularisation loss is computed as
where is the number of latent variables ( in our case), and and are the parameters of the posterior of the latent variables (i.e. probability of the latent vector given the observation of a single data point: ). To improve the quality of reconstructions, we use a modified version of Eq. 3, referred to as Soft free bits Chen et al. (2016) that forces the network to use all the capacity of its latent layer, by ensuring that each latent variable encodes at least bits of information (with given by the user):
with , which is a parameter that increases the influence of the regularisation term for a specific latent variable if that variable does not contain bits of information.
|functions||conv, \glsReLU||conv, \glsReLU||conv, \glsReLU||conv, \glsReLU||slice, max-pool||deconv, \glsReLU||deconv, \glsReLU||deconv, \glsReLU||deconv, \glsReLU||deconv, \glsReLU|
The neural network was implemented in TensorFlow r1.8 Abadi et al. (2015). One epoch of training on the ModelNet dataset (10 classes of objects) takes approximately 27 minutes on a 16-core Intel(R) Core(TM) i7-7820X CPU @ 3.60GHz equipped with an NVIDIA Titan Xp GPU, when using a batch size of 128 samples. Typically around 70 epochs of training are required before the network starts to overfit.
In this section we describe the operators that we employed for manipulating object forms. Section 3.3.1 will describe the extraction of so-called functional essence of a class of objects, which is the set of features that provides the functionalities of that class. Section 3.3.2 will describe our approach for combining two object descriptions into a single new one, that is expected to have the functionalities of both input objects.
3.3.1 Extract the functional essence of a class of objects
Every class of objects possesses a set of functionalities that defines it. From a form follows function perspective, all the objects samples contained in one class share a set of features that provide this set of functionalities. We call this set of features the functional essence of a class of objects. In order to extract this functional essence, we compute the latent vector representation for each object in the class (i.e. the means and variances of the variables composing the description of the object), and then average them, obtaining a single latent vector describing the sought functional essence. This functional essence of an object class can then be visualised by inputting the obtained latent-vector description into the decoder trained to reconstruct 3D volumes. Figure 3 illustrates some results obtained using this method.
Later, we assign an importance value to each latent variable composing the functional essence of a class. We do this by computing the \glsKL divergence between the \glsPDF of these variables with the \glsPDF of (1) variables describing a void volume, and (2) a non-informative distribution of independent Gaussians with 0 mean and unit variance (called prior). Both of these \glsKL divergences are normalised, so as to have unit norm. Then, an Importance vector is defined as the weighted sum of the normalized \glsKL divergences with a void and a non-informative prior distribution, with the corresponding weights and chosen empirically.
3.3.2 Combine the functional essences of two different classes of objects
In order to combine two object descriptions (i.e. two latent vectors containing these descriptions), we need to identify which of the variables in this vector are important for encoding the object shape. In a degenerate case, if all the variables are critical for encoding the object shape, then their values cannot be changed, and therefore the object cannot be combined with another one (or a conflict resolution function must be devised). The hypothesis is that not all the variables are critical for representing the object shape, meaning that some variables’ values can be neglected when combining two object descriptions. We identify which variables are important for an object description using the method described above in Section 3.3.1.
The combination of two object descriptions is guided by their corresponding importance vectors. For simplicity, we describe the combination as being made between two object descriptions, although the method is applicable to any number of objects. One object serves as a base object, from which are taken the initial values of the latent variables’ distributions for the combined object description. The other object serves as top object, whose latent variables’ distributions are combined with those of the base object according to the rules described in Table 2.
Four cases appear when combining two latent vector descriptions of objects, as seen in Table 2. These rules can be resumed as follows: if both variable distributions are important then average them (case 4 in the table), if only one is important then keep the important one (cases 2 and 3 in the table), else keep the base values (case 1 in the table).
|#||Latent variable from||Latent variable from||Latent variable from|
|1||non-important||non-important||value of base object|
|2||non-important||important||value of important variable|
|3||important||non-important||value of important variable|
|4||important||important||average of the two values|
4 Results and Discussion
In this section we provide our results on the (a) capacity of the \glsVAE to describe and reconstruct objects, (b) extraction of functional essences for different categories of objects, (c) generation of novel objects through the combination of latent representations of object classes containing desired functionalities. At the end of this section, we discuss the limitations of the proposed method.
4.1 Object representation and reconstruction results
Figure 2 illustrates 3D object samples and their corresponding reconstructions generated by the network. The satisfactory quality of reconstructions suggests that the encoder network can be used to generate descriptions of objects in a latent vector space, and that the decoder network can successfully be used to reconstruct objects from descriptions generated by the encoder network.
4.2 Functional essence extraction results
Through the extraction of function essences of different object classes, we expected to identify the forms that provide the functionalities offered by those classes of objects. Figure 3 shows results on the extraction of functional essences for tables, chairs, and monitors. Relevant features have been extracted, such as the flatness of tables providing support-ability, the seats and backrests of chairs providing sit-ability and lean-ability. In the case of the chair object class, a considerable proportion of objects had armrests, which led to this feature becoming part of the functional essence.
4.3 Object combination results
The ability to extract a shape representation that constitutes the functional essence of a class, coupled with the ability to combine it with another object representation, makes it possible to extract and combine shape features that provide desired functionalities. It is worth noting that the proposed combination operator is non-commutative, meaning that the combination of two objects can generate different results, depending on the order of objects in the combining operation (i.e. which object is used as base object, and the order in which other objects are combined with it).
In this experiment, we have attempted to extract the sit-ability and bath-ability of toilet seats and bathtubs, respectively, in order to combine them into a new object providing both of these functionalities. The obtained results may be interpreted as bidet objects. The impact of the order in which objects are combined is visible in the two results displayed in Figures 4 and 5. The degree to which two object categories are combined can be controlled by varying the amount of information kept from each object description (i.e. the percentage of variables that are considered important for an object description).
4.4 Limitations of the proposed method
The proposed method currently has a set of limitations:
It does not check yet whether a generated object really possesses the desired functionalities/affordances. This can be solved by checking the presence of object affordances in simulation, relative to a humanoid robotic agent.
There is no exploration of radically new shapes outside of the solution space reachable by interpolation and extrapolation from existing solutions. New knowledge can be added through robotic interaction with randomly generated object shapes inside a simulated environment.
The method does not state if a solution to the posed problem does not exist (i.e. if it is possibile to combine two different sets of affordances).
The different scales of objects are not taken into consideration when combining objects. Training the neural network on object models which are correctly sized relative to each other would solve this issue. However, it would require increasing the size of the input voxel cube to fit inside detailed descriptions of boths small-scale objects (e.g. spoons, forks, chairs) and large scale objects (e.g. dressers, sofas), which would also increase the training time.
5 Conclusion and future work
We have presented a method for generating objects with desired functionalities, by first extracting a form-to-function mapping from a dataset of objects, and then manipulating and combining these forms through functionality arithmetic. The method relies on a neural network to extract compressed descriptions of objects. These descriptions allow shape manipulation and arithmetics in a latent space, before being transformed back into 3D object models.
In contrast to an ontology based approach, where modifications can be done deterministically, all the object shape manipulations are probabilistic in our case. Thus, generated inexact models may prove sufficient if regarded only as design suggestions. However, a production-grade technology would require less noisy object-modeling results. One solution provided in the literature suggests the use of a \glsGAN to make generated objects more similar to real-world objects Wu et al. (2016).
The dataset that we employed contained only the surface shape of objects (the meshes), leaving the interiors void and featureless. As a side effect, this hindered the efficacy of the neural network in learning the object models, as objects were reduced to their outer shells, and there was little error tolerance when evaluating the reconstructions.
The code will be made available upon publication.
5.1 Future work
Future work will involve creating a tool chain for importing the object models generated by the neural network into a physics simulation software, in order to check whether generated objects indeed possess the affordances required by the specification (developing ideas from Ciocodeica (2016)). In this respect, we still need to add to our models information about properties of materials from which objects are composed, their colors or textures (where necessary), and other features that may prove relevant.
In addition, instead of using a dataset containing an implicit mapping of form-to-function (as objects are categorised in classes), we intend to learn object functionalities/affordances automatically, by letting a robot interact autonomously with a set of objects. This is related to the currently active field of affordance learning in robotics. Moreover, the use of 3D shape descriptors developed in this research will facilitate affordance learning and knowledge transfer in the case of autonomous robots.
This work was made possible with the help of a research grant offered by the \glsIST-ID. Atabak Dehban is supported by the doctoral grant PD/BD/105776/2014 offered by the \glsFCT. This research was also supported by an NVIDIA GPU grant in the form of an NVIDIA Titan Xp GPU. We thank Hugo Simão for his help in generating the images in Fig. 1.
- Abadi et al.  Martin Abadi, Ashish Agarwal, Paul Barham, Eugene Brevdo, Zhifeng Chen, Craig Citro, Greg S. Corrado, Andy Davis, Jeffrey Dean, Matthieu Devin, Sanjay Ghemawat, Ian Goodfellow, Andrew Harp, Geoffrey Irving, Michael Isard, Yangqing Jia, Rafal Jozefowicz, Lukasz Kaiser, Manjunath Kudlur, Josh Levenberg, Dandelion Mané, Rajat Monga, Sherry Moore, Derek Murray, Chris Olah, Mike Schuster, Jonathon Shlens, Benoit Steiner, Ilya Sutskever, Kunal Talwar, Paul Tucker, Vincent Vanhoucke, Vijay Vasudevan, Fernanda Viégas, Oriol Vinyals, Pete Warden, Martin Wattenberg, Martin Wicke, Yuan Yu, and Xiaoqiang Zheng. TensorFlow: Large-scale machine learning on heterogeneous systems, 2015. URL https://www.tensorflow.org/. Software available from tensorflow.org.
-  Autodesk, Inc. Autodesk dreamcatcher. https://autodeskresearch.com/projects/dreamcatcher. Accessed: 2018-05-15.
- Bhatt et al.  Mehul Bhatt, Joana Hois, and Oliver Kutz. Ontological modelling of form and function for architectural design. Applied Ontology, 7(3):233–267, 2012.
- Bryant et al.  Cari R Bryant, Robert B Stone, Daniel A McAdams, Tolga Kurtoglu, Matthew I Campbell, et al. Concept generation from the functional basis of design. In ICED 05: 15th International Conference on Engineering Design: Engineering Design and the Global Economy, page 1702. Engineers Australia, 2005.
- Chen et al.  Xi Chen, Diederik P. Kingma, Tim Salimans, Yan Duan, Prafulla Dhariwal, John Schulman, Ilya Sutskever, and Pieter Abbeel. Variational lossy autoencoder. CoRR, abs/1611.02731, 2016. URL http://arxiv.org/abs/1611.02731.
- Ciocodeica  Sebastian Ciocodeica. A Machine Learning Approach for Affordance Detection of Tools in 3D Visual Data. Bachelor’s thesis, University of Aberdeen, 2016.
- DARPA  DARPA. Disruption opportunity special notice darpa-sn-17-71. https://www.fbo.gov/spg/ODA/DARPA/CMO/DARPA-SN-17-71/listing.html,, 2017. Accessed: 2018-05-15.
- Gibson  James Gibson. The theory of affordances. Perceiving, acting, and knowing: Toward an ecological psychology, pages 67–82, 1977.
- Girdhar et al.  Rohit Girdhar, David F. Fouhey, Mikel Rodriguez, and Abhinav Gupta. Learning a predictable and generative vector representation for objects. In Bastian Leibe, Jiri Matas, Nicu Sebe, and Max Welling, editors, Computer Vision – ECCV 2016, pages 484–499, Cham, 2016. Springer International Publishing. ISBN 978-3-319-46466-4.
- Hu et al.  R Hu, M Savva, and O van Kaick. Functionality representations and applications for shape analysis. In Eurographics 2018, volume 37, 4 2018.
- Jamone et al.  Lorenzo Jamone, Emre Ugur, Angelo Cangelosi, Luciano Fadiga, Alexandre Bernardino, Justus Piater, and Jose Santos-Victor. Affordances in psychology, neuroscience and robotics: a survey. IEEE Transactions on Cognitive and Developmental Systems, (August):1–1, 2016. ISSN 2379-8920. doi: 10.1109/TCDS.2016.2594134.
- Jimenez Rezende et al.  D. Jimenez Rezende, S. Mohamed, and D. Wierstra. Stochastic Backpropagation and Approximate Inference in Deep Generative Models. ArXiv e-prints, January 2014.
- Kingma and Welling  D. P Kingma and M. Welling. Auto-Encoding Variational Bayes. ArXiv e-prints, December 2013.
- Kurtoglu  Tolga Kurtoglu. A computational approach to innovative conceptual design. PhD thesis, The University of Texas at Austin, 2007.
- Kurtoglu and Campbell  Tolga Kurtoglu and M. I. Campbell. Automated synthesis of electromechanical design configurations from empirical analysis of function to form mapping. Journal of Engineering Design, 20(1):83–104, 2009. doi: 10.1080/09544820701546165. URL https://doi.org/10.1080/09544820701546165.
- Min et al.  Huaqing Min, Chang’an Yi, Ronghua Luo, Jinhui Zhu, and Sheng Bi. Affordance research in developmental robotics: A survey. IEEE Transactions on Cognitive and Developmental Systems, 8(4):237–255, 2016.
- Min  Patrick Min. binvox. http://www.patrickmin.com/binvox or https://www.google.com/search?q=binvox, 2004. Accessed: 2018-05-04.
- Nooruddin and Turk  Fakir S. Nooruddin and Greg Turk. Simplification and repair of polygonal models using volumetric techniques. IEEE Transactions on Visualization and Computer Graphics, 9(2):191–205, 2003.
- Umeda and Tomiyama  Y. Umeda and T. Tomiyama. Functional reasoning in design. IEEE Expert, 12(2):42–48, 3 1997. ISSN 0885-9000. doi: 10.1109/64.585103.
- Wu et al.  Jiajun Wu, Chengkai Zhang, Tianfan Xue, Bill Freeman, and Josh Tenenbaum. Learning a probabilistic latent space of object shapes via 3d generative-adversarial modeling. In D. D. Lee, M. Sugiyama, U. V. Luxburg, I. Guyon, and R. Garnett, editors, Advances in Neural Information Processing Systems 29, pages 82–90. Curran Associates, Inc., 2016. URL http://papers.nips.cc/paper/6096-learning-a-probabilistic-latent-space-of-object-shapes-via-3d-generative-adversarial-modeling.pdf.
- Wu et al.  Zhirong Wu, S. Song, A. Khosla, Fisher Yu, Linguang Zhang, Xiaoou Tang, and J. Xiao. 3d shapenets: A deep representation for volumetric shapes. In 2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 1912–1920, 6 2015. doi: 10.1109/CVPR.2015.7298801.
- Zech et al.  Philipp Zech, Simon Haller, Safoura Rezapour Lakani, Barry Ridge, Emre Ugur, and Justus Piater. Computational models of affordance in robotics: a taxonomy and systematic classification. Adaptive Behavior, 25(5):235–271, 2017. doi: 10.1177/1059712317726357. URL https://doi.org/10.1177/1059712317726357.