Releases: stelzo/ros_pointcloud2
v0.5.1
v0.5.0
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 topoints
to make the module more a general toolkit and less a PCL compatibility layer. - Renamed
ros_types
module toros
since types are inferred. - Removed
Convert
struct. ThePointCloud2Msg
now directly offerstry_from_iter
andtry_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 ofnsec
naming to conform with ROS2. This also removes the type alias forrosrust
. Instead, there is aimpl 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 foriter
conversions and dependency-free builds when only needingiter
conversions. - Overall speed up thanks to more vectorizable iterator conversions and the new
vec
andpar_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 forTypeLayout
andFields
, which reduces boilerplate code for custom points. The respective derive macro is updated to work with the updated trait. _vec
functions now work without thederive
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 nowunsafe
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
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
PointConvertible
now includes the information forTypeLayout
andFields
, which reduces boilerplate code for custom points. The respective derive macro is updated to work with the updated trait._vec
functions now work without thederive
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
What's Changed
- Move to Iterator only by @stelzo in #13
- API changes for v1 by @stelzo in #14
- Update criterion requirement from 0.4 to 0.5 by @dependabot in #15
- Memopt by @stelzo in #17
- no_std compatible by @stelzo in #18
- add cfg docs by @stelzo in #19
- Inline crate and change to dual license by @stelzo in #20
Full Changelog: v0.4.0...v0.5.0-rc.1
v0.4.0
v0.3.2
v0.3.1
v0.3.0
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
- @HarukiUchito made their first contribution in #8
Full Changelog: v0.2.2...v0.3.0