Source code for ouster.sdk.examples.lidar_frame
import argparse
import numpy as np
from ouster.sdk import core
[docs]
def lidar_frame_example(info: core.SensorInfo) -> core.LidarFrame:
# ![doc-stag-python-lidarframe-constructor]
frame = core.LidarFrame(info)
# ![doc-etag-python-lidarframe-constructor]
# ![doc-stag-python-lidarframe-frame-id]
frame_id = frame.frame_id # frame_id is an int # noqa: F841
# ![doc-etag-python-lidarframe-frame-id]
# ![doc-stag-python-lidarframe-headers]
# each of these has as many entries as there are columns in the frame
ts_0 = frame.timestamp[0] # noqa: F841
measurement_id_0 = frame.measurement_id[0] # noqa: F841
status_0 = frame.status[0] # noqa: F841
# ![doc-etag-python-lidarframe-headers]
# ![doc-stag-python-lidarframe-fields]
# Distance measurements in millimeters
ranges = frame.field(core.ChanField.RANGE)
# Surface reflectance values
reflectivity = frame.field(core.ChanField.REFLECTIVITY) # noqa: F841
# Near IR measurements
near_ir = frame.field(core.ChanField.NEAR_IR) # noqa: F841
# Second return measurements (if available and enabled)
ranges2 = frame.field(core.ChanField.RANGE2) # noqa: F841
reflectivity2 = frame.field(core.ChanField.REFLECTIVITY2) # noqa: F841
# ![doc-etag-python-lidarframe-fields]
# ![doc-stag-python-frame-add-field]
lidar_frame = core.LidarFrame(info, [])
lidar_frame.add_field("my-custom-field", np.uint8, ())
lidar_frame.field("my-custom-field")[:] = 1 # set all pixels
lidar_frame.field("my-custom-field")[10:20, 10:20] = 255 # set block of pixels
# ![doc-etag-python-frame-add-field]
# ![doc-stag-python-lidarframe-destagger]
ranges = frame.field(core.ChanField.REFLECTIVITY)
ranges_destaggered = core.destagger(info, ranges) # noqa: F841
# ![doc-etag-python-lidarframe-destagger]
return lidar_frame
if __name__ == "__main__":
# Load real sensor metadata (JSON) provided via command-line
parser = argparse.ArgumentParser(description="LidarFrame Python example")
parser.add_argument("json_file", help="Path to sensor metadata JSON file", nargs='?')
args, _ = parser.parse_known_args()
if args.json_file is None:
raise RuntimeError("Usage: python lidar_frame.py <metadata.json>")
with open(args.json_file, "r") as f:
info = core.SensorInfo(f.read())
lidar_frame_example(info)