- update supported vcpkg tag to 2022.02.23
- update to manylinux2014 for x64 linux
ouster-sdkwheels - Ouster SDK documentation overhaul with C++/Python APIs in one place
- sample data updated to firmware 2.3
- fix the behavior of
BeamUniformityCorrectoron azimuth-windowed data by ignoring zeroed out columns - add overloads in
image_processing.hto work with single-precision floats - add support for new
RNG19_RFL8_SIG16_NIR16single-return andRNG15_RFL8_NIR8low-bandwidth lidar UDP profiles introduced in firmware 2.3
- switch to glad for OpenGL loading. GLEW is still supported for developer builds
- breaking change: significant API update of the
PointVizlibrary. See documentation for details - the
simple_vizexample app andLidarScanVizutility have been removed. Equivalent functionality is now provided via Python - add basic support for drawing 2d and 3d text labels
- update to OpenGL 3.3
- fix a bug where incorrectly sized packets read from the network could cause the client thread to silently exit, resulting in a timeout
- fix
client.Scansnot raising a timeout when using thecompleteflag and receiving only incomplete scans. This could cause readings scans to hang in rare situations - added bindings for the new
PointVizAPI and a new module for higher-level visualizer utilities inouster.sdk.viz. See API documentation for details - the
ouster-sdkpackage now includes an example visualizer,simple-viz, which will be installed on that path for the Python environment
- support new fw 2.3 profiles by checking for inclusion of fields when creating point cloud. Missing fields are filled with zeroes
- add support for arm64 macos and linux. Releases are now built and tested on these platforms
- add support for Python 3.10
- update supported vcpkg tag to 2021.05.12
- add preliminary cpack and install support. It should be possible to use a pre-built SDK package instead of including the SDK in the build tree of your project
- update cmake package version to 0.3.0
- avoid unnecessary DNS lookup when using numeric addresses with
init_client() - disable collecting metadata when sensor is in STANDBY mode
- breaking change:
set_config()will now produce more informative errors by throwingstd::invalid_argumentwith an error message when config parameters fail validation - use
SO_REUSEPORTfor UDP sockets on non-windows platforms - the set of fields available on
LidarScanis now configurable. See the newLidarScanconstructors for details - added
RANGE2,SIGNAL2andREFLECTIVITY2channel fields to support handling data from the second return ScanBatcherwill now parse and populate only the channel fields configured on theLidarScanpassed tooperator()()- add support for new configuration parameters:
udp_profile_lidar,udp_profile_imuandcolumns_per_packet - add udp ports, the new initialization id field, and udp profiles to the metadata stored in
the
sensor_infostruct sensor_info::nameis now deprecated and will stop being populated in the future- add methods to query and iterate over available
LidarScanfields and field types - breaking change: removed
LidarScan::blockandLidarScan::datamembers. These can't be supported for different packet profiles - the
LidarScan::Fielddefniition has been moved tosensor::ChanFieldand enumerators have been renamed to match the sensor user manual. The old names are still available, but deprecated - deprecate accessing encoder values and frame ids from measurement blocks using
packet_formatas these will not be reported by the sensor in some future configurations - add
packet_frame_idmember function topacket_format - add
col_fieldmember function topacket_formatfor parsing channel field values for an entire measurement block - add new accessors for measurement headers to
LidarScan, deprecating the existingheadermember function - represent empty sensor config with an empty object instead of null in json representation of the
sensor_configdatatype - update cmake package version to 0.2.1
- add a conservative socket read timeout so
init_client()will fail with an error message when another client fails to close a TCP connection (addresses #258) - when passed an empty string for the
udp_dest_hostparameter,init_client()will now configure the sensor usingset_udp_dest_auto. Previously, this would turn off UDP output on the sensor, so any attempt to read data would time out (PR #255) - fall back to binding ipv4 UDP sockets when ipv6 is not available (addresses #261)
- report additional information in the
packet_infostruct and remove separatestream_infoAPI - switch the default pcap encapsulation to ethernet for Ouster Studio compatibility (addresses #265)
- update ROS package version to 0.3.0
- allow setting the packet profile in ouster.launch with the
udp_profile_lidarparameter - publish additional cloud and image topics for the second return when running in dual returns mode
- fix
os_nodecrash on shutdown due to Eigen alignment flag not being propogated by catkin - update ROS package version to 0.2.1
- the
udp_destparameter to ouster.launch is now optional when connecting to a sensor
- the second CLI argument of simple_viz specifying the UDP data destination is now optional
- fixed bug in AutoExposure causing more points to be mapped to near-zero values
- add functionality to display text over cuboids
- update ouster-sdk version to 0.3.0
- improve heuristics for identifying sensor data in pcaps, including new packet formats
- release builds for wheels on Windows now use the VS 2017 toolchain and runtime (previously 2019)
- fix potential use-after-free in
LidarScan.fields - update ouster-sdk version to 0.3.0b1
- return an error when attempting to initialize
client.Sensorin STANDBY mode - check for errors while reading from a
Sensorpacket source and waiting for a timeout. This should make stopping a process withSIGINTmore reliable - add PoC bindings for the
ouster_vizlibrary with a simple example driver. See theouster.sdk.examples.vizmodule - add bindings for new configuration and metadata supported by the client library
- breaking change: the
ChanFieldenum is now implemented as a native binding for easier interop with C++. Unlike Python enums, the bound class itself is no longer sized or iterable. UseChanField.valuesto iterate over allChanFieldvalues orLidarScan.fieldsfor fields available on a particular scan instance - breaking change: arrays returned by
LidarPacket.fieldandLidarPacket.headerare now immutable. Modifying the underlying packet buffer through these views was never fully supported - deprecate
ColHeader,LidarPacket.header, andLidarScan.headerin favor of new properties:timestamp,measurement_id,status, andframe_id - replace
LidarScanwith native bindings implementing the same API xyzlutcan now accept a range image as an ndarray, not just aLidarScan- update ouster-sdk version to 0.2.2
- fix open3d example crash on exit when replaying pcaps on macos (addresses #267)
- change open3d normalization to use bound AutoExposure
- update cmake package version to 0.2.0
- add support for new signal multiplier config parameter
- add early version of a C++ API covering the full sensor configuration interface
- increase default initialization timeout to 60 seconds to account for the worst case: waking up from STANDBY mode
record_packet()now requires passing in a capture timestamp instead of using current time- work around libtins issue where capture timestamps for pcaps recorded on Windows are always zero
- add preliminary C++ API for working with pcap files containing a single sensor packet capture
- update ROS package version to 0.2.0
- add Dockerfile to easily set up a build environment or run nodes
img_nodenow outputs 16-bit images, which should be more useful. Range image output is now in units of 4mm instead of arbitrary scaling (addresses #249)img_nodenow outputs reflectivity images as well on thereflec_imagetopic- change
img_nodetopics to match terminology in sensor documentation:ambient_imageis nownearir_imageandintensity_imageis nowsignal_image - update rviz config to use flat squares by default to work around a bug on intel systems
- remove viz_node and all graphics stack dependencies from the package. The
vizflag on the launch file now runs rviz (addresses #236) - clean up package.xml and ensure that dependencies are installable with rosdep (PR #219)
- the
metadataargument to ouster_ros launch file is now required. No longer defaults to a name based on the hostname of the sensor
- update reflectivity visualization for changes in the upcoming 2.1 firmware. Add new colormap and handle 8-bit reflectivity values
- move most of the visualizer code out of public headers and hide some implementation details
- fix visualizer bug causing a small viewport when resizing the window on macos with a retina display
- update ouster-sdk version to 0.2.1
- fix bug in determining if a scan is complete with single-column azimuth windows
- closed PacketSource iterators will now raise an exception on read
- add examples for visualization using open3d (see:
ouster.sdk.examples.open3d) - add support for the new signal multiplier config parameter
- preserve capture timestamps on packets read from pcaps
- first release: version 0.2.0 of ouster-sdk. See the README under the
pythondirectory for details and links to documentation
- switched to date-based version scheme. No longer tracking firmware versions
- added a top-level
CMakeLists.txt. Client and visualizer should no longer be built separately. See the README for updated build instructions - cmake cleanup, including using custom "find modules" to provide better compatibility between different versions of cmake
- respect standard cmake
BUILD_SHARED_LIBSandCMAKE_POSITION_INDEPENDENT_CODEflags - make
ouster_roseasier to use as a dependency by bundling the client and viz libraries together into a single library that can be used through catkin - updated client example code. Now uses more of the client APIs to capture data and write to a
CSV. See
ouster_client/src/example.cpp - replace callback-based
batch_to_scanfunction withScanBatcher. Seelidar_scan.hfor API docs and the new client example code - update
LidarScanAPI. Now includes accessors for measurement blocks as well as channel data fields. Seelidar_scan.hfor API docs - add client version field to metadata json, logs, and help text
- client API renaming to better reflect the Sensor Software Manual
- support for ROS noetic in
ouster_ros. Note: this may break building on very old platforms without a C++14-capable compiler - an extra extrinsics field in
sensor_infofor conveniently passing around an extra user-supplied transform - a utility function to convert
lidar_scandata between the "staggered" representation where each column has the same timestamp and "de-staggered" representation where each column has the same azimuth angle - mask support in the visualizer library in
ouster_viz
ouster_rosnow requires C++14 to support building against noetic libraries- replaced
batch_to_iterwithbatch_to_scan, a simplified function that writes directly to alidar_scaninstead of arbitrary iterator
- ipv6 support using dual-stack sockets on all supported platforms. This was broken since the beta.10 release
- projection to Cartesian coordinates now takes into account the vertical offset the sensor and lidar frames
- the reference frame of point cloud topics in
ouster_rosis now correctly reported as the "sensor frame" defined in the user guide
no changes
no changes
- preliminary support for Windows and macOS for
ouster_vizandouster_client
- replaced VTK visualizer library with one based on GLFW
- renamed all instances of "OS1" including namespaces, headers, node and topic names, to reflect support for other product lines
- updated all xyz point cloud calculations to take into account new
lidar_origin_to_beam_originparameter reported by sensors - client and
os_nodeandsimple_viznow avoid setting the lidar and timestamp modes when connecting to a client unless values are explicitly specicified
- increase the UDP receive buffer size in the client to reduce chances of dropping packets on platforms with low defaults
os_cloud_nodeoutput now uses the updated point cloud calculation, taking into account the lidar origin offset- minor regression with destaggering in img_node output in previous beta
- support for gen2 hardware in client, visualizer, and ROS sample code
- support for updated "packed" lidar UDP data format for 16 and 32-beam devices with firmware 1.14
- range markers in
simple_vizandviz_node. Toggle display usinggkey. Distances can be configured fromos1.launch. - post-processing to improve ambient image uniformity in visualizer
- use random ports for lidar and imu data by default when unspecified
- post-processing to improve ambient image uniformity in visualizer
- make timestamp mode configurable via the client (PR #97)
- turn on position-independent code by default to make using code in libraries easier (PR #65)
- use random ports for lidar and imu data by default when unspecified
- prevent legacy tf prefix from making invalid frame names (PR #56)
- use
iterator_traitsto makebatch_to_iterwork with more types (PR #70) - use correct name for json dependency in
package.xml(PR #116) - handle udp socket creation error gracefully in client
- install directives for
ouster_rosbuild (addresses #50)
- flip the sign on IMU acceleration output to follow usual conventions
- increase the update rate in the visualizer to ~60hz
- visualizer issue where the point cloud would occasionally occasionally not be displayed using newer versions of Eigen
- allow renaming tf ids using the
tf_prefixparameter
- use frame id to batch packets so client code deals with reordered lidar packets without splitting frames
- use a uint32_t for PointOS1 timestamps to avoid unnecessary loss of precision
- bug causing ring and reflectivity to be corrupted in os1_cloud_node output
- misplaced sine in azimuth angle calculation (addresses #42)
- populate timestamps on image node output (addresses #39)
os1_nodenow queries and uses calibrated beam angles from the sensoros1_nodenow queries and uses imu / lidar frames from the sensoros1_nodereads and writes metadata to${ROS_HOME}to support replaying data with calibration- ROS example code now publishes tf2 transforms for imu / lidar frames (addresses #12)
- added
metadataparameter toos1.launchto override location of metadata - added
vizparameter toos1.launchto run the example visualizer with ROS - added
imageparameter toos1.launchto publish image topics to rviz (addresses #21) - added range field to
PointOS1
- split point-cloud publishing out of
os1_nodeintoos1_cloud_node - example visualizer controls:
- press
mto cycle through color modes instead ofi,z,Z,r rnow resets the camera position- range/signal images automatically resized to fit window height
- press
- updated OS-1 client to use newer TCP configuration commands
- updated OS-1 client to set the requested lidar mode, reinitialize on connection
- changed point cloud batching to be based on angle rather than scan duration
ouster_clientnow depends on thejsoncpplibrary- switched order of fields in
PointOS1to be compatible withPointXYZI(addresses #16) - moved example visualizer VTK rendering into the main thread (merged #23)
- the timestamp field of PointOS1 now represents time since the start of the scan (the timestamp of the PointCloud2 message) in nanoseconds
- removed keyboard camera controls in example visualizer
- removed panning and rotating of the image panel in example visualizer
- no longer dropping UDP packets in 2048 mode on tested hardware
- example visualizer:
- point cloud display focus no longer snaps back on rotation
- fixed clipping issues with parallel projection
- fixed point coloring issues in z-color mode
- improved visualizer performance