Keywords

1 Introduction

Modern production environments are characterized by an increasing level of automation. Especially in assembly processes, there is still a lot of potential to enhance efficiency and productivity by automating assembly processes. Key components of automated assembly systems are part feeding systems which transfer the assembly components from a disordered state (e.g. bulk material) to an ordered state, with a defined orientation and position. An example for widely used devices are vibratory bowl feeders [1]. They consist of a vibrating bowl with a spiral track. Due to the vibration, the components are transported up the track, which is equipped with different chicanes or traps that sort out (reject) components in undesired orientations. In order to achieve high feeding rates, the amount of rejected components should be minimized. Therefore, knowledge of the probabilities for a component to naturally adopt certain orientations (natural resting aspects, cf. Fig. 1) is essential for an efficient design of vibratory bowl feeders [2]. The design of the chicanes must allow components in highly probable orientations to pass and reject components in unlikely orientations. Apart from vibratory bowl feeders, knowledge of the natural resting aspects of a component is also valuable for the design of various types of conveying and part feeding systems like linear feeders, camera-based pick-and-place systems, or aerodynamic feeding systems [3].

Fig. 1
figure 1

Natural resting aspects of an L-shaped exemplary component

The experimental determination of the natural resting aspects in manual drop tests is very time-consuming because a component has to be dropped several hundred times and the resulting resting orientations have to be documented manually. This work presents a novel method for an automated determination of the natural resting aspects of arbitrary components with the use of a physics engine. In the first step, the component is imported into a physics engine in the common STL format (Sect. 3.1). Then, the virtual component is repeatedly dropped on a surface from a defined height with a random initial orientation (Sect. 3.2). The component bounces off the surface, changing orientation multiple times. When the component comes to a rest, its orientation is exported for further processing (Sect. 3.3). The extraction of the natural resting aspects from the exported data is explained in Sect. 4. Ultimately, the experimental evaluation is presented (Sect. 5) and the results are discussed (Sect. 6).

2 Related Work

In one of the first works regarding model-based determination of natural resting aspects, Boothroyd and Ho used the energy barrier between different orientations (resting aspects) of a component as an indicator for the stability of their resting aspects [2]. They assumed that the probability, a component comes to rest in a particular orientation is proportional to the energy needed to change the orientation. Boothroyd and Ho applied the method to simple, regular prismatic and cylindrical components and validated it experimentally with drop tests. The results showed high consistency [2]. However, even though the method is sometimes referenced for comparison, it was not developed any further (cf. [4]) and is strongly limited with regard to the component complexity.

To compensate the limitations mentioned above, Ngoi et al. presented the centroid solid angle (CSA) method [5]. Ngoi et al. proposed that the probability in which a component comes to rest on any of the feasible aspects is proportional to the solid angle from the centroid of the component to the considered aspects. They also proposed that the aforementioned probability is also inversely proportional to the height of the centroid from the considered aspect. In [5], the CSA method is compared to Boothroyd and Ho’s energy barrier method and successfully validated with experimental drop tests using a T-shaped prism as exemplary component. In following works, Ngoi et al. refined and evaluated the CSA method using different exemplary components, with a displaced center of gravity or form elements like bores or grooves, for example [6]. In [7], the method and the drop test results were also validated using a vibratory bowl feeder.

In [8], Ngoi et al. introduced and evaluated the critical solid angle (CRSA) method. For the CRSA method, they assumed that the probability that a component comes to rest on a certain aspect is proportional to the difference between the centroid solid angle of that aspect and the average of the critical solid angles of the surrounding aspects. The critical solid angle between two aspects of a component is determined by the critical position of the centroid when tilting the component from one aspect to another. A detailed explanation of the CRSA method is given in [8].

Chua and Tay developed the stability method, which analyzes the stability of a component when resting on a certain aspect. The stability is defined as a function of the contact area of the aspect with the surface the component is resting on and the distance of the center of gravity to said surface [9]. The stability is proportional to the contact area and inversely proportional to the distance of the center of gravity.

The described methods (energy barrier, CSA, CRSA and stability) were evaluated by Suresh et al. [10] and Udhayakumar et al. [11] using brake pads and sector shaped parts as exemplary components. The results show good accuracy for all methods.

In contrast to the analytical methods described above, Moll and Erdmann introduced a numerical approach to simulate drop tests with the aim to determine the optimal drop height and surface shape for a component to rest on a certain aspect [12]. They used a dynamic simulator to simulate the behavior of polyhedral rigid bodies when dropped on a surface from a defined height. However, the dynamic simulator was limited to two-dimensional components.

