CoSLAM is a visual SLAM software that aims to use multiple freely moving cameras to simultaneously compute their egomotion and the 3D map of the surrounding scenes in a highly dynamic environment.
Switch branches/tags
Nothing to show
Clone or download

README.md

CoSLAM

CoSLAM is a visual SLAM software that aims to use multiple freely moving cameras to simultaneously compute their egomotion and the 3D map of the surrounding scenes in a highly dynamic environment. For more details, please refer to CoSLAM project page.

How to cite

To use the codes, please cite the paper,

Bibtex entry

    @article{
      zou2013coslam,
      title="Coslam: Collaborative visual slam in dynamic environments", 
      author="Zou, Danping and Tan, Ping", 
      journal="IEEE Trans. on Pattern Analysis and Machine Intelligence" 
      year="2013", 
      publisher="IEEE"
      }

System requirements

  • A nvidia graphics card (To support Nvidia Cg language)
  • Linux Unbuntu or Linux Mint (64 bit). It recommended to use linux Mint 14(nadia) 64-bit system where CoSLAM has been well tested.

Dependent packages

Before compile the source codes, the following packages should be installed.

  • 1.LibVisualSLAM(a computer vision library for visual SLAM)
  • 2.nvidia Cg toolkit (for GPU feature tracking)
  • 3.GLEW (for shader support)
  • 4.OpenGL,GLU,glut (for Visualization)
  • 5.BLAS, LAPACK (for linear algebra)
  • 6.OpenCV (for Video I/O)
  • 7.wxWidgets (for GUI)

Here are the instructions for installing those packages.

1. LibVisualSLAM

This is a computer vision library developed for CoSLAM. Please click here.

2. Nvidia Cg toolkit

Please click here to download the nvidia Cg toolkit. Click the .deb file to install the package.

3. GLEW, xmu

Can be installed from the repository of Ubuntu or Linux Mint by typing

sudo apt-get install libglew-dev
sudo apt-get install libxmu-dev

4. OpenGL, GLU, and GLUT

OpenGL is supported by default after the nvidia graphics card driver being installed. To install GLU,GLUT, run

sudo apt-get install libglu1-mesa-dev
sudo apt-get install freeglut3-dev

5. BLAS and LAPACK

Run

sudo apt-get install libblas-dev
sudo apt-get install liblapack-dev

6. OpenCV

Before installing OpenCV, you should install ffmpeg to enable the advance Video I/O. Then download OpenCV and install it following the installation instructions.

7. wxWidgets

It important that only new versions > 2.9 are supported! The source codes can be download from here. Go to the source code directory of wxWidgets and run

./configure --with-opengl
make
sudo make install

Download & installation

After the dependent packages are installed, go to the source code directory of CoSLAM, and run

mkdir CoSLAM-build
cd CoSLAM-build
cmake ..
make
sudo make install

Input

The input is a txt file that lists the input video files and corresponding camera parameter files. Here is a example.

3 #number of sequences
0 0 #number of frame to skip and a reserve number of single camera visual SLAM
0 0
0 0
/xx/xxx/video1.avi #absolute path of video files
/xx/xxx/video2.avi
/xx/xxx/video3.avi
/xx/xxx/cal1.txt #absolute path of calibration files
/xx/xxx/cal2.txt
/xx/xxx/cal3.txt

Video sequences

The video sequences should be temporally synchronized. Those sequences are suggested to be in 'MPEG-4' format, though other formats may also be supported. The number of video sequences are not restricted in our system. It is however suggested that the number of input sequences be less than five, as the speed of CoSLAM system decreases significantly with the number of sequences.

Camera parameters (Calibration file)

Each video sequence is associated with a camera parameter file, which is in the following form. These parameters can be obtained by using the calibration toolkit

#intrinsic matrix 
fx t cx
0 fy cy
0 0 1 
#five parameters for distortion
k0 k1 k2 k3 k4

Run

Go to the directory of the input file, then type

CoSLAM ./input.txt

to run the system.

Outputs

The outputs are saved in a directory named by a time string under '~/slam_results'. The outputs include 3D map points, camera poses, feature points and input video paths. Here is an example of the outputs of three cameras:

~/slam_results/13-09-10=21-32/input_videos.txt      #paths of input video sequences
~/slam_results/13-09-10=21-32/mappts.txt            #3D map points
~/slam_results/13-09-10=21-32/0_campose.txt         #camera poses
~/slam_results/13-09-10=21-32/1_campose.txt
~/slam_results/13-09-10=21-32/2_campose.txt
~/slam_results/13-09-10=21-32/0_featpts.txt         #feature points
~/slam_results/13-09-10=21-32/1_featpts.txt
~/slam_results/13-09-10=21-32/2_featpts.txt
  • input_video.txt

      <absolute path of video #1>
      <intrinsic parameters>
      <five distortion parameters>
      <image resolution>
      ......
      <absolute path of video #2>
      ......
    
  • mappts.txt

      <number of map points>
      <random id #1>
      <x y z>
      <3x3 covariance>    
      <random id #2>
      ......
    
  • x_campose.txt

      <number of frames>
      <frame number>
      <3x3 Rotation matrix> <3x1 translation vector>
      ......
    
  • x_featpts.txt

      <number of frames>
      <frame number> <number of feature points>
      <random id> <x y> <random id> <x y>, ....., 
      <frame number> <number of feature points>
      ......
    

Sample sequences for testing

Sample sequences can be downloaded for testing from: http://drone.sjtu.edu.cn/dpzou/dataset/CoSLAM

Contribute to CoSLAM

CoSLAM is a open source project that welcomes everyone to contribute to this project.

Liciense

CoSLAM is released under GPL v2.0.

Disclaimers

No contributer is responsible for any problems caused by using CoSLAM.