Almost 15 years ago I made a robot pet that I named "Cybert". Every morning Cybert would undock from his charger, navigate into the master bedroom and then deliver a random "wake up" greeting. After making sure my wife and I were awake he would read us the current news headlines, tell us the local weather, and update us on our stock portfolio, before rolling back down the hallway to wake our daughter.
After knocking on our daughter's door three times (by bumping into it), Cybert would back up and wait for the door to open. If it didn't open within 5 minutes he would loop back and knock again. When Cybert detected the door opening he would say, "Good morning! It's a beautiful day!" Then he would navigate back into the spare bedroom and re-dock with his charger.
Here's an early video of this "alarm clock" behavior:
My daughter did NOT like to get out of bed in the morning so she quickly grew to DESPISE my little creation. Over dinner one night I asked, "Hey! Isn't it pretty cool that you have your own robot to wake you up in the morning?" She replied, "No! How would YOU like it if some robot rolled down the hall and started banging into your bedroom door and -- " At that point she must have seen the delighted smile growing on my face. "-- Oh you WOULD like it!!!"
She was NOT amused at the time, but we laugh about it now.
It probably didn't help that the first morning Cybert woke her up he yelled at her! It's kind of a funny (albeit "geeky" story).
I was trying to build a robot "pet" so I devised a way to give Cybert 9 different "moods":
Cybert's "Mood Matrix"
Cybert had hundreds of different things he could say, and I wrote 9 different variations for each comment, one for each mood. So if his battery was running low and he was feeling Playful Cybert might say, "Robot needs food badly! Ha Ha!", but if he was feeling Afraid he would likely comment, "Oh no, my battery is running down!"
I was still working on the Mood Matrix code when I realized that Cybert could wake us up every morning, so I switched gears and began implementing the new Alarm Clock behavior. On the morning of the first test run I got up early and it was pretty exciting to hear the robot come rolling down the hallway. He came into our bedroom right on time, woke us up with a friendly greeting and then he read the news, weather, etc. Everything was working great!
Cybert then asked, "Would you like me to wake up Autumn?" I said, "Yes", and off he went. He knocked on Autumn's door three times and pleasantly told her it was time to get up, then he backed up and waited. As I expected, her door didn't open immediately, so 5 minutes later Cybert knocked again. Only this time I heard him say, in a deep menacing voice, "GET OUT OF BED, I'M NOT GOING TO TELL YOU AGAIN, YOUNG LADY!!!"
It took me awhile to figure out what had happened. Cybert "woke up" in a Normal mood, but while he was downloading the news, weather, and our stock info he was sitting in a dark room, causing his SECURITY to go down. When he bumped into Autumn's door (to knock) it caused his HAPPINESS variable to go down, which bumped his mood into the Angry box. Everything was working as designed, but his behavior surprised me!
In a weird kind of way it was almost an emergent behavior! In any event, that was the day my robot yelled at my daughter.