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

  • Thread starter Kethis
  • Start date
  • Tags
    Algorithms
In summary: If you're looking for a starting point, I'd recommend trying FastSLAM. It's a relatively simple algorithm, and it's been implemented in a number of different languages. After you've got a basic understanding of FastSLAM, you can look into more sophisticated algorithms, such as 2-d bearings-only SLAM or 3-d odometry. For a more complete roadmap, I would recommend reading through my blog post on the subject:In summary, the OP wants to learn about robotics, specifically SLAM algorithms. He has a strong math background, but his programming skills are not finely honed. He went through the free, online Stanford machine learning course, but did not have time to complete all of the coursework
  • #1
Kethis
3
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
  • #3


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?
 
  • #4
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.
 
  • #5
(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
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.
 
  • #7
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.
 

1. What is a SLAM algorithm?

A SLAM (Simultaneous Localization and Mapping) algorithm is a type of algorithm used in robotics and autonomous systems to create and update a map of an unknown environment, while simultaneously determining the location of the robot within that environment.

2. How do SLAM algorithms work?

SLAM algorithms typically use a combination of sensor data (such as lidar, radar, or cameras) and odometry information to estimate the robot's location and create a map of the environment. The algorithm uses these inputs to solve the "chicken and egg" problem of simultaneously localizing the robot and mapping the environment.

3. What are the benefits of using SLAM algorithms?

SLAM algorithms allow robots to navigate and operate in unknown environments without prior knowledge or external positioning systems. This makes them ideal for use in autonomous vehicles, drones, and other robotic systems. Additionally, SLAM algorithms can also be used to improve the accuracy and efficiency of mapping tasks in known environments.

4. What are the different types of SLAM algorithms?

There are two main types of SLAM algorithms: feature-based and graph-based. Feature-based SLAM algorithms use identifiable features in the environment (such as corners or landmarks) to create a map, while graph-based SLAM algorithms use a graph structure to represent the environment and the robot's movements within it.

5. What are some limitations of SLAM algorithms?

While SLAM algorithms have advanced significantly in recent years, they still have some limitations. For example, they may struggle in environments with poor lighting or highly symmetrical features. They also require a significant amount of computational power and may struggle to accurately map large, complex environments.

Similar threads

  • Programming and Computer Science
Replies
8
Views
1K
  • STEM Career Guidance
Replies
33
Views
2K
  • Electrical Engineering
Replies
2
Views
2K
Replies
2
Views
53
  • Programming and Computer Science
Replies
5
Views
1K
  • STEM Career Guidance
Replies
6
Views
2K
  • STEM Career Guidance
2
Replies
39
Views
5K
  • STEM Academic Advising
Replies
3
Views
808
Replies
1
Views
960
  • STEM Career Guidance
Replies
5
Views
1K
Back
Top