Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
![GitHub_Action_Windows_CI](https://github.com/AtsushiSakai/PythonRobotics/workflows/Windows_CI/badge.svg)
[![Build status](https://ci.appveyor.com/api/projects/status/sb279kxuv1be391g?svg=true)](https://ci.appveyor.com/project/AtsushiSakai/pythonrobotics)

Python codes and textbook for robotics algorithm.
Python codes and [textbook](https://atsushisakai.github.io/PythonRobotics/index.html) for robotics algorithm.


# Table of Contents
Expand Down Expand Up @@ -85,7 +85,11 @@ Features:

3. Minimum dependency.

See this paper for more details:
See this documentation

- [Getting Started — PythonRobotics documentation](https://atsushisakai.github.io/PythonRobotics/getting_started.html#what-is-pythonrobotics)

or this paper for more details:

- [\[1808\.10703\] PythonRobotics: a Python code collection of robotics algorithms](https://arxiv.org/abs/1808.10703) ([BibTeX](https://github.com/AtsushiSakai/PythonRoboticsPaper/blob/master/python_robotics.bib))

Expand Down
42 changes: 32 additions & 10 deletions docs/getting_started_main.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,49 @@ 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 is developed under `MIT license`_ and on `GitHub`_.
This project has three main philosophies below:

The focus of the project is on autonomous navigation, and the goal is for beginners in robotics to understand the basic ideas behind each algorithm.
1. Easy to understand each algorithm's basic idea.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In this project, the algorithms which are practical and widely used in both academia and industry are selected.
The goal is for beginners in robotics to understand the basic ideas behind each algorithm.
If the code is not easy to read, it would be difficult to achieve our goal of
allowing beginners to understand the algorithms.

Each sample code is written in Python3 and only depends on some standard modules for readability and ease of use.
Python[12] programming language is adopted in this project.
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.

It includes intuitive animations to understand the behavior of the simulation.

.. _GitHub: https://github.com/AtsushiSakai/PythonRobotics
.. _`MIT license`: https://github.com/AtsushiSakai/PythonRobotics/blob/master/LICENSE

Features:

1. Easy to read for understanding each algorithm's basic idea.
about documenttion

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 in this project.

3. Minimum dependency.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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


.. _GitHub: https://github.com/AtsushiSakai/PythonRobotics
.. _`MIT license`: https://github.com/AtsushiSakai/PythonRobotics/blob/master/LICENSE


See this paper for more details:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
Definition of Robotics
----------------------

TBD
In recent years, autonomous navigation technologies have received huge
attention in many fields.
Such fields include, autonomous driving[22], drone flight navigation,
and other transportation systems.
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
Technology for Robotics
-------------------------

TBD
An autonomous navigation system is a system that can move to a goal over long
periods of time without any external control by an operator.
The system requires a wide range of technologies:
- It needs to know where it is (localization)
- Where it is safe (mapping)
- Where and how to move (path planning)
- How to control its motion (path following).

The autonomous system would not work correctly if any of these technologies is missing.
1 change: 1 addition & 0 deletions docs/modules/2_localization/localization_main.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

Localization
============
Localization is the ability of a robot to know its position and orientation with sensors such as Global Navigation Satellite System:GNSS etc. In localization, Bayesian filters such as Kalman filters, histogram filter, and particle filter are widely used[31]. Fig.2 shows localization simulations using histogram filter and particle filter.

.. toctree::
:maxdepth: 2
Expand Down
2 changes: 2 additions & 0 deletions docs/modules/3_mapping/mapping_main.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

Mapping
=======
Mapping is the ability of a robot to understand its surroundings with external sensors such as LIDAR and camera. Robots have to recognize the position and shape of obstacles to avoid them. In mapping, grid mapping and machine learning algorithms are widely used[31][18]. Fig.3 shows mapping simulation results using grid mapping with 2D ray casting and 2D object clustering with k-means algorithm.

.. toctree::
:maxdepth: 2
:caption: Contents
Expand Down
2 changes: 2 additions & 0 deletions docs/modules/4_slam/slam_main.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ SLAM
====

Simultaneous Localization and Mapping(SLAM) examples
Simultaneous Localization and Mapping (SLAM) is an ability to estimate the pose of a robot and the map of the environment at the same time. The SLAM problem is hard to
solve, because a map is needed for localization and localization is needed for mapping. In this way, SLAM is often said to be similar to a ‘chicken-and-egg’ problem. Popular SLAM solution methods include the extended Kalman filter, particle filter, and Fast SLAM algorithm[31]. Fig.4 shows SLAM simulation results using extended Kalman filter and results using FastSLAM2.0[31].

.. toctree::
:maxdepth: 2
Expand Down
2 changes: 2 additions & 0 deletions docs/modules/5_path_planning/path_planning_main.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
Path Planning
=============

Path planning is the ability of a robot to search feasible and efficient path to the goal. The path has to satisfy some constraints based on the robot’s motion model and obstacle positions, and optimize some objective functions such as time to goal and distance to obstacle. In path planning, dynamic programming based approaches and sampling based approaches are widely used[22]. Fig.5 shows simulation results of potential field path planning and LQRRRT* path planning[27].

.. toctree::
:maxdepth: 2
:caption: Contents
Expand Down
2 changes: 2 additions & 0 deletions docs/modules/6_path_tracking/path_tracking_main.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
Path Tracking
=============

Path tracking is the ability of a robot to follow the reference path generated by a path planner while simultaneously stabilizing the robot. The path tracking controller may need to account for modeling error and other forms of uncertainty. In path tracking, feedback control techniques and optimization based control techniques are widely used[22]. Fig.6 shows simulations using rear wheel feedback steering control and PID speed control, and iterative linear model predictive path tracking control[27].

.. toctree::
:maxdepth: 2
:caption: Contents
Expand Down
Loading