Liecasadi - liecasadi implements Lie groups operation written in CasADi

Overview

liecasadi

liecasadi implements Lie groups operation written in CasADi, mainly directed to optimization problem formulation.

Inspired by A micro Lie theory for state estimation in robotics and the library Manif.

Install

pip install "liecasadi @ git+https://github.com/ami-iit/lie-casadi.git"

Implemented Groups

Group Description
SO3 3D Rotations
SE3 3D Rigid Transform

Example

from liecasadi import SE3, SO3, SE3Tangent, SO3Tangent

# Random quaternion + normalization
quat = (np.random.rand(4) - 0.5) * 5
quat = quat / np.linalg.norm(quat)
# Random vector
vector3d = (np.random.rand(3) - 0.5) * 2 * np.pi

# Create SO3 object
rotation = SO3(quat)

# Create Identity
identity = SO3.Identity()

# Create SO3Tangent object
tangent = SO3Tangent(vector3d)

# Random translation vector
pos = (np.random.rand(3) - 0.5) * 5

# Create SE3 object
transform = SE3(pos=pos, xyzw=quat)

# Random vector
vector6d = (np.random.rand(3) - 0.5) * 5

# Create SE3Tangent object
tangent = SO3Tangent(vector6d)
You might also like...
Accelerated SMPL operation, commonly used in generate 3D human mesh, STAR included.

SMPL2 An enchanced and accelerated SMPL operation which commonly used in 3D human mesh generation. It takes a poses, shapes, cam_trans as inputs, outp

A python-image-classification web application project, written in Python and served through the Flask Microframework. This Project implements the VGG16 covolutional neural network, through Keras and Tensorflow wrappers, to make predictions on uploaded images. git《Tangent Space Backpropogation for 3D Transformation Groups》(CVPR 2021) GitHub:1]
git《Tangent Space Backpropogation for 3D Transformation Groups》(CVPR 2021) GitHub:1]

LieTorch: Tangent Space Backpropagation Introduction The LieTorch library generalizes PyTorch to 3D transformation groups. Just as torch.Tensor is a m

Nicely is a real-time Feedback and Intervention Program Depression is a prevalent issue across all age groups, socioeconomic classes, and cultural identities.
Nicely is a real-time Feedback and Intervention Program Depression is a prevalent issue across all age groups, socioeconomic classes, and cultural identities.

Nicely is a real-time Feedback and Intervention Program Depression is a prevalent issue across all age groups, socioeconomic classes, and cultural identities.

Model search is a framework that implements AutoML algorithms for model architecture search at scale
Model search is a framework that implements AutoML algorithms for model architecture search at scale

Model search (MS) is a framework that implements AutoML algorithms for model architecture search at scale. It aims to help researchers speed up their exploration process for finding the right model architecture for their classification problems (i.e., DNNs with different types of layers).

Implements Gradient Centralization and allows it to use as a Python package in TensorFlow
Implements Gradient Centralization and allows it to use as a Python package in TensorFlow

Gradient Centralization TensorFlow This Python package implements Gradient Centralization in TensorFlow, a simple and effective optimization technique

Implements MLP-Mixer: An all-MLP Architecture for Vision.
Implements MLP-Mixer: An all-MLP Architecture for Vision.

