tf_transformations repository

Repository Summary

Checkout URI https://github.com/DLu/tf_transformations.git
VCS Type git
VCS Version main
Last Updated 2021-06-22
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
tf_transformations 1.0.2

README

tf_transformations

Context

In ROS 1, the TF library provided the helpful transformations.py module for doing various rotation-based conversions.

Quoting from the ROS wiki page

The tf package also includes the popular transformations.py module. TransformerROS uses transformations.py to perform conversions between quaternions and matrices. transformations.py does has[sic] useful conversion on numpy matrices; it can convert between transformations as Euler angles, quaternions, and matrices.

Since TF was supported in all distros of ROS 1, the library was widely used for all sorts of angular conversions in rospy code.

However, ROS 2 only supports TF2 (not to be confused with TF2) and TF2 does not have an equivalent library.

Quoting from TF (Tully Foote) himself on ROS Answers,

tf.transformations is a fork of https://github.com/cgohlke/transformations/. This package has been deprecated "Transformations.py is no longer actively developed and has a few known issues and numerical instabilities."

The recommended alternative is a package available via pip called transforms3d.

However, using that library has a few obstacles that make porting ROS 1 code to ROS 2 difficult. 1. The API is different. The new API has more consistent naming, but even then, it is not a one-to-one translation. for example, tf.transformations.quaternion_from_euler could be replaced with transforms3d.euler.euler2quat, but tf returns the quaternion with the ordering x, y, z, w and transforms3d returns w, x, y, z. 2. Not all of the functions have been migrated. As noted in the transforms3d Refactoring Plan, some of the functions are still in the "to integrate" pile.

Migration

If you're here, its likely because you want to migrate some code easily. You have two options: 1. Use transforms3d by adding a dependency on python-transforms3d-pip in your package.xml and noting differences in API discussed above. 2. Use this library tf_transformations.

If you wrote the following in ROS 1,

from tf.transformations import euler_from_quaternion

the only change you need to your code in ROS 2 is

from tf_transformations import euler_from_quaternion

Note that ROS 1 uses tf DOT transformations and ROS 2 uses tf UNDERSCORE transformations.

You also need to add a dependency on the tf_transformations in your package.xml

Installation

To use this package, you need to manually install the transforms3d library.

sudo pip3 install transforms3d

At the present time, you cannot install transforms3d via Ubuntu debian, nor can you force the installation of the tf_transformations package to also include transforms3d.

Implementation

Wherever possible, this library uses transforms3d to do the math for each of the functions. For functions that are still on the Refactoring Plan, the original implementation is left in place. It is not ideal to have to maintain the math for those functions, given the complexity of the geometry at hand, and in the future, effort should be made to fix the problems upstream and replace the implementations in this package with the upstream versions.

However, the original transformations.py library was remarkably stable. There have only been two commits in its entire Git history (the initial commit and porting to Python3, which was a one line cosmetic change). Therefore, the hope is that this package will not need too much maintenance to correct problems.

Special Thanks

This package rests on the shoulders of giants, namely the OG author Christoph Gohlke [github] and Matthew Brett.

CONTRIBUTING

No CONTRIBUTING.md found.

Repository Summary

Checkout URI https://github.com/DLu/tf_transformations.git
VCS Type git
VCS Version main
Last Updated 2021-06-22
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
tf_transformations 1.0.2

README

tf_transformations

Context

In ROS 1, the TF library provided the helpful transformations.py module for doing various rotation-based conversions.

Quoting from the ROS wiki page

The tf package also includes the popular transformations.py module. TransformerROS uses transformations.py to perform conversions between quaternions and matrices. transformations.py does has[sic] useful conversion on numpy matrices; it can convert between transformations as Euler angles, quaternions, and matrices.

Since TF was supported in all distros of ROS 1, the library was widely used for all sorts of angular conversions in rospy code.

However, ROS 2 only supports TF2 (not to be confused with TF2) and TF2 does not have an equivalent library.

Quoting from TF (Tully Foote) himself on ROS Answers,

tf.transformations is a fork of https://github.com/cgohlke/transformations/. This package has been deprecated "Transformations.py is no longer actively developed and has a few known issues and numerical instabilities."

The recommended alternative is a package available via pip called transforms3d.

However, using that library has a few obstacles that make porting ROS 1 code to ROS 2 difficult. 1. The API is different. The new API has more consistent naming, but even then, it is not a one-to-one translation. for example, tf.transformations.quaternion_from_euler could be replaced with transforms3d.euler.euler2quat, but tf returns the quaternion with the ordering x, y, z, w and transforms3d returns w, x, y, z. 2. Not all of the functions have been migrated. As noted in the transforms3d Refactoring Plan, some of the functions are still in the "to integrate" pile.

