|
|
A
Model for
Mood-Based Robot Behaviors
3/12/99
One of the ways I'd like to give Albert unpredictable behaviors is
through the implementation of environment driven moods that affect what he says and how he
acts. To this end I've developed a very simple 2 dimensional array (x,y) I call a
Mood Matrix. 'X' values in the array correspond to Albert's general
"mood", 'Y' values represent his "comfort". These
values will increment and decrement based on sensor input. For example, being in a
dark room for an extended period of time will cause Albert's Comfort to decrement.
(Which could eventually trigger his "find light" behavior.) Sensing
a human, on the other hand, will result in an increase in his Comfort.
I'll probably use values ranging from 0 to 100 for both of these variables, as
this will give me fine detail when Albert needs to make a mood dependent decision.
But overall, the intersection will fall in one of the 9 cells below:
Mood Matrix
x-1, y+1
bad / comfortable
Depressed/Edgy
|
x, y+1
normal / comfortable
Secure
|
x+1, y+1
good / comfortable
Playful
|
x-1, y
bad / normal
Upset
|
x, y
normal / normal
Normal |
x+1, y
good / normal
Happy |
x-1, y-1
bad / uncomfortable
Angry
|
x, y-1
normal / uncomfortable
Afraid |
x+1, y-1
good / uncomfortable
Concerned |
Note that Mood varies from bad to normal to good, while Comfort changes
from uncomfortable to normal to comfortable; and that each cell shows an overall attitude
that was determined by combining Mood and Comfort. (Bad + Uncomfortable =
Angry, Good + Comfortable = Playful). I'd like to use global variables to determine
the boundaries of these cells as that will make it a bit easier to change Albert's
behaviors. I could make the default "Normal" cell much larger than the
others, for example.
Mood Changes Based
on Sensor Feedback
Albert will make decisions based on his overall mood. Some of
these decisions will be reactive, such as the things the robot will say in response to
external stimuli, others will be proactive as Albert tries to improve his condition.
To illustrate this last point, if his Mood is low, he will eventually choose one of the
actions that he knows will raise his Mood variable. Over time, Mood and Comfort
will gradually return to the Normal state, whether the movement is up or down.
Here are some other things that will affect Albert's mood: (list
incomplete)
 |
Bumping
into something (-Mood, -Comfort)
|
 |
Being in a well lit room (+Comfort --
evaluated every X minutes)
|
 |
Being in a dark room (-Comfort --
evaluated every X minutes)
|
 |
Sensing people (+Comfort -- evaluated
every X minutes)
|
 |
Not sensing people for an extended
period (-Comfort -- evaluated every X minutes)
|
 |
Playing a game (+Mood)
|
 |
Loud noise (-Comfort)
|
 |
Very bright light shined on light
sensor (-Mood)
|
 |
Low battery level (-Mood -- evaluated
every X minutes)
|
 |
Fresh battery level (+Mood --
evaluated every X minutes)
|
Sensor Based Decision Making and Speech
Albert's behaviors will change based on the mood he is in. Here are some
examples:
 |
Albert will spend a lot of time
commenting on the world around him. Each of these comments will have nine possible
variations to correspond with the nine cells in the Mood
Matrix. If Albert bumps into a wall he might say "Ouch" if his mood
is Normal (x,y), "What's happening???" if his mood is Concerned (x+1,y-1),
or even "Dammit" if his mood is Angry
(x-1,y)
|
 |
Once Albert's Comfort drops to a
certain point, he will choose a behavior that will increase his Comfort.
(Looking for light, looking for people, etc.)
|
 |
Once Albert's Mood drops below a
certain threshold he will start looking for ways to increase his Mood (playing a
game, etc.)
|
 |
When Albert is happy, he will be more
likely to laugh, tell jokes (downloaded from a 'clean' joke webpage), play games, or
sing songs
|
 |
He will be more likely to go off
exploring when his Comfort is high
|
|