Skip to content

Releases: ouster-lidar/ouster_example

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.

20220608

08 Jun 22:26
64a6cbe
Compare
Choose a tag to compare

Update for FW 2.3.1 release

Single return parsing updated to match FW 2.3.1
Please note that this will be the last release to support Python 3.6, Ubuntu 16.04, and ROS kinetic.
This will also be the last release to support any FW under FW 2.0.
Additionally, future versions of the Ouster SDK will require C++ 14.

See CHANGELOG.rst for details

20220504

05 May 00:36
43107a1
Compare
Choose a tag to compare

Update for FW 2.3 release. Summary of changes:

  • Support for new FW 2.3 profiles added
  • Significant API update of PointViz library
  • Switch to glad for OpenGL loading
  • Unified Python and C++ documentation

See CHANGELOG.rst for details

20220107

13 Jan 18:47
Compare
Choose a tag to compare

Update for fw 2.2 release. Summary of changes:

  • Add support for ARM64 macOS and Linux
  • Add support for Python 3.10
  • Add lidar and imu packet profiles
  • Add lidar and imu packet profile sensor configuration parameters
  • Update C++ LidarScan, ScanBatcher to support handling data from second return
  • Update ROS driver to support handling data from second return
  • Add PoC Python bindings for ouster_viz library
  • Replace Python LidarScan with native bindings implementing the same API
  • Remove pcap stream_info API
  • Various bug fixes

See CHANGELOG.rst for details.