No version for distro humble showing github. Known supported distros are highlighted in the buttons above.
Package symbol

smooth package from smooth repo

smooth

ROS Distro
github

Package Summary

Tags No category tags.
Version 0.0.1
License MIT
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description Lie theory for robotics
Checkout URI https://github.com/pettni/smooth.git
VCS Type git
VCS Version master
Last Updated 2024-10-18
Dev Status UNKNOWN
Released UNRELEASED
Tags cpp robotics eigen header-only lie-groups cpp20 lie-algebra
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Lie theory for robotics

Additional Links

No additional links.

Maintainers

  • Petter Nilsson

Authors

  • Petter Nilsson

Lie Theory for Robotics

[![CI Build and Test][ci-shield]][ci-link] [![Code coverage][cov-shield]][cov-link] [![License][license-shield]][license-link]

  • Requirements: C++20, Eigen 3.4
  • [Documentation][doc-link]
  • Compatible with: autodiff, boost::numeric::odeint, Ceres, ROS
  • Written in an extensible functional programming style

In robotics it is often convenient to work in non-Euclidean manifolds. Lie groups are a class of manifolds that are easy to work with due to their symmetries, and that are also good models for many robotic systems. This header-only C++20 library facilitates leveraging Lie theory in robotics software, by enabling:

  • Algebraic manipulation
  • Automatic differentiation
  • Interpolation (right figure shows a B-spline of order 5 on smooth::SO3, see examples/bspline.cpp)
  • Numerical integration (left figure shows the solution of an ODE on , see examples/odeint.cpp)
  • Optimization

The following common Lie groups are implemented:

  • smooth::SO2: two-dimensional rotations with complex number memory representation
  • smooth::SO3: three-dimensional rotations with quaternion memory representation
  • smooth::SE2: two-dimensional rigid motions
  • smooth::SE3: three-dimensional rigid motions
  • smooth::C1: complex numbers (excluding zero) under multiplication
  • smooth::Galilei: the Galilean group. It includes SE_2(3) as a special case.
  • smooth::SE_K_3: generalization of SE3 with multiple translations
  • A smooth::Bundle type to treat Lie group products as a single Lie group. The Bundle type also supports regular Eigen vectors as components
  • Lie group interfaces for Eigen vectors and builtin scalars

Getting started

Download and Build

Clone the repository and install it

git clone https://github.com/pettni/smooth.git
cd smooth
mkdir build && cd build

# Specify a C++20-compatible compiler if your default does not support C++20.
# Build tests and/or examples as desired.
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF
make -j8
sudo make install

Alternatively, if using ROS or ROS2 just clone smooth into a catkin/colcon workspace source folder and build the workspace with a compiler that supports C++20. Example with colcon:

colcon build --cmake-args -DCMAKE_CXX_COMPILER=/usr/bin/g++-10

Use with cmake

To utilize smooth in your own project, include something along these lines in your CMakeLists.txt

find_package(smooth)

add_executable(my_executable main.cpp)
target_link_libraries(my_executable smooth::smooth)

Explore the API

Check out the [Documentation][doc-link] and the examples.

Using the library

Algebraic Manipulations

