Robotic Manipulation

Perception, Planning, and Control

Russ Tedrake

© Russ Tedrake, 2020-2023
Last modified .
How to cite these notes, use annotations, and give feedback.

Note: These are working notes used for a course being taught at MIT. They will be updated throughout the Fall 2023 semester.

Previous Chapter Table of contents Next Chapter


is the main software toolbox that we use for this text, which in fact originated in a large part due to the MIT Underactuated Robotics course. The website is the main source for information and documentation. The goal of this chapter is to provide any additional information that can help you get up and running with the examples and exercises provided in these notes.


is primarily a C++ library, with rigorous coding standards and a maturity level intended to support even professional applications in industry. In order to provide a gentler introduction, and to facilitate rapid prototyping, I've written these notes exclusively in python, using Drake's python bindings (pydrake). These bindings are less mature than the C++ backend; your feedback (and even contributions) are very welcome. It is still improving rapidly.

In particular, while the C++ API documentation is excellent, the autogenerated python docs are still a work in progress. I currently recommend using the C++ documentation to find what you need, then checking the Python documentation only if you need to understand how the class or method is spelled in pydrake.

There are also a number of tutorials in that can help you get started.

Online Jupyter Notebooks

I will provide nearly all examples and exercises in the form of a Jupyter Notebook so that we can leverage the fantastic and relatively recent availability of (free) cloud resources.

Running on Deepnote

We'll use Deepnote as the primary platform for the course. After following any of the links from the chapters, you should:

  1. Log in (the free account will be sufficient for this class)
  2. "Duplicate" the document. Icon is in the top right next to Login.
  3. Run all of the cells (can use the "Run notebook" icon just above this cell)
  4. Many of the notebooks use MeshCat for interactive visualizations. Click on the url printed just below "StartMeshcat" (often the second code cell of the notebook) to see the MeshCat window.

Enabling licensed solvers

You can enabled more powerful solvers for MathematicalProgram if you have a license (most are free for academics). Please see for instructions.

Running on your own machine

As you get more advanced, you will likely want to run (and extend) these examples on your own machine. On platforms/configurations that Drake supports (the latest two releases of Mac and Ubuntu using the system default python versions). The simplest installation is via pip; I would typically recommend using a virtual environment:

python3 -m venv venv
source venv/bin/activate
pip3 install manipulation --extra-index-url       
Then you can download notebooks directly from Deepnote and run them locally (or develop your own notebooks).

The website also has a number of alternative installation options, including precompiled binaries and Docker instances. If you build from source (awesome!), then make sure you also build the python bindings. Finally, make sure you have the Drake installation in your PYTHONPATH.

If you want to download all of the notebooks at once, you can git clone the course notes repository. You'll likely want to start from the repository's root directory. Then launch your notebook with:

jupyter notebook

The examples for each chapter that has them will be in a .ipynb file right alongside the chapter's html file, and the notebook exercises are all located in the exercises subdirectories.

Getting help

If you have trouble with , please follow the advice here. If you have trouble with the manipulation repo, you can check for known issues (and potentially file a new one) here.

Previous Chapter Table of contents Next Chapter