Skip to content

Releases: stelzo/ros_pointcloud2

v0.5.0

23 Jun 18:17
00acc2a
Compare
Choose a tag to compare

Most of the library is rewritten to be simpler and more expandable while adding mostly performance focused features to motivate the breaking changes.

Why?

The previous concept of the Convert struct for both directions of conversion leads to ambiguity, where the behavior is unexpected for the user.

What changed?

Nearly every public function is changed to be easier to work with and faster at runtime and adaptable for different scenarios.

It is easier to update to the new version by looking at it as a new crate and starting with the documentation.

Breaking

  • Switched from FallibleIterator to Iterator, since all possible errors are checked before returning the type.
  • Renamed pcl_utils module to points to make the module more a general toolkit and less a PCL compatibility layer.
  • Renamed ros_types module to ros since types are inferred.
  • Removed Convert struct. The PointCloud2Msg now directly offers try_from_iter and try_into_iter functions.
  • Dimensions and PointMeta in PointConvertible are merged to types, that are mostly deducted to minimize the needed code (see the docs for a custom point example).
  • Conversions can not fail per point in PointConvertible, so TryFrom -> From.
  • RGB is now stored as a union to allow direct copy with _vec functions without packing it manually per point. There are setters and getters for safety and usability.
  • ros_types::TimeMsg (now ros::TimeMsg) uses nanosec instead of nsec naming to conform with ROS2. This also removes the type alias for rosrust. Instead, there is a impl From<rosrust::Time> for TimeMsg now.

Added features

  • [from|into]_vec for memory heavy applications.
  • [from|into]_par_iter enabled by rayon for processing heavy applications.
  • derive macros for minimizing code for custom point conversions.
  • xyz() getter enabled by nalgebra for all predefined points.
  • prelude::* re-export module for quickly importing common types in point cloud processing projects.
  • Lightweight: no_std compatibility for iter conversions and dependency-free builds when only needing iter conversions.
  • Overall speed up thanks to more vectorizable iterator conversions and the new vec and par_iter functions. See the comparison with PCL for more info.
  • More type deduction in public facing functions, leading to less code for the user of the library.
  • More documentation.

Release Candidates

The following changes were applied in the release candidate phase.

  • [Breaking] PointConvertible now includes the information for TypeLayout and Fields, which reduces boilerplate code for custom points. The respective derive macro is updated to work with the updated trait.
  • _vec functions now work without the derive feature and thus are always available.
  • The derive feature now is disabled by default but it is still strongly recommended for custom points to avoid layout errors. This also makes procmacro dependencies optional for the functionality, since every conversion can be called without them.
  • The alignment of all predefined points is increased for SSE optimization and optimized copies between C++ PCL and Rust.
  • Bump r2r to 0.9.
  • Fixed building in no_std environments.
  • Removed expect calls.
  • [Breaking] PointConvertible trait is now unsafe since the offset is used for raw memory access, where safety can not be guaranteed by the compiler.
  • Fixes clippy on nightly.
  • Fixes a bug when attempting to write larger types than available in the message. This now results in a ExhaustedSource error.
  • Adds repr(C) to docs where custom conversions are explained to encourage best practices for raw type descriptions.

Full Changelog: v0.4.0...v0.5.0

v0.5.0-rc.3

21 May 11:37
Compare
Choose a tag to compare
v0.5.0-rc.3 Pre-release
Pre-release

What's Changed

  • Bump r2r to 0.9.
  • Fixed building in no_std environments.
  • Removed expect calls.

Full Changelog: v0.5.0-rc.2...v0.5.0-rc.3

v0.5.0-rc.2

19 May 23:42
927fc9a
Compare
Choose a tag to compare
v0.5.0-rc.2 Pre-release
Pre-release
  • PointConvertible now includes the information for TypeLayout and Fields, which reduces boilerplate code for custom points. The respective derive macro is updated to work with the updated trait.
  • _vec functions now work without the derive feature and thus are always available.
  • The derive feature now is disabled by default but it is still strongly recommended for custom points to avoid layout errors. This also makes procmacro dependencies optional for the functionality, since every conversion can be called without them.
  • The alignment of all predefined points is increased for SSE optimization and optimized copies between C++ PCL and Rust.

Full Changelog: v0.5.0-rc.1...v0.5.0-rc.2

v0.5.0-rc.1

19 May 23:40
Compare
Choose a tag to compare
v0.5.0-rc.1 Pre-release
Pre-release

What's Changed

Full Changelog: v0.4.0...v0.5.0-rc.1

v0.4.0

25 Mar 14:32
Compare
Choose a tag to compare

Support for rclrs

Full Changelog: v0.3.2...v0.4.0

v0.3.2

21 Mar 10:47
152fce7
Compare
Choose a tag to compare
  • Adds tests for humble and iron with r2r
  • Fixes linker problems when using r2r integration

v0.3.1

22 Aug 06:45
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.3.0...v0.3.1

v0.3.0

25 Jul 20:06
Compare
Choose a tag to compare

What's Changed

  • Update fallible-iterator requirement from 0.2.0 to 0.3.0 by @dependabot in #7
  • Feature/support_r2r by @HarukiUchito in #8
  • Added clippy linting

New Contributors

Full Changelog: v0.2.2...v0.3.0

v0.2.2

22 Jun 07:54
Compare
Choose a tag to compare

What's Changed

  • use rosrust::Time as TimeMsg if rosrust_msg is active by @rob9315 in #6

New Contributors

Full Changelog: v0.2.1...v0.2.2

v0.2.1

28 Apr 06:40
9ca323a
Compare
Choose a tag to compare
Fix RGB not rendering in rviz (#2)

fix rviz rgb rendering #1