[DOC Format] [PDF Format]
Human Walking Control
Department of Computer Science
University of British Columbia
Abstract:
How to control a creature’s muscles in order to obtain a desired motion is a great challenge to computer animation. The goal of my project is to synthesize a controller for dynamical simulation of walking. Starting from some very simple human motions, such as quiet standing, I implemented the control strategies that can keep balance for a 3D human model. These strategies were finally used on the controlling of complicated motions, such as crouching and walking.
1 Introduction
Physics-based system simulation can simplify the work for generating the realistic motions of passive objects, such as sliding blocks or bouncing balls. However, for active objects like humans and animals, we must also solve the control mechanism to direct their movements. The control strategies behind the locomotion can help us understand how humans and animals take corrective actions during motions. These control solutions are also very useful in the controlling system of humanoid robotics.
Walking is a seemingly simple behavior for human. The dynamics of walking is, however, more difficult than that of running and jumping. The inherent instability of walking makes it one of the hardest motions to model, especially when the conditions are unpredictable. The ideal controller of walking should be able to walk at various speeds, turn and walk across variable terrain.
In this project, I started from keeping the balance of quiet standing, which is a very simple human motion. I found the hip strategies and ankle strategies in quiet stance can also be used in many complicated motions, such as crouching and bending. Finally, I implemented a controller that can keep balance when walking in the same place. Some more work needs to be done to control the motion of walking forward.
2 Related Works
Much research has been done for controlling the motion of creatures. Some of them focus on constructing controllers that can produce periodic motions. Van de Panne proposed a control synthesis technique, which is called “Pose Control Graph” (PCG) [6], to generate periodic controllers. Since it is relatively easy to determine whether a given controller can produce a desired motion, the major idea of PCG algorithm is generate-and-test optimization process. The initial poses in the PCG are generated randomly and evaluated by some optimization metric. The good poses are then tuned to get a local optimization.
The PCG algorithm provides only the basic open-loop control for a motion, which relies on the passive stability of motions to keep balance. But the instability of walking makes it unable to be controlled well by this kind of controller. In addition, for the complicated model (e.g. 37 DOFs Human), the search space is too large for the generate-and-test process to get a good result. So the “Limit Cycle” (LC) control technique adds the necessary control to produce a stable limit cycle for walking [3]. The controlled figure can walk at a selected speed and following a given path.
Another approach is to use a “Sensor Actuator Network” (SAN) for producing the locomotion control [5]. The SAN is a non-linear network of weighted connections between sensors and actuators. Like the PCG algorithm, SAN can generate the controllers automatically for a given model. Since it combines the information of sensors to the controller, the produced controller is somewhat more stable. But it still has limitations on the complexity of model and motion.
3 Simulation
Before synthesizing the controller, a mechanical model and a simulator are required. Since the goal of this project is to control human walking, I used a 37 DOFs human model and a 3D simulator to implement the control.
3.1 Human Model
Figure
1 illustrates a 3D human model with 16 joints and 37 degrees of freedom. Six of
DOFs correspond to the global translation and rotation, and the other
thirty-one DOFs correspond to the rotational axes of each joint. The physical
properties of this model, such as mass and inertia, are consistent with
anthropometrical data for an adult male. Table 1 shows the physical properties
of each link and table 2 shows the DOFs of each joint. The model and data come
from the DANCE simulator, which will be described in the next section.
Link |
Position** |
Mass
(kg) |
COM*** |
Inertia
(kg·m^2) |
Hip |
(0, 1.131, 0.0052) |
16.61 |
(0, 0.1206, 0.05) |
0.18, 0.16, 0.23 |
Trunk |
(0, 0.1206, 0.05) |
29.27 |
(0, -0.14625, 0.0351) |
0.63, 0.32, 0.73 |
Neck |
(0, 0.24635, -0.0013) |
1.0 |
(0, -0.0442, -0.0065) |
0.006, 0.001, 0.006 |
Head |
(0, 0.0442, 0.0065) |
5.89 |
(0, -0.078, -0.0312) |
0.033, 0.023, 0.03 |
Upper
arm |
(0.1768, 0.18915, 0.0013) |
2.79 |
(-0.1326, 0, -0.0013) |
0.005, 0.025, 0.025 |
Lower
arm |
(0.1326, 0, 0.0013) |
1.21 |
(-0.1378, -0.0039, 0) |
0.0012, 0.0054, 0.005 |
Hand |
(0.1378, 0.0039, 0) |
0.55 |
(-0.065, 0, 0) |
0.0005, 0.002, 0.0016 |
Thigh |
(0.1118, -0.0406, 0.0058) |
8.35 |
(0.0169, 0.2379,-0.0143) |
0.16, 0.025, 0.15 |
Shin |
(-0.0169, -0.2379, 0.0143) |
4.16 |
(0.0078, 0.2158, 0.0039) |
0.056, 0.007, 0.055 |
Foot* |
(-0.0078,-0.2158, -0.0039) |
1.34 |
(0, 0.0442, -0.039) |
0.0075, 0.007, 0.0018 |
Note:
***Center of Mass (COM) is measured from the COM to joint. **Position is
measured from the COM of parent link to the joint. The hip’s parent link is
ground. *This table lists only the information of left arm, hand, leg and foot.
The properties of right part can be obtained by the symmetry.
Table
1: physical
properties
Joint |
DOFs |
Axis |
Joint |
DOFs |
Axis |
Joint |
DOFs |
Axis |
Head |
1 |
x |
Elbow |
2 |
y, x |
Hip |
3 |
x, z, y |
Neck |
3 |
x, z, y |
Wrist |
2 |
z, y |
Knee |
1 |
x |
Shoulder |
2 |
z, y |
Waist |
3 |
x, z, y |
Ankle |
2 |
x, z |
The
simulator I used for simulating the system dynamics is Dynamic Animation and
Control Environment (DANCE) [9]. It is an object-oriented simulation system for
physics-based character animation. DANCE provides four base classes, Systems,
Simulators, Actuators and Geometries for the simulation and rendering. All of
them are portable and extensible.
For
the purpose of my project, I added another class into DANCE for the control
strategy. I also expanded the classes to get some sensor information such as
whether the foot touches the ground.
4 Approaches
The
inherent instability of walking makes it difficult to keep balance, especially
for the 3D case. Using only the open-loop control is not sufficient. Figure 2
shows the walking control produced by the generate-and-test method of [6]. The
model can only take a few steps and then falls down. So I started from keeping
the balance of quiet standing, trying to find the control strategies for both
the lateral stability and frontal stability. At last I used these strategies to
keep balance in some complicated motions, such as bending, crouching and walking.
Figure
2: open-loop control of walking
4.1 Proportional-derivative (PD) controllers
Most of my controllers are
based on the PCG control. The joint angles are driven toward the desired angles
by joint actuator torques calculated by using PD controllers:
torque
= Kp * (angle_desired – angle_current) – Kd *
angle_velocity
Where
Kp and Kd are the constants of spring and damper. The
value of Kp and Kd specify the strength of the muscle
attached to each joint. Obviously, they should be strong enough to raise the
whole body and they should not be too strong that only one ankle can make the
body fly. To simplify the control work, it is better to use a set of reasonable
muscle constants. Table 3 shows the spring and damper constants I used in my
project. Most of the values are gathered from [8].
Joint |
Axis |
Kp |
Kd |
Joint |
Axis |
Kp |
Kd |
Head |
x |
100 |
10 |
Waist |
x |
2000 |
100 |
Neck |
x |
100 |
10 |
|
z |
2000 |
100 |
|
z |
100 |
10 |
|
y |
2000 |
100 |
|
y |
100 |
10 |
Hip |
x |
1275 |
60 |
Shoulder |
z |
100 |
10 |
|
z |
900 |
30 |
|
y |
100 |
10 |
|
y |
1275 |
60 |
Elbow |
y |
50 |
5 |
Knee |
x |
1275
|
60 |
|
x |
50 |
5 |
Ankle |
x |
1275 |
60 |
Wrist |
z |
20 |
2 |
|
z |
1275 |
60 |
|
y |
20 |
2 |
|
|
|
|
Table
3: Joint strength parameters
4.2 Quiet Standing
Keeping
the balance in quiet standing seems the simplest control of human. In fact,
however, it is a complex biomechanical control, which depends on many factors,
such as the distance between feet and the placement of feet. In my project, I
focused on keeping balance of regular stance. That is, two feet are placed left
and right with some distance.
The
control strategies during quiet stance are generally divided into hip strategies and ankle strategies. My controllers used the ankle strategies for the
frontal stability and both the hip strategies and ankle strategies for the
lateral stability.
4.2.1 Frontal Stability
As stated in [7], keeping balance in sagittal plane can be modeled as an inverted pendulum about the ankle joint (Figure 3). The torque due to the gravity is
Mg * h * sin(θ) ≈ Mg * h * θ
And the torque due to the spring muscle at the ankle is Kp * θ. As long as the stiffness, Kp, is larger than (Mg * h), the whole body will oscillate around the equilibrium position. Plus some damping in the ankle joint torque, the body will eventually stop near the equilibrium position. The maximum torque of ankle is (Mg * L), where L is the length from the end point of foot to the ankle joint. Otherwise the whole body will be lifted up. So the body cannot lean too much for the ankles to keep balance. Since the length of front foot is larger than the rear foot, my balance controller uses an angle of 0.03 radians as the equilibrium position (i.e. keeping the body lean forward a little).
|
|
Figure
3: inverted pendulum model in the sagittal plane
4.2.2 Lateral Stability
Keeping
the lateral stability is, surprisingly enough, harder than that of frontal stability.
The reason is that the width of foot is much smaller than the length of foot.
Using only the ankle can only tolerate very small perturbations. For this
point, the hip joints must be used to help keep balance.
The hip abductor/adductor moment can move the Center Of Pressure
(COP) between two feet, which will draw the COM back to the equilibrium
position. Actually, during the quiet stance, the lateral stability is totally
dominated by this hip load/unload strategy. Figure 4 shows the model in the frontal
plane. The equilibrium position is just the middle of two feet.
|
|
Figure
4: model in frontal plane
4.3 Bending & Crouching
The
balance strategies during quiet stance can also be used in some motions, such
as bending and crouching. The controllers of joints other than hip and ankle
are generated by PCG algorithm. The torques on the hip and ankle are calculated
by the strategies mentioned above. Figure 5 shows the screen shots of these two
motions.
Front view of
bending |
Side view of
bending |
Front view of
crouching |
Side view of
crouching |
Figure
5: screen shots of bending & crouching
4.4 Walking
Walking
is much harder to control than other motions. So I only implemented a
controller that can walk in the same place. Some similar ideas can be used to
synthesize a controller that make the model walk forward.
The
difficulties of controlling walking lie in its inherent instability. When one
foot is raised from the ground, the stability in sagittal plane can be balanced
by ankle strategies, but the lateral stability is hard to keep using only the
stance leg. For example, raising the left foot will cause the whole body
falling to the left, and the right leg can do little to recover from this
falling. My strategy of walking control is,
In
my project, moving the COM towards the stance foot is simply implemented by
temporarily setting the equilibrium position near the target foot and using the
same hip strategy to drive the COM. The foot raising and touching down are
controlled by PCG controller. And sensor information is used to check whether
the swing foot touches the ground, then the whole system enters the phase of
raising another foot. Figure 6 shows the screen shot of walking. The parameters
of this controller are tuned by hand, although they can be generated
automatically by some stochastic search method.
Figure
6: screen shot of walking
The control
of some seemingly simple motions such as walking is surprisingly difficult. The
strategies behind the human’s behaviors for keeping balance are complex. In
this project, I implemented the ankle strategies and hip strategies during
quiet stance. Those strategies are suitable in controlling the balance of some
other motions, such as bending, crouching and walking.
Needless
to say, there are some limitations in my controllers. It does not provide a
general solution of walking in different conditions, such as various speeds and
across variable terrain. The parameters in the controllers are mainly tuned
manually. It is better that these parameters can be generated by some
automatically search method.
6 Acknowledgements
I wish
to thank Michiel van de Panne for his help and advices in this project.
References
[1]
Thomas L. Dean and Michael P. Wellman. Planning
and Control. Morgan Kaufmann, San Mateo, California, 1991.
[2]
P. Faloutsos, M. van de Panne, and D. Terzopoulos. The virtual stuntman:
dynamic characters with a repertoire of autonomous motor skills. Computers
and Graphics, 25(6):933–953, 2001.
[3]
J. F. Laszlo, M. van de Panne, and E. Fiume. Limit cycle control and its
application to the animation of balancing and walking. Proceedings of
SIGGRAPH, pages 155–162, August 1996.
[4]
M. van de Panne. Control for simulated human and animal motion. Atelier IFAC
Motion Control, September 1998.
[5]
M. van de Panne and E. Fiume. Sensor-actuator networks. Proceedings of
SIGGRAPH, pages 335–342, 1993.
[6]
M. van de Panne, R. Kim, and E. Fiume. Virtual wind-up toys for animation. Proceedings
of Graphics Interface, pages 208–215, 1994.
[7]
Winter DA, Patla AE, Prince F, Ishac M, Gielo-Perczak K. Stiffness Control of
Quiet Standing. North American Congress on Biomechanics, 1998
[8] Laszlo, J. Controlling Bipedal Locomotion
for Computer Animation. M.Sc. Thesis, Department of Computer Science,
University of Toronto, 1996
[9]
Victor Ng-Thow-Hing and Petros Faloutsos. Dance: Dynamic animation and control
environment. www.dgp.toronto.edu/DGP/DGPSoftware.html.