I'm trying to understand the role of landmarks in SLAM algorithms. I've glanced over a few books concerning landmark based SLAM algorithms and I've come up with a rudimentary understanding which I believe is flawed.
How I think SLAM works:
As I understand it, landmarks are a set of points in a map whose locations are known a priori. Furthermore, the number of landmarks in a map is fixed. The number of landmarks detected at any one time may change, but the number of landmarks that exist in the map remains static at all times.
My understanding is that SLAM algorithms exploit the fact that these points are both uniquely identifiable and known a priori. That is, when a robot senses a landmark, it knows exactly which landmark it detected and thus knows the exact location of that landmark. Thus, a slam algorithm uses the (noisy) distance to the detected landmarks (with known location) to estimate its position and map.
Why I think I'm wrong
In my naive understanding, the usefulness of SLAM would be limited to controlled environments (i.e. with known landmarkds) and completely useless in unknown environments with no a priori known landmarks. I would presume that some sort of feature detection algorithm would have to dynamically add landmarks as they were detected. However, this fundamentally changes the assumption that the number of given landmarks must be static at all times.
I know I'm wrong in my understanding of feature based SLAM, but I'm not sure which of my assumptions is wrong:
Do feature based SLAM algorithms assume a static number of landmarks?
Do the landmarks need to be known a priori? Can they be detected dynamically? And if so, does this fundamentally change the algorithm itself?
Are there special kinds of SLAM algorithms to deal with unknown environments with an unknown total number of landmarks in it?