Releases: ouster-lidar/ouster-sdk
OusterSDK + Ouster CLI Release 0.13.1
Latest 20241023 / Python Ouster SDK v0.13.1
Important: as of 0.13.0, the SDK is no longer compatible with firmware versions older than 2.1.0.
- Add support for directly using IPv6 addresses for sensors in the CLI and in sensor clients.
- Typing '?' now displays the visualizer keyboard shortcuts in the visualizer window.
- Removed the
async_client_example.cpp
example. - Un-deprecated
ScanBatcher::ScanBatcher(size_t, const packet_format&)
to remove a warning. (But please useScanBatcher::ScanBatcher(const sensor_info&)
instead.) - [BREAKING] Removed the
input_row_major
parameter from thedewarp
function. (dewarp
now infers the array type.) - [BREAKING] Renamed
DEFAULT_HTTP_REQUEST_TIMEOUT_SECONDS
toLONG_HTTP_REQUEST_TIMEOUT_SECONDS
. - [BREAKING] Changed the default value of
LidarScanVizAccumulatorsConfig.accum_min_dist_num
from1
to0
. - [BUGFIX] Fixed a visualizer glitch causing drawables not to render if added after a call to
PointViz::update()
but beforePointViz::run()
orPointViz::run_once()
. - [BUGFIX] Fixed a visualizer crash when using
HIGHLIGHT_SECOND
mode with single-return datasets. - [BUGFIX] Fixed an issue with the 2d images not updating when cycled during pause.
- [BUGFIX] Fixed a bug that the first scan pose it not identity when using slice slam command on a slam output osf file
- [BUGFIX] Re-introduce the RAW field option
Known Issues
- Using an unbounded slice (e.g. with
slice 100:
during visualization can cause the source to loop back to the beginning (outside of the slice) when the source is a pcap file or an OSF saved with an earlier version of the SDK. - A race condition in
PointViz
event handers occasionally causes a crash or unexpected results.
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
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
OusterSDK + Ouster CLI 2024 Q3 Release
Latest 20241004 / Python Ouster SDK v0.13.0
Important: as of 0.13.0, the SDK is no longer compatible with firmware versions older than 2.1.0.
ouster_osf
- Add full index of both receive and sensor timestamps to metadata
- Speed up opening of OSF files with index
- OSF now saves alert flags, thermal countdown and status, shot limiting countdown and status from
LidarScan
. - [BUGFIX] Fix OSF being unable to load LidarScans containing only custom fields
- [BUGFIX] Fix OSF not flushed when the user pressed CTRL-C more than once
- [BUGFIX] Fix improper timestamps when saving OSF on MacOS(m-series) and Windows
- [BUGFIX] Fix an issue with destaggering images after modifying
SensorInfo
in anOsfScanSource
. - [BUGFIX] Fix an issue loading extrinsics from OSF metadata into a
SensorInfo
inOsfScanSource
. - [BREAKING] Remove
ChunksLayout
andChunkRef
from Python API.
ouster_client/Python SDK
- Add support for reading and writing ROS1 and ROS2 bag files
- Add new sensor client interface
ouster::sensor::SensorClient
which supports multiple sensors as well as multiple sensors and IMU data on the same port - Add higher level sensor client interface ```ouster::sensor::SensorScanSource
which produces
LidarScan`` s from multiple sensors - Add
ouster.sdk.client.SensorPacketSource
which receives packets from multiple sensors - Add support for multiple sensors to
ouster.sdk.sensor.SensorScanSource
- Greatly reduced redundant HTTP API calls to the sensor during initialization
- Deserialize FLAGS fields in each profile by default
- Add support for IPv6 multicast
- Add
field_names
argument to each scan source and toopen_source
to specify which fields to decode - Add metadata validation functionality
- Add vendored json library
- Improved multi sensor pcap reading
- Improve
ScanBatcher
to releaseLidarScan
as soon as they are completed ScanBatcher
now adds alert flags, thermal countdown, and shot limiting countdown toLidarScan
.- Use index to speed up
ouster-cli source .osf info
- Use index to speed up slicing of indexed OSF sources when sliced immediately after the
source
command - Add
LidarScan.get_first_valid_column_timestamp()
- Add
crc
andcalculate_crc
methods toouster::sensor::packet_format
for obtaining or calculating (respectively) the CRC64 of a packet. scan_to_packets
now creates packets with alert flags, thermal countdown and status, shot limiting countdown and status, and CRC64.- Add
ouster::pose_util::dewarp
C++ function to de-warp aLidarScan
(similar toouster.sdk.pose_util
in the Python API.) - Add a constructor
LidarScan(const ouster::sensor::sensor_info&)
. - Always use
nonstd::optional
instead of drop-instd::optional
from https://github.com/martinmoene/optional-lite.git to reduce issues associated with mixing C++14 and C++17. - Add
w()
andh()
methods tosensor_info
in C++ andw
andh
properties toSensorInfo
in Python. - [BUGFIX] fix automatic UDP dest for FW 2.3 sensors.
- [BREAKING] Remove
ouster::make_xyz_lut(const ouster::sensor::sensor_info&)
. (Usemake_xyz_lut(const sensor::sensor_info& sensor, bool use_extrinsics)
instead.) - [BREAKING] changed REFLECTIVITY channel field size to 8 bits. (Important - this makes the SDK incompatible with FW 2.0 and 2.1.)
- [BREAKING] Removed
UDPPacketSource
andBufferedUDPSource
. - [BREAKING] Removed
ouster.sdk.util.firmware_version(hostname)
please useouster.sdk.client.SensorHttp.create(hostname).firmware_version()
instead - [BREAKING]
open_source
no longer automatically finds and applies extrinsics fromsensor_extrinsics.json
files. Use theextrinsics
argument instead to specify the path to the relevant extrinsics file instead. - [BREAKING] Deprecated
osf.Scans(...)
for ``osf.OsfScanSource(...).single_source(0)```. - [BREAKING] Deprecated
client.Sensor(...)
for ``client.SensorPacketSource(...).single_source(0)```. - [BREAKING] Deprecated
pcap.Pcap(...)
for ``pcap.PcapMultiPacketReader(...).single_source(0)```. - [BREAKING] Deprecated
ScanBatcher::ScanBatcher(size_t, const packet_format&)
forScanBatcher::ScanBatcher(const sensor_info&)
. - [FUTURE BREAKING] Removing all instances of jsoncpp's
Json::Value
from the public C++ API methods in favor ofstd::string
.
ouster_viz
LidarScanViz
now supports multi-sensor datasets.- Add Python callback registration methods for mouse button and scroll events from
PointViz
. - Add Python and C++ callback registration methods for frame buffer resize events.
- Add
MouseButton
,MouseButtonEvent
, andEventModifierKeys
enums. - Add methods
aspect_ratio
,normalized_coordinates
, andwindow_coordinates
toviz::WindowCtx
. - Add method
window_coordinates_to_image_pixel
toviz::Image
. (Seeviz_events_example.cpp
for an example.) - Add
current_camera()
method toPointViz
. - [BREAKING]
SimpleViz
no longer accepts aScansAccumulator
instance and now accepts scan/map accumulation parameters as keyword args in its constructor. - [BREAKING]
ScansAccumulator
is split into several different classes:ScansAccumulator
,MapAccumulator
,TracksAccumulator
, andLidarScanVizAccumulators
. - [BREAKING] changed
PointViz
mouse button callback to fire for both mouse button press and release events. - [BREAKING] changed
PointViz
mouse button callback signature to use the new enums. - [BREAKING] removed
bool update_on_input()
andupdate_on_input(bool)
methods fromPointViz
. - [BUGFIX] SimpleViz throws a 'generator already executing' exception.
ouster_cli
- Add support for reading and writing ROS1 and ROS2 bag files.
- Add support for working with multi scan sources.
- Add
--fields
argument toouster-cli source
to specify which fields to decode. - Add metadata validation utility.
- [BUGFIX] Program doesn't terminate immediately when pressing CTRL-C the first time when streaming from a live sensor.
- [BUGFIX] Fix some errors that appeared when running
ouster-cli util benchmark
- [BREAKING]
source
no longer automatically finds and applies extrinsics fromsensor_extrinsics.json
files. Use the-E
argument instead to specify the path to the relevant extrinsics file instead. - [BREAKING] Moved raw recording functionality for BAG and PCAP to
ouster-cli source ... record_raw
command. - [BREAKING] CLI plugins now need to handle a list of Optional[LidarScan] instead of a single LidarScan to support multi sources.
mapping
- Update KissICP version from 0.4.0 to 1.0.0.
- Add multi-sensor support.
Known issues
-
ouster-cli discover may not provide info for sensors using IPv6 link-local
networks on Python 3.8 or with older versions of zeroconf. -
ouster-cli when combining
slice
command withviz
the program will
exit once iterate over the selected range of scans even when
the--on-eof
option is set toloop
.- workaround: to have
viz
loop over the selected range, first perform a
slice
withsave
, then playback the generated file.
- workaround: to have
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
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
OusterSDK + Ouster CLI 2024 Q2 Release
Latest 20240703 / Python Ouster SDK v0.12.0
Important: ouster-sdk installed from pypi now requires glibc >= 2.28.
ouster_client/Python SDK
-
Add support for adding custom fields to
LidarScan
s withadd_field
anddel_field
-
Added per-request timeout arguments to
SensorHttp
-
Added sensor user_data to
sensor_info/SensorInfo
and metadata files -
Removed
updated_metadata_string()
andoriginal_string()
fromsensor_info
-
Added
to_json_string()
tosensor_info
to convert asensor_info
to a non-legacy
metadata JSON string -
Unified Python and C++
Packet
andPacketFormat
classes -
Added
validate
function toLidarPacket
andImuPacket
to check for ID and size mismatches -
[BREAKING] LidarScan's width and height have been switched to size_t from ptrdiff_t in C++
-
Refactor metadata parsing
-
Add
get_version
tosensor_info/SensorInfo
to retrieve parsed version information -
Add
get_product_info
tosensor_info/SensorInfo
to retrieve parsed lidar model information -
Raise an exception rather than throw an unrelated error when multiple viable metadata files are found for a given PCAP
-
Add ability to slice a scan source, returning a new sliced ScanSource
-
[BREAKING] Removed
hostname
in PythonSensorInfo
andname
from C++sensor_info
-
[BREAKING] Removed
udp_port_lidar
,udp_port_imu
andmode
from C++sensor_info
-
[BREAKING] Deprecated
udp_port_lidar
,udp_port_imu
andmode
in PythonSensorInfo
.
These fields now point to the equivalent fields inside ofSensorInfo::config
. -
[BREAKING] Removed
cols
andfrequency
fromLidarMode
in Python -
[BREAKING] Deprecated
data
andcapture_timestamp
from PythonPacket
-
[BREAKING] Removed methods from Python
ImuPacket
andLidarPacket
classes that simply wrappedPacketFormat
-
[BREAKING] Removed
begin()
andend()
iterators ofLidarScan
in C++ -
[BREAKING] Remove deprecated package stubs added in previous 0.11 release.
-
[BREAKING] Replaced integer backed
ChanField
enumerations with strings. -
[BREAKING] Removed
CUSTOM0
throughCUSTOM9
ChanField enumerations. -
[BREAKING] Extra fields in sensor metadata are now ignored and discarded if saved from the resulting
sensor_info/SensorInfo
-
[BUGFIX] Prevent last scan from being emitted twice for PCAP
-
[BUGFIX] Fix corrupted packets due to poor handling of fragmented packet drop in PCAPs
-
[BUGFIX] Fix possible crash when working with custom UDPProfileLidars
ouster_viz
-
Support viewing custom
LidarScan
fields in viz -
Support viewing custom
LidarScan
3 channel fields in viz as RGB -
[BUGFIX] Prevent OpenBLAS from using high amounts of CPU spin waiting
ouster_osf
-
Support saving custom
LidarScan
fields to OSF files -
[BREAKING] OsfWriter now takes in an optional list of fields to save rather than a list of fields and ChanFieldTypes to cast to
ouster-cli
-
Added support for slicing using time to
ouster-cli source ... slice
-
Add sensor
ouster-cli source ... userdata
command to set and retrieve userdata on a sensor -
Add chainable
ouster-cli source ... stats
command -
Add chainable
ouster-cli source ... clip
command to discard points outside a provided range -
Add
--rate max
option to ``ouster-cli source ... viz``` -
Improve argument naming and descriptions for
ouster-cli source ... viz
map and accum options -
[BUGFIX] Prevent dropped frames from live sensors by consuming scans as fast as they come in rather than sleeping
mapping
- Move mapping into the sdk as
ouster.sdk.mapping
- Better handle looping while mapping
- Improve automatic downsample voxel size calculation
other
- Updated VCPKG libraries to 2024.04.26
Known issues
- ouster-cli discover may not provide info for sensors using IPv6 link-local
networks on Python 3.8 or with older versions of zeroconf. - ouster-cli when combining
slice
command withviz
the program will
exit once iterate over the selected range of scans even when
the--on-eof
option is set toloop
.- workaround: to have
viz
loop over the selected range, first perform a
slice
withsave
, then playback the generated file.
- workaround: to have
Contributors
@akatumalla-ouster, Alekhya Katumalla
@chrisbayruns, Chris Bayruns
@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
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.
Public domain photo by Alan Kyker
OusterSDK + Ouster CLI 2024 Q1 Release
20240425 / Python Ouster SDK v0.11.0
Important notes
- Dropped support for python3.7
- Dropped support macOS 10.15
- This will be the last release that supports Ubuntu 18.04.
- Moved all library level modules under
ouster.sdk
, this includesouster.client
,ouster.pcap
ouster.osf
. So the new access name will beouster.sdk.client
,ouster.sdk.pcap
and so on - [BREAKING] many of the
ouster-cli
commands and arguments have changed (see below.) - [BREAKING] moved
configure_sensor
method toouster.sdk.sensor.util
module - [BREAKING] removed the
pcap_to_osf
method.
examples
- Added a new
async_client_example.cpp
C++ example.
Python SDK
- Add support for python 3.12, including wheels on pypi
- Updated VCPKG libraries to 2023.10.19
- New
ScanSource
API:- Added new
MultiScanSource
that supports streaming and manipulating LidarScan frames
from multiple concurrent LidarScan sources- For non-live sources the
MultiScanSource
have the option to choose LidarScan(s) by index
or choose a subset of scans using slicing operation - The
MultiScanSource
interface has the ability to fallback toScanSource
using the
single_source(sensor_idx)
,ScanSource
interface yield a single LidarScan on iteration
rather than a List - The
ScanSource
interface obtained viasingle_source
method supports same indexing and
and slicing operations as theMultiScanSource
- For non-live sources the
- Added a generic
open_source
that accepts sensor urls, or a path to a pcap recording
or an osf file - Add explicit flag
index
to index unindexed osf files, if flag is set toTrue
the osf file
will be indexed and the index will be saved to the file on first attempt - Display a progress bar during index of pcap file or osf (if unindexed)
- Added new
- Improved the robustness of the
resolve_metadata
method used to
automatically identify the sensor metadata associated with a PCAP source. - [bugfix] SimpleViz complains about missing fields
- [bugfix] Gracefully handle failed sensor connection attempts with proper error reporting
- [bugfix] Fix assertion error when using viz stepping on a live sensor
- [bugfix] Scope MultiLidarViz imports to viz commands
- [bugfix] LidarScan yielded with improper header/status
- [bugfix] OSF ScanSource fields property doesn't report the actual fields
- Removed
ouster.sdkx
, theopen_source
command is now part ofouster.sdk
module - The
FLAGS
field is always added to the list fields of any source type by default. In case of a
dual return lidar profile then a secondFLAGS2
will also be added.
mapping
- Updated SLAM API and examples.
- Added real time frame dropping capability to SLAM API.
- The
ouster-mapping
package now usespoint-cloud-utils
instead ofopen3d
. - improved per-column pose accuracy, which is now based on the actual column timestamps
ouster-cli
- Many commands can now be chained together, e.g.
ouster-cli source <src> slam viz
. - New
save
command can output the result in a variety of formats. - Added
--ts
option for specifying the timestamps to use when saving an OSF
file. Host packet receive time is the default, but not all scan sources have
this info. Lidar packet timestamps can be used as an alternative. - Changed the output format of
ouster-cli discover
to include more information. - Added JSON format output option to
ouster-cli discover
. - Added a flag to output sensor user data to
ouster-cli discover
. - Update the minimum required version of
zeroconf
. - Removed
python-magic
package from required dependencies. - Made the output of
ouster-cli source <osf> info
much more
user-friendly. (ouster-cli source <osf> dump
gives old output.) - [breaking] changed the argument format of the
slice
command. - [breaking] removed the
--legacy
and--non-legacy
flags. - [breaking] removed the
ouster-cli mapping
,ouster-cli osf
,
ouster-cli pcap
, andouster-cli sensor
commands. - [bugfix] return a nonzero exit code on error.
- [bugfix] fix an error that occurred when setting the IMU port using the
-i
option.
ouster_client
- Added a new buffered UDP source implementation
BufferedUDPSource
. - The method
version_of_string
is marked as deprecated, useversion_from_string
instead. - Added a new method
firmware_version_from_metadata
which works across firmwares. - Added support for return order configuration parameter.
- Added support for gyro and accelerometer FSR configuration parameters.
- [bugfix]
mtp_init_client
throws a bad optional access. - [bugfix] properly handle 32-bit frame IDs from the
FUSA_RNG15_RFL8_NIR8_DUAL
sensor UDP profile.
ouster_osf
- [breaking] Greatly simplified OSF writer API with examples.
- [breaking] removed the
to_native
andfrom_native
methods. - Updated Doxygen API documentation for OSF C++ API.
- Removed support for the deprecated "standard" OSF file format. (The streaming
OSF format is still supported.) - Added
osf_file_modify_metadata
that allows updating the sensor info
associated with each lidar stream in an OSF file. - Warn the user if reading an empty or improperly indexed file.
ouster_viz
- Added scaled palettes for calibrated reflectivity.
- Distance rings can now be hidden by setting their thickness to zero.
- [bugfix] Fix some rendering issues with the distance rings.
- [bugfix] Fix potential flickering in Viz
Known issues
- ouster-cli discover may not provide info for sensors using IPv6 link-local
networks on Python 3.8 or with older versions of zeroconf. - ouster-cli when combining
slice
command withviz
the program will
exit once iterate over the selected range of scans even when
the--on-eof
option is set toloop
.- workaround: to have
viz
loop over the selected range, first perform a
slice
withsave
, then playback the generated file.
- workaround: to have
Contributors
@akatumalla-ouster, Alekhya Katumalla
@chrisbayruns, Chris Bayruns
@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
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.
Public domain photo by Alan Kyker
OusterSDK + Ouster CLI 2023 Q3 Release
20231031 / Python Ouster SDK v0.10.0
Important notes
- This release does not support Python 3.7 on macOS.
- This will be the last release that supports Python 3.7 for Linux and Windows.
- This will be the last release that supports macOS 10.15.
ouster_viz
- Added point cloud accumulation support
- Added an
PointViz::fps()
method to return the operating frame rate as adouble
ouster_client
- [BREAKING] Updates to
sensor_info
include:- new fields added:
build_date
,image_rev
,prod_pn
,status
,cal
(representing the value stored in thecalibration_status
metadata JSON key),config
(representing the value of thesensor_config
metadata JSON key) - the original JSON string is accessible via the
original_string()
method - The
updated_metadata_string()
now returns a JSON string reflecting any modifications tosensor_info
to_string
is now marked as deprecated
- new fields added:
- [BREAKING] The RANGE field defined in
parsing.cpp
, for the low data rate profile, is now 32 bits wide (originally 16 bits.)- Please note this fixes a SDK bug. The underlying UDP format is unchanged.
- [BREAKING] The NEAR_IR field defined in
parsing.cpp
, for the low data rate profile, is now 16 bits wide (originally 8 bits.)- Plase note this fixes a SDK bug. The underlying UDP format is unchanged.
- [BREAKING] changed frame_id return size to 32 bits from 16 bits
- An array of per-packet timestamps (called
packet_timestamp
) is added toLidarScan
- The client now retries failed requests to an Ouster sensor's HTTP API
- Increased the default timeout for HTTP requests to 40s
- Added FuSA UDP profile to support Ouster FW 3.1+
- Improved
ScanBatcher
performance by roughly 3x (depending on hardware) - Receive buffer size increased from 256KB to 1MB
- [bugfix] Fixed an issue that caused incorrect Cartesian point computation in the
viz.Cloud
Python class - [bugfix] Fixed an issue that resulted in some
packet_format
methods returning an uninitialized value - [bugfix] Fixed a libpcap-related linking issue
- [bugfix] Fixed an eigen 3.3-related linking issue
- [bugfix] Fixed a zero beam angle calculation issue
- [bugfix] Fixed dropped columns issue with 4096x5 and 2048x10
ouster-cli
- Added
source <FILE> slam
andsource <FILE> slam viz
commands - All metadata CLI options are changed to
-m/--metadata
- Added discovery for FW 3.1+ sensors
- Set signal multiplier by default in sensor/SOURCE sensor config
- use
PYBIND11_MODULE
instead of deprecated module constructor - remove deprecated == in pybind for
.is()
- [bugfix] Fix report of fragmentation for ouster-cli pcap/SOURCE pcap info
- [bugfix] Fixed issue regarding windows mDNS in discovery
- [bugfix] Fixed cli pcap recording timestamp issue
- [BREAKING] CSV output ordering switched
ouster.sdk
ouster-mapping
is now a required dependency- [BREAKING] change the
ouster.sdk.viz
location to theouster.viz
package, please update the references if you usedouster.sdk.viz
module - [bugfix] Fixed Windows pcap support for files larger than 2GB
- [bugfix] Fixed the order of
LidarScan
'sw
andh
keyword arguments - [bugfix] Fixed an issue with
LidarPacket
when using data recorded with older versions of Ouster Studio
Known issues
- The dependency specifier for
scipy
is invalid per PEP-440 get_config
always returns true- Repeated CTRL-C can cause a segmentation fault while visualizing a point cloud
Contributors
@bexcite, Pavlo Bashmakov
@Samahu, Ussama Naal
@chrisbayruns, Chris Bayruns
@kairenw, Kairen Wong
@mtswisher, Michael Swisher
@celentes, Tim Talashok
@akatumalla-ouster, Alekhya Katumalla
@yhao10, Hao Yuan
@twslankard, Tom Slankard
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.
Public domain photo by Alan Kyker
OusterSDK + Ouster CLI 2023 Q2 Release
20230710 / Python Ouster SDK v0.9.0
With this release we are adding a bunch of things that we've used internally at Ouster for some
time and we hope it will be useful to a broader set of users well.
Major things:
Ouster SDK Lifecycle Policies
Please checkout the details here for C++/Python versions, OSs and platforms future support.
Add Python 3.11 support
On all platforms macOS, Windows, Linux, which should get between ~15-25% performance boost to Ouster Python SDK
Ouster CLI (Python)
Command Line Tools ouster-cli that combines basic and common actions to work with sensors:
- Discover connected sensors (
ouster-cli discover
) - Configure sensors (
ouster-cli source <SENSOR> config
) - Get sensors metadata (
ouster-cli source <SENSOR> metadata
) - Record data to a pcap with metadata json stored along (
ouster-cli source <SENSOR> record
) - Visualize data from sensor or pcap (
ouster-cli source [<SENSOR> | <PCAP>] viz
) - Pcap slice and conversion operations (
ouster-cli source <PCAP> {info,slice,convert}
) - Run slam to get trajectories and registered point clouds (
ouster-cli source [<SENSOR> | <PCAP>] slam
)
Ouster Mapping (Python)
Mapping utilities + tools to save registered point clouds from pcap or running sensors that
accounts for sensor motion and deskews the cloud.
Ouster OSF (C++/Python)
C++/Python library to save stream of LidarScans with metadata. Used by mapping module to work with
scans + poses.
For more details please see the CHANGELOG.rst file.
Contributors:
@bexcite, Pavlo Bashmakov
@Samahu, Ussama Naal
@twslankard, Tom Slankard
@chrisbayruns, Chris Bayruns
@kairenw, Kairen Wong
@mtswisher, Michael Swisher
@celentes, Tim Talashok
@akatumalla-ouster, Alekhya Katumalla
@yhao10, Hao Yuan
Thank you to our contributors!
People are telling that image of Alpacas should be included in every release, so here we go:
This photo is taken by Philippe Lavoie and has been released into the public domain
20230403
20230403 / Python SDK v0.8.1
Update to SDK client. This update to the client introduces numerous improvements to the visualizer library and the main Python visualizer. It also changes the default metadata output format. Summary of changes:
- Default metadata output across all functionality switched to non-legacy format. Utility for conversion provided with Python SDK
- New method mtp_init_client to init client with multicast support (experimental). Thank you to @ShepelIlya
- SensorHttp class made public under the
ouster::sensor::util
namespace - Port guessing logic has been moved from Python to C++
- Addition of a param to skip the init_id/sn check for lidar packets with metadata in Python
- Improve logic for finding metadata files for
simple-viz
utility - introduce ImageMode and CloudeMode for viz
- add palettes for viz
- update viz camera with other objects in draw to avoid bugs
bugfix:
- remove spurious sqrt application to autoleveled images
breaking changes:
- As previously discussed,
get_metadata
now defaults to outputting the non-legacy metadata. Please refer to the migration guide for guidance on how to mitigate its effects. You should still be able to read and produce legacy metadata formats. - Many deprecations on LidarScan have been removed. Please refer to the migration guide for how to update your code.
Please be advised that FW 2.5 is compatible with both this release and previous ones. However, the FW 2.5 default lidar profile has switched from LEGACY
to RNG19_RFL8_SIG16_NIR16
. If you haven't updated your code to specify profile when creating ScanBatcher
in C++ or Scans
in Python, this may be a convenient time to do so.
Contributors:
@bexcite, Pavlo Bashmakov
@Samahu, Ussama Naal
@twslankard, Tom Slankard
@chrisbayruns, Chris Bayruns
@kairenw, Kairen Wong
@ShepelIlya
@mtswisher, Michael Swisher
@airalcorn2
Thank you to our contributors!
This photo is taken by Philippe Lavoie and has been released into the public domain
20230114
Update for FW 3.0 Release. Summary of changes:
- Adds support for FW 3.0 sensors. Sensors running FW 3.0, including OS-DOME sensors, must use this release or later. Updates to cartesian projection and signal_multiplier in conjunction with this. Access to new FW thermal features such as shot limiting and thermal shutdown statuses.
- Performance improvements to cartesian projection
- RAW_HEADERS for packing headers and footers (alpha version, may be changed/removed without notice)
- ouster_ros moved to its own repo
- Improvements to visualiation library: numerous improvements supporting screenshots, viewport changes, and attaching callbacks
- Control over logging added through
init_logger
- Flag for set_config to force reinit in conjunction with slight performance improvement (does not reinit if desired configuration matches sensor's configuration already)
Bugfixes:
- frame drop when frame_id wraps around in C++ fixed
Breaking changes:
- signal multiplier type changed to double
- make_xyz_lut takes mat4d beam_to_lidar
- dropped default parameters from shortform
init_client
and Pythonclient.Sensor()
constructor to lessen API confusion - changed default timeout on Python
Scans
andSensor
There is a migration guide available discussing these breaking changes for users in the SDK docs.
Upcoming changes:
Please be advised that this is the last release where the SDK will output the legacy metadata format by default. The SDK will continue to read the legacy format, i.e., it will continue to read old recorded data), and it will also be able to produce the legacy format if the parameter legacy=true is specified to the get_metadata function.
Also, the next release will remove a number of deprecated functions and class members in the LidarScan class.
see CHANGELOG.rst for details.
20220927
20220826
Update for FW 2.4 release. Summary of changes:
- Support FW 2.4 sensors by dropping use of deprecated parameters. Sensors running FW 2.4 must use this release or later.
- Major update to ROS driver including use of nodelets over nodes, updates to topic names, and new ROS timestamp mode
TIME_FROM_ROS_TIME
- Dropped support for Ubuntu 16.04, ROS kinetic, and building of Python wheels with Python 3.6
- Dropped support for FW < 2.0 and
ouster_ros
bags recorded withouster_example
for FW 1.13. - Build improvements for vcpkg
- Conan package Windows support
- Require C++ 14 to build
- Bug fixes and more
Please note the following for the next release:
- This is the last release where
ouster-ros
will be part of the mainouster_example
repo. It will henceforth move to its own repo
See CHANGELOG.rst for details
Please note that if you use the C++ client, we recommend that you use release 20220927, which includes a bug fix to init_client
.