Mapping with Ouster Sensors
Maps can be made with one pointcloud or multiple
Mapping with one PointCloud/Ouster SLAM
Introduction
https://ouster.com/insights/blog/introduction-to-slam-simultaneous-localization-and-mapping
Getting Started
https://static.ouster.dev/sdk-docs/python/slam-api-example.html
Multiple Point Clouds
There are different applications that can combine multiple point clouds into a map.
Ouster’s Gemini & Blue City can make a live map from multiple live sensors.
Cloud Compare offers tools to merge multiple point clouds:
Convert the capture to PCD/PLY format
https://static.ouster.dev/sdk-docs/python/examples/conversion.html#pcaps-to-ply
PLY unit is in meters
Import it into CloudCompare
Roughly align the point clouds to each other:
align cloud tools
translate/rotate command (under Edit)
You can use this to limit the movement of the point cloud
Use the cloud registration tool for finer alignment
When this is finished, a dialog should appear with a 4x4 matrix representing the transformation
The screenshot above formats the matrix oddly. This is the corrected formatting:
0.999 0.002 0.052 -0.257 -0.001 1.000 -0.012 -0.072 -0.052 0.012 0.999 0.912 0.000 0.000 0.000 1.000
Demo Video
Cleaning Artifacts in Maps
There may be unwanted points in the map. Cloud Compare has a SOR tool to remove noise.
Comparing 2 PointClouds
CloudCompare offers tools to look for changes in PointCloud. Users may be interested in a change in the environment.
Other customers have used MeshLab to accomplish this (they had to downsample so their computer wouldn’t crash)
ROS Mapping Applications
The ROS driver produces PointCloud2 with the ability to choose or customize the point_type {xyz, xyzi, xyzir, ..}, there are plenty of open source ros-based slam solutions that they can choose from, including but not limited to:
Google Cartographer: Older and may not be up to date
SLAM Toolbox (Nav2): is popular for navigation and mapping
KISS: which is the same slam package we integrated into ouster-cli, they have ROS2 bindings
FAST-LIO2 is quite popular and state of the art (many other SLAM packages are merely a derivative work of this one)
Here is a summary of the most of popular packages compile by Autoware Foundation https://autowarefoundation.github.io/autoware-documentation/main/how-to-guides/integrating-autoware/creating-maps/open-source-slam/ that they can choose from, not all of which can be readily integrated by ouster-ros, meaning they may need to make changes to slam packages to get it working with ouster-ros.
-Ussama
GIS Mapping
For GIS customers, SLAM may not be accurate enough for their needs. I believe SLAM projects pointclouds on a real world coordinate system (e.g. latitude & longitude) but SLAM may accumulate errors. With at least one GIS customer, they are looking to assign each point to a real world coordinate with a synchronized GNSS.
OpenMMS
Currently I’m unaware of any open source GIS mapping projects that supports Ouster sensors. I’ve advised one customer to make their own drivers for https://www.openmms.org/wp-content/uploads/html/openmms_software.html .
Ouster Driver Advice:
OpenMMS already supports 2 different types of lidar sensors
Velodyne: rotational
Livox: flash based
The georeferencing script is where it assigned the GNSS points to each lidar point
Although Ouster os sensors operate more like Velodyne sensors, it may be simpler to use LidarScan from the SDK.
Velodyne drivers are packet based and there are calculations to turn the points cartesian
I believe Livox is XYZ based which is easy to compute for Ouster with the SDK
Customers should look at code for both when implementing Ouster Drivers