Skip to main content

CI

SU Decomposition

This repository contains a Python implementation of the SU-decomposition, which can be used to compute a coordinate-invariant local representation for rigid-body motion and force trajectories. This representation is referred to as the Dual-Upper-Triangular Invariant Representation (DUTIR).

The implementation is intended for trajectory analysis, identification, and generalization across coordinate systems. It provides tools for preprocessing trajectory data, computing screw trajectories, applying the SU-decomposition, and visualizing the resulting representations.

A detailed description of the method is provided in the corresponding paper:

A Coordinate-Invariant Local Representation of Motion and Force Trajectories for Identification and Generalization Across Coordinate Systems

A preprint is available on arXiv.

Installation

The project requires Python 3.10 or newer.

Clone the repository and install the required dependencies:

git clone https://github.com/arnoverduyn/SU_decomposition.git
cd SU_decomposition
pip install -r requirements.txt

The core implementation is located in src/sulib.

Repository structure

SU_decomposition/
├── data/
│   └── demos/
│       ├── contour_following/
│       ├── peg_on_hole_alignment/
│       ├── pouring/
│       └── pouring_objects/
│
├── figures/
│
├── notebooks/
│
├── scripts/
│   ├── example_SU_calculation_force.py
│   └── example_SU_calculation_motion.py
│
├── src/
│   └── sulib/
│       ├── _data_handling.py
│       ├── _plotting.py
│       ├── _preprocessing.py
│       ├── _robotics.py
│       └── su_decomp.py
│
├── tests/
│   └── test_su_decomp.py
│
├── pyproject.toml
├── requirements.txt
├── LICENSE
└── README.md

Package modules (public)

  • sulib.su_decomp — core SU-decomposition and DUTIR computation.

Package modules (internal)

  • sulib._robotics — robotics-related operations for rigid-body trajectories.
  • sulib._preprocessing — trajectory preprocessing utilities.
  • sulib._data_handling — loading and handling trajectory data.
  • sulib._plotting — visualization utilities.

SU-decomposition

The function sulib.su_decomp.compute_dutir_from_screw_traj() takes screw trajectories as input. For motion, these screw trajectories correspond to twist trajectories. For force/torque data, they correspond to wrench trajectories.

For motion data provided as a pose trajectory, sulib.su_decomp.compute_dutir_from_pose_traj() first computes the corresponding twist trajectory and then computes the DUTIR from this twist trajectory.

Conceptually:

Rigid-body pose trajectory
          │
          ▼
    Twist trajectory                         Wrench trajectory
          │                                         │
          ▼                                         ▼
   SU-decomposition                          SU-decomposition
          │                                         │
          ▼                                         ▼
DUTIR of rigid-body motion               DUTIR of force/torque data

More generally, the SU-decomposition can be applied directly to either a twist or wrench trajectory:

Examples

The notebooks/ directory contains numerical examples and demonstrations.

Additional example scripts are provided in scripts/:

Reference

If you use this implementation in academic work, please cite the associated paper:

A Coordinate-Invariant Local Representation of Motion and Force Trajectories for Identification and Generalization Across Coordinate Systems

Preprint: arXiv:2604.10241

License

This project is distributed under the license specified in LICENSE.

Metadata

Release files for sulib 1.0.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 sulib 1.0.0
File Size Uploaded
sulib-1.0.0.tar.gz 1.4 MB Details

Built distribution (wheel)

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

Total release size: 1.4 MB

Release files / sulib-1.0.0.tar.gz

Download URL sulib-1.0.0.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
f3f73245e46f93a97a43beb3f961f927ea36e99ac9f62ff2efca01e2efb45722
BLAKE2b-256 checksum
How to use checksums
a12f1e1be0a86b0eb5cab1b4963f92d83c624cd5cf29f0b232cbcfde8a22bda6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Aug 26, 2026.

Transparency log

Release files / sulib-1.0.0-py3-none-any.whl

Download URL sulib-1.0.0-py3-none-any.whl
Size 14.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bb0719af3a33c78fecaead948139327fcd5a5e696d9e88cae1641454386fac48
BLAKE2b-256 checksum
How to use checksums
e9b74cc4c2f913180d8a51ee814e11d5550ed5bde5337c581d223f4d8b32cafc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Aug 26, 2026.

Transparency log

Release history Release notifications | RSS feed

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

This release

1.0.0 This release

2 release files

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