|
| 1 | +.. _`What is PythonRobotics?`: |
| 2 | + |
| 3 | +What is PythonRobotics? |
| 4 | +------------------------ |
| 5 | + |
| 6 | +This is an Open Source Software (OSS) project: PythonRobotics, which is a Python code collection of robotics algorithms. |
| 7 | +These codes are developed under `MIT license`_ and on `GitHub`_. |
| 8 | + |
| 9 | +This project has three main philosophies below: |
| 10 | + |
| 11 | +1. Easy to understand each algorithm's basic idea. |
| 12 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 13 | + |
| 14 | +The goal is for beginners in robotics to understand the basic ideas behind each algorithm. |
| 15 | + |
| 16 | +`Python`_ programming language is adopted in this project to achieve the goal. |
| 17 | +Python is a high-level programming language that is easy to read and write. |
| 18 | +If the code is not easy to read, it would be difficult to achieve our goal of |
| 19 | +allowing beginners to understand the algorithms. |
| 20 | +Python has great libraries for matrix operation, mathematical and scientific operation, |
| 21 | +and visualization, which makes code more readable because such operations |
| 22 | +don’t need to be re-implemented. |
| 23 | +Having the core Python packages allows the user to focus on the algorithms, |
| 24 | +rather than the implementations. |
| 25 | + |
| 26 | +PythonRobotics provides not only the code but also intuitive animations that |
| 27 | +visually demonstrate the process and behavior of each algorithm over time. |
| 28 | +This is an example of an animation gif file that shows the process of the |
| 29 | +path planning in a highway scenario for autonomous vehicle. |
| 30 | + |
| 31 | +.. image:: https://github.com/AtsushiSakai/PythonRoboticsGifs/raw/master/PathPlanning/FrenetOptimalTrajectory/high_speed_and_velocity_keeping_frenet_path.gif |
| 32 | + |
| 33 | +This animation is a gif file and is created using the `Matplotlib`_ library. |
| 34 | +All animaion gif files are stored in the `PythonRoboticsGifs`_ repository and |
| 35 | +all animation movies are uploaded to this `YouTube channel`_. |
| 36 | + |
| 37 | +PythonRobotics also provides a textbook that explains the basic ideas of each algorithm. |
| 38 | + |
| 39 | +.. _`Python`: https://www.python.org/ |
| 40 | +.. _`PythonRoboticsGifs`: https://github.com/AtsushiSakai/PythonRoboticsGifs |
| 41 | +.. _`YouTube channel`: https://youtube.com/playlist?list=PL12URV8HFpCozuz0SDxke6b2ae5UZvIwa&si=AH2fNPPYufPtK20S |
| 42 | + |
| 43 | + |
| 44 | +2. Widely used and practical algorithms are selected. |
| 45 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 46 | + |
| 47 | +The second philosophy is that implemented algorithms have to be practical |
| 48 | +and widely used in both academia and industry. |
| 49 | +We believe learning these algorithms will be useful in many applications. |
| 50 | +For example, Kalman filters and particle filter for localization, |
| 51 | +grid mapping for mapping, |
| 52 | +dynamic programming based approaches and sampling based approaches for path planning, |
| 53 | +and optimal control based approach for path tracking. |
| 54 | +These algorithms are implemented in this project. |
| 55 | + |
| 56 | +3. Minimum dependency. |
| 57 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 58 | + |
| 59 | +Each sample code is written in Python3 and only depends on some standard |
| 60 | +modules for readability and ease of use. |
| 61 | + |
| 62 | + |
| 63 | +.. _GitHub: https://github.com/AtsushiSakai/PythonRobotics |
| 64 | +.. _`MIT license`: https://github.com/AtsushiSakai/PythonRobotics/blob/master/LICENSE |
| 65 | + |
| 66 | + |
| 67 | +See this paper for more details: |
| 68 | + |
| 69 | +- PythonRobotics: a Python code collection of robotics algorithms: https://arxiv.org/abs/1808.10703 |
| 70 | + |
| 71 | +.. _`Requirements`: |
| 72 | + |
| 73 | +Requirements |
| 74 | +============ |
| 75 | + |
| 76 | +- `Python 3.12.x`_ |
| 77 | +- `NumPy`_ |
| 78 | +- `SciPy`_ |
| 79 | +- `Matplotlib`_ |
| 80 | +- `cvxpy`_ |
| 81 | + |
| 82 | +For development: |
| 83 | + |
| 84 | +- `pytest`_ (for unit tests) |
| 85 | +- `pytest-xdist`_ (for parallel unit tests) |
| 86 | +- `mypy`_ (for type check) |
| 87 | +- `sphinx`_ (for document generation) |
| 88 | +- `ruff`_ (for code style check) |
| 89 | + |
| 90 | +.. _`Python 3.12.x`: https://www.python.org/ |
| 91 | +.. _`NumPy`: https://numpy.org/ |
| 92 | +.. _`SciPy`: https://scipy.org/ |
| 93 | +.. _`Matplotlib`: https://matplotlib.org/ |
| 94 | +.. _`cvxpy`: https://www.cvxpy.org/ |
| 95 | +.. _`pytest`: https://docs.pytest.org/en/latest/ |
| 96 | +.. _`pytest-xdist`: https://github.com/pytest-dev/pytest-xdist |
| 97 | +.. _`mypy`: https://mypy-lang.org/ |
| 98 | +.. _`sphinx`: https://www.sphinx-doc.org/en/master/index.html |
| 99 | +.. _`ruff`: https://github.com/astral-sh/ruff |
| 100 | + |
0 commit comments