Robot Juggling

Summary In this assignment students learn how to control a robot to juggle a ball. To achieve this goal, students will program a velocity controlled robot, such that it causes the ball to bounce with some desired periodic motion. Specifically, students will implement a hybrid controller that uses a mirror control law within the framework of a 2D physics simulator. Similar to many control assignments, the theoretical learning objectives deal with analyzing system responses and stability criterion. Additionally, designing and implementing the controller will give students a chance to translate theoretical knowledge into real-world practice. This assignment differentiates from most introductory control assignments because the dynamics of robot juggling is highly nonlinear, due to the collisions with the robot.
Topics robotics, feedback control systems, and nonprehensile manipulation
Audience This assignment is tailored to undergraduate students, with at least an introduction class in programming. It was created for a sophomore/junior engineering class in Dynamics and Control.
Difficulty The difficulty level of the assignment is fairly low. The purpose is to introduce students to control and develop a working implementation. All steps are broken down into simple components. All students are expected to be able to complete the assignment. That being said, the framework does allow for interesting and more challenging future work.
  • Everything we use in the assignment is open source.
  • The source code and installation process has worked consistently on OS X, Ubuntu, and Windows.
  • All implementation throughout the assignment has visualations.
  • We introduce hybrid control for nonlinear dynamics in a tutorial-like framework.
  • Downloading python packages on anaconda is somewhat slow
  • No readily available real robot to implement control algorithms
  • Does not implement alternative approaches
  • May be challenging for people without any programming experience.
  • The assignment is implemented with python, using readily accessible packages from Anaconda Cloud.
  • The assignment is free, open source, and capable of running across popular operating systems, like Windows, Mac, and Ubuntu.
    The following componenets can be done separately:
  • Position-derivative control of a velocity-controlled robot.
  • Analyzing impact dynamics of a ball projectile Additionally, the framework is conducive to easily adding more objects for simulation if somene wants to build upon it.


The content for the assignment is completely software based.
Interactive Assignment There are three jupyter notebooks for students to use for completing the assignment. A web preview of the assignments are shown here:
Source Code Repository You can download a zip of the code here

This Static Code repository contains:
  • a readme file explaining how to run the software
  • a python install script to install conda packages
  • helper python file for the notebooks
  • create_planar_world.pyadditional helper file that contians Box2D and pygame code.
  • media a folder containing images and gifs

Additionally, we have the three jupyter notebooks. (Note, to download you will need to right click and use save as )
Recommended Reading All of the code was implemented by reviewing the following conference and journal papers:
  • Buhler, Martin, Daniel E. Koditschek, and Peter J. Kindlmann. "A family of robot control strategies for intermittent dynamical environments." IEEE Control Systems Magazine 10.2 (1990): 16-22.
  • Schaal, Stefan, and Christopher G. Atkeson. "Open loop stable control strategies for robot juggling." Robotics and Automation, 1993. Proceedings., 1993 IEEE International Conference on. IEEE, 1993.
  • Buehler, Martin, Daniel E. Koditschek, and Peter J. Kindlmann. "Planning and control of robotic juggling and catching tasks." The International Journal of Robotics Research 13.2 (1994): 101-118.
  • Ronsse, Renaud, Philippe Lefevre, and Rodolphe Sepulchre. "Rhythmic feedback control of a blind planar juggler." IEEE Transactions on Robotics 23.4 (2007): 790-802.
Powerpoint Slides for Guided tutorial The powerpoint slides are created for giving a guided tutorial on implementing a robot juggler. They also provide the theoretical overview of Position-derivative control and of course, the robot juggling problem.