pydecomp — A Python implementation of DecompUtil for fast convex decomposition of obstacle-free spaces.
Quickstart
Install dependencies the following:
-
Linux:
sudo apt-get install libcdd-dev libblas3 libblas-dev liblapack3 liblapack-dev gfortran -
Mac:
brew install cddlib gmp eigen openblas cython boostNote: Remember to set
LDFLAGSandCPPFLAGSto the correct paths for the libraries.
In a virtual environment, install from PyPI with
pip install pydecomp
Conda
pycddlib does not ship Linux/macOS wheels, so pip builds it from source and
needs the cddlib C headers. In a conda environment the easiest path is to let
conda-forge supply cddlib and point pip at the env's include/lib paths:
conda create -n pydecomp_env python=3.12 -y
conda activate pydecomp_env
conda install -c conda-forge cddlib tk -y # tk gives matplotlib a working GUI backend
export CPPFLAGS="-I$CONDA_PREFIX/include"
export LDFLAGS="-L$CONDA_PREFIX/lib"
pip install pydecomp
python -c "import pydecomp; print(pydecomp.__version__)"
If plt.show() produces no window, matplotlib has no interactive backend —
conda install -c conda-forge tk (above) fixes it; alternatively
pip install pyqt5.
Examples
| Forest - 2D | Office - 2D | Office - 3D |
|---|---|---|
Given an occupancy grid map and a pieciwise linear path, the package returns a convex decomposition of the free space. The free space is represented by a collection of convex sets, whose halspace representation fulfills Ax-b<0. The package returns the matrixes A and b for each convex set. The matrix A is a n x 3 matrix and b is a n x 1 vector, where n is the number of planes in the halfspace.
To check a script to perform a convex decomposition out of a given occupancy grid map, see this file for a planar (2D) case or this file for a spatial (3D) case. We provide two exemplary maps (forest and office), which you can select by modifying this line.
For the most minimal example see this file, which replicates a test case in the original DecompUtil repository.
Installing from source
After installing the dependencies given above, initialize git submodules with
git submodule init
git submodule update
Install the package with
pip install .
Citing
If you use this framework please cite our papers:
@misc{arrizabalaga2024differentiablecollisionfreeparametriccorridors,
title={Differentiable Collision-Free Parametric Corridors},
author={Jon Arrizabalaga and Zachary Manchester and Markus Ryll},
year={2024},
eprint={2407.12283},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2407.12283},
}
@inproceedings{arrizabalaga2023sctomp,
title={SCTOMP: Spatially Constrained Time-Optimal Motion Planning},
author={Arrizabalaga, Jon and Ryll, Markus},
booktitle={2023 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
pages={4827--4834},
year={2023},
organization={IEEE}
}
Related repositories
For computing continuous and differentiable collision-free corridors, check out CorrGen!
Metadata
Release files for pydecomp 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pydecomp-2.0.0.tar.gz | 846.0 kB | With provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| pydecomp-2.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| pydecomp-2.0.0-cp313-cp313-macosx_11_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 11.0+ ARM64 | Details |
| pydecomp-2.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| pydecomp-2.0.0-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
| pydecomp-2.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
| pydecomp-2.0.0-cp311-cp311-macosx_11_0_arm64.whl | CPython 3.11 | CPython 3.11 | macOS 11.0+ ARM64 | Details |
| pydecomp-2.0.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
| pydecomp-2.0.0-cp310-cp310-macosx_11_0_arm64.whl | CPython 3.10 | CPython 3.10 | macOS 11.0+ ARM64 | Details |
| pydecomp-2.0.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| pydecomp-2.0.0-cp39-cp39-macosx_11_0_arm64.whl | CPython 3.9 | CPython 3.9 | macOS 11.0+ ARM64 | Details |
Total release size: 26.8 MB
Release files / pydecomp-2.0.0.tar.gz
| Download URL | pydecomp-2.0.0.tar.gz |
|---|---|
| Size | 846.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
24abbb9311178740f3fc64c42889f6ae1abf87716b2562149f8f881f86a9c169
|
|
BLAKE2b-256 checksum How to use checksums |
21490c64fc9762f54310f6e62c908f91a14f69deac32e493154f67bae9b7dc15
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 26, 2026.
Transparency logRelease files / pydecomp-2.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pydecomp-2.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.8 MB |
| Tags | CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d5d73236834a734ffca9bc237a94399a1bfe66bcbf87c64cf34ba08218abc893
|
|
BLAKE2b-256 checksum How to use checksums |
4f93f21beab1200b48a40f30dd4974ee56f848e52fbf6f8588febb102a17f145
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 26, 2026.
Transparency logRelease files / pydecomp-2.0.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | pydecomp-2.0.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 450.5 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e19d265ec464c002306bd4ed86a162a043aab6506e36001b96270a48220b8e34
|
|
BLAKE2b-256 checksum How to use checksums |
d610529b73edaf354736a7e9d6d5580f9615ff6000f8e675f37c6825b5132f14
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 26, 2026.
Transparency logRelease files / pydecomp-2.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pydecomp-2.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.8 MB |
| Tags | CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
ac40f3efd68d1d4f9bcc6843a61f29d5c38bf2d666b330d90e26b0a5c2f81be1
|
|
BLAKE2b-256 checksum How to use checksums |
aca29ae01cbf1ac6e61050e45dc9bbebcf5ccd679976280884729266ceb87ecd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 26, 2026.
Transparency logRelease files / pydecomp-2.0.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | pydecomp-2.0.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 450.4 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
93c10796f0bd98b40c999c4f76f3d2d11cf6dbef8e35fc3639813462ec0c3a9f
|
|
BLAKE2b-256 checksum How to use checksums |
3e9d3269a35d7b0a54c9727528e1a62e941cc24c76032dca9ff349314f972ffe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 26, 2026.
Transparency logRelease files / pydecomp-2.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pydecomp-2.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
f216e34e474f1160107f851b9c0e27a73082e1bec7336fcc5355ddce6e00042a
|
|
BLAKE2b-256 checksum How to use checksums |
962b8b4d09c8da041145ca116bad2d7d1ee8cb99db4702e528251f5543acc303
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 26, 2026.
Transparency logRelease files / pydecomp-2.0.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | pydecomp-2.0.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 448.1 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
2ff49dd9d1a84a3f360a42d3155c3733c97c441835b025fc4ad316b0dd7e2f2f
|
|
BLAKE2b-256 checksum How to use checksums |
cb75c8ff0532f78d2271365d876c8729c39de561bf45ab0ebf59e1d990091f9a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 26, 2026.
Transparency logRelease files / pydecomp-2.0.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pydecomp-2.0.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
639a31ba24a7715a365d637be3deef3b35ee9dbf5c353f74a7783bc02a991d69
|
|
BLAKE2b-256 checksum How to use checksums |
1feffdcf96a7f395ccfb636f3d09a4d1162cb12dd7968f820de6afc23c8df5b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 26, 2026.
Transparency logRelease files / pydecomp-2.0.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | pydecomp-2.0.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 447.0 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a6d69334e295fd753dd105a7fd75bcfde6251368759cc3845280c807cf7102fa
|
|
BLAKE2b-256 checksum How to use checksums |
1cc27e1db5c460bb71c2c4892408273a4c112af52ba16706db6563e9bbb4f9bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 26, 2026.
Transparency logRelease files / pydecomp-2.0.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pydecomp-2.0.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.9 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
f02370accf4ce24b5eec8b6c4e79b0bccd7f1f25e7ec5067b44e7513c2cb2701
|
|
BLAKE2b-256 checksum How to use checksums |
2271537ed0f5a77061f0e7a7a39fc3a4b2f551acb3799204de9809a6323803ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 26, 2026.
Transparency logRelease files / pydecomp-2.0.0-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | pydecomp-2.0.0-cp39-cp39-macosx_11_0_arm64.whl |
|---|---|
| Size | 447.0 kB |
| Tags | CPython 3.9 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
10b8eef8f0cb342f8b3a605c10b1db490096a262e5dc2dcc25bc6522a67f5a6e
|
|
BLAKE2b-256 checksum How to use checksums |
0be791de2f33086d083a4ae60dd20388629e3c9a12377a69e849a6f1a9e31a9f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 26, 2026.
Transparency logSecurity for pydecomp 2.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 11 files in this release have been uploaded with provenance metadata.
Attestation for pydecomp-2.0.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 26, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.