Learn Robotic SLAM Algorithms for Hobby & Career Change: Tips and Resources

  • Thread starter Thread starter Kethis
  • Start date Start date
  • Tags Tags
    Algorithms
Click For Summary

Discussion Overview

The discussion revolves around learning and implementing SLAM (Simultaneous Localization and Mapping) algorithms in robotics, with a focus on hobbyist applications and potential career changes. Participants explore resources, programming challenges, and the appropriate academic context for SLAM.

Discussion Character

  • Exploratory
  • Technical explanation
  • Debate/contested
  • Meta-discussion

Main Points Raised

  • One participant expresses a desire to learn about SLAM algorithms for both hobby and career change, noting a strong math background but limited programming experience.
  • Another participant suggests that SLAM falls under mechatronics engineering, which combines mechanical and electrical engineering aspects.
  • A different participant questions the appropriate forum for the discussion, suggesting it could fit in Electrical Engineering or Computers and Technology.
  • One participant emphasizes that SLAM is related to artificial intelligence and involves understanding the environment without prior knowledge, arguing for its placement in a computer-related forum.
  • There is a request for advice on starting with SLAM programming, including which algorithms to begin with, such as naive EKF-based SLAM or FastSLAM.
  • A participant shares their experience with a structured approach to a different project, seeking guidance on a similar roadmap for SLAM development.

Areas of Agreement / Disagreement

Participants do not reach a consensus on the best starting point for learning SLAM or the appropriate academic context for the discussion. Multiple competing views on the classification of SLAM and its programming challenges remain unresolved.

Contextual Notes

Participants express uncertainty about the best resources and progression paths for learning SLAM, highlighting a lack of formal guidance typically available in academic settings.

Kethis
Messages
3
Reaction score
0
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?
 
Engineering news on Phys.org


Greg Bernhardt said:

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?
 
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 got to find the right person from either. I can't help, my programming skills have left me years ago.
 
(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?
 
berkeman said:
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.
 
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.
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 33 ·
2
Replies
33
Views
6K
  • · Replies 4 ·
Replies
4
Views
3K
Replies
1
Views
2K
  • · Replies 39 ·
2
Replies
39
Views
8K
  • · Replies 5 ·
Replies
5
Views
2K
Replies
4
Views
3K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 1 ·
Replies
1
Views
8K