```cpp // Also works with other types: SO2d, SE2d, SE3d, Bundle<SO3d, T3d> etc…

using Tangent = typename smooth::SO3d::Tangent;

// construct a random group element and a random tangent element smooth::SO3d g = smooth::SO3d::Random(); Tangent a = Tangent::Random();

// lie group exponential auto exp_a = smooth::SO3d::exp(a);

// lie group logarithm auto g_log = g.log();

// lie algebra hat and vee maps auto a_hat = smooth::SO3d::hat(a); auto a_hat_vee = smooth::SO3d::vee(a_hat);

// group adjoint

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Name
cmake
eigen

Dependant Packages

Name Deps
smooth_feedback

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged smooth at Robotics Stack Exchange

No version for distro jazzy showing github. Known supported distros are highlighted in the buttons above.
Package symbol

smooth package from smooth repo

smooth

ROS Distro
github

Package Summary

Tags No category tags.
Version 0.0.1
License MIT
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description Lie theory for robotics
Checkout URI https://github.com/pettni/smooth.git
VCS Type git
VCS Version master
Last Updated 2024-10-18
Dev Status UNKNOWN
Released UNRELEASED
Tags cpp robotics eigen header-only lie-groups cpp20 lie-algebra
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Lie theory for robotics

Additional Links

No additional links.

Maintainers

  • Petter Nilsson

Authors

  • Petter Nilsson

Lie Theory for Robotics

[![CI Build and Test][ci-shield]][ci-link] [![Code coverage][cov-shield]][cov-link] [![License][license-shield]][license-link]

  • Requirements: C++20, Eigen 3.4
  • [Documentation][doc-link]
  • Compatible with: autodiff, boost::numeric::odeint, Ceres, ROS
  • Written in an extensible functional programming style

In robotics it is often convenient to work in non-Euclidean manifolds. Lie groups are a class of manifolds that are easy to work with due to their symmetries, and that are also good models for many robotic systems. This header-only C++20 library facilitates leveraging Lie theory in robotics software, by enabling:

  • Algebraic manipulation
  • Automatic differentiation
  • Interpolation (right figure shows a B-spline of order 5 on smooth::SO3, see examples/bspline.cpp)
  • Numerical integration (left figure shows the solution of an ODE on , see examples/odeint.cpp)
  • Optimization

The following common Lie groups are implemented:

  • smooth::SO2: two-dimensional rotations with complex number memory representation
  • smooth::SO3: three-dimensional rotations with quaternion memory representation
  • smooth::SE2: two-dimensional rigid motions
  • smooth::SE3: three-dimensional rigid motions
  • smooth::C1: complex numbers (excluding zero) under multiplication
  • smooth::Galilei: the Galilean group. It includes SE_2(3) as a special case.
  • smooth::SE_K_3: generalization of SE3 with multiple translations
  • A smooth::Bundle type to treat Lie group products as a single Lie group. The Bundle type also supports regular Eigen vectors as components
  • Lie group interfaces for Eigen vectors and builtin scalars

Getting started

Download and Build

Clone the repository and install it

git clone https://github.com/pettni/smooth.git
cd smooth
mkdir build && cd build

# Specify a C++20-compatible compiler if your default does not support C++20.
# Build tests and/or examples as desired.
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF
make -j8
sudo make install

Alternatively, if using ROS or ROS2 just clone smooth into a catkin/colcon workspace source folder and build the workspace with a compiler that supports C++20. Example with colcon:

colcon build --cmake-args -DCMAKE_CXX_COMPILER=/usr/bin/g++-10

Use with cmake

To utilize smooth in your own project, include something along these lines in your CMakeLists.txt

find_package(smooth)

add_executable(my_executable main.cpp)
target_link_libraries(my_executable smooth::smooth)

Explore the API

Check out the [Documentation][doc-link] and the examples.

Using the library

Algebraic Manipulations

```cpp // Also works with other types: SO2d, SE2d, SE3d, Bundle<SO3d, T3d> etc…

using Tangent = typename smooth::SO3d::Tangent;

// construct a random group element and a random tangent element smooth::SO3d g = smooth::SO3d::Random(); Tangent a = Tangent::Random();

// lie group exponential auto exp_a = smooth::SO3d::exp(a);

// lie group logarithm auto g_log = g.log();

// lie algebra hat and vee maps auto a_hat = smooth::SO3d::hat(a); auto a_hat_vee = smooth::SO3d::vee(a_hat);

// group adjoint

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Name
cmake
eigen

Dependant Packages

Name Deps
smooth_feedback

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged smooth at Robotics Stack Exchange

No version for distro kilted showing github. Known supported distros are highlighted in the buttons above.
Package symbol

smooth package from smooth repo

smooth

ROS Distro
github

Package Summary

Tags No category tags.
Version 0.0.1
License MIT
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description Lie theory for robotics
Checkout URI https://github.com/pettni/smooth.git
VCS Type git
VCS Version master
Last Updated 2024-10-18
Dev Status UNKNOWN
Released UNRELEASED
Tags cpp robotics eigen header-only lie-groups cpp20 lie-algebra
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Lie theory for robotics

Additional Links

No additional links.

Maintainers

  • Petter Nilsson

Authors

  • Petter Nilsson

Lie Theory for Robotics

[![CI Build and Test][ci-shield]][ci-link] [![Code coverage][cov-shield]][cov-link] [![License][license-shield]][license-link]

  • Requirements: C++20, Eigen 3.4
  • [Documentation][doc-link]
  • Compatible with: autodiff, boost::numeric::odeint, Ceres, ROS
  • Written in an extensible functional programming style

