- Fixed Gaussian noise nodes to always perform in rays coordinates
- Fixed distance Gaussian noise to apply error based on distance traveled by the ray (not distance to rays coordinates origin)
- Fixed graph validation when rays definition is modified
- Fixed a bug introduced in v0.16.0 causing RGL to crash in Compact and Downsample Node when some field was removed from the graph.
- Added API calls to set relative node's priority, which determines their execution order within a graph (but not between graphs).
rgl_graph_node_set_priority
rgl_graph_node_get_priority
rgl_graph_run(...)
is now fully asynchronous, i.e. it will initiate computations without waiting for them to finish- RGL API calls attempting to obtain results from a given node will block until the node has completed execution
- RGL API calls modifying scene will block until all graphs have completed execution
- Running a graph will block until the previous run has been completed
- Changed internal implementation of Entity ID feature
- The Entity ID is now held in a 28-bit integer (OptiX limit) instead of a 32-bit integer
- Renamed XYZ field name to be more precise and compatible with future features
RGL_FIELD_XYZ_F32
->RGL_FIELD_XYZ_VEC3_F32
- Modifying fields between graph's runs (consisted of Compact or Downsample nodes) may cause a segmentation fault. Fixed in v0.16.1.
- Gaussian noise is not performed in rays coordinates. Fixed in v0.16.2.
- Modifying rays definition between graph's runs may allow computations on invalid pipeline. Fixed in v0.16.2.
- Added feature to simulate velocity distortion
- Added API call to specify the delay between firing each ray:
rgl_node_rays_set_time_offsets
- Added API call to perform raytracing with velocity distortion:
rgl_node_raytrace_with_distortion
- Note: it is a simplified version of that feature
- The distortion takes into account only sensor velocity
- The velocity of the objects being scanned by the sensor is not considered
- Added API call to specify the delay between firing each ray:
- Improved ray range configuration
- Added API call to define min and max range for rays:
rgl_node_rays_set_range
- The range for each ray can be specified individually
- Modified API call:
rgl_node_raytrace
- No longer takes range as a parameter
- Added API call to define min and max range for rays:
- Improved tape tools
- Multi-lidar tapes are now supported by
tapeVisualizer
- Multi-lidar tapes are now supported by
- Fixed
-march=native
imposed compilation option- Library builds are compatible with all 64-bit CPUs
vcpkg
tag has been updatedPCL
version has been upgraded (1.13.0 -> 1.13.1)
- Fixed missing dependencies for ROS2 standalone build
- Fixed tape for API call
rgl_entity_set_id
- Fixed
rgl_node_points_visualize
- Fixed blocking spin loop for up to 1s on some machines
- Fixed segmentation fault on window close
- Fixed handling multiple windows at the same time
- Fixed linking the tests on Windows
- Destroying
rgl_node_points_visualize
may deadlock on some machines if multiple windows are spawn - Destroying
rgl_node_points_visualize
may not close window immediately - main thread exit needed
- Fixed building
PCL
on Windowsvcpkg
tag has been updatedPCL
version has been upgraded (1.12.0 -> 1.13.0)
- Fixed
rclcpp
(ROS2
package) initializationRGL
checks whetherrclcpp
is already initialized- Resolved
spdlog
conflict betweenRGL
andrclcpp
by downgrading its version on theRGL
site (1.10.0 -> 1.9.2)
- Added feature to query in runtime if specific extensions were compiled in the binary
- Added API call:
rgl_get_extension_info
- Created a tool that prints all the extensions in the given RGL binary:
inspectLibRGL
- Added API call:
- Added instance/semantic segmentation feature
- Added API call to set the ID of the entity:
rgl_entity_set_id
- Added a new field that can be returned:
RGL_FIELD_ENTITY_ID_I32
- Added API call to set the ID of the entity:
- Added material information reading and converting to intensity based on intensity texture assigned to the entity:
- Added API calls:
rgl_mesh_set_texture_coords
rgl_entity_set_intensity_texture
rgl_texture_create
rgl_texture_destroy
- Added API calls:
- Added publishing raw lidar packets via UDP
- In the closed-source version only
- Added unity tests to field
RGL_FIELD_DISTANCE_F32
- Changed value of non-hits points from
CUDART_INF_F
toFLT_MAX
- Updated docker README information
rclcpp
(ROS2
package) is always initialized byRGL
. It could cause a double initialization if the client's code also did it beforeRGL
.- Fixed in v0.14.1
- Improved performance of temporal merge node.
- The node doubles the array capacity if it's running out (instead of reallocating every iteration).
- Point cloud formatting for
rgl_graph_write_pcd_file
is performed on the CPU now.- We prefer to avoid transferring huge point cloud to GPU (risk of cuda out of memory error).
rgl_graph_write_pcd_file
causes SEH exception on Windows when trying to save point cloud with ~375 000 000 or more points.- The issue has been reported to PCL (link).
rclcpp
(ROS2
package) is always initialized byRGL
. It could cause a double initialization if the client's code also did it beforeRGL
.- Fixed in v0.14.1
- Reimplemented Gaussian Noise from RGL v10
- Added API calls:
rgl_node_gaussian_noise_angular_ray
rgl_node_gaussian_noise_angular_hitpoint
rgl_node_gaussian_noise_distance
- Added API calls:
- Added nodes for spatial and temporal point clouds merge
- Added API calls:
rgl_node_points_spatial_merge
rgl_node_points_temporal_merge
- Added API calls:
- Added node providing a user-defined point cloud to the RGL pipeline (for testing purposes)
- Added API call:
rgl_node_points_from_array
- Added API call:
- Added parameterized tests for:
rgl_node_points_from_array
rgl_node_points_transform
- Updated API surface tests
- Added support for multi-raytrace graphs
- Separated PCL nodes and created PCL extension
- Converted node
WritePCDFilePointsNode
into single API call- Removed API call
rgl_node_points_write_pcd_file
- Added API call
rgl_graph_write_pcd_file
- Removed API call
- Fixed
--build-dir
flag insetup.py
script
- Removed
rgl_graph_node_set_active
API call
rclcpp
(ROS2
package) is always initialized byRGL
. It could cause a double initialization if the client's code also did it beforeRGL
.- Fixed in v0.14.1
- Distance Gaussian noise:
- Noise is added in wrong coordinate system.
- Error is calculated based on distance to rays coordinates origin (not distance traveled by the ray)
- All fixed in v0.16.2
- ROS2 extension providing a node to publish point cloud into ROS2 topic
- Added API calls (
rgl/api/extensions/ros2.h
):rgl_node_points_ros2_publish
rgl_node_points_ros2_publish_with_qos
- Necessary scripting to build ROS2 integration in the standalone mode (not requiring ROS2 installation)
- Added API calls (
- API call for setting time on the scene
- TapeVisualizer tool (PoC)
- Currently, it does not handle multiple graphs in the tape, to be improved
- Rewritten build script from bash to python to enable easy building on Windows
- Minor fixes and refactor in the Tape code
- Use safer .at() instead of operator[]
- Using alias type APIObjectID instead of size_t
rclcpp
(ROS2
package) is always initialized byRGL
. It could cause a double initialization if the client's code also did it beforeRGL
.- Fixed in v0.14.1
- API call for tape recording activation status
- Fixed dependencies for tapePlayer tool
- Handle invalid logger configuration properly
- Handle empty path passed to tape
- RGL Auto Tape - feature to start Tape on the first API call writing to a path given in compile-time.
- Improved control flow around API initialization and error reporting
- Release build on Linux no longer use debug builds of dependencies (e.g., libPCL)
- Fixed a hidden bug in CacheManager - unsafe removing while iterating
- CUDA Runtime is now linked statically.
The initial release.