Rigid body geometry and inertial parameters.
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rigeo-0.2.0.tar.gz.
File metadata
- Download URL: rigeo-0.2.0.tar.gz
- Upload date:
- Size: 3.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8a3e76f8844ae8c856e179efb0a82fb1d0c1cc60bbb73b7ca9e3ac2898c2bf9
|
|
| MD5 |
c6f94bafe36289a34da7f9147ded2125
|
|
| BLAKE2b-256 |
0338aaadfc67ec1e8168c6f300cb4e1b832094b75c72a19542dd670388c23678
|
File details
Details for the file rigeo-0.2.0-py3-none-any.whl.
File metadata
- Download URL: rigeo-0.2.0-py3-none-any.whl
- Upload date:
- Size: 47.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88ef18dc4e2384ca81f20e0767644569962287d504a6767de1c6ee7dd1d7e14a
|
|
| MD5 |
26b52ba20f6b2e8153753236c6fcd294
|
|
| BLAKE2b-256 |
4972e018b8c60aedba2c71f4b0048a5c51b858f79da879cf61d474eb9e24e263
|