You are on page 1of 8

P E RVA S I V E C O M P U T I N G I N S P O R T S

A Personalized Music
System for Motivation
in Sport Performance
The IM4Sports music system helps exercisers select music that suits their
training programs, reflects and guides sport performance, and collects
data for adapting training programs and music selections.

usic can have a positive effect


on enjoyment of and motivation for performing physical
exercise, especially for recreational exercisers who work
out at submaximal intensity for health purposes.
The needs of this user group in terms of enjoyment and motivation are particularly high and
the potential positive effect can be significant (see
the Solo Exercise and Music
sidebar). The happy marriage
Gertjan Wijnalda, Steffen Pauws,
between solo endurance sports
and Fabio Vignoli
and music has already resulted
Philips Research Eindhoven
in the development of conHeiner Stuckenschmidt
sumer products. For example,
Vrije Universiteit Amsterdam
the Philips-Nike MP3Run acts
as a portable music player and
a performance and training
display and logging system (www.nike-philips).
In available products, however, music selection
and playback arent coupled to the exercisers
performance.
We developed a personalized music system
called IM4Sports (Interactive Music for Sports)
for individual exercising, although running is the
prime target. As figure 1 shows, our research prototype of the system consists of a personal computer, a portable music flash player, a heart sensor strap, and a pedometer.

Installation
First-time use of the IM4Sports system
requires an installation stage to personalize the
10

PERVASIVE computing

system using a personal computer. In a dialogue


with the user, the system requests relevant personal data (such as name, gender, and age), exercise and physiological data (such as weight, resting heart rate, and maximal or peak heart rate),
and the level of sports experience (such as beginner or experienced). Users also have the opportunity to alter or add exercise definitions and to
indicate their likes and their dislikes of music in
terms of songs, artists, or genres with respect to
the exercises.
In addition, users must analyze and annotate
their personal music collections (for example, in
MP3 format) by attaching attribute information
to each individual song. These attributes reflect
tags of catalog data or musically intrinsic features
such as unique identification, title information,
artist name, genre, duration, file size, and tempo.
Online services from third parties or audio feature extraction algorithms for computing tempo
can provide values for these tags.1,2 Multiple users
can use the system, although each has an individual profile. Users can always come back to the
installation stage to reset their data or change
their music collection.

Preparation stage: Before exercising


We define the usage of the system in three
stages: preparation, exercise, and feedback (see
figure 2). In the preparation stage, the user can
select a training program and suitable music using
a personal computer. (For more information
about training programs, see the Using a Train-

Published by the IEEE CS and IEEE ComSoc 1536-1268/05/$20.00 2005 IEEE

Solo Exercise and Music

any individual endurance sport practices require motivation


for the exerciser to persevere, especially when these exertions
evoke feelings of boredom, pain, and fatigue. To cope with the physical demands of their exertions, athletes employ dissociative and associative strategies.1,2 If the physical load doesnt surpass the submaximal levelthat is, if its below 70 percent of maximal heart rate
reserve (MHRR)theyre able to voluntarily divert their attention from
internal sensations. In other words, they can dissociate from the physical demands by producing a train of thought, developing a positive
mood, or doing some mental arithmetic.
Music can also help an exerciser to dissociate from low to moderate exertive feelings and eventually result in performance improvement. For instance, if exercisers are explicitly instructed to keep
pace with music playing, it will enhance their performance. In particular, compared to the absence of music, endurance was enhanced in
a stationary constant-pace cycling task only when exercisers synchronized their pedaling rate with music.3 Also, doubling the pace of the
music at 70 percent of MHRR enables exercisers to postpone their
time to fatigue; it seems that the change in tempo helps them in
prolonging their period of using a dissociative coping strategy.4

At approximately 70 percent MHRR and higher, exercisers are no


longer able to dissociate themselves from the incoming painful
sensations. Instead, they must directly fight against the pain to
persevere, for which they require high levels of motivation and
exertion tolerance. Music wont help them sustain their effort,
although it can often bring greater enjoyment to the task.1

REFERENCES
1. G. Tenenbaum et al., The Effect of Music Type on Running Perseverance and Coping with Effort Sensations, Psychology of Sport and Exercise, vol. 5, no. 2, 2004, pp. 89109.
2. C.I. Karageorghis, and P.C. Terry, The Psychophysical Effects of Music
in Sport and Exercise: A Review, J. Sport Behavior, vol. 20, no. 1, 1997,
pp. 5468.
3. M. Anshel and D. Marisi, Effect of Music and Rhythm on Physical Performance, The Research Quarterly, vol. 49, no. 2, 1978, pp. 109113.
4. A. Szabo, A. Small, and M. Leigh, The Effects of Slow- and Fast-Paced
Classical Music on Progressive Cycling to Voluntary Physical
Exhaustion, J. Sports Medicine and Physical Fitness, vol. 39, no. 3, 1999,
pp. 220225.

Figure 1. The IM4Sports system consists


of a portable player with in-ear phones,
heart rate sensor belt, pedometer using
acceleration sensors, and a personal
computer.

ing Program sidebar.) The user downloads the music, its attribute information, and the training program to a
portable player to take along. Training
programs are available for use or adaptation, or the user can create one from
scratch. Users select their preferred music
from a larger collection that fits the training program to ensure a hassle-free
sports and music experience. In addition,
music selection copes with storage limitations on present-day portable flashbased players. In contrast to hard drives,
flash memory doesnt have moving parts,
so it can withstand movement during
physical activity.
Different training exercises have different characteristics in motion, pace,
intensity, and duration. For instance,
JULYSEPTEMBER 2005

