GithubHelp home page GithubHelp logo

utiasasrl / steam Goto Github PK

View Code? Open in Web Editor NEW
91.0 26.0 14.0 2.72 MB

The Simultaneous Trajectory Estimation and Mapping (STEAM) Engine.

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

CMake 0.90% C++ 99.08% Dockerfile 0.03%
cpp robotics state-estimation

steam's Introduction

steam

NOTE: this branch is kept identical to the master branch, except that USE_AMENT is set to ON.

STEAM (Simultaneous Trajectory Estimation and Mapping) Engine is an optimization library aimed at solving batch nonlinear optimization problems involving both SO(3)/SE(3) and continuous-time components. This is accomplished by using an iterative Gauss-Newton-style estimator in combination with techniques developed and used by ASRL. With respect to SO(3) and SE(3) components, we make use of the constraint sensitive perturbation schemes discussed in Barfoot and Furgale [1]. STEAM Engine is by no means intended to be the fastest car on the track; the intent is simply to be fast enough for the types of problems we wish to solve, while being both readable and easy to use by people with a basic background in robotic state estimation.

[1] Barfoot, T. D. and Furgale, P. T., โ€œAssociating Uncertainty with Three-Dimensional Poses for use in Estimation Problems,โ€ IEEE Transactions on Robotics, 2014.

Installation

Dependencies

  • Compiler with C++17 support and OpenMP
  • CMake (>=3.16)
  • Eigen (>=3.3.7)
  • lgmath (>=1.1.0)
  • (Optional) ROS2 Foxy or later (colcon+ament_cmake)

Install c++ compiler, cmake and OpenMP

sudo apt -q -y install build-essential cmake libomp-dev

Install Eigen (>=3.3.7)

# using APT
sudo apt -q -y install libeigen3-dev

# OR from source
WORKSPACE=~/workspace  # choose your own workspace directory
mkdir -p ${WORKSPACE}/eigen && cd $_
git clone https://gitlab.com/libeigen/eigen.git . && git checkout 3.3.7
mkdir build && cd $_
cmake .. && make install # default install location is /usr/local/
  • Note: if installed from source to a custom location then make sure cmake can find it.

Install lgmath

Follow the instructions here.

Build and install steam using cmake

WORKSPACE=~/workspace  # choose your own workspace directory
# clone
mkdir -p ${WORKSPACE}/steam && cd $_
git clone https://github.com/utiasASRL/steam.git .
# build and install
mkdir -p build && cd $_
cmake ..
cmake --build .
cmake --install . # (optional) install, default location is /usr/local/

Preprocessor macros

  • STEAM_DEFAULT_NUM_OPENMP_THREADS=<num. threads>: Default to 4. Define number of threads to be used by OpenMP in STEAM.
  • STEAM_USE_OBJECT_POOL: Default to undefined. If defined then STEAM will use an object pool to improve performance but is no longer thread safe.

Note: steamConfig.cmake will be generated in both build/ and <install prefix>/lib/cmake/steam/ to be included in other projects.

Build examples

samples/CMakeLists.txt shows an example of how to add steam to your projects.

To build and run these samples:

cd ${WORKSPACE}/steam  ## $WORKSPACE defined above
mkdir -p build_samples && cd $_
cmake ../samples
cmake --build .  # Executables will be generated in build_samples

Build and install steam using ROS2(colcon+ament_cmake)

WORKSPACE=~/workspace  # choose your own workspace directory

mkdir -p ${WORKSPACE}/steam && cd $_
git clone https://github.com/utiasASRL/steam.git .

source <your ROS2 worspace that includes steam>
colcon build --symlink-install --cmake-args "-DUSE_AMENT=ON"

Same preprocessor macro mentioned above also apply.

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.