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