• Stars
    star
    908
  • Rank 50,302 (Top 1.0 %)
  • Language
    C++
  • License
    BSD 2-Clause "Sim...
  • Created over 8 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A General Simultaneous Localization and Mapping Framework which supports feature based or direct method and different sensors including monocular camera, RGB-D sensors or any other input types can be handled.

GSLAM (A General SLAM Framework and BenchMark)

Build Status License Version

1. Introduction

If you use this code for your research, please cite our paper GSLAM: A General SLAM Framework and Benchmark:

@inproceedings{gslamICCV2019,
	title={GSLAM: A General SLAM Framework and Benchmark},
	author={Yong Zhao, Shibiao Xu, Shuhui Bu, Hongkai Jiang, Pengcheng Han},
	booktitle={Proceedings of the IEEE International Conference on Computer Vision},
	year={2019},
	organization={IEEE}
}
@article{gslam2019,
	title={GSLAM: A General SLAM Framework and Benchmark},
	author={Yong Zhao, Shibiao Xu, Shuhui Bu, Hongkai Jiang, Pengcheng Han},
	journal={arXiv:1902.07995 },
	year={2019}
}

1.1. What is GSLAM?

  1. For SLAM developers : Everyone can develop their own SLAM implementation based on GSLAM and publish it as a plugin with open-source or not.
  2. For SLAM users : Applications are able to use different SLAM plugins with the same API without recompilation and implementations are loaded at runtime.

2. Documentation

Documentation: https://zdzhaoyong.github.io/GSLAM/

3. Start with GSLAM

3.1. Basic usages

Test modules with google test:

gslam tests --gtest_filter=*

Run a slam system with datasets:

gslam qviz orbslam play -dataset dataset_path

3.2. Supported Datasets

GSLAM now implemented serveral plugins for public available datasets. It is very easy to play different datasets with parameter "Dataset" setted:

# Play kitti with monocular mode
gslam qviz play -dataset <dataset_path>/odomentry/color/00/mono.kitti

# Play kitti with stereo mode
gslam qviz play -dataset <dataset_path>/odomentry/color/00/stereo.kitti

# Play TUM RGBD Dataset (associate.txt file prepared)
gslam qviz play -dataset <dataset_path>/rgbd_dataset_freiburg1_360/.tumrgbd

# Play TUM Monocular (images unziped)
gslam qviz play -dataset <dataset_path>/calib_narrowGamma_scene1/.tummono

# Play EuRoC Dataset with IMU frames
gslam qviz play -dataset <dataset_path>/EuRoC/MH_01_easy/mav0/.euroc

# Play NPU DroneMap Dataset
gslam qviz play -dataset <dataset_path>/DroneMap/phantom3-village/phantom3-village-kfs/.npudronemap
gslam qviz play -dataset <dataset_path>/DroneMap/phantom3-village/phantom3-village-unified/.npudronemap

The datasets are default to be played on realtime, and the play speed can be controled with "playspeed":

gslam qviz play -dataset <dataset_path>/odomentry/color/00/mono.kitti -playspeed 2.

The following dataset plugins are now implemented:

Name     Channels Description
KITTI Stereo,Pose
TUMMono Monocular
TUMRGBD RGBD,Pose
EuRoc IMU,Stereo
NPUDroneMap GPS,Monocular
CVMono Monocular Online camera or video dataset using opencv.

Users can also implement dataset plugins by own.

3.3. Implemented SLAM plugins

Name       ScreenShot Description
DSO code
ORBSLAM code
SVO code
TheiaSfM code

4. Contacts

YongZhao: [email protected]

ShuhuiBu: [email protected]

ShibiaoXu: [email protected]

5. License

The GSLAM library is licensed under the BSD license. Note that this text refers only to the license for GSLAM itself, independent of its optional dependencies, which are separately licensed. Building GSLAM with these optional dependencies may affect the resulting GSLAM license.

Copyright (c) 2018 Northwestern Polytechnical University, Yong Zhao. All rights reserved.

This software was developed by the Yong Zhao at Northwestern Polytechnical University.