warming up is different from running; it


doesnt consider performance but
requires the exercisers full concentration. Obviously, different exercise characteristics lead to different music selections in terms of genre, artist, and tempo.
To this end, the system generates a play
set (essentially an unordered set of songs)
for each exercise. Constraints declare

what songs should and shouldnt be


included in a play set. Constraints can
also reflect the users music preferences
during the exercise or restrict music
attribute values to suit the exercise. Generating play sets for a training program
then comes down to selecting songs from
the personal music collection that satisfy
all constraints.
PERVASIVE computing

11

P E RVA S I V E C O M P U T I N G I N S P O R T S

Figure 2. The different usage stages in


integrating a sport training program,
music selection, and music playback.

sic

Preparation
stage

Music selection

User
characteristics
Feedback
stage

Mu

Excersizing
stage
Physiological data
& user feedback
Performance data

Off-line stages

If we know that the user prefers slow


music for a particular exercise, or if we
can infer from the expected stride frequency in running what musical tempos
we need to include, we can instantiate a

range constraint. This constraint is satisfied if all the selected songs tempos fall
within a predefined lower and upper
bound. The system sets the lower and
upper bound on the basis of what we

know about the users running performance and the exercise intensity and
stringency.
If the user dislikes a song or music
from particular genres or artists while
exercising, the system instantiates an
exclude constraint that sees that the
play set wont contain music with these
attribute values. If, on the other hand,
the user likes music from particular genres or artists, the system instantiates a
counting constraint that restricts and
forces the number of occurrences of genres or artists in the play set. In this way,
users can state that they want, for
instance, about 60 percent rock music

Using a Training Program

any recreational exercisers and elite endurance athletes work


with training programs, which prescribe the sequence of
physical exercises scheduled in a single training session. As table 1
shows, the definition of an exercise includes

the type of exercise, which refers to an exertion within a sport,


such as running;
the exercise duration, which specifies the period of time that the
exercise should take, possibly at a prescribed intensity level;
the exercise intensity, which specifies at what level of exertion
the exerciser should perform the exercise. Intensity is expressed
as a percentage of maximal heart rate
reserve (MHRR); this percentage specifies
a desired heart rate zone. For instance,
the aerobic heart rate zone for improved
Type
endurance and optimal cardiovascular
training is at 7080 percent of MHRR;
Warm-up
and
Stretch
the exercise stringency, which tells how
Run
strictly or loosely the exerciser should
Recover
perform the exercise in terms of duration
Stretch
and intensity.
Jog
For particular exercise types, parameters
are irrelevant or unpredictable. For
12

Cool-down

instance, heart rate during warm-up or stretching is less relevant;


its presumably close to rest level. How long it will take to recover
from an exertion is also unknown beforehand.
Note that a training program can also consist of a single exercise such as a run of one hour for those who prefer a loose run
across the park instead of committing themselves to training programs. Typically, the training program is part of a complete coaching plan to achieve a well-defined long-term goal such as losing
weight, working towards peak performance, or extending endurance. Sports physiologists, coaches, or the runners themselves
can create plans and training programs.