Várkonyi introduced numerical dynamic simulation to determine the natural resting aspects of randomly generated three-dimensional polyhedra [13]. The aim of this work was to create a dataset to compare the accuracy of three existing analytical methods and three estimators (developed by Várkonyi). Experimental results showed good agreement, when the components were dropped on a hard surface, but significant deviations, when the components were dropped on a soft surface. Boothroyd and Ho define a hard surface (e.g. metal, glass) as a surface with a negligible horizontal impact force (no friction) as opposed to a soft surface (e.g. rubber), where significant horizontal forces occur on impact [2]. For the dynamic simulation, Várkonyi only considered vertical impact forces, resulting in frictionless impacts, limiting the model to the simulation of drop tests on hard surfaces.

The review of the related work shows that there are multiple approaches towards a model-based analysis of natural resting aspects. However, the presented approaches are limited either with regard to the component spectrum, the usability and the adaptability of the simulated environment (e.g. surface properties, surface geometry). To counteract these limitations, a novel, more adaptable approach is presented in the following.

3 Drop Test Simulation Using a Physics Engine

In this paper, the physics engine integrated in Blender [14] is used for the simulation of the natural component behavior. The software is used to simulate a standard drop test where a component is dropped onto a soft surface from a constant height. Using the open-source physics engine Blender promises multiple advantages: The components can be imported in the common STL-format, which results in an accurate representation of the simulated component and a high flexibility with regard to the component spectrum. Furthermore, Blender offers Python-based script control, which enables full automation of the iterative drop test simulation. Lastly, the Environment can be adapted freely, meaning that the shape, inclination and other parameters of the surface can be adapted freely and walls or other restricting objects can be placed in the virtual setup. In this work, the framework for the drop test simulation and the identification of the natural resting aspects is presented and evaluated experimentally.

The drop test is performed for \(n\) iterations with random initial orientations and yields a distribution of the natural resting aspects of arbitrary components. Blender is particularly well suited for integrating the simulation model into a statistical test design due to its dynamic script control in Phython. Figure 2 shows the general program flow for performing drop tests of a component. The program is divided into the simulation environment preparation (Sect. 3.1), the simulation run (Sect. 3.2), and the export of the rotation data (Sect. 3.3).

Fig. 2
figure 2

Flow chart of drop test simulation

3.1 Preparation of the Simulation Environment

Firstly, the simulation environment is automatically set up in Blender using a python script. To do this, the plane on which the components fall, as well as the component itself, are imported as STL files. The local component coordinate system \({(CS)}_{W}\) is then relocated to the component’s center of gravity and aligned with the inertial coordinate system \({(CS)}_{0}\). After that, the component is moved to the constant drop height \(h\) with the vector \({}_{0}{\mathop{r}\limits^{\rightharpoonup}}_{W}={\left(0, 0, 60\right)}^{T}\text{mm}\). Lastly, the component is randomly oriented in \({\mathbb{R}}^{3}\) with uniform distribution (cf. Figs. 3 and 4a, b).

Fig. 3
figure 3

Initial position and orientation of a component in the simulation environment

Fig. 4
figure 4

Coordinate Transformation during the simulation

In the following, the simulation boundary conditions are defined. The simulation is a rigid body simulation, all components are modeled as ideal solid bodies and component deformation is neglected. The falling component is characterized as an active rigid body and is assigned a mass according to its density. It can move freely in \({\mathbb{R}}^{3}\) with 6 DOF. The plane, on the other hand, is defined as a passive rigid body and thus fixed in space. Subsequently, the gravitational field is defined with a constant acceleration of \(g=9.81 \frac{\text{m}}{{\text{s}}^{2}}\) in negative Z-axis of \({(CS)}_{0}\). Finally, the interaction of the two rigid bodies is determined. The surface response (bounciness and friction) is particularly important here. The bounciness \(b\) \((0\le b\le 1)\) describes the tendency of a rigid body to bounce after colliding with another, where 0 represents a completely inelastic collision and 1 a completely elastic one. The friction \(\mu (0\le f\le 1)\) describes the resistance between two touching rigid bodies with a relative velocity. For a collision behavior that matches the interaction with a soft surface, the bounciness is set to \(b=\) 0.8 and the friction is set to \(\mu =0.5\).

3.2 Simulation Run and Cancellation Criterion

For a representative distribution of the natural resting aspects of each component, the drop test is performed for a total number of \(n\) iterations. Each iteration \(i\) represents a dropping process of the component and results in a stable pose (natural resting aspect). To ensure that the component remains in a stable pose at the end of each iteration, a cancelation criterion is defined. Each iteration is divided into simulated frames \(f\). The density of frames can be set by the number of frames per second. For each frame \(f\) the simulated position of the components center of gravity and its orientation is saved. If neither the position nor the orientation changes for several frames in a row, the part is in a stable final pose, the simulation of the current iteration \(i\) is finished, and a new iteration is started. This process continues until all \(n\) iterations are simulated.

