ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

What difference between SLAM locating and AMCL locating

asked 2021-11-20 02:28:33 -0500

wyfeng2013 gravatar image

updated 2021-11-20 03:17:17 -0500

SLAM can analysis the environment and locating iteself.

And AMCL can locate itself with saved map.

What difference between the two locating method of SLAM and AMCL?

Because SLAM can locate, the AMCL is not necessary?

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
1

answered 2021-11-20 02:40:04 -0500

3473f gravatar image

SLAM is simultaneously localizing and creating a map of the environment. AMCL is localizing based on a prior map. Moving into the real world, a SLAM algorithm will be first used to create a map of the environment, then AMCL is used to localize in this map. However, this map will be needed to be updated frequently depending on how dynamic the environment is. So you'd run the SLAM algorithm from time to time to update the map. The frequency at which the map is updated will differ from one environment to the other.

edit flag offensive delete link more

Comments

@3473f

Thanks for you very much!

How does SLAM update the map in realtime?

I only have some try to save the map with map server.

And I have another question, the MAP updated by SLAM is the global static map or local map or final costmap?

wyfeng2013 gravatar image wyfeng2013  ( 2021-11-20 03:09:58 -0500 )edit

A SLAM algorithm will keep updating its map until you kill the node. The saved map (using the map server) can later be used with AMCL. If you need to update your saved map, you will need to create a new one (note: Google Cartographer allows you to continue a mapping session) A SLAM algorithm will only update the occupancy grid map which according to this page is optionally used to initialize the static map.

3473f gravatar image 3473f  ( 2021-11-20 03:25:44 -0500 )edit

@3473f

If SLAM runs without saving map by map server, and when the robot is rebooted, the robot will lose its position and will build map from begining, isn't it?

Your mention about "If you need to update your saved map, you will need to create a new one", the "a new one" means a new map? The saved map can't be updated in realtime?

Thanks for the reference!

wyfeng2013 gravatar image wyfeng2013  ( 2021-11-20 05:00:56 -0500 )edit

SLAM and AMCL make very different assumptions about what data is available to the robot, and about how the system should handle areas of the map that are unknown.

The accuracy of the robot global localization will be much better with AMCL IF you have given it an accurate map to work from. This is because SLAM maps built using location estimates from robot's wheel-encoder data are often distorted, which then causes inaccurate global localization.

Mike Scheutzow gravatar image Mike Scheutzow  ( 2021-11-20 08:36:34 -0500 )edit

@wyfeng2013 that's corrent. restarting your SLAM algorithm will start mapping from the beginning. Yes, I was referring to the map here. I haven't tested with other SLAM algorithms, but as mentioned, Google Cartographer can update pre-existing maps.

As @mike-scheutzow mentioned in his answer, AMCL with a good map will out perform SLAM. This is because SLAM algorithm will drift until a loop is closed and the map is optimized. You can get unlucky and your SLAM algorithm can totally fail (e.g., due to wrong scan matching result) which will definitely cause a problem. That's why in real life (at least in the logistics industry where I work) we rely on creating a map then localization using it.

3473f gravatar image 3473f  ( 2021-11-20 13:25:07 -0500 )edit

Question Tools

1 follower

Stats

Asked: 2021-11-20 02:28:33 -0500

Seen: 495 times

Last updated: Nov 20 '21