Package: quadricslam
QuadricSLAMQuadricSLAM is a system for usingquadricsto 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 usesGeorgia Tech's Smoothing and Mapping (GTSAM)library for factor graph optimisation, and adds support through our customGTSAM quadricsextension.TODO update with a more holistic reflection of the repository in its current stateThe 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 routinesa rich set of plug-n-play examples of the QuadricSLAM system:simple "hello_world" examples with dummy datarunning on theTUM RGB-D dataset, as done inour paperTODOplug-n-play on aIntel RealSense D435iwith Python TODOplug-n-play on aIntel RealSense D435iin a ROS ecosystem TODOusing data from photorealistic 3D simulation through anadd-onfor theBenchBot ecosystemTODOWe 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 youcite our workif you use QuadricSLAM in your own research.Installation and using the libraryPre-build wheels of this library areavailable on PyPIfor most Linux systems, as well as source distributions. Install the library with:pip install quadricslamFrom here basic custom QuadricSLAM systems can be setup by implementing and integrating the following abstract classes:fromquadricslamimportDataSource,Detector,Associator,visualiseclassMyDataSource(DataSource):...classMyDetector(Detector):...classMyAssociator(Associator):...q=QuadricSlam(data_source=MyDataSource(),detector=MyDetector(),associator=MyAssociator(),on_new_estimate=lambdavals,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 repositoryNote: in the spirit of keeping this package light, some dependencies may not be installed; please install those manuallyThis repository contains a number of examples to demonstrate how QuadricSLAM systems can be set up in different contexts.Each example is a file in thequadricslam_examplesmodule, with a standalonerun()function. There are two possible ways to run each example:Directly through the command line:python -m quadricslam_examples.EXAMPLE_NAME ARGS ...e.g for thehello_quadricslamexamples:python -m quadricslam_examples.hello_quadricslamOr from within Python:fromquadricslam_examples.EXAMPLE_NAMEimportrunrun()hello_manual_quadricslamShows how to create a QuadricSLAM system from scratch using the primitives exposed by ourGTSAM Quadrics library. The scenario is 4 viewpoints in a square around 2 quadrics in the middle of the square:hello_quadricslamSame scenario as thehello_manual_quadricslamexample, but uses the abstractions provided by this library. Shows how an entire QuadricSLAM system can be created with only a few lines of code when the appropriate components are available:tum_rgbd_datasetRe-creation of the TUM RGBD dataset experiments used in ourinitial publication. There is a script included for downloading the dataset.Note: the paper used hand-annotated data to avoid the data association problem; as a result the example here requires a custom data associator to be created before it will runrealsense_pythonDemonstrates how a system can be run using an RGBD RealSense, thepyrealsense2library, and a barebones OpenCV visual odometry algorithm.The example is a simple plug-n-play system, with weak localisation and data association:realsense_rosDemonstrates how a ROS QuadricSLAM system can be put together with an RGBD RealSense, theROS RealSenselibrary, andKimera VIO's visual odometry system.This example includes a script for creating an entire ROS workspace containing all the required packages built from source. Once installed, it runs the same as therealsense_pythonexample but with significantly better localisation:Citing our workIf you are using this library in academic work, please cite thepublication: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},}