Functional Modeling
Functional Modeling
Duygu Ceylan1
Wilmot Li2
Niloy J. Mitra3
Maneesh Agrawala4
Mark Pauly1
2
3
4
EPFL
Adobe Research
University College London
University of California Berkeley
Figure 1: We present a method for generating the design of a mechanical automaton (bottom row) that approximates an input motion
sequence (top row). Our algorithm automatically determines the configuration, dimensions, and layout of all mechanical components.
Abstract
Introduction
Mechanical figures that mimic human motions continue to entertain us and capture our imagination. Creating such automata requires expertise in motion planning, knowledge of mechanism design, and familiarity with fabrication constraints. Thus, automaton
design remains restricted to only a handful of experts. We propose an automatic algorithm that takes a motion sequence of a humanoid character and generates the design for a mechanical figure
that approximates the input motion when driven with a single input
crank. Our approach has two stages. The motion approximation
stage computes a motion that approximates the input sequence as
closely as possible while remaining compatible with the geometric
and motion constraints of the mechanical parts in our design. Then,
in the layout stage, we solve for the sizing parameters and spatial
layout of all the elements, while respecting all fabrication and assembly constraints. We apply our algorithm on a range of input
motions taken from motion capture databases. We also fabricate
two of our designs to demonstrate the viability of our approach.
Mechanical automata are machines that use a combination of interconnected mechanical parts such as cranks, gears, and pulleys to
convert a driving force into a specific target motion. Since antiquity, mechanists have created a wide variety of such machines for
many different purposes (e.g., clocks, music boxes, fountains). Automata designed to look like human figures performing every-day
actions like walking, waving, etc. are especially popular. Famous
historical examples include Leonardo Da Vincis life-sized armorclad robot from 1495 that could sit, stand and move its arms, as
well as theDraughstman-Writer of Henri Maillardet from the late
18th century, which was the primary inspiration for the automaton in Brian Selznicks book, The Invention of Hugo Cabret. Today, wind-up toys in the form of characters are the most common
types of mechanical figures. Our longstanding fascination with humanoid automata likely stems from their ability to produce surprisingly complex, lifelike motions from simple input forces through
purely mechanical means (see Figure 2).
CR Categories: I.3.5 [Computer Graphics]: Computational Geometry and Object ModelingPhysically based modeling I.3.7
[Computer Graphics]: Three-Dimensional Graphics and Realism
Animation
Keywords: mechanical assembly, humanoid motion, computational design, fabrication constraints, automaton
Links:
DL
W EB
V IDEO
DATA
C ODE
Figure 2: Examples of mechanical automata: Da Vincis mechanical knight; Maillardets writer; an aviation chronograph.
Related Work
Layer 1:
li-1
li-1
Ri-1
moving pivots
Layer 2:
Di
Ai
Bi
Layer 3:
Ri-1
Ci
fixed pivots
connector
Di
moving pivots
Di
Ai
Bi
li
revolute joint
Ri-1
axles
Layer 5:
Pi
Qi
Ri
li
(c) Driving li
fixed pivots
Qi
Pi
li
Ri-1
Ri
Pi
Di+1
Ci
connector
Ci
revolute joint
Layer 4:
Bi
Ai
Qi
Di+1
(b) Oscillation module: exploded view
Ri
Di+1
Figure 3: Oscillation module. In our design, we drive the rigid links of the automaton with oscillation modules that consist of gears, pulleys,
and four-bar linkages (ab). These components are stacked onto axles that are connected to each link. We show the stacking order of the
parts (a) starting from the bottom layer (Layer 1), as well as an exploded view (b) of the module that shows the axles and rigid connectors.
The module converts an input rotation to an oscillating motion (b) and also propagates a uni-directional rotation to the next module (c).
different phases and frequencies. Our approach is fully automatic
consisting of a motion approximation stage to convert the input sequence into a mechanically realizable motion and a layout stage to
optimize for the placement and parameters of the elements of the
designed automaton.
Shape analysis. Researchers have investigated how to retarget input poses/motions using articulated motions by determining joint
locations and types. For example, Xu et al. [2009] analyze input
models based on local slippage analysis to assign appropriate joint
types and support joint aware deformations. In the context of mapping human motion to humanoid robots, Pollard et al. [2002; 2003]
impose joint angle and velocity limits to a captured human motion
to match the less flexible skeleton of a robot. Mitra et al. [2010]
analyze static 3D meshes of mechanical assemblies to understand
their part interactions and resulting inter-part motion possibilities.
Recently, Bacher et al. [2012] augment skinned meshes with 3D
printable joints that do not require any assembly. Users can then
pose these models into different configurations. In contrast, we start
from an articulated 3D figure and focus on automatically generating a mechanical automaton that recreates an input motion sequence
when driven by a single input crank.
Fabricatable models. The advent of accessible 3D fabrication
techniques has led to recent work on various fabrication-aware
modeling techniques, including optimizing geometry towards creating functionally valid furniture [Umetani et al. 2012]; improving stability and robustness of printed models with thin structures [Stava et al. 2012]; creating complex assemblies of planar intersecting pieces [Schwartzburg and Pauly 2013]; creating
assembly-free printable articulated models [Cal` et al. 2012]; and
decomposing large models into smaller parts that can be printed
and assembled [Luo et al. 2012]. These methods generate static
models, while our goal is to create moving mechanical figures that
recreate a target motion.
3.1
Before describing the details of our motion approximation and layout optimization, we first introduce the basic mechanical design that
we use to generate a moving automaton.
Our design represents the bones of the
input figure with rigid links. Since
many human motions are characterized primarily by the movement of
the limbs, we connect the arm and
leg links with revolute joints to create points of articulation at the shoulders, elbows, hips and knees of the automaton. We orient these joints such
that the motion of all the links within
a limb lies in a single plane that is parallel to the saggital, coronal or transverse plane of the figure (see the inset
figure).
saggital
coronal
transverse
revolute joint
head-shoulderstorso-hips
left arm
right arm
left leg
right leg
While constraining limb motions to these orthogonal planes limits the range of movements that our mechanisms can achieve, this
design makes it possible to transfer the rotation of a single input
motor to the motion plane of each limb using standard bevel gears,
which convert rotation across orthogonal planes. Furthermore, as
our results show, there are many human movements in which the
motion of the limbs is mostly parallel to one of these planes (e.g.,
hi
bi
Di
Ai
ci
i(0)
i (t) = arctan
i(0)
gi
Si (t)
Ti (t)
+ arccos
Ui (t) Vi (t)
Wi (t)
(1)
i-1(t) - i-1(0)
ti
Di
Ai
(2)
where (i1 (t) i1 (0)) denotes the total rotation of Ci1 (and
thus the attached link li1 ) with respect to its initial angle at time t.
Since the root module M1 that drives the first link l1 in the chain is
attached to the main support structure of the automaton rather than
a moving link, we define 0 (t) to be 0 for all t.
Our design imposes a few contraints on the motion parameter values. To ensure that the input crank Bi of the linkage can rotate fully
when driven by Di , we constrain the relative lengths of the linkage
bars as follows [McCarthy 2000]:
gi + bi hi ci
(hi ci )2 (gi bi )2
<0
<0
Bone
Approx
t
(a) Initialize motion approximation based on Fourier decomposition
3.2
Motion approximation
t
(b) Optimize four-bar linkage parameters: bi, ci, gi, i, i
i
t
(c) Optimize input angular speed i and pulley ratios pk
where cos(i (1)) denotes the initial orientation of the bone with
respect to its parent and cos(i (0)) = 0. Converting the rotation
of a single input crank to motion in different planes requires the
use of bevel gears. Since standard bevel gears only allow changing
the rotation axis across orthogonal planes, we snap the plane of
motion for each limb to the saggital, coronal or transverse plane of
the figure.
Motion parameter optimization
Given the planar bone rotation angles i (j) for each chain, our goal
is to compute motion parameters that approximate the mocap bone
motion with the corresponding rigid links in the automaton. Since
each link li is driven by the output crank Ci , we aim to produce a
mechanical motion where changes in the crank angle i (t) match
changes in the bone angles i (j). Thus we define the following
energy term for each chain:
Ei =
There are also a few constraints that reflect limitations of our fabrication process.
1. We manufacture gears Di and Ai with a laser cutter, which
limits the minimum and maximum sizes (i.e., tooth counts)
of these components. In our designs, we constrain the tooth
count to be between 14 and 80.
2. Similarly, we constrain the lengths of the linkage bars based
on the minimum bar length (8mm) that we can cut.
3. Finally, since it is difficult to create robust pulley wheels and
belts with a laser cutter, we use stock pre-made pulley parts
that are only available in a discrete set of wheel and belt sizes.
To encode this constraint in our layout parameterization, we
introduce a set of binary indicator variables {u1 , u2 , ..., uN }
to select between the N available part sizes {v1 , v2 , ..., vN },
P
and we represent the size of each pulley part as N
i=1 ui vi
PN
with the constraint i=1 ui = 1.
This set of layout parameters and constraints fully specifies the
physical layout of a limb mechanism in our design. Section 3.3
describes how we solve for a layout that matches a set of target
motion parameters.
yi (j 1)
yi (j)
,
kyi (j)k kyi (j 1)k
XX
i
i (j) i (j)
sin
2
2
(3)
constraints involving the linkage parameters described in the previous section. We use the SQP method implemented in the MATLAB
Optimization Toolbox to solve these optimization problems, which
typically converges in 5-10 iterations.
The non-linearity of the objective function defined in Equation 3
mandates a good initialization of the optimization variables to obtain a valid minimum. Since we are considering periodic motions,
we employ a frequency-space analysis for this purpose. More precisely, we initialize the motion parameters using a Fourier decomposition on the rotation angles of each bone in the chain. The motion of each bone is then approximated using the Fourier component
of highest magnitude as
3.3
Given a simplified motion, the next step is to compute layout parameters for the oscillation modules of each kinematic chain that
match both the target motion parameters and relative bone lengths
of the input figure as closely as possible. As described in Section 3.1, the layout is defined by continuous parameters (i , sli ),
discrete parameters (kDi , kPi , kRi , kQi ), and the binary indicator
variables for the pulley part sizes. Thus, we use mixed-integer programming to search over the space of possible solutions.
Energy function
(4)
Our energy function encodes several desired properties for the layout of each kinematic chain.
Propagated rotation. At the end of the motion parameter optimization step, we have computed a desired angular speed 1 driving the
root module M1 of each chain and the ratios of the pulley wheel
radii, pi , that specify how the input rotation should be propagated
to the remaining modules in the chain. Several layout parameters
determine the actual values of 1 and pi in the final automaton. In
our designs, the input crank of the automaton drives an input gear
whose rotation is propagated to the driving gear D1 of each root
module M1 . Thus, the angular speed driving M1 can be expressed
as 1 = I kI /kD1 where I is the constant angular speed of the
automaton input crank, kI is the tooth count of the input gear, and
kD1 is the tooth count of D1 . The pulley ratios pi can simply be
expressed as kPi /kRi (i.e., the ratios of the corresponding pulley
wheel tooth counts).
To prevent having too short or too long bars upon scaling of the
four-bar linkage, we add an additional energy term to penalize large
ratios between the bar lengths. Specifically, we define the following
relations between the bar lengths:
i =
and add the energy term below to the first step of the optimization:
i
Ebar
=
i
1
i
2
2
2
1
1
+(i 1)2+
1 +(i1)2+
1
i
i
Finally, in order to reduce drift in the motion of the links over time,
we introduce a periodicity constraint in the second step of the optimization. Specifically, assuming the provided motion sequence
contains one cycle of the desired motion, the period of the overall
motion is n frames. Each oscillation module should return back
to its initial state at the end of the motion cycle. Thus, the periodicity of each bone in the chain is an integer divisor of n, and
the input crank of the corresponding four bar linkage should be rotated by an integer multiple of 2, 2mi during the given motion
cycle. In addition to the propagated input rotation parameters, we
also solve for these discrete multipliers mi . However, since both
E and the constraints defined in Section 3.1 are non-linear, we
treat mi as a continuous variable and adopt a branch and bound
strategy to round them to integer values. Specifically, starting at
the root module, at each iteration we round mi to bmi c and dmi e
and choose the value resulting in smaller optimization error. We
observed that duplicating the input motion several times (10 in our
experiments) and running the motion approximation to this longer
cycle improves the approximation results while still satisfying the
periodicity constraints.
(6)
where zp is a constant defining the distance between two consecutive teeth of the pulley wheels or belt.
The pulley wheels P1 and R1 that drive the second link l2 of each
chain are part of the root module M1 . Since M1 is attached to the
main support structure of the automaton rather than a link in the
chain, the tooth count kQ1 of the pulley belt Q1 is not constrained
by the length of a link. Instead, kQ1 depends on the tooth counts of
the pulley wheels, P1 and Q1 , the input gear D1 , and the distance
1 g1 between the fixed pivots of B1 and C1 :
kQ1 zp = zp (kP1 + kR1 )/2 + 2(zp kD1 + 1 g1 )
(7)
In practice, a small amount of slack in the pulley belt does not prevent the mechanism from functioning properly. Therefore, instead
of treating the above equalities as hard constraints, we define an
energy term to penalize the difference between the belt length kQi
chosen from the discrete set of available options and the ideal belt
length defined by the layout of the mechanism:
Epuli
kP +kR
i2
if i = 1
if i > 1
four-bar linkage
pulleys
oscillation module
bevel gears
Figure 6: The basic components of our automata. From left to right: Four-bar linkages transfer a rotational motion into an oscillating
one. Belts and pulleys are used to propagate the input rotation along the kinematic chain. An oscillation module joins these components
to represent one bone of the figure. Bevel gears change the orientation of the input rotation. Our optimization solves for the configuration,
dimensions, and placement of all these components to best approximate a given input motion sequence.
where we set = 1 to allow for the slack. Note that the pulley
part sizes referenced in this formulation are represented by the corresponding binary indicator variables as described in Section 3.1.
Link lengths. Each link in the chain should be long enough to
accommodate the parts attached to itself. However, in order to preserve the shape of the input figure, the length sli of each link should
also match as closely as possible the corresponding relative bone
length sbi . The dimensions of the bones are defined up to a scale
using a free scale variable . Thus, the desired length of each rigid
link is sli = sbi . To penalize the deviations from the original bone
lengths, we add the following term to our energy function for each
link:
Esli = (sli sbi )2
We further desire symmetric bone pairs (e.g., left and right upper
leg bones) to have similar lengths. For each such symmetric bone
pair, we penalize the differences between the corresponding link
lengths as,
Esij = (sli slj )2 .
Combined energy function. We combine all the energy terms for
each link li in each serial chain cj to obtain the final energy function:
E=
X X
cj li cj
wsij Esij ,
i,jS
Given the energy function E and all the linear hard constraints
described above, we formulate the optimization as a mixed integer programming problem and solve it using a branch-and-bound
technique. More specifically, we use the constrained mixed-integer
solver CoMISo [Bommes et al. 2012] that provides a wrapper to the
Gurobi solver [Gurobi Optimization 2012]. During the optimization process, the solver treats the discrete unknowns as continuous
variables and generates a solution where these variables have fractional values. The solver then constructs a search tree where each
branch represents the result of constraining a discrete variable to
either the floor or ceiling of its fractional value from the continuous solution. In our experiments, this optimization process takes
around 100 seconds to find a feasible solution for a problem with
360 binary, 10 integer, and 10 continuous variables. The result of
the optimization is a set of layout parameters that fully define the
size of the mechanical parts in each oscillation module.
(a) parallel-plane
layout
(b) multi-plane
layout
3.4
The final step in our pipeline composes all the kinematic chains into
a unified design that can be driven by a single input crank. This
process involves choosing the orientation and position of the crank
and then generating mechanisms that propagate the crank rotation
to the root module of each moving chain in the automaton. In our
designs, we attach the input crank to the torso link of the figure and
use pulleys and bevel gears (if necessary) to propagate the rotation.
We arrange these pulleys and bevel gears on the stationary torso,
head and (in some cases) shoulder links based on the orientations
of the motion planes for the moving limbs.
Parallel-plane layout: If the motion planes of the moving limbs
are all parallel to either the saggital or coronal planes of the figure,
we orient the input crank, torso and head links parallel to the motion plane (see Figure 8(a)). Recall from Section 3.1 that the root
module of each chain must be placed on one of the stationary links.
We position the root modules of the arms on the head link, and we
put the root modules of the legs on the torso link. Finally, we use
pulleys to connect the input crank to the driving gear of each root
module. If the limbs move parallel to the saggital plane, we position the pulleys on the left and right sides of the torso/head links,
and for coronal plane motion, we put the pulleys on the front and
back sides of the torso/head links.
Multi-plane layout: If the motion planes of the moving limbs are
all parallel to the transverse plane, or if the motion planes are not
all parallel to each other, we incorporate bevel gears into our unified
design (see Figure 8(b)). If all of the non-tranvserse motion planes
are parallel to the coronal plane, then we orient the input crank,
torso and head links parallel to the coronal plane as well. Otherwise, we orient these components parallel to the saggital plane. We
orient the root module of each chain so that its rotation plane is parallel to the rotation plane of the input crank. As in case 1, we place
the root modules for the arms and legs on the head and torso links,
Figure 7: Physical prototype of dancing motion sequence. (Please refer to the supplementary video.)
respectively. For chains whose motion plane is orthogonal to the
rotation plane of the input crank, we use bevel gears to convert the
rotation of the root module output crank C1 and pulley wheel R1 to
the appropriate motion plane.
Special case: Where the motion plane of an arm is parallel to the
coronal or transverse plane (as in the dancing example in Figure 9)
we use the shoulder link as an additional support structure to accommodate the root module of the arm. We orient the shoulder to
be parallel to the motion plane of the arm, and if the input crank
rotates in a different plane, we add a bevel gear configuration to
convert the input crank rotation to the appropriate motion plane.
forward kinematics to qualitatively validate how faithfully the sequences recreate the input motion. Specifically, we build a mechanism graph G = (V, E), where each node vi V represents a
part (e.g., a gear or a pulley) and each edge eij E connecting the
vertices vi and vj represents the relation between the corresponding parts. In our setup, the typical relations include the coaxial or
parallel-axis properties of the gears, and the motion chains comprising of pulleys and four-bar linkages. At every frame of the motion
sequence, we assume that the input crank rotates clockwise with a
constant speed. We propagate this rotation along the edges of the
mechanism graph to compute the position and orientation of each
component in the mechanism. Note that by construction, the graphs
are free of any loops.
Evaluation
We fabricated automata for two of the designed sequences, one for each of the major types of layout configurations:
the walking sequence (see Figure 1), which does not require any
bevel gears; and the dancing sequence (see Figure 7), which involves motion in two different planes. We used off-the-shelf pieces
for the bevel gears, pulleys, and pins. The linkages and gears were
laser cut based on the dimensions as prescribed by our optimization. The most time consuming part was assembling the pieces,
which was done manually. However, given that our design consists of similar modular components (i.e., the oscillation modules)
the assembly process was relatively straightforward (albeit somewhat tedious). Finally, we used a single speed motor to drive the
automata. Figure 1 and 7 and the supplementary video show our
fabricated automata in motion. Note how subsequent joints oscillate at different phases and with different periods.
Fabrication.
In order to evaluate how well our planar motion simplification algorithm approximates various human motions, we analyzed a large number of mocap sequences from existing databases.
Data sets.
We first trace the path Xi = {xi (1), xi (2), ..., xi (n)} of the endpoint of the ith bone of a kinematic chain cj at each frame of
the input motion. We compute the common least squares plane
Pj (n, d) of all such paths for cj . We then measure the fitting
error asP
the deviation
from a planar motion over n frames as
P
Ej :=
bi cj
n (n xi (n) + d). In order to account for differences in the lengths of the paths traced by each bone, we normalize the
by the total length of the paths, measured as
P errorP
mj :=
bi cj
n kxi (n + 1) xi (n)k. The final planar fitting score of the motion is then computed over all the chains as
Mp := minj mj /(Ej + ) with = 0.01 used as a regularizer.
Essentially, Mp measures how well a non-trivial motion can be approximated using a set of planes, one for each chain.
We tested our algorithm on a total of 80 mocap sequences from
the CMU motion database. We found the following motion types
(about 40% of the database) to be well suited for our algorithm:
walking, running, jogging, exercising, waving, drinking as they
consistently get high scores (Mp > 10). We call them good motion
types. On the other hand, sequences like swimming, swordplay,
fishing (Mp < 2) contain large out-of-plane motions, and hence our
algorithm cannot replicate them faithfully. In Figure 9, we present
representative realizations for some of the good motion types (see
also the accompanying video).
Our system produces a mechanical automaton design for a given input motion. We simulate the mechanism using
Simulation.
In all of our example automata the torso of the figure has been used
as the main support structure. In the dancing example, the shoulders
have been used as an additional support structure since the arms
move parallel to the transverse plane of the figure. As described
in Section 3.4, to propagate the rotation of the driver gear to each
kinematic chain, pulleys are used to fill up the space between the
EXERCISING
f=97
f=156
f=197
f=248
JUMPING JACK
f=20
f=135
f=10
f=25
f=155
f=275
BALLERINA
f=15
f=125
f=155
Figure 9: Example automata generated by our system. For each example, snapshots of the original motion sequence in different time frames
(denoted by the numbers) and the corresponding simulation result of the automata are given. The bevel gear configuration used in the
ballerina sequence is shown in orange.
Limitations.
(i) Since our automata are based on predominantly planar linkages, our initial planar projection step for each kinematic chain can
significantly distort certain types of mocap sequences (e.g., swimming). Further, in order to simplify the fabrication/assembly processes, we generate automata driven by a single actuator that use
standard planar mechanical components and standard bevel gears.
These decisions impose additional constraints in the motion approximation step of our method. Better approximations can possibly be obtained by adding other types of mechanical elements
(e.g. non-circular pulleys) at the cost of increased complexity of
the optimization and the resulting automata.
(a) captured motion
(ii) We assume periodic motions as input to allow driving the automaton indefinitely with a constant-speed input rotation. While
we did not observe noticeable drift for extended operation of our
assemblies, machining imprecisions or mechanical wear could potentially cause temporal deviations that over time reduce the accuracy of the motion approximation. At a certain point, the automaton
might have to be partially disassembled to re-align the parts to the
original configuration.
driver gear and the root of the chain along the support structure.
While bevel gears enable mechanisms with arbitrary orientation of
motion planes for different kinematic chains, such gears can be difficult to manufacture depending on the fabrication method. For example, it is not possible to create bevel gears with a standard laser
cutter. In motion sequences where different kinematic chains move
in nearly-parallel planes, the use of bevel gears can be avoided
by mapping the input sequences to motions restricted to parallel
planes. In the walking, exercising, and jumping jack examples, we
show that plausible motion approximations can be generated despite this restriction. However, in the dancing automata, the use of
bevel gears is necessary since the arms move in an orthogonal plane
to the legs.
In our examples, we have primarily used motions selected from
the existing motion databases as input. However, recent advances
in commercial motion sensing input devices such as the Microsoft
Kinect enable easy tracking of the human skeleton and thus provide
an interface to directly capture input motions. We demonstrate the
flexibility of our input requirements with the kendo sequence (see
Figure 10 and the supplementary video). To produce this result,
we used the Kinect to record a performance, extracted the human
skeleton with the commercial tool ipi Soft [2013], and then used the
skeleton motion as input to our system.
Although our system has a fully automatic mode,
the user can also control the final design in various ways.
User control.
(i) Depending on the target fabrication method, the user can provide
additional constraints. Based on the specification of our laser cutter,
we used minimum and maximum gear tooth counts of 14 and 80
(given a 1mm tooth size). These constraints have a direct effect
on the realization of the desired motion, specifically for links that
require a large change in input angular speed.
(ii) Our system restricts the motion planes of the limbs to be parallel
to the saggital, coronal or transverse plane of the figure. The user
can also manually specify the motion plane orientations. We use
the automatically generated motion planes in our results.
(iii) Finally, the user can set a threshold for the minimum angular
range for the motion of the bones (0.35 radians in our results). We
set bones oscillating with an angular range less than this threshold
to be fixed, thus reducing the complexity of the generated mechanisms.
Conclusion
In this paper, we have presented an algorithm to automatically realize a mechanical automaton starting from an input mocap sequence.
Our work includes three main contributions. We introduce an oscillation module design that can generate kinematic chain motions
with links that oscillate at different phases and frequencies. We
also describe a motion approximation algorithm that converts an
input sequence to a mechanically realizable motion. Finally, we
present an automated method for determining the parameters and
spatial layout of mechanical parts that takes into account physical
and fabrication constraints. Our results demonstrate that our proposed approach can generate mechanical automata that reproduce
non-trivial human motions with multiple moving limbs.
We see several interesting avenues for future work:
Perception of human motion: In the motion approximation part
of our method, we use an objective function based on the rotation
angles of each joint. Our intuition is that the changes in joint angles
have a significant effect on how we perceive a motion since they are
visually well exposed in the static body posture. Developing better
perceptual metrics for comparing human motions is an interesting
avenue for future work.
Joint optimization of motion and layout parameters: Our current
method optimizes for the motion parameters of the mechanism first,
and then solves for the layout of the parts. It is possible that a joint
(or perhaps iterative) optimization of these parameters could produce better motion approximations in the final automaton designs.
Self-standing automaton: It would be interesting to consider the
design of self-standing mechanical figures that remain balanced
while they move. Generating such automata would require a
method that accounts for both the stability of the design as well
as the target motion. One challenge here is that the placement of
mechanical components (e.g., gears, linkages) affects the weight
distribution and thus the stability of the automaton.
Integrated designs: It might be possible to fabricate automata with
embedded movable parts that do not require assembly. If the goal
is to place all of the mechanisms within the volume of the figure,
this would likely require very compact arrangements of mechanical
parts.
Extension to other mechanism types: The basic building block of
Acknowledgements
We thank the anonymous reviewers and Nobuyuki Umetani for their
valuable comments. We thank Minh Dang for performing the kendo
sequence and Zohreh Sasanian for helping with the assembly of
the physical prototypes. We are grateful to the ENAC Output Center at EPFL for providing us with the laser cutting facilities and
Tina J. Smith for the video voice over. This research has received
funding from the European Research Council under the European
Unions Seventh Framework Programme (FP/2007-2013) / ERC
Grant Agreement 257453, ERC Starting Grant COSYM, a Marie
Curie CIG, an Adobe Research grant, and a UCL impact award.
References
S AFONOVA , A., P OLLARD , N., AND H ODGINS , J. K. 2003. Optimizing human motion for the control of a humanoid robot. In
Intl. Symp. on Adaptive Motion of Animals and Machines.
B ACHER
, M., B ICKEL , B., JAMES , D. L., AND P FISTER , H.
2012. Fabricating articulated characters from skinned meshes.
Proc. ACM SIGGRAPH 31, 4, 47:147:9.
B OMMES , D., Z IMMER , H., AND KOBBELT, L. 2012. Practical mixed-integer optimization for geometry processing. In Intl.
Conf. of Curves and Surfaces, 193206.
C AL`I , J., C ALIAN , D. A., A MATI , C., K LEINBERGER , R.,
S TEED , A., K AUTZ , J., AND W EYRICH , T. 2012. 3d-printing
of non-assembly, articulated models. ACM TOG (SIGGRAPH
Asia) 31, 6, 130:1130:8.
C ARNEGIE M ELLON U NIVERSITY, 2003. Cmu graphics lab motion capture database.
C OROS , S., T HOMASZEWSKI , B., N ORIS , G., S UEDA , S., F OR BERG , M., S UMNER , R. W., M ATUSIK , W., AND B ICKEL , B.
2013. Computational design of mechanical characters. Proc.
ACM SIGGRAPH 32, 4 (July), 83:183:12.
F REUDENSTEIN , F. 2010. Approximate synthesis of four-bar linkages. Resonance 15, 8, 740767.
G UROBI O PTIMIZATION , I., 2012. Gurobi optimizer reference
manual.
H ALLER , K., J OHN , A. L.-S., S ITHARAM , M., S TREINU , I.,
AND W HITE , N. 2009. Body-and-cad geometric constraint systems. In Proc. Symp. on Applied Computing, ACM, 11271131.
H AN , Y.-H., AND L EE , K. 2006. A case-based framework for
reuse of previous design concepts in conceptual synthesis of
mechanisms. Computers in Industry 57, 4, 305 318.
IPI