3.3 Export of Rotation Data

The last simulated frame of each iteration of the physics simulation returns a quaternion \({}_{0}{\mathop{\nu }\limits^{\rightharpoonup} }_{i}\), which gives information about the orientation of the component and a location vector \({}_{0}{\mathop{r}\limits^{\rightharpoonup}}_{i}\) which determines its position in the inertial coordinate system \({(CS)}_{0}\). A quaternion is a hypercomplex number and is constructed as follows:

$${}_{0}{\mathop{\nu }\limits^{\rightharpoonup} }_{i}=a+b{\user2{i}}+c{\user2{j}}+d{\user2{k}} \;with \;{\boldsymbol{ }{\user2{i}}}^{2},{{\user2{j}}}^{2},{{\user2{k}}}^{2}=-1 \;and\; a,b,c,d\in {\mathbb{R}}$$
(1)

The change of orientation represented by a quaternion is described by a rotation around \({}_{0}{\mathop{x}\limits^{\rightharpoonup}}_{i}\) in \({\mathbb{R}}^{3}\) with the angle \(\varphi \). The coefficient \(a\) represents the rotation angle with.

\(a=\mathrm{cos}(\varphi )\), and \(b, c, d\) represent the coefficients of the rotation axis \({}_{0}{\mathop{x}\limits^{\rightharpoonup}}_{i}\).

$${}_{0}{\mathop{x}\limits^{\rightharpoonup}}_{i}=\left(\begin{array}{c}{}_{0}{x}_{1}\\ {}_{0}{x}_{2}\\ {}_{0}{x}_{3}\end{array}\right)=\frac{1}{\mathrm{sin}({\mathrm{cos}}^{-1}(a))}\cdot \left(\begin{array}{c}b\\ c\\ d\end{array}\right)$$
(2)

Each quaternion \({}_{0}{\mathop{\nu }\limits^{\rightharpoonup} }_{i}\) indicates the rotation of \({(CS)}_{0}\) into \({(CS)}_{Wi}\) (cf. Fig. 4).

4 Data Evaluation and Identification of Natural Resting Positions

The data exported from Blender, which provide information about the orientation and position of the individual final poses, are imported into a MATLAB framework and processed in the next step. To get a probability distribution of the final poses (natural resting aspects), the raw data are evaluated and sorted. The component pose can be precisely determined or assigned by specifying its orientation. However, there are several component poses representing the same natural resting aspect. To determine which poses represent the same resting aspect, a classification feature based on the rotation data (quaternion) was worked out. It states that two poses can be assigned to the same resting aspect if the coordinate systems can be transformed into each other by a pure rotation around the Z-axis of the coordinate system \({(CS)}_{0}\). Figure 4c shows two different component orientations (\({}_{0}{\mathop{\nu }\limits^{\rightharpoonup} }_{2},{}_{0}{\mathop{\nu }\limits^{\rightharpoonup} }_{3}\)). In both cases the X-axis and Y-axis are aligned with the ground surface which means the component rests on the same of its aspects. Both orientations therefore represent the same natural resting aspect.

To classify the final component poses into natural resting aspects, all orientations \({}_{0}{\mathop{\nu }\limits^{\rightharpoonup} }_{i}\) (with \(i=1\dots n\)) are systematically compared with each other. In the following, two iterations of the drop test and thus two different end orientations are used to explain the classification algorithm. The first orientation is represented by the quaternion \({}_{0}{\mathop{\nu }\limits^{\rightharpoonup} }_{i}\), the second one by the quaternion \({}_{0}{\mathop{\nu }\limits^{\rightharpoonup} }_{i+1}\). To compare the two orientations, \({}_{0}{\mathop{\nu }\limits^{\rightharpoonup} }_{i}\) is multiplied with the complex conjugate of \({}_{0}{\mathop{\nu }\limits^{\rightharpoonup} }_{i+1}\). The resulting quaternion \({}_{i}{\mathop{z}\limits^{\rightharpoonup}}\) then describes the rotation of the first orientation \({(CS)}_{i}\) into the second orientation \({(CS)}_{i+1}\):

$${}_{i}{\mathop{z}\limits^{\rightharpoonup}}= {}_{0}{\mathop{\nu }\limits^{\rightharpoonup} }_{i}\cdot {}_{0}{\mathop{\overline{\nu} }\limits^{\rightharpoonup} }_{i+1}$$
(3)

According to Eq. (2), the axis of this rotation \({}_{i}{\mathop{x}\limits^{\rightharpoonup}}_{i,i+1}\) is extracted and then transformed into the inertial coordinate system \({(CS)}_{0}\):

