What is PythonRobotics?

This is an Open Source Software (OSS) project: PythonRobotics, which is a Python code collection of robotics algorithms. These codes are developed under MIT license and on GitHub.

This project has three main philosophies below:

Philosophy 1. Easy to understand each algorithm’s basic idea.

The goal is for beginners in robotics to understand the basic ideas behind each algorithm.

Python programming language is adopted in this project to achieve the goal. Python is a high-level programming language that is easy to read and write. If the code is not easy to read, it would be difficult to achieve our goal of allowing beginners to understand the algorithms. Python has great libraries for matrix operation, mathematical and scientific operation, and visualization, which makes code more readable because such operations don’t need to be re-implemented. Having the core Python packages allows the user to focus on the algorithms, rather than the implementations.

PythonRobotics provides not only the code but also intuitive animations that visually demonstrate the process and behavior of each algorithm over time. This is an example of an animation gif file that shows the process of the path planning in a highway scenario for autonomous vehicle.

https://github.com/AtsushiSakai/PythonRoboticsGifs/raw/master/PathPlanning/FrenetOptimalTrajectory/high_speed_and_velocity_keeping_frenet_path.gif

This animation is a gif file and is created using the Matplotlib library. All animation gif files are stored in the PythonRoboticsGifs repository and all animation movies are also uploaded to this YouTube channel.

PythonRobotics also provides a textbook that explains the basic ideas of each algorithm. The PythonRobotics textbook allows you to learn fundamental algorithms used in robotics with minimal mathematical formulas and textual explanations, based on PythonRobotics’ sample codes and animations. The contents of this document, like the code, are managed in the PythonRobotics GitHub repository and converted into HTML-based online documents using Sphinx, which is a Python-based documentation builder. Please refer to this section “How to read this textbook” for information on how to read this document for learning.

Philosophy 2. Widely used and practical algorithms are selected.

The second philosophy is that implemented algorithms have to be practical and widely used in both academia and industry. We believe learning these algorithms will be useful in many applications. For example, Kalman filters and particle filter for localization, grid mapping for mapping, dynamic programming based approaches and sampling based approaches for path planning, and optimal control based approach for path tracking. These algorithms are implemented and explained in the textbook in this project.

Philosophy 3. Minimum dependency.

Each sample code of PythonRobotics is written in Python3 and only depends on some standard modules for readability and ease to setup and use.

Requirements

PythonRobotics depends only on the following five libraries, including Python itself, to run each sample code.

If you only need to run the code, the five libraries mentioned above are sufficient. However, for code development or creating documentation for the textbook, the following additional libraries are required.

For instructions on installing the above libraries, please refer to this section “How to run sample codes”.

Audio overview of this project

For an audio overview of this project, please refer to this YouTube video.

Arxiv paper

We have published a paper on this project on Arxiv in 2018.

See this paper for more details about this Project: