Published December 1, 2025 | Version v1
Other Open

Ouster OS2 Lidar Scans

Description

About

Readings from an Ouster OS2 lidar sensor in a basement, taken by a ground robot that starts stationary and begins to move after 10 seconds.

The *.pcap file contains a recording of the network packets with information about the point cloud emitted by the sensor. The packets were captured using Wireshark, and to replay the recording you need a *.json file and the SDK provided by Ouster for the OS2 sensor.

The SDK used to read the data is the one installed as a Python package following the instructions on the webpage (https://static.ouster.dev/sdk-docs/installation.html), version 0.13.0.

Read using CLI

To read the information, you can use the terminal tool provided by Ouster as follows:

ouster-cli source 1-to-SW.pcap viz

In the same folder where this command is executed, the file 1-to-SW.json must be included, since the tool requires this information.

Read using Python

Additionally, the following Python code is included to read the files and obtain their point clouds:

from ouster.sdk import client, pcap
import time, os
import argparse

parser = argparse.ArgumentParser(description="Example OS-2 Lidar Reader")
parser.add_argument('--pcap', type=str, help='Path to the pcap file', default='1-to-SW.pcap')
parser.add_argument('--metadata', type=str, help='Path to the metadata file', default='1-to-SW.json')

pcap_path = parser.parse_args().pcap
metadata_path = parser.parse_args().metadata

assert os.path.isfile(pcap_path), f"Pcap file not found: {pcap_path}"
assert os.path.isfile(metadata_path), f"Metadata file not found: {metadata_path}"

with open(metadata_path, 'r') as f:
    metadata = client.SensorInfo(f.read())

source = pcap.Pcap(pcap_path, metadata)
try:
    scans = client.Scans(source).__iter__()
    while(True):
        try:
            scan = next(scans) # read next scan
        except StopIteration: # reached end of pcap file
            print("Reopening pcap file...")
            scans = client.Scans(pcap.Pcap(pcap_path, metadata)).__iter__()
            scan = next(scans)
        time.sleep(0.085)
        ranges = scan.field(client.ChanField.RANGE)
        ranges_destaggered = client.destagger(source.metadata, ranges)

        print(ranges_destaggered)
except KeyboardInterrupt:
    print("Exiting...")

finally:
    source.close()

Funding Information

Funded by the European Commission Horizon Europe programme through project SHEREC number 101136056. Neither the European Union nor the granting authority can be held responsible for the data.

Disclaimer Information

This data is provided as-is. The authors and its parties assume no responsibility, warranty or liability including the fitness for a particular purpose apart from assurance that the data acquisition or generation methodology was followed according to the given description.

 

Files

1-to-SW.json

Files (63.0 MB)

Name Size Download all
md5:ee5b97769134fb526af680937a55906a
4.4 kB Preview Download
md5:a62be9ecdab77f8d545abf869ca8d526
63.0 MB Download

Additional details

Funding

European Commission
SHEREC - SAFE, HEALTHY AND ENVIRONMENTAL SHIP RECYCLING 101136056