In robotics it is often convenient to work in non-Euclidean manifolds. Lie groups are a class of manifolds that are easy to work with due to their symmetries, and that are also good models for many robotic systems. This header-only C++20 library facilitates leveraging Lie theory in robotics software, by enabling:

  • Algebraic manipulation
  • Automatic differentiation
  • Interpolation (right figure shows a B-spline of order 5 on smooth::SO3, see examples/bspline.cpp)
  • Numerical integration (left figure shows the solution of an ODE on , see examples/odeint.cpp)
  • Optimization

The following common Lie groups are implemented:

  • smooth::SO2: two-dimensional rotations with complex number memory representation
  • smooth::SO3: three-dimensional rotations with quaternion memory representation
  • smooth::SE2: two-dimensional rigid motions
  • smooth::SE3: three-dimensional rigid motions
  • smooth::C1: complex numbers (excluding zero) under multiplication
  • smooth::Galilei: the Galilean group. It includes SE_2(3) as a special case.
  • smooth::SE_K_3: generalization of SE3 with multiple translations
  • A smooth::Bundle type to treat Lie group products as a single Lie group. The Bundle type also supports regular Eigen vectors as components
  • Lie group interfaces for Eigen vectors and builtin scalars

Getting started

Download and Build

Clone the repository and install it

git clone https://github.com/pettni/smooth.git
cd smooth
mkdir build && cd build

# Specify a C++20-compatible compiler if your default does not support C++20.
# Build tests and/or examples as desired.
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF
make -j8
sudo make install

Alternatively, if using ROS or ROS2 just clone smooth into a catkin/colcon workspace source folder and build the workspace with a compiler that supports C++20. Example with colcon:

colcon build --cmake-args -DCMAKE_CXX_COMPILER=/usr/bin/g++-10

Use with cmake

To utilize smooth in your own project, include something along these lines in your CMakeLists.txt

find_package(smooth)

add_executable(my_executable main.cpp)
target_link_libraries(my_executable smooth::smooth)

Explore the API

Check out the [Documentation][doc-link] and the examples.

Using the library

Algebraic Manipulations

```cpp // Also works with other types: SO2d, SE2d, SE3d, Bundle<SO3d, T3d> etc…

using Tangent = typename smooth::SO3d::Tangent;

// construct a random group element and a random tangent element smooth::SO3d g = smooth::SO3d::Random(); Tangent a = Tangent::Random();

// lie group exponential auto exp_a = smooth::SO3d::exp(a);

// lie group logarithm auto g_log = g.log();

// lie algebra hat and vee maps auto a_hat = smooth::SO3d::hat(a); auto a_hat_vee = smooth::SO3d::vee(a_hat);

// group adjoint

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Name
cmake
eigen

Dependant Packages

Name Deps
smooth_feedback

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged smooth at Robotics Stack Exchange

No version for distro rolling showing github. Known supported distros are highlighted in the buttons above.
Package symbol

smooth package from smooth repo

smooth

ROS Distro
github

Package Summary

Tags No category tags.
Version 0.0.1
License MIT
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description Lie theory for robotics
Checkout URI https://github.com/pettni/smooth.git
VCS Type git
VCS Version master
Last Updated 2024-10-18
Dev Status UNKNOWN
Released UNRELEASED
Tags cpp robotics eigen header-only lie-groups cpp20 lie-algebra
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Lie theory for robotics

Additional Links

No additional links.

Maintainers

  • Petter Nilsson

Authors

  • Petter Nilsson

Lie Theory for Robotics

[![CI Build and Test][ci-shield]][ci-link] [![Code coverage][cov-shield]][cov-link] [![License][license-shield]][license-link]

  • Requirements: C++20, Eigen 3.4
  • [Documentation][doc-link]
  • Compatible with: autodiff, boost::numeric::odeint, Ceres, ROS
  • Written in an extensible functional programming style

In robotics it is often convenient to work in non-Euclidean manifolds. Lie groups are a class of manifolds that are easy to work with due to their symmetries, and that are also good models for many robotic systems. This header-only C++20 library facilitates leveraging Lie theory in robotics software, by enabling:

  • Algebraic manipulation
  • Automatic differentiation
  • Interpolation (right figure shows a B-spline of order 5 on smooth::SO3, see examples/bspline.cpp)
  • Numerical integration (left figure shows the solution of an ODE on , see examples/odeint.cpp)
  • Optimization

The following common Lie groups are implemented:

  • smooth::SO2: two-dimensional rotations with complex number memory representation
  • smooth::SO3: three-dimensional rotations with quaternion memory representation
  • smooth::SE2: two-dimensional rigid motions
  • smooth::SE3: three-dimensional rigid motions
  • smooth::C1: complex numbers (excluding zero) under multiplication
  • smooth::Galilei: the Galilean group. It includes SE_2(3) as a special case.
  • smooth::SE_K_3: generalization of SE3 with multiple translations
  • A smooth::Bundle type to treat Lie group products as a single Lie group. The Bundle type also supports regular Eigen vectors as components
  • Lie group interfaces for Eigen vectors and builtin scalars

Getting started

Download and Build

Clone the repository and install it

git clone https://github.com/pettni/smooth.git
cd smooth
mkdir build && cd build

# Specify a C++20-compatible compiler if your default does not support C++20.
# Build tests and/or examples as desired.
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF
make -j8
sudo make install

Alternatively, if using ROS or ROS2 just clone smooth into a catkin/colcon workspace source folder and build the workspace with a compiler that supports C++20. Example with colcon:

colcon build --cmake-args -DCMAKE_CXX_COMPILER=/usr/bin/g++-10

Use with cmake

To utilize smooth in your own project, include something along these lines in your CMakeLists.txt

find_package(smooth)

add_executable(my_executable main.cpp)
target_link_libraries(my_executable smooth::smooth)

Explore the API

Check out the [Documentation][doc-link] and the examples.

Using the library

Algebraic Manipulations

```cpp // Also works with other types: SO2d, SE2d, SE3d, Bundle<SO3d, T3d> etc…

