|
|
Report: A Model for
Mood-Based Robot Behaviors
Updated 11/06/00
One of the ways I'd like to give Cybert 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 Cybert's general
"mood", 'Y' values represent his "comfort". These
values will increment and decrement based on sensor input. For example, being alone
for an extended period of time will cause Cybert's Comfort to decrement. This could
eventually trigger his "find people" behavior.
I'll probably use values ranging from 0 to 100 for both of these variables, as
this will give me fine detail when Cybert needs to make a mood dependent decision.
But overall, the intersection of Mood and Comfort 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 Cybert's
behaviors. I could make the default "Normal" cell much larger than the
others, for example.
Mood Changes Based
on Sensor Feedback
Cybert 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 Cybert 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 Cybert's mood: (list
incomplete)
- Bumping into something (-Mood, -Comfort)
- 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)
- Low battery level (-Mood -- evaluated every X minutes)
- Fresh battery level (+Mood -- evaluated every X minutes)
Sensor Based Decision Making and Speech
Cybert's behaviors will change based on the mood he is in. Here are some
examples:
- Cybert 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 Cybert 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 Cybert's Comfort drops to a certain point, he will choose a
behavior that will increase his Comfort. (Looking for noise, looking for
people, etc.)
- When Cybert's Mood drops below a certain threshold he will start
looking for ways to increase it (playing a game, etc.)
- When Cybert 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 level
is high
|