Skip to content

Releases: RobotecAI/RobotecGPULidar

v0.19.0

27 Sep 15:06
ac67b4f
Compare
Choose a tag to compare

[0.19.0] 27 September 2024

Added

  • Added skeleton animation (mesh skinning) performed on GPU
    • Added API call to assign bone weights to the mesh
      • rgl_mesh_set_bone_weights
    • Added API call to assign restposes to the mesh
      • rgl_mesh_set_restposes
    • Added API call to set the current pose of the given Entity in world coordinates
      • rgl_entity_set_pose_world
  • Added multi-return outputs
    • Multi-return point clouds can be post-processed and outputted by RGL
    • Added more return types supported (second, strongest, second strongest)
    • Added API call to configure return mode
      • rgl_node_raytrace_configure_return_mode
  • Added support for ROS 2 Jazzy

Changed

  • Changed API calls for handling animations resulted from external animation system
    • Removed API call to update vertices of the mesh
      • rgl_mesh_update_vertices
    • Added API call to update vertices of the entity
      • rgl_entity_apply_external_animation
    • In current implementation, meshes that are animated can be shared between entities
      • Previously, such meshes must be duplicated because vertices were updated in the mesh object
      • Now, the entity holds its copy of animated vertices
  • Renamed API call for setting transform of the entity
    • rgl_entity_set_pose -> rgl_entity_set_transform
    • Pose is considered as set of skeleton bones transforms

Fixed

  • Fixed error message from yield node when trying to get field data that was not requested

Removed

  • Removed API call to switch between return modes:
    • rgl_node_multi_return_switch
    • Replaced by rgl_node_raytrace_configure_return_mode

Released binaries

  • RGL-core-linux-x64 - core build (without any extension) for Linux x64
  • RGL-full-linux-x64-humble - core build + PCL + ROS2 extensions for Linux x64 + ROS 2 Humble
  • RGL-full-linux-x64-jazzy - core build + PCL + ROS2 extensions for Linux x64 + ROS 2 Jazzy
  • RGL-full-windows-x64-humble - core build + PCL + ROS2 extensions for Windows x64 + ROS 2 Humble
  • RGL-full-windows-x64-jazzy - core build + PCL + ROS2 extensions for Windows x64 + ROS 2 Jazzy

v0.18.0

24 Jul 13:19
b287aa5
Compare
Choose a tag to compare

[0.18.0] 24 July 2024

Added

  • Added radar object tracking feature
    • Added API call to produce point cloud with radar objects
      • rgl_node_points_radar_track_objects
  • Added mechanism to simulate fault injection
    • Added API call to mask groups of rays
      • rgl_node_raytrace_configure_mask
  • Added multi-return simulation
    • Currently, this feature is limited to outputting a single return point cloud, but the user can select which return mode is simulated (first or last)
    • Added API call to configure beam divergence
      • rgl_node_raytrace_configure_beam_divergence
    • Added API call to switch between return modes:
      • rgl_node_multi_return_switch
  • Added new fields: RGL_FIELD_INTENSITY_U8 and RGL_FIELD_TIME_STAMP_U32
    • These fields are duplicates of existing fields but are stored in other data types
  • Added default intensity configuration
    • Added API call to configure default intensity
      • rgl_node_raytrace_configure_default_intensity
    • Default intensity is considered when hitting entities with no intensity texture set

Changed

  • Renamed ROS2 field name for RGL_FIELD_RING_ID
    • ring -> channel
  • Changed the content of time stamp fields (RGL_FIELD_TIME_STAMP_F64 and RGL_FIELD_TIME_STAMP_U32)
    • Previously, it was time on the scene when the raytrace is triggered
    • Now, it holds the time have passed since the time of the raytrace trigger when given point was measured
      • If velocity distortion is disabled, the time stamp for all points will be zero
  • Intensity value of the point is based on intensity texture of the entity and the incident angle
    • The influence of the incident angle was added

Removed

  • Removed deprecated API call
    • rgl_node_points_compact
    • Please use rgl_node_points_compact_by_field instead

Released binaries

  • RGL-core-linux-x64 - core build (without any extension) for Linux x64
  • RGL-full-linux-x64 - core build + PCL + ROS2 extensions for Linux x64
  • RGL-full-windows-x64 - core build + PCL + ROS2 extensions for Windows x64

v0.17.0

11 Jun 15:28
f2da14b
Compare
Choose a tag to compare

[0.17.0] 11 June 2024

Added

  • Added radar sensor simulation
    • Added API call to process point cloud to create radar-like output
      • rgl_node_points_radar_postprocess
    • Added API call to remove ground using RANSAC method to fit the plane model to the point cloud
      • rgl_node_points_remove_ground
    • Added API call to filter ground based on the incident angle of the ray hitting the mesh triangle
      • rgl_node_points_filter_ground
    • Added API call to publish RadarScan message into ROS2 topic
      • rgl_node_publish_ros2_radarscan
    • Added new fields (point attributes) calculation:
      • Velocity of the hit point on the entity. Depends on entity's linear and angular velocity, and mesh deformations (inferred from calls rgl_entity_set_pose, rgl_scene_set_time and rgl_mesh_update_vertices).
        • RGL_FIELD_ABSOLUTE_VELOCITY_VEC3_F32
        • RGL_FIELD_RELATIVE_VELOCITY_VEC3_F32
        • RGL_FIELD_RADIAL_SPEED_F32
      • Normal vector of the mesh triangle where the hit-point is located
        • RGL_FIELD_NORMAL_VEC3_F32
      • Incident angle of the ray hitting the mesh triangle
        • RGL_FIELD_INCIDENT_ANGLE_F32
      • Azimuth and elevation angle of the hit point
        • RGL_FIELD_AZIMUTH_F32
        • RGL_FIELD_ELEVATION_F32
  • Added API call to compact point cloud by given field (RGL_FIELD_IS_HIT_I32 or RGL_FIELD_IS_GROUND_I32)
    • rgl_node_points_compact_by_field
    • At the same time, rgl_node_points_compact became deprecated
  • Added set of calls to check if API objects are still valid
    • rgl_mesh_is_alive
    • rgl_entity_is_alive
    • rgl_texture_is_alive
    • rgl_node_is_alive
  • Added raytrace node configurations
    • Added API call to configure values for non-hit points
      • rgl_node_raytrace_configure_non_hits
    • Added API call to configure sensor velocity (necessary for velocity distortion or calculating fields RGL_FIELD_RELATIVE_VELOCITY_VEC3_F32 and RGL_FIELD_RADIAL_SPEED_F32)
      • rgl_node_raytrace_configure_velocity
    • Added API call to configure (turn on/off) velocity distortion
      • rgl_node_raytrace_configure_distortion
  • Added support for LiDAR reflective value (similar to intensity but set as a single floating-point value for the entire entity)
    • Added API call to set laser retro value to the entity
      • rgl_entity_set_laser_retro
    • Note: could be replaced with 1x1 float-type texture in the future
  • Added CI to the project using GitHub actions
  • Added static build option
    • Added variable to the CMakeLists (default OFF):
      • RGL_BUILD_STATIC

Changed

  • Optimized tape files format to be lighter and be loaded faster
    • Note: old tape files are not compatible
  • Improved docker-based build pipeline
    • Introduced multistage dockerfile for the build process
    • Decoupled dependency installation from compilation scripts (better caching)

Removed

  • Removed API call for modifying RaytraceNode to apply velocity distortion
    • rgl_node_raytrace_with_distortion
    • Replaced by rgl_node_raytrace_configure_distortion

Released binaries

  • RGL-core-linux-x64 - core build (without any extension) for Linux x64
  • RGL-full-linux-x64 - core build + PCL + ROS2 extensions for Linux x64
  • RGL-full-windows-x64 - core build + PCL + ROS2 extensions for Windows x64

v0.16.2

19 Nov 17:01
74d832f
Compare
Choose a tag to compare

[0.16.2] 19 November 2023

Fixed

  • 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

v0.16.1

13 Nov 14:49
7803c2f
Compare
Choose a tag to compare

[0.16.1] 13 November 2023

Fixed

  • 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

v0.16.0

10 Nov 11:45
ae14a87
Compare
Choose a tag to compare

[0.16.0] 10 November 2023

Added

  • 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

Changed

  • 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

Known Issues

  • 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.

v0.15.0

23 Sep 12:51
08b3689
Compare
Choose a tag to compare

[0.15.0] 23 September 2023

Added

  • 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
  • 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
  • Improved tape tools
    • Multi-lidar tapes are now supported by tapeVisualizer

Fixed

  • Fixed -march=native imposed compilation option
    • Library builds are compatible with all 64-bit CPUs
    • vcpkg tag has been updated
    • PCL 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

Known Issues

  • 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

Released binaries

  • Linux-x64 - RGL on Ubuntu22 with ROS2 Humble
  • Windows-x64 - RGL on Windows with ROS2 Humble
  • Linux-x64-jazzy - RGL on Ubuntu24 with ROS2 Jazzy

v0.14.1

05 Jul 14:22
5cea2e7
Compare
Choose a tag to compare

[0.14.1] 5 July 2023

Fixed

  • Fixed building PCL on Windows
    • vcpkg tag has been updated
    • PCL version has been upgraded (1.12.0 -> 1.13.0)
  • Fixed rclcpp (ROS2 package) initialization
    • RGL checks whether rclcpp is already initialized
    • Resolved spdlog conflict between RGL and rclcpp by downgrading its version on the RGL site (1.10.0 -> 1.9.2)

v0.14.0

22 Jun 15:39
Compare
Choose a tag to compare

[0.14.0] 22 June 2023

Added

  • 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 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 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 publishing raw lidar packets via UDP
    • In the closed-source version only
  • Added unity tests to field RGL_FIELD_DISTANCE_F32

Changed

  • Changed value of non-hits points from CUDART_INF_F to FLT_MAX
  • Updated docker README information

Known Issues

  • rclcpp (ROS2 package) is always initialized by RGL. It could cause a double initialization if the client's code also did it before RGL.

v0.13.1

19 Apr 10:26
9786a96
Compare
Choose a tag to compare

[0.13.1] 19 April 2023

Fixed

  • Improved performance of temporal merge node.
    • The node doubles the array capacity if it's running out (instead of reallocating every iteration).

Changed

  • 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).

Known Issues

  • 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 by RGL. It could cause a double initialization if the client's code also did it before RGL.