using Tangent = typename smooth::SO3d::Tangent;

// construct a random group element and a random tangent element smooth::SO3d g = smooth::SO3d::Random(); Tangent a = Tangent::Random();

// lie group exponential auto exp_a = smooth::SO3d::exp(a);

// lie group logarithm auto g_log = g.log();

// lie algebra hat and vee maps auto a_hat = smooth::SO3d::hat(a); auto a_hat_vee = smooth::SO3d::vee(a_hat);

// group adjoint

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Name
cmake
eigen

Dependant Packages

Name Deps
smooth_feedback

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged smooth at Robotics Stack Exchange

Package symbol

smooth package from smooth repo

smooth

ROS Distro
github

Package Summary

Tags No category tags.
Version 0.0.1
License MIT
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description Lie theory for robotics
Checkout URI https://github.com/pettni/smooth.git
VCS Type git
VCS Version master
Last Updated 2024-10-18
Dev Status UNKNOWN
Released UNRELEASED
Tags cpp robotics eigen header-only lie-groups cpp20 lie-algebra
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Lie theory for robotics

Additional Links

No additional links.

Maintainers

  • Petter Nilsson

Authors

  • Petter Nilsson

Lie Theory for Robotics

[![CI Build and Test][ci-shield]][ci-link] [![Code coverage][cov-shield]][cov-link] [![License][license-shield]][license-link]

  • Requirements: C++20, Eigen 3.4
  • [Documentation][doc-link]
  • Compatible with: autodiff, boost::numeric::odeint, Ceres, ROS
  • Written in an extensible functional programming style

In robotics it is often convenient to work in non-Euclidean manifolds. Lie groups are a class of manifolds that are easy to work with due to their symmetries, and that are also good models for many robotic systems. This header-only C++20 library facilitates leveraging Lie theory in robotics software, by enabling:

  • Algebraic manipulation
  • Automatic differentiation
  • Interpolation (right figure shows a B-spline of order 5 on smooth::SO3, see examples/bspline.cpp)
  • Numerical integration (left figure shows the solution of an ODE on , see examples/odeint.cpp)
  • Optimization

The following common Lie groups are implemented:

  • smooth::SO2: two-dimensional rotations with complex number memory representation
  • smooth::SO3: three-dimensional rotations with quaternion memory representation
  • smooth::SE2: two-dimensional rigid motions
  • smooth::SE3: three-dimensional rigid motions
  • smooth::C1: complex numbers (excluding zero) under multiplication
  • smooth::Galilei: the Galilean group. It includes SE_2(3) as a special case.
  • smooth::SE_K_3: generalization of SE3 with multiple translations
  • A smooth::Bundle type to treat Lie group products as a single Lie group. The Bundle type also supports regular Eigen vectors as components
  • Lie group interfaces for Eigen vectors and builtin scalars

