Ask Your Question

Baby's first SLAM algorithm

asked 2012-09-19 13:07:00 -0600

Chris Parker gravatar image

updated 2012-09-20 09:19:45 -0600

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 flag offensive close merge delete

2 answers

Sort by ยป oldest newest most voted

answered 2012-09-21 04:40:35 -0600

Nghia gravatar image

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:

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.

edit flag offensive delete link more


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

gfuhr gravatar imagegfuhr ( 2012-09-21 08:21:34 -0600 )edit

The new URL for Sebastian Thrun's Udacity course is (I don't have enough Karma to edit the original post)

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

answered 2014-09-17 16:15:41 -0600

JD gravatar image

There is a document by MIT OCW, if you can bear to read it might be a good starting resource

edit flag offensive delete link more


My apologies this is a repetition of the previous comment

JD gravatar imageJD ( 2014-09-17 16:16:12 -0600 )edit

Question Tools


Asked: 2012-09-19 13:07:00 -0600

Seen: 11,952 times

Last updated: Sep 17 '14