/ROBIN

Primary LanguageC++OtherNOASSERTION

ROBIN

ROBIN is a library for outlier rejection based on compatibility graphs.

If you find this library helpful or use it in your projects, please cite:

@InProceedings{Shi21icra-robin,
	title={{ROBIN:} a Graph-Theoretic Approach to Reject Outliers in Robust Estimation using Invariants},
	author={J. Shi and H. Yang and L. Carlone},
	booktitle={IEEE Intl. Conf. on Robotics and Automation (ICRA)},
	note = {arXiv preprint: 2011.03659},
	pdf={https://arxiv.org/pdf/2011.03659.pdf},
	year={2021}
}

and

@article{Shi22arxiv-PACE,
  author = {J. Shi and H. Yang and L. Carlone},
  title = {Optimal and Robust Category-level Perception: Object Pose and Shape Estimation from {2D and 3D} Semantic Keypoints},
  journal = {arXiv preprint: 2206.12498},
  pdf = {https://arxiv.org/pdf/2206.12498.pdf},
  Year = {2022}
}

If you are interested in more works from us, please visit our lab page here.

Build and Install

ROBIN has the following dependencies:

  1. OpenMP
  2. Eigen3

Run the following to build the library using CMake (inside the repo root directory):

mkdir build && cd build
cmake .. && make
sudo make install

The following CMake options are provided:

BUILD_DOCS: Build documentation. Default: OFF
BUILD_TESTS: Enable testing with ctest. Default: ON
BUILD_PYTHON_BINDINGS: Build python bindings. Default: ON
BUILD_MATLAB_BINDINGS: Build MATLAB bindings. Default: OFF
USE_ASAN: Enable address sanitizer. Default: OFF
ENABLE_DIAGNOSTIC_PRINT: Enable printing of diagnostic messages. Default: OFF

To install Python bindings, after building the library (with BUILD_PYTHON_BINDINGS=ON), run:

cd build/python && pip install .

Third-party Data

Some of the testing data are from the Network Repository. For more information, please refer to:

Rossi, Ryan, and Nesreen Ahmed. "The network data repository with interactive graph analytics and visualization." Twenty-Ninth AAAI Conference on Artificial Intelligence. 2015.

Third-party Code

Known Issues

For errors in MATLAB with missing CXXABI:

export LD_PRELOAD=/usr/lib/gcc/x86_64-linux-gnu/7/libstdc++.so

FAQ

  • How to fix errors like "ModuleNotFoundError: No module named 'robin_py.robin_py'"? This might be caused by a mismatch between the Python interpreter versions the binding is built for and the interpreter that the binding is installed on. Make sure to activate the correct virtual environment when calling cmake ..