Getting started

Download and Build

Clone the repository and install it

git clone https://github.com/pettni/smooth.git
cd smooth
mkdir build && cd build

# Specify a C++20-compatible compiler if your default does not support C++20.
# Build tests and/or examples as desired.
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF
make -j8
sudo make install

Alternatively, if using ROS or ROS2 just clone smooth into a catkin/colcon workspace source folder and build the workspace with a compiler that supports C++20. Example with colcon:

colcon build --cmake-args -DCMAKE_CXX_COMPILER=/usr/bin/g++-10

Use with cmake

To utilize smooth in your own project, include something along these lines in your CMakeLists.txt

find_package(smooth)

add_executable(my_executable main.cpp)
target_link_libraries(my_executable smooth::smooth)

Explore the API

Check out the [Documentation][doc-link] and the examples.

Using the library

Algebraic Manipulations

```cpp // Also works with other types: SO2d, SE2d, SE3d, Bundle<SO3d, T3d> etc…

using Tangent = typename smooth::SO3d::Tangent;

// construct a random group element and a random tangent element smooth::SO3d g = smooth::SO3d::Random(); Tangent a = Tangent::Random();

// lie group exponential auto exp_a = smooth::SO3d::exp(a);

// lie group logarithm auto g_log = g.log();

// lie algebra hat and vee maps auto a_hat = smooth::SO3d::hat(a); auto a_hat_vee = smooth::SO3d::vee(a_hat);

// group adjoint

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Name
cmake
eigen

Dependant Packages

Name Deps
smooth_feedback

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged smooth at Robotics Stack Exchange

No version for distro galactic showing github. Known supported distros are highlighted in the buttons above.
Package symbol

smooth package from smooth repo

smooth

ROS Distro
github

Package Summary

Tags No category tags.
Version 0.0.1
License MIT
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description Lie theory for robotics
Checkout URI https://github.com/pettni/smooth.git
VCS Type git
VCS Version master
Last Updated 2024-10-18
Dev Status UNKNOWN
Released UNRELEASED
Tags cpp robotics eigen header-only lie-groups cpp20 lie-algebra
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Lie theory for robotics

Additional Links

No additional links.

Maintainers

  • Petter Nilsson

Authors

  • Petter Nilsson

Lie Theory for Robotics

[![CI Build and Test][ci-shield]][ci-link] [![Code coverage][cov-shield]][cov-link] [![License][license-shield]][license-link]

  • Requirements: C++20, Eigen 3.4
  • [Documentation][doc-link]
  • Compatible with: autodiff, boost::numeric::odeint, Ceres, ROS
  • Written in an extensible functional programming style

In robotics it is often convenient to work in non-Euclidean manifolds. Lie groups are a class of manifolds that are easy to work with due to their symmetries, and that are also good models for many robotic systems. This header-only C++20 library facilitates leveraging Lie theory in robotics software, by enabling:

  • Algebraic manipulation
  • Automatic differentiation
  • Interpolation (right figure shows a B-spline of order 5 on smooth::SO3, see examples/bspline.cpp)
  • Numerical integration (left figure shows the solution of an ODE on , see examples/odeint.cpp)
  • Optimization

The following common Lie groups are implemented:

  • smooth::SO2: two-dimensional rotations with complex number memory representation
  • smooth::SO3: three-dimensional rotations with quaternion memory representation
  • smooth::SE2: two-dimensional rigid motions
  • smooth::SE3: three-dimensional rigid motions
  • smooth::C1: complex numbers (excluding zero) under multiplication
  • smooth::Galilei: the Galilean group. It includes SE_2(3) as a special case.
  • smooth::SE_K_3: generalization of SE3 with multiple translations
  • A smooth::Bundle type to treat Lie group products as a single Lie group. The Bundle type also supports regular Eigen vectors as components
  • Lie group interfaces for Eigen vectors and builtin scalars

Getting started

Download and Build

Clone the repository and install it

git clone https://github.com/pettni/smooth.git
cd smooth
mkdir build && cd build

# Specify a C++20-compatible compiler if your default does not support C++20.
# Build tests and/or examples as desired.
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF
make -j8
sudo make install

Alternatively, if using ROS or ROS2 just clone smooth into a catkin/colcon workspace source folder and build the workspace with a compiler that supports C++20. Example with colcon:

colcon build --cmake-args -DCMAKE_CXX_COMPILER=/usr/bin/g++-10

Use with cmake

To utilize smooth in your own project, include something along these lines in your CMakeLists.txt

find_package(smooth)

add_executable(my_executable main.cpp)
target_link_libraries(my_executable smooth::smooth)

Explore the API

Check out the [Documentation][doc-link] and the examples.

Using the library

Algebraic Manipulations

```cpp // Also works with other types: SO2d, SE2d, SE3d, Bundle<SO3d, T3d> etc…