$${}_{0}{\mathop{x}\limits^{\rightharpoonup}}_{i,i+1}={}_{0}{\mathop{R}\limits^{=}}_{i}\cdot {}_{i}{\mathop{x}\limits^{\rightharpoonup}}_{i,i+1}$$
(4)

As already mentioned, two orientations represent the same pose if the rotation axis \({}_{0}{\mathop{x}\limits^{\rightharpoonup}}_{i,i+1}\) is parallel to the Z-axis of \({(CS)}_{0}\):

$${}_{0}{\mathop{x}\limits^{\rightharpoonup}}_{i,i+1}={\left(0\,0\,1\right)}^{T}$$
(5)

Each quaternion of \({}_{0}{\mathop{\nu }\limits^{\rightharpoonup} }_{i}\) is thus assigned to one of \(m\) stable component poses. The result is a probability distribution of the natural resting aspects. The results are automatically plotted in a pie chart with a corresponding figure of each stable resting aspect (Fig. 6).

5 Experimental Evaluation

For the experimental evaluation, the results of the simulated drop tests are compared to the results of manual drop tests using five different 3D-printed exemplary components (Fig. 5). They vary in shape and are intended to cover a wide spectrum of possible components in reality. For both the simulated as well as the manual drop tests, each component is dropped on a soft surface 1000 times (n = 1000) from random initial orientations. In the experimental setup, the soft surface consists of a 2 mm thick rubber mat adhered to a wooden board.

Fig. 5
figure 5

Exemplary components (3D-printed, no infill)

6 Results

Figure 6 shows the results of the simulated and experimental drop tests. The results show that with two exceptions, all possible natural resting aspects of the components were identified. The exceptions occur for component 5, where the resting aspects 4 and 5 have a very small probability of occurrence. Both the simulation as well as the experimental drop tests each failed to identify one of the said resting aspects. The reason for this is that these resting aspects occur with a very low probability. Therefore, the number of drop tests (1000) may not be sufficient to reliably identify all natural resting aspects and could be increased in future works.

Fig. 6
figure 6

Comparison of simulated and experimental drop test results for five components

The average deviation between the probability of occurrence of a resting aspect predicted by the simulation model and the experimental results is 6.4%. However, the accuracy varies depending on the considered component. Components 2, 3 and 5 have an average deviation of 3.2, 1.7 and 6.7% respectively, while the results of components 1 and 4 deviate by 10.0 and 10.4% on average. The highest deviation occurs in component 4 with a deviation of 31.2% for orientation 6 (Figs. 6 and 7).

Fig. 7
figure 7

Natural resting Aspects of Component 4

In their extensive experimental evaluation Udhayakumar et al. determined average deviations of 11.1, 8.5 and 8.7% between the experimental results and the results returned by the CSA-, stability- and CRSA-method respectively [11]. They investigated eight different sector shaped components. The maximum deviation in [11] was 23.3%.

The deviations between simulation and reality can have different reasons. As already mentioned, it can be assumed that a larger sample, i.e. iterations per component in the simulation as well as in the real drop test, can lead to a higher agreement of the data. However, the larger deviations (component 1: aspect 1 and 3 (cf. Fig. 1); component 4: aspect 3 and 6) cannot be explained by an insufficient sample size. It is assumed that differences of the bouncing and damping behavior of the components and the surface between the simulation and the real test setup are a major factor for these deviations. Furthermore, the influence of the drop height on the resting aspects was not taken into account and could also lead to significant deviations.

7 Conclusion and Outlook

In this work, a novel method for the automated determination of natural resting aspects of arbitrary components by means of a physics engine was presented. The physics engine iteratively simulates a drop test and exports the resulting resting poses of the component. A MATLAB framework then compares all exported component orientations, automatically clusters them, and returns the probability distribution of the natural resting aspects. An experimental evaluation of the new method shows promising results with an average deviation of 6.4% between simulated and experimental results. Nevertheless, for some components, the deviation between simulated and experimental probability of particular resting aspects is higher. In order to increase the simulation accuracy, to extend the validated component spectrum, and to include external influences, future work will focus on two aspects:

  1. 1.

    Extensive studies based on DoE methods will be carried out with multiple, more complex components. Using the acquired data, the simulation model will be parameterized with regard to the surface bounciness and friction (cf. Sect. 3.1) to increase the determination accuracy. Furthermore, the studies will validate the flexibility of the novel method with regard to the component geometry.

  2. 2.

    The simulation model will be modified to include the influence of a complex environment (e.g. inclination, walls) on the resting aspects of a component. The modifications will be validated on the concrete application of a newly developed, vision-based aerodynamic part feeding system [3].