QP-based task-space inverse kinematics and dynamics for robots.
Written in C++ for runtime performance, with Python bindings for fast prototyping.
Documentation · Getting started · Examples repository · Build from source · Paper
pip install placoPlaCo is Rhoban's planning and control library. It comes with its own lightweight rigid body algorithms, implemented with pinocchio as a reference (and coal for collisions), and the qpmad QP solver, and provides a high-level API to express whole-body control problems as a set of tasks and constraints, which are assembled into a quadratic program and solved for you.
PlaCo is distributed as a wheel for Linux and macOS (x86-64 and arm64), and requires Python 3.10 or later:
pip install placoIt can also be built from sources, which is required to use the C++ API.
import numpy as np
import placo
# Load a robot and create the kinematics solver
robot = placo.RobotWrapper("models/6axis/robot.urdf")
solver = placo.KinematicsSolver(robot)
solver.mask_fbase(True) # the robot is anchored to the ground
# Ask the "effector" frame to reach a given pose
effector_task = solver.add_frame_task("effector", np.eye(4))
effector_task.configure("effector", "soft", 1.0, 1.0)
# Solve the IK, and integrate the result in the robot state
robot.update_kinematics()
solver.solve(True)Head to the getting started guide for a walkthrough, or to the examples repository for runnable robots and scenarios.
- Documentation — guides and full API reference
- Examples repository — runnable demos, models and videos
- Paper — PlaCo: a QP-based robot planning and control framework
- Issues — bug reports and feature requests
PlaCo was first built on top of pinocchio. Its rigid body model (kinematics, dynamics, URDF and MJCF loading) is now a lighter, standalone implementation, written with pinocchio as its reference: it follows pinocchio's conventions and formulas, and was validated against it. We are grateful to the pinocchio developers for their work. Collisions and distances are computed with coal.
If you use PlaCo in your research, please cite the following paper:
@misc{duclusaud2025placo,
title={PlaCo: a QP-based robot planning and control framework},
author={Marc Duclusaud and Grégoire Passault and Vincent Padois and Olivier Ly},
year={2025},
eprint={2511.06141},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2511.06141},
}PlaCo is released under the MIT License.
It includes a copy of the qpmad QP solver (Apache 2.0 License), see thirdparty/qpmad.

