# stack-of-tasks/pinocchio architecture

> Architecture diagram of the GitHub repository stack-of-tasks/pinocchio, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/stack-of-tasks/pinocchio
- Repository: https://github.com/stack-of-tasks/pinocchio

## Overview

Pinocchio is a rigid-body modeling and dynamics library with C++ algorithms and a Python interface. Its principal workflow is to construct a multibody model, supply a configuration and motion state, then compute kinematics and dynamics results; model-description parsers and collision, visualization, constrained-contact, and differentiation capabilities support that workflow. The README documents these capabilities, while the sampled source does not show an end-to-end caller, so several workflow links are marked unverified.

Main entry points: [`include/pinocchio/multibody.hpp`](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/multibody.hpp) (Model and Data), [`include/pinocchio/algorithm/kinematics.hpp`](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/kinematics.hpp) (Forward Kinematics), [`bindings/python/parsers/expose-parsers.cpp`](https://github.com/stack-of-tasks/pinocchio/blob/devel/bindings/python/parsers/expose-parsers.cpp) (Description Parsers), [`include/pinocchio/algorithm/joint-configuration.hpp`](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/joint-configuration.hpp) (Configuration Operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_modeling["Robot Modeling"]
  node_description_parsers["Description Parsers<br/>[expose-parsers.cpp]"]
  node_model_data["Model and Data<br/>[multibody.hpp]"]
  node_configuration["Configuration Operations"]
end

subgraph group_motion["Kinematics and Dynamics"]
  node_kinematics["Forward Kinematics<br/>[kinematics.hpp]"]
  node_jacobians_frames["Jacobians and Frames<br/>[jacobian.hpp]"]
  node_inverse_dynamics["Inverse Dynamics<br/>[rnea.hpp]"]
  node_forward_dynamics["Forward Dynamics<br/>[aba.hpp]"]
  node_mass_matrix["Mass Matrix<br/>[crba.hpp]"]
end

subgraph group_advanced["Advanced Physics"]
  node_derivatives["Analytical Derivatives"]
  node_constrained_contact["Constrained Contact"]
  node_loop_dynamics["Loop Dynamics"]
  node_autodiff_codegen["AD and Codegen<br/>[cppad.hpp]"]
end

subgraph group_interfaces["Language Interfaces"]
  node_python_api["Python API<br/>[__init__.py]"]
  node_cpp_api["C++ API<br/>[multibody.hpp]"]
end

subgraph group_tools["Geometry and Visualization"]
  node_collision["Collision Detection"]
  node_visualization["Visualization"]
end

node_user(("Robot Developer"))
node_coal["coal Library"]

node_user -->|"uses"| node_python_api
node_user -.->|"uses"| node_cpp_api
node_python_api -->|"exposes parsers"| node_description_parsers
node_description_parsers -.->|"builds models"| node_model_data
node_cpp_api -->|"provides model types"| node_model_data
node_model_data -.->|"defines configuration space"| node_configuration
node_model_data -->|"supplies model"| node_kinematics
node_configuration -.->|"provides state"| node_kinematics
node_kinematics -->|"updates placements"| node_jacobians_frames
node_model_data -->|"supplies model"| node_inverse_dynamics
node_model_data -->|"supplies model"| node_forward_dynamics
node_model_data -->|"supplies model"| node_mass_matrix
node_model_data -.->|"supports derivatives"| node_derivatives
node_model_data -.->|"supports constraints"| node_constrained_contact
node_model_data -.->|"supports closed loops"| node_loop_dynamics
node_model_data -.->|"supports AD"| node_autodiff_codegen
node_model_data -->|"provides geometry model"| node_collision
node_collision -->|"uses collision library"| node_coal
node_kinematics -->|"updates placements"| node_visualization

click node_python_api "https://github.com/stack-of-tasks/pinocchio/blob/devel/bindings/python/pinocchio/__init__.py"
click node_cpp_api "https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/multibody.hpp"
click node_description_parsers "https://github.com/stack-of-tasks/pinocchio/blob/devel/bindings/python/parsers/expose-parsers.cpp"
click node_model_data "https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/multibody.hpp"
click node_configuration "https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/joint-configuration.hpp"
click node_kinematics "https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/kinematics.hpp"
click node_jacobians_frames "https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/jacobian.hpp"
click node_inverse_dynamics "https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/rnea.hpp"
click node_forward_dynamics "https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/aba.hpp"
click node_mass_matrix "https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/crba.hpp"
click node_derivatives "https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/kinematics-derivatives.hpp"
click node_constrained_contact "https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/contact-dynamics.hpp"
click node_loop_dynamics "https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/loop-constrained-aba.hpp"
click node_autodiff_codegen "https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/autodiff/cppad.hpp"
click node_collision "https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/collision/broadphase-manager.hpp"
click node_visualization "https://github.com/stack-of-tasks/pinocchio/blob/devel/src/visualizers/base-visualizer.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_description_parsers,node_model_data,node_configuration toneBlue
class node_kinematics,node_jacobians_frames,node_inverse_dynamics,node_forward_dynamics,node_mass_matrix toneAmber
class node_derivatives,node_constrained_contact,node_loop_dynamics,node_autodiff_codegen toneMint
class node_python_api,node_cpp_api toneRose
class node_collision,node_visualization,node_user,node_coal toneIndigo
```

## Components

### Robot Modeling

- [Description Parsers](https://github.com/stack-of-tasks/pinocchio/blob/devel/bindings/python/parsers/expose-parsers.cpp): `bindings/python/parsers/expose-parsers.cpp`
- [Model and Data](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/multibody.hpp): `include/pinocchio/multibody.hpp`
- [Configuration Operations](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/joint-configuration.hpp): `include/pinocchio/algorithm/joint-configuration.hpp`

### Kinematics and Dynamics

- [Forward Kinematics](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/kinematics.hpp): `include/pinocchio/algorithm/kinematics.hpp`
- [Jacobians and Frames](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/jacobian.hpp): `include/pinocchio/algorithm/jacobian.hpp`
- [Inverse Dynamics](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/rnea.hpp): `include/pinocchio/algorithm/rnea.hpp`
- [Forward Dynamics](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/aba.hpp): `include/pinocchio/algorithm/aba.hpp`
- [Mass Matrix](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/crba.hpp): `include/pinocchio/algorithm/crba.hpp`

### Advanced Physics

- [Analytical Derivatives](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/kinematics-derivatives.hpp): `include/pinocchio/algorithm/kinematics-derivatives.hpp`
- [Constrained Contact](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/contact-dynamics.hpp): `include/pinocchio/algorithm/contact-dynamics.hpp`
- [Loop Dynamics](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/algorithm/loop-constrained-aba.hpp): `include/pinocchio/algorithm/loop-constrained-aba.hpp`
- [AD and Codegen](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/autodiff/cppad.hpp): `include/pinocchio/autodiff/cppad.hpp`

### Language Interfaces

- [Python API](https://github.com/stack-of-tasks/pinocchio/blob/devel/bindings/python/pinocchio/__init__.py): `bindings/python/pinocchio/__init__.py`
- [C++ API](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/multibody.hpp): `include/pinocchio/multibody.hpp`

### Geometry and Visualization

- [Collision Detection](https://github.com/stack-of-tasks/pinocchio/blob/devel/include/pinocchio/collision/broadphase-manager.hpp): `include/pinocchio/collision/broadphase-manager.hpp`
- [Visualization](https://github.com/stack-of-tasks/pinocchio/blob/devel/src/visualizers/base-visualizer.cpp): `src/visualizers/base-visualizer.cpp`

### Other components

- **Robot Developer**
- **coal Library**

## Connections

- Robot Developer → Python API: uses
- Robot Developer → C++ API: uses
- Python API → Description Parsers: exposes parsers (evidence: `bindings/python/parsers/expose-parsers.cpp`)
- Description Parsers → Model and Data: builds models
- C++ API → Model and Data: provides model types (evidence: `include/pinocchio/multibody.hpp`)
- Model and Data → Configuration Operations: defines configuration space (evidence: `include/pinocchio/multibody.hpp`)
- Model and Data → Forward Kinematics: supplies model (evidence: `include/pinocchio/algorithm/kinematics.hpp`)
- Configuration Operations → Forward Kinematics: provides state
- Forward Kinematics → Jacobians and Frames: updates placements (evidence: `include/pinocchio/algorithm/jacobian.hpp`)
- Model and Data → Inverse Dynamics: supplies model (evidence: `include/pinocchio/algorithm/rnea.hpp`)
- Model and Data → Forward Dynamics: supplies model (evidence: `include/pinocchio/algorithm/aba.hpp`)
- Model and Data → Mass Matrix: supplies model (evidence: `include/pinocchio/algorithm/crba.hpp`)
- Model and Data → Analytical Derivatives: supports derivatives
- Model and Data → Constrained Contact: supports constraints
- Model and Data → Loop Dynamics: supports closed loops
- Model and Data → AD and Codegen: supports AD
- Model and Data → Collision Detection: provides geometry model (evidence: `include/pinocchio/collision/broadphase-manager.hpp`)
- Collision Detection → coal Library: uses collision library (evidence: `include/pinocchio/collision/broadphase-manager.hpp`)
- Forward Kinematics → Visualization: updates placements (evidence: `src/visualizers/base-visualizer.cpp`)
