Mapping with Ouster Sensors

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:

  1. Convert the capture to PCD/PLY format

    1. https://static.ouster.dev/sdk-docs/python/examples/conversion.html#pcaps-to-ply

    2. PLY unit is in meters

  2. Import it into CloudCompare

  3. Roughly align the point clouds to each other:

    1. align cloud tools image-20241031-193807.png

    2. translate/rotate command (under Edit)

      1. You can use this to limit the movement of the point cloud

      2. image-20241031-195632.png

  4. Use the cloud registration tool for finer alignment image-20241031-194947.png

    1. When this is finished, a dialog should appear with a 4x4 matrix representing the transformation

      image-20241115-200436.png

      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

 

alignment-tutorial (1).mp4

 

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

    • image-20250807-151957.png

       

    • 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