Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Humanoid Path Planner Documentation

Introduction

HPP is a C++ software development kit for path planning and manipulation planning of kinematic chains in environments cluttered with obstacles, from industrial manipulators to humanoid robots. Robots and objects are loaded from URDF and SRDF files. Collision checking relies on coal, a modified version of the Flexible Collision Library. HPP is a collection of packages built with CMake.

Main features

  • Path planning for kinematic chains subject to nonlinear constraints (hpp-core, hpp-constraints).
  • Manipulation planning: grasping, placement and regrasping are modelled by a constraint graph (hpp-manipulation).
  • Python bindings to define robots and problems and to call the planners (hpp-python).
  • Display of configurations and paths in a web browser with viser, or in rviz2.
  • Execution of planned paths on ros2_control controllers (hpp-exec).

Applications

The videos below show HPP on industrial tasks.

Surface treatment

Planning a tool path to sweep and abrade the surface of a cylinder, while avoiding self-collisions and obstacles in the workspace.

Welding

Planning collision-free trajectories for a welding tool around complex parts.

Assembly / construction

Planning manipulation sequences to assemble a structure piece by piece, combining grasping, regrasping, and placement.

Overview of the architecture

flowchart TB
    HPPY["hpp-python"]
    subgraph HPP_STACK["HPP stack"]
        direction TB
        HM["hpp-manipulation"]
        HC["hpp-core"]
        HCONS["hpp-constraints"]
        HPIN["hpp-pinocchio"]
        HM --> HC
        HC --> HCONS
        HCONS --> HPIN
    end
    PIN["pinocchio"]
    COAL["coal"]
    HPIN --> PIN
    HPIN --> COAL
    HPPY --> HPP_STACK
   subgraph HPP_VIZ["HPP Visualization"]
        direction TB
        VW["Viewer"]
        GPV["Gepetto Viewer"]
        GV["Graph Viewer"]
        VW --> GPV
        VW --> GV
   end
   HPPY -->  |import| VW
classDef external fill:#C8E6C9,stroke:#2E7D32;
class PIN,COAL external

The software is composed of C++ libraries implementing the algorithms. Python bindings built on Boost.Python are provided to help users easily define and solve problems. Visualization of the scene can be done in a web browser using viser, or using ROS/ROS2 with rviz2 or gazebo.

The algorithmic part, built on hpp-manipulation is embedded in several Python modules by hpp-python. From a Python script, users can define scenes containing robots and environments, they can also define and solve motion planning problems. Results of path planning requests as well as individual configurations can be displayed in a web browser via package hpp-gepetto-viewer.

Getting started

The tutorials of package hpp_tutorial cover installation, the definition and resolution of a pick-and-place problem, and the execution of planned motions on a simulated robot.

Acknowledgement

Logo projet ROMEO Logo EUROC project Framework Program 7 Logo ERC EU Project: Factory-in-a-day Logo ANR project Logo ROB4FAM RoboCom++

Contributors

Thanks to all the contributors of the HPP project: