Skip to main content

rigeo: rigid body geometry

Rigeo is a prototyping library for rigid body geometry in Python: it combines three-dimensional geometry with the inertial properties of rigid bodies, with applications to robotic manipulation.

Density Realizable Inertial Parameters

One of the main features of this library is a set of necessary conditions for density realizability on 3D shapes based on moment relaxations (see this paper for more information). A set of inertial parameters (i.e., mass, center of mass, inertia matrix) is called density realizable on a given shape if it can be physically realized by some rigid body contained in that shape. These conditions can be included as constraints in semidefinite programs for inertial parameter identification or for checking robustness to inertial parameter uncertainty.

Other Features

  • Build rigid bodies out of flexible shape primitives: convex polyhedra, ellipsoids, and cylinders.
  • Obtain the intersection of two convex polyhedra (via cdd). This is particularly useful for obtaining contact patches between polyhedral objects for manipulation; e.g., when solving the waiter's problem
  • Obtain the distance between primitive shapes using convex programming.
  • Compute maximum-volume inscribed and minimum-volume bounding ellipsoids for sets of points.
  • Compute convex hulls for degenerate sets of points (i.e., points that live in some lower-dimensional subspace than the ambient space).
  • Uniform random sampling inside of and on the surface of ellipsoids.

Installation

The library requires Python >=3.8. It has been tested on Ubuntu 20.04 and 24.04. Optimization problems use cvxpy; MOSEK is installed by default and is used as the solver for the tests. Academic licenses for MOSEK can be obtained for free. If this is not an option for you, Clarabel is a reasonable open-source alternative.

From pip:

pip install rigeo

From source (using uv):

git clone https://github.com/utiasDSL/rigeo
cd rigeo
uv venv
uv sync

From source (using pip):

git clone https://github.com/utiasDSL/rigeo
cd rigeo
python -m pip install .

Development

Tests are run using pytest:

cd tests
python -m pytest .

To test against different Python versions, use:

# for example
uv run --isolated --python=3.9 pytest

License

MIT - see the LICENSE file.

Metadata

Release files for rigeo 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rigeo 0.2.0
File Size Uploaded Provenance Actions
rigeo-0.2.0.tar.gz 3.4 MB Without provenance Details for rigeo-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for rigeo 0.2.0
File Interpreter ABI Platform Actions
rigeo-0.2.0-py3-none-any.whl Python 3 none any Details for rigeo-0.2.0-py3-none-any.whl

Total release size: 3.4 MB

Release files / rigeo-0.2.0.tar.gz

Download URL rigeo-0.2.0.tar.gz
Size 3.4 MB
Tags Source
SHA-256 checksum
How to use checksums
b8a3e76f8844ae8c856e179efb0a82fb1d0c1cc60bbb73b7ca9e3ac2898c2bf9
BLAKE2b-256 checksum
How to use checksums
0338aaadfc67ec1e8168c6f300cb4e1b832094b75c72a19542dd670388c23678
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.17

Release files / rigeo-0.2.0-py3-none-any.whl

Download URL rigeo-0.2.0-py3-none-any.whl
Size 47.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
88ef18dc4e2384ca81f20e0767644569962287d504a6767de1c6ee7dd1d7e14a
BLAKE2b-256 checksum
How to use checksums
4972e018b8c60aedba2c71f4b0048a5c51b858f79da879cf61d474eb9e24e263
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.17

Security for rigeo 0.2.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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A 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.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page