TABLE 1
A sample training program.
Duration

Intensity

Stringency

20 minutes

Loose

5 minutes

20 minutes

7080% MHRR*

Strict

50% MHRR*

Loose

5 minutes

3 km

Variable

*Maximal heart rate reserve.

and 40 percent popular music while


exercising.
If an exercise has a limited duration,
the system needs to select a set of songs
that has a similar total duration. Analogously, if all music should fit on a
portable player, the system needs to
select a set of songs that doesnt exceed
the devices maximal storage capacity
(for example, 256/512 MB). Especially
for these problems, we use a summation constraint. This constraint is satisfied if the system selects songs with a
sum of durations (or file sizes) that falls
within a predefined minimum and maximum value. In addition, we use an
all-different constraint, which
makes sure that all the songs the user
ultimately downloads to the device are
different, including those already on the
portable device and those used in previous training sessions.
Satisfying a set of constraints is a hard
combinatorial problem to solve.3 If constraints conflict, no feasible solution
exists. Therefore, instead of striving for
an exact solution, we compute an
approximate solution by using a local
search approach in which the constraints
are translated into normalized, piecewisely linear penalty functions.4 Our
local search approach defines each
penalty function to be zero if the system
meets the constraint, to be larger than
zero if it doesnt, and to increase with the
amount of violation of the constraint.
The total penalty is defined as a weighted
combination of all penalty functions.
Weights indicate the severity of not meeting a constraint. For instance, selecting
more music than can fit on the portable
player is more severe than leaving out a
preferred artists song.
To find a play set that minimizes the
total penalty, the local search considers
complete solutions or play sets. It steps
from solution to solution by applying a
random, small change at each iteration
such as adding a song, deleting a song, or
JULYSEPTEMBER 2005

replacing one song with another. If the


newly generated play set is better than
the original one, we accept the new one
and enter the local searchs next iteration. If the new solution is worse, we
might accept the solution with a certain
probability, which decreases with the
amount of deterioration and during the

incoming data points) as the users heart


rate. A pedometer measures stride frequency; the player uses a five-point
moving average for this as well. We
define stride frequency or pace as steps
per minute (spm), or the number of
ground contacts the users feet make in
one minute. Although a stride comprises

Depending on the required motivation, the


system adapts the music playback to the users
performance or training goal.
course of the algorithm. In other words,
the search process is cooling down,
known as simulated annealing.4 Simulated annealing requires a predefined
cooling schedule for temperature control; we use a standard linear cooling
schedule. Running times are about five
seconds on a standard PC platform to
select music that sufficiently approximates a set of constraints. The user then
only needs to download the selected
music to the portable device.

two steps, we equate it to one step for


practical reasons.
Depending on the required motivation, the system adapts the music playback to the users performance or training goal (for example, reaching and
staying within a certain heart rate zone).
We assume that the musics tempo is reasonably stable for large parts of the song.
Besides standard linear playback, weve
developed the following advanced music
playback modes:

Exercising stage

Pace-fixing mode. Music plays at a


constant tempo to motivate the user
to synchronize his or her steps with
the music for enhanced endurance.
This mode aims to help the runner
evenly distribute effort over a distance
and somewhat resembles cruise control in cars.
Pace-matching mode. The system continually adapts the tempo to the users
stride frequency to support running at
varying stride frequencies without the
user having to concentrate on keeping
time.
Pace-influencing mode. The tempo
speeds up or slows down to motivate
the user to speed up or slow down by
synchronizing his or her steps with the
music. In this case, the goal is to arrive
at a performance level as defined in
the training program.

When the user is exercising, music


