{"id":23678949,"url":"https://github.com/kumarrobotics/slide_slam","last_synced_at":"2025-04-04T21:07:25.049Z","repository":{"id":244967555,"uuid":"816859630","full_name":"KumarRobotics/SLIDE_SLAM","owner":"KumarRobotics","description":"SlideSLAM: Sparse, Lightweight, Decentralized Metric-Semantic SLAM for Multi-Robot Navigation","archived":false,"fork":false,"pushed_at":"2025-01-17T22:30:50.000Z","size":9521,"stargazers_count":177,"open_issues_count":0,"forks_count":9,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-04-04T21:07:12.888Z","etag":null,"topics":["heterogeneous-robots","loop-closure","metric-semantic-slam","multi-robot-slam","object-localization","object-mapping","object-slam","place-recognition","real-time-slam","semantic-mapping","slam"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KumarRobotics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-18T14:34:13.000Z","updated_at":"2025-04-04T14:37:24.000Z","dependencies_parsed_at":"2024-12-22T15:10:52.087Z","dependency_job_id":"96b32c32-53be-4527-b917-e55b74119a93","html_url":"https://github.com/KumarRobotics/SLIDE_SLAM","commit_stats":null,"previous_names":["xurobotics/slide-slam","xurobotics/slide_slam","kumarrobotics/slide_slam"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KumarRobotics%2FSLIDE_SLAM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KumarRobotics%2FSLIDE_SLAM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KumarRobotics%2FSLIDE_SLAM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KumarRobotics%2FSLIDE_SLAM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KumarRobotics","download_url":"https://codeload.github.com/KumarRobotics/SLIDE_SLAM/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247249524,"owners_count":20908212,"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":["heterogeneous-robots","loop-closure","metric-semantic-slam","multi-robot-slam","object-localization","object-mapping","object-slam","place-recognition","real-time-slam","semantic-mapping","slam"],"created_at":"2024-12-29T16:18:00.568Z","updated_at":"2025-04-04T21:07:25.031Z","avatar_url":"https://github.com/KumarRobotics.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SlideSLAM\n\nThis repository contains the source code for the project SlideSLAM: Sparse, Lightweight, Decentralized Metric-Semantic SLAM for Multi-Robot Navigation. \n- More details can be found on the [project website](https://xurobotics.github.io/slideslam/).\n- Our paper is available on arXiv [here](https://arxiv.org/abs/2406.17249). \n\n# Table of contents\n- [SlideSLAM](#slideslam)\n- [Table of contents](#table-of-contents)\n- [Use docker (recommended)](#use-docker-recommended)\n- [Build from source (only if you do not want to use docker)](#build-from-source-only-if-you-do-not-want-to-use-docker)\n- [Run our demos (with processed data)](#run-our-demos-with-processed-data)\n  - [Download example data](#download-example-data)\n  - [What these demos will do](#what-these-demos-will-do)\n  - [Run multi-robot demo (based on LiDAR data)](#run-multi-robot-demo-based-on-lidar-data)\n- [Run on raw sensor data (RGBD or LiDAR bags)](#run-on-raw-sensor-data-rgbd-or-lidar-bags)\n  - [Download example data](#download-example-data-1)\n  - [Run our RGBD data experiments](#run-our-rgbd-data-experiments)\n  - [Run our LiDAR Data experiments](#run-our-lidar-data-experiments)\n- [Troubleshoot](#troubleshoot)\n- [Acknowledgement](#acknowledgement)\n- [Citation](#citation)\n\n\n\n\n# Use docker (recommended)\n\n**Install docker**: https://docs.docker.com/desktop/install/linux/ubuntu/#install-docker-desktop\n\n**Pull the docker image**: \n```\ndocker pull xurobotics/slide-slam:latest\n```\n\n**Create the workspace (important)**\n```\nmkdir -p ~/slideslam_docker_ws/src\ncd ~/slideslam_docker_ws/src\n```\n_Creating the workspace outside the docker helps you keep your files and changes within the workspace even if you delete the un-committed docker container._\n\n**Clone the repo**: \n```\ngit clone https://github.com/XuRobotics/SLIDE_SLAM.git\ncd ~/slideslam_docker_ws/src/SLIDE_SLAM\nchmod +x run_slide_slam_docker.sh\n```\n\n**(Optional) Only if you need to run on LiDAR data, install Faster-LIO and LiDAR drivers**: \n```\ncd ~/slideslam_docker_ws/src\ngit clone git@github.com:ouster-lidar/ouster_example.git \u0026\u0026 cd ouster_example \u0026\u0026 git checkout 43107a1 \u0026\u0026 cd ..\ngit clone git@github.com:XuRobotics/faster-lio\ngit clone git@github.com:KumarRobotics/ouster_decoder.git \u0026\u0026 cd ouster_decoder \u0026\u0026 git checkout d66b52d  \u0026\u0026 cd ..\n```\n*Find the ```CMakeLists.txt``` in ```ouster_decoder``` and comment out the last three lines (the ```ouster_viz```) to avoid fmt issue*\n\n**Run the docker image**: \n\n**Important:** Go to `./run_slide_slam_docker.sh`, make sure the following three directories are correct\n```\nSlideSlamWs=\"/home/sam/slideslam_docker_ws\"\n```\nshould point to your workspace directory\n```\nSlideSlamCodeDir=\"/home/sam/slideslam_docker_ws/src/SLIDE_SLAM\"\n``` \nshould point to your code directory where you cloned the repository\n```\nBAGS_DIR=\"/home/sam/bags\"\n```\nshould point to your bags (data) directory\n\nThen run:\n```\n./run_slide_slam_docker.sh\n```\n\n**Build the workspace**: \n```\ncd /opt/slideslam_docker_ws\ncatkin build -DCMAKE_BUILD_TYPE=Release\n```\n\n**Run the demos**\n```\nsource /opt/slideslam_docker_ws/devel/setup.bash\n```\nFollow the instructions below to run the demos. Remember to commit your changes inside docker envirnoment to keep them (e.g. newly installed pkgs). \n\nType `exit` to exit the container.\n\nYou can re-enter the container, or enter the container from a new terminal by either \n```\ndocker start slideslam_ros \u0026\u0026 docker exec -it slideslam_ros /bin/bash\n``` \nor remove your docker container using the command \n```\ndocker rm slideslam_ros\n``` \nbefore you run the docker image again.\n\n**Troubleshoot**:\n- If you do not see your code or bags inside docker, double check `run_slide_slam_docker.sh` file to make sure you have your workspace and BAG folders mapped properly. \n\n\n# Build from source (only if you do not want to use docker)\n\n**Install ROS** (code currently only tested on Ubuntu 20.04 + ROS Noetic)\n\nPlease refer to this [link](https://wiki.ros.org/noetic/Installation/Ubuntu) for installing ROS Noetic\n\n**Create your workspace under your preferred directory** (e.g., we name this directory as `~/slideslam_ws`):\n```\ncd ~\nmkdir slideslam_ws\ncd slideslam_ws \nmkdir src\ncd src\n```\n\n**Then, pull the slideslam github repo**:\n```\ngit clone https://github.com/XuRobotics/SLIDE_SLAM.git\n```\n\n**Install qhull 8.0.2**: \n  \n*Download from [this link](http://www.qhull.org/download/qhull-2020-src-8.0.2.tgz), extract (unzip) the file, then:*\n```\ncd build\ncmake ..\nmake install\n```\n*If ```make install``` gives a permission error then try ```sudo make install```*\n\n**Install gtsam 4.0.3**:\n\n```\nsudo add-apt-repository ppa:borglab/gtsam-release-4.0 \nsudo apt update  \nsudo apt install libgtsam-dev libgtsam-unstable-dev\nsudo apt-get install libdw-dev\n```\n\n**Install Sophus**: \n```\ngit clone https://github.com/strasdat/Sophus.git \u0026\u0026 \\\n    cd Sophus \u0026\u0026 git checkout 49a7e1286910019f74fb4f0bb3e213c909f8e1b7 \u0026\u0026 \\\n    mkdir build \u0026\u0026 cd build \u0026\u0026 \\\n    cmake -DCMAKE_BUILD_TYPE=Release .. \u0026\u0026 make\nsudo make install\n```\n\n**Install fmt 8.0.0**:\n```\ngit clone https://github.com/fmtlib/fmt.git \u0026\u0026 \\\n    cd fmt \u0026\u0026 git checkout 8.0.0 \u0026\u0026 \\\n    mkdir build \u0026\u0026 cd build \u0026\u0026 \\\n    cmake .. \u0026\u0026 make  \nsudo make install\n```\n\n**Install ros_numpy**:\n```\nsudo apt install ros-noetic-ros-numpy\n```\n\n**(Optional) Only if you need to run on LiDAR data, install Faster-LIO and LiDAR drivers**: \n```\nsudo apt update\nsudo apt-get install -y libgoogle-glog-dev\ncd ~/slideslam_ws/src\ngit clone http://github.com/ouster-lidar/ouster_example.git \u0026\u0026 cd ouster_example \u0026\u0026 git checkout 43107a1 \u0026\u0026 cd ..\ngit clone https://github.com/XuRobotics/faster-lio.git\ngit clone https://github.com/KumarRobotics/ouster_decoder.git \u0026\u0026 cd ouster_decoder \u0026\u0026 git checkout d66b52d  \u0026\u0026 cd ..\n```\n*Find the ```CMakeLists.txt``` in ```ouster_decoder``` and comment out the last three lines (the ```ouster_viz```) to avoid fmt issue*\n\n**(Optional) Only if you need to run on RGBD data with YOLOv8, install the following**:\n```\npip install ultralytics==8.0.59\n```\n\n**Install pip dependencies**:\n```\npip install numpy==1.22.3\npip install scikit-learn\npip install scipy\npip install open3d\npip install matplotlib\npip install git+https://github.com/dimatura/pypcd.git\n```\n\n- Install `tmux` for running our demo experiments\n```\nsudo apt update\nsudo apt install tmux\n```\n\n**Build in release mode**\n```\nsource /opt/ros/noetic/setup.bash\ncd ~/slideslam_ws\ncatkin build -DCMAKE_BUILD_TYPE=Release\n```\n**Source your workspace using**\n```\nsource ~/slideslam_ws/devel/setup.bash\n```\n\n\n\n**Troubleshoot:**\n- If you have built GTSAM from source before, you need to remove everything related to gtsam/GTSAM in /usr/local by doing:\n```\nsudo rm -rf /usr/local/lib/cmake/*GTSAM*\nsudo rm -rf /usr/local/include/gtsam\n```\n- If you have installed GTSAM using apt-get, remove them first, use this command `sudo apt remove --purge libgtsam*\n\n# Run our demos (with processed data)\nNote: if the access to any of the links is lost, please contact the authors, and we will provide the data from our lab's NAS.\n\nThis section will guide you through running our demos with processed data. We provide processed data in the form of rosbags that contains only the odometry and semantic measurements (i.e. object observations). Running the entire pipeline containing object detection and the rest of SLAM for multiple robots simultaneously onboard one computer is computationally and memory intensive. \n\n**Note:** Such tests can to a large degree replicate what would happen onboard the robot since when you run real world multi-robot experiment, each robot will only be responsible for processing its own data, and the processed data shared by the other robots in the form provided by here. \n\n## Download example data\n\nPlease download the processed data bags from [this link](https://drive.google.com/drive/folders/125N7srccxXPmn2HAQFjwXNNzYOO7DoqV). This containes compact processed bags for forest and urban outdoor environments. Please use the right data with the right scripts as specified below.\n\n\n## What these demos will do\n- Intermittent communication between robot nodes at a fixed time interval. \n- Multiple robots running on the same computer, and therefore, the computational load is going to be (num_robots multiplied by the computation load of each robot during actual experiment).\n\n## Run multi-robot demo (based on LiDAR data)\n**First, please refer to the section above and make sure you have everything built.**\n\n**Option 1:** Use our tmux script (recommended)\n\nSource and go to the ' folder inside `multi_robot_utils_launch` package:\n```\nsource ~/slideslam_ws/devel/setup.bash\nroscd multi_robot_utils_launch/script\n```\n\nModify `tmux_multi_robot_with_bags_forest.sh` to set the `BAG_DIR` to where you downloaded the bags\n\nModify `BAG_PLAY_RATE` to your desired play rate (lower than 1.0 if you have a low-specification CPU)\n\nThen make it executable if needed\n```\nchmod +x tmux_multi_robot_with_bags_forest.sh\n```\n\nFinally, execute this script\n```\n./tmux_multi_robot_with_bags_forest.sh\n```\n\nIf you want to terminate this program, go to the last terminal window and press `Enter` to kill all the tmux sessions.\n\n**Option 2:** If you prefer not to use this tmux script, please refer to the `roslaunch` commands inside this tmux script and execute those commands by yourself.\n\n**To run the same above example with urban outdoor data, use the `tmux_multi_robot_with_bags_parking_lot.sh` script and repeat the above steps.**\n\n# Run on raw sensor data (RGBD or LiDAR bags)\nThis section will guide you through running our code stack with raw sensor data, which is rosbags containing LiDAR-based or RGBD-based data. Note: size of these raw bags are usually anywhere from 10-100 GB.\n\n## Download example data\n\nPlease download the LiDAR demo bags from [this link](https://drive.google.com/drive/folders/1heAnoe6qESp2uQjjwwdR0Q3sUijkcUER). It is present inside the `outdoor` folder.\n\nPlease download the RGBD demo bags from [this link](https://drive.google.com/drive/folders/1heAnoe6qESp2uQjjwwdR0Q3sUijkcUER). It is present inside the `indoor` folder.\n\nPlease download the KITTI benchmark processed bags from [this link](https://drive.google.com/drive/folders/1heAnoe6qESp2uQjjwwdR0Q3sUijkcUER). It is present inside the `kitti_bags` folder.\n\nPlease download our trained RangeNet++ model from [this link](https://drive.google.com/drive/folders/1ignTNFZe3KLh9Fy6fakPwwJLEEnV-0E0). It is currently named `penn_smallest.zip`. Follow the instructions in the `Run our LiDAR data experiments`  section below on how to use this model.\n\n## Run our RGBD data experiments\n\n**Option 1:** Use our tmux script (recommended)\n\nSource and go to the ' folder inside `multi_robot_utils_launch` package:\n```\nsource ~/slideslam_ws/devel/setup.bash\nroscd multi_robot_utils_launch/script\n```\n\nModify `tmux_single_indoor_robot.sh` to set the `BAG_DIR` to where you downloaded the bags\n\nModify `BAG_PLAY_RATE` to your desired play rate (lower than 1.0 if you have a low-specification CPU)\n\nThen make it executable if needed\n```\nchmod +x tmux_single_indoor_robot.sh\n```\n\nFinally, if you want to use Yolo-v8, execute this script\n```\n./tmux_single_indoor_robot.sh\n```\n\n\n**IMPORTANT**: If it is your first time to run this script, the front-end instance segmentation network will download the weights from the internet. This may take a while depending on your internet speed. Once this is finished, kill all the tmux sessions (see below) and re-run the script.\n\nIf you want to terminate this program, go to the last terminal window and press `Enter` to kill all the tmux sessions.\n\n**Option 2:** If you prefer not to use this tmux script, please refer to the `roslaunch` commands inside this tmux script and execute those commands by yourself, or using the detailed instructions found [here](https://github.com/XuRobotics/SLIDE_SLAM/wiki#run-rgbd-raw-bags-detailed-instructions).\n\n## Run our LiDAR Data experiments\n\n**Download the LiDAR semantic segmentation RangeNet++ model**\n```\n(1) Download the model from the above link.\n(2) Unzip the file and place the model in a location of your choice.\n(3) Open the extracted model folder and make sure that there are no files inside having a .zip extension. If there are, then rename ALL OF THEM to remove the .zip extension. For example backbone.zip should be renamed to backbone\n```\n\n**Option 1:** Use our tmux script (recommended)\n\nMake sure you edit the ```infer_node_params.yaml``` file present inside the ```scan2shape_launch/config``` folder and set the value of ```model_dir``` param to point to the path to the RangeNet++ model you downloaded in the previous step. Make sure to compelte the path with the ```/``` at the end.\n\nSource and go to the ' folder inside `multi_robot_utils_launch` package:\n```\nsource ~/slideslam_ws/devel/setup.bash\nroscd multi_robot_utils_launch/script\n```\n\nModify `tmux_single_outdoor_robot.sh` to set the `BAG_DIR` to where you downloaded the bags\n\nModify `BAG_PLAY_RATE` to your desired play rate (lower than 1.0 if you have a low-specification CPU)\n\nThen make it executable if needed\n```\nchmod +x tmux_single_outdoor_robot.sh\n```\n\nFinally, execute this script\n```\n./tmux_single_outdoor_robot.sh\n```\n\nIf you want to terminate this program, go to the last terminal window and press `Enter` to kill all the tmux sessions.\n\n**Option 2:** If you prefer not to use this tmux script, please refer to the `roslaunch` commands inside this tmux script and execute those commands by yourself, or using the detailed instructions found [here](https://github.com/XuRobotics/SLIDE_SLAM/wiki#run-lidar-raw-bags-detailed-instructions).\n\n## Run KITTI Benchmark experiments\n\n**Option 1:** Use our tmux script\n\nSource and go to the ' folder inside `multi_robot_utils_launch` package:\n```\nsource ~/slideslam_ws/devel/setup.bash\nroscd multi_robot_utils_launch/script\n```\n\nModify `tmux_single_outdoor_kitti.sh` to set the `BAG_DIR` to where you downloaded the bags\n\nThen make it executable if needed\n```\nchmod +x tmux_single_outdoor_kitti.sh\n```\n\nFinally, execute this script\n```\n./tmux_single_outdoor_kitti.sh\n```\n\nIf you want to terminate this program, go to the last terminal window and press `Enter` to kill all the tmux sessions.\n\n# Troubleshoot\n**Rate of segmentation:**\n- When running on your own data, we recommend to throttle the segmentation topic (segmented point cloud or images) rate to 2-4 Hz to avoid computation delay in the front end, especially if you’re experiencing performance issues at higher rates. Please also update the `expected_segmentation_frequency` parameter in the corresponding `process_cloud_node_*_params.yaml` file as well as the `desired_frequency` in the `infer_node_params.yaml` to the actual rate of the topic. \n\n# Acknowledgement\nWe use GTSAM as the backend. We thank [Guilherme Nardari](linkedin.com/in/guilherme-nardari-23ba91a8) for his contributions to this repository. \n\n# Citation\nIf you find our system or any of its modules useful for your academic work, we would appreciate it if you could cite our work as follows:\n```\n@article{liu2024slideslam,\n  title={Slideslam: Sparse, lightweight, decentralized metric-semantic slam for multi-robot navigation},\n  author={Liu, Xu and Lei, Jiuzhou and Prabhu, Ankit and Tao, Yuezhan and Spasojevic, Igor and Chaudhari, Pratik and Atanasov, Nikolay and Kumar, Vijay},\n  journal={arXiv preprint arXiv:2406.17249},\n  year={2024}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkumarrobotics%2Fslide_slam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkumarrobotics%2Fslide_slam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkumarrobotics%2Fslide_slam/lists"}