At Wyca Robotics, we were using some components of
cartographer-ros as part of our ros1 workflow and we internally ported the missing parts to ros2 when doing the transition to
Galactic. We then tried to share our port and thanks to the help of @clalancette it is now merged and part of the rolling release.
ros-rolling-cartographer-ros have been released to rolling as part of New packages for ROS 2 Rolling Ridley 2022-04-12.
As opposed to previous ros2 releases (and similarly to ros1) this version of the ros wrapper of cartographer is complete: not only the live node but also the super useful offline_node for building maps (by consuming bags) at max CPU speed. And other tools like the asset_writer and the launch files.
ros-rolling-cartographer now targets the cartographer library v2.0.0 and
ros-rolling-cartographer-ros is now a full port of the ros1 noetic wrapper (which itself was working with a version closer to the v2.0.0 of the library than the v1)
This can cause some API changes and a slightly different set of parameters compared to Foxy/Galactic for both the release library and the wrapper. However, this should maintain consistency with the more advanced parameters and API of the noetic version.
Also, because of the apparent lack of maintainers of the Cartographer · GitHub organization, the ros2 port is now hosted on OSRF repo GitHub - ros2/cartographer_ros: Provides ROS integration for Cartographer. (which was already hosting the partial ros2 port from previous ros2 versions)
For completeness and history:
PR on the original repo targeting Galactic (not merged): ROS2 rolling/galactic conversion by doisyg · Pull Request #1622 · cartographer-project/cartographer_ros · GitHub
Then moved to OSRF repo targeting rolling: Migration to cartographer 2.0 library and proper ros2 implementation by doisyg · Pull Request #59 · ros2/cartographer_ros · GitHub
My goal is to reach the same level of functionality, performance and behavior (with the same parameters) for cartographer in ros2 that we had in ros1 noetic. We should be pretty close now. But my tests don’t necessarily cover all use cases (notably, I personally don’t do 3D mapping with cartographer), so I welcome any feedback and I ll try to dedicate a bit of time to ensure that everything works fine in Humble.
To be noted that the dev and grpc executables were not converted. Plus there is a performance issue when publishing trajectory at very high frequency.