- The performance of the
destaggermethod has been improved by two folds. - [BUGFIX] Fixed crash in SLAM automatic voxel size detection if the first scans have no valid range reading.
- Add pose optimize option to the ouster-cli command to refine the SLAM output.
- [BREAKING] Deprecate
PointViz::push_frame_buffer_handler()andPointViz::pop_frame_buffer_handler().
in C++ and Pyton in favor the new screenshot facilitiesget_screenshot(), save_screenshot(), and toggle_screen_recording(). - Switch to using
cartesianTas the defaultcartesianmethod implementation for improved performance. - Add roll camera movement to PointViz using 'Q' and 'E' keys.
- Add finer camera movement to PointViz when using SHIFT modifier for keys 'W', 'A','S','D','Q','E' '-' and '='.
- Repurpose the E key in the viz for roll camera motion. The images size can now be adjusted using 'I/SHIFT + I'.
- [BREAKING] Rename
window_coordinates_to_image_pixeltoviewport_coordinates_to_image_pixelin C++ and Python.
ouster_client/Python SDK
- Support opening CDR encoded MCAP files with BagPacketSource and BagScanSource and the CLI.
- [BUGFIX] Fix incorrect range check for LidarScan::complete when start > end.
- Add data_format::packets_per_frame() and data_format::valid_columns_per_frame().
- [BUGFIX] Fix error when decoding OSFs with columns_per_packet != 16.
- Add a new
save_trajectorycommand to dump the slam output to csv file (TUM format). - Add a new method
rotation_matrix_to_quaternionto convert a rotation matrix to a quaternion. - [BREAKING] Rename ouster.sdk.client to ouster.sdk.core.
- [BREAKING] Move get_config, set_config, Sensor, SensorHttp, SensorPacketSource, SensorClient, ClientError,
ClientOverflow, ClientTimeout from ouster.sdk.client to ouster.sdk.sensor. - Propogate
initial_poseto SlamEngine and Localization so the reported poses starts from the initial pose. - Add a new
filteroperation to the SDK API and CLI, which filters points based on their projected coordinates. - Ported
ScanSourceandopen_sourceto C++. - [BREAKING] Remove
MultiScanSourcemigrating functionality toScanSourcewhich yields List[Optional[LidarScan]]. - [BREAKING] Remove
PacketMultiSourcemigrating functionality toPacketSourcewhich yields Tuple[int, Packet]. - [BREAKING] Remove
SensorScanSource.get_sensor_info()in favor ofSensorScanSource.sensor_info. - [BREAKING] Deprecate
ScanSource.metadataandPacketSource.metadatain favor of*.sensor_info. - [BREAKING]
open_sourceor Scan/Packet source constructors throw if unsupported parameters are provided. - [BREAKING] Remove deprecated
pcap.Pcapsensor.Sensorandosf.Osfclasses. - [BREAKING] Deprecated
ScanSource.sensors_count. Use length ofScanSource.sensor_infoinstead. - [BREAKING] Remove
ScanSource.fieldsScanSource.field_typesScanSource.is_seekable - [BREAKING] Remove
completeandcycleoptions fromopen_source. Please check for completeness withLidarScan.complete()or cycle manually instead. - [BREAKING] Separate collation/single sensor streams in
open_sourceinto separatesensor_idx=intandcollate=bool. By default sensor_idx=-1 (all sensors) and collate=True (collate). - Added
open_packet_sourcefunction to open packet sources similar toopen_source. - [BREAKING] Deprecate
ouster.sdk.util.resolve_extrinsicsfor explicitly passing extrinsic file names to sources. - [BREAKING] Deprecate
ouster.sdk.sensor.util.build_sensor_configfor the same functionality already included in SensorScanSource/SensorPacketSource. - Pin
kiss-icpto1.2.2. - Remove
point-cloud-utilsas a dependency. - Add ability to set abitrary parameters via
extra_optionsin theSensorConfig. - Add support for arbitrary number of addresses per sensor in
SensorClient. - Add generic
destaggerto C++ API. - [BREAKING] Remove
ouster.sdk.core.FieldDTypeused in type annotations and replaced withtype. - [BREAKING] Remove
ouster.sdk.core.FieldTypesused in type annotations and replaced withList[ouster.sdk.coreFieldTypes]. - Add a new method
ls_showto view a set of LidarScans to the viz API. - Add python 3.13 support
- [BREAKING] Deprecate
auto_start_flagin favor ofoperating_mode. - [BREAKING] Deprecate
parse_configin favor ofparse_and_validate_config. - [BREAKING] Deprecate
ScanBatcher(size_t w, const sensor::packet_format& pf)in favor ofScanBatcher::ScanBatcher(const sensor_info&). - [BETA] Add
ouster.sdk.core.read_pointcloud()method to load X Y and Z from PLY and PCD files. - [BETA] Add
ouster.sdk.core.voxel_downsample()method to downsample pointclouds using a voxel grid. - Remove dependency on Point Cloud Utils.
- Support opening older ROS 2 bag files that use ouster_msgs/PacketMsg.
- [BUGFIX] Ensure the initial pose matrices are orthonormal before using them in the slam.
- [BREAKING]
open_sourcefield_namesargument now will cause the scan source to load no fields if provided an empty array instead of loading all fields. ProvideNoneto load all fields. - Add the
error_handleroption toopen_sourceandScanSourceOptions, which allows the user to provide a callback to handle error messages for some scan sources.
ouster_cli
- Add additional information on incomplete scans to
ouster-cli source ... stats. - Fix looping behavior of the viz in the CLI when a clip is present.
- The plumb command is now chainable and works with multiple sensors simultaneously.
- Add
--maximizeflag to the viz command to maximize the visualizer when launched. - Modify code to resolve metadata from bag path if
--metais not provided for rosbag files. - Add
--sensor-idxargument to source command to allow selecting a single sensor stream. - Add the ability save LidarScan frames as a series of png images when
.pngis specified as the output file forsavecommand. - Add the
--allow-major-version-mismatchoption to thesourcecommand to allow best-effort loading of OSF files that are not supported by the current SDK version.
ouster_osf
- Improve osf threading model.
- Add version to
infocommand output andReaderfor OSF files. - Add an optional error handler callback as an argument the
Readerclass constructor. - Support an optional error handler callback as an option for
OsfScanSource. OsfScanSourceandReadernow emit an error or warning if the major or minor version is not supported by the current SDK version.- [BREAKING] return an
ouster::util::versionfromOsfFile::version()instead of an integer.
ouster_viz
- [BUGFIX] Fix AOI label position on macOS.
- Update AOI to allow right click and release without mouse dragging to select a single point.
- [BREAKING] Modify
WindowCtx::normalized_coordinatesto operate in viewport coordinates rather than window coordinates. - [BREAKING] Modify
WindowCtx::window_coordinatesto operate in viewport coordinates rather than window coordinates and rename toWindowCtx::viewport_coordinates. - [BREAKING] Modify
Image::image_pixel_to_window_coordinatesto operate in viewport coordinates rather than window coordinates and rename toImage::image_pixel_to_viewport_coordinates. - Add RING coloring mode to
LidarScanViz. - Add rainbow color palette to
LidarScanViz. - Support (K, 3) and (K, 4) forms for RGB/RGBA key data for Clouds.
- Add screenshot and image recording features to PointViz that allow screenshot size independent of the window size.
- Add a new camera mode
LidarScanViz.CameraMode.FOLLOW_ROTATION_LOCKED. - Discard points with 0 range rather than show them at sensor origin.
- Allow flipping 2D images in
LidarScanVizwith CTRL+I. - Add
LidarScanViz.select_img_modeandLidarScanViz.select_cloud_modeto select specific fields to display.
Important announcements
- As of 0.13.0, the SDK is no longer compatible with firmware versions older than 2.1.0.
- Official SDK support for firmware versions 2.2 and 2.3 will end at the end of June, 2025.
- Update vcpkg ref of build to 2025.02.14.
Contributors
@akatumalla-ouster, Alekhya Katumalla
@chrisbayruns, Chris Bayruns
@diego-guridi , Diego Guridi
@yhao10, Hao Yuan
@kairenw, Kai Wong
@kkaly, Karthik Kalyanaraman
@matt-attack, Matthew Bries
@mtswisher, Michael Swisher
@bexcite, Pavlo Bashmakov
@celentes, Tim Talashok
@twslankard, Tom Slankard
@Samahu, Ussama Naal
New Contributors
- @boscosiu made their first contribution in #641
- @uilianries made their first contribution in #656
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 @twslankard, who will try to keep this list up to date.
By Marshallhenrie - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=62515315
