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_controlcontrollers (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
Contributors
Thanks to all the contributors of the HPP project: