- The performance of the
destagger
method 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
cartesianT
as the defaultcartesian
method 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_pixel
toviewport_coordinates_to_image_pixel
in 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_trajectory
command to dump the slam output to csv file (TUM format). - Add a new method
rotation_matrix_to_quaternion
to 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_pose
to SlamEngine and Localization so the reported poses starts from the initial pose. - Add a new
filter
operation to the SDK API and CLI, which filters points based on their projected coordinates. - Ported
ScanSource
andopen_source
to C++. - [BREAKING] Remove
MultiScanSource
migrating functionality toScanSource
which yields List[Optional[LidarScan]]. - [BREAKING] Remove
PacketMultiSource
migrating functionality toPacketSource
which yields Tuple[int, Packet]. - [BREAKING] Remove
SensorScanSource.get_sensor_info()
in favor ofSensorScanSource.sensor_info
. - [BREAKING] Deprecate
ScanSource.metadata
andPacketSource.metadata
in favor of*.sensor_info
. - [BREAKING]
open_source
or Scan/Packet source constructors throw if unsupported parameters are provided. - [BREAKING] Remove deprecated
pcap.Pcap
sensor.Sensor
andosf.Osf
classes. - [BREAKING] Deprecated
ScanSource.sensors_count
. Use length ofScanSource.sensor_info
instead. - [BREAKING] Remove
ScanSource.fields
ScanSource.field_types
ScanSource.is_seekable
- [BREAKING] Remove
complete
andcycle
options fromopen_source
. Please check for completeness withLidarScan.complete()
or cycle manually instead. - [BREAKING] Separate collation/single sensor streams in
open_source
into separatesensor_idx=int
andcollate=bool
. By default sensor_idx=-1 (all sensors) and collate=True (collate). - Added
open_packet_source
function to open packet sources similar toopen_source
. - [BREAKING] Deprecate
ouster.sdk.util.resolve_extrinsics
for explicitly passing extrinsic file names to sources. - [BREAKING] Deprecate
ouster.sdk.sensor.util.build_sensor_config
for the same functionality already included in SensorScanSource/SensorPacketSource. - Pin
kiss-icp
to1.2.2
. - Remove
point-cloud-utils
as a dependency. - Add ability to set abitrary parameters via
extra_options
in theSensorConfig
. - Add support for arbitrary number of addresses per sensor in
SensorClient
. - Add generic
destagger
to C++ API. - [BREAKING] Remove
ouster.sdk.core.FieldDType
used in type annotations and replaced withtype
. - [BREAKING] Remove
ouster.sdk.core.FieldTypes
used in type annotations and replaced withList[ouster.sdk.coreFieldTypes]
. - Add a new method
ls_show
to view a set of LidarScans to the viz API. - Add python 3.13 support
- [BREAKING] Deprecate
auto_start_flag
in favor ofoperating_mode
. - [BREAKING] Deprecate
parse_config
in 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_source
field_names
argument now will cause the scan source to load no fields if provided an empty array instead of loading all fields. ProvideNone
to load all fields. - Add the
error_handler
option toopen_source
andScanSourceOptions
, 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
--maximize
flag to the viz command to maximize the visualizer when launched. - Modify code to resolve metadata from bag path if
--meta
is not provided for rosbag files. - Add
--sensor-idx
argument to source command to allow selecting a single sensor stream. - Add the ability save LidarScan frames as a series of png images when
.png
is specified as the output file forsave
command. - Add the
--allow-major-version-mismatch
option to thesource
command 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
info
command output andReader
for OSF files. - Add an optional error handler callback as an argument the
Reader
class constructor. - Support an optional error handler callback as an option for
OsfScanSource
. OsfScanSource
andReader
now emit an error or warning if the major or minor version is not supported by the current SDK version.- [BREAKING] return an
ouster::util::version
fromOsfFile::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_coordinates
to operate in viewport coordinates rather than window coordinates. - [BREAKING] Modify
WindowCtx::window_coordinates
to operate in viewport coordinates rather than window coordinates and rename toWindowCtx::viewport_coordinates
. - [BREAKING] Modify
Image::image_pixel_to_window_coordinates
to 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
LidarScanViz
with CTRL+I. - Add
LidarScanViz.select_img_mode
andLidarScanViz.select_cloud_mode
to 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