All advertising materials mentioning features or use of this software must display
the following acknowledgement: This product includes software developed by Northwestern Polytechnical University, PILAB.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software must
display the following acknowledgement: This product includes software developed
by Northwestern Polytechnical University and its contributors.
4. Neither the name of the University nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

More Repositories

1

Map2DFusion

This is an open-source implementation of paper: Real-time Incremental UAV Image Mosaicing based on Monocular SLAM.
C++
295
star
2

SummerCamp2018

智能系统实验室-2018新人暑期培训计划
C++
144
star
3

Svar

A Tiny Modern C++ Header Brings Unified Interface for Different Languages
C++
136
star
4

PICMake

你还在学CMake的过程中毫无头绪吗?你还在为复杂程序库依赖发愁吗?你是否觉得原生CMake的编写冗余而低效?那就快来学习和使用PICMake吧!只需要一行,无论是可执行,动态库还是静态库,轻松搞定!同时高效支持多目标,复杂库的编译安装,从此告别大量冗余CMake代码,专注开发核心应用程序,编译不再愁! 例如下面是使用PICMake编译一个依赖OpenGL的可执行文件,只需要一行!
C++
80
star
5

RTMapperSDK

RTMapperSDK is the c++ sdk for application development like RTMapper. It handle images captured with UAVs and outputs ortho mosaic at realtime.
C
28
star
6

highstitch

Code for paper: HighStitch: High Altitude Georeferenced Aerial Images Stitching for Rocking Telephoto Lens
C++
16
star
7

GSLAM-TheiaSfM

C++
7
star
8

synergy

Free version of synergy for ubuntu and windows
Shell
7
star
9

svar_rosbridge

A C++11 based cross-language (C++/Python/Node-JS) rosbridge client with CBOR support.
C++
7
star
10

VideoCompare

This application is designed to find the differences between two videos. The reference video is indexed with BoWs and so that the second video is able to find the best match keyframe from reference video very fast.
C++
7
star
11

GSLAM-VINS

The VINS-Mobile implementation plugin for GSLAM
C++
5
star
12

EICAM

The EICAM is the a part of PIL library, which includes some pretty useful tools for C++ programing espesially in the areas of moblile robotics and CV (computer vision). Since cameras projection and unprojection actions are often needed in CV or other area such as Robot localization like SLAM (simultaneous localization and mapping), we provided EICAM for efficient implimentation of different camera models including PinHole, ATAN, OpenCV, OCAM .etc.
C++
5
star
13

PIL

The PIL library includes some pretty useful tools for C++ programing espesially in the areas of moblile robotics and CV (computer vision), includes ThreadBase,Svar,TImer,SE3 in PI_Base and hardwares support like Cameras, GPS and so on.
C++
3
star
14

highstitch-dataset

The NPU HighStitch Dataset
3
star
15

phantom3-village-kfs

A sample sequence for Map2DFusion.
3
star
16

GSLAM_OptimizerPBA

An optimizer plugin base on PBA for GSLAM later then version 2.1.0, which implement parallel bundle adjust with GPU or multi-core CPU.
C++
3
star
17

svar_nsq

C++
3
star
18

ShellToolkit

This package is aim to help Linux/UNIX users to collect their own bash shells and got better experience. You can doing a lot of things easily by this tool, such as ‘cd’ to a folder faster, automatically config your Makefile environment, help you remember program history thing and complete your parameters later, and so on. Enjoy it!
Shell
3
star
19

svar_monitor

Small c++ svar module to monitor the CPU, Memory and IO usages.
C
2
star
20

Messenger

An alternative option to replace ROS message transfering with single header from GSLAM.
CMake
2
star
21

GSLAM-JS

The Javascript wapper of GSLAM.
C++
1
star
22

EssentialTracker

C++
1
star
23

DatasetNetwork

C++
1
star
24

GBoW

GSLAM implementation of DBoW, with only headers and removed dependency of OpenCV.
C++
1
star
25

fengniao

1
star
26

svar_messenger

A svar module implemented ros like pub/sub.
C++
1
star