plays on the portable player to either
support or guide user performance as
expressed in heart rate, stride frequency,
and speed or covered distance. The exercises in the training program dictate the
song order. Obviously, the user controls
the playback and can skip or prolong
songs and exercises using interactive
controls on the player. It monitors and
records user performance data such as
heart rate and movement frequency (for
example, stride frequency for runners).
A sensor attached to a chest belt with a
wireless transmitter and a receiver for
the player measures heart rate. The sensor transmits a pulse for every heart
beat. The player uses a five-point moving average of incoming pulse intervals
(that is, the mean of the latest five

PERVASIVE computing

13

P E RVA S I V E C O M P U T I N G I N S P O R T S

Pace-fixing mode
We use time stretching to create a constant tempo by transforming a song if its
tempo is different from the desired one.
Both the original song and its playout
tempo are expressed in beats per minute
(bpm). Time stretching involves shortening or lengthening an audio data file
without pitch modifications according
to a scale factor. Obviously, this needs to

125 bpm (with a stretch range of


107156) and the user walks at a stride
frequency of 117 spm, the system would
slow down the tempo to 117 bpm. If the
user starts to run at a stride frequency of
175 spm, the system cant find a valid
match inside the song stretch range. In
this case, the system speeds up the tempo
to 156 bpm, the stretch border closest to
the stride frequency. After the time stretch,

The system selects other songs if it


can no longer match the tempo to the users
stride frequency.
happen faster than real time for online
stretching and playback; we use a standard time-domain technique based on
synchronous overlap-and-add.5 The
scale factor represents the ratio between
the desired tempo and the songs original tempo. We cant perform time
stretching with impunity for extreme
scale factors because music thats modified too extensively sounds awkward.
Typical maximal values for the scaling
factors are -15 percent to +25 percent.
For a song with a tempo of 100 bpm,
this results in a stretch range of 85125
bpm. Therefore, we define the song for
playback as the one whose original
tempo comes closest to the desired playout tempo.
Pace-matching mode
To match the tempo to the users stride
frequency, the system needs to play the
music faster or slower using time stretching. In principle, we consider all integer
multiples or integral divisions of stride
frequency as possible tempo matches.
We assume that the music and the users
stride are in step.
The system selects other songs if it can
no longer match the tempo to the users
stride frequency. For instance, if the current song has a moderately fast tempo of
14

PERVASIVE computing

the system selects a new song to replace


the current one on the condition that the
song has been playing long enough (say,
30 seconds) to reduce repetitive song
changing over time. The system requires
the new song to have a stretch range that
includes the current tempo and stride frequency to allow for a transition without
abrupt tempo changes. The new song
starts to play at 156 bpm, and the system
will speed it up to 175 bpm.
When a change in tempo occurs
instantly, a hiccup in the music playback
is evident. On the other hand, when the
change takes a long time (more than 10
seconds), the system adapts to the user
too slowly. The parameter that specifies
this response time in pace-matching
mode is Tm, which specifies the time that
a maximal change in tempo as defined
by the songs stretch range should take.
The system uses a linear function to calculate the actual time to change from a
given tempo to a new one. This function,
denoted by tm, is supplied with two
points tm(0) = 0 and tm( max) = Tm,
where max denotes the maximally
allowed change in tempo as defined by a
songs stretch range. When considering a
100-bpm song with a stretch range of
85125 and an assumed Tm = 500
msecs, a change from 100 to 120 bpm

would take
100 120
Tm = 250
tm( 100 120) =
85 125
msecs.
To allow the same amount of time for a
maximally allowed tempo change for all
songs, slower songs will adapt more
swiftly than faster songs.
Pace-influencing mode
To motivate users to keep their heart
rate within a certain zone, the system
uses a four-step method:
1. Match the tempo to the users stride
frequency to ensure the connection
between them.
2. Determine the heart rate goal and,
from that, the stride frequency and
tempo subgoals.
3. Propagate the tempo change to the
tempo the determined subgoal
desires.
4. Wait for heart rate stabilization.
The system repeats these steps until the
user has reached the exercise goal. The
assumption is that, by matching tempo
to stride frequency in Step 1, the user will
keep his or her movements in time with
later changes in tempo in Step 3. The system matches the tempo to stride frequency by using pace-matching mode.
In step 2, the system compares the
users heart rate to the heart rate goal for
that exercise and determines the difference percentage. It predicts the required
stride frequency by applying this percentage directly to the current stride frequency. From sports physiology, we
know that heart rate will increase or
decrease proportionally with exercise
intensity.6 The system then transforms
the desired stride frequency into a
desired tempo, which can be an integer
multiple or integral division of the
desired stride frequency. If the song
cant be stretched enough to accomwww.computer.org/pervasive

modate the change in tempo, the system changes songs in the same manner
as in pace-matching mode. In addition,
the system keeps a history of heart rate
measurements. From that, it can predict how the heart rate (and hence the
desired tempos) will progress in the
next 30 seconds. This prediction provides valuable information on what
song is best to choose the next time a
change is required for playback. It
effectively minimizes the number of
song changes needed.
In step 3, the system doesnt carry out
a change in tempo immediately. The user
might not follow an abrupt change in
tempo because of ignorance or fatigue.
Instead, the system takes into account a
propagation time. As in the pace-matching mode, the system uses a linear function to calculate the actual time to
change from a given tempo to a new one.
This function, denoted by ti, is supplied
with two points ti(0) = 0 and ti( max) = Ti,
where max denotes maximally allowed
change in tempo as defined by the songs
stretch range.
Finally, in step 4, when the system has
propagated the change, it waits for the
users heart rate to reach a steady state
before making additional changes.
When the user holds a submaximal exertion intensity constant, the heart rate will
reach a plateau.6

Feedback stage: After


exercising
After exercising, the user can collect
and store performance data, the training
program used, and the list of songs
played on a personal computer. These
data can be used for visual inspection
and system learning purposes. The user
can display the performance data on the
PC for inspection, motivation, and
advice on adapting the training method.
Its up to the user to identify whether he
JULYSEPTEMBER 2005

Stride frequency (spm)/music playout tempo (bpm)

Figure 3. Pace matching mode: music


playout tempo is adjusted to the runners
stride frequency with different response
times.

180

170

160

150

140

130
40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210
Time (secs)

or she is under- or over-performing


according to the training scheme. The
system-learning aspects concern determining what music tempos will best
accompany the performance for a given
exercise. The system uses the stride-frequency data that it logged during the
performance of the same exercise over
several training sessions to determine an
optimal set of tempos and songs for that
particular exercise by means of Bayesian
inference.

User experiments
As an informative evaluation, we conducted user experiments for finding the
preferred response time parameter Tm
for the pace-matching mode using a
treadmill and the preferred propagation
time parameter Ti for the pace-influencing mode. Six healthy recreational runners (two females and four males from
22 to 26 years old) took part in the
experiments, in which a single song with
a steady original tempo of 120 bpm
played through in-ear headphones.
Response time for pace-matching
mode
To determine the optimal response
time for pace-matching mode, we had
the runners run on a TechnoGym RunRace HC1200 treadmill. We varied the

speed from 8 km/hour to 12 km/hour


and vice versa, and we manipulated the
response times Tm from 0, 500, 1,000,
2,500, 5,000, and 10,000 msecs. We
instructed the participants to adjust their
stride frequency to the treadmills speed.
Meanwhile, the system adapted music
to their stride frequency. We used the
mean squared error to assess the match
between stride frequency and tempo for
each response time. After each tempo
change, we asked the participants to rate
on a scale of 1 (very negative) to 5 (very
positive) to what extent they appreciated
the music change as a background to
their running.
The runners tended to rate short and
long response times higher than medium
response times when speeding up running. We couldnt arrive at statistically
sound findings when slowing down running. It appeared to us that participants
largely based their judgments on the
extent to which the music kept in time
with their steps. This synchronization
was hard to achieve because using a
treadmill produced undesirable effects;
abrupt speed changes made runners vary
their stride frequency and stride length
in erratic ways.
The mean squared error favored short
response times in the range of 0 to 500
msecs. As figure 3 shows, short response
PERVASIVE computing

15

P E RVA S I V E C O M P U T I N G I N S P O R T S

the

AUTHORS

Gertjan Wijnalda is a student in artificial intelligence with a specialization on intelligent audio and media at the Vrije Universiteit Amsterdam. His research interests
include human-computer interaction and music informatics and technology. Hes
working on his M.Sc. thesis on Interactive Music for Sports at Philips Research. Contact him at Philips Research Labs Eindhoven, Bldg. WY-2.06 Prof. Holstlaan 4, 5656
AA, Eindhoven, The Netherlands; g.l.wijnalda@redant.nl;
www.redant.nl/g.l.wijnalda.

Steffen Pauws is a senior scientist at Philips Research where he works on signal processing, combinatorial optimization, and user interfaces for music applications. He
received his PDEng degree in Software Technology and his PhD in computing science and human-computer interaction from the Technische Universiteit Eindhoven.
Contact him at Philips Research Laboratories, Prof. Holstlaan 4 (WY21), Rm. WY
2.46, 5656 AA Eindhoven, The Netherlands; steffen.pauws@philips.com.

Fabio Vignoli is a senior scientist at Philips Research where he works on music


related applications and user interaction topics. He received his PhD in speech processing and multimodal interfaces from the University of Genova. Contact him at
Philips Research Labs Eindhoven, Bldg. WY-2.06 Prof. Holstlaan 4, 5656 AA,
Eindhoven, The Netherlands; fabio.vignoli@philips.com.

Heiner Stuckenschmidt is a senior researcher in the Knowledge Representation


and Reasoning group at the Vrije Universiteit Amsterdam. His research interests
include practical knowledge representation and non-standard reasoning for semantic search and information integration on the Web, decentralized and context-based
semantic systems, and the use of Semantic Web technologies for the development
of intelligent information systems for medical and scientific applications. He is the
author of Information Sharing on the Semantic Web and editor of a forthcoming
book, Semantic Web and Peer-to-Peer. Contact him at Dept. of Mathematics and
Computer Science Vrije Universiteit Amsterdam De Boelelaan 1081a 1081 HV Amsterdam, The Netherlands; heiner@cs.vu.nl; www.cs.vu.nl/~heiner.

times track changes in stride frequencies


more accurately than longer response
times do.
Propagation time for pace-influencing mode
To determine the optimal propagation times for pace-influencing mode,
we varied the propagation time Ti
between 5, 10, and 20 seconds. In each
condition, we instructed the runners to
run in time with the music by varying
their step/stride frequency. We varied
the tempo from 110 to 150 bpm and
vice versa to reflect desired stride frequencies with the same values. We used
the mean squared error to assess the
match between the tempo and the stride
frequency.
It appeared that participants had difficulties synchronizing with the music if
16

PERVASIVE computing

the tempo changes were done with propagation times of 5 and 10 seconds; they
showed a jerky stepping synchronization
behavior in response to the tempo
change. As indicated by the mean
squared error, we achieved the best synchronization performances with a propagation time of at least 20 seconds.

tial to one of the playback modes,


although achieving a heart rate plateau
takes more time for more intense exercise levels. The combined use of stride frequency and stride length when changing
running speed or when minimizing
fatigue need to be better understood for
further algorithmic improvement. We
must also investigate using music or
audio reproduction properties other than
tempo and their benefits in sport exercise
motivation. For instance, by using stereo
position parameters, the music can play
in front of or behind the runner, which
might motivate the runner to accelerate
or decelerate, respectively.

ACKNOWLEDGMENTS
Thanks to the members of the Sports Coach projectin particular, Jan van Herk and Tijn Schuurmans at Philips Research.

REFERENCES
1. M.F. McKinney and J. Breebaart, Features
for Audio and Music Classification, Proc.
4th Intl Conf. Music Information Retrieval
(ISMIR), H.H. Hoos and D. Bainbridge, eds.,
Johns Hopkins Univ., 2003, pp. 151158;
h t t p : / / i s m i r 2 0 0 3 . i s m i r. n e t / p a p e r s /
McKinney.PDF.
2. E.D. Scheier, Tempo and Beat Analysis of
Acoustical Musical Signals, J. Acoustical
Soc. of America, vol. 103, no. 1, 1998, pp.
588601.
3. E. Tsang, Foundations of Constraint Satisfaction, Academic Press, 1993.

uture work will focus on improving the complete system in a usercentered design methodology
and validating its usability, usefulness, and desirability in a conclusive
user evaluation. We also need to further
address some issues. For instance, situations in which the music might adapt to
the runner while the runner is adapting to
the music need further scrutiny. The need
to detect heart-rate stabilization is essen-

4. E. Aarts and J.K. Lenstra, Local Search in


Combinatorial Optimization, John Wiley
and Sons, 1997.
5. U. Zlzer, DAFX: Digital Audio Effects,
John Wiley and Sons, 2002.
6. J.H. Willmore and D.L. Costill, Physiology
of Sport and Exercise, 3rd ed., Human
Kinetics, 2004.
For more information on this or any other computing topic, please visit our Digital Library at www.
computer.org/publications/dlib.

www.computer.org/pervasive

JULYSEPTEMBER 2005

PERVASIVE computing

17

You might also like