An Implementation of The Spacetime Constraints Approach To The Synthesis of Realistic Motion
An Implementation of The Spacetime Constraints Approach To The Synthesis of Realistic Motion
An Implementation of The Spacetime Constraints Approach To The Synthesis of Realistic Motion
Abstract
This thesis presents a computer implementation of the Spacetime
Constraints approach to synthesizing realistic-looking motion for crea-
tures in a simulated physical environment.
Earlier work in this eld has shown that using eciency as the
criterium for selecting among the physically valid ways a creature can
accomplish a task yields visually pleasing results.
Creatures are constructed from rigid bodies linked through angu-
lar joints and given the power of motion through torque-producing
muscles. The state of the system is described in Cartesian and an-
gular coordinates, which are represented over time as piecewise cubic
polynomials with C 1 transitions, in the Hermite function basis. Time-
varying muscle tensions are also explicitly represented, and physical
validity of the motion is achieved through a nite-element formulation
of the Euler-Lagrange equations.
Subject to these constraints, an objective function measuring the
energy consumed by the creature's muscles is minimized over time.
This is a traditional, highly non-linear, constrained optimization prob-
lem, to which is applied an SQP-style solver package. The current im-
plementation outputs a graphical representation of the animation on
Pixar's RenderManTM format.
The implementation and the software packages it depends on may
be freely redistributed and used for non-commercial purposes.
1
Contents
1 Acknowledgements 4
2 Introduction 5
2.1 One Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Means of Motion . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 The Spacetime Control Paradigm . . . . . . . . . . . . . . . . 6
2.4 Another Computational Approach . . . . . . . . . . . . . . . . 7
2.5 This Thesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.6 Electronic Access . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 Problem 9
3.1 Continuous Dynamics . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.1 Equations of Motion . . . . . . . . . . . . . . . . . . . 9
3.1.2 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.3 Control . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.4 Variational Dynamics . . . . . . . . . . . . . . . . . . . 11
3.1.5 Impact and Regularity Issues . . . . . . . . . . . . . . 12
3.1.6 Realism . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Discrete Dynamics . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2.1 Hermite Cubics . . . . . . . . . . . . . . . . . . . . . . 15
3.2.2 Finite Element Method . . . . . . . . . . . . . . . . . . 16
3.3 Formulating the Problem . . . . . . . . . . . . . . . . . . . . . 18
4 Solution 19
4.1 The Optimizer . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.1.1 Sequential Quadratic Programming . . . . . . . . . . . 19
4.1.2 ADOL-C . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2 Description of the Dynamics System . . . . . . . . . . . . . . 21
4.3 Designing a Solution . . . . . . . . . . . . . . . . . . . . . . . 23
4.3.1 An Example Scenario . . . . . . . . . . . . . . . . . . . 24
4.3.2 Objective Functions . . . . . . . . . . . . . . . . . . . . 25
4.3.3 Physics-enforcing Constraints . . . . . . . . . . . . . . 26
4.3.4 The Dynamics Algorithm . . . . . . . . . . . . . . . . 26
4.4 Assembling the Solution . . . . . . . . . . . . . . . . . . . . . 29
4.4.1 Variable Stage Lengths . . . . . . . . . . . . . . . . . . 30
4.4.2 Bounding the DOF . . . . . . . . . . . . . . . . . . . . 31
4.4.3 Muscles: Implicit vs Explicit . . . . . . . . . . . . . . . 32
4.4.4 Visualization . . . . . . . . . . . . . . . . . . . . . . . 33
2
5 Implementation 34
5.1 Tree of C++ Classes . . . . . . . . . . . . . . . . . . . . . . . 34
6 Results 37
6.1 The Link Chain . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2 The Ubiquitous Desk Lamp . . . . . . . . . . . . . . . . . . . 38
6.3 Field Survey and Comparison . . . . . . . . . . . . . . . . . . 40
6.3.1 Symbolic Algebra . . . . . . . . . . . . . . . . . . . . . 41
6.3.2 Hierarchical Basis . . . . . . . . . . . . . . . . . . . . . 42
6.3.3 Other Spacetime Work . . . . . . . . . . . . . . . . . . 42
6.3.4 Decision Trees and Databases . . . . . . . . . . . . . . 42
7 Conclusions 43
7.1 Over-optimization . . . . . . . . . . . . . . . . . . . . . . . . . 44
7.2 Motion control . . . . . . . . . . . . . . . . . . . . . . . . . . 44
List of Figures
1 Basis functions φ(1) and φ(2) . . . . . . . . . . . . . . . . . . . 15
2 Scaled basis functions (solid) dening a cubic (dashed) on [0, 1] 16
3 A double pendulum; simulation and control . . . . . . . . . . 24
4 A three-limbed arm stretching: two local minima . . . . . . . . 38
5 A leaping desk lamp . . . . . . . . . . . . . . . . . . . . . . . 39
6 A longer leap . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3
1 Acknowledgements
This thesis project has been a presence in my life for many years, in one
form or other. Many thanks go to my thesis advisor Thomas Karlsson for
his good humour and heroic patience ever since I rst stumbled over this
subject matter in 1993. My darling wife Karen has valiantly endured neglect
in competition with a whole menagerie of sadly crippled animation subjects.
All of my family has been supportive, as always. Several people proofread
and commented the paper thank you.
This implementation relies heavily on free software. It uses a package for
non-linear optimization problems containing the solver HQP and the frontend
Omuses for it. These programs were written by Rüdiger Franke at Technische
Universität Ilmenau, and are distributed under a license that allows free
redistribution of the source-code. This package relies in turn on software
from a host of other authors, similarly available to the public.
Many of the gures in this paper were drawn using the Blue Moon Ren-
AT X, on a machine
dering Tools by Larry Gritz. The thesis was written in L E
running the free operating system Linux. Much respect is due the authors of
these systems and others for making their eorts available to the public.
4
2 Introduction
The eld of Computer Graphics is a varied and rewarding one. There are
any number of utterly fantastic goals to work towards, and no shortage of
unsolved problems to tackle on the way. Progress in the eld is rapip: a cease-
less explosion of hardware ability, improvements in fundamental algorithms,
the development of new mathematical tools such as wavelets, the inux of
diverse competence, all these things serve to widen and deepen the eld. If
the things we can do now are amazing, what we will be able to do tomorrow
is simply breathtaking.
5
2.2 Means of Motion
If a rock is dropped on earth, it falls to the ground in a deterministic mo-
tion, trivially computed. We can build more complex mechanical systems and
simulate their equally deterministic states forward in time using a computer
(or a lot of patience). The evolution of such a system may be considered the
inevitable result of the forces at work within it.
The rock above moves as it falls, but the verb move can mean something
else when a will is involved. Living creatures tense their muscles, which apply
torque to their joints, causing them to move. A signicant portion of their
brain sits between the urge to perform some physical action and the resulting
motion, a portion dedicated to the task of motor control.
Whether completely accurate in neurological terms or not, it makes sense
to explore this mind-body division further for our purpose, which is that of
articial motion synthesis. There is the high-level control (the will) with the
task of evaluating, at whatever rate it is able, the ever-changing perceptions
of the environment, updating its internal notions of the state of the world,
all the while generating decisions.
In contrast, the task of motor-control is rmly grounded in the present,
occupying itself largely with the relationships between velocity and acceler-
ation. It is this latter functionality that we would ultimately wish to have
available as an abstraction layer, for implementations of virtual creatures to
rely on.
Intriguingly, the problem of generating realistic-looking motion satisfying
high-level demands for a virtual creature can be considered basically solved.
6
cles and those of the the positional DOF are constrained by the requirement
of conformance to physical law.
High-level control is achieved through constraints on the DOF and other
relevant quantities at dierent instants of time. Most commonly, the DOF
at the beginning of the animation are given, and their rate of change are
constrained to be zero. Often, what we want to solve is a boundary-value
problem, where we also fully constrain the system at the end of the animation.
Such a scenario is akin to the keyframe interpolation problem that plays such
a major part in contemporary computer animation software systems.
These control problems are generally very underconstrained; they have
innitely many solutions. To pick one solution out of many, we discriminate
through the criterium of eciency. Finding the most ecient solution is an
optimization problem for which there are known algorithms.
The solution is then the explicit description of the chunk of spacetime rep-
resenting the most ecient way for the creature to perform the high-level task
dened by the constraints. There is no room for surprises in this paradigm;
it is an oine computation given exact knowledge of the environment for the
duration of the animation.
Since the solution includes the description of joint torques, it tells us not
only what the optimal motion looks like, but also how it came about; exactly
how the creature must tense its muscles at each point in time to move just
so. We could later place the virtual creature in the physical simulation of a
virtual reality. The computed optimal torques could be applied from moment
to moment, and the creature would execute the correct motion as long as the
environment exactly matched that which was used in the Spacetime Control
computation.
7
algorithm constructs a population of dierent solutions and subjects them
to forced evolution. Behaviour congurations that yield desirable results in
physical simulation are considered superior, and are allowed to mate with
high frequency.
The desirability criterium is encoded in a tness function, and includes,
among other things, any requirements on pose and position at dierent in-
stants of time, i.e., the spacetime constraints. The population moves towards
a state where its members optimize this tness function and this state is
taken to be the solution.
http://alyx.com/~zell/exjobb
where the paper and the computer implementation can be found along with
pointers to the packages on which it depends, and possibly errata and up-
dates. The author may be contacted at the email address zell@alyx.com.
8
3 Problem
3.1 Continuous Dynamics
In this thesis, we will consider the synthesis of motion of objects in an abstract
physical reality. We make the requirement that the conguration of these
objects (the creatures) can be described at all times using a nite set of m
generalized coordinates qi (t). Thus the state of the system at time t is fully
described by the qi (t), q̇i (t) and so to create a motion over an interval of time
is to fully dene the qi on it.
In general, the qi can represent virtually any physical magnitude and the
associated generalized force Qi then takes on a dimension such that Qi dqi al-
ways constitutes work. See e.g. [16] or [17] for a full introduction to analytical
mechanics. In this thesis, the qi will be Cartesian and angular coordinates,
and the Qi , correspondingly, Cartesian forces and torques.
which for now we take to be valid at all times. The function L = T −V,
the Lagrangian function, is the dierence between the system's total kinetic
and potential energies. It encodes the physical structure of the creatures and
their environment, as well as any conservative force-elds such as gravity. In
∂V ∂V
general, is zero, and represents conservative forces such as gravity,
∂ q̇i ∂qi
and is of dimension generalized force, like the Qi . The latter are needed
to represent forces that are not conservative, and so cannot be included as
gradients of the scalar eld V.
3.1.2 Simulation
Considering L to be a xed property of the system, (3.1) intertwines the qi
and the Qi in accordance with Newtonian mechanics. The special case where
the Qi are known and the qi (t0 ) and q̇i (t0 ) specied at some time t0 is an
initial value problem. For these, the (3.1) fully determine the exact future
9
state of the system, and solving these equations forwards in time is known
as physical simulation.
To illustrate this, consider a ball falling to the ground from the roof of
a tower. If the ball has mass m > 0 and the acceleration of gravity is G,
the Lagrangian function is L = T − V = m(ẏ 2 /2 − G y) and the ball will be
governed by
d(mẏ)
− mG = 0 ⇐⇒ ÿ = G (3.2)
dt
until it hits the ground, at which time other forces come into play. The height
of the ball above the ground, y(t), is known at the time t0 when we drop it,
as is its velocity, ẏ(t0 ) = 0, so
(t − t0 )2
ẏ(t) = G (t − t0 ), y(t) = y(t0 ) + G (3.3)
2
By solving this equation we have performed a tiny physical simulation,
a trivial case with a closed-form solution. In problems only a little bigger,
the equations are non-linear and recourse must be taken to numerical ODE
solvers.
The quick and accurate simulation of complex physical systems is an im-
portant problem and the subject of much research, in the computer graphics
eld and in others. However, simulation does not create motion, it merely
solves the equations of motion to calculate the inevitable deterministic ef-
fects of the Qi accelerating the system just so at each point in time.
3.1.3 Control
Where in simulation problems the forces Qi are given and we want to solve
for the qi , control problems typically arise when we treat the Qi as variable
and make demands on the qi .
Let's expand the example above by keeping the initial conditions and
adding a second condition that ẏ(t1 ) = 0 for some given t1 > t0 , i.e. a soft
landing at a pre-determined time. Since we cannot make demands on gravity,
such a condition can only be satised if the ball can be inuenced in some
other way. Let us assume that we have at our disposal a (somewhat strange)
external force Fy · ŷ = k(t−t0 )· ŷ that acts on the ball. Here, k is constant over
the course of the motion, but from the point of view of the control problem,
it is a variable for which to solve. The equation of motion is now
d(mẏ) k
− mG = Fy ⇐⇒ ÿ(t) = G + (t − t0 ) (3.4)
dt m
so
k (t − t0 )2
ẏ(t) = G (t − t0 ) + (3.5)
m 2
10
and
k (t1 − t0 )2 2mG
ẏ(t1 ) = G (t1 − t0 ) + =0⇒k=− (3.6)
m 2 t1 − t0
We have solved a control problem computer, within a given parame-
terization, the force to apply to the system, for a requested system state to
come about.
11
3.1.5 Impact and Regularity Issues
0
In general, physically sensible Qi are bounded, the q̇i lie fully in C and the
qi in C 1 . However, situations such as impact
arise, when the q̇i must have
discontinuities. For example, when two objects in the virtual world collide,
they do so inelastically. There must be an instant eect, because they are rigid
bodies and do not compress. This amounts to innite acceleration over an
innitismal time period. To avoid tangling with this unpleasant singularity,
consider a hammer blow of magnitude P and direction ŝ. The blow applies
for a very brief period of time δt a force
P
F̄ = F · ŝ = · ŝ (3.10)
δt
on the system at a point p̄. Recalling that Qi dqi always has the dimension of
work, the force F̄ must inuence the system according to the transformation
∂ p̄ ∂ p̄
Qi = F̄ · = F · ŝ · . (3.11)
∂qi ∂qi
Because the interval of time δt is small, the state of the system can be
considered constant over it. As δt → 0, F → ∞, but P does not vary. The
equations of motion (3.1) yield in the limit
d ∂L ∂L ∂L
δt · Qi = δt · − δt · → ∆ (3.12)
dt ∂ q̇i ∂qi ∂ q̇i
∂ p̄ ∂ p̄
δt · Qi = (δt · F ) · ŝ · = P · ŝ · (3.13)
∂qi ∂qi
so
∂L
∆ = Pi (3.14)
∂ q̇i
where Pi is generalized momentum, and is distributed from P̄ according to
the same pattern (3.11) as dictates the Qi from F̄ , i.e.
∂ p̄ ∂ p̄
Pi = P̄ · = P · ŝ · . (3.15)
∂qi ∂qi
In other words, just as forces may be applied to points p̄ on creatures over
an interval of time, so may blows of pure momentum at discrete instants of
time, with transition conditions given by (3.14).
12
For a simple example of when this may occur, consider a creature landing
on a hard oor. At the moment of impact there is a jolt which travels in-
stantly through its body parts and discontinuously changes the angular joint
velocities. In a living creature, where this cannot happen, skeletal elasticity
absorbs the shock up to the shattering point of bone.
For the remainder of this paper, we will consider the duration of the
animation to be structured as sequential intervals [t0 , t1 ], [t1 , t2 ], . . ., within
which the Qi are bounded, the q̇i continuous, and (3.9) hold. These intervals
we call stages. They may be separated by discontinuity blows, as outlined
above, with transition conditions on the form
∂L + ∂L −
(tj ) − (t ) = Pi , j = 1, . . . (3.16)
∂ q̇i ∂ q̇i j
The variational equations of motion (3.9) are integrated over each stage
independently of the others, and we can treat them as independent sub-
problems. Most of the rest of this work in this paper will assume an interval
[t0 , t1 ], which we take to be a generic stage satisfying the continuity assump-
tions outlined above.
3.1.6 Realism
In the example control problem of the falling ball, a single additional discrete
variable k was introduced and a single corresponding additional constraint
was imposed. These cancel out, and there is a single correct solution.
In the general setting, there is not. Animation problems are undercon-
strained. For one thing, there are many control variables; the Qi vary quite
freely. Second, there are not many constraints. The whole point of the Space-
time paradigm is that control is sparse and high-level. Typically, boundary
pose and position are constrained along with a few conditions such as jump
this high. There are innitely many variations a creature may make in its
precise muscle control, all of them resulting in satisfactory jumps.
So it is not enough to dene a task to perform and to demand physical
validity there are still innitely many possible motions. There must be a
criterium for discriminating between these possibilities. We have discarded
from our consideration all motion that violates physical law leaving us with
motion that is real we now turn our attention to the realistic.
This is where we descend into the thoroughly subjective. We are trying
to nd some unifying, rational property of motion that appeals to the senses
as realistic-looking. An obvious place to start this search is motion that is
truly real; in this case, that exhibited by living, biological creatures. While
13
we touch this eld only lightly, it may be that a basic understanding of
physiology is as important as mathematical and computer-science skills are,
in an endeavor such as this.
It seems reasonable to suppose that one of nature's fundamental criteria
in discriminating between good and bad behaviours of motion is eciency.
Animals spend a lot of time gathering food for energy, and there is surely
great evolutionary pressure on their motor control centers to perform without
wasting such a precious resource. It is the great claim to fame of the Space-
time Constraints method that it has shown in practice that realistic-looking
motion does follow from this intuition.
Eciency can be formalized well: given a system description and a well-
dened physical task to perform, nd motion that performs it while burning
as little energy as possible, i.e.
where W tot is a measure of the metabolic energy consumed in all the muscles
of the creature over the duration of the motion. The rst set of constraints,
those enforcing the laws of physics, are expressed by the equations of motion
(3.9).
14
0.2
1
0.15
0.8 0.1
0.05
0.6
0.4
-0.05
0.2 -0.1
-0.15
0
-0.2
0 0.5 1 1.5 2 0 0.5 1 1.5 2
15
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
-0.1
-0.2
-1 -0.5 0 0.5 1 1.5 2
with
(1) (1)
φ0 (v) = −2v 3 + 3v 2 , φ1 (v) = 1 + 2v 3 − 3v 2 , (3.25)
(2) (2)
φ0 (v) = v 3 − v 2 , φ1 (v) = v 3 − 2v 2 + v (3.26)
The piecewise linear case is simpler, and the traditional basis for it consists
of translates of the hat function
(
u, u ∈ [0, 1]
φ(u) = (3.27)
2 − u, u ∈ [1, 2].
16
A dierent possibility follows from writing the dierential function in
variational form, as we did to get (3.9). Recall that in this form, the dier-
ential function is tested against an innite set of trial functions η(t), with
one integral equation resulting from each test. The natural way to construct
a discrete problem out of this form is to test against only a nite subset of
trial functions η(t). By choosing specically the basis functions of (3.20) as
trial functions, we have arrived at the Finite Element Method, the FEM.
Applying this procedure to (3.9), which is the equation relevant to this
thesis, yields a set of discrete equations
Z t1
∂L(t) ˙ ∂L(t)
φj (t) + + Qi (t) φj (t) dt = 0, ∀j. (3.29)
t0 ∂ q̇i ∂qi
Z t1
Fy
m ẏ(t)η̇(t) + G + η(t) dt = 0, (3.30)
t0 m
and nally using those basis functions φi that are zero at the boundaries as
trial functions and rearranging yields
Z t1 Z t1
X Fy
cy,j φ̇j (t)φ̇i (t) dt + G + φi (t) dt = 0. (3.32)
j t0 m t0
This may look to be more complex than what we started out with rather
than a simplication, but note that with
Z t1
ai,j = φ̇j (t)φ̇i (t) dt, (3.33)
t
Z 0t1
fi = φi (t) dt, (3.34)
t0
it reduces to
X Fy
cy,j ai,j + G+ fi = 0. (3.35)
j
m
17
Here, ai,j and fi are static, determined by the basis functions only, and
so easily precomputed. The equation (3.35) is a linear system of equations in
the cy,j , which can be solved in a single step, using any of countless numerical
methods.
This example constitutes a trivial yet illustrative application of the FEM
for discretizing ODE's. Note that when the φ have narrow support, as they
do both in the Hermite and the Hat bases, most of the ai,j are zero, so (3.35)
is a sparse problem. This is essential for keeping the time-complexity of the
problem managable.
In the general, highly non-linear case of multi-body equations of motion,
the rearrangement performed above is not possible, and the solution cannot
be found in a single step. In the next section, the equations of motion (3.29)
will be constraints in an optimization problem, in which they are the major
source of non-linear complications. To account for them we will be forced
∂L ∂L
to take an iterative approach, where the functions and are approxi-
∂ q̇i ∂qi
mated with local Taylor expansions, and a sequence of equation systems like
(3.35) are constructed. We will be using solutions to these approximative
sub-problems as directions in which to search for the best next step towards
the true solution.
and constraints
18
4 Solution
4.1 The Optimizer
To solve the problem (3.36) we need a solver for non-linear optimization prob-
lems. We have chosen HQP by Rüdiger Franke [13], which seems to perform
very well, and has a non-commercial license an important consideration,
since the stated goal of this project is to write a freely available implemen-
tation.
quite dierent from the kinetic potential function L used in the equations of
motion earlier in this paper. The function L combines the objective func-
tion with the eect of the constraints through the method of Lagrangian
multiplers, the λi . When L is (at least locally) minimal,
∇L(x̄, λ̄) = 0̄ (4.2)
i.e.
X
∇f (x̄) = λi · ∇ci (x̄), (4.3)
i
ci (x̄) = 0, (4.4)
then f (x̄) enjoys a local extremum or a saddle point there relative to the
constraints. It should be noted that this discussion is valid for equality con-
straints only. Inequality constraints are a fairly complex extension, and left
out of this discussion for the sake of clarity.
Newton's method solves an unconstrained optimization problem by re-
peatedly expanding the objective function as a power series and solving the
quadratic problem generated by truncating higher powers. The quadratic in-
formation is available through the Hessian, and applying the method to L
yields for each iteration k an equation
2 (k) δx̄(k)
(k)
∇ L(x̄ , λ̄ ) = −∇L(x̄(k) , λ̄(k) ), (4.5)
δ λ̄(k)
19
solved for a direction
s̄ = δ x̄(k) (4.6)
δ λ̄(k)
4.1.2 ADOL-C
The current implementation makes use of only one of these tools, namely
automatic dierentiation implemented by the ADOL-C [15] package. By us-
ing C++ operator overloading and active variables, ADOL-C builds up a
run-time record (a tape) of the operations performed in the algorithms that
evaluate e.g. f (x̄). Using this information, it can then automatically compute
the exact analytical gradients those same expressions.
For a trivial example, consider a function, something like
20
This is a computer representation of a well-known physical formula; it
adouble
2
evaluates T = m v2 . The type it returns, however, represents not
only the value of the expression, but also a record of how it was computed.
As a consequence, the chain rule may be applied,
v2
∇T = (∇m) + m v ∇v, (4.7)
2
and since the input parameters v and m are also adoubles, this procedure can
be applied to them as well, until the dependency of ∇T on the most primal
variables in the system has been computed.
Such functionality is very useful for our purposes. It reduces the scope
of the problem to providing a computer code for the evaluation of f and
the ci . The necessary derivative information is then automatically computed.
Compared to having to calculate the derivatives ourselves, ADOL-C makes
the implementation quite a bit easier, and also more secure. It is easy to
make a mistake dierentiating complex expressions.
21
The absolute limb angles θ are simple sums,
X
θi = αj (4.8)
ji
∂θi
and clearly
∂αj
= 1 when i j and 0 otherwise.
The inboards base of each limb i, where it attaches to its parent, is denoted
b̄i . Modifying αi clearly has the eect of rotating the system of limbs ji
around b̄i ; thus the dependency of a vector p̄ that lies outboards from i is
expressed through a rotational operator
cos(αi ) −sin(αi )
R(αi ) = (4.9)
sin(αi ) cos(αi )
mi
Ti = (kr̄˙ i k2 + ki2 θ̇i2 ) (4.14)
2
which also makes clear the nature of ki .
The muscles of the creature sit at the joint where a limb j connects to
its parent i. Whenever it applies a torque τi,j to limb i, by the law of action
reaction, it must counter-apply a torque of equal magnitude but opposite
sense −τi,j working on limb j. Now since we have chosen the generalized
22
coordinate αj to encode the angle between the two limbs, the associated
generalized force Qj corresponds precisely to a such a pair of opposite torques.
This means that a muscle between limbs i and j contributes to Qj only
and, conversely, the Qj represents exactly this kind of relative torque. We
will refer to muscle-tension values simple as τj .
Apart from muscles, the system is inuenced by a set of Cartesian forces
and impulses F̄i and J¯i , that work directly on points dened on the crea-
tures. The eect of these are given by (3.11) and (3.14). Finally, gravity is a
conservative force-eld and so we include it in the scalar potential part V of
the Lagrangian L=T −V.
• Next, stages are dened. The length of time of the stage is declared, as
well as the number of polynomial pieces N into which to cut it.
• Any muscles that the creatures should have on each stage are declared,
and explicit representations are allocated for them, similar to the pro-
cess above.
• Any task-dening constraints are declared for each stage. For example,
in the rst stage of the sequence, one would normally specify the full
state and its derivative; all the qi (t0 ) and the q̇i (t0 ).
• Any active forces acting on the stage are declared and represented
explicitly with functions, just as above. The force is then applied to
a specic point on a specic limb. Any momentum blows to occur at
23
Figure 3: A double pendulum; simulation and control
the end of each stage are similarly declared and directed. These can be
constant, or more commonly, variables in the optimization problem.
π
α(0) = − , α̇(0) = 0, (4.15)
4
π
β(0) = − , β̇(0) = 0, (4.16)
2
and the problem is fully determined. The result can be seen in Figure 3. This
is an initial-value simulation without any control over the motion.
It is illustrative to analyze this example further. After the discretization,
the functions α(t) and β(t) are each represented as sums of 2N + 2 basis
functions, yielding a total of 4N + 4 = 28 free variables in the optimization.
The equations of motion (3.9) are evaluated for α and β respectively using the
2N basis functions that are zero at the boundaries of the stage interval, for a
total of 4N = 24 constraints. Finally adding the four initial-value constraints
total up to 28, matching the number of variables to solve for. The problem is
uniquely determined, as one would hope! The objective function never comes
into play, here. There is only one solution.
24
This can be made a control problem by adding a muscle in the joint
between the rods and,for example, demanding that at the end of the motion,
the two rods be aligned and their relative angular velocities zero, i.e.
XZ
f = ∆W = τj (t) α̇j (t) dt, (4.18)
j t
dW
2 X
Z
f =
= (τj (t) α̇j (t))2 dt (4.19)
dt 2
j t
which seems to be the objective function used in [1]. However, this one is
also a bit suspect. By this function, push-ups do tire a person, but holding a
piano over one's head does not.
25
The third and last possibility we consider is
X XZ
f= kτj k22 = τj2 (t) dt, (4.20)
j j t
i.e. minimize the torque magnitudes, the muscle-tensions, over the motion.
This function is used in [5] and the authors refer to the paper [19] to provide
factual support for using this measurement. It is the function we choose to
implement, and it was used to produce Figure 3.
It is useful to remember that in the end, the correct denition of f is an
entirely subjective matter. The stated desire is visual realism, and that is not
a well-dened notion.
∂L
• ∂ q̇i
, generalized momentum, is entirely due to the kinetic energy T
component of the L = T − V , because V does not depend on velocities.
∂L
• ∂qi
has the dimension of generalized force. From V there is the contri-
bution of gravitational force, and from T , there are inertial terms due
to the curvature of the coordinate system.
• Qi , nally, collects forces other than gravitation, i.e. the creature's mus-
cles and the eect of the Cartesian forces working on it.
1X n o
TiΣ = mj kr̄˙ j k2 + kj2 θ̇j2 . (4.21)
2 ji
26
Dierentiation with respect to joint-angles and joint-velocities yields
∂T ∂TiΣ X ∂ r̄˙ j
= = mj r̄˙ j (4.22)
∂αi ∂αi ji
∂αi
( )
∂T ∂TiΣ X ∂ r̄˙ j ∂ θ̇ j
= = mj r̄˙ j + kj2 α̇j =
∂ α̇i ∂ α̇i ji
∂ α̇ i ∂ α̇ i
(4.23)
X ∂r̄j 2
= ˙
mj r̄j + kj α̇j
ji
∂αi
∂ r̄˙ j ∂ r̄j
where we have used the identity
∂ α̇i
= ∂αi
which we do not motivate but
which holds true for this r̄.
Our task is now to derive recursive formulations for these values. This
will allow an algorithm to traverse the tree-structure of the system's bodies
and compute all the values needed in the equations of motion (3.9) in time
1
linearly proportional to the number of bodies in the system .
Using (4.12) we rewrite (4.22)
∂ r̄˙ j
mj r̄˙ j E[r̄˙ j − b̄˙ i ] =
X X
mj r̄˙ j =
ji
∂αi ji
Σ
mj r̄˙ j E[r̄˙j ] − E[b̄˙ i ] mj r̄˙ j = −E[b̄˙ i ] K̄˙ i
X X
= (4.24)
ji ji
where we have used the fact that E[v̄] · v̄ = 0 in general, and introduced the
vector quantityK̄iΣ , which has a very simple recursive update,
X
K̄iΣ = Σ
mj r̄j = mi r̄i + K̄S(i) , (4.25)
ji
and an equally simple physical interpration; namely the centre of mass of the
system of bodies j i, multipled by its mass,
X
MiΣ = Σ
mj = mi + MS(i) . (4.26)
ji
Noting nally that the velocitiesr̄˙i never depend on the Cartesian root
∂T
position of the creature, and thus
∂x
= ∂T
∂y
= 0 completes the recursive
1 While the algorithm does run in linear time, it is obviously not possible to construct
a dense Jacobian in less than quadratic time. However, in this implementation, that task
falls to ADOL-C.
27
formulation of (4.22). Next, (4.23) decomposes similarly;
X ∂r̄j 2
mj r̄˙ j + kj α̇j =
ji
∂αi
X
mj r̄˙ j · E[r̄j − b̄i ] + kj2 α̇j =
=
ji
X X
mj r̄˙ j · E[r̄j ] + kj2 α̇j − E[b̄i ]
= mj r̄˙ j =
ji ji
˙Σ
= UiΣ + PiΣ − E[b̄i ] · ¯Ki (4.27)
where
X
UiΣ = Σ
mj r̄˙ j E[r̄j ] = mi r̄˙ i E[r̄i ] + US(i) (4.28)
ji
X
PiΣ = mj kj2 θ̇j = mi ki2 θ̇i + PS(i)
Σ
. (4.29)
ji
∂V ∂ n X o
=G· ŷ · mj r̄j =
∂αi ∂αi
" #
X X X
= G · ŷ · mj E[r̄j − b̄i ] = G · ŷ · E mj r̄j − bi mj =
ji ji ji
= G · ŷ · E K̄iΣ − bi MiΣ
(4.31)
Finally, the Cartesian forces F̄i working on points p̄i transform into the
generalized system of coordinates according to (3.11), i.e.
X ∂ p̄j
Qi = F̄j · (4.32)
j
∂qi
28
by (4.12) and reordering yields
X
Qi = F̄j · E[p̄j − b̄i ] =
ji
X X
= F̄j · E[p̄j ] − E[b̄i ] · F̄j =
ji ji
with
X
F̄iΣ = Σ
F̄j · E[p̄j ] = F̄i · E[p̄i ] + F̄S(i) (4.34)
ji
X
F̄iΣ = Σ
F̄j = F̄i + F̄S(i) . (4.35)
ji
It should be mentioned that we have taken some liberties here with the
ordering. The j i notation was dened for limbs, and there may be several
forces acting on dierent points on a limb. This means that there is no exact
order of forces. However, in the two recursive formulations above, only the
order of forces within a limb is undened, and that order does not matter to
the computation of the values.
The algorithm now proceeds by traversing each creature from the root
out to the tips, building the θi , the b̄i and other kinematic quantities, then
synthesizing the more complex, recursive expressions back towards the root,
generating the target quantities for (3.9) in the process.
29
over each stage, where all the work is done. Each stage then loops both over
the N polynomial pieces into which it is split, and inside this loop, over the
n sampling points dictated by Simpson's rule above. At each of these n·N
sampling points t, a vast hierarchy of expressions is constructed.
First, the qi , q̇i , the muscle tensions and the magnitude of active forces
are explicitly evaluated from their representations at t. Then, the dynamics
algorithm outlined above is executed, recursing through the creatures, gen-
erating the kinematic entities on its way out and synthesizing the kinetics
coming back.
We now have a snapshot of the system, at instant t. While the recursive
algorithm ran and expressions were evaluated, the automatic dierentiation
package ADOL-C built an exact record of how each nal expression was
constructed and how it depends on each input. This information is included
in the snapshot.
Numerical integration next proceeds by adding the contribution of the
system at t, according to the snapshot we just took. Like everything else,
this addition takes place under the supervision of ADOL-C, so the integral
values slowly accumulate an enormous tree of dependency information.
Finally, remaining constraints are evaluated, those that are not equations
of motion. These are usually simple, governing a single value at a single
instant of time. An exception are the constraints that govern the transitions
from one stage to the next. These enforce the continuity of the coordinate
trajectories and also of their generalized momentums, taking into account
also the eects of any impulses active at the end of the current stage.
30
where a variable Tk leads to trouble.
In any pure simulation problem, for example, the length of simulation is
certainly a dening parameter that should be given explicitly. If it is made
variable, the problem becomes under-constrained, and there is no objective
function to compensate. In fact, this is technically a singular problem, al-
though in practice the solver usually does not encounter this singularity and
the iterations do converge.
Another diculty is when gravity is turned o. Generally, gravity acts as
something of a clock in these problems, and without it there is nothing to
measure time against. An astronaut performing some task in space would, if
energy were at a premium, move exceedingly slowly. Depending on the objec-
tive function used, this could occur in abstract reality as well and cause the
optimization process to drive the stage length towards innity; an unstable
problem without solution.
In practice, even in well-dened problems, we want to place bounds on the
stage-length. Not only do we want to avoid having to consider what happens
when Tk → 0 or Tk → ∞, but we also have an idea of approximately what
the motion should look like, if it should take a tenth of a second, or a half.
As far as implementation goes, allowing Tk to vary is not dicult, espe-
cially using automatic dierentiation. In fact, it is sucient to ag Tk as an
active variable, and it is immediately included in all dependency considera-
tions. Stages may be set up either with a xed or with a variable length in
this implementation.
Finally, it should be mentioned that this topic has been explored and
implemented previously, in the paper [7] (and probably countless others).
31
fmax can be used as discrete bounds on the two corresponding coecients.
Bounding the interior is trickier, and in fact the solution we give for this
1 2
thesis is less than completely satisfactory. We sample (4.37) at u = { , }
3 3
and enforce the bounds there through explicit constraints. A cubic can attain
at most one maximum and one minimum, and is very regular. Being bounded
at four points, it is dicult for the function being represented to violate the
boundaries to any large degree between those points. Thus, the solution is
largely successful. Nevertheless, it is ad-hoc and the bounds can be violated
to some degree.
This is unfortunate, because the optimizer is very good at exploiting just
this kind of weakness. If violating the joint-boundaries lowers the value of the
objective function a great deal, and the only way to violate the boundaries
is, say, to oscillate severely, then severe oscillation is exactly what we will
get. In practice, it is not dicult to spot this problem when it occurs in an
animation. In these cases, one increases the number of sample points to e.g.
{ 41 , 12 , 43 }, tightening the bound further at some cost in execution time.
32
Using ADOL-C, an implicit-muscle implementation is surprisingly sim-
ple. The means of computing Qi are in the basic Euler-Lagrange functions
(3.1) themselves. In the case of the angles αi , substituting the recursive re-
lationships already derived above cancels out beautifully to
d ∂L ∂L d ∂L ∂L
Qi = − = − =
dt ∂ q̇i ∂qi dt ∂ α̇i ∂αi
d Σ ˙Σ
Σ ∂V
= Ui + PiΣ − E[b̄i ] · ¯Ki − −E[b̄˙ i ] K̄˙ i + =
dt ∂αi
¨Σ
= U˙Σ + P˙Σ − E[b̄ ] · ¯K + G · ŷ · E K̄ Σ − b M Σ
i i i i i i i (4.38)
where U˙iΣ , P˙iΣ and ¯¨KΣ are new and must be calculated. Their recursive
i
denitions are trivial, as is the case of the Cartesians.
If the Qi are eliminated, what happens to the equations of motion? Their
role is largely to constrain the relationship between the qi and the Qi , and
now there are no Qi to constrain. Getting rid of the equations of motion
seems odd, but it is not really. A creature with muscles in every joint has
perfect control over the movements of its limbs relative each other, and there
is no physically invalid motion. There is no need to constrain the qi .
The only relevant matter then is how much work the muscles must per-
form for some specic motion, i.e., the calculation of the objective function
from the qi . This was previously a trivial function of the τj , but now contains
all the complexity of the Lagrange equations.
The only real diculty in writing such an implementation arises when
there is some joint i where there should not be a muscle, where the connecting
limb should dangle freely. This lameness must then be explicitly enforced
in a constraint, i.e.
d ∂L ∂L
− = 0. (4.39)
dt ∂ α̇i ∂αi
There was not time to include this in the implementation. However, it
would make for an interesting comparison, and is something to consider as
future work.
4.4.4 Visualization
When the solution is found, the true output consists of values for the opti-
mization variables. However, since this is not much to look at and besides,
the program already knows what the values represent and how the creatures
are constructed, it makes sense to take advantage of this by also generating
output with more structure.
33
There are many ways of doing this, for this implementation, we choose to
TM
output scenery information on the RenderMan format designed by Pixar
Inc. This is a standard language for describing 3D scenes, frame by frame. It
was designed for computer animation. The Blue Moon Rendering Tools by
TM
Larry Gritz, with a non-commercial license, accepts RenderMan output
and renders it on-screen or in image les. Such les can later be compressed
into movies.
There are other output formats one could choose. The Virtual Reality
Modeling Language (VRML), for example, would certainly be up to the task.
It should not be dicult to write additional modules for generating dierent
kinds of output.
5 Implementation
Writing the actual code follows quite easily from what has come before. We
choose to work in C++. This is the language the HQP interface Omuses
was designed for, also, the problem structure works well with object-oriented
(OO) design.
Throughout this project, a pragmatic relationship to computer science
has been maintained. The implementation is not beautiful. It violates many
basic tenents of object-oriented programming: objects are used largely as
data dumps. The classes are not designed as black boxes. Most of their
variables are public, and objects write in each other's data spaces with little
hesitation.
Thus the structure of the problem is not mirrored in the design of the
C++ classes as much as it could be. Nevertheless, there is discipline in how
the code behaves and a well-dened order in which things are evaluated.
The automatically dierentiated expressions are built layer by layer, from
optimizer input to optimizer output.
34
• Class Stage holds lists of Muscles, Forces, and Constraints active over
each stage, Impulses to apply at the end of it, and Funs that do the
actual representation of time-varying functions on the stage. These all
register with the Stage when they come into being. It also denes the
length T of the stage, the number of polynomial pieces N and the
handy quantity h = T /N . In the update loop, class Stage performs the
necessary calls to all the external objects listed above, and performs
the numerical integration of the results. This class registers with class
World in its constructor.
• Class RigidBody implements the dynamics algorithm of this paper.
Practically all the quantities calculated in the recursive scheme are
class variables, rather than local to the recursion. This allows us to
treat them as constrainable quantities. The body also keeps a list of
the BodyPoints dened on it, and a pointer to the DOF which holds its
angle α relative to its parent body. Finally, it has a mass and a (square
of the) radius of gyration.
35
and P (from (3.15)), which are calculated during the snapshot process
and written into the DOF instances. This class registers with class
World in its constructor.
• Class Muscle simply coordinates a Fun with an angular DOF and lets
the former apply a torque to the latter. This class registers with class
Stage in its constructor.
• Class Force applies a force to an AnchorPoint in a predened direc-
tion. The magnitude may be agged as a variable of the optimization
problem. This class registers with class Stage in its constructor.
• Class Constraint is an abstract class. Its reason for existing is to guar-
antee to whatever references it that it will be able to evaluate the
constraint it represents.
36
and possibly 2N constraints for the bounds, if it is bounded. This
Stage in its constructor.
class registers with class
6 Results
The aim of this thesis was to write an implementation of the Spacetime
Constraints paradigm and to make it available to the public. The code and
the theory behind it as described above constitute the main result and
accomplishment of the endeavour. However, in the process of writing it, some
example outputs have also been collected that could be considered results,
and these are described and presented here.
37
quickly. Even so, starting the iterative solution process at slightly dierent
initial guesses yields two very dierent solutions.
The requirements made on the two solutions displayed are identical, but
the optimizer is started o with dierent initial values for its variables, and so
it initially sees dierent portions of the search-space. It follows a minimizing
path as best it can using its linear/quadratic approximations, but lacks any
global perspective; it cannot see over search-space ridges even if there is a
great abyss on the other side, and so can easily get stuck in little potholes.
The initial variable conguration of the rst run corresponds to a sequence
where the chain swings at a constant angular velocity, without bending at
π π π
the joints, from − to . In the second, the root link moves instead from −
2 2 2
to 0, and the two outer links curve slowly upwards. In both solutions, the
creature attempts to mimimize its torque at the root by curling up before
extending, but in the second, it comes up with an even more clever use of
its resources. The value of the objective function in the second solution is
substantially lower than in the rst. We will let this illustrate the problem
of global optimization.
38
Figure 5: A leaping desk lamp
39
are very important in this problem, especially if one wants to maintain an
anthromorphic attitude towards the lamp. For example, unless forced not
to, Luxo will bend his spine back without compunction, and this seems to
grate on the human eye.
Luxo's jump is a three-stage problem; in the rst stage, the base is nailed
to the ground by representing the position and the attitude of the base as
constants. This lets Luxo gather momentum in his upper body. In the second
stage, Luxo ies, and all DOF are fully Hermite. The third stage is much like
the rst, except that the base is nailed down at a dierent place, forcing him
to make the jump to get there. Luxo's pose is constrained at the beginning
of the rst stage and at the end of the third.
Between the second and third stages, three impact vectors are applied to
the base, to represent the eect of Luxo slamming inelastically into the table.
One acts along the x̂ axis, representing instant friction. The other two are
applied to the front and back edge of the base and are directed along ŷ , these
work together to stop any part of Luxo from falling through the ground. The
magnitude of these impulses are variable, solved for along with the rest of
the problem.
These variable impact vectors are vital. They introduce freedom over the
stage transition. Without them, C 1 continuity would be enforced and Luxo
would have to maneuver in mid-ight in such a way as to set the base down
smoothly, without any impact. This would completely change the nature of
the animation. Of course, it is a simple matter to constrain the magnitude
of the impulse so that Luxo has to perform a gentle touchdown. Likewise,
forcing him to come down hard will probably cause him to jump higher rst.
Figure 6 shows a longer jump, from earlier in the implementation eort,
where a aw in the joint-angle bounds lets Luxo get away with an awkward-
looking bend in his spine.
40
environment, although output is generated at every iteration, which can be
displayed simultaneously using some graphical program.
41
much like ours, but in a full 3D environment rather than the (very much
simpler) planar case with which we have worked.
With this paper, the computation of the Jacobian of the dynamics expres-
sions in a symbolic-algebra implementation achieves the theoretically optimal
2
time complexity of O(DOF ) which our implementation would, as well, were
ADOL-C not used.
42
a discrete period of time. The state represented by the child node is then
determinstically computed using physical simulation.
The size of this tree is hugely exponential in the number of time steps.
By evaluating nodes according to some tness criterium, the authors search
it for desired motion. Because of the enormity of the tree, pruning methods
and heuristics are used to make the search managable. Letting edges repre-
sent low-level control such as joint torque, the authors solve highly unstable
control problems using this technique, such as that of a single-jointed, two-
limbed acrobat not only balancing properly, but managing a ip as well.
The edges can equally well represent higher-level control. Thus each deci-
sion, each edge-traversal can represent not a simple tensing of some muscle,
but a complex combination over a longer period of time. For example, the
choice could be between one of many jumps possible from the current state.
Searching such a tree constitutes motion planning. The authors have Luxo
bouncing across rough terrain with peaks and chasms, where the ability of
the tree-search algorithm to plan several jumps ahead may be essential.
In the paper [12], Alexis Lamouret and Michiel van de Panne present a
related work, revolving around a large database of sample motions for some
virtual creature. Thus for some specic creature state and environment state,
this database may be queried for motion samples that may possibly suit the
setting.
The authors use the terrain-exploring Luxo mentioned above to generate
an example database, where the motion primitive of a choice is a single hop.
These are classied according to length and height of the jump and stored.
Then, as Luxo nds himself in the virtual mountains, he need only search
the database for the best motion t he can nd, adapt it somewhat to satisfy
e.g. continuity requirements, and then execute it.
7 Conclusions
The idea of using optimal control for realistic-looking motion has some fun-
damental problems. While it is certainly true that it produces motion that
is not only physically valid but also fairly real-looking, the creature does not
really move in a way that makes sense to humans. When sequences become
longer than a few tenths of a second, the over-optimized nature of the motion
starts becoming apparent.
43
7.1 Over-optimization
Sometimes the best-looking motion is achieved by aborting the process after
only a few iterations. In later stages, the algorithm starts nding paths that
lower the value of the objective function and do not violate any constraints,
yet would never really be displayed by anything living, anything that had to
make its decisions in real-time.
Even in an athlete's trained movements, there is built into the body-
language an awareness of limitations not only of body but of mind. Human
motor control is very reluctant to let joints and muscles get near extreme
states, where possible injury always threatens.
The result is that living beings display a conservative, focused use of mus-
cles that optimized spacetime creatures do not display. Unless hemmed in on
all sides by constraints, the algorithm will continuously nudge the solution
until every resource available to the creature is used to its utmost eciency.
The spacetime control approach has all the time in the world to tinker with
and make perfect motions that biological creatures have to perform as instant
reexes.
As an example, in several attempts to produce the jump of Figure 5, Luxo
insisted on bracing against the inertia of his own head in order to correct his
pose in mid-ight, which looks utterly unrealistic. Humans are very protective
of their necks and do not lightly allow whip-lash eects to occur. But with
Luxo, discouraging such behaviour is dicult. We can penalize heavy use of
his neck muscles, and this seems like a good idea. But as it turns out, this
makes Luxo reluctant to hold his head steady, and the result is a jump where
his neck looks broken.
The way humans hold their heads while jumping simply does not follow
from the eciency rule. We keep our neck muscles tense in a state of an-
ticipation, and this goes for other muscle groups as well. A living creature,
ready to pounce into action is not relaxed, but tense.
It is possible that given a suciently accurate model of muscles, joints
and other purely biological factors, the only fault with the optimized motion
would be unrealistic perfection. More complex objective functions can encode
more of these factors, probably at a heavy cost in eciency.
44
ties, it is the simplest method to do what it does.
The problem of keyframe interpolation, i.e. of generating valid motion
over intervals bounded on both sides by complete state descriptions, is fun-
damental to Computer Graphics animation. Current solutions in industry
are impressive but, in the end, compromised. Human tolerance is limited for
animation that fundamentally violates our sense of reality. The prettier and
more life-like the rendering of creatures becomes, the more disturbing it is
when they move wrong. Any progress made towards animation systems that
takes better account of the realities of physical law must be greeted with
enthusiasm.
References
[1] Witkin, A. and Kass, M., Spacetime Constraints, Computer Graphics
22(4) (August 1988), pp. 159-168
[3] Liu, Z., Gortler, S. J., Cohen, M. F., Hierarchical Spacetime Control,
SIGGRAPH Proceedings (1994), pp. 35-42
[5] Rose, C., Guenter, B., Bodenheimer, B. and Cohen, M. F., Ecient Gen-
eration of Motion Transitions using Spacetime Constraints, SIGGRAPH
Proceedings (1996), pp. 147-154
[8] Preston, M., Parallel Spacetime Animation, Proceedings of the 6th Eu-
rographics Workshop on Computer Animation & Simulation, Springer
Verlag (1995)
45
[9] Ngo, J. T. and Marks, J. Spacetime Constraints Revisited, SIGGRAPH
Proceedings (1993), pp. 343-350
[11] Huang, P. S., and van de Panne, M., A Search Algorithm for Planning
Dynamic Motions, Proceedings of the 7th Eurographics Workshop on
Computer Animation & Simulation, Springer Verlag (1996), pp. 169-
182
[13] Franke, R., HQP: a solver for sparse nonlinear optimization, Technische
Universität Ilmenau (1997)
[14] Franke, R., Omuses: a tool for the Optimization of multistage systems,
Technische Universität Ilmenau (1997)
[15] Griewank, A., Juedes, D. and Utke, J.,ADOL-C: A Package for the
Automatic Dierentiation of Algorithms written in C/C++ (1996)
[16] Goldstein H., Classical Mechanics, Addison-Wesley, Reading, MA (1980)
[17] Hildebrand, F. B., Methods of Applied Mathematics, Prentice-Hall, En-
glewood Clis, NJ (1965)
[18] Fletcher, R., Practical Methods of Optimization, John Wiley & Sons,
(1987)
Comparison of mechan-
[19] Burdett, R. G., Skrinar, G. S., and Simon, S.R.,
ical work and metabolic energy consumption during normal gait, Journal
of Orthopaedic Research 1, (1983), pp. 63-72
46