Stephen Meschke's practice log for 9th January 2019

View Stephen Meschke's profile, records, practice calendar, full log

View all log users

9th January 2019

Stephen Meschke

vision research, 1 minute

I built a Claude Shannon Juggling Machine. Instead of using physical objects, I built this machine virtually. This is written in Python 3. The UI and some of the functions use the computer vision software library OpenCV. Like Scott said in the original post, the fun of this device is not in building it. The interesting part is tuning the device so that it juggles.

This program is object-oriented. The balls are the objects. Each ball object has two attributes, (1) a tuple to describe the ball's (x,y) coordinates, and (2) a tuple to describe the ball's velocity vector (speed and direction).

Several functions allow the ball to interact with the environment. These functions move the ball, apply gravity, bounce the ball off an object, etc... In the main loop of the program, all of these functions are called on the balls to produce juggling.

The machine is tuned by adjusting the parameters. Parameters are defined before running the program, or changed during runtime using the keyboard. The most important parameters are speed and rotation. Each number of balls requires a specific combination of speed and rotation to juggle. Graph of number of balls and, speed and rotation.


To find these values, I tuned the machine during runtime. It was tedious to tune the machine, and I am searching for a way to mathematically derive the parameters that will produce juggling for n number of balls. Is there a formula that relates the number of balls and the combination of speed and rotation?

Please try this out for yourself:

Link to Code

Link to Video:

Total practice time: 1 minutes

Location: Linux

Comments (0)