adeebshihadeh / twitchslam

Live coding SLAM

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

twitchslam

A toy implementation of monocular SLAM written while livestreaming.

Stream

https://www.twitch.tv/tomcr00s3

Will be streaming again tomorrow. May 28, 2018

By the end of the day, twitchslam will be decent.

Usage

export REVERSE=1   # Hack for reverse video
export F=500       # Focal length (in px)

./slam.py <video.mp4>

# good example
F=525 ./slam.py videos/test_freiburgxyz525.mp4

# kitti example
REVERSE=1 F=984 ./slam.py videos/test_kitti984_reverse.mp4

Classes

  • Frame -- An image with extracted features
  • Point -- A 3-D point in the Map and it's 2-D Frame correspondences
  • Map -- A collection of points and frames
  • Display2D -- SDL2 display of the current image
  • Display3D -- Pangolin display of the current map

Libraries Used

  • SDL2 for 2-D display
  • cv2 for feature extraction
  • pangolin for 3-D display
  • g2opy for optimization (soon!)

DONE

  • BUGFIX: Why is window initting small? (fixed? ish, zoom is broken sometimes)
  • BUGFIX: Turning doesn't work well (fixed?)
  • Stop using essential matrix for pose estimation once you have a track (done)
  • Add kinematic model (done)
  • Run g2o to only optimize the latest pose (done)
  • Add search by projection to refind old map points (done)
  • Check if points are in the field of view of the camera (done)
  • BUGFIX: Fix moving up! (y axis flipped? nah, it's okay)
  • Add loading and saving of map support

TODO

  • BUGFIX: Improve lockups to happen less
  • Improve init to not need REVERSE environment variable
  • Add optimizer for F
  • Add multiscale feature extractor
  • Add Linux libraries and OS check
  • Profile and speed up more
  • Add automated test for freiburg running on commit
  • Check accuracy with ground truth

LICENSE

All my code is MIT licensed. Videos and libraries follow their respective licenses.

About

Live coding SLAM

License:MIT License


Languages

Language:Python 100.0%