Migration

If you're here, its likely because you want to migrate some code easily. You have two options: 1. Use transforms3d by adding a dependency on python-transforms3d-pip in your package.xml and noting differences in API discussed above. 2. Use this library tf_transformations.

If you wrote the following in ROS 1,

from tf.transformations import euler_from_quaternion

the only change you need to your code in ROS 2 is

from tf_transformations import euler_from_quaternion

Note that ROS 1 uses tf DOT transformations and ROS 2 uses tf UNDERSCORE transformations.

You also need to add a dependency on the tf_transformations in your package.xml

Installation

To use this package, you need to manually install the transforms3d library.

sudo pip3 install transforms3d

At the present time, you cannot install transforms3d via Ubuntu debian, nor can you force the installation of the tf_transformations package to also include transforms3d.

Implementation

Wherever possible, this library uses transforms3d to do the math for each of the functions. For functions that are still on the Refactoring Plan, the original implementation is left in place. It is not ideal to have to maintain the math for those functions, given the complexity of the geometry at hand, and in the future, effort should be made to fix the problems upstream and replace the implementations in this package with the upstream versions.

However, the original transformations.py library was remarkably stable. There have only been two commits in its entire Git history (the initial commit and porting to Python3, which was a one line cosmetic change). Therefore, the hope is that this package will not need too much maintenance to correct problems.

Special Thanks

This package rests on the shoulders of giants, namely the OG author Christoph Gohlke [github] and Matthew Brett.

CONTRIBUTING

No CONTRIBUTING.md found.

Repository Summary

Checkout URI https://github.com/DLu/tf_transformations.git
VCS Type git
VCS Version main
Last Updated 2021-06-22
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
tf_transformations 1.0.2

README

tf_transformations

Context

In ROS 1, the TF library provided the helpful transformations.py module for doing various rotation-based conversions.

Quoting from the ROS wiki page

The tf package also includes the popular transformations.py module. TransformerROS uses transformations.py to perform conversions between quaternions and matrices. transformations.py does has[sic] useful conversion on numpy matrices; it can convert between transformations as Euler angles, quaternions, and matrices.

Since TF was supported in all distros of ROS 1, the library was widely used for all sorts of angular conversions in rospy code.

However, ROS 2 only supports TF2 (not to be confused with TF2) and TF2 does not have an equivalent library.

Quoting from TF (Tully Foote) himself on ROS Answers,

tf.transformations is a fork of https://github.com/cgohlke/transformations/. This package has been deprecated "Transformations.py is no longer actively developed and has a few known issues and numerical instabilities."

The recommended alternative is a package available via pip called transforms3d.

However, using that library has a few obstacles that make porting ROS 1 code to ROS 2 difficult. 1. The API is different. The new API has more consistent naming, but even then, it is not a one-to-one translation. for example, tf.transformations.quaternion_from_euler could be replaced with transforms3d.euler.euler2quat, but tf returns the quaternion with the ordering x, y, z, w and transforms3d returns w, x, y, z. 2. Not all of the functions have been migrated. As noted in the transforms3d Refactoring Plan, some of the functions are still in the "to integrate" pile.

Migration

If you're here, its likely because you want to migrate some code easily. You have two options: 1. Use transforms3d by adding a dependency on python-transforms3d-pip in your package.xml and noting differences in API discussed above. 2. Use this library tf_transformations.

If you wrote the following in ROS 1,

from tf.transformations import euler_from_quaternion

the only change you need to your code in ROS 2 is

from tf_transformations import euler_from_quaternion

Note that ROS 1 uses tf DOT transformations and ROS 2 uses tf UNDERSCORE transformations.

You also need to add a dependency on the tf_transformations in your package.xml

Installation

To use this package, you need to manually install the transforms3d library.

sudo pip3 install transforms3d

At the present time, you cannot install transforms3d via Ubuntu debian, nor can you force the installation of the tf_transformations package to also include transforms3d.

Implementation

Wherever possible, this library uses transforms3d to do the math for each of the functions. For functions that are still on the Refactoring Plan, the original implementation is left in place. It is not ideal to have to maintain the math for those functions, given the complexity of the geometry at hand, and in the future, effort should be made to fix the problems upstream and replace the implementations in this package with the upstream versions.

However, the original transformations.py library was remarkably stable. There have only been two commits in its entire Git history (the initial commit and porting to Python3, which was a one line cosmetic change). Therefore, the hope is that this package will not need too much maintenance to correct problems.

Special Thanks

This package rests on the shoulders of giants, namely the OG author Christoph Gohlke [github] and Matthew Brett.

CONTRIBUTING

No CONTRIBUTING.md found.