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

A motion planning toolkit for kinematic chains evolving among obstacles — from industrial robot arms to full humanoids.

Introduction

HPP is a C++ Software Developement Kit implementing path planning for kinematic chains in environments cluttered with obstacles. Collision checking is performed by a modified version of the Flexible Collision Library developed at University of North Carolina. Robots can be loaded from URDF model. It is a collection of software packages handled by cmake and pkg-config.

Why HPP?

HPP is not a toy planner: it is built to handle the kind of complex, contact-rich motion planning problems found in real robotics applications.

  • Built for complex kinematic chains — from single manipulator arms to full humanoids and multi-robot systems.
  • Manipulation planning out of the boxhpp-manipulation handles grasping, regrasping, and multi-contact scenarios, not just collision-free transit paths.
  • Fast, reliable collision checking — powered by a modified Flexible Collision Library (coal) under hpp-pinocchio.
  • Python-first workflow — define scenes, robots, and planning problems from simple Python scripts via hpp-python, with the heavy algorithmic lifting handled in C++.
  • Flexible visualization — watch your robot plan and move in a web browser with viser, or plug into your existing ROS/ROS2 setup with rviz2 or gazebo.
  • Battle-tested on real industrial use cases — surface treatment, welding, and assembly tasks, as shown below.

Applications

HPP is already used to plan motions for real industrial robotic tasks — here are a few examples in action.

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

Package hpp_tutorial provides some examples of how to use this project. Lets start now ! Tutorial

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: