Expressive movement in a limited-movement robot

IMG_0057_0.JPG (1944691Bytes)
IMG_0057_0.JPG (1944691Bytes)
Hey everyone, long time no see!

So I’ve got a couple more questions for the LMR community, but first, some background info…

I am wanting to use the EZ-Robot platform to bring yet another dinosaur (Monty the T-rex) to “life”. Don’t worry, I haven’t forgotten about Roboscraptor, she’s just on the back burner right now…

The reason I’m posting about the EZ-Robot software here is because I don’t have the actual EZ-B controller yet- I am still experimenting with only the software.

All right, first question:

I was skimming an article on how to make a robot more lifelike, and most of the tips involve making the robot move in various ways to indicate emotion, movements it’s about to make, and things like that. But Monty is rather limited in the movements he can make (look up some videos of Monty and you’ll see what I mean). Although I think I can use PWM to change the movements’ speed and irregularity, does anyone have any advice on how to make a limited-movement robot even more “animated”? I don’t want to add extra motors/servos to Monty yet, since I don’t have that much hacking experience and don’t want to render him useless.

Second question:

The aforementioned article also says that some randomness is always a good thing to add to a robot, dialogue and movement-wise. That brings me to the second question: If I want Monty’s movements to be be a result of chaos (the result of different parts of the AI interacting rather than actual randomness,) how on earth could I implement that using needs, “emotions”, and external inputs?

Thank you all for any answers you can give me.

Gearing / pulleys

Attach multiple connection points to one motor so the move at the same time. You can also look into designing atype of “clutch” system which uses only two motors - one selects which motion to animate, and the other actually animates it. If you’re really looking to get into animatronics, consider purchasing a lot of small, inexpensive RC servo motors and a mask. You’ll need a programmable microcontroller and servo controller. Can you provide a few photos here?

Hi Cbenson!That’s a very

Hi Cbenson!

That’s a very interesting idea, but I am trying to keep Monty’s internals (except for his future controller) as-is. I don’t want to get too involved in my first hack and ruin him…

Thank you for your advice, though!

I just meant that I would like to add more lifelikeness to his movements (like traditional/CGI animators use). I now realize that the whole “chaotic action selection” is an entirely different aspect of building lifelike robots.

I have added a picture of Monty to the main post.

Monty Dinosaur

The photo is apprecaited. Since the electronics are basically mass produced, I don’t suspect it will be possible to add additional motors. The onboard motor controllers are likely spec’d for the motors used and cannot handle more. You might have to replace the electronics entirely if you want to add motors. You’re essentially “hacking”.

re: 2nd Question

As far as the 2nd Question, there are probably many ways to do it, this is only one, a very simple one.  Chaos can arrive out of extremely simple things.

Imagine a set of motives/needs that are continuously being recalculated.    Examples:  Talk (Social), Explore (Curiousity), Do Nothing (Boredom), Patrol, Re-charge, etc.   Talk could be expanded into more detail (perhaps hierarchical) like talk, listen, question, etc.

Each motive could have a start value, a goal value, and a velocity.  If the robot recalcs each motive a few times a second, the value of each motive would start moving towards its goal value by the velocity.  Some go up, some go down, some do it quickly, some slowly.  Whichever motive is highest “wins” in that moment and gets executed.  The result of this execution (or other events in the bot) should alter that motives value (temporarily satisfying it) and other values as well (like decreasing bordom).

A bot with a 4 hr battery would have a very low velocity on its recharge motive.  A listening motive might hit its max as soon as the robot asks a question of a person, but degrade within seconds…prompting the bot to pursue another motive like making a statement.   A bot might focus its body language on a person it is talking to, but quickly exhibit distracted behavior (looking away, ears moving, etc) if the person is not being responsive.

This is what I did for Anna and Ava – one motive collection, another collection for emotions, which play off of each other as well.  Its simple.  It has more than enough prereqs for chaos.  I wish I had made the motives hierarchical though…like I mentioned above.  It’s what causes the bot to get bored, fall asleep, decide to talk, decide to ignore me and look at some interesting object if I’m not talking in a timely fashion, etc.  Its useful if you can store the values somewhere where you can modify them through a UI for tuning.

There is still a place for randomness within this model.  A movement or gesture could be driven by a motive, but it need not be the same.  It can have random components (like lip movements when talking), or also be driven by the amplitude of the emotion, motive, or other state…if the bot is happy while talking, the lip movement might be random, but the randomness is around a smile that is based on the amplitude of happiness.

I hope this is enough to get some thoughts going.

Thank you so much!
mtriplett, that is actually almost exactly how I have my AI’s drives/needs set up- your suggestion is perfect! Thank you!

I only plan on removing the
I only plan on removing the original controller board and replacing it with an EZ-B controller. I think others have succeeded in doing this with other toy robots, so I think it might be worth a shot…

EDIT: This was a reply to Cbenson… oops.

Randomness

Maybe if you added some sensors for sound, light, motion, etc and let them trigger motor activity, you would get some activity that actually looked like it was responding to it’s environment rather than a totally random movement. Some cheap sensors feeding the gates of some small SCRs should do the trick.

**Forget pwm and all that **
Ezrobot software has the auto position. You can make frames and actions. There’s values for speed and steps that are applied to the gait and movement. You don’t need to think about any of the technicals, unless you’re into that sort of thing. It’s much more creative to use the accessibility controls and get your robot doing lots. Don’t forget the camera control is REAL powerful and easy to use. So the robot can detect faces or objects. You can teach it your face so the robot knows who you are. And you can teach it objects and have it respond differently per object. Here’s a link to using the auto position: http://www.ez-robot.com/Tutorials/Help.aspx?id=180

You will get a lot more experienced support on the ezrobot forum here: http://www.ez-robot.com/Community/Forum/

Have fun!

Interesting idea. Thank you
Interesting idea. Thank you for your input!

Modifications

Ah! Understood. That opens up some possibilities.Do you know the kinds of motors which are integrated into the dino? Are they all geared DC motors or are there some 3-pin RC servos?

I originally wanted to use
I originally wanted to use the motors that came with Monty to animate him, like others with EZ-Robot have done with their robots. But if animating Monty efficiently means replacing all of the existing motors, I’ll opt out of using Monty’s chassis given that the EZ-B servos are easier to animate. Thank you for your input.