Giter VIP home page Giter VIP logo

ground-texture-slam's Introduction

Ground Texture SLAM

A SLAM system that only uses the ground beneath the robot. For more details about how it works, see the paper "Monocular Simultaneous Localization and Mapping using Ground Textures"

Distribution Statement

Distribution Statement A - Approved for public release; distribution is unlimited, as submitted under NAVAIR Public Release Authorization 2022-0586.

Paper

The preprint of this paper can be found at: https://arxiv.org/abs/2303.05946

The published version is at: TBD

Citing this Work

This code is part of a paper to appear in IEEE's International Conference on Robotics and Automation (ICRA) in London, UK in May 2023. Please use the following citation information if you use this work:

@inproceedings{Monocular_SLAM_Hart,
address = {London, UK},
author={Kyle M. Hart and Brendan Englot and Ryan P. O'Shea and John D. Kelly and David Martinez},
title = {Monocular Simultaneous Localization and Mapping using Ground Textures},
booktitle = {Proceedings of the IEEE International Conference on Robotics and Automation},
month = {May},
year = {2023}
}

Installation

This system is targeted towards the following OS distributions and dependency versions. Others are likely possible as well, but these are the ones that have automated unit tests.

Ubuntu

  • 20.04
  • 22.04

GTSAM

  • 4.0.3
  • 4.1.0
  • 4.1.1

OpenCV

  • 4.X where X is not 4 (4.4.X is likely to work, but because of an issue with Eigen and some Tensor library, my automated tests can't test it)

There are two ways to use this library: from a Docker image or build from source manually.

Docker

There is a Docker file that you can build that will provide everything. From the project workspace, just run:

docker build --build-arg GTSAM_VERSION=4.1.1 --build-arg OPENCV_VERSION=4.2.0 --build-arg OS=ubuntu:20.04 --target deploy --tag ground_texture_slam:deploy -f .\.devcontainer\Dockerfile .

Again, you can customize the arguments if you wish, but this is untested. This library installs the C++ and Python libraries in the relevant directories so they are available system wide.

From Source

If you want to build this library manually, make sure GTSAM and OpenCV are both installed. They can be installed from source or via apt-get. Then, from the root of this project, run:

cmake -S . -B build
cmake --build build
cmake --build build --target install

The last command installs both libraries so they are available system wide. You will need sudo rights for this last command.

How to Use

For an example use, see the files src/simple_example.cpp and src/simple_example.py. These illustrate basic usage. Note that the estimated poses will not necessarily be correct, as there are a lot of random values generated. They are only to illustrate the API.

Real data can be obtained from https://github.com/JanFabianSchmid/HD_Ground. This is the same data used in the paper. Once loaded from file, it can be passed in to the SLAM system and results compared to ground truth. Note that the poses in the original data source are in image coordinates and must be converted to real world coordinates.

Full Documentation

Full documentation can be generated by running this command from the project root:

doxygen Doxyfile

Then, open docs/html/index.html in the browser to view the documentation.

ground-texture-slam's People

Contributors

navy-rise-lab 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.