Skip to content

Releases: ouster-lidar/ouster-sdk

OusterSDK + Ouster CLI Release 0.13.1

23 Oct 23:38
1aeff94
Compare
Choose a tag to compare

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 use ScanBatcher::ScanBatcher(const sensor_info&) instead.)
  • [BREAKING] Removed the input_row_major parameter from the dewarp function. (dewarp now infers the array type.)
  • [BREAKING] Renamed DEFAULT_HTTP_REQUEST_TIMEOUT_SECONDS to LONG_HTTP_REQUEST_TIMEOUT_SECONDS.
  • [BREAKING] Changed the default value of LidarScanVizAccumulatorsConfig.accum_min_dist_num from 1 to 0.
  • [BUGFIX] Fixed a visualizer glitch causing drawables not to render if added after a call to PointViz::update() but before PointViz::run() or PointViz::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.

vicuñas
By Marshallhenrie - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=62515315

OusterSDK + Ouster CLI 2024 Q3 Release

04 Oct 23:15
116aa44
Compare
Choose a tag to compare

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 an OsfScanSource.
  • [BUGFIX] Fix an issue loading extrinsics from OSF metadata into a SensorInfo in OsfScanSource.
  • [BREAKING] Remove ChunksLayout and ChunkRef 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::SensorScanSourcewhich producesLidarScan`` 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 to open_source to specify which fields to decode
  • Add metadata validation functionality
  • Add vendored json library
  • Improved multi sensor pcap reading
  • Improve ScanBatcher to release LidarScan as soon as they are completed
  • ScanBatcher now adds alert flags, thermal countdown, and shot limiting countdown to LidarScan.
  • 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 and calculate_crc methods to ouster::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 a LidarScan (similar to ouster.sdk.pose_util in the Python API.)
  • Add a constructor LidarScan(const ouster::sensor::sensor_info&).
  • Always use nonstd::optional instead of drop-in std::optional from https://github.com/martinmoene/optional-lite.git to reduce issues associated with mixing C++14 and C++17.
  • Add w() and h() methods to sensor_info in C++ and w and h properties to SensorInfo in Python.
  • [BUGFIX] fix automatic UDP dest for FW 2.3 sensors.
  • [BREAKING] Remove ouster::make_xyz_lut(const ouster::sensor::sensor_info&). (Use make_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 and BufferedUDPSource.
  • [BREAKING] Removed ouster.sdk.util.firmware_version(hostname) please use ouster.sdk.client.SensorHttp.create(hostname).firmware_version() instead
  • [BREAKING] open_source no longer automatically finds and applies extrinsics from sensor_extrinsics.json files. Use the extrinsics 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&) for ScanBatcher::ScanBatcher(const sensor_info&).
  • [FUTURE BREAKING] Removing all instances of jsoncpp's Json::Value from the public C++ API methods in favor of std::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, and EventModifierKeys enums.
  • Add methods aspect_ratio, normalized_coordinates, and window_coordinates to viz::WindowCtx.
  • Add method window_coordinates_to_image_pixel to viz::Image. (See viz_events_example.cpp for an example.)
  • Add current_camera() method to PointViz.
  • [BREAKING] SimpleViz no longer accepts a ScansAccumulator 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, and LidarScanVizAccumulators.
  • [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() and update_on_input(bool) methods from PointViz.
  • [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 to ouster-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 from sensor_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 with viz the program will
    exit once iterate over the selected range of scans even when
    the --on-eof option is set to loop.

    • workaround: to have viz loop over the selected range, first perform a
      slice with save, then playback the generated file.

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.

vicuñas
By Marshallhenrie - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=62515315

OusterSDK + Ouster CLI 2024 Q2 Release

03 Jul 23:13
7815f42
Compare
Choose a tag to compare

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 with add_field and del_field

  • Added per-request timeout arguments to SensorHttp

  • Added sensor user_data to sensor_info/SensorInfo and metadata files

  • Removed updated_metadata_string() and original_string() from sensor_info

  • Added to_json_string() to sensor_info to convert a sensor_info to a non-legacy
    metadata JSON string

  • Unified Python and C++ Packet and PacketFormat classes

  • Added validate function to LidarPacket and ImuPacket 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 to sensor_info/SensorInfo to retrieve parsed version information

  • Add get_product_info to sensor_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 Python SensorInfo and name from C++ sensor_info

  • [BREAKING] Removed udp_port_lidar, udp_port_imu and mode from C++ sensor_info

  • [BREAKING] Deprecated udp_port_lidar, udp_port_imu and mode in Python SensorInfo.
    These fields now point to the equivalent fields inside of SensorInfo::config.

  • [BREAKING] Removed cols and frequency from LidarMode in Python

  • [BREAKING] Deprecated data and capture_timestamp from Python Packet

  • [BREAKING] Removed methods from Python ImuPacket and LidarPacket classes that simply wrapped PacketFormat

  • [BREAKING] Removed begin() and end() iterators of LidarScan in C++

  • [BREAKING] Remove deprecated package stubs added in previous 0.11 release.

  • [BREAKING] Replaced integer backed ChanField enumerations with strings.

  • [BREAKING] Removed CUSTOM0 through CUSTOM9 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 with viz the program will
    exit once iterate over the selected range of scans even when
    the --on-eof option is set to loop.
    • workaround: to have viz loop over the selected range, first perform a
      slice with save, then playback the generated file.

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.

alpacas
Public domain photo by Alan Kyker

OusterSDK + Ouster CLI 2024 Q1 Release

25 Apr 23:59
0baffe8
Compare
Choose a tag to compare

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 includes ouster.client, ouster.pcap
    ouster.osf. So the new access name will be ouster.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 to ouster.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 to ScanSource using the
        single_source(sensor_idx), ScanSource interface yield a single LidarScan on iteration
        rather than a List
      • The ScanSource interface obtained via single_source method supports same indexing and
        and slicing operations as the MultiScanSource
    • 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 to True 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)
  • 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, the open_source command is now part of ouster.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 second FLAGS2 will also be added.

mapping

  • Updated SLAM API and examples.
  • Added real time frame dropping capability to SLAM API.
  • The ouster-mapping package now uses point-cloud-utils instead of open3d.
  • 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, and ouster-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, use version_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 and from_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 with viz the program will
    exit once iterate over the selected range of scans even when
    the --on-eof option is set to loop.
    • workaround: to have viz loop over the selected range, first perform a
      slice with save, then playback the generated file.

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.

alpacas
Public domain photo by Alan Kyker

OusterSDK + Ouster CLI 2023 Q3 Release

01 Nov 01:09
2898060
Compare
Choose a tag to compare

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 a double

ouster_client

  • [BREAKING] Updates to sensor_info include:
    • new fields added: build_date, image_rev, prod_pn, status, cal (representing the value stored in the calibration_status metadata JSON key), config (representing the value of the sensor_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 to sensor_info
    • to_string is now marked as deprecated
  • [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 to LidarScan
  • 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 and source <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 the ouster.viz
    package, please update the references if you used ouster.sdk.viz module
  • [bugfix] Fixed Windows pcap support for files larger than 2GB
  • [bugfix] Fixed the order of LidarScan's w and h 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.

alpacas
Public domain photo by Alan Kyker

OusterSDK + Ouster CLI 2023 Q2 Release

08 Jul 04:41
9d09711
Compare
Choose a tag to compare

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:
1600px-Alpacas
This photo is taken by Philippe Lavoie and has been released into the public domain

20230403

04 Apr 01:05
d730798
Compare
Choose a tag to compare

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!
1600px-Alpacas
This photo is taken by Philippe Lavoie and has been released into the public domain

20230114

17 Jan 21:31
202c536
Compare
Choose a tag to compare

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 Python client.Sensor() constructor to lessen API confusion
  • changed default timeout on Python Scans and Sensor

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

27 Sep 23:33
3a61f8d
Compare
Choose a tag to compare

Bug fix for longform init_client. Crucial for C++ SDK users

20220826

15 Sep 18:27
02fe2a9
Compare
Choose a tag to compare

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 with ouster_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 main ouster_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.