GithubHelp home page GithubHelp logo

oygx210 / lgmath Goto Github PK

View Code? Open in Web Editor NEW

This project forked from utiasasrl/lgmath

0.0 0.0 0.0 3.27 MB

Lie group math library.

License: BSD 3-Clause "New" or "Revised" License

CMake 3.24% C++ 96.76%

lgmath's Introduction

lgmath

lgmath is a C++ library for handling geometry in state estimation problems in robotics. It is used to store, manipulate, and apply three-dimensional rotations and transformations and their associated uncertainties.

There are no minimal, constraint-free, singularity-free representations for these quantities, so lgmath exploits two different representations for the nominal and noisy parts of the uncertain random variable.

  • Nominal rotations and transformations are represented using their composable, singularity-free matrix Lie groups, SO(3) and SE(3).
  • Their uncertainties are represented as multiplicative perturbations on the minimal, constraint-free vectorspaces of their Lie algebras, so*(3)* and se*(3)*.

This library uses concepts and mathematics described in Timothy D. Barfoot's upcoming book State Estimation for Robotics. It is used for robotics research at the Autonomous Space Robotics Lab; most notably in the STEAM Engine, a library for Simultaneous Trajectory Estimation and Mapping.

Getting Started

You will need:

  • A compiler with C++11 support
  • Eigen, at least 3.2.5
  • CMake (and optionally catkin) build systems

Dependencies

Eigen

In a folder for 3rd party dependencies,

wget http://bitbucket.org/eigen/eigen/get/3.2.5.tar.gz
tar zxvf 3.2.5.tar.gz
cd eigen-eigen-bdd17ee3b1b3/
mkdir build && cd build
cmake ..
sudo make install

Build

In your development folder

mkdir lgmath-ws && cd $_
git clone --recursive https://github.com/utiasASRL/lgmath.git

Using catkin and catkin tools (recommended)

cd deps/catkin && catkin build
cd ../.. && catkin build

Using CMake (manual)

cd .. && mkdir -p build/catkin_optional && cd $_
cmake ../../lgmath/deps/catkin/catkin_optional && make
cd ../.. && mkdir -p build/catch && cd $_
cmake ../../lgmath/deps/catkin/catch && make cd ../.. && mkdir -p build/lgmath && cd $_
cmake ../../lgmath && make -j4

Install (optional)

Since the catkin build produces a catkin workspace you can overlay, and the CMake build exports packageConfig.cmake files, it is unnecessary to install lgmath except in production environments. If you are really sure you need to install, you can use the following procedure.

Using catkin tools (recommended)

cd lgmath 
catkin profile add --copy-active install 
catkin profile set install 
catkin config --install 
catkin build

Using CMake (manual)

cd build/lgmath 
sudo make install

Uninstall (Optional)

If you have installed, and would like to uninstall,

Using catkin tools (recommended)

cd lgmath && catkin clean -i

Using CMake (manual)

cd build/lgmath && sudo make uninstall

Generating Documentation

Using catkin tool (recommended) In your catkin workspace

catkin build --make-arg doc

Using CMake (manual) In your build folder

make doc

The documentation will be found in the doc subdirectory of the build folder.

lgmath's People

Contributors

sanderson77 avatar kmactavish avatar kaivanes avatar kat-cujic avatar mikew99 avatar timbarfoot avatar pomerlef avatar pberczi avatar mpaton avatar aeropat avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.