Technologies for Robotics
-------------------------

The field of robotics needs wide areas of technologies such as mechanical engineering,
electrical engineering, computer science, and artificial intelligence (AI).
This project, `PythonRobotics`, only focus on computer science and artificial intelligence.

The technologies for robotics are categorized as following 3 categories:

#. `Autonomous Navigation`_
#. `Manipulation`_
#. `Robot type specific technologies`_

.. _`Autonomous Navigation`:

Autonomous Navigation
^^^^^^^^^^^^^^^^^^^^^^^^
Autonomous navigation is a capability that can move to a goal over long
periods of time without any external control by an operator.

To achieve autonomous navigation, the robot needs to have the following technologies:
- It needs to know where it is (localization)
- Where it is safe (mapping)
- Where is is safe and where the robot is in the map (Simultaneous Localization and Mapping (SLAM))
- 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.

In recent years, autonomous navigation technologies have received huge
attention in many fields.
For example, self-driving cars, drones, and autonomous mobile robots in indoor and outdoor environments.

In this project, we provide many algorithms, sample codes,
and documentations for autonomous navigation.

#. :ref:`Localization`
#. :ref:`Mapping`
#. :ref:`SLAM`
#. :ref:`Path planning`
#. :ref:`Path tracking`



.. _`Manipulation`:

Manipulation
^^^^^^^^^^^^^^^^^^^^^^^^

#. :ref:`Arm Navigation`

.. _`Robot type specific technologies`:

Robot type specific technologies
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

#. :ref:`Aerial Navigation`
#. :ref:`Bipedal`
#. :ref:`Inverted Pendulum`


Additional Information
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

#. :ref:`utils`
#. :ref:`Appendix`