using Tangent = typename smooth::SO3d::Tangent;

// construct a random group element and a random tangent element smooth::SO3d g = smooth::SO3d::Random(); Tangent a = Tangent::Random();

// lie group exponential auto exp_a = smooth::SO3d::exp(a);

// lie group logarithm auto g_log = g.log();

// lie algebra hat and vee maps auto a_hat = smooth::SO3d::hat(a); auto a_hat_vee = smooth::SO3d::vee(a_hat);

// group adjoint

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Name
cmake
eigen

Dependant Packages

Name Deps
smooth_feedback

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged smooth at Robotics Stack Exchange

No version for distro iron showing github. Known supported distros are highlighted in the buttons above.
Package symbol

smooth package from smooth repo

smooth

ROS Distro
github

Package Summary

Tags No category tags.
Version 0.0.1
License MIT
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description Lie theory for robotics
Checkout URI https://github.com/pettni/smooth.git
VCS Type git
VCS Version master
Last Updated 2024-10-18
Dev Status UNKNOWN
Released UNRELEASED
Tags cpp robotics eigen header-only lie-groups cpp20 lie-algebra
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Lie theory for robotics

Additional Links

No additional links.

Maintainers

  • Petter Nilsson

Authors

  • Petter Nilsson

Lie Theory for Robotics

[![CI Build and Test][ci-shield]][ci-link] [![Code coverage][cov-shield]][cov-link] [![License][license-shield]][license-link]

  • Requirements: C++20, Eigen 3.4
  • [Documentation][doc-link]
  • Compatible with: autodiff, boost::numeric::odeint, Ceres, ROS
  • Written in an extensible functional programming style

In robotics it is often convenient to work in non-Euclidean manifolds. Lie groups are a class of manifolds that are easy to work with due to their symmetries, and that are also good models for many robotic systems. This header-only C++20 library facilitates leveraging Lie theory in robotics software, by enabling:

  • Algebraic manipulation
  • Automatic differentiation
  • Interpolation (right figure shows a B-spline of order 5 on smooth::SO3, see examples/bspline.cpp)
  • Numerical integration (left figure shows the solution of an ODE on , see examples/odeint.cpp)
  • Optimization

The following common Lie groups are implemented:

  • smooth::SO2: two-dimensional rotations with complex number memory representation
  • smooth::SO3: three-dimensional rotations with quaternion memory representation
  • smooth::SE2: two-dimensional rigid motions
  • smooth::SE3: three-dimensional rigid motions
  • smooth::C1: complex numbers (excluding zero) under multiplication
  • smooth::Galilei: the Galilean group. It includes SE_2(3) as a special case.
  • smooth::SE_K_3: generalization of SE3 with multiple translations
  • A smooth::Bundle type to treat Lie group products as a single Lie group. The Bundle type also supports regular Eigen vectors as components
  • Lie group interfaces for Eigen vectors and builtin scalars

Getting started

Download and Build

Clone the repository and install it

git clone https://github.com/pettni/smooth.git
cd smooth
mkdir build && cd build

# Specify a C++20-compatible compiler if your default does not support C++20.
# Build tests and/or examples as desired.
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF
make -j8
sudo make install

Alternatively, if using ROS or ROS2 just clone smooth into a catkin/colcon workspace source folder and build the workspace with a compiler that supports C++20. Example with colcon:

colcon build --cmake-args -DCMAKE_CXX_COMPILER=/usr/bin/g++-10

Use with cmake

To utilize smooth in your own project, include something along these lines in your CMakeLists.txt

