Robotic SLAM algorithms

  • Thread starter Kethis
  • Start date
  • #1
3
0

Main Question or Discussion Point

I want to learn about robotics. Specifically, I want to implement and use SLAM algorithms. This is for hobbyist reasons, and to hopefully fuel a career change.

I have a strong math background. My programming skills are not finely honed, but they aren't bad either. I went through the free, online Stanford machine learning course in its initial offering, but did not have time to complete all of the coursework. Working through it is a major goal of mine for the coming weeks.

I have a thick, thick stack of research papers on SLAM that I've been reading through. I feel that I am starting to come to understand the subject fairly well, but I am unsure of how to break into actually building my own practical monocular vision SLAM systems. Would/could anyone here give me advice on how to do that, and where I might find better tutelage?
 

Answers and Replies

  • #3
3
0


My apologies if I posted in the wrong place. However, I am not sure that SLAM falls under Mechanical Engineering: I don't need help making the physical robot, I can do that. I need help programming it.

Specifically, for how to break into programing monocular, visual SLAM.

Perhaps that would fit better under Electrical Engineering, or back where I originally posted it in Computers and Technology?
 
  • #4
208
0
What you're after falls under mechatronics engineering, which is a branch of mechanical engineering with a mix of electrical. So it really could be placed in either. For programming help, you just gotta find the right person from either. I can't help, my programming skills have left me years ago.
 
  • #5
berkeman
Mentor
57,306
7,288
(I'll move it to EE for now, and we can see how it goes. It might go best back in Programming, but we can give it a day or two in EE.)

Welcome to the PF.

Can you say a bit more about what SLAM is? Why is it used for robotic programming?
 
  • #6
AlephZero
Science Advisor
Homework Helper
6,994
291
Can you say a bit more about what SLAM is?
Go to http://openslam.org/ and clikck on "What's SLAM".

That site probably has a lot of good information for the OP as well.
 
  • #7
3
0
SLAM is a class of computer algorithms, that are related to solving the artificial intelligence problem of "what does the world look like, and where am I within it" without any a priori knowledge. That is why I put it in the computer forum. Because its a computer question. I only suggested EE as an alternative forum because its less worse than mechanical.

Yes, its related to mechatronics. Mechatronics is not a branch of ME (or EE or CS), it is an interdisciplinary field. This question is about how to gain experience programming a specific class of algorithms, so I put it in the board most closely related to implementing algorithms.

I've seen the openslam.org website. I've done plenty of research (hours googling, plus almost an inch thick stack of printed out research papers), but my problem is that I am running ahead of my abilities/experience. I don't need to be looking at outlier-robust graph-based loop closure. I need a practical "baby's first SLAM algorithm" approach: I lack the benefit of a university to direct me.

I know that the naive EKF-based SLAM does not scale well, but is it where I should start? 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? Etc, etc. I understand (most of) the math I've found in the papers, but I do not yet see how to turn it into code. What is the simplest useful thing relevant to my aspirations I can build? Once that is made, what can I build with it? What should my progression look like?

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:

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​

It started with the smallest thing I was confident building/could easily find very simple examples of, and then I iteratively refined it along a planned path. I am looking for help finding that path for SLAM.
 

Related Threads on Robotic SLAM algorithms

  • Last Post
Replies
4
Views
2K
  • Last Post
Replies
1
Views
1K
  • Last Post
Replies
2
Views
4K
  • Last Post
Replies
2
Views
1K
  • Last Post
Replies
3
Views
953
Replies
7
Views
1K
  • Last Post
Replies
1
Views
2K
Replies
1
Views
609
  • Last Post
Replies
1
Views
2K
  • Last Post
Replies
2
Views
1K
Top