Another dare... another story...

Okay, I love a good dare. Here's the story:

I was demonstrating the NXT today to some kids I know. There were 4 of them and they all wanted to play with it, but I was giving a demonstration of the program and building with the kit using a projector and my laptop.

I was going to have one of them build the TriBot from the Quick Start guide, but they didn't like that idea and told me to build something else... one of them (who reads my blog) DARED me to build something new and program it with them. I asked for a volunteer... and they all raised their hands so they played a game of rock-scissors-paper to pick the winner... (Carson)... and the idea was born.

So... I present to you, the BETA and EXTREMELY UGLY Rock-Scissors-Paper Bot or, RaSPy (the nickname given to it).

Here's how it works (and it DOES work): Just like playing Rock-Scissors-Paper, the bot does the count: 1... 2... 3... and then displays its selection (Rock, Scissors, or Paper). For the counts, the motors (all 3 of them) go forward 15 degrees and back 15 degrees - 3 times. Then, a RANDOM block generates a number (1, 2, or 3). 1 = Scissors, 2=Paper, and 3 = Rock. Using some COMPARE blocks and some SWITCH blocks, the random # is discovered and the correct motor is signaled to go forward 90 degrees (so there's no confusing the selection - it almost slams down on the table - gotta tweak that). After the bot's selection is made, you must manually reload the game by pulling the Scissors, Paper, and Rock motors back to their starting positions (about -20 degrees from vertical).

Again, it's UGLY... it's NOISY... and did I mention it's UGLY?

We played it dozens of times and it does appear to have a random (pseudo-random, of course) selection... we didn't detect any patterns.

The kids were impressed... and I was able to breathe properly because I was worried it wasn't going to work.

Pictures and screenshot of the program follow, plus a small video.

Click on the image at left to see a larger view of the entire program... with comments. I might choose to clean it up with some loops for those early MOVE blocks, but not today.

From left to right: Rocks (made of 2 tires squished together)... Paper made of 5 15-hole beams... and scissors.

I had to build a sort-of base for it to support the twisting of the motors (LOTS of torque!) because these things were flying everywhere.

This was the initial starting position, with all the pieces vertical... I found out it worked a little better to take them back about 15-20 degrees (towards the brick).

The Paper was heavy (because it's so high, I had to take beams out to lighten it or it would twist down). - The video is grainy, dark, and of very poor quality. I'm a writer, not a videographer, so apologies in advance. 45 seconds - rock does win... eventually.


Anonymous said…
If it works.. Who cares it's ugly.. It symbolising the rock paper and scissors..

An improvement can be made to let the motors reset the state after you played it. So you don't have to do that with your hands.. ;)

Sure you had some fun. That's all what matters.
Unknown said…
Neat, Jim!

And certainly near children's everyday life experience.
I presume the LEGO educational people would be rather interested in RaSPy (after some cosmetic enhancements, maybe).

With three appropriate sound files, the bot could even count "1..2..3" instead of knocking (I noticed that a "speaking" robot tremendeously increases the fun children have with it, let alone the admiration ;-) ... remember R2D2).

Matthias Paul
Anonymous said…
This is the second reference I've seen to 'reset motors'.

Do motors remember their 'program start state' and does 'reset motors' allow you to return them to start position (+/- 1 degree) ?

Popular Posts