/**

\mainpage Humanoid Path Planner Documentation

\par Introduction

HPP (Humanoid Path Planner) is a collection of software packages
implementing manipulation planning functionalities for diverse types of robots, including
humanoid robot.

\par Installation

Installation instructions can be found on
<a target="_blank" href="https://humanoid-path-planner.github.io/hpp-doc/download.html">github</a>.

\par Overview of the architecture

The software is composed of C++ libraries implementing the algorithms. Python bindings built on
boost python are provided to help user easily define and solve problems. Visualization of the
scene if done in a web browser using <a href="https://viser.studio/main">viser</a>.

<table>
  <tr><td width="50%">
      <img src="../figures/archi-hpp-python.svg" alt="Overview of the architecture" style="max-height: 50vh"/>
  </td><td width="5%">
  </td><td width="30%">
    The algorithmic part, built on \ref hpp_doc_missing_hpp-manipulation is embedded in several python modules
    by <code>hpp-python</code>
    <p></p>
    From a python script, users can define scenes containing robots and environments, they can
    also define and solve motion planning problems.
    <p></p>
    Results of path planning requests as well as individual configurations can
    be displayed in a web browser via package
    \ref hpp_doc_missing_hpp-gepetto-viewer.
  </td></tr>
</table>

\par Overview of the old architecture

We describe here the former architecture that is deprecated, but still in use in some projects.

The packages are distributed into the following categories:
\li \ref hpp_doc_algorithms "Algorithms" implementing path planning functionalities
\li \ref hpp_doc_graphical_interface "Graphical user interface" to display configurations and paths.

<table>
  <tr><td width="50%">
      <img src="../figures/archi.svg" alt="Overview of the architecture" style="max-height: 50vh"/>
  </td><td width="5%">
  </td><td width="30%">
    The algorithmic part, built on \ref hpp_doc_missing_hpp-core is
    embedded in corba servers implemented by
     or extensions like
    .
    The corba servers are linked to executable \c hppcorbaserver.
    <p></p>
    From a python terminal, clients to the corba servers can be created in order
    to control the executable.
    <p></p>
    Results of path planning requests as well as individual configurations can
    be displayed in \c gepetto-gui via package
    \ref hpp_doc_missing_hpp-gepetto-viewer.
  </td></tr>
</table>

\par Getting started

Package <a href="https://github.com/humanoid-path-planner/hpp_tutorial/tree/devel/README.md"> hpp_tutorial </a> provides some examples of
how to use this project.

\section hpp_doc_algorithms Algorithms

\subsection hpp_doc_algorithms_technical_tools Technical tools

- \ref hpp_doc_missing_hpp-util: technical tools for the HPP project (logging, benchmark, quality assurance tools),
- \ref hpp_doc_missing_hpp-statistics: various tools to make statistics on motion planning algorithms,

\subsection hpp_doc_algorithms_motion_planning Motion planning

\par Kinematic chain with geometry
- \ref hpp_doc_missing_coal: Modified version of Flexible collision library, for collision detection and distance computation,
- \ref hpp_doc_missing_pinocchio: implementation of kinematic chain with dynamic computations,
- \ref hpp_doc_missing_hpp-pinocchio: Interface between pinocchio and hpp-core,

\par Non linear constraints
- \ref hpp_doc_missing_hpp-constraints: definition of some nonlinear constraints,

\par Path planning
- \ref hpp_doc_missing_hpp-core: definition of basic classes, path planning problems and solvers,

\par Manipulation Planning
- \ref hpp_doc_missing_hpp-manipulation: Manipulation planning
- \ref hpp_doc_missing_hpp-manipulation-urdf: SRDF parser for Manipulation planning (handles, grippers, contact surfaces)

\par Python bindings
- \ref hpp_doc_missing_hpp-python: Python bindings built on boost::python.

\subsection hpp_doc_algorithms_execution Trajectory execution

- \ref hpp_doc_missing_hpp-exec: ROS2 execution utilities to send HPP-generated paths to
  \c ros2_control. It documents how paths are converted to
  \c JointTrajectory messages and how segment pre/post actions coordinate
  grippers during manipulation.

**/

/**

\page hpp_doc_graphical_interface Graphical user interface

\par Packages implementing graphical user interface

The following package enables user to display scenes in a web browser
\li \ref hpp_doc_missing_hpp-gepetto-viewer : Link between hpp and viser.

 **/
