QuadricSLAM: SLAM systems with quadric landmarks
Project description
QuadricSLAM
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
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:
- simple "hello_world" examples with dummy data
- running on the TUM RGB-D dataset, as done in our paper TODO
- plug-n-play on a Intel RealSense D435i with Python TODO
- plug-n-play on a Intel RealSense D435i in a ROS ecosystem TODO
- using data from photorealistic 3D simulation through an add-on for the BenchBot ecosystem TODO
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
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
Built Distribution
Hashes for quadricslam-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d8635100ba64f00c4be407859c8455b0d125c65c9caa8e9f91254c1fc7f52f5 |
|
MD5 | da704c22fe5f6854aff7069c38057084 |
|
BLAKE2b-256 | 04eeb1a117bf6424b43e01086bdaed3f8c59ed268e9be8dfbd9545651ba75266 |