Skip to content

Navy-RISE-Lab/ground-texture-slam

Repository files navigation

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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published