# Baby's first SLAM algorithm

I have a strong math background, but am a self-taught programmer. There are gaps in my knowledge/abilities. I've recently had some really invigorating successes with coding in OpenCV, that has bolstered my confidence. I want to specialize in mechatronics, and specifically in computer vision. Within that, I find SLAM (simultaneous localization and mapping) algorithms very interesting. I want to gain experience in implementing SLAM algorithms.

How do I do that? What is the smallest meaningful & useful approach that I can implement first?

I've been doing a lot of reading on the extant research, and am fairly comfortable with the material (though I am not yet comfortable building something on my own). Where is the best starting point for me? Should I do FastSLAM? FastSLAM 2? Build my own 2-d bearings-only SLAM simulator, for a virtual agent? Estimate a path from a set video? Some much simpler task?

I am looking for a roadmap: stages I can plan to build, with each building off of the other. For example, I wanted to build my own CUDA-enabled genetic algorithm that could approximate a given image using a finite number of colored object primitives. This is what my roadmap for that project looked like:

Build a bare-bones, single population GA (find a float x such that e^x = 1024) in Python

Convert Python to C++

Use OpenCV's drawing functions to output a visual plot of the state of the population over time (I already had experience with OCV)

--in a separate program, build a "Hello World" equivalent in CUDA

Port the evaluation function for the GA to CUDA

Alter the eval function to find integers a and b such that e^(a/b) = 1024

Rewrite the eval function to find integers x,y,r,g so that it finds the single circle which best approximates a grayscale input image

Alter it to find a series of circles.

Alter it to use the HSV color space instead of grayscale

Alter it to use triangles instead of circles

Alter it to use a set of image primitives (say, a binary image)

Expand the GA to use multiple populations

Experiment with further customization

edit retag close merge delete

Sort by ยป oldest newest most voted

I'm not entirely sure what you are describing in the second half, but a good starting point for learning SLAM might be Sebastian Thrun's Udacity course:

http://www.udacity.com/overview/Course/cs373/CourseRev/apr2012

Mine you, I haven't actually done this course yet, just heard lots of good things about it. SLAM is part of the syllabus in Unit 6.

more

There is also the SLAM for dummies :-), which I think it is good.

( 2012-09-21 08:21:34 -0600 )edit

The new URL for Sebastian Thrun's Udacity course is https://www.udacity.com/course/artifi.... (I don't have enough Karma to edit the original post)

( 2017-08-09 02:30:42 -0600 )edit

There is a document by MIT OCW, if you can bear to read it might be a good starting resource http://ocw.mit.edu/courses/aeronautics-and-astronautics/16-412j-cognitive-robotics-spring-2005/projects/1aslam_blas_repo.pdf

more

My apologies this is a repetition of the previous comment

( 2014-09-17 16:16:12 -0600 )edit

Official site

GitHub

Wiki

Documentation