Skip to content

OusterSDK + Ouster CLI 2024 Q3 Release

Compare
Choose a tag to compare
@twslankard twslankard released this 04 Oct 23:15
· 2 commits to master since this release
116aa44

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