Migration from 20220927/0.5.1 to 20230114/0.7.1
The 20230114 release, which corresponds to Python SDK 0.7.1, brings a few breaking changes introduced to support the newest FW of the sensor, FW 3.0. The changes and how to mitigate them are summarized here.
Signal Multiplier
FW 3.0 allows setting the signal multiplier to non-int values 0.25 and 0.5. As such, we have changed
the type of the sensor_config
struct member signal_multiplier
to double.
Old saved config jsons will continue to load properly.
XYZLut and sensor_info
The sensor_info
struct now contains the beam_to_lidar_transform
specifying the relationship
between the beam coordinate frame and lidar coordinate frame. The double
lidar_origin_to_beam_origin_mm
which corresponds to the (0, 3) element of the
beam_to_lidar_transform
has not been removed.
The make_xyz_lut
function now takes a mat4d
transformation specifying the relation between
the beam and lidar coordinate frames, as opposed to the previous double which assumed an Identity
rotation.
Users using pre-FW3.0 sensors with the latest SDK make_xyz_lut
overload which accepts a
sensor_info
need not change anything, as the sensor_info
struct automatically derives and
self-populates with the appropriate beam_to_lidar_transform
.
Default Parameters in init_client
The shortform C++ init_client
and Python client.Sensor()
no longer have default parameters.
Since they do not configure the sensor, it didn’t make sense to default to any value for any
parameters. Users must provide the ports and hostname explicitly now.
Timeout Improvements
The Python Scans interface timeout parameter has been changed from None to 1 second by default to avoid confusing hanging behavior when timing out is appropriate. The default timeout has also been changed to 2 seconds across the board.
Notes for the future
For customers who know they will continue to upgrade their version of the SDK, we also wish to highlight the upcoming breaking changes:
First, the next release will default writing the non-legacy metadata format as opposed to the
current format, also known as the legacy metadata format. 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.