find_package(smooth)

add_executable(my_executable main.cpp)
target_link_libraries(my_executable smooth::smooth)

Explore the API

Check out the [Documentation][doc-link] and the examples.

Using the library

Algebraic Manipulations

```cpp // Also works with other types: SO2d, SE2d, SE3d, Bundle<SO3d, T3d> etc…

using Tangent = typename smooth::SO3d::Tangent;

// construct a random group element and a random tangent element smooth::SO3d g = smooth::SO3d::Random(); Tangent a = Tangent::Random();

// lie group exponential auto exp_a = smooth::SO3d::exp(a);

// lie group logarithm auto g_log = g.log();

// lie algebra hat and vee maps auto a_hat = smooth::SO3d::hat(a); auto a_hat_vee = smooth::SO3d::vee(a_hat);

// group adjoint

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Name
cmake
eigen

Dependant Packages

Name Deps
smooth_feedback

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged smooth at Robotics Stack Exchange

No version for distro melodic showing github. Known supported distros are highlighted in the buttons above.
Package symbol

smooth package from smooth repo

smooth

ROS Distro
github

Package Summary

Tags No category tags.
Version 0.0.1
License MIT
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description Lie theory for robotics
Checkout URI https://github.com/pettni/smooth.git
VCS Type git
VCS Version master
Last Updated 2024-10-18
Dev Status UNKNOWN
Released UNRELEASED
Tags cpp robotics eigen header-only lie-groups cpp20 lie-algebra
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Lie theory for robotics

Additional Links

No additional links.

Maintainers

  • Petter Nilsson

Authors

  • Petter Nilsson

Lie Theory for Robotics

[![CI Build and Test][ci-shield]][ci-link] [![Code coverage][cov-shield]][cov-link] [![License][license-shield]][license-link]

  • Requirements: C++20, Eigen 3.4
  • [Documentation][doc-link]
  • Compatible with: autodiff, boost::numeric::odeint, Ceres, ROS
  • Written in an extensible functional programming style

In robotics it is often convenient to work in non-Euclidean manifolds. Lie groups are a class of manifolds that are easy to work with due to their symmetries, and that are also good models for many robotic systems. This header-only C++20 library facilitates leveraging Lie theory in robotics software, by enabling:

  • Algebraic manipulation
  • Automatic differentiation
  • Interpolation (right figure shows a B-spline of order 5 on smooth::SO3, see examples/bspline.cpp)
  • Numerical integration (left figure shows the solution of an ODE on , see examples/odeint.cpp)
  • Optimization

The following common Lie groups are implemented:

  • smooth::SO2: two-dimensional rotations with complex number memory representation
  • smooth::SO3: three-dimensional rotations with quaternion memory representation
  • smooth::SE2: two-dimensional rigid motions
  • smooth::SE3: three-dimensional rigid motions
  • smooth::C1: complex numbers (excluding zero) under multiplication
  • smooth::Galilei: the Galilean group. It includes SE_2(3) as a special case.
  • smooth::SE_K_3: generalization of SE3 with multiple translations
  • A smooth::Bundle type to treat Lie group products as a single Lie group. The Bundle type also supports regular Eigen vectors as components
  • Lie group interfaces for Eigen vectors and builtin scalars

Getting started

Download and Build

Clone the repository and install it

git clone https://github.com/pettni/smooth.git
cd smooth
mkdir build && cd build

# Specify a C++20-compatible compiler if your default does not support C++20.
# Build tests and/or examples as desired.
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF
make -j8
sudo make install

Alternatively, if using ROS or ROS2 just clone smooth into a catkin/colcon workspace source folder and build the workspace with a compiler that supports C++20. Example with colcon:

colcon build --cmake-args -DCMAKE_CXX_COMPILER=/usr/bin/g++-10

Use with cmake

To utilize smooth in your own project, include something along these lines in your CMakeLists.txt

find_package(smooth)

add_executable(my_executable main.cpp)
target_link_libraries(my_executable smooth::smooth)

Explore the API

Check out the [Documentation][doc-link] and the examples.

Using the library

Algebraic Manipulations

```cpp // Also works with other types: SO2d, SE2d, SE3d, Bundle<SO3d, T3d> etc…

using Tangent = typename smooth::SO3d::Tangent;

// construct a random group element and a random tangent element smooth::SO3d g = smooth::SO3d::Random(); Tangent a = Tangent::Random();

