There are SLAM methods that do use landmarks and others that do not. If your sensor allows you to easily find and and identify landmarks (e.g. using cameras you can easily detect interest points and identify these using feature descriptors) it can be beneficial to do so. But in many cases (e.g. laser scanners, sonar) reliably detecting and identifying landmarks is nearly impossible.
The current state of the art in SLAM are graph-based methods and while I am not aware of an existing system using sonar sensors, the straight-forward approach which is widely used with laser scanners would be:
- Use a pose graph representation and store sonar measurements at key poses.
- Use the odometry of your robot to add measurement edges between consecutive nodes.
- Can you use your robot's sonar array for registration/scan matching (even with rather inaccurate results)? Also add the resulting relative pose edges to your pose graph.
- From time to time: Perform pose graph optimization. After that you might want to create an occupancy grid map using sonar scans corresponsing to nodes with their corrected pose.
For 2D laser scanners, this is described in more detail in this paper and implemented in karto