As the author of SLAM Toolbox, I obviously have a bias towards it. But as I start most of my ROSCon talks with: if <the previous thing>
worked super well, I wouldn’t have bothered making <this>
. I’m not someone that desires to reinvent the wheel for tutorial exercise or “because I can”.
I really wanted to like and use Cartographer, but it was critically flawed in alot of ways and when I surveyed users, most that had good results also had exceptionally good odometry whereas any 2D SLAM system would work superbly and is less a reflection of Cartographer itself. The codebase is unwieldy, but to be totally fair to the authors, the paper describing it is exactly how I would have thought at that point in time about building a large-scale SLAM system. There are certainly redeeming qualities.
I’m definitely not going to turn around and say that SLAM Toolbox is perfect, that is something I worked on now approaching 5 years ago as an R&D project for a startup that accidentally turned out really good. But, it works very very well out of the box, because I spent the time to make sure that behavior worked well for a large number of vehicles and environments and provided well-tuned parameters that are a reasonable starting point. Its worth listening to the ROSCon 2019 talk on the subject.
Eventually, my hope is to start from ground-zero for a new SLAM and localization framework in ROS 2, but time will tell.