At the beginning of this year I had started this fun project. A global traversability mapping library which generates 3D traversability maps with 3D Pointclouds. This can be seamlessly integrated with any SLAM (Visual or LiDAR based) to generate a global map in real-time simply by providing a constant stream of Pointclouds along with the KeyFrame Poses.
This library also seamlessly handles loop closing and optimization of keyframe poses from the SLAM. I started writing this with ORB-SLAM3 as the backend so as a plus point, this also has the feature to merge multiple traversability maps into one in case there is a loss of tracking and a new local map is made.
I’m so pleased to release this as an open-source project. Hope this is useful to you all
Here is the link for the code and instructions to use: https://github.com/suchetanrs/traversability_mapping
Traversability is inherently connected to the morphology of a robot. What morphology type did you use here? Or is it the generic normal-based traversability estimation?
The addition that this package has is the reconstruction of traversability in case the keyframe poses are updated upon optimization and seamless integration with any SLAM backend…
Thanks for the explanation. One more question - is the traversability directional, or is it assumed each cell in the gridmap can be equally accessed from all directions?
The traversability is in some sense directional because the pointcloud before processing are transformed to a frame aligned with gravity and the traversability is estimated hence.
The pointcloud is needed to be filtered to eliminate points that are above the robot height to ensure correct estimation.
I’m not sure what exactly you meant by directional…please correct me if my answer is not what you asked for
Hi @alexs !
I’m currently working on a simple package that provides integration with this library via ROS 2. It will be out there with the demo very soon
By directional I mean the fact that some obstacles may only be traversable when approached from a certain direction, while being untraversable from other directions (imagine a robot that can go down a staircase but cannot climb it up).
If we simplify your example and just assume the stairs is a slope and the robot cannot go up the slope because it is too steep and can only go down, the mapping does not differentiate between them and the cells are treated as not traversable from both the directions so the traversability here is not directional.
However, I think it’s important to include this criteria of directionality…thanks for the suggestion!
I think it is possible if we have some sort of lidar odometry that runs instead of the SLAM. However, because its not optimized I’m not sure if the generated map will be accurate enough. Please correct me if I am wrong.
In reference to this library, this is not implemented as of now.