- [BUGFIX] Add --coord-frame (SENSOR|BODY|WORLD) to ouster-cli source ... filter for XYZ filtering. WORLD now applies dewarp(points, scan.pose) before thresholding, BODY remains the default for backward compatibility, and SENSOR uses XYZ without extrinsics.
- [BUGFIX] Fix crash in LidarScan.str when scans contain non-pixel fields (IMU, GNSS, ZONE, or CHAR fields). The to_string() function now properly handles these field types, with special formatting for CHAR fields to display NMEA sentences.
- [BUGFIX] Avoid divide-by-zero in IMU visualization when IMU magnitudes are zero.
- [BUGFIX] Fix AOI picker showing normalized values for unknown fields in the viz.
- [BREAKING] Renamed -F flag to -f in ouster-cli source command (short for --filter flag), which drops scans with missing data.
- [BUGFIX] PLY maker minor change (e.g. support for no valid key field, --field NONE).
- [BUGFIX] Use stderr instead of stdout for logging in ouster-cli.
- [BUGFIX] Fix filter, clip, and mask bugs: correct filter_xyz semantics (points inside bounds zeroed), restrict operations to PIXEL_FIELD only to avoid crashes with IMU/GNSS fields, and use RANGE2 coordinates for second-return fields.
- [BUGFIX] Handle unsupported ChanFieldTypes when reading OSF files: skip unsupported fields with a warning instead of crashing (forward compatibility with newer OSF files).
- Add --legacy flag for OSF export (PNG compression + drop CHAR/ZONE_STATE for SDK 0.12–0.15 compatibility), separate from --png (PNG compression only).
- [BUGFIX] Update TUM format in trajectory saving as per official specification.
- [BUGFIX] Fix viz GL buffer cleanup leaks: add missing glDeleteBuffers() for GLCuboid, GLRings, and GLImage to prevent GPU memory growth on repeated create/destroy.
- [BUGFIX] Fix ValueError in viz when resizing before scans received.
- [BUGFIX] Fix crash when saving a GIF when frame duration is negative (e.g. source has looped); fix viz deadlock when saving image recording.
- [BUGFIX] Fix improper handling of sensors with lidar data disabled.
- [BUGFIX] SLAM crashes when at least one sensor doesn't have imu data in a multi-sensor setup with the Synchronous IMU feature enabled.
- [BUGFIX] SLAM uses un-corrected timestamps when using the the inertial integration deskew method with multi-sensor unsynchronized setups.
- Pose Optimizer: constraint ID counter moved to constraint base class; constraint IDs are now logged when adding/processing constraints, and reassign constraint id when conflict instead of throwing.
- [BUGFIX] Remove the skipping on single scans in SLAM and localize pipelines for multi-sensor datasets.
- [BUGFIX] PNGs from the viz now embed the Display P3 profile so their colors match the viz window.
- Add --http-addr option to sensor_replay plugin (e.g. for use with Ouster Detect).
- Update README with community forum and support info.
- Normalize license files for GitHub detection.
Important announcements
This will be the last release that supports macOS 11.x, 12.x and 13.x.
Contributors
@chrisbayruns, Chris Bayruns
@diego-guridi , Diego Guridi
@yhao10, Hao Yuan
@kairenw, Kai Wong
@kkaly, Karthik Kalyanaraman
@matt-attack, Matthew Bries
@celentes, Tim Talashok
@twslankard, Tom Slankard
@Samahu, Ussama Naal
@spartanhaden, Haden Wasserbaech
@akatumalla-ouster, Alekhya Katumalla
@mtswisher, Michael Swisher
@bexcite, Pavlo Bashmakov
@boscosiu, Bosco Siu
@uilianries, Uilian Ries
@sleitch-ouster made their first contribution in #691
Acknowledgements
The Ouster SDK team is a small team, and we couldn't do what we do without dozens of tools and libraries produced by the open source community! We'd like to thank the folks contributing to libtins, kiss-icp, zeroconf, numpy, scipy, jsoncpp, eigen3, zlib, libpng, libcurl, Pillow, and the Pallets Project. Ouster SDK is also proudly developed on the Linux kernel with GNU tools. If your open source contribution is not mentioned here and you believe you should be acknowledged, please contact @diego-guridi , who will try to keep this list up to date.
