Robot
Published on December 4 2017

## Jd Plays Rock Paper Scissors

My 2 year-old granddaughter, who loves EZ-Robot JD, is just learning how to play the “Rock Paper Scissors” game (RoShamBo) and recently said “I want to play it with JD”! My 7 year-old grandson and I decided to take up the challenge

In searching through the EZ-Robot community forum I noticed that @user Steve G had developed that game using EZ scripts, but had not implemented it on a JD. The tutorial on speech recognition was also a great help.

I believe that implementing it on a JD would be a great learning exercise for STEM students in middle school through college. The algorithms they could develop could range from simple random numbers through Markov Chains and using JD to provide a “humanoid” opponent would provide great feedback.

The problems needed to be solved to implement the game on JD are listed below. Note that its desirable to not modify JD in any way, e.g. adding fingers
1. Develop a game start/stop mechanism
a. Solution- Use JD’s voice recognition software to control the script
2. Develop the “swinging arm” (1,2,3) countdown motion on the JD needed for the human as a visual sync
a. Solution- use AutoPosition control
3. Develop human recognizable hand signals for Rock, Paper & Scissors
a. Solution- use AutoPosition control with these positions:

4. Develop a means to detect the winner of the game
a. Solution- have the human verbally announce their move in sync with JD arm motion. JD can do voice recognition to determine winner
i. Issue- Human could cheat by waiting until they see JD’s move. ACCEPTED
b. Solution- have JD use object recognition to detect human’s move
i. Issue- JD’s camera isn’t fast enough. Note, researchers have used a high-speed camera to predict human’s next move based muscle movement, i.e. cheating
5. Develop an algorithm for playing
a. Solution- Use a random number generator to generate moves. ACCEPTED
b. Solution- use “game theory” to predict human’s next move. Researchers have shown that humans don’t generate random moves, but tend to follow fixed patterns, e.g. Winners stay with last move, Losers use the move that opponent used to win. ACCEPTED

c. Solution- Use the logic in the “winner’s triangle” shown here and described in this video

d. Solution- Use advanced probability algorithms to generate JD’s next move
i. Issue- beyond the scope of this project. As they love to say in textbooks “This exercise is left to the student”

Summary... it worked... here is the video using random picks

Frank
December 5 2017
Nicely done, thanks for sharing!
December 5 2017
Very cool. Now you need two of them and get them to play each other.
December 5 2017
@Nink,
Funny, I'm working on that right now...JD playing with Six

I was having trouble getting the speech recognition to accurately hear one another as I described in another post but got some good feedback on that

I was following Professor E's tutorial about have to make a scene using one computer for each robot, but due to voice recognition issues I decided to connect to both robots as once with a single computer also to remove the timing issues. Of course, in that case they really don't listen to one another, they just appear to do so.

My other issue that I discussed in another post is that I want to use an Autoposition (with movement) control for the JD, but an Autoposition control(no movement) for the Six to do things like wave and dance (no forward, reverse, etc)

I've got some feedback from @jeremie I need to test

Everything is working except for that. I might post post it to stir up some interest and add the Six movements later

Thanks,
Frank
December 5 2017
@Nink
Here is the rough draft without any movements (yet) on the Six... I still need to resolve the second AutoPosition control issue

When that's done, I'll do the full write-up and post the project
Frank
December 6 2017
2 much fun. First thing I saw when I woke up, still laughing.