Skip to main content

QuadricSLAM: SLAM systems with quadric landmarks

Project description

QuadricSLAM

QUT Centre for Robotics Open Source Primary language PyPI package License

QuadricSLAM is a system for using quadrics to represent objects in a scene, leveraging common optimisation tools for simultaneous localisation and mapping (SLAM) problems to converge on stable object maps and camera trajectories. This library uses Georgia Tech's Smoothing and Mapping (GTSAM) library for factor graph optimisation, and adds support through our custom GTSAM quadrics extension.

TODO update with a more holistic reflection of the repository in its current state @youtube QuadricSLAM demonstration for RA-L

The key features of this repository are:

  • modular abstractions that allow building QuadricSLAM solutions with custom tools:
    q = QuadricSLAM(data_source=MyDataSource(), detector=MyDetector(), associator=MyDataAssociator())
    q.spin()
    
  • basic Matplotlib visualisation routines
  • a rich set of plug-n-play examples of the QuadricSLAM system:

We expect this repository to be active and continually improved upon. If you have any feature requests or experience any bugs, don't hesitate to let us know. Our code is free to use, and licensed under BSD-3. We simply ask that you cite our work if you use QuadricSLAM in your own research.

Installation and using the library

Pre-build wheels of this library are available on PyPI for most Linux systems, as well as source distributions. Install the library with:

pip install quadricslam

From here basic custom QuadricSLAM systems can be setup by implementing and integrating the following abstract classes:

from quadricslam import DataSource, Detector, Associator, visualise

class MyDataSource(DataSource):
  ...

class MyDetector(Detector):
  ...

class MyAssociator(Associator):
  ...

q = QuadricSlam(data_source=MyDataSource(),
                detector=MyDetector(),
                associator=MyAssociator(),
                on_new_estimate=lambda vals, labels, done: visualise(vals, labels, done)))
                )
q.spin()

The examples described below also provide code showing how to create customisations for a range of different scenarios.

Running the examples from this repository

TODO when the examples are actually done

hello_manual_quadricslam and hello_quadricslam

TODO

tum_rgbd_dataset

TODO

TUM RGBD QuadricSLAM still 1 TUM RGBD QuadricSLAM still 2

TODO RealSense and BenchBot examples

Citing our work

If you are using this library in academic work, please cite the publication:

L. Nicholson, M. Milford and N. Sünderhauf, "QuadricSLAM: Dual Quadrics From Object Detections as Landmarks in Object-Oriented SLAM," in IEEE Robotics and Automation Letters, vol. 4, no. 1, pp. 1-8, Jan. 2019, doi: 10.1109/LRA.2018.2866205. PDF.

@article{nicholson2019,
  title={QuadricSLAM: Dual Quadrics From Object Detections as Landmarks in Object-Oriented SLAM},
  author={Nicholson, Lachlan and Milford, Michael and Sünderhauf, Niko},
  journal={IEEE Robotics and Automation Letters},
  year={2019},
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quadricslam-0.1.1.tar.gz (12.2 kB view hashes)

Uploaded Source

Built Distribution

quadricslam-0.1.1-py3-none-any.whl (12.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page