slam. the robot kind.
Just a good tutorial we found so you may understand how robots work.
Why do we need SLAM?
Let's say, for example, you're making a robot. A robot to clean your house (yes, like a Roomba). You want this robot to operate autonomously under all conditions in all rooms. You could feed the robot a digital map of your entire household and have the robot try to recognize "landmarks" (like the shape of the walls, your favorite chair, etc) to figure out where it is in the house. This represents one major challenge in robotics today, localization, where a robot needs to figure out where it is in a known environment (know meaning known to the robot).
A second challenge is explained better using drone mapping. Drones that map the Earth do so by taking pictures of the planet from above and recording the GPS location at which this picture was taken. Software later stitches these photos together based on location to generate maps. This represents the development of a map of an unknown environment, mapping. The environment, meaning how the Earth looks is unknown to a drone. It has no idea how the world looks from above, it has no eyes. But what it does know, is it has a GPS and it knows where it is in this unknown world based on where reference objects are (satellites). So mapping is when the robot knows where it is but not what the surroundings look like, and by using sensor data it can build what the surroundings look like by knowing that position.
So localization is "I'm given my surroundings, I need to figure out where I am in them," and mapping is "I know where I am, I just don't know what my surroundings look like."
What is SLAM? Background and short intro
Now let's say you go out and buy a Roomba, or any other home robot. The problem this robot has now is that when you turn it on, not only does it have no idea where in your home it is, it has no idea what your home even looks like so when it looks around using its sensors it doesn't even understand what it's seeing. It looks at your TV and couch and knows its in a room with a TV and a couch, but it has no idea where that is in relation to the rest of the home. The robot now needs to do two things, it needs to build a map of its environment, a model to understand where it can possibly be. And it needs to figure out where in that environment it actually is.
See how this is different from both localization and mapping on their own? In localization the robot already knows where it can possibly be, so figuring out where it is is as simple as observing its surroundings (it's like you waking up in your bedroom, you know where you are because its familiar to you). Mapping is where the robot knows where it is and its adding landmarks to the map as it goes along (its like if you were to work for Google Maps and walk down a street logging the locations of the stores and what the stores were, you don't know what the stores will be, but you know where you are so its simple to add them to the map).
In this problem, we have a kind of chicken-and-egg situation where the robot doesn't know what its seeing or where it is (It's like exploring a dark cave, you have no idea where you are or where you're going). So how do we make the robot not feel scared and alone in this new environment? How do we make it cope? We explore a bit. We look around at what we see, we add these landmarks to a map we are creating, we move a bit, we see new landmarks, we add those to the map, and we keep going. We simultaneously map our surroundings and localize ourselves within them. Simultaneous. Localization. and Mapping. S-L-A-M.
SLAM is one of the most widely used algorithms for robotic exploration of unknown environments. It allows a robot to not just figure out where it is in an unknown environment, but what that environment looks like, and what obstacles it may encounter. It takes in data from the robot's sensors and it spits out a position estimate and a map of the environment.
Good Tutorial/Explanation of SLAM
A very very good overview of how SLAM works can be found here at "SLAM for Dummies" written by some MIT students. If you want to learn more about SLAM, pleaseeeee check out this paper it's amazing.