{"id":13528526,"url":"https://github.com/fabianschenk/RESLAM","last_synced_at":"2025-04-01T13:33:01.428Z","repository":{"id":201255373,"uuid":"172708548","full_name":"fabianschenk/RESLAM","owner":"fabianschenk","description":"RESLAM: A real-time robust edge-based SLAM system","archived":false,"fork":false,"pushed_at":"2019-12-04T10:59:23.000Z","size":242,"stargazers_count":325,"open_issues_count":6,"forks_count":90,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-11-02T14:35:44.597Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fabianschenk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-02-26T12:36:11.000Z","updated_at":"2024-08-21T14:19:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"f610ec79-60de-4151-9201-7ce7182bff84","html_url":"https://github.com/fabianschenk/RESLAM","commit_stats":null,"previous_names":["fabianschenk/reslam"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianschenk%2FRESLAM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianschenk%2FRESLAM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianschenk%2FRESLAM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianschenk%2FRESLAM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fabianschenk","download_url":"https://codeload.github.com/fabianschenk/RESLAM/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246647780,"owners_count":20811385,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T07:00:20.661Z","updated_at":"2025-04-01T13:33:01.058Z","avatar_url":"https://github.com/fabianschenk.png","language":"C++","funding_links":[],"categories":["2. Visual SLAM"],"sub_categories":["2.4 RGBD"],"readme":"# RESLAM: A real-time robust edge-based SLAM system\n\n**Please note that RESLAM is a research project and its code is released without any warranty. RESLAM will most likely not be developed any further**\n\nIn this work, we present **RESLAM**, a robust edge-based SLAM system for RGBD sensors. Edges are more stable under varying lighting conditions than raw intensity values, which leads to higher accuracy and robustness in scenes, where feature- or photoconsistency-based approaches often fail. The results show that our method performs best in terms of trajectory accuracy for most of the sequences indicating that edges are suitable for a multitude of scenes.\n\n## If you use this work, please cite any of the following publications:\n* **RESLAM: A real-time robust edge-based SLAM system**, Schenk Fabian, Fraundorfer Friedrich, ICRA 2019, [pdf](https://github.com/fabianschenk/fabianschenk.github.io/raw/master/files/schenk_icra_2019.pdf)\n* **Combining Edge Images and Depth Maps for Robust Visual Odometry**, Schenk Fabian, Fraundorfer Friedrich, BMVC 2017, [pdf](https://github.com/fabianschenk/fabianschenk.github.io/raw/master/files/schenk_bmvc_2018.pdf),[video](https://youtu.be/uj3rRyqSEnQ)\n* **Robust Edge-based Visual Odometry using Machine-Learned Edges**, Schenk Fabian, Fraundorfer Friedrich, IROS 2017, [pdf](https://github.com/fabianschenk/fabianschenk.github.io/raw/master/files/schenk_iros_2017.pdf), [video](https://youtu.be/PUTV9vsdpbA)\n\n## License\nRESLAM is licensed under the [GNU General Public License Version 3 (GPLv3)](http://www.gnu.org/licenses/gpl.html).\n\nIf you want to use this software commercially, please contact us.\n\n## Building the framework\nSo far, the framework has only been built and tested on the following system.\n### Requirements\n* [Ubuntu 16.04, 15.10, 17.04](https://www.ubuntu.com/)\n* [OpenCV \u003e 3](http://opencv.org/)\n* [Eigen \u003e 3.3](http://eigen.tuxfamily.org/index.php?title=Main_Page)\n* [Ceres \u003e= 1.13](http://ceres-solver.org/installation.html)\n\n\n[Sophus](https://github.com/strasdat/Sophus) is now part of this repository (in thirdparty/Sophus).\n\nBuilding on Windows and backwards compatibility might be added in the future.\n\n### Optional\nSet the optional packages in the cmake-gui\n* [Pangolin](https://github.com/stevenlovegrove/Pangolin)  (for graphical viewer)\n\n\n### Build commands\n```bash\ngit clone https://github.com/fabianschenk/RESLAM\ncd RESLAM\nmkdir build\ncd build\ncmake . ..\nmake -j\n```\n\n### Known Issues\n#### Segmentation Fault with Ceres/Eigen [#2](https://github.com/fabianschenk/RESLAM/issues/2), and [#3](https://github.com/fabianschenk/RESLAM/issues/3).\nSome people report a problem with Ceres/Eigen.\nPlease, have a look at [#2](https://github.com/fabianschenk/RESLAM/issues/2), and [#3](https://github.com/fabianschenk/RESLAM/issues/3).\nMake sure that you have the latest (stable) [Eigen version 3.3.X](http://eigen.tuxfamily.org/index.php?title=Main_Page) and that it matches the one used by Ceres.\n\n#### Segmentation fault after repeated tracking losses [#3](https://github.com/fabianschenk/RESLAM/issues/3)\nIn some sequences, e.g. `freiburg2_large_with_loop`, there are depth maps containing mostly invalid values.\nThe problem is that the Kinect and most other RGBD sensors cannot reconstruct surfaces far away from sensor (around \u003e 6 m) due to the small baseline of the sensor.\nIn such cases, RESLAM does not work and might fail with a segmentation fault after repeated tracking losses. This issue will hopefully be fixed in the future.\n\n\n## How to reproduce the results from the paper\n\n**If you enable multi-threading, results might differ a bit since float additions are not executed in the same order during each run!**\n\n### [TUM dataset](https://vision.in.tum.de/data/datasets/rgbd-dataset)\nDownload the sequence you want to test and specify the \"associate.txt\" file in the dataset_tumX.yaml settings file.\n\nTo generate an \"associate.txt\" file, first download the \"associate.py\" script from [TUM RGBD Tools](https://svncvpr.in.tum.de/cvpr-ros-pkg/trunk/rgbd_benchmark/rgbd_benchmark_tools/src/rgbd_benchmark_tools/) and then run\n```bash\npython associate.py DATASET_XXX/rgb.txt DATASET_XXX/depth.txt \u003e associate.txt\n```\nin the folder, where your dataset is.\n \nIn the \"RESLAM\" directory:\n```bash\nbuild/RESLAM config_files/reslam_settings.yaml config_files/dataset_tum1.yaml\n```\nFor evaluation of the absolute trajectory error (ATE) and relative pose error (RPE) download the corresponding scripts from [TUM RGBD Tools](https://svncvpr.in.tum.de/cvpr-ros-pkg/trunk/rgbd_benchmark/rgbd_benchmark_tools/src/rgbd_benchmark_tools/).\n\n \n## Supported Sensors\n\nSupport for other sensors such as Orbbec Astra Pro and Intel RealSense can be adapted from [REVO](https://github.com/fabianschenk/REVO).\n\n\u003c!--- REVO supports three different sensors at the moment:\n* [Orbbec Astra Pro Sensor](https://orbbec3d.com/product-astra-pro/)\n* [Orbbec Astra Sensor](https://orbbec3d.com/product-astra/)\n* [Intel Realsense ZR300 (other versions are untested!)](https://click.intel.com/intelr-realsensetm-development-kit-featuring-the-zr300.html)\n\nFor the Intel sensor set \"WITH_REALSENSE\", for the Orbbec Astra Pro set \"WITH_ORBBEC_FFMPEG\" (recommended) or \"WITH_ORBBEC_UVC\" (not recommended, requires third party tools) and for the non-pro Orbbec Astra set \"WITH_ORBBEC_OPENNI\"!\n**Note:** Make sure that you set the USB rules in a way that the sensor is accessible for every user (default is root only).\n\nREVO can be compiled for all three sensors only if WITH_REALSENSE, WITH_ORBBEC_FFMPEG and WITH_ORBBEC_OPENNI are set.\nIf WITH_ORRBEC_UVC is set, there is a conflict with the librealsense!\nTo solve this issue, use WITH_ORBBEC_FFMPEG!\n\nThe sensor to be used is determined from the INPUT_TYPE set in the second config file.\nFor Orbbec Astra Pro INPUT_TYPE: 1, for Intel Realsense INPUT_TYPE: 2 and for Orbbec Astra INPUT_TYPE: 3.\n\nExample config files for all three sensors can be found in the config directory!\n### Intel RealSense ZR300\nInstall [librealsense](https://github.com/IntelRealSense/librealsense), set the intrinsic parameters in the config file.\nThis framework was tested with the Intel RealSense ZR300.\n\n### Orbbec Astra Sensor\nThe (non-pro) Orbbec Astra Sensor can be fully accessed by Orbbec's OpenNI driver.\nFirst [download the openni driver](https://orbbec3d.com/develop/#registergestoos) and choose the correct *.zip file that matches your architecture, e.g. OpenNI-Linux_x64-2.3.zip. \nExtract it and copy libOpenNI2.so and the \"Include\" and \"OpenNI2\" folder to REVO_FOLDER/orbbec_astra_pro/drivers. \n\n### Orbbec Astra Pro Sensor\n#### With FFMPEG\nThe standard OpenNI driver can only access the depth stream of the [Orbbec Astra Pro Sensor](https://orbbec3d.com/product-astra-pro/), thus we have to access the color stream via FFMPEG.\nInstall the newest FFMPEG version\n```bash\nsudo apt install ffmpeg\n```\nor download from [FFMPEG Github](https://www.ffmpeg.org/download.html).\n#### With LibUVC (not recommended)\nThe standard OpenNI driver can only access the depth stream of the [Orbbec Astra Pro Sensor](https://orbbec3d.com/product-astra-pro/), thus we have to access the color stream like a common webcam.\n*Note: We use libuvc because the standard webcam interface of [OpenCV](http://opencv.org/) buffers the images and doesn't always return the newest image.*\n\nFirst [download the openni driver](https://orbbec3d.com/develop/#registergestoos) and choose the correct *.zip file that matches your architecture, e.g. OpenNI-Linux_x64-2.3.zip. \nExtract it and copy libOpenNI2.so and the \"Include\" and \"OpenNI2\" folder to REVO_FOLDER/orbbec_astra_pro/drivers. \n\nThen install [Olaf Kaehler's fork of libuvc](https://github.com/olafkaehler/libuvc) by performing the following steps in the main directory.\n```bash\ncd ThirdParty\ngit clone https://github.com/olafkaehler/libuvc\ncd libuvc\nmkdir build\ncd build\ncmake . ..\nmake -j\nmake install\n```\n## Troubleshooting\n### Sophus\nThere was a problem with the old REVO version and a new Sophus version that introduced orthogonality checks for rotation matrices. \nIf you face such an error, simply check out the current version of REVO.\n### Orbbec with LIBUVC and Intel Realsense\nIf WITH_ORRBEC_UVC is set, there is a conflict with the librealsense! To solve this issue, use WITH_ORBBEC_FFMPEG!--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabianschenk%2FRESLAM","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffabianschenk%2FRESLAM","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabianschenk%2FRESLAM/lists"}