# SLAM without landmarks using sonar [duplicate]

I'm currently programming an app for a robot and I'd like to make him map a zone and then make him move autonomously from one point to another.

I have to solve a SLAM problem, but the biggest matter is that I can't use landmarks to find myself in the environment. The robot just has the abilities to move, and to make distance measurements over -120/+120 degrees using a sonar.

I can't find any simply explained algorithm that permits me to solve this SLAM problem with the no-landmark limitation.

Have you any idea ?

I asked this question before in here when I had no idea what SLAM problem actually is. I realized later this question was a sign indicates that I have no idea about the problem. The word SLAM is an acronym for Simultaneous Localization And Mapping which indicates that the environment must be part of the problem or in other words the robot needs to navigate an unknown environment and concurrently localizes its pose in this map. If you don't want to include the landmarks or the environment, then you don't need SLAM at all. The problem then decreases to a kinematic problem in which the robot moves in an empty space and you hope to determine its pose in this empty map. If this is the case, then you need odometry info or just use GPS. As you can see, odometry is an accumulated error problem if the noise is presented. GPS doesn't work in an indoor environment. I highly recommend you to read this book Probabilistic Robotics. This is the only book that I know covers the problem in depth with providing a complete algorithm for constructing SLAM with a given model.

Have you considered to use grid maps?

A particle filter based SLAM with grid maps can be found here: https://www.openslam.org/gmapping.html

• Seems like a reasonable suggestion. Would make a better answer if you said why gmapping might fit the problem better. Commented Oct 1, 2014 at 12:53

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