// lie group exponential auto exp_a = smooth::SO3d::exp(a);

// lie group logarithm auto g_log = g.log();

// lie algebra hat and vee maps auto a_hat = smooth::SO3d::hat(a); auto a_hat_vee = smooth::SO3d::vee(a_hat);

// group adjoint

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Name
cmake
eigen

Dependant Packages

Name Deps
smooth_feedback

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged smooth at Robotics Stack Exchange

No version for distro noetic showing github. Known supported distros are highlighted in the buttons above.
Package symbol

smooth package from smooth repo

smooth

ROS Distro
github

Package Summary

Tags No category tags.
Version 0.0.1
License MIT
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description Lie theory for robotics
Checkout URI https://github.com/pettni/smooth.git
VCS Type git
VCS Version master
Last Updated 2024-10-18
Dev Status UNKNOWN
Released UNRELEASED
Tags cpp robotics eigen header-only lie-groups cpp20 lie-algebra
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Lie theory for robotics

Additional Links

No additional links.

Maintainers

  • Petter Nilsson

Authors

  • Petter Nilsson

Lie Theory for Robotics

[![CI Build and Test][ci-shield]][ci-link] [![Code coverage][cov-shield]][cov-link] [![License][license-shield]][license-link]

  • Requirements: C++20, Eigen 3.4
  • [Documentation][doc-link]
  • Compatible with: autodiff, boost::numeric::odeint, Ceres, ROS
  • Written in an extensible functional programming style

In robotics it is often convenient to work in non-Euclidean manifolds. Lie groups are a class of manifolds that are easy to work with due to their symmetries, and that are also good models for many robotic systems. This header-only C++20 library facilitates leveraging Lie theory in robotics software, by enabling:

  • Algebraic manipulation
  • Automatic differentiation
  • Interpolation (right figure shows a B-spline of order 5 on smooth::SO3, see examples/bspline.cpp)
  • Numerical integration (left figure shows the solution of an ODE on , see examples/odeint.cpp)
  • Optimization

The following common Lie groups are implemented:

  • smooth::SO2: two-dimensional rotations with complex number memory representation
  • smooth::SO3: three-dimensional rotations with quaternion memory representation
  • smooth::SE2: two-dimensional rigid motions
  • smooth::SE3: three-dimensional rigid motions
  • smooth::C1: complex numbers (excluding zero) under multiplication
  • smooth::Galilei: the Galilean group. It includes SE_2(3) as a special case.
  • smooth::SE_K_3: generalization of SE3 with multiple translations
  • A smooth::Bundle type to treat Lie group products as a single Lie group. The Bundle type also supports regular Eigen vectors as components
  • Lie group interfaces for Eigen vectors and builtin scalars

Getting started

Download and Build

Clone the repository and install it

git clone https://github.com/pettni/smooth.git
cd smooth
mkdir build && cd build

# Specify a C++20-compatible compiler if your default does not support C++20.
# Build tests and/or examples as desired.
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF
make -j8
sudo make install

Alternatively, if using ROS or ROS2 just clone smooth into a catkin/colcon workspace source folder and build the workspace with a compiler that supports C++20. Example with colcon:

colcon build --cmake-args -DCMAKE_CXX_COMPILER=/usr/bin/g++-10

Use with cmake

To utilize smooth in your own project, include something along these lines in your CMakeLists.txt

find_package(smooth)

add_executable(my_executable main.cpp)
target_link_libraries(my_executable smooth::smooth)

Explore the API

Check out the [Documentation][doc-link] and the examples.

Using the library

Algebraic Manipulations

```cpp // Also works with other types: SO2d, SE2d, SE3d, Bundle<SO3d, T3d> etc…

using Tangent = typename smooth::SO3d::Tangent;

// construct a random group element and a random tangent element smooth::SO3d g = smooth::SO3d::Random(); Tangent a = Tangent::Random();

// lie group exponential auto exp_a = smooth::SO3d::exp(a);

// lie group logarithm auto g_log = g.log();

// lie algebra hat and vee maps auto a_hat = smooth::SO3d::hat(a); auto a_hat_vee = smooth::SO3d::vee(a_hat);

// group adjoint

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Name
cmake
eigen

Dependant Packages

Name Deps
smooth_feedback

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged smooth at Robotics Stack Exchange