Exercise: Pendulum de Deux

The main objective of this exercise is to become familiar with the Webots robot simulator we will be using for the first part of the course. The sample simulation mixes human and automated control so it also begins our inquiry into hybrid performance.


Screen shot of the Webots world view with the sample project loaded.


After this exercise, you should be able to:

  1. Install the Webots simulator on your own computer.

  2. Install a Python 3 programming system on your own computer.

  3. Unpack a ‘Webots project’, i.e. a sample world definition.

  4. Run the simulator.

  5. Practice keyboard input to create improvised choreography.

  6. Modify an existing Python script to customize the movement primitives.

  7. Modify dynamic properties of a physical simulation.

  8. Create a movie file.

Reference Guides

Please review the following reference guides as needed:


Steps and observations

  1. The details of software installation can be found on the Webots and Python pages listed above, as well as links to the software documentation. Please try this soon, and let me know if you have problems getting this running on your own computer. There are many potential ways this might go go astray and I’d like it not to become a roadblock to progress.

  2. On first launch, Webots will bring up the Guided Tour, which is a fun way to see the diversity of pre-installed robot models.

  3. Please download the Webots project zip file linked above and unpack it wherever convenient for you. In general, these exercises will provide a template project as a starting point for you to modify. Webots expects a particular folder structure within the project. Each project can contain one or more world definitions with associated robot control programs and other object definitions. Please note the reference project will continue to be updated.

  4. After unpacking, please locate the following contents:

    • Webots/worlds/pendulum-de-deux.wbt: sample world file, opening it should launch the simulator

    • Webots/controllers/dbl_pend/dbl_pend.py: Python script to control the simulated robot

  5. Please explore the interface. The play/rewind interface above the graphics interface should run and reset the simulation. The tree editor on the left is the “Scene Tree” which defines all the properties of the world and mechanism. The code editor should be open on the right; if not, please locate the Robot object in the scene tree, right-click on it and select ‘Edit Controller’ from the menu.

  6. For a more thorough tutorial, please consult The User Interface in the Getting Started with Webots section of he Webots User Guide.

  7. The sample simulation implements keyboard control of the left robot. Please try starting the simulation, clicking in the graphics window, then pressing keys t, r, l, b, w, and p.

  8. The key deliverable for the assignment is a movie of a movement sequence. This doesn’t need to be complicated, although I encourage you to experiment with a variety of choreography. Here are some suggested approaches of varying difficulty:

    • Define additional poses within the poses dictionary in dlb_pend.py, then practice using these to improvise a composition.

    • Add a procedure to set_automatic_targets to create more interesting automated movements.

  9. Some ideas: can you build the movement to a climax? Can you push the limits of the simulation in an expressive way?

  10. In this example, the mechanism is entirely defined within the scene tree. This won’t always be true; more complicated robots are defined as code in .proto files. The Robot definition is deeply nested as it represents a graph of the kinematic structure.

  11. Please also experiment with changing a dynamic or static property of the world. Here are some suggested approaches of varying difficulty:

    • Modifying the geometry or mass of elements of either arm.

    • Add fixed barrier objects into the scene. These can be a Solid Node with a Shape and boundingObject defined so it participates in collision, but physics left NULL so it doesn’t move. See controls-demo.wbt for an example.

    • Adding additional devices into the scene.

  12. Parameters can be adjusted while the simulator is running. But I highly recommend you get in the habit of resetting the simulation state before saving any world changes in order to preserve the accuracy of the initial conditions. This does mean that desired positional changes need to be re-applied to the initial state.

  13. If you have any questions, please email.

  14. Finally, please render a short movie clip of your final results. You can either select File/Make Movie or the film icon in the toolbar.


  1. Short video clip (less than 30 seconds) of human and robot performance, submitted as an embedded video in a post on the RCP project site, either public or private. Short small .mp4 files may be directly uploaded, or you may embed a third-party streaming service.