MLP-Mixer-CIFAR10 This repository implements MLP-Mixer as proposed in MLP-Mixer: An all-MLP Architecture for Vision. The paper introduces an all MLP (

QueryFuzz implements a metamorphic testing approach to test Datalog engines.
QueryFuzz implements a metamorphic testing approach to test Datalog engines.

Datalog is a popular query language with applications in several domains. Like any complex piece of software, Datalog engines may contain bugs. The mo

This repository implements and evaluates convolutional networks on the Möbius strip as toy model instantiations of Coordinate Independent Convolutional Networks.
This repository implements and evaluates convolutional networks on the Möbius strip as toy model instantiations of Coordinate Independent Convolutional Networks.

Orientation independent Möbius CNNs This repository implements and evaluates convolutional networks on the Möbius strip as toy model instantiations of

Comments
  • Problems running the example

    Problems running the example

    I tried installing the library as documented in the README and running the example.

    By installing the example as documented in the README:

    (castest) [email protected]:~$ pip install "liecasadi @ git+https://github.com/ami-iit/lie-casadi.git"
    Collecting liecasadi@ git+https://github.com/ami-iit/lie-casadi.git
      Cloning https://github.com/ami-iit/lie-casadi.git to /tmp/pip-install-jld36pa2/liecasadi_02974e872e9a41da95da2ba742a2bb6a
      Running command git clone --filter=blob:none --quiet https://github.com/ami-iit/lie-casadi.git /tmp/pip-install-jld36pa2/liecasadi_02974e872e9a41da95da2ba742a2bb6a
      Resolved https://github.com/ami-iit/lie-casadi.git to commit 4f538f354781243e600ce771c9236a43df83745d
      Installing build dependencies ... done
      Getting requirements to build wheel ... done
      Preparing metadata (pyproject.toml) ... done
    Collecting numpy>=1.20
      Using cached numpy-1.22.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.8 MB)
    Collecting casadi
      Using cached casadi-3.5.5-cp38-none-manylinux1_x86_64.whl (34.2 MB)
    Building wheels for collected packages: liecasadi
      Building wheel for liecasadi (pyproject.toml) ... done
      Created wheel for liecasadi: filename=liecasadi-0.1.dev39-py3-none-any.whl size=7882 sha256=078ab323d4479d39e5aa0a577a6150df54d9224d416b94c89d26adc5db0616be
      Stored in directory: /tmp/pip-ephem-wheel-cache-v0j9nv_a/wheels/7a/26/6a/62ad9ab4f348e178408f7d79d44555ed51514496949fcdb644
    Successfully built liecasadi
    Installing collected packages: casadi, numpy, liecasadi
    Successfully installed casadi-3.5.5 liecasadi-0.1.dev39 numpy-1.22.1
    

    You can see that casadi got installed via pip.

    Then, I tried to run the example and the example fails with:

    (castest) [email protected]:~/liecasadi/examples$ python manifold_optimization.py
    Traceback (most recent call last):
      File "manifold_optimization.py", line 4, in <module>
        import matplotlib.pyplot as plt
    ModuleNotFoundError: No module named 'matplotlib'
    

    This is due to matplotlib missing, and it make sense that this is not part of the dependencies of the library. If I then install matplot lib, then the example fails with:

    (castest) [email protected]:~/liecasadi/examples$ python manifold_optimization.py
    Traceback (most recent call last):
      File "manifold_optimization.py", line 9, in <module>
        from liecasadi import SO3, SO3Tangent
      File "/home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages/liecasadi/__init__.py", line 3, in <module>
        from .so3 import SO3, SO3Tangent
      File "/home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages/liecasadi/so3.py", line 9, in <module>
        from attr import field
    ModuleNotFoundError: No module named 'attr'
    

    This is a bit more tricky, as it requires to install the attrs package (note the final s, as the attr package will not work).

    After installing also attr, I get this error:

    (castest) [email protected]:~/liecasadi/examples$ python manifold_optimization.py
    Traceback (most recent call last):
      File "manifold_optimization.py", line 21, in <module>
        opti.subject_to(quat[k + 1] == (vector_SO3 + rotation_SO3).as_quat())
      File "/home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages/casadi/casadi.py", line 28146, in subject_to
        ret = self._subject_to(*args)
      File "/home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages/casadi/casadi.py", line 27470, in _subject_to
        return _casadi.Opti__subject_to(self, *args)
    RuntimeError: Error in Opti::subject_to [OptiNode] at .../casadi/core/optistack.cpp:96:
    .../casadi/core/optistack_internal.cpp:905: Assertion "!g.is_constant()" failed:
    You passed a constant to `subject_to`. You need a symbol to form a constraint.
    

    Furthermore, even if I did not reached this point, I noticed that the example refers ma27 (https://github.com/ami-iit/liecasadi/blob/c79d29e87d6d654e78d258a10bac9b2bbae35773/examples/manifold_optimization.py#L47), but by following the instruction of the repo casadi gets installed by pip, and I do not think that that version of casadi has hsl support enabled.

    Environments in which I run the tests:

    (castest) [email protected]:~/liecasadi/examples$ mamba list
    # packages in environment at /home/traversaro/mambaforge/envs/castest:
    #
    # Name                    Version                   Build  Channel
    _libgcc_mutex             0.1                 conda_forge    conda-forge
    _openmp_mutex             4.5                       1_gnu    conda-forge
    attrs                     21.4.0                   pypi_0    pypi
    ca-certificates           2021.10.8            ha878542_0    conda-forge
    casadi                    3.5.5                    pypi_0    pypi
    cycler                    0.11.0                   pypi_0    pypi
    fonttools                 4.29.1                   pypi_0    pypi
    kiwisolver                1.3.2                    pypi_0    pypi
    ld_impl_linux-64          2.36.1               hea4e1c9_2    conda-forge
    libffi                    3.4.2                h7f98852_5    conda-forge
    libgcc-ng                 11.2.0              h1d223b6_12    conda-forge
    libgomp                   11.2.0              h1d223b6_12    conda-forge
    libnsl                    2.0.0                h7f98852_0    conda-forge
    libstdcxx-ng              11.2.0              he4da1e4_12    conda-forge
    libzlib                   1.2.11            h36c2ea0_1013    conda-forge
    liecasadi                 0.1.dev39                pypi_0    pypi
    matplotlib                3.5.1                    pypi_0    pypi
    ncurses                   6.3                  h9c3ff4c_0    conda-forge
    numpy                     1.22.1                   pypi_0    pypi
    openssl                   3.0.0                h7f98852_2    conda-forge
    packaging                 21.3                     pypi_0    pypi
    pillow                    9.0.0                    pypi_0    pypi
    pip                       22.0.2             pyhd8ed1ab_0    conda-forge
    pyparsing                 3.0.7                    pypi_0    pypi
    python                    3.8.12          h0744224_3_cpython    conda-forge
    python-dateutil           2.8.2                    pypi_0    pypi
    python_abi                3.8                      2_cp38    conda-forge
    readline                  8.1                  h46c0cb4_0    conda-forge
    setuptools                60.6.0           py38h578d9bd_0    conda-forge
    six                       1.16.0                   pypi_0    pypi
    sqlite                    3.37.0               h9cd32fc_0    conda-forge
    tk                        8.6.11               h27826a3_1    conda-forge
    wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
    xz                        5.2.5                h516909a_1    conda-forge
    zlib                      1.2.11            h36c2ea0_1013    conda-forge
    (castest) [email protected]:~/liecasadi/examples$ pip list --verbose
    Package         Version   Location                                                             Installer
    --------------- --------- -------------------------------------------------------------------- ---------
    attrs           21.4.0    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    casadi          3.5.5     /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    cycler          0.11.0    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    fonttools       4.29.1    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    kiwisolver      1.3.2     /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    liecasadi       0.1.dev39 /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    matplotlib      3.5.1     /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    numpy           1.22.1    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    packaging       21.3      /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    Pillow          9.0.0     /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    pip             22.0.2    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages
    pyparsing       3.0.7     /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    python-dateutil 2.8.2     /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    setuptools      60.6.0    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages
    six             1.16.0    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    wheel           0.37.1    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages
    
    opened by traversaro 6
  • Fix manifpy test dependency

    Fix manifpy test dependency

    In order to check the correctness of the computations, I wrote some tests against Manif.

    It seems manifpy cannot be installed via PyPI. However, they provide installation instruction in https://github.com/artivis/manif/blob/devel/docs/pages/python/Quick-start.md.

    Although I can install the library using conda on my system, I'm not able to move the same logic in a workflow. manifpy seems to be installed but it is not found:

    ModuleNotFoundError: No module named 'manifpy'
    

    Am I doing something wrong?

    @traversaro @GiulioRomualdi do you have any suggestions?

    opened by Giulero 4
  • Remove `R_from_rpy(rpy)` method

    Remove `R_from_rpy(rpy)` method

    The method was badly implemented. Moreover, it's not really useful (it should be ok to call SO3.from_euler(rpy).as_matrix().

    • changed from_angle to from_euler
    • implemented to_euler
    opened by Giulero 1
Releases(v0.0.4)
  • v0.0.4(Nov 21, 2022)

    What's Changed

    • Remove R_from_rpy(rpy) method and add from/to Euler methods by @Giulero in https://github.com/ami-iit/liecasadi/pull/6

    Full Changelog: https://github.com/ami-iit/liecasadi/compare/v0.0.3...v0.0.4

    Source code(tar.gz)
    Source code(zip)
  • v0.0.3(Oct 12, 2022)

    What's Changed

    • Add quaternion derivative by @Giulero in https://github.com/ami-iit/liecasadi/pull/4
    • Add dual quaternion class by @Giulero in https://github.com/ami-iit/liecasadi/pull/5

    Full Changelog: https://github.com/ami-iit/liecasadi/compare/v0.0.2...v0.0.3

    Source code(tar.gz)
    Source code(zip)
  • v0.0.2(May 18, 2022)

    What's Changed

    • Deploy library on PyPi by @Giulero in https://github.com/ami-iit/liecasadi/pull/3

    Full Changelog: https://github.com/ami-iit/liecasadi/compare/v0.0.1...v0.0.2

    Source code(tar.gz)
    Source code(zip)
  • v0.0.1(Feb 16, 2022)

Owner
Artificial and Mechanical Intelligence
Artificial and Mechanical Intelligence
Fewshot-face-translation-GAN - Generative adversarial networks integrating modules from FUNIT and SPADE for face-swapping.

Few-shot face translation A GAN based approach for one model to swap them all. The table below shows our priliminary face-swapping results requiring o

768 Dec 24, 2022
CAMoE + Dual SoftMax Loss (DSL): Improving Video-Text Retrieval by Multi-Stream Corpus Alignment and Dual Softmax Loss

CAMoE + Dual SoftMax Loss (DSL): Improving Video-Text Retrieval by Multi-Stream Corpus Alignment and Dual Softmax Loss This is official implement of "

程星 87 Dec 24, 2022
Global-Local Path Networks for Monocular Depth Estimation with Vertical CutDepth [Paper]

Global-Local Path Networks for Monocular Depth Estimation with Vertical CutDepth [Paper] Downloads [Downloads] Trained ckpt files for NYU Depth V2 and

98 Jan 01, 2023
List of papers, code and experiments using deep learning for time series forecasting

Deep Learning Time Series Forecasting List of state of the art papers focus on deep learning and resources, code and experiments using deep learning f

Alexander Robles 2k Jan 06, 2023
[ACM MM 2021] TSA-Net: Tube Self-Attention Network for Action Quality Assessment

Tube Self-Attention Network (TSA-Net) This repository contains the PyTorch implementation for paper TSA-Net: Tube Self-Attention Network for Action Qu

ShunliWang 18 Dec 23, 2022
Personalized Transfer of User Preferences for Cross-domain Recommendation (PTUPCDR)

Personalized Transfer of User Preferences for Cross-domain Recommendation (PTUPCDR) This is the official implementation of our paper Personalized Tran

Yongchun Zhu 81 Dec 29, 2022
A PyTorch implementation of "Graph Wavelet Neural Network" (ICLR 2019)

Graph Wavelet Neural Network ⠀⠀ A PyTorch implementation of Graph Wavelet Neural Network (ICLR 2019). Abstract We present graph wavelet neural network

Benedek Rozemberczki 490 Dec 16, 2022
Python wrappers to the C++ library SymEngine, a fast C++ symbolic manipulation library.

SymEngine Python Wrappers Python wrappers to the C++ library SymEngine, a fast C++ symbolic manipulation library. Installation Pip See License section

136 Dec 28, 2022
PyTorch Implementation of Fully Convolutional Networks. (Training code to reproduce the original result is available.)

pytorch-fcn PyTorch implementation of Fully Convolutional Networks. Requirements pytorch = 0.2.0 torchvision = 0.1.8 fcn = 6.1.5 Pillow scipy tqdm

Kentaro Wada 1.6k Jan 07, 2023
BTC-Generator - BTC Generator With Python

Что такое BTC-Generator? Это генератор чеков всеми любимого @BTC_BANKER_BOT Для

DoomGod 3 Aug 24, 2022
Point-NeRF: Point-based Neural Radiance Fields

Point-NeRF: Point-based Neural Radiance Fields Project Sites | Paper | Primary c

Qiangeng Xu 662 Jan 01, 2023
Kaggle competition: Springleaf Marketing Response

PruebaEnel Prueba Kaggle-Springleaf-master Prueba Kaggle-Springleaf Kaggle competition: Springleaf Marketing Response Competencia de Kaggle: Marketing

1 Feb 09, 2022
Internship Assessment Task for BaggageAI.

BaggageAI Internship Task Problem Statement: You are given two sets of images:- background and threat objects. Background images are the background x-

Arya Shah 10 Nov 14, 2022
Train a deep learning net with OpenStreetMap features and satellite imagery.

DeepOSM Classify roads and features in satellite imagery, by training neural networks with OpenStreetMap (OSM) data. DeepOSM can: Download a chunk of

TrailBehind, Inc. 1.3k Nov 24, 2022
The object detection pipeline is based on Ultralytics YOLOv5

AYOLOv2 The main goal of this repository is to rewrite the object detection pipeline with a better code structure for better portability and adaptabil

153 Dec 22, 2022
BanditPAM: Almost Linear-Time k-Medoids Clustering

BanditPAM: Almost Linear-Time k-Medoids Clustering This repo contains a high-performance implementation of BanditPAM from BanditPAM: Almost Linear-Tim

254 Dec 12, 2022
An Implicit Function Theorem (IFT) optimizer for bi-level optimizations

iftopt An Implicit Function Theorem (IFT) optimizer for bi-level optimizations. Requirements Python 3.7+ PyTorch 1.x Installation $ pip install git+ht

The Money Shredder Lab 2 Dec 02, 2021
Code for our paper "Multi-scale Guided Attention for Medical Image Segmentation"

Medical Image Segmentation with Guided Attention This repository contains the code of our paper: "'Multi-scale self-guided attention for medical image

Ashish Sinha 394 Dec 28, 2022
PyTorch implementation of "A Full-Band and Sub-Band Fusion Model for Real-Time Single-Channel Speech Enhancement."

FullSubNet This Git repository for the official PyTorch implementation of "A Full-Band and Sub-Band Fusion Model for Real-Time Single-Channel Speech E

郝翔 357 Jan 04, 2023
Gin provides a lightweight configuration framework for Python

Gin Config Authors: Dan Holtmann-Rice, Sergio Guadarrama, Nathan Silberman Contributors: Oscar Ramirez, Marek Fiser Gin provides a lightweight configu

Google 1